Writing Plugin
제목은 거창하게 썼지만, 플러그인이나 rc 파일 작성에 필요한 지식들을 메모해 둘 예정.
Preview Window
:botright pedit { file }
:botright pedit
Preview Window 에서 라인 출력
function! showInPreview(name, fileType, lines)
let l:command = "silent! pedit! +setlocal\\ " .
\ "buftype=nofile\\ nobuflisted\\ " .
\ "noswapfile\\ nonumber\\ " .
\ "filetype=" . a:fileType . " " . a:name
exe l:command
if has('nvim')
let l:bufNr = bufnr(a:name)
call nvim_buf_set_lines(l:bufNr, 0, -1, 0, a:lines)
else
call setbufline(a:name, 1, a:lines)
endif
endfunction
이 함수는 프리뷰에 stdin 으로 데이터를 노출할 방법이 없을까 검색하다가 찾은 snippet 인데,
call ShowInPreview('this-is-test', 'sql', 'SELECT 0')
와 같은 구문으로 실행해보면 별도 파일없이 프리뷰에 데이터를 출력가능하다. 1번째는 버퍼이름, 두번째는 해당 버퍼에대한 파일 타입 정보를 전달하는 형태로 보여서 해당 펑션을 선언후에 파라미터들은 미리 정해놓고 shortcut 매핑을 해놓고 세번째 ‘내용’ 만 전달하는 형태로 사용하면 꽤 쓸만할 것 같다.
문제는 그 내용을 유의미한 데이터를 얻어오는건데..
pipe plugin 이 쉘 명령어를 실행하고 이 결과를 프리뷰에 노출하는 형태로 구성되어있다. ANSI color 코드랑 결합하면 왜인지 제대로 동작을안한다. (두번째부터) 사실 그걸 디버그하려고 프리뷰 윈도우에 대해서 찾아보기 시작한건데 잘 안되네.
삽질기는 To Be Continued…