godef 插件安裝


今天對 GoSublime 插件自帶的跳轉不滿意,創建的對象的方法或屬性無法跳過去。搜索后無意中發現 招牌瘋子 寫的 Godef for Sublime 發布》。非常高興,按 https://github.com/buaazp/Godef  上搞了一遍。

 

先是 安裝 https://github.com/rogpeppe/godef  godef 工具!

 

go get -v github.com/rogpeppe/godef

 

依賴 "9fans.net/go/acme" ,但是下載的時候失敗,github 上有,就從 github 下過來放到 gopath src 目錄下。

 

然后編譯安裝 godef,  godef.exe 生成在 go/bin 目錄下。

 

cd $GOPATH/src/github.com/rogpeppe/godef
go clean -r -i
go install -v

 

 

接下來就是苦逼的過程,一直無法跳轉,我以為是快捷鍵沖突之類的問題,試了好多仍然無效。我又猜測是不是要升級到 sublime text 3 版本。好吧,升上來,安裝 Package Control 安裝 GoSublime 插件,安裝 godef 插件。還是一樣。

 

我打開 Godef 插件目錄,看了下他的 Godef.py 代碼。看到下面的 godef 路徑代碼,我想要是能看見插件的 print 打印就好了!是的,這時候得用程序員的思路解決問題,看調試日志!

 

        systype = platform.system()

        # print("[Godef]DEBUG: system type: %s" % systype)

        if systype == "Windows":

            godefCmd = "godef.exe"

        else:

            godefCmd = "godef"

        gopaths = gopath.split(os.pathsep)

        for go_path in gopaths:

            godefpath = os.path.join(go_path, "bin", godefCmd)

            if not os.path.isfile(godefpath):

                print("[Godef]WARN: godef not found at %s" % godefpath)

                continue

            else:

                found = True

                break

        if not found:

            print("[Godef]ERROR: godef not found!")

            print("=================[Godef] End =================")

            return

        print("[Godef]INFO: using godef: %s" % godefpath)

 

 

琢磨了一樣,在 Sublime ->  View 中點擊 show Console , 發現果然找不到 godef.exe 文件!原因大白於天下!作者使用 gopath + "bin" + godef.exe 作為 godef.exe 的文件路徑。 可是我環境變量中設置的 gopath 是這個路徑: C:\go\bin;D:\development\go\go-example  !多了一個 bin

 

 

Package Control: Skipping automatic upgrade, last run at 2015-12-19 17:56:26, next run at 2015-12-19 18:56:26 or after

recreating index

reloading Packages/User/Preferences.sublime-settings

reloading Packages/User/Preferences.sublime-settings

=================[Godef]Begin=================

[Godef]WARN: godef not found at C:\go\bin\bin\godef.exe

[Godef]WARN: godef not found at D:\development\go\go-example\bin\godef.exe

Traceback (most recent call last):

  File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 535, in run_

    return self.run()

  File "C:\Users\yinfeng\AppData\Roaming\Sublime Text 3\Packages\Godef\Godef.py", line 42, in run

    if not found:

UnboundLocalError: local variable 'found' referenced before assignment

 

 

有兩種解決方法,修改 godef 插件的 gopath 目錄為 C:\go 即修改 Package setting godef 的配置文件。

{

// Copy this file to Settings - User

// Set your real GOPATH in user's Godef.sublime-settings

// For example:

// "goroot": "/Users/zippo/Go",

// "gopath": "/Users/zippo/develop/GO"

// or if you use windows

//"goroot": "C:\\Go",

//"gopath": "C:\\gopath"

}

 

但上面這種方法怪怪的。放棄。調整 gopath 目錄,會好些。

 

  • 為此我創建了一個新的  C:\gopath 目錄。把 之前的 C:\go\bin  目錄下的 src pkg 移動到新的 gopath 目錄下。修改 GOPATH 環境變量為  C:\gopath;D:\development\go\go-example  。重新編譯安裝 godef.exe ,我發現 godef.exe 是在 GOROOT/bin C:\go\bin 生成。但 GoDef.py 的代碼是通過 GOPATH  來查找的,所以我把  godef.exe 移動到 GOPATH /bin 目錄下。

 

 

大功告成!看下跳轉的輸出日志,通過 godef.exe 輸出要跳轉的文件和行列信息,原來如此!

 

=================[Godef]Begin=================

[Godef]INFO: using godef: C:\gopath\bin\godef.exe

[Godef]INFO: selcet_begin: 1600 offset: 1660

[Godef]INFO: spawning: C:\gopath\bin\godef.exe -f D:\development\go\go-example\src\example\test\net\httpserver\photoweb\photoweb.go -o 1660

[Godef]INFO: godef output: b'C:\\Go\\src\\net\\http\\request.go:970:19\n'

[Godef]INFO: opening definition at C:\Go\src\net\http\request.go:970:19

=================[Godef] End =================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM