标签:
关于emacs就不说明了,直接切入主题。关于我的emacs配置,可以直接参考GitHub上的lienhua34/myemacs-conf。
关于go-mode的安装,可以直接参考GitHub。从github上下载go-mode.el或go-mode-autoloads.el文件到你本地的某个目录下,然后在~/.emacs文件中输入下面内容:
(add-to-list ‘load-path "/path/to/your/dir") (require ‘go-mode-autoloads)
如果想要用好go-mode的特新,得先确保你本机环境安装了godef工具。如果没有,则运行下面命令(当然你首先也要确保你本机有go环境,并且设置了GOPATH环境变量):
go get github.com/rogpeppe/godef
下面对go-mode提供的特性进行一下说明。
go-mode提供了对函数签名的处理方法,其支持匿名函数,不过也可以很方便的跳过你命函数。go-mode提供了如下的函数签名处理(括号里是默认快捷键):
在上述方法或者快捷键之前加上C-u的前缀,则可以跳过匿名函数。
go语言自身提供了gofmt工具用于格式go语言的代码。emacs的go-mode借助gofmt工具来实现对正在编写的代码进行格式化。其提供了两种方式:
在~/.emacs配置文件中添加下面代码设置保存前的hook,
(add-hook ‘before-save-hook ‘gofmt-before-save)
这样,在保存go语言代码文件时回自动调用gofmt对代码内容进行格式化对齐。
go-mode结合godoc工具提供了查看包或者某个标识符的docstring说明,
go-mode提供了三个对import进行管理的方法:
go-remove-unused-imports方法默认没有绑定快捷键,在~/.emacs文件中下面代码将该方法绑定到快捷键“C-c C-r”了。
(add-hook ‘go-mode-hook (lambda() (local-set-key (kbd "C-c C-r") ‘go-remove-unused-imports)))
go-mode提供了标准的一些代码浏览操作快捷键,例如:
另外,go-mode结合godef工具提供了如下三个功能:
go-mode提供的这种跳转也可以跳转到go语言的标准库,如下所示,将光标移动到左边缓冲区的md5Inst.Sum()的Sum标识符上,然后按快捷键C-x 4 C-c C-j便在右边打开关于Sum()函数的定义,
如果不清楚flymake的,请查看GNU flymake(很少,也很简单,几分钟看懂)。
goflymake则是Doug MacEachern为go语言写的flymake-mode,它是针对go语言代码执行on-the-fly语法检查的minor-mode。
参考github,先运行下面命令安装goflymake:
go get -u github.com/dougm/goflymake
然后在~/.emacs配置文件中添加一下下面配置,
(add-to-list ‘load-path "~/gocode/src/github.com/dougm/goflymake") (require ‘go-flymake)
其执行检查的三个时间点是,
goflymake提供的方法有:
默认情况下,这些方法都没有绑定快捷键,在~/.emacs配置文件添加了下面的快捷键绑定。
(add-hook ‘flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e n") ‘flymake-goto-next-error))) (add-hook ‘flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e p") ‘flymake-goto-prev-error))) (add-hook ‘flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e m") ‘flymake-popup-current-error-menu)))
效果图如下(左图是goflymake检查出来的结果,红色语句便是有问题的地方;右图是光标移动到第一个错误点,按下快捷键C-c C-e m后显示的错误menu):
参考列表:
http://dominik.honnef.co/posts/2013/03/emacs-go-1/
https://github.com/dominikh/go-mode.el
https://github.com/dougm/goflymake
*******************
***欢迎转载,不过请注明出处哦***
*******************
标签:
原文地址:http://www.cnblogs.com/lienhua34/p/5838166.html