Create TOC

2016년 10월 11일

Vim 8.0/Win32에서 vim-signify 오류 수정

한글 Windows 7 환경에서 Vim 8.0 x64 빌드를 사용할 경우 vim-signify 플러그인에서 오류가 발생한다.

lang mes C를 해도 메시지가 한글로 표시되기 때문에 나타나는 문제이다. 아래와 같이 소스를 수정해주면 문제가 해결된다.

diff --git a/autoload/sy/fold.vim b/autoload/sy/fold.vim
index 35028d8..a51ef54 100644
--- a/autoload/sy/fold.vim
+++ b/autoload/sy/fold.vim
@@ -100,7 +100,11 @@ function! s:get_lines() abort

   let lines = []
   for line in split(signlist, '\n')[2:]
-    call insert(lines, matchlist(line, '\v^\s+line\=(\d+)')[1], 0)
+    let tokens = matchlist(line, '\v^\s+line\=(\d+)')
+    if 0 == len(tokens)
+      let tokens = matchlist(line, '\v^\s+줄\=(\d+)')
+    endif
+    call insert(lines, tokens[1], 0)
   endfor

   return reverse(lines)
diff --git a/autoload/sy/sign.vim b/autoload/sy/sign.vim
index 6af68ff..2cd818b 100644
--- a/autoload/sy/sign.vim
+++ b/autoload/sy/sign.vim
@@ -30,9 +30,11 @@ function! sy#sign#get_current_signs() abort
     silent! execute 'sign place buffer='. b:sy.buffer
   redir END
   silent! execute 'language message' lang
-
   for signline in split(signlist, '\n')[2:]
     let tokens = matchlist(signline, '\v^\s+line\=(\d+)\s+id\=(\d+)\s+name\=(.*)$')
+    if 0 == len(tokens)
+      let tokens = matchlist(signline, '\v^\s+줄\=(\d+)\s+id\=(\d+)\s+이름\=(.*)$')
+    endif
     let line   = str2nr(tokens[1])
     let id     = str2nr(tokens[2])
     let type   = tokens[3]

수정 후 fold.vimcp949, sign.vimutf-8로 저장해야 한다.