読者です 読者をやめる 読者になる 読者になる

errormarker.vimがCUI版のVimだと画面が乱れるのでパッチを当てた

Emacs使い達はflymake.elというとっても便利なものを使ってflymake(syntax check, compileを人間がせずに裏でエディタがこっそり実行する)して快適にコードを書いている。
VimにもQuickFixという機能がもともと備わっており、flymakeできる。QuickFixはコマンド群が多く、また、実際に使用するコマンドは限られるので、そのラッパープラグインであるerrormarker.vimを使うとより効率化してくれる。
特に、エラー箇所を:signでハイライトしてくれる機能だけでも便利だ。

GUIVim(Macであれば、MacVim, Windowsであれば香り屋版gVim)の場合は問題ないが、CUIVim(MacのTerminalやcygwinのttymin上で起動させる)でflymakeすると画面が乱れてしまう。
CTRL-Lして画面をクリア/再描画すると画面の乱れを解消できる。本質的な解決ではないが毎度CTRL-Lするのがつらいので、次のようなやっつけパッチをerrormarker.vimに加えた。

diff --git a/errormarker.vim b/errormarker.vim
index d1e1093..f45e698 100644
--- a/errormarker.vim
+++ b/errormarker.vim
@@ -142,6 +142,9 @@ function! s:SetErrorMarkers()
         execute ":sign place " . l:key . " line=" . l:d.lnum . " name=" .
                     \ l:name . " buffer=" . l:d.bufnr
     endfor
+    if !has('gui_running')
+        redraw!
+    endif
 endfunction
 
 function! s:ErrorMessageBalloons()

これでCUI版のVimでerrormarker経由でflymakeしたときに毎回Ctrl-Lしなくてすむようになる。