$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

golangの編集環境を再整備する

最近golangをやり始めたので、編集環境を再整備した。

基本設定

昔自分で書いた以下の二つを再度やったら、これだけでかなり快適な環境になった...昔の自分のブログ便利...残しておくものだな...

blog.shibayu36.org
blog.shibayu36.org

ハードタブの表示の設定

あと、Emacsでwhitespace-modeを利用してハードタブなどを可視化するようにしているのだけど、これがgoだとうざく見えてしまうので、上の設定に引き続き、その部分だけ調整した。


以下がwhitespace-modeの設定。whitespace-modeの設定 - syohex’s diaryEmacs の whitespace-mode でタブと行末スペースと全角スペースに色付けするメモ - 牌語備忘録 -pygoあたりを参考にした。

(require 'whitespace)
(setq whitespace-style
      '(face       ;; faceで可視化
        trailing   ;; 行末
        tabs       ;; タブ
        spaces     ;; スペース
        space-mark ;; 表示のマッピング
        tab-mark))
(setq whitespace-display-mappings
      '((space-mark ?\u3000 [?\u25a1])
        ;; WARNING: the mapping below has a problem.
        ;; When a TAB occupies exactly one column, it will display the
        ;; character ?\xBB at that column followed by a TAB which goes to
        ;; the next TAB column.
        ;; If this is a problem for you, please, comment the line below.
        (tab-mark ?\t [?\u00BB ?\t] [?\\ ?\t])))

;; スペースは全角のみを可視化
(setq whitespace-space-regexp "\\(\u3000+\\)")
(set-face-attribute 'whitespace-trailing nil
                    :foreground "DeepPink"
                    :background nil
                    :underline t)
(set-face-attribute 'whitespace-tab nil
                    :foreground "LightSkyBlue"
                    :background nil
                    :underline t)
(set-face-attribute 'whitespace-space nil
                    :foreground "GreenYellow"
                    :background nil
                    :weight 'bold)

(global-whitespace-mode 1)


で、あとはこのwhitespace-styleのtabsの設定が、go-modeのときだけなくなるようにすればよい。次のように書いたら良い。

(defun shibayu36/go-mode-hook ()
  ;; golangではハードタブを可視化しない
  (setq whitespace-style
      '(face
        trailing
        spaces
        space-mark)))
(add-hook 'go-mode-hook 'shibayu36/go-mode-hook)

まとめ

今回はEmacsgolangの編集環境の再整備をした。とはいっても昔の設定をそのまま使うだけで非常に良い編集環境ができあがるので、golangはすごい。