Tuesday, February 21, 2017

clojure vim 開發環境設置 --- rainbow-parentheses, cljfmt

clojure 搭配 vim 的開發環境設置中,有一項特別的 syntax highlight  ,算是其它語言比較不需要,但是 lisp 家族的語言特別需要的特色:彩虹括號 rainbow parentheses



安裝了這個 vim 的 plugin 之後,寫出的 clojure 的程式碼,插號就會由內而外地照彩虹來變色。而且連中括號的顏色也可以一起變化。




安裝 vim 的 rainbow parentheses
cd ~/.vim/bundle && git clone https://github.com/kien/rainbow_parentheses.vim.git

然後,在 ~/.vimrc 檔內,加入所需要的設置:
let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['brown',       'firebrick3'],
    \ ['gray',        'RoyalBlue3'],
    \ ['black',       'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['Darkblue',    'firebrick3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]

let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces

另一方面,要人工處理程式碼的對齊,其實也是很麻煩的事。寫過 golang 用過 gofmt 之後,寫新的語言也會不自覺開始找對應的東西。所幸, clojure 也有 cljfmt 。  

安裝方式:
  1. 安裝 vim-fireplace
  2. 安裝 cljfmt 
  3. 安裝 vim-cljfmt 
想要在 vim 內打 :Cljfmt 就可以自動排版、關閉檔案存檔時也可以自動排版的設置,必須在  ~/.lein/profiles.clj  寫入
:dependencies [[cljfmt "0.5.6"]]
此外,必須是在 leiningen  「使用者域」的設置檔已經寫入之後,才啟動 leiningen repl 。因為不同於 gofmt 是獨立的程式,cljfmt 是需要透過 clojure 的 REPL 來啟動的。