受到《Go 终极指南:编写一个 Go
工具》的启示,萌生了把
gomodifytags
封装成emacs-plugin的想法,
然后透过简单宏观之竭力,诞生了emacs-go-tag。
emacs-go-tag 实现了少数只命: go-tag-add 添加布局体字段tag,
go-tag-remove 删除结构体字段tag。

安装依赖

emacs-go-tag 有点儿只因项, gomodifytags
go-mode.el,若使用emacs做Go开发
go-mode.el 应该早就当以了。 gomodifytags安装如下:

go get -u github.com/fatih/gomodifytags

安装

时emacs-go-tag已宣布到了MELPA达到,可利用如下命令安装:
M-x package-install [RET] go-tag [RET]
万一没有觉察go-tag,你用动用如下命令来刷新,然后于利用方面的吩咐进行设置:
M-x package-refresh-contents [RET]

配置

目前 gomodifytags 支持三种易如下:

  • snakecase: BaseDomain -> base_domain
  • camelcase: BaseDomain -> baseDomain
  • lispcase: BaseDomain -> base-domain

默认使用 snakecase , 若你准备使用 camelcase, 可配置如下:

(setq go-tag-args (list "-transform" "camelcase"))

快捷键配置示范:

(with-eval-after-load 'go-mode
  (define-key go-mode-map (kbd "C-c t") #'go-tag-add)
  (define-key go-mode-map (kbd "C-c T") #'go-tag-remove))

下验证

一旦你生动 vim-go 的 GoAddTagsGoRemoveTags 命令的阅历,
那么您会飞达成手 emacs-go-tag,
因为两岸的表现完全一致(若发生两样,请报告)。

go-tag-add

:[range] go-tag-add [key],[option] [key1],[option] …
为组织体字段添加tag。如果以一个构造面临调用,会自动添加json字段tag。
若在结构体之外调用,或者文件格式不科学,则会被有左信息。

要是为出 [range] ,则只有选定的字段将受改变。

默认的json可以经提供一个还是多独 [key] 参数来改变。
添加xml和db的例子是:
:go-tag-add xml db

要提供了 [option] 也提供了,会以添加tag时,一同上加 option ,
或者涂改都存在的tag。 如下:
:go-tag-add json,omitempty

否可以定义一个经常数值而休是默认的根据字段的值。
例如,以下命令将丰富`valid:”1″`暨所有字段。
:go-tag-add valid=1

go-tag-remove

:[range] go-tag-add [key],[option] [key1],[option] …
移除结构字段的字段标记。
如果当一个布局面临调用,它见面自行删除所有的字段tag。
如果在组织体定义之外调用,或者文件格式不得法,则会为出荒谬信息。

若是被出 [range] ,则只有选定的字段将给更改。

万一为出 [key] ,则就见面去这些key相关的tag。
如下只去json相关的tag:
:go-tag-remove json

如果 [option][key] 一同传递,则单独见面去 option
例如,下面发号施令就见面起包含json的字段中去omitempty选项:
:go-tag-remove json,omitempty

最后

感谢 GoCN每日新闻 的每日推送,让自家好读到 《Go 终极指南:编写一个 Go
工具》,
然后可以成功这个emacs-plugin
项目地址:https://github.com/brantou/emacs-go-tag,
欢迎大家来使及来领问题,若是你以为对你发拉, 就给颗星 吧。

相关文章

网站地图xml地图