Skip to content

Instantly share code, notes, and snippets.

@hikerpig
Created May 23, 2014 08:55
Show Gist options
  • Save hikerpig/9fe23bb977b282325a86 to your computer and use it in GitHub Desktop.
Save hikerpig/9fe23bb977b282325a86 to your computer and use it in GitHub Desktop.
Coffeescript require formatter vim plugin
" Prettify coffee require statement
" Maintainer: asnowwolf<[email protected]>
" Last Change: 2014-01-01
if exists("g:loaded_require_formatter")
finish
endif
let g:loaded_require_formatter = 1
function s:format()
" 取得当前窗口中所有行
let s:lines = getline(1, '$')
" 统计所有require语句中name部分的最大长度
let s:maxLen = 0
for s:line in s:lines
let s:tokens = matchlist(s:line, '^\(\w\+\)\s\+')
if len(s:tokens) > 1
let s:name = s:tokens[1]
let s:maxLen = max([strlen(s:name), s:maxLen])
endif
endfor
for s:i in range(1, line('$'))
let s:line = getline(s:i)
let s:tokens = matchlist(s:line, '^\(\w\+\)\s\+=\(.*\)$')
if len(s:tokens) > 2
let s:name = s:tokens[1]
let s:value = s:tokens[2]
let s:newLine = s:name . repeat(' ', s:maxLen - strlen(s:name) + 1) . '=' . s:value
if s:line != s:newLine
call setline(s:i, s:newLine)
endif
endif
endfor
endfunc
" change this map if it conflicts with others
map <C-g> :echo <SID>format()<CR>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment