Emacs支持gomodifytags

受到《Go 終極指南:編寫一個 Go 工具》的啟發(fā),萌生了把 gomodifytags 封裝成emacs-plugin的想法驯用, 然后經(jīng)過兩周的努力,誕生了emacs-go-tag儒老。 emacs-go-tag 實現(xiàn)了兩個命令: go-tag-add 添加結(jié)構(gòu)體字段tag蝴乔, go-tag-remove 刪除結(jié)構(gòu)體字段tag。

安裝依賴

emacs-go-tag 有兩個依賴項驮樊, gomodifytagsgo-mode.el薇正,若使用emacs做Go開發(fā) go-mode.el 應該已經(jīng)在使用了。 gomodifytags安裝如下:

go get -u github.com/fatih/gomodifytags

安裝

目前emacs-go-tag已發(fā)布到了MELPA上囚衔,可使用如下命令安裝:
M-x package-install [RET] go-tag [RET]
若是沒發(fā)現(xiàn)go-tag,你需要使用如下命令來刷新,然后在使用上面的命令進行安裝:
M-x package-refresh-contents [RET]

配置

目前 gomodifytags 支持三種轉(zhuǎn)換如下:

  • 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 命令的經(jīng)驗挖腰, 那么你會很快上手 emacs-go-tag, 因為兩者的行為完全一致(若有不同,請反饋)练湿。

go-tag-add

:[range] go-tag-add [key],[option] [key1],[option] …
為結(jié)構(gòu)體字段添加tag猴仑。如果在一個結(jié)構(gòu)中調(diào)用,會自動添加json字段tag肥哎。 若在結(jié)構(gòu)體之外調(diào)用辽俗,或者文件格式不正確疾渣,則會給出錯誤消息。

如果給出 [range] 崖飘,則只有選定的字段將被改變榴捡。

默認的json可以通過提供一個或多個 [key] 參數(shù)來改變。 添加xml和db的例子是:
:go-tag-add xml db

若提供了 [option] 也提供了朱浴,會在添加tag時吊圾,一同添加 option , 或者修改已存在的tag。 如下:
:go-tag-add json,omitempty

也可以定義一個常數(shù)值而不是默認的基于字段的值赊琳。 例如街夭,以下命令將添加`valid:"1"`到所有字段。
:go-tag-add valid=1

go-tag-remove

:[range] go-tag-add [key],[option] [key1],[option] …
移除結(jié)構(gòu)字段的字段標記躏筏。 如果在一個結(jié)構(gòu)中調(diào)用板丽,它會自動刪除所有的字段tag。 如果在結(jié)構(gòu)體定義之外調(diào)用趁尼,或者文件格式不正確埃碱,則會給出錯誤消息。

如果給出 [range] 酥泞,則只有選定的字段將被改變砚殿。

如果給出 [key] ,則只會刪除這些key相關(guān)的tag芝囤。 如下只刪除json相關(guān)的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, 歡迎大家來使用和來提問題悯许,若是你覺得對你有幫助仆嗦, 就給顆星 吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末先壕,一起剝皮案震驚了整個濱河市瘩扼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垃僚,老刑警劉巖集绰,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谆棺,居然都是意外死亡栽燕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纫谅,“玉大人,你說我怎么就攤上這事溅固「讹酰” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵侍郭,是天一觀的道長询吴。 經(jīng)常有香客問我,道長亮元,這世上最難降的妖魔是什么猛计? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮爆捞,結(jié)果婚禮上奉瘤,老公的妹妹穿的比我還像新娘。我一直安慰自己煮甥,他們只是感情好盗温,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著成肘,像睡著了一般卖局。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上双霍,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天砚偶,我揣著相機與錄音,去河邊找鬼洒闸。 笑死染坯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的顷蟀。 我是一名探鬼主播酒请,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸣个!你這毒婦竟也來了羞反?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤囤萤,失蹤者是張志新(化名)和其女友劉穎昼窗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涛舍,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡澄惊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掸驱。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肛搬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毕贼,到底是詐尸還是另有隱情温赔,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布鬼癣,位于F島的核電站陶贼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏待秃。R本人自食惡果不足惜拜秧,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望章郁。 院中可真熱鬧枉氮,春花似錦、人聲如沸暖庄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雄驹。三九已至佃牛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間医舆,已是汗流浹背俘侠。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔬将,地道東北人爷速。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像霞怀,于是被迫代替她去往敵國和親惫东。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容