最近跟风在看 geth 代码,本着工欲善其事必先利其器的原则,认真的考察了各个go的开发工具,eclipse 和 intellij 的go插件对 gopath 的处理都有一些小问题,导入依赖时总是找不到依赖,莫名其妙的报很多红叉非常碍眼,不知道是不是因为geth用了 makefile 做构建的原因;种种原因吧最终将目标锁定 Atom 这个神器(solidity 的插件非常棒);各种优秀的插件把 Atom 装修的跟一个 IDE 一样,但当用到 godef 这个插件时遇到了一些小麻烦;
首先介绍一下 godef 这个插件,用它可以实现 go 语言的 go to definiation 功能,就像用 IDE 时按住 ctrl 用鼠标一点方法名就能跳转到方法一样,不论写代码还是看代码这个功能都太重要了。但是在使用时,发现只有第一次打开编辑器时可以使用(在方法上点 ctrl+i 跳转),再用就没反应了,还好 Atom 提供了控制台,调试时发现使用插件时会提示 "godef not find",在插件的代码中找到了这段代码,如下:
.....
godef: (file, offset, position) ->
@gopath = process.env.GOPATH
found = false
if @gopath and not @godefpath?
for p in @gopath.split(':')
@godefpath = path.join(p, 'bin', 'godef')
exists = fs.existsSync(@godefpath)
if exists
found = true
break
else
continue
if not found
console.log "godef not find."
return
args = [
@godefpath
'-f'
file
'-o'
offset
]
......
虽然根本都看不懂这到底是什么语法,但是逻辑上还是能看得懂的,问题就出现在 found 变量上,这个局部变量被定义为 false ,每次方法执行时,都会被定义成 false,
但是 if @gopath and not @godefpath? 就只执行一次(debug时验证的),
所以下面的 if not found 在第二次执行此方法后,就永远只能 console.log "godef not find." 并 return 了;
说了一大堆废话,其实就是把下面这三行删了就ok了
if not found
console.log "godef not find."
return
很久不来 iteye 写博客了,因为太忙,而且也没什么可写的,很多博文都被copy了无数次,遇到问题了就直接 google 出来了,但是这个小问题还真是没google到,可能是这个插件用的人太少了,但是它真的非常有用。
本来写到 ethfans 上了,但感觉这个问题更应该是一个 技术问题,并不是以太坊的问题,还是挪到这里来跟大家分享吧;
希望这个小小的发现能对使用 atom 来看 go 代码的同学提供一点点帮助。
分享到:
相关推荐
在windows下的Atom编辑器的安装方法,以及安装Atom插件的过程中遇到的安装错误的一些处理方法
压缩包中有安装插件的步骤.zip
Atom 颤抖酷炫插件,添加即可享有
Atom-uninstall_atom.zip,一个Perl脚本,用于删除Atom编辑器的所有已知构件。在OS X上测试Atom编辑器卸载脚本,atom是一个用web技术构建的开源文本编辑器。
Atom 称为一个“为 21 世纪创造的可配置的编辑器”,它拥有非常精致细腻的界面,并且可配置项丰富,加上它提供了与 SublimeText 上类似的 Package Control (包管理)功能,人们可以非常方便地安装和管理各种插件,并...
Atom-atom-double-tag.zip,一个atom编辑器包,用于更快的html标记编辑双标签,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-plugin.zip,用于Atom编辑器的Viblo插件Viblo Atom插件包,atom是一个用web技术构建的开源文本编辑器。
atom 编辑器 安装包,atom 编辑器 安装包atom 编辑器 安装包
atom编辑器,插件比较多.界面比较好看.写代码一路火花带闪电.
Atom 是github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言。它支持宏,自动完成分屏功能,集成了文件管理器。
Atom-ide-haskell.zip,用于Atom编辑器的Haskell IDE插件伊德哈斯克尔,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-finance.zip,在Atom.io编辑器(Yahoo Finance)中检查股票的简单插件。财务,atom是一个用web技术构建的开源文本编辑器。
按照 Github 的说法,这是一款非同一般的编辑器,是 21 世纪的创新产品,他们希望将来“从菜鸟到黑客都在使用 Atom 编写代码”。喔,请前几排使用 Vim 的同学安静一下,对对,旁边 Emacs 的朋友请先坐下好吗。 这...
Atom-language-agda.zip,atom编辑器的agda语言支持语言AGDA,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-language-julia.zip,atom编辑器的julia语言支持包原子的julia支持,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-youcompleteme.zip,YouCompleteMe for Atom编辑器Atom YouCompleteMe包,atom是一个用web技术构建的开源文本编辑器。
Atom-atom-ui-tweaks.zip,使用这些光滑的调整美化您的atom编辑器uiAtom用户界面调整,atom是一个用web技术构建的开源文本编辑器。
Atom-handsome-light-syntax.zip,Atom编辑器的一个漂亮的轻语法主题,有助于集中精力处理重要的事情,避免被大量的样式和(信号)颜色分散注意力。一个漂亮的语法主题,有助于集中于重要的,避免被众多的风格和...
资源名称:Atom编辑器mac版下载工具简介:Atom编辑器简介:Atom 代码编辑器支持 Windows、Mac、Linux 三大桌面平台,完全免费,并且已经在 GitHub 上开放了全部的源代码。在经过一段长时间的迭代开发和不断改进后,...