This commit is contained in:
parent
abd1a8e9c0
commit
e398438e60
|
@ -46,7 +46,7 @@ A simple <b>W</b>eb **IDE** for golang.
|
||||||
|
|
||||||
## Setup from sources
|
## Setup from sources
|
||||||
1. Downloads source
|
1. Downloads source
|
||||||
2. Gets dependencies with `go get -u`
|
2. Gets dependencies with `go get -u`, `go get -u github.com/88250/ide_stub` and `go get -u github.com/nsf/gocode`
|
||||||
3. Compiles wide with `go build`
|
3. Compiles wide with `go build`
|
||||||
4. Configures `conf/wide.json`
|
4. Configures `conf/wide.json`
|
||||||
5. Runs the executable `wide` or `wide.exe`
|
5. Runs the executable `wide` or `wide.exe`
|
||||||
|
|
|
@ -32,11 +32,16 @@
|
||||||
|
|
||||||
步骤:
|
步骤:
|
||||||
<ol>
|
<ol>
|
||||||
<li>通过 git clone 或下载 zip 包方式获取 Wide 源码(项目地址:<a href="https://github.com/b3log/wide">https://github.com/b3log/wide</a>)</li>
|
<li>通过 <code>git clone</code> 或下载 zip 包方式获取 Wide 源码(项目地址:<a href="https://github.com/b3log/wide">https://github.com/b3log/wide</a>)</li>
|
||||||
<li>获取 Wide 依赖:go get -u</li>
|
<li>获取依赖,在 Wide 源码目录下执行:
|
||||||
<li>编译 Wide:go build</li>
|
<ul>
|
||||||
|
<li><code>go get -u</code></li>
|
||||||
|
<li><code>go get -u github.com/88250/ide_stub</code></li>
|
||||||
|
<li><code>go get -u github.com/nsf/gocode</code></li>
|
||||||
|
</ul>
|
||||||
|
<li>编译:在 Wide 源码目录下执行 <code>go build</code></li>
|
||||||
<li>配置 {wide}/conf/<a href="conf.html">wide.json</a>(可选,默认配置应该可以工作)</li>
|
<li>配置 {wide}/conf/<a href="conf.html">wide.json</a>(可选,默认配置应该可以工作)</li>
|
||||||
<li>运行可执行文件 wide 或 wide.exe</li>
|
<li>运行可执行文件 wide 或 wide.exe</li>
|
||||||
</ol>
|
</ol>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -62,11 +62,13 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
// glog.Infof("offset: %d", offset)
|
// glog.Infof("offset: %d", offset)
|
||||||
|
|
||||||
|
gocode := os.Getenv("GOPATH") + string(os.PathSeparator) +
|
||||||
|
os.Getenv("OS") + string(os.PathSeparator) + os.Getenv("GOARCH") + string(os.PathSeparator) + "gocode"
|
||||||
argv := []string{"-f=json", "autocomplete", strconv.Itoa(offset)}
|
argv := []string{"-f=json", "autocomplete", strconv.Itoa(offset)}
|
||||||
|
|
||||||
var output bytes.Buffer
|
var output bytes.Buffer
|
||||||
|
|
||||||
cmd := exec.Command("gocode", argv...)
|
cmd := exec.Command(gocode, argv...)
|
||||||
cmd.Stdout = &output
|
cmd.Stdout = &output
|
||||||
|
|
||||||
stdin, _ := cmd.StdinPipe()
|
stdin, _ := cmd.StdinPipe()
|
||||||
|
@ -118,8 +120,10 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
//glog.Infof("gocode set lib-path %s", libPath)
|
//glog.Infof("gocode set lib-path %s", libPath)
|
||||||
|
|
||||||
// FIXME: 使用 gocode set lib-path 在多工作空间环境下肯定是有问题的,需要考虑其他实现方式
|
// FIXME: 使用 gocode set lib-path 在多工作空间环境下肯定是有问题的,需要考虑其他实现方式
|
||||||
|
gocode := os.Getenv("GOPATH") + string(os.PathSeparator) +
|
||||||
|
os.Getenv("OS") + string(os.PathSeparator) + os.Getenv("GOARCH") + string(os.PathSeparator) + "gocode"
|
||||||
argv := []string{"set", "lib-path", libPath}
|
argv := []string{"set", "lib-path", libPath}
|
||||||
cmd := exec.Command("gocode", argv...)
|
cmd := exec.Command(gocode, argv...)
|
||||||
cmd.Start()
|
cmd.Start()
|
||||||
|
|
||||||
//gocode 试验性质特性:自动构建
|
//gocode 试验性质特性:自动构建
|
||||||
|
@ -128,7 +132,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
//cmd.Start()
|
//cmd.Start()
|
||||||
|
|
||||||
argv = []string{"-f=json", "autocomplete", strconv.Itoa(offset)}
|
argv = []string{"-f=json", "autocomplete", strconv.Itoa(offset)}
|
||||||
cmd = exec.Command("gocode", argv...)
|
cmd = exec.Command(gocode, argv...)
|
||||||
|
|
||||||
stdin, _ := cmd.StdinPipe()
|
stdin, _ := cmd.StdinPipe()
|
||||||
stdin.Write([]byte(code))
|
stdin.Write([]byte(code))
|
||||||
|
@ -194,8 +198,10 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
// glog.Infof("offset [%d]", offset)
|
// glog.Infof("offset [%d]", offset)
|
||||||
|
|
||||||
// TODO: 目前是调用 liteide_stub 工具来查找声明,后续需要重新实现
|
// TODO: 目前是调用 liteide_stub 工具来查找声明,后续需要重新实现
|
||||||
|
ide_stub := os.Getenv("GOPATH") + string(os.PathSeparator) +
|
||||||
|
os.Getenv("OS") + string(os.PathSeparator) + os.Getenv("GOARCH") + string(os.PathSeparator) + "ide_stub"
|
||||||
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-def", "."}
|
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-def", "."}
|
||||||
cmd := exec.Command("liteide_stub", argv...)
|
cmd := exec.Command(ide_stub, argv...)
|
||||||
cmd.Dir = curDir
|
cmd.Dir = curDir
|
||||||
|
|
||||||
setCmdEnv(cmd, username)
|
setCmdEnv(cmd, username)
|
||||||
|
@ -274,10 +280,9 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
offset := getCursorOffset(code, line, ch)
|
offset := getCursorOffset(code, line, ch)
|
||||||
|
|
||||||
// TODO: 目前是调用 liteide_stub 工具来查找使用,后续需要重新实现
|
// TODO: 目前是调用 liteide_stub 工具来查找使用,后续需要重新实现
|
||||||
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-use", "."}
|
|
||||||
|
|
||||||
ide_stub := os.Getenv("GOPATH") + string(os.PathSeparator) +
|
ide_stub := os.Getenv("GOPATH") + string(os.PathSeparator) +
|
||||||
os.Getenv("OS") + string(os.PathSeparator) + os.Getenv("GOARCH") + string(os.PathSeparator) + "ide_stub"
|
os.Getenv("OS") + string(os.PathSeparator) + os.Getenv("GOARCH") + string(os.PathSeparator) + "ide_stub"
|
||||||
|
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-use", "."}
|
||||||
cmd := exec.Command(ide_stub, argv...)
|
cmd := exec.Command(ide_stub, argv...)
|
||||||
cmd.Dir = curDir
|
cmd.Dir = curDir
|
||||||
|
|
||||||
|
|
3
main.go
3
main.go
|
@ -16,9 +16,6 @@ import (
|
||||||
"github.com/b3log/wide/shell"
|
"github.com/b3log/wide/shell"
|
||||||
"github.com/b3log/wide/user"
|
"github.com/b3log/wide/user"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
_ "github.com/88250/ide_stub" // 运行时依赖,用于跳转到声明、查找使用等功能
|
|
||||||
_ "github.com/nsf/gocode" // 运行时依赖,用于代码自动完成
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Wide 中唯一一个 init 函数.
|
// Wide 中唯一一个 init 函数.
|
||||||
|
|
Loading…
Reference in New Issue