Updated plugins
This commit is contained in:
parent
64a81818ee
commit
61a22e9f3e
39 changed files with 1372 additions and 782 deletions
|
@ -97,6 +97,7 @@ let [s:pref, s:bpref, s:opts, s:new_opts, s:lc_opts] =
|
||||||
\ 'compare_lim': ['s:compare_lim', 3000],
|
\ 'compare_lim': ['s:compare_lim', 3000],
|
||||||
\ 'bufname_mod': ['s:bufname_mod', ':t'],
|
\ 'bufname_mod': ['s:bufname_mod', ':t'],
|
||||||
\ 'bufpath_mod': ['s:bufpath_mod', ':~:.:h'],
|
\ 'bufpath_mod': ['s:bufpath_mod', ':~:.:h'],
|
||||||
|
\ 'formatline_func': ['s:flfunc', 's:formatline(v:val)'],
|
||||||
\ }, {
|
\ }, {
|
||||||
\ 'open_multiple_files': 's:opmul',
|
\ 'open_multiple_files': 's:opmul',
|
||||||
\ 'regexp': 's:regexp',
|
\ 'regexp': 's:regexp',
|
||||||
|
@ -203,11 +204,11 @@ let s:hlgrps = {
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
" lname, sname of the basic(non-extension) modes
|
" lname, sname of the basic(non-extension) modes
|
||||||
let s:coretypes = [
|
let s:coretypes = filter([
|
||||||
\ ['files', 'fil'],
|
\ ['files', 'fil'],
|
||||||
\ ['buffers', 'buf'],
|
\ ['buffers', 'buf'],
|
||||||
\ ['mru files', 'mru'],
|
\ ['mru files', 'mru'],
|
||||||
\ ]
|
\ ], 'index(g:ctrlp_types, v:val[1])!=-1')
|
||||||
|
|
||||||
" Get the options {{{2
|
" Get the options {{{2
|
||||||
fu! s:opts(...)
|
fu! s:opts(...)
|
||||||
|
@ -439,9 +440,9 @@ fu! s:UserCmd(lscmd)
|
||||||
en
|
en
|
||||||
if has('patch-7.4-597') && !(has('win32') || has('win64'))
|
if has('patch-7.4-597') && !(has('win32') || has('win64'))
|
||||||
let g:ctrlp_allfiles = systemlist(printf(lscmd, path))
|
let g:ctrlp_allfiles = systemlist(printf(lscmd, path))
|
||||||
else
|
el
|
||||||
let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n")
|
let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n")
|
||||||
end
|
en
|
||||||
if exists('+ssl') && exists('ssl')
|
if exists('+ssl') && exists('ssl')
|
||||||
let &ssl = ssl
|
let &ssl = ssl
|
||||||
cal map(g:ctrlp_allfiles, 'tr(v:val, "\\", "/")')
|
cal map(g:ctrlp_allfiles, 'tr(v:val, "\\", "/")')
|
||||||
|
@ -624,7 +625,7 @@ fu! s:Render(lines, pat)
|
||||||
en
|
en
|
||||||
if s:mw_order == 'btt' | cal reverse(lines) | en
|
if s:mw_order == 'btt' | cal reverse(lines) | en
|
||||||
let s:lines = copy(lines)
|
let s:lines = copy(lines)
|
||||||
cal map(lines, 's:formatline(v:val)')
|
cal map(lines, s:flfunc)
|
||||||
cal setline(1, s:offset(lines, height))
|
cal setline(1, s:offset(lines, height))
|
||||||
cal s:unmarksigns()
|
cal s:unmarksigns()
|
||||||
cal s:remarksigns()
|
cal s:remarksigns()
|
||||||
|
@ -719,7 +720,7 @@ fu! s:PrtBS()
|
||||||
if empty(s:prompt[0]) && s:brfprt != 0
|
if empty(s:prompt[0]) && s:brfprt != 0
|
||||||
cal s:PrtExit()
|
cal s:PrtExit()
|
||||||
retu
|
retu
|
||||||
endif
|
en
|
||||||
unl! s:hstgot
|
unl! s:hstgot
|
||||||
let [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1]
|
let [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1]
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
|
@ -877,12 +878,13 @@ fu! s:PrtFocusMap(char)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtClearCache()
|
fu! s:PrtClearCache()
|
||||||
if s:itemtype == 0
|
let ct = s:curtype()
|
||||||
|
if ct == 'fil'
|
||||||
cal ctrlp#clr()
|
cal ctrlp#clr()
|
||||||
elsei s:itemtype > 2
|
elsei s:itemtype >= len(s:coretypes)
|
||||||
cal ctrlp#clr(s:statypes[s:itemtype][1])
|
cal ctrlp#clr(s:statypes[s:itemtype][1])
|
||||||
en
|
en
|
||||||
if s:itemtype == 2
|
if ct == 'mru'
|
||||||
let g:ctrlp_lines = ctrlp#mrufiles#refresh()
|
let g:ctrlp_lines = ctrlp#mrufiles#refresh()
|
||||||
el
|
el
|
||||||
cal ctrlp#setlines()
|
cal ctrlp#setlines()
|
||||||
|
@ -893,9 +895,10 @@ fu! s:PrtClearCache()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtDeleteEnt()
|
fu! s:PrtDeleteEnt()
|
||||||
if s:itemtype == 2
|
let ct = s:curtype()
|
||||||
|
if ct == 'mru'
|
||||||
cal s:PrtDeleteMRU()
|
cal s:PrtDeleteMRU()
|
||||||
elsei s:itemtype == 1
|
elsei ct == 'buf'
|
||||||
cal s:delbuf()
|
cal s:delbuf()
|
||||||
elsei type(s:getextvar('wipe')) == 1
|
elsei type(s:getextvar('wipe')) == 1
|
||||||
cal s:delent(s:getextvar('wipe'))
|
cal s:delent(s:getextvar('wipe'))
|
||||||
|
@ -903,7 +906,7 @@ fu! s:PrtDeleteEnt()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtDeleteMRU()
|
fu! s:PrtDeleteMRU()
|
||||||
if s:itemtype == 2
|
if s:curtype() == 'mru'
|
||||||
cal s:delent('ctrlp#mrufiles#remove')
|
cal s:delent('ctrlp#mrufiles#remove')
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
@ -1011,7 +1014,7 @@ fu! s:ToggleByFname()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:ToggleType(dir)
|
fu! s:ToggleType(dir)
|
||||||
let max = len(g:ctrlp_ext_vars) + 2
|
let max = len(g:ctrlp_ext_vars) + len(s:coretypes) - 1
|
||||||
let next = s:walker(max, s:itemtype, a:dir)
|
let next = s:walker(max, s:itemtype, a:dir)
|
||||||
cal ctrlp#setlines(next)
|
cal ctrlp#setlines(next)
|
||||||
cal ctrlp#syntax()
|
cal ctrlp#syntax()
|
||||||
|
@ -1151,7 +1154,7 @@ fu! s:AcceptSelection(action)
|
||||||
if subm | if s:SpecInputs(str) | retu | en | en
|
if subm | if s:SpecInputs(str) | retu | en | en
|
||||||
" Get the selected line
|
" Get the selected line
|
||||||
let line = ctrlp#getcline()
|
let line = ctrlp#getcline()
|
||||||
if !subm && !s:itemtype && line == '' && line('.') > s:offset
|
if !subm && s:curtype() != 'fil' && line == '' && line('.') > s:offset
|
||||||
\ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$'
|
\ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$'
|
||||||
cal s:CreateNewFile(md) | retu
|
cal s:CreateNewFile(md) | retu
|
||||||
en
|
en
|
||||||
|
@ -1161,7 +1164,7 @@ fu! s:AcceptSelection(action)
|
||||||
let actfunc = s:openfunc[s:ctype]
|
let actfunc = s:openfunc[s:ctype]
|
||||||
let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list'
|
let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list'
|
||||||
el
|
el
|
||||||
if s:itemtype < 3
|
if s:itemtype < len(s:coretypes)
|
||||||
let [actfunc, type] = ['ctrlp#acceptfile', 'dict']
|
let [actfunc, type] = ['ctrlp#acceptfile', 'dict']
|
||||||
el
|
el
|
||||||
let [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')]
|
let [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')]
|
||||||
|
@ -1206,15 +1209,16 @@ fu! s:CreateNewFile(...)
|
||||||
endf
|
endf
|
||||||
" * OpenMulti() {{{1
|
" * OpenMulti() {{{1
|
||||||
fu! s:MarkToOpen()
|
fu! s:MarkToOpen()
|
||||||
|
let ct = s:curtype()
|
||||||
if s:bufnr <= 0 || s:opmul == '0'
|
if s:bufnr <= 0 || s:opmul == '0'
|
||||||
\ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 )
|
\ || ( s:itemtype >= len(s:coretypes) && s:getextvar('opmul') != 1 )
|
||||||
retu
|
retu
|
||||||
en
|
en
|
||||||
let line = ctrlp#getcline()
|
let line = ctrlp#getcline()
|
||||||
|
|
||||||
" Do not allow to mark modified or current buffer
|
" Do not allow to mark modified or current buffer
|
||||||
let bufnr = s:bufnrfilpath(line)[0]
|
let bufnr = s:bufnrfilpath(line)[0]
|
||||||
if (s:itemtype == 1 && s:delbufcond(bufnr))
|
if (ct == 'buf' && s:delbufcond(bufnr))
|
||||||
retu
|
retu
|
||||||
en
|
en
|
||||||
|
|
||||||
|
@ -1247,7 +1251,7 @@ endf
|
||||||
fu! s:OpenMulti(...)
|
fu! s:OpenMulti(...)
|
||||||
let has_marked = exists('s:marked')
|
let has_marked = exists('s:marked')
|
||||||
if ( !has_marked && a:0 ) || s:opmul == '0' || !s:ispath
|
if ( !has_marked && a:0 ) || s:opmul == '0' || !s:ispath
|
||||||
\ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 )
|
\ || ( s:itemtype >= len(s:coretypes) && s:getextvar('opmul') != 1 )
|
||||||
retu -1
|
retu -1
|
||||||
en
|
en
|
||||||
" Get the options
|
" Get the options
|
||||||
|
@ -1442,7 +1446,8 @@ fu! s:shortest(lens)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:mixedsort(...)
|
fu! s:mixedsort(...)
|
||||||
if s:itemtype == 1
|
let ct = s:curtype()
|
||||||
|
if ct == 'buf'
|
||||||
let pat = '[\/]\?\[\d\+\*No Name\]$'
|
let pat = '[\/]\?\[\d\+\*No Name\]$'
|
||||||
if a:1 =~# pat && a:2 =~# pat | retu 0
|
if a:1 =~# pat && a:2 =~# pat | retu 0
|
||||||
elsei a:1 =~# pat | retu 1
|
elsei a:1 =~# pat | retu 1
|
||||||
|
@ -1453,10 +1458,10 @@ fu! s:mixedsort(...)
|
||||||
let ms = []
|
let ms = []
|
||||||
if s:res_count < 21
|
if s:res_count < 21
|
||||||
let ms += [s:compfnlen(a:1, a:2)]
|
let ms += [s:compfnlen(a:1, a:2)]
|
||||||
if s:itemtype !~ '^[12]$' | let ms += [s:comptime(a:1, a:2)] | en
|
if ct !~ '^\(buf\|mru\)$' | let ms += [s:comptime(a:1, a:2)] | en
|
||||||
if !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en
|
if !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en
|
||||||
en
|
en
|
||||||
if s:itemtype =~ '^[12]$'
|
if ct =~ '^\(buf\|mru\)$'
|
||||||
let ms += [s:compmref(a:1, a:2)]
|
let ms += [s:compmref(a:1, a:2)]
|
||||||
let cln = cml ? cln : 0
|
let cln = cml ? cln : 0
|
||||||
en
|
en
|
||||||
|
@ -1540,7 +1545,8 @@ endf
|
||||||
" Line formatting {{{3
|
" Line formatting {{{3
|
||||||
fu! s:formatline(str)
|
fu! s:formatline(str)
|
||||||
let str = a:str
|
let str = a:str
|
||||||
if s:itemtype == 1
|
let ct = s:curtype()
|
||||||
|
if ct == 'buf'
|
||||||
let bufnr = s:bufnrfilpath(str)[0]
|
let bufnr = s:bufnrfilpath(str)[0]
|
||||||
let parts = s:bufparts(bufnr)
|
let parts = s:bufparts(bufnr)
|
||||||
let str = printf('%'.s:bufnr_width.'s', bufnr)
|
let str = printf('%'.s:bufnr_width.'s', bufnr)
|
||||||
|
@ -1560,7 +1566,7 @@ fu! s:formatline(str)
|
||||||
en
|
en
|
||||||
en
|
en
|
||||||
en
|
en
|
||||||
let cond = s:itemtype != 1 &&s:ispath && ( s:winw - 4 ) < s:strwidth(str)
|
let cond = ct != 'buf' &&s:ispath && ( s:winw - 4 ) < s:strwidth(str)
|
||||||
retu s:lineprefix.( cond ? s:pathshorten(str) : str )
|
retu s:lineprefix.( cond ? s:pathshorten(str) : str )
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
@ -1615,7 +1621,7 @@ fu! s:lash(...)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:ispathitem()
|
fu! s:ispathitem()
|
||||||
retu s:itemtype < 3 || ( s:itemtype > 2 && s:getextvar('type') == 'path' )
|
retu s:itemtype < len(s:coretypes) || s:getextvar('type') == 'path'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#igncwd(cwd)
|
fu! ctrlp#igncwd(cwd)
|
||||||
|
@ -1649,11 +1655,11 @@ fu! ctrlp#dirnfile(entries)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:usrign(item, type)
|
fu! s:usrign(item, type)
|
||||||
if s:igntype == 1 | retu a:item =~ s:usrign | end
|
if s:igntype == 1 | retu a:item =~ s:usrign | en
|
||||||
if s:igntype == 2
|
if s:igntype == 2
|
||||||
if call(s:usrign, [a:item, a:type])
|
if call(s:usrign, [a:item, a:type])
|
||||||
retu 1
|
retu 1
|
||||||
end
|
en
|
||||||
elsei s:igntype == 4
|
elsei s:igntype == 4
|
||||||
if has_key(s:usrign, a:type) && s:usrign[a:type] != ''
|
if has_key(s:usrign, a:type) && s:usrign[a:type] != ''
|
||||||
\ && a:item =~ s:usrign[a:type]
|
\ && a:item =~ s:usrign[a:type]
|
||||||
|
@ -1661,8 +1667,8 @@ fu! s:usrign(item, type)
|
||||||
elsei has_key(s:usrign, 'func') && s:usrign['func'] != ''
|
elsei has_key(s:usrign, 'func') && s:usrign['func'] != ''
|
||||||
\ && call(s:usrign['func'], [a:item, a:type])
|
\ && call(s:usrign['func'], [a:item, a:type])
|
||||||
retu 1
|
retu 1
|
||||||
end
|
en
|
||||||
end
|
en
|
||||||
retu 0
|
retu 0
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
@ -1772,7 +1778,7 @@ fu! ctrlp#syntax()
|
||||||
exe "sy match CtrlPLinePre '^".escape(get(g:, 'ctrlp_line_prefix', '>'),'^$.*~\')."'"
|
exe "sy match CtrlPLinePre '^".escape(get(g:, 'ctrlp_line_prefix', '>'),'^$.*~\')."'"
|
||||||
en
|
en
|
||||||
|
|
||||||
if s:itemtype == 1 && s:has_conceal
|
if s:curtype() == 'buf' && s:has_conceal
|
||||||
sy region CtrlPBufferNr matchgroup=CtrlPLinePre start='^>\s\+' end='\s'
|
sy region CtrlPBufferNr matchgroup=CtrlPLinePre start='^>\s\+' end='\s'
|
||||||
sy region CtrlPBufferInd concealends matchgroup=Ignore start='<bi>' end='</bi>'
|
sy region CtrlPBufferInd concealends matchgroup=Ignore start='<bi>' end='</bi>'
|
||||||
sy region CtrlPBufferRegion concealends matchgroup=Ignore start='<bn>' end='</bn>'
|
sy region CtrlPBufferRegion concealends matchgroup=Ignore start='<bn>' end='</bn>'
|
||||||
|
@ -1810,7 +1816,7 @@ fu! s:highlight(pat, grp)
|
||||||
if s:byfname()
|
if s:byfname()
|
||||||
" Make sure there are no slashes in our match
|
" Make sure there are no slashes in our match
|
||||||
let beginning = beginning.'\([^\/]*$\)\@='
|
let beginning = beginning.'\([^\/]*$\)\@='
|
||||||
end
|
en
|
||||||
|
|
||||||
for i in range(len(chars))
|
for i in range(len(chars))
|
||||||
" Surround our current target letter with \zs and \ze so it only
|
" Surround our current target letter with \zs and \ze so it only
|
||||||
|
@ -1822,14 +1828,14 @@ fu! s:highlight(pat, grp)
|
||||||
if i == 0
|
if i == 0
|
||||||
let charcopy[i] = '\zs'.charcopy[i].'\ze'
|
let charcopy[i] = '\zs'.charcopy[i].'\ze'
|
||||||
let middle = join(charcopy, '.\{-}')
|
let middle = join(charcopy, '.\{-}')
|
||||||
else
|
el
|
||||||
let before = join(charcopy[0:i-1], '.\{-}')
|
let before = join(charcopy[0:i-1], '.\{-}')
|
||||||
let after = join(charcopy[i+1:-1], '.\{-}')
|
let after = join(charcopy[i+1:-1], '.\{-}')
|
||||||
let c = charcopy[i]
|
let c = charcopy[i]
|
||||||
" for abc, match either ab.\{-}c or a.*b.\{-}c in that order
|
" for abc, match either ab.\{-}c or a.*b.\{-}c in that order
|
||||||
let cpat = '\(\zs'.c.'\|'.'.*\zs'.c.'\)\ze.*'
|
let cpat = '\(\zs'.c.'\|'.'.*\zs'.c.'\)\ze.*'
|
||||||
let middle = before.cpat.after
|
let middle = before.cpat.after
|
||||||
endif
|
en
|
||||||
|
|
||||||
" Now we matchadd for each letter, the basic form being:
|
" Now we matchadd for each letter, the basic form being:
|
||||||
" ^.*\zsx\ze.*$, but with our pattern we built above for the letter,
|
" ^.*\zsx\ze.*$, but with our pattern we built above for the letter,
|
||||||
|
@ -1956,7 +1962,7 @@ fu! s:isabs(path)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:bufnrfilpath(line)
|
fu! s:bufnrfilpath(line)
|
||||||
if s:isabs(a:line) || a:line =~ '^\~[/\\]' || a:line =~ '^\w\+:\/\/'
|
if s:isabs(a:line) || a:line =~ '^\~[/\\]'
|
||||||
let filpath = a:line
|
let filpath = a:line
|
||||||
el
|
el
|
||||||
let filpath = s:dyncwd.s:lash().a:line
|
let filpath = s:dyncwd.s:lash().a:line
|
||||||
|
@ -2140,12 +2146,13 @@ fu! s:modevar()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:nosort()
|
fu! s:nosort()
|
||||||
retu s:matcher != {} || s:nolim == 1 || ( s:itemtype == 2 && s:mrudef )
|
let ct = s:curtype()
|
||||||
\ || ( s:itemtype =~ '\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort
|
retu s:matcher != {} || s:nolim == 1 || ( ct == 'mru' && s:mrudef )
|
||||||
|
\ || ( ct =~ '^\(buf\|mru\)$' && s:prompt == ['', '', ''] ) || !s:dosort
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:byfname()
|
fu! s:byfname()
|
||||||
retu s:itemtype != 1 && s:ispath && s:byfname
|
retu s:curtype() != 'buf' && s:ispath && s:byfname
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:narrowable()
|
fu! s:narrowable()
|
||||||
|
@ -2374,13 +2381,17 @@ fu! s:buildpat(lst)
|
||||||
retu pat
|
retu pat
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
fu! s:curtype()
|
||||||
|
return s:CurTypeName()[1]
|
||||||
|
endf
|
||||||
|
|
||||||
fu! s:mfunc()
|
fu! s:mfunc()
|
||||||
let mfunc = 'match'
|
let mfunc = 'match'
|
||||||
if s:byfname()
|
if s:byfname()
|
||||||
let mfunc = 's:matchfname'
|
let mfunc = 's:matchfname'
|
||||||
elsei s:itemtype == 1
|
elsei s:curtype() == 'buf'
|
||||||
let mfunc = 's:matchbuf'
|
let mfunc = 's:matchbuf'
|
||||||
elsei s:itemtype > 2
|
elsei s:itemtype >= len(s:coretypes)
|
||||||
let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
|
let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
|
||||||
if has_key(matchtypes, s:matchtype)
|
if has_key(matchtypes, s:matchtype)
|
||||||
let mfunc = matchtypes[s:matchtype]
|
let mfunc = matchtypes[s:matchtype]
|
||||||
|
@ -2439,7 +2450,7 @@ fu! s:insertcache(str)
|
||||||
endf
|
endf
|
||||||
" Extensions {{{2
|
" Extensions {{{2
|
||||||
fu! s:mtype()
|
fu! s:mtype()
|
||||||
retu s:itemtype > 2 ? s:getextvar('type') : 'path'
|
retu s:itemtype >= len(s:coretypes) ? s:getextvar('type') : 'path'
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:execextvar(key)
|
fu! s:execextvar(key)
|
||||||
|
@ -2450,8 +2461,8 @@ fu! s:execextvar(key)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:getextvar(key)
|
fu! s:getextvar(key)
|
||||||
if s:itemtype > 2
|
if s:itemtype >= len(s:coretypes) && len(g:ctrlp_ext_vars) > 0
|
||||||
let vars = g:ctrlp_ext_vars[s:itemtype - 3]
|
let vars = g:ctrlp_ext_vars[s:itemtype - len(s:coretypes)]
|
||||||
retu has_key(vars, a:key) ? vars[a:key] : -1
|
retu has_key(vars, a:key) ? vars[a:key] : -1
|
||||||
en
|
en
|
||||||
retu get(g:, 'ctrlp_' . s:matchtype . '_' . a:key, -1)
|
retu get(g:, 'ctrlp_' . s:matchtype . '_' . a:key, -1)
|
||||||
|
@ -2505,7 +2516,8 @@ endf
|
||||||
fu! ctrlp#setlines(...)
|
fu! ctrlp#setlines(...)
|
||||||
if a:0 | let s:itemtype = a:1 | en
|
if a:0 | let s:itemtype = a:1 | en
|
||||||
cal s:modevar()
|
cal s:modevar()
|
||||||
let types = ['ctrlp#files()', 'ctrlp#buffers()', 'ctrlp#mrufiles#list()']
|
let inits = {'fil': 'ctrlp#files()', 'buf': 'ctrlp#buffers()', 'mru': 'ctrlp#mrufiles#list()'}
|
||||||
|
let types = map(copy(g:ctrlp_types), 'inits[v:val]')
|
||||||
if !empty(g:ctrlp_ext_vars)
|
if !empty(g:ctrlp_ext_vars)
|
||||||
cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val["init"])')
|
cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val["init"])')
|
||||||
en
|
en
|
||||||
|
@ -2514,11 +2526,11 @@ endf
|
||||||
|
|
||||||
" Returns [lname, sname]
|
" Returns [lname, sname]
|
||||||
fu! s:CurTypeName()
|
fu! s:CurTypeName()
|
||||||
if s:itemtype < 3
|
if s:itemtype < len(s:coretypes)
|
||||||
return s:coretypes[s:itemtype]
|
return filter(copy(s:coretypes), 'v:val[1]==g:ctrlp_types[s:itemtype]')[0]
|
||||||
else
|
el
|
||||||
return [s:getextvar("lname"), s:getextvar('sname')]
|
return [s:getextvar("lname"), s:getextvar('sname')]
|
||||||
endif
|
en
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! s:ExitIfSingleCandidate()
|
fu! s:ExitIfSingleCandidate()
|
||||||
|
@ -2526,7 +2538,7 @@ fu! s:ExitIfSingleCandidate()
|
||||||
call s:AcceptSelection('e')
|
call s:AcceptSelection('e')
|
||||||
call ctrlp#exit()
|
call ctrlp#exit()
|
||||||
return 1
|
return 1
|
||||||
endif
|
en
|
||||||
return 0
|
return 0
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
|
@ -2539,14 +2551,23 @@ fu! ctrlp#init(type, ...)
|
||||||
cal s:SetWD(a:0 ? a:1 : {})
|
cal s:SetWD(a:0 ? a:1 : {})
|
||||||
cal s:MapNorms()
|
cal s:MapNorms()
|
||||||
cal s:MapSpecs()
|
cal s:MapSpecs()
|
||||||
cal ctrlp#setlines(s:settype(a:type))
|
if type(a:type) == 0
|
||||||
|
let type = a:type
|
||||||
|
el
|
||||||
|
let type = index(g:ctrlp_types, a:type)
|
||||||
|
if type == -1
|
||||||
|
call ctrlp#exit()
|
||||||
|
retu
|
||||||
|
en
|
||||||
|
en
|
||||||
|
cal ctrlp#setlines(s:settype(type))
|
||||||
cal ctrlp#syntax()
|
cal ctrlp#syntax()
|
||||||
cal s:SetDefTxt()
|
cal s:SetDefTxt()
|
||||||
let curName = s:CurTypeName()
|
let curName = s:CurTypeName()
|
||||||
let shouldExitSingle = index(s:opensingle, curName[0])>=0 || index(s:opensingle, curName[1])>=0
|
let shouldExitSingle = index(s:opensingle, curName[0])>=0 || index(s:opensingle, curName[1])>=0
|
||||||
if shouldExitSingle && s:ExitIfSingleCandidate()
|
if shouldExitSingle && s:ExitIfSingleCandidate()
|
||||||
return 0
|
return 0
|
||||||
endif
|
en
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
if s:keyloop | cal s:KeyLoop() | en
|
if s:keyloop | cal s:KeyLoop() | en
|
||||||
return 1
|
return 1
|
||||||
|
|
|
@ -68,6 +68,7 @@ Overview:~
|
||||||
|ctrlp_open_single_match|.....Automatically accept when only one candidate.
|
|ctrlp_open_single_match|.....Automatically accept when only one candidate.
|
||||||
|ctrlp_brief_prompt|..........Exit CtrlP on empty prompt by <bs>.
|
|ctrlp_brief_prompt|..........Exit CtrlP on empty prompt by <bs>.
|
||||||
|ctrlp_match_current_file|....Include current file in match entries.
|
|ctrlp_match_current_file|....Include current file in match entries.
|
||||||
|
|ctrlp_types|.................Names of builtin types.
|
||||||
|
|
||||||
MRU mode:
|
MRU mode:
|
||||||
|ctrlp_mruf_max|..............Max MRU entries to remember.
|
|ctrlp_mruf_max|..............Max MRU entries to remember.
|
||||||
|
@ -454,13 +455,19 @@ This option works well together with |g:ctrlp_open_single_match|
|
||||||
|
|
||||||
|
|
||||||
*'g:ctrlp_match_current_file'*
|
*'g:ctrlp_match_current_file'*
|
||||||
Includes the current file in the match entries:
|
Includes the current file in the match entries: >
|
||||||
let g:ctrlp_match_current_file = 1
|
let g:ctrlp_match_current_file = 1
|
||||||
|
|
||||||
By default, the current file is excluded from the list.
|
By default, the current file is excluded from the list.
|
||||||
|
|
||||||
Note: does not apply when |g:ctrlp_match_func| is used.
|
Note: does not apply when |g:ctrlp_match_func| is used.
|
||||||
|
|
||||||
|
*'g:ctrlp_types'*
|
||||||
|
Set this to list of names to customize core types: >
|
||||||
|
let g:ctrlp_types = ['mru', 'fil']
|
||||||
|
|
||||||
|
By default, the types are: >
|
||||||
|
let g:ctrlp_types = ['fil', 'buf', 'mru'].
|
||||||
|
|
||||||
*'g:ctrlp_abbrev'*
|
*'g:ctrlp_abbrev'*
|
||||||
Define input abbreviations that can be expanded (either internally or visibly)
|
Define input abbreviations that can be expanded (either internally or visibly)
|
||||||
|
|
|
@ -10,17 +10,23 @@ if ( exists('g:loaded_ctrlp') && g:loaded_ctrlp ) || v:version < 700 || &cp
|
||||||
en
|
en
|
||||||
let g:loaded_ctrlp = 1
|
let g:loaded_ctrlp = 1
|
||||||
|
|
||||||
|
let s:types = ['fil', 'buf', 'mru']
|
||||||
|
if !exists('g:ctrlp_types')
|
||||||
|
let g:ctrlp_types = s:types
|
||||||
|
el
|
||||||
|
call filter(g:ctrlp_types, "index(['fil', 'buf', 'mru'], v:val)!=-1")
|
||||||
|
en
|
||||||
let [g:ctrlp_lines, g:ctrlp_allfiles, g:ctrlp_alltags, g:ctrlp_alldirs,
|
let [g:ctrlp_lines, g:ctrlp_allfiles, g:ctrlp_alltags, g:ctrlp_alldirs,
|
||||||
\ g:ctrlp_allmixes, g:ctrlp_buftags, g:ctrlp_ext_vars, g:ctrlp_builtins]
|
\ g:ctrlp_allmixes, g:ctrlp_buftags, g:ctrlp_ext_vars, g:ctrlp_builtins]
|
||||||
\ = [[], [], [], [], {}, {}, [], 2]
|
\ = [[], [], [], [], {}, {}, [], len(g:ctrlp_types)-1]
|
||||||
|
|
||||||
if !exists('g:ctrlp_map') | let g:ctrlp_map = '<c-p>' | en
|
if !exists('g:ctrlp_map') | let g:ctrlp_map = '<c-p>' | en
|
||||||
if !exists('g:ctrlp_cmd') | let g:ctrlp_cmd = 'CtrlP' | en
|
if !exists('g:ctrlp_cmd') | let g:ctrlp_cmd = 'CtrlP' | en
|
||||||
|
|
||||||
com! -n=? -com=dir CtrlP cal ctrlp#init(0, { 'dir': <q-args> })
|
com! -n=? -com=dir CtrlP cal ctrlp#init('fil', { 'dir': <q-args> })
|
||||||
com! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init(2, { 'dir': <q-args> })
|
com! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init('mru', { 'dir': <q-args> })
|
||||||
|
|
||||||
com! -bar CtrlPBuffer cal ctrlp#init(1)
|
com! -bar CtrlPBuffer cal ctrlp#init('buf')
|
||||||
com! -n=? CtrlPLastMode cal ctrlp#init(-1, { 'args': <q-args> })
|
com! -n=? CtrlPLastMode cal ctrlp#init(-1, { 'args': <q-args> })
|
||||||
|
|
||||||
com! -bar CtrlPClearCache cal ctrlp#clr()
|
com! -bar CtrlPClearCache cal ctrlp#clr()
|
||||||
|
@ -29,9 +35,9 @@ com! -bar CtrlPClearAllCaches cal ctrlp#clra()
|
||||||
com! -bar ClearCtrlPCache cal ctrlp#clr()
|
com! -bar ClearCtrlPCache cal ctrlp#clr()
|
||||||
com! -bar ClearAllCtrlPCaches cal ctrlp#clra()
|
com! -bar ClearAllCtrlPCaches cal ctrlp#clra()
|
||||||
|
|
||||||
com! -bar CtrlPCurWD cal ctrlp#init(0, { 'mode': '' })
|
com! -bar CtrlPCurWD cal ctrlp#init('fil', { 'mode': '' })
|
||||||
com! -bar CtrlPCurFile cal ctrlp#init(0, { 'mode': 'c' })
|
com! -bar CtrlPCurFile cal ctrlp#init('fil', { 'mode': 'c' })
|
||||||
com! -bar CtrlPRoot cal ctrlp#init(0, { 'mode': 'r' })
|
com! -bar CtrlPRoot cal ctrlp#init('fil', { 'mode': 'r' })
|
||||||
|
|
||||||
exe 'nn <silent> <plug>(ctrlp) :<c-u>'.g:ctrlp_cmd.'<cr>'
|
exe 'nn <silent> <plug>(ctrlp) :<c-u>'.g:ctrlp_cmd.'<cr>'
|
||||||
|
|
||||||
|
@ -55,10 +61,10 @@ com! -bar CtrlPRTS cal ctrlp#init(ctrlp#rtscript#id())
|
||||||
com! -bar CtrlPUndo cal ctrlp#init(ctrlp#undo#id())
|
com! -bar CtrlPUndo cal ctrlp#init(ctrlp#undo#id())
|
||||||
|
|
||||||
com! -n=? -com=buffer CtrlPLine
|
com! -n=? -com=buffer CtrlPLine
|
||||||
\ cal ctrlp#init(ctrlp#line#cmd(1, <q-args>))
|
\ cal ctrlp#init(ctrlp#line#cmd('buf', <q-args>))
|
||||||
|
|
||||||
com! -n=? -com=buffer CtrlPChange
|
com! -n=? -com=buffer CtrlPChange
|
||||||
\ cal ctrlp#init(ctrlp#changes#cmd(0, <q-args>))
|
\ cal ctrlp#init(ctrlp#changes#cmd('fil', <q-args>))
|
||||||
|
|
||||||
com! -bar CtrlPChangeAll cal ctrlp#init(ctrlp#changes#cmd(1))
|
com! -bar CtrlPChangeAll cal ctrlp#init(ctrlp#changes#cmd(1))
|
||||||
com! -bar CtrlPMixed cal ctrlp#init(ctrlp#mixed#id())
|
com! -bar CtrlPMixed cal ctrlp#init(ctrlp#mixed#id())
|
||||||
|
|
|
@ -30,16 +30,17 @@
|
||||||
4.4. [Are there any local checkers for HTML5 that I can use with syntastic?](#faqhtml5)
|
4.4. [Are there any local checkers for HTML5 that I can use with syntastic?](#faqhtml5)
|
||||||
4.5. [The `perl` checker has stopped working...](#faqperl)
|
4.5. [The `perl` checker has stopped working...](#faqperl)
|
||||||
4.6. [What happened to the `rustc` checker?](#faqrust)
|
4.6. [What happened to the `rustc` checker?](#faqrust)
|
||||||
4.7. [What happened to the `xcrun` checker?](#faqxcrun)
|
4.7. [What happened to the `tsc` checker?](#faqtsc)
|
||||||
4.8. [I run a checker and the location list is not updated...](#faqloclist)
|
4.8. [What happened to the `xcrun` checker?](#faqxcrun)
|
||||||
4.8. [I run`:lopen` or `:lwindow` and the error window is empty...](#faqloclist)
|
4.9. [I run a checker and the location list is not updated...](#faqloclist)
|
||||||
4.9. [How can I pass additional arguments to a checker?](#faqargs)
|
4.9. [I run`:lopen` or `:lwindow` and the error window is empty...](#faqloclist)
|
||||||
4.10. [Syntastic supports several checkers for my filetype - how do I tell which one(s) to use?](#faqcheckers)
|
4.10. [How can I pass additional arguments to a checker?](#faqargs)
|
||||||
4.11. [What is the difference between syntax checkers and style checkers?](#faqstyle)
|
4.11. [Syntastic supports several checkers for my filetype - how do I tell which one(s) to use?](#faqcheckers)
|
||||||
4.12. [I have enabled multiple checkers for the current filetype. How can I display all errors from all checkers together?](#faqaggregate)
|
4.12. [What is the difference between syntax checkers and style checkers?](#faqstyle)
|
||||||
4.13. [How can I jump between the different errors without using the location list at the bottom of the window?](#faqlnext)
|
4.13. [I have enabled multiple checkers for the current filetype. How can I display all errors from all checkers together?](#faqaggregate)
|
||||||
4.14. [My favourite checker needs to load a configuration file from the project's root rather than the current directory...](#faqconfig)
|
4.14. [How can I jump between the different errors without using the location list at the bottom of the window?](#faqlnext)
|
||||||
4.15. [The error window is closed automatically when I :quit the current buffer but not when I :bdelete it?](#faqbdelete)
|
4.15. [My favourite checker needs to load a configuration file from the project's root rather than the current directory...](#faqconfig)
|
||||||
|
4.16. [The error window is closed automatically when I :quit the current buffer but not when I :bdelete it?](#faqbdelete)
|
||||||
5. [Resources](#otherresources)
|
5. [Resources](#otherresources)
|
||||||
|
|
||||||
- - -
|
- - -
|
||||||
|
@ -54,26 +55,26 @@ can be done on demand, or automatically as files are saved. If syntax errors
|
||||||
are detected, the user is notified and is happy because they didn't have to
|
are detected, the user is notified and is happy because they didn't have to
|
||||||
compile their code or execute their script to find them.
|
compile their code or execute their script to find them.
|
||||||
|
|
||||||
At the time of this writing, syntastic has checking plugins for ActionScript,
|
At the time of this writing, syntastic has checking plugins for ACPI
|
||||||
Ada, Ansible configurations, API Blueprint, AppleScript, AsciiDoc, Assembly
|
Source Language, ActionScript, Ada, Ansible configurations, API Blueprint,
|
||||||
languages, BEMHTML, Bro, Bourne shell, C, C++, C#, Cabal, Chef, CoffeeScript,
|
AppleScript, AsciiDoc, Assembly languages, BEMHTML, Bro, Bourne shell, C,
|
||||||
Coco, Coq, CSS, Cucumber, CUDA, D, Dart, DocBook, Dockerfile, Dust, Elixir,
|
C++, C#, Cabal, Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart,
|
||||||
Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml, Haskell, Haxe,
|
DocBook, Dockerfile, Dust, Elixir, Erlang, eRuby, Fortran, Gentoo metadata,
|
||||||
Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex, Limbo, LISP,
|
GLSL, Go, Haml, Haskell, Haxe, Handlebars, HSS, HTML, Java, JavaScript, JSON,
|
||||||
LLVM intermediate language, Lua, Markdown, MATLAB, Mercury, NASM, Nix,
|
JSX, LESS, Lex, Limbo, LISP, LLVM intermediate language, Lua, Markdown,
|
||||||
Objective-C, Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Portable
|
MATLAB, Mercury, NASM, Nix, Objective-C, Objective-C++, OCaml, Perl, Perl
|
||||||
Object, OS X and iOS property lists, Pug (formerly Jade), Puppet, Python,
|
POD, PHP, gettext Portable Object, OS X and iOS property lists, Pug (formerly
|
||||||
QML, R, Racket, RDF TriG, RDF Turtle, Relax NG, reStructuredText, RPM spec,
|
Jade), Puppet, Python, QML, R, Racket, RDF TriG, RDF Turtle, Relax NG,
|
||||||
Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, SQL, Stylus, Tcl, TeX, Texinfo,
|
reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, SQL,
|
||||||
Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, XQuery,
|
Stylus, Tcl, TeX, Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml,
|
||||||
YACC, YAML, YANG data models, z80, Zope page templates, and Zsh. See the
|
XML, XSLT, XQuery, YACC, YAML, YANG data models, z80, Zope page templates, and
|
||||||
[manual][checkers] for details about the corresponding supported checkers
|
Zsh. See the [manual][checkers] for details about the corresponding supported
|
||||||
(`:help syntastic-checkers` in Vim).
|
checkers (`:help syntastic-checkers` in Vim).
|
||||||
|
|
||||||
A number of third-party Vim plugins also provide checkers for syntastic,
|
A number of third-party Vim plugins also provide checkers for syntastic, for
|
||||||
for example: [merlin][merlin], [omnisharp-vim][omnisharp], [rust.vim][rust],
|
example: [merlin][merlin], [omnisharp-vim][omnisharp], [rust.vim][rust],
|
||||||
[syntastic-extras][myint], [syntastic-more][roktas], [vim-crystal][crystal],
|
[syntastic-extras][myint], [syntastic-more][roktas], [tsuquyomi][tsuquyomi],
|
||||||
[vim-eastwood][eastwood], and [vim-swift][swift].
|
[vim-crystal][crystal], [vim-eastwood][eastwood], and [vim-swift][swift].
|
||||||
|
|
||||||
Below is a screenshot showing the methods that Syntastic uses to display syntax
|
Below is a screenshot showing the methods that Syntastic uses to display syntax
|
||||||
errors. Note that, in practise, you will only have a subset of these methods
|
errors. Note that, in practise, you will only have a subset of these methods
|
||||||
|
@ -303,9 +304,17 @@ __4.6. Q. What happened to the `rustc` checker?__
|
||||||
A. It is now part of the [rust.vim][rust] plugin. If you install this plugin the
|
A. It is now part of the [rust.vim][rust] plugin. If you install this plugin the
|
||||||
checker should be picked up automatically by syntastic.
|
checker should be picked up automatically by syntastic.
|
||||||
|
|
||||||
|
<a name="faqtsc"></a>
|
||||||
|
|
||||||
|
__4.7. Q. What happened to the `tsc` checker?__
|
||||||
|
|
||||||
|
A. It didn't meet people's expectations and it has been removed. Please
|
||||||
|
consider using the external checker [tsuquyomi][tsuquyomi] instead. If you
|
||||||
|
install this plugin the checker should be picked up automatically by syntastic.
|
||||||
|
|
||||||
<a name="faqxcrun"></a>
|
<a name="faqxcrun"></a>
|
||||||
|
|
||||||
__4.7. Q. What happened to the `xcrun` checker?__
|
__4.8. Q. What happened to the `xcrun` checker?__
|
||||||
|
|
||||||
A. The `xcrun` checker used to have a security problem and it has been removed.
|
A. The `xcrun` checker used to have a security problem and it has been removed.
|
||||||
A better checker for __Swift__ is part of the [vim-swift][swift] plugin. If you
|
A better checker for __Swift__ is part of the [vim-swift][swift] plugin. If you
|
||||||
|
@ -313,8 +322,8 @@ install this plugin the checker should be picked up automatically by syntastic.
|
||||||
|
|
||||||
<a name="faqloclist"></a>
|
<a name="faqloclist"></a>
|
||||||
|
|
||||||
__4.8. Q. I run a checker and the location list is not updated...__
|
__4.9. Q. I run a checker and the location list is not updated...__
|
||||||
__4.8. Q. I run`:lopen` or `:lwindow` and the error window is empty...__
|
__4.9. Q. I run`:lopen` or `:lwindow` and the error window is empty...__
|
||||||
|
|
||||||
A. By default the location list is changed only when you run the `:Errors`
|
A. By default the location list is changed only when you run the `:Errors`
|
||||||
command, in order to minimise conflicts with other plugins. If you want the
|
command, in order to minimise conflicts with other plugins. If you want the
|
||||||
|
@ -326,7 +335,7 @@ let g:syntastic_always_populate_loc_list = 1
|
||||||
|
|
||||||
<a name="faqargs"></a>
|
<a name="faqargs"></a>
|
||||||
|
|
||||||
__4.9. Q. How can I pass additional arguments to a checker?__
|
__4.10. Q. How can I pass additional arguments to a checker?__
|
||||||
|
|
||||||
A. Almost all syntax checkers use the `makeprgBuild()` function. Those checkers
|
A. Almost all syntax checkers use the `makeprgBuild()` function. Those checkers
|
||||||
that do can be configured using global variables. The general form of the
|
that do can be configured using global variables. The general form of the
|
||||||
|
@ -342,7 +351,7 @@ See `:help syntastic-checker-options` for more information.
|
||||||
|
|
||||||
<a name="faqcheckers"></a>
|
<a name="faqcheckers"></a>
|
||||||
|
|
||||||
__4.10. Q. Syntastic supports several checkers for my filetype - how do I tell it
|
__4.11. Q. Syntastic supports several checkers for my filetype - how do I tell it
|
||||||
which one(s) to use?__
|
which one(s) to use?__
|
||||||
|
|
||||||
A. Stick a line like this in your `vimrc`:
|
A. Stick a line like this in your `vimrc`:
|
||||||
|
@ -383,7 +392,7 @@ filetype of the current file is `php`).
|
||||||
|
|
||||||
<a name="faqstyle"></a>
|
<a name="faqstyle"></a>
|
||||||
|
|
||||||
__4.11. Q. What is the difference between syntax checkers and style checkers?__
|
__4.12. Q. What is the difference between syntax checkers and style checkers?__
|
||||||
|
|
||||||
A. The errors and warnings they produce are highlighted differently and can
|
A. The errors and warnings they produce are highlighted differently and can
|
||||||
be filtered by different rules, but otherwise the distinction is pretty much
|
be filtered by different rules, but otherwise the distinction is pretty much
|
||||||
|
@ -413,7 +422,7 @@ See `:help syntastic_quiet_messages` for details.
|
||||||
|
|
||||||
<a name="faqaggregate"></a>
|
<a name="faqaggregate"></a>
|
||||||
|
|
||||||
__4.12. Q. I have enabled multiple checkers for the current filetype. How can I
|
__4.13. Q. I have enabled multiple checkers for the current filetype. How can I
|
||||||
display all errors from all checkers together?__
|
display all errors from all checkers together?__
|
||||||
|
|
||||||
A. Set `g:syntastic_aggregate_errors` to 1 in your `vimrc`:
|
A. Set `g:syntastic_aggregate_errors` to 1 in your `vimrc`:
|
||||||
|
@ -425,7 +434,7 @@ See `:help syntastic-aggregating-errors` for more details.
|
||||||
|
|
||||||
<a name="faqlnext"></a>
|
<a name="faqlnext"></a>
|
||||||
|
|
||||||
__4.13. Q. How can I jump between the different errors without using the location
|
__4.14. Q. How can I jump between the different errors without using the location
|
||||||
list at the bottom of the window?__
|
list at the bottom of the window?__
|
||||||
|
|
||||||
A. Vim provides several built-in commands for this. See `:help :lnext` and
|
A. Vim provides several built-in commands for this. See `:help :lnext` and
|
||||||
|
@ -437,7 +446,7 @@ mappings (among other things).
|
||||||
|
|
||||||
<a name="faqconfig"></a>
|
<a name="faqconfig"></a>
|
||||||
|
|
||||||
__4.14. My favourite checker needs to load a configuration file from the
|
__4.15. My favourite checker needs to load a configuration file from the
|
||||||
project's root rather than the current directory...__
|
project's root rather than the current directory...__
|
||||||
|
|
||||||
A. You can set up an `autocmd` to search for the configuration file in the
|
A. You can set up an `autocmd` to search for the configuration file in the
|
||||||
|
@ -456,7 +465,7 @@ autocmd FileType javascript let b:syntastic_javascript_jscs_args =
|
||||||
```
|
```
|
||||||
<a name="faqbdelete"></a>
|
<a name="faqbdelete"></a>
|
||||||
|
|
||||||
__4.15. Q. The error window is closed automatically when I :quit the current buffer
|
__4.16. Q. The error window is closed automatically when I :quit the current buffer
|
||||||
but not when I :bdelete it?__
|
but not when I :bdelete it?__
|
||||||
|
|
||||||
A. There is no safe way to handle that situation automatically, but you can
|
A. There is no safe way to handle that situation automatically, but you can
|
||||||
|
@ -510,6 +519,7 @@ a look at [ghcmod-vim][ghcmod], [jedi-vim][jedi], [python-mode][python_mode], [v
|
||||||
[swift]: https://github.com/kballard/vim-swift
|
[swift]: https://github.com/kballard/vim-swift
|
||||||
[tidy]: http://www.htacg.org/tidy-html5/
|
[tidy]: http://www.htacg.org/tidy-html5/
|
||||||
[tidy_old]: http://tidy.sourceforge.net/
|
[tidy_old]: http://tidy.sourceforge.net/
|
||||||
|
[tsuquyomi]: https://github.com/Quramy/tsuquyomi/
|
||||||
[unimpaired]: https://github.com/tpope/vim-unimpaired
|
[unimpaired]: https://github.com/tpope/vim-unimpaired
|
||||||
[vam]: https://github.com/MarcWeber/vim-addon-manager
|
[vam]: https://github.com/MarcWeber/vim-addon-manager
|
||||||
[vim]: http://www.vim.org/
|
[vim]: http://www.vim.org/
|
||||||
|
|
|
@ -6,6 +6,7 @@ SYNTAX CHECKERS BY LANGUAGE *syntastic-checkers-lang*
|
||||||
|
|
||||||
|syntastic| comes with checkers for the following languages:
|
|syntastic| comes with checkers for the following languages:
|
||||||
|
|
||||||
|
ACPI Source Language.....................|syntastic-checkers-asl|
|
||||||
ActionScript.............................|syntastic-checkers-actionscript|
|
ActionScript.............................|syntastic-checkers-actionscript|
|
||||||
Ada......................................|syntastic-checkers-ada|
|
Ada......................................|syntastic-checkers-ada|
|
||||||
Ansible..................................|syntastic-checkers-ansible|
|
Ansible..................................|syntastic-checkers-ansible|
|
||||||
|
@ -132,6 +133,37 @@ SYNTAX CHECKERS BY LANGUAGE *syntastic-checkers-lang*
|
||||||
|
|
||||||
Third-party checkers are available for additional languages.
|
Third-party checkers are available for additional languages.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SYNTAX CHECKERS FOR ACPI SOURCE LANGUAGE *syntastic-checkers-asl*
|
||||||
|
|
||||||
|
The following checkers are available for the ACPI Source Language (filetype
|
||||||
|
"asl"):
|
||||||
|
|
||||||
|
1. iasl.....................|syntastic-asl-iasl|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
1. iasl *syntastic-asl-iasl*
|
||||||
|
|
||||||
|
Name: iasl
|
||||||
|
Maintainer: Peter Wu <peter@lekensteyn.nl>
|
||||||
|
|
||||||
|
"iasl" is a compiler/decompiler for ACPI Source Language (ASL) and ACPI
|
||||||
|
Machine Language (AML). See the project's page for details:
|
||||||
|
|
||||||
|
https://acpica.org/
|
||||||
|
|
||||||
|
Checker options~
|
||||||
|
|
||||||
|
This checker is initialised using the "makeprgBuild()" function and thus it
|
||||||
|
accepts the standard options described at |syntastic-config-makeprg|.
|
||||||
|
|
||||||
|
Note~
|
||||||
|
|
||||||
|
You probably also need a plugin to set |filetype| for ASL files, such as
|
||||||
|
"vim-acpi-asl":
|
||||||
|
|
||||||
|
https://github.com/martinlroth/vim-acpi-asl
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
SYNTAX CHECKERS FOR ACTIONSCRIPT *syntastic-checkers-actionscript*
|
SYNTAX CHECKERS FOR ACTIONSCRIPT *syntastic-checkers-actionscript*
|
||||||
|
|
||||||
|
@ -344,7 +376,7 @@ accepts the standard options described at |syntastic-config-makeprg|.
|
||||||
==============================================================================
|
==============================================================================
|
||||||
SYNTAX CHECKERS FOR ASSEMBLY LANGUAGES *syntastic-checkers-asm*
|
SYNTAX CHECKERS FOR ASSEMBLY LANGUAGES *syntastic-checkers-asm*
|
||||||
|
|
||||||
The following checkers are available for asembly languages (filetype "asm"):
|
The following checkers are available for assembly languages (filetype "asm"):
|
||||||
|
|
||||||
1. GCC......................|syntastic-asm-gcc|
|
1. GCC......................|syntastic-asm-gcc|
|
||||||
|
|
||||||
|
@ -432,7 +464,7 @@ The following checkers are available for BEMHTML (filetype "bemhtml"):
|
||||||
Name: bemhtmllint
|
Name: bemhtmllint
|
||||||
Maintainer: Sergej Tatarincev
|
Maintainer: Sergej Tatarincev
|
||||||
|
|
||||||
BEMHTML is a template engine intended for using with BEM methodology
|
BEMHTML is a template engine intended for using with the BEM methodology
|
||||||
(http://bem.info/method/). See the project's page at GitHub for details:
|
(http://bem.info/method/). See the project's page at GitHub for details:
|
||||||
|
|
||||||
https://github.com/SevInf/bemhtml-lint
|
https://github.com/SevInf/bemhtml-lint
|
||||||
|
@ -492,9 +524,9 @@ Checker options~
|
||||||
This checker is initialised using the "makeprgBuild()" function and thus it
|
This checker is initialised using the "makeprgBuild()" function and thus it
|
||||||
accepts the standard options described at |syntastic-config-makeprg|.
|
accepts the standard options described at |syntastic-config-makeprg|.
|
||||||
|
|
||||||
Aditionally:
|
Additionally:
|
||||||
|
|
||||||
*g:syntastic_avrgcc_config_file*
|
*'g:syntastic_avrgcc_config_file'*
|
||||||
Type: string
|
Type: string
|
||||||
Default: ".syntastic_avrgcc_config"
|
Default: ".syntastic_avrgcc_config"
|
||||||
File containing compilation flags (such as defines or include directories),
|
File containing compilation flags (such as defines or include directories),
|
||||||
|
@ -895,17 +927,39 @@ SYNTAX CHECKERS FOR C++ *syntastic-checkers-cpp*
|
||||||
|
|
||||||
The following checkers are available for C++ (filetype "cpp"):
|
The following checkers are available for C++ (filetype "cpp"):
|
||||||
|
|
||||||
1. ClangCheck...............|syntastic-cpp-clang_check|
|
1. AVR-GCC..................|syntastic-cpp-avrgcc|
|
||||||
2. Clang-Tidy...............|syntastic-cpp-clang_tidy|
|
2. ClangCheck...............|syntastic-cpp-clang_check|
|
||||||
3. Cppcheck.................|syntastic-cpp-cppcheck|
|
3. Clang-Tidy...............|syntastic-cpp-clang_tidy|
|
||||||
4. Cpplint..................|syntastic-cpp-cpplint|
|
4. Cppcheck.................|syntastic-cpp-cppcheck|
|
||||||
5. GCC......................|syntastic-cpp-gcc|
|
5. Cpplint..................|syntastic-cpp-cpplint|
|
||||||
6. OClint...................|syntastic-cpp-oclint|
|
6. GCC......................|syntastic-cpp-gcc|
|
||||||
7. PC-Lint..................|syntastic-cpp-pc_lint|
|
7. OClint...................|syntastic-cpp-oclint|
|
||||||
8. Vera++...................|syntastic-cpp-verapp|
|
8. PC-Lint..................|syntastic-cpp-pc_lint|
|
||||||
|
9. Vera++...................|syntastic-cpp-verapp|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
1. ClangCheck *syntastic-cpp-clang_check*
|
1. AVR-GCC *syntastic-cpp-avrgcc*
|
||||||
|
|
||||||
|
Name: avrgcc
|
||||||
|
Maintainer: Sławek Piotrowski <sentinel@atteo.com>
|
||||||
|
|
||||||
|
Checker options~
|
||||||
|
|
||||||
|
This checker is initialised using the "makeprgBuild()" function and thus it
|
||||||
|
accepts the standard options described at |syntastic-config-makeprg|.
|
||||||
|
|
||||||
|
Additionally:
|
||||||
|
|
||||||
|
'g:syntastic_avrgcc_config_file'
|
||||||
|
Type: string
|
||||||
|
Default: ".syntastic_avrgcc_config"
|
||||||
|
File containing compilation flags (such as defines or include directories),
|
||||||
|
one option per line (cf. |syntastic-config-files|).
|
||||||
|
|
||||||
|
See also: |syntastic-c-avrgcc|.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2. ClangCheck *syntastic-cpp-clang_check*
|
||||||
|
|
||||||
Name: clang_check
|
Name: clang_check
|
||||||
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
||||||
|
@ -948,7 +1002,7 @@ then ignored.
|
||||||
See also: |syntastic-c-clang_check|.
|
See also: |syntastic-c-clang_check|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
2. Clang-Tidy *syntastic-cpp-clang_tidy*
|
3. Clang-Tidy *syntastic-cpp-clang_tidy*
|
||||||
|
|
||||||
Name: clang_tidy
|
Name: clang_tidy
|
||||||
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
||||||
|
@ -999,7 +1053,7 @@ then ignored.
|
||||||
See also: |syntastic-c-clang_tidy|.
|
See also: |syntastic-c-clang_tidy|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
3. Cppcheck *syntastic-cpp-cppcheck*
|
4. Cppcheck *syntastic-cpp-cppcheck*
|
||||||
|
|
||||||
Name: cppcheck
|
Name: cppcheck
|
||||||
Maintainer: LCD 47 <lcd047@gmail.com>
|
Maintainer: LCD 47 <lcd047@gmail.com>
|
||||||
|
@ -1025,7 +1079,7 @@ one option per line (cf. |syntastic-config-files|).
|
||||||
See also: |syntastic-c-cppcheck|.
|
See also: |syntastic-c-cppcheck|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
4. Cpplint *syntastic-cpp-cpplint*
|
5. Cpplint *syntastic-cpp-cpplint*
|
||||||
|
|
||||||
Name: cpplint
|
Name: cpplint
|
||||||
Maintainer: LCD 47 <lcd047@gmail.com>
|
Maintainer: LCD 47 <lcd047@gmail.com>
|
||||||
|
@ -1061,7 +1115,7 @@ However, if your "cpplint" was installed with "pip", the script's name is
|
||||||
let g:syntastic_cpp_cpplint_exec = "cpplint"
|
let g:syntastic_cpp_cpplint_exec = "cpplint"
|
||||||
<
|
<
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
5. GCC *syntastic-cpp-gcc*
|
6. GCC *syntastic-cpp-gcc*
|
||||||
|
|
||||||
Name: gcc
|
Name: gcc
|
||||||
Maintainer: Gregor Uhlenheuer <kongo2002@gmail.com>
|
Maintainer: Gregor Uhlenheuer <kongo2002@gmail.com>
|
||||||
|
@ -1158,7 +1212,7 @@ executable.
|
||||||
See also: |syntastic-c-gcc|.
|
See also: |syntastic-c-gcc|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
6. OClint *syntastic-cpp-oclint*
|
7. OClint *syntastic-cpp-oclint*
|
||||||
|
|
||||||
Name: oclint
|
Name: oclint
|
||||||
Maintainer: "UnCO" Lin <undercooled@lavabit.com>
|
Maintainer: "UnCO" Lin <undercooled@lavabit.com>
|
||||||
|
@ -1198,7 +1252,7 @@ Config files pointed to by 'g:syntastic_oclint_config_file' are then ignored.
|
||||||
See also: |syntastic-c-oclint|.
|
See also: |syntastic-c-oclint|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
7. PC-Lint *syntastic-cpp-pc_lint*
|
8. PC-Lint *syntastic-cpp-pc_lint*
|
||||||
|
|
||||||
Name: pc_lint
|
Name: pc_lint
|
||||||
Maintainer: Steve Bragg <steve@empresseffects.com>
|
Maintainer: Steve Bragg <steve@empresseffects.com>
|
||||||
|
@ -1225,7 +1279,7 @@ current directory and in parent directories; first such file found is used.
|
||||||
See also: |syntastic-c-pc_lint|.
|
See also: |syntastic-c-pc_lint|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
8. Vera++ *syntastic-cpp-verapp*
|
9. Vera++ *syntastic-cpp-verapp*
|
||||||
|
|
||||||
Name: verapp
|
Name: verapp
|
||||||
Maintainer: Lucas Verney <phyks@phyks.me>
|
Maintainer: Lucas Verney <phyks@phyks.me>
|
||||||
|
@ -1450,7 +1504,7 @@ The following checkers are available for Coq (filetype "coq"):
|
||||||
Name: coqtop
|
Name: coqtop
|
||||||
Maintainer: Matvey Aksenov <matvey.aksenov@gmail.com>
|
Maintainer: Matvey Aksenov <matvey.aksenov@gmail.com>
|
||||||
|
|
||||||
"Coqtop" is the top level intrface for Coq. See the project's page for
|
"Coqtop" is the top level interface for Coq. See the project's page for
|
||||||
details:
|
details:
|
||||||
|
|
||||||
http://coq.inria.fr/
|
http://coq.inria.fr/
|
||||||
|
@ -1989,8 +2043,8 @@ Name: syntaxerl
|
||||||
Maintainer: locojay
|
Maintainer: locojay
|
||||||
|
|
||||||
"SyntaxErl" is a syntax checker for Erlang. It uses "rebar"
|
"SyntaxErl" is a syntax checker for Erlang. It uses "rebar"
|
||||||
(https://github.com/basho/rebar) to determine correct deps and libs paths.
|
(https://github.com/basho/rebar) to determine correct dependencies and library
|
||||||
See the project's page for more information:
|
paths. See the project's page for more information:
|
||||||
|
|
||||||
https://github.com/ten0s/syntaxerl
|
https://github.com/ten0s/syntaxerl
|
||||||
|
|
||||||
|
@ -2191,7 +2245,7 @@ If the magic comment does not exist, then the dictionary
|
||||||
'g:syntastic_glsl_extensions' is used to infer the appropriate profile from
|
'g:syntastic_glsl_extensions' is used to infer the appropriate profile from
|
||||||
the current file's extension. If this dictionary does not exist either, a
|
the current file's extension. If this dictionary does not exist either, a
|
||||||
default dictionary is used instead. Finally, if the current file's extension
|
default dictionary is used instead. Finally, if the current file's extension
|
||||||
cannott be found in these dictionaries, the checker assumes a vertex shader
|
cannot be found in these dictionaries, the checker assumes a vertex shader
|
||||||
profile.
|
profile.
|
||||||
|
|
||||||
*'g:syntastic_glsl_options'*
|
*'g:syntastic_glsl_options'*
|
||||||
|
@ -2879,7 +2933,7 @@ point |'g:syntastic_java_checkstyle_classpath'| to it:
|
||||||
http://iweb.dl.sourceforge.net/project/checkstyle/checkstyle/
|
http://iweb.dl.sourceforge.net/project/checkstyle/checkstyle/
|
||||||
http://checkstyle.sourceforge.net/cmdline.html#Usage_by_Classpath_update
|
http://checkstyle.sourceforge.net/cmdline.html#Usage_by_Classpath_update
|
||||||
|
|
||||||
Current builds at Maven Central do not package "checkstyles" with its
|
Current builds at Maven Central do not package "checkstyle" with its
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
||||||
http://search.maven.org/#search|gav|1|g%3A%22com.puppycrawl.tools%22%20AND%20a%3A%22checkstyle%22
|
http://search.maven.org/#search|gav|1|g%3A%22com.puppycrawl.tools%22%20AND%20a%3A%22checkstyle%22
|
||||||
|
@ -4637,7 +4691,7 @@ Please note that transforming a file like this affects line numbers and
|
||||||
column numbers, and syntastic has no way to make the necessary adjustments.
|
column numbers, and syntastic has no way to make the necessary adjustments.
|
||||||
Consequently, errors might appear on surprising lines if you enable this
|
Consequently, errors might appear on surprising lines if you enable this
|
||||||
feature and the transformed file has code on different lines than the raw
|
feature and the transformed file has code on different lines than the raw
|
||||||
file. For this reason the use of these transformations should be limitted
|
file. For this reason the use of these transformations should be limited
|
||||||
to codecs that preserve line numbers, such as the "spec" codec provided by
|
to codecs that preserve line numbers, such as the "spec" codec provided by
|
||||||
"NoseOfYeti":
|
"NoseOfYeti":
|
||||||
|
|
||||||
|
@ -4741,7 +4795,7 @@ setting of "lint.style".
|
||||||
Name: lintr
|
Name: lintr
|
||||||
Maintainer: Jim Hester <james.f.hester@gmail.com>
|
Maintainer: Jim Hester <james.f.hester@gmail.com>
|
||||||
|
|
||||||
"lintr" is a static code analysys tool for R files. See the project's page at
|
"lintr" is a static code analysis tool for R files. See the project's page at
|
||||||
GitHub for details:
|
GitHub for details:
|
||||||
|
|
||||||
https://github.com/jimhester/lintr
|
https://github.com/jimhester/lintr
|
||||||
|
@ -4794,7 +4848,7 @@ This is a checker for R files, using the R package "svTools":
|
||||||
http://cran.r-project.org/web/packages/svTools/
|
http://cran.r-project.org/web/packages/svTools/
|
||||||
|
|
||||||
In turn, this package delegates most of the work to the "checkUsage()"
|
In turn, this package delegates most of the work to the "checkUsage()"
|
||||||
function in the codetools package:
|
function in the "codetools" package:
|
||||||
|
|
||||||
http://cran.r-project.org/web/packages/codetools/
|
http://cran.r-project.org/web/packages/codetools/
|
||||||
|
|
||||||
|
@ -4851,7 +4905,7 @@ The following checkers are available for R Markdown (filetype "rmd"):
|
||||||
Name: lintr
|
Name: lintr
|
||||||
Maintainer: Jim Hester <james.f.hester@gmail.com>
|
Maintainer: Jim Hester <james.f.hester@gmail.com>
|
||||||
|
|
||||||
"lintr" is a static code analysys tool for R files. See the project's page at
|
"lintr" is a static code analysis tool for R files. See the project's page at
|
||||||
GitHub for details:
|
GitHub for details:
|
||||||
|
|
||||||
https://github.com/jimhester/lintr
|
https://github.com/jimhester/lintr
|
||||||
|
@ -5060,7 +5114,7 @@ directory, or if you want to override the autodetected paths, options
|
||||||
|'g:syntastic_rst_sphinx_source_dir'| and |'g:syntastic_rst_sphinx_config_dir'|
|
|'g:syntastic_rst_sphinx_source_dir'| and |'g:syntastic_rst_sphinx_config_dir'|
|
||||||
take precedence over the detected values.
|
take precedence over the detected values.
|
||||||
|
|
||||||
Please not also that the checker creates output files in a temporary directory
|
Please note also that the checker creates output files in a temporary directory
|
||||||
that is created upon the first run in the current session, and is removed when
|
that is created upon the first run in the current session, and is removed when
|
||||||
Vim exits. If you need to change the location of this directory you can do
|
Vim exits. If you need to change the location of this directory you can do
|
||||||
so by exporting the environment variables "TMPDIR" or "TMP" (on UNIX and Mac
|
so by exporting the environment variables "TMPDIR" or "TMP" (on UNIX and Mac
|
||||||
|
@ -5081,7 +5135,7 @@ The following checkers are available for Linux RPM packages (filetype "spec"):
|
||||||
Name: rpmlint
|
Name: rpmlint
|
||||||
Maintainer: LCD 47 <lcd047@gmail.com>
|
Maintainer: LCD 47 <lcd047@gmail.com>
|
||||||
|
|
||||||
"rpmlint" is a trool for checking Linux RPM packages. See the project's page
|
"rpmlint" is a tool for checking Linux RPM packages. See the project's page
|
||||||
for details:
|
for details:
|
||||||
|
|
||||||
http://sourceforge.net/projects/rpmlint/
|
http://sourceforge.net/projects/rpmlint/
|
||||||
|
@ -5165,7 +5219,7 @@ Name: macruby
|
||||||
Maintainer: Martin Grenfell <martin.grenfell@gmail.com>
|
Maintainer: Martin Grenfell <martin.grenfell@gmail.com>
|
||||||
|
|
||||||
"MacRuby" is an implementation of Ruby for Mac OS X. See the project's
|
"MacRuby" is an implementation of Ruby for Mac OS X. See the project's
|
||||||
pagefor details:
|
page for details:
|
||||||
|
|
||||||
http://www.macruby.org/
|
http://www.macruby.org/
|
||||||
|
|
||||||
|
@ -5864,7 +5918,7 @@ The following checkers are available for Texinfo (filetype "texinfo"):
|
||||||
Name: makeinfo
|
Name: makeinfo
|
||||||
Maintainer: LCD 47 <lcd047@gmail.com>
|
Maintainer: LCD 47 <lcd047@gmail.com>
|
||||||
|
|
||||||
"Makeinfo" is a convertor for Texinfo files. It is distributed together with
|
"Makeinfo" is a converter for Texinfo files. It is distributed together with
|
||||||
the GNU package "texinfo":
|
the GNU package "texinfo":
|
||||||
|
|
||||||
http://www.gnu.org/software/texinfo/
|
http://www.gnu.org/software/texinfo/
|
||||||
|
@ -6087,8 +6141,7 @@ SYNTAX CHECKERS FOR TYPESCRIPT *syntastic-checkers-typescript*
|
||||||
The following checkers are available for TypeScript (filetype "typescript"):
|
The following checkers are available for TypeScript (filetype "typescript"):
|
||||||
|
|
||||||
1. ESLint...................|syntastic-typescript-eslint|
|
1. ESLint...................|syntastic-typescript-eslint|
|
||||||
2. tsc......................|syntastic-typescript-tsc|
|
2. TSLint...................|syntastic-typescript-tslint|
|
||||||
3. TSLint...................|syntastic-typescript-tslint|
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
1. ESLint *syntastic-typescript-eslint*
|
1. ESLint *syntastic-typescript-eslint*
|
||||||
|
@ -6118,29 +6171,7 @@ as "typescript-vim":
|
||||||
See also: |syntastic-html-eslint|, |syntastic-javascript-eslint|.
|
See also: |syntastic-html-eslint|, |syntastic-javascript-eslint|.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
2. tsc *syntastic-typescript-tsc*
|
2. TSLint *syntastic-typescript-tslint*
|
||||||
|
|
||||||
Name: tsc
|
|
||||||
Maintainer: Bill Casarin <bill@casarin.ca>
|
|
||||||
|
|
||||||
"tsc" is a compiler for TypeScript. See the project's page for details:
|
|
||||||
|
|
||||||
http://www.typescriptlang.org/
|
|
||||||
|
|
||||||
Checker options~
|
|
||||||
|
|
||||||
This checker is initialised using the "makeprgBuild()" function and thus it
|
|
||||||
accepts the standard options described at |syntastic-config-makeprg|.
|
|
||||||
|
|
||||||
Note~
|
|
||||||
|
|
||||||
You probably also need a plugin to set |filetype| for TypeScript files, such
|
|
||||||
as "typescript-vim":
|
|
||||||
|
|
||||||
https://github.com/leafgarland/typescript-vim
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
3. TSLint *syntastic-typescript-tslint*
|
|
||||||
|
|
||||||
Name: tslint
|
Name: tslint
|
||||||
Maintainer: Seon-Wook Park <seon.wook@swook.net>
|
Maintainer: Seon-Wook Park <seon.wook@swook.net>
|
||||||
|
@ -6861,6 +6892,7 @@ syntastic-specific configuration files:
|
||||||
OpenCOBOL (|syntastic-cobol-cobc|)
|
OpenCOBOL (|syntastic-cobol-cobc|)
|
||||||
|
|
||||||
C++~
|
C++~
|
||||||
|
AVR-GCC (|syntastic-cpp-avrgcc|)
|
||||||
ClangCheck (|syntastic-cpp-clang_check|)
|
ClangCheck (|syntastic-cpp-clang_check|)
|
||||||
Clang-Tidy (|syntastic-cpp-clang_tidy|)
|
Clang-Tidy (|syntastic-cpp-clang_tidy|)
|
||||||
Cppcheck (|syntastic-cpp-cppcheck|)
|
Cppcheck (|syntastic-cpp-cppcheck|)
|
||||||
|
|
|
@ -19,7 +19,7 @@ if has('reltime')
|
||||||
lockvar! g:_SYNTASTIC_START
|
lockvar! g:_SYNTASTIC_START
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let g:_SYNTASTIC_VERSION = '3.7.0-162'
|
let g:_SYNTASTIC_VERSION = '3.7.0-177'
|
||||||
lockvar g:_SYNTASTIC_VERSION
|
lockvar g:_SYNTASTIC_VERSION
|
||||||
|
|
||||||
" Sanity checks {{{1
|
" Sanity checks {{{1
|
||||||
|
|
|
@ -12,6 +12,7 @@ let s:_DEFAULT_CHECKERS = {
|
||||||
\ 'apiblueprint': ['drafter'],
|
\ 'apiblueprint': ['drafter'],
|
||||||
\ 'applescript': ['osacompile'],
|
\ 'applescript': ['osacompile'],
|
||||||
\ 'asciidoc': ['asciidoc'],
|
\ 'asciidoc': ['asciidoc'],
|
||||||
|
\ 'asl': ['iasl'],
|
||||||
\ 'asm': ['gcc'],
|
\ 'asm': ['gcc'],
|
||||||
\ 'bro': ['bro'],
|
\ 'bro': ['bro'],
|
||||||
\ 'bemhtml': ['bemhtmllint'],
|
\ 'bemhtml': ['bemhtmllint'],
|
||||||
|
@ -93,7 +94,7 @@ let s:_DEFAULT_CHECKERS = {
|
||||||
\ 'trig': ['rapper'],
|
\ 'trig': ['rapper'],
|
||||||
\ 'turtle': ['rapper'],
|
\ 'turtle': ['rapper'],
|
||||||
\ 'twig': ['twiglint'],
|
\ 'twig': ['twiglint'],
|
||||||
\ 'typescript': ['tsc'],
|
\ 'typescript': [],
|
||||||
\ 'vala': ['valac'],
|
\ 'vala': ['valac'],
|
||||||
\ 'verilog': ['verilator'],
|
\ 'verilog': ['verilator'],
|
||||||
\ 'vhdl': ['ghdl'],
|
\ 'vhdl': ['ghdl'],
|
||||||
|
|
59
sources_non_forked/syntastic/syntax_checkers/asl/iasl.vim
Normal file
59
sources_non_forked/syntastic/syntax_checkers/asl/iasl.vim
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
"============================================================================
|
||||||
|
"File: iasl.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic using iasl
|
||||||
|
"Maintainer: Peter Wu <peter@lekensteyn.nl>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
|
if exists('g:loaded_syntastic_asl_iasl_checker')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_syntastic_asl_iasl_checker = 1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! SyntaxCheckers_asl_iasl_GetLocList() dict
|
||||||
|
let tmpdir = syntastic#util#tmpdir() . syntastic#util#Slash()
|
||||||
|
let makeprg = self.makeprgBuild({
|
||||||
|
\ 'args': '-vi',
|
||||||
|
\ 'args_after': ['-p', tmpdir] })
|
||||||
|
|
||||||
|
let errorformat =
|
||||||
|
\ '%f(%l) : %trror %n - %m,' .
|
||||||
|
\ '%f(%l) : %tarning %n - %m,' .
|
||||||
|
\ '%f(%l) : %temark %n - %m,' .
|
||||||
|
\ '%f(%l) : %tptimize %n - %m,' .
|
||||||
|
\ '%f(%l) : %m'
|
||||||
|
|
||||||
|
let loclist = SyntasticMake({
|
||||||
|
\ 'makeprg': makeprg,
|
||||||
|
\ 'errorformat': errorformat,
|
||||||
|
\ 'returns': [0, 255] })
|
||||||
|
|
||||||
|
for e in loclist
|
||||||
|
if e['type'] =~? 'r'
|
||||||
|
let e['type'] = 'W'
|
||||||
|
elseif e['type'] =~? 'o'
|
||||||
|
let e['type'] = 'W'
|
||||||
|
let e['subtype'] = 'Style'
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call syntastic#util#rmrf(tmpdir)
|
||||||
|
|
||||||
|
return loclist
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
|
\ 'filetype': 'asl',
|
||||||
|
\ 'name': 'iasl'})
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim: set sw=4 sts=4 et fdm=marker:
|
|
@ -1,6 +1,6 @@
|
||||||
"============================================================================
|
"============================================================================
|
||||||
"File: avrgcc.vim
|
"File: avrgcc.vim
|
||||||
"Description: Syntax checking plugin for syntastic.vim
|
"Description: Syntax checking plugin for syntastic
|
||||||
"Maintainer: Karel <karelishere at gmail dot com>
|
"Maintainer: Karel <karelishere at gmail dot com>
|
||||||
"License: This program is free software. It comes without any warranty,
|
"License: This program is free software. It comes without any warranty,
|
||||||
" to the extent permitted by applicable law. You can redistribute
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
@ -22,10 +22,12 @@ endif
|
||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
let s:opt_x = { 'c': 'c', 'cpp': 'c++' }
|
||||||
|
|
||||||
function! SyntaxCheckers_c_avrgcc_GetLocList() dict
|
function! SyntaxCheckers_c_avrgcc_GetLocList() dict
|
||||||
let makeprg = self.makeprgBuild({
|
let makeprg = self.makeprgBuild({
|
||||||
\ 'args_before': syntastic#c#ReadConfig(g:syntastic_avrgcc_config_file),
|
\ 'args_before': syntastic#c#ReadConfig(g:syntastic_avrgcc_config_file),
|
||||||
\ 'args_after': '-x c -fsyntax-only' })
|
\ 'args_after': '-x ' . get(s:opt_x, self.getFiletype(), '') . ' -fsyntax-only' })
|
||||||
|
|
||||||
let errorformat =
|
let errorformat =
|
||||||
\ '%-G%f:%s:,' .
|
\ '%-G%f:%s:,' .
|
||||||
|
|
24
sources_non_forked/syntastic/syntax_checkers/cpp/avrgcc.vim
Normal file
24
sources_non_forked/syntastic/syntax_checkers/cpp/avrgcc.vim
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
"============================================================================
|
||||||
|
"File: avrgcc.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic
|
||||||
|
"Maintainer: Sławek Piotrowski <sentinel at atteo dot com>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
|
if exists('g:loaded_syntastic_cpp_avrgcc_checker')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_syntastic_cpp_avrgcc_checker = 1
|
||||||
|
|
||||||
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
|
\ 'filetype': 'cpp',
|
||||||
|
\ 'name': 'avrgcc',
|
||||||
|
\ 'exec': 'avr-g++',
|
||||||
|
\ 'redirect': 'c/avrgcc'})
|
||||||
|
|
||||||
|
" vim: set sw=4 sts=4 et fdm=marker:
|
|
@ -1,66 +0,0 @@
|
||||||
"============================================================================
|
|
||||||
"File: tsc.vim
|
|
||||||
"Description: TypeScript syntax checker
|
|
||||||
"Maintainer: Bill Casarin <bill@casarin.ca>
|
|
||||||
"
|
|
||||||
"============================================================================
|
|
||||||
|
|
||||||
if exists('g:loaded_syntastic_typescript_tsc_checker')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let g:loaded_syntastic_typescript_tsc_checker = 1
|
|
||||||
|
|
||||||
if !exists('g:syntastic_typescript_tsc_sort')
|
|
||||||
let g:syntastic_typescript_tsc_sort = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:save_cpo = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
function! SyntaxCheckers_typescript_tsc_IsAvailable() dict
|
|
||||||
if !executable(self.getExec())
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
let version_output = split(syntastic#util#system(self.getExecEscaped() . ' --version'), '\n', 1)
|
|
||||||
let ver = filter(copy(version_output), 'v:val =~# ''\m\<Version ''')
|
|
||||||
let parsed_ver = len(ver) ? syntastic#util#parseVersion(ver[0], '\v<Version \zs\d+(\.\d+)\ze') : []
|
|
||||||
|
|
||||||
if len(parsed_ver)
|
|
||||||
call self.setVersion(parsed_ver)
|
|
||||||
let s:tsc_new = syntastic#util#versionIsAtLeast(parsed_ver, [1, 5])
|
|
||||||
else
|
|
||||||
call syntastic#log#ndebug(g:_SYNTASTIC_DEBUG_LOCLIST, 'checker output:', version_output)
|
|
||||||
call syntastic#log#error("checker typescript/tsc: can't parse version string (abnormal termination?)")
|
|
||||||
let s:tsc_new = -1
|
|
||||||
endif
|
|
||||||
|
|
||||||
return s:tsc_new >= 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SyntaxCheckers_typescript_tsc_GetLocList() dict
|
|
||||||
let makeprg = self.makeprgBuild({
|
|
||||||
\ 'args': '--module commonjs',
|
|
||||||
\ 'args_after': (s:tsc_new ? '--noEmit' : '--out ' . syntastic#util#DevNull()) })
|
|
||||||
|
|
||||||
let errorformat =
|
|
||||||
\ '%E%f %#(%l\,%c): error %m,' .
|
|
||||||
\ '%E%f %#(%l\,%c): %m,' .
|
|
||||||
\ '%Eerror %m,' .
|
|
||||||
\ '%C%\s%\+%m'
|
|
||||||
|
|
||||||
return SyntasticMake({
|
|
||||||
\ 'makeprg': makeprg,
|
|
||||||
\ 'errorformat': errorformat,
|
|
||||||
\ 'postprocess': ['guards'],
|
|
||||||
\ 'defaults': {'bufnr': bufnr('')} })
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
|
||||||
\ 'filetype': 'typescript',
|
|
||||||
\ 'name': 'tsc'})
|
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
|
||||||
unlet s:save_cpo
|
|
||||||
|
|
||||||
" vim: set sw=4 sts=4 et fdm=marker:
|
|
|
@ -41,7 +41,7 @@ the `<F7>` key if so. For example, to remap it to `<F3>` instead, use:
|
||||||
|
|
||||||
For flake8 configuration options please consult the following page:
|
For flake8 configuration options please consult the following page:
|
||||||
|
|
||||||
https://flake8.readthedocs.org/en/latest/config.html
|
http://flake8.pycqa.org/en/latest/user/configuration.html
|
||||||
|
|
||||||
To customize the location of your flake8 binary, set `g:flake8_cmd`:
|
To customize the location of your flake8 binary, set `g:flake8_cmd`:
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,45 @@
|
||||||
## 1.8 (unplanned)
|
## Unplanned
|
||||||
|
|
||||||
|
IMPROVEMENTS:
|
||||||
|
|
||||||
|
* **guru** uses now the `-modified` flag, which allows us use guru on modified
|
||||||
|
buffers as well. This affects all commands where `guru` is used. Such as
|
||||||
|
`:GoDef`, `:GoReferrers`, etc.. [gh-944]
|
||||||
|
* Cleanup and improve documentation [gh-987]
|
||||||
|
|
||||||
|
BUG FIXES:
|
||||||
|
|
||||||
|
* Fix system calls on Windows [gh-988]
|
||||||
|
|
||||||
|
|
||||||
|
## 1.8 (July 31, 2016)
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
|
* New **`:GoAddTags`** command that adds field tags for the fields of a struct automatically based on the field names. Checkout the demo to see it in action: https://twitter.com/fatih/status/759822857773907968 [gh-971]
|
||||||
* If you open a new buffer with a Go filename it get automatically populated based on the directory. If there are no Go files a simple main package is created, otherwise the file will include the package declaration line based on the package in the current directory. Checkout the demo to see it in action: https://twitter.com/fatih/status/748333086643994624. This is enabled by default. Can be disabled with `let g:go_template_autocreate = 0`. You can use your own template with `let g:go_template_file = "foo.go"` and putting the file under the `templates/` folder. [gh-918]
|
* The snippet expansion `json` is now much more smarter. It pre populates the placeholder according to the first word and it also applies `snake_case` or `camelCase` conversion. Together with `:GoAddTags` it gives `vim-go` users flexible ways of populating a field tag. Checkout the demo to see it in action: https://twitter.com/fatih/status/754477622042689536 [gh-927]
|
||||||
* The snippet expansion `json` is now much more smarter. It pre populates the placeholder according to the first word and it also applies `snake_case` or `camelCase` conversion. Checkout the demo to see it in action: https://github.com/fatih/vim-go/pull/927 [gh-927]
|
* New **`:GoSameIds`** command. When called highlights all same identifiers in the current file. Can be also enabled to highlight identifiers automatically (with `:GoSameIdsAutoToggle` or `g:go_auto_sameids`). Checkout the demo to see it in action: https://twitter.com/fatih/status/753673709278339072. [gh-936]
|
||||||
* **`:GoSameIds`** support. When called highlights all same identifiers in the current file. Can be also enabled to highlight identifiers automatically. Checkout the demo to see it in action: https://twitter.com/fatih/status/753673709278339072. [gh-936]
|
* New **`:GoWhicherrs`** command. It shows all possible values of the selected error variable. [gh-948]
|
||||||
* Add new `errp` snippet to expand an `if err != nil { panic() }` clause [gh-926]
|
* Add new `errp` snippet to expand an `if err != nil { panic() }` clause [gh-926]
|
||||||
|
* If you open a new buffer with a Go filename it get automatically populated based on the directory. If there are no Go files a simple main package is created, otherwise the file will include the package declaration line based on the package in the current directory. Checkout the demo to see it in action: https://twitter.com/fatih/status/748333086643994624. This is enabled by default. Can be disabled with `let g:go_template_autocreate = 0`. You can use your own template with `let g:go_template_file = "foo.go"` and putting the file under the `templates/` folder. [gh-918]
|
||||||
|
* Added new toggle commands to enable/disable feature that run for your
|
||||||
|
automatic. For example if you have `let g:go_auto_type_info = 1` enabled, you
|
||||||
|
can now easily enable/disable it on the fly. Support added with the following
|
||||||
|
commands: `:GoAutoTypeInfoToggle`, `:GoFmtAutoSaveToggle`,
|
||||||
|
`:GoAsmFmtAutoSaveToggle`, `:GoMetalinterAutoSaveToggle`,
|
||||||
|
`:GoTemplateAutoCreateToggle` [gh-945]
|
||||||
|
|
||||||
|
|
||||||
IMPROVEMENTS:
|
IMPROVEMENTS:
|
||||||
* `:GoDoc` accepts arguments now which are passed directly to `godoc`. So usages like `:GoDoc flag` works again (it was changed in previous versions [gh-894]
|
* `:GoDoc` accepts arguments now which are passed directly to `godoc`. So usages like `:GoDoc flag` works again (it was changed in previous versions [gh-894]
|
||||||
* `:GoDef` works now for modified files as well [gh-910]
|
* `:GoDef` works now for modified files as well [gh-910]
|
||||||
|
* Internal: pass filename to the `--srcdir` flag to enable upcoming `goimports` features [gh-957]
|
||||||
* Internal: fix indentations on all files to **2-spaces/no tabs**. This is now the default vim-go style across all VimL files [gh-915]
|
* Internal: fix indentations on all files to **2-spaces/no tabs**. This is now the default vim-go style across all VimL files [gh-915]
|
||||||
|
* Internal: autocmd settings can be now dynamically enabled/disabled [gh-939]
|
||||||
|
* Internal: automatically detect `GOPATH` for :GoInstall [gh-980]
|
||||||
|
* Internal: shell executions uses now by default `sh` and then resets it back to the user preference. [gh-967]
|
||||||
* Syntax: improved syntax highglighting performance for methods, fields, structs and interface type declarations [gh-917]
|
* Syntax: improved syntax highglighting performance for methods, fields, structs and interface type declarations [gh-917]
|
||||||
|
* Syntax: moved `:GoCoverage` highlight definition into go's syntax file for more customizability [gh-962]
|
||||||
|
|
||||||
|
|
||||||
BUG FIXES:
|
BUG FIXES:
|
||||||
|
|
||||||
|
@ -21,6 +49,7 @@ BUG FIXES:
|
||||||
* Fix `:GoFmt` not picking up `-srcdir` if the command was set to use `goimports` [gh-904]
|
* Fix `:GoFmt` not picking up `-srcdir` if the command was set to use `goimports` [gh-904]
|
||||||
* Fix `:GoTestCompile` to not leave behind artifacts if the cwd and the test files's directory do not match [gh-909]
|
* Fix `:GoTestCompile` to not leave behind artifacts if the cwd and the test files's directory do not match [gh-909]
|
||||||
* Fix `:GoDocBrowser` to not fail if godoc doesn't exist [gh-920]
|
* Fix `:GoDocBrowser` to not fail if godoc doesn't exist [gh-920]
|
||||||
|
* Fix `:GoFmt` to not change the permissions of saved file. Now original file permissions are restored [gh-922]
|
||||||
|
|
||||||
BACKWARDS INCOMPATIBILITIES:
|
BACKWARDS INCOMPATIBILITIES:
|
||||||
|
|
||||||
|
|
|
@ -50,10 +50,16 @@ disabled/enabled easily.
|
||||||
in their own new terminal. (beta)
|
in their own new terminal. (beta)
|
||||||
* Alternate between implementation and test code with `:GoAlternate`
|
* Alternate between implementation and test code with `:GoAlternate`
|
||||||
|
|
||||||
|
Checkout the official [tutorial](https://github.com/fatih/vim-go-tutorial)
|
||||||
|
that goes literally over all features and shows many tips and tricks. It shows
|
||||||
|
how to install vim-go and explains many unknown use cases. Recommended for
|
||||||
|
beginners as well as advanced users: https://github.com/fatih/vim-go-tutorial
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
Master branch is supposed to be a development branch. So stuff here can break and change.
|
Master branch is supposed to be a development branch. So stuff here can break
|
||||||
Please try use always the [latest release](https://github.com/fatih/vim-go/releases/latest)
|
and change. Please try use always the [latest
|
||||||
|
release](https://github.com/fatih/vim-go/releases/latest)
|
||||||
|
|
||||||
Vim-go follows the standard runtime path structure, so I highly recommend to
|
Vim-go follows the standard runtime path structure, so I highly recommend to
|
||||||
use a common and well known plugin manager to install vim-go. Do not use vim-go
|
use a common and well known plugin manager to install vim-go. Do not use vim-go
|
||||||
|
@ -69,6 +75,8 @@ command.
|
||||||
* `NeoBundle 'fatih/vim-go'`
|
* `NeoBundle 'fatih/vim-go'`
|
||||||
* [Vundle](https://github.com/gmarik/vundle)
|
* [Vundle](https://github.com/gmarik/vundle)
|
||||||
* `Plugin 'fatih/vim-go'`
|
* `Plugin 'fatih/vim-go'`
|
||||||
|
* [Vim packages](http://vimhelp.appspot.com/repeat.txt.html#packages) (since Vim 7.4.1528)
|
||||||
|
* `git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go`
|
||||||
|
|
||||||
Please be sure all necessary binaries are installed (such as `gocode`, `godef`,
|
Please be sure all necessary binaries are installed (such as `gocode`, `godef`,
|
||||||
`goimports`, etc.). You can easily install them with the included
|
`goimports`, etc.). You can easily install them with the included
|
||||||
|
@ -84,7 +92,8 @@ installed binaries.
|
||||||
completion (completion by type) install:
|
completion (completion by type) install:
|
||||||
[neocomplete](https://github.com/Shougo/neocomplete.vim) for Vim or
|
[neocomplete](https://github.com/Shougo/neocomplete.vim) for Vim or
|
||||||
[deoplete](https://github.com/Shougo/deoplete.nvim) and
|
[deoplete](https://github.com/Shougo/deoplete.nvim) and
|
||||||
[deoplete-go](https://github.com/zchee/deoplete-go) for NeoVim
|
[deoplete-go](https://github.com/zchee/deoplete-go) for NeoVim or
|
||||||
|
[SimpleAutoCmplPop](https://github.com/roxma/SimpleAutoComplPop)
|
||||||
* To display source code tag information on a sidebar install
|
* To display source code tag information on a sidebar install
|
||||||
[tagbar](https://github.com/majutsushi/tagbar).
|
[tagbar](https://github.com/majutsushi/tagbar).
|
||||||
* For snippet features install:
|
* For snippet features install:
|
||||||
|
@ -270,7 +279,6 @@ To resolve this:
|
||||||
let g:go_list_type = "quickfix"
|
let g:go_list_type = "quickfix"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## More info
|
## More info
|
||||||
|
|
||||||
Check out the [Wiki](https://github.com/fatih/vim-go/wiki) page for more
|
Check out the [Wiki](https://github.com/fatih/vim-go/wiki) page for more
|
||||||
|
@ -282,8 +290,12 @@ other [various pieces](https://github.com/fatih/vim-go/wiki) of information.
|
||||||
## Donation
|
## Donation
|
||||||
|
|
||||||
People have asked for this for a long time, now you can be a fully supporter by
|
People have asked for this for a long time, now you can be a fully supporter by
|
||||||
[being a patron](https://www.patreon.com/fatih)! This is fully optional and is
|
[being a patron](https://www.patreon.com/fatih)!
|
||||||
just a way to support vim-go's ongoing development directly. Thanks!
|
|
||||||
|
By being a patron, you are enabling vim-go to grow and mature, helping me to
|
||||||
|
invest in bug fixes, new documentation, and improving both current and future
|
||||||
|
features. It's completely optional and is just a direct way to support Vim-go's
|
||||||
|
ongoing development. Thanks!
|
||||||
|
|
||||||
[https://www.patreon.com/fatih](https://www.patreon.com/fatih)
|
[https://www.patreon.com/fatih](https://www.patreon.com/fatih)
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,11 @@ function! go#asmfmt#Format()
|
||||||
|
|
||||||
" Replace the current file with the temp file; then reload the buffer.
|
" Replace the current file with the temp file; then reload the buffer.
|
||||||
let old_fileformat = &fileformat
|
let old_fileformat = &fileformat
|
||||||
|
" save old file permissions
|
||||||
|
let original_fperm = getfperm(expand('%'))
|
||||||
call rename(l:tmpname, expand('%'))
|
call rename(l:tmpname, expand('%'))
|
||||||
|
" restore old file permissions
|
||||||
|
call setfperm(expand('%'), original_fperm)
|
||||||
silent edit!
|
silent edit!
|
||||||
let &fileformat = old_fileformat
|
let &fileformat = old_fileformat
|
||||||
let &syntax = &syntax
|
let &syntax = &syntax
|
||||||
|
@ -51,4 +55,15 @@ function! go#asmfmt#Format()
|
||||||
call winrestview(l:curw)
|
call winrestview(l:curw)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#asmfmt#ToggleAsmFmtAutoSave()
|
||||||
|
if get(g:, "go_asmfmt_autosave", 1)
|
||||||
|
let g:go_asmfmt_autosave = 0
|
||||||
|
call go#util#EchoProgress("auto asmfmt disabled")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
let g:go_asmfmt_autosave = 1
|
||||||
|
call go#util#EchoProgress("auto asmfmt enabled")
|
||||||
|
endfunction
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -143,6 +143,8 @@ endfunction
|
||||||
" is given(which are passed directly to 'go install') it tries to install those
|
" is given(which are passed directly to 'go install') it tries to install those
|
||||||
" packages. Errors are populated in the location window.
|
" packages. Errors are populated in the location window.
|
||||||
function! go#cmd#Install(bang, ...)
|
function! go#cmd#Install(bang, ...)
|
||||||
|
let old_gopath = $GOPATH
|
||||||
|
let $GOPATH = go#path#Detect()
|
||||||
let default_makeprg = &makeprg
|
let default_makeprg = &makeprg
|
||||||
|
|
||||||
" :make expands '%' and '#' wildcards, so they must also be escaped
|
" :make expands '%' and '#' wildcards, so they must also be escaped
|
||||||
|
@ -179,6 +181,7 @@ function! go#cmd#Install(bang, ...)
|
||||||
redraws! | echon "vim-go: " | echohl Function | echon "installed to ". $GOPATH | echohl None
|
redraws! | echon "vim-go: " | echohl Function | echon "installed to ". $GOPATH | echohl None
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let $GOPATH = old_gopath
|
||||||
let &makeprg = default_makeprg
|
let &makeprg = default_makeprg
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -153,4 +153,16 @@ function! go#complete#Complete(findstart, base)
|
||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
function! go#complete#ToggleAutoTypeInfo()
|
||||||
|
if get(g:, "go_auto_type_info", 0)
|
||||||
|
let g:go_auto_type_info = 0
|
||||||
|
call go#util#EchoProgress("auto type info disabled")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
let g:go_auto_type_info = 1
|
||||||
|
call go#util#EchoProgress("auto type info enabled")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -134,9 +134,9 @@ endfunction
|
||||||
" Generates matches to be added to matchaddpos for the given coverage profile
|
" Generates matches to be added to matchaddpos for the given coverage profile
|
||||||
" block
|
" block
|
||||||
function! go#coverage#genmatch(cov)
|
function! go#coverage#genmatch(cov)
|
||||||
let color = 'covered'
|
let color = 'goCoverageCovered'
|
||||||
if a:cov.cnt == 0
|
if a:cov.cnt == 0
|
||||||
let color = 'uncover'
|
let color = 'goCoverageUncover'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let matches = []
|
let matches = []
|
||||||
|
@ -195,12 +195,12 @@ function! go#coverage#overlay(file)
|
||||||
" contains matches for matchaddpos()
|
" contains matches for matchaddpos()
|
||||||
let matches = []
|
let matches = []
|
||||||
|
|
||||||
" first mark all lines as normaltext. We use a custom group to not
|
" first mark all lines as goCoverageNormalText. We use a custom group to not
|
||||||
" interfere with other buffers highlightings. Because the priority is
|
" interfere with other buffers highlightings. Because the priority is
|
||||||
" lower than the cover and uncover matches, it'll be overriden.
|
" lower than the cover and uncover matches, it'll be overriden.
|
||||||
let cnt = 1
|
let cnt = 1
|
||||||
while cnt <= line('$')
|
while cnt <= line('$')
|
||||||
call add(matches, {'group': 'normaltext', 'pos': [cnt], 'priority': 1})
|
call add(matches, {'group': 'goCoverageNormalText', 'pos': [cnt], 'priority': 1})
|
||||||
let cnt += 1
|
let cnt += 1
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
|
@ -234,9 +234,6 @@ function! go#coverage#overlay(file)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
syntax manual
|
syntax manual
|
||||||
highlight normaltext term=bold ctermfg=darkgrey guifg=#75715E
|
|
||||||
highlight covered term=bold ctermfg=green guifg=#A6E22E
|
|
||||||
highlight uncover term=bold ctermfg=red guifg=#F92672
|
|
||||||
|
|
||||||
" clear the matches if we leave the buffer
|
" clear the matches if we leave the buffer
|
||||||
autocmd BufWinLeave <buffer> call go#coverage#Clear()
|
autocmd BufWinLeave <buffer> call go#coverage#Clear()
|
||||||
|
|
|
@ -6,12 +6,6 @@ function! go#def#Jump(mode)
|
||||||
let $GOPATH = go#path#Detect()
|
let $GOPATH = go#path#Detect()
|
||||||
|
|
||||||
let fname = fnamemodify(expand("%"), ':p:gs?\\?/?')
|
let fname = fnamemodify(expand("%"), ':p:gs?\\?/?')
|
||||||
if &modified
|
|
||||||
" Write current unsaved buffer to a temp file and use the modified content
|
|
||||||
let l:tmpname = tempname()
|
|
||||||
call writefile(getline(1, '$'), l:tmpname)
|
|
||||||
let fname = l:tmpname
|
|
||||||
endif
|
|
||||||
|
|
||||||
" so guru right now is slow for some people. previously we were using
|
" so guru right now is slow for some people. previously we were using
|
||||||
" godef which also has it's own quirks. But this issue come up so many
|
" godef which also has it's own quirks. But this issue come up so many
|
||||||
|
@ -19,6 +13,13 @@ function! go#def#Jump(mode)
|
||||||
" covers all edge cases, but now anyone can switch to godef if they wish
|
" covers all edge cases, but now anyone can switch to godef if they wish
|
||||||
let bin_name = get(g:, 'go_def_mode', 'guru')
|
let bin_name = get(g:, 'go_def_mode', 'guru')
|
||||||
if bin_name == 'godef'
|
if bin_name == 'godef'
|
||||||
|
if &modified
|
||||||
|
" Write current unsaved buffer to a temp file and use the modified content
|
||||||
|
let l:tmpname = tempname()
|
||||||
|
call writefile(getline(1, '$'), l:tmpname)
|
||||||
|
let fname = l:tmpname
|
||||||
|
endif
|
||||||
|
|
||||||
let bin_path = go#path#CheckBinPath("godef")
|
let bin_path = go#path#CheckBinPath("godef")
|
||||||
if empty(bin_path)
|
if empty(bin_path)
|
||||||
let $GOPATH = old_gopath
|
let $GOPATH = old_gopath
|
||||||
|
@ -31,31 +32,45 @@ function! go#def#Jump(mode)
|
||||||
" jump_to_declaration() function can parse it. This makes it
|
" jump_to_declaration() function can parse it. This makes it
|
||||||
" compatible with guru definition as well too
|
" compatible with guru definition as well too
|
||||||
let out = join(split(out, '\n'), ':')
|
let out = join(split(out, '\n'), ':')
|
||||||
|
if exists("l:tmpname")
|
||||||
|
call delete(l:tmpname)
|
||||||
|
endif
|
||||||
|
|
||||||
elseif bin_name == 'guru'
|
elseif bin_name == 'guru'
|
||||||
|
let flags = ""
|
||||||
|
let in = ""
|
||||||
|
|
||||||
|
if &modified
|
||||||
|
let sep = go#util#LineEnding()
|
||||||
|
let content = join(getline(1, '$'), sep)
|
||||||
|
let in = fname . "\n" . strlen(content) . "\n" . content
|
||||||
|
let flags .= " -modified"
|
||||||
|
endif
|
||||||
|
|
||||||
let bin_path = go#path#CheckBinPath("guru")
|
let bin_path = go#path#CheckBinPath("guru")
|
||||||
if empty(bin_path)
|
if empty(bin_path)
|
||||||
let $GOPATH = old_gopath
|
let $GOPATH = old_gopath
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let flags = ""
|
|
||||||
if exists('g:go_guru_tags')
|
if exists('g:go_guru_tags')
|
||||||
let tags = get(g:, 'go_guru_tags')
|
let tags = get(g:, 'go_guru_tags')
|
||||||
let flags = printf(" -tags %s", tags)
|
let flags .= printf(" -tags %s", tags)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let fname = shellescape(fname.':#'.go#util#OffsetCursor())
|
let fname = shellescape(fname.':#'.go#util#OffsetCursor())
|
||||||
let command = printf("%s %s definition %s", bin_path, flags, fname)
|
let command = printf("%s %s definition %s", bin_path, flags, fname)
|
||||||
|
|
||||||
|
if &modified
|
||||||
|
let out = go#util#System(command, in)
|
||||||
|
else
|
||||||
let out = go#util#System(command)
|
let out = go#util#System(command)
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
call go#util#EchoError('go_def_mode value: '. bin_name .' is not valid. Valid values are: [godef, guru]')
|
call go#util#EchoError('go_def_mode value: '. bin_name .' is not valid. Valid values are: [godef, guru]')
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists("l:tmpname")
|
|
||||||
call delete(l:tmpname)
|
|
||||||
endif
|
|
||||||
|
|
||||||
if go#util#ShellError() != 0
|
if go#util#ShellError() != 0
|
||||||
call go#util#EchoError(out)
|
call go#util#EchoError(out)
|
||||||
return
|
return
|
||||||
|
@ -98,6 +113,8 @@ function! s:jump_to_declaration(out, mode)
|
||||||
" modes of switchbuf which we need based on the split mode
|
" modes of switchbuf which we need based on the split mode
|
||||||
let old_switchbuf = &switchbuf
|
let old_switchbuf = &switchbuf
|
||||||
|
|
||||||
|
let l:fname = fnamemodify(expand("%"), ':p:gs?\\?/?')
|
||||||
|
if filename != l:fname
|
||||||
" jump to existing buffer if, 1. we have enabled it, 2. the buffer is loaded
|
" jump to existing buffer if, 1. we have enabled it, 2. the buffer is loaded
|
||||||
" and 3. there is buffer window number we switch to
|
" and 3. there is buffer window number we switch to
|
||||||
if get(g:, 'go_def_reuse_buffer', 0) && bufloaded(filename) != 0 && bufwinnr(filename) != -1
|
if get(g:, 'go_def_reuse_buffer', 0) && bufloaded(filename) != 0 && bufwinnr(filename) != -1
|
||||||
|
@ -112,10 +129,13 @@ function! s:jump_to_declaration(out, mode)
|
||||||
split
|
split
|
||||||
elseif a:mode == "vsplit"
|
elseif a:mode == "vsplit"
|
||||||
vsplit
|
vsplit
|
||||||
|
elseif &modified
|
||||||
|
split
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" open the file and jump to line and column
|
" open the file and jump to line and column
|
||||||
exec 'edit '.filename
|
exec 'edit '.filename
|
||||||
|
endif
|
||||||
call cursor(line, col)
|
call cursor(line, col)
|
||||||
|
|
||||||
" also align the line to middle of the view
|
" also align the line to middle of the view
|
||||||
|
|
|
@ -124,7 +124,7 @@ function! go#fmt#Format(withGoimport)
|
||||||
if exists('b:goimports_vendor_compatible') && b:goimports_vendor_compatible
|
if exists('b:goimports_vendor_compatible') && b:goimports_vendor_compatible
|
||||||
let ssl_save = &shellslash
|
let ssl_save = &shellslash
|
||||||
set noshellslash
|
set noshellslash
|
||||||
let command = command . '-srcdir ' . shellescape(expand("%:p:h"))
|
let command = command . '-srcdir ' . shellescape(expand("%:p"))
|
||||||
let &shellslash = ssl_save
|
let &shellslash = ssl_save
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -149,7 +149,15 @@ function! go#fmt#Format(withGoimport)
|
||||||
|
|
||||||
" Replace current file with temp file, then reload buffer
|
" Replace current file with temp file, then reload buffer
|
||||||
let old_fileformat = &fileformat
|
let old_fileformat = &fileformat
|
||||||
|
if exists("*getfperm")
|
||||||
|
" save old file permissions
|
||||||
|
let original_fperm = getfperm(expand('%'))
|
||||||
|
endif
|
||||||
call rename(l:tmpname, expand('%'))
|
call rename(l:tmpname, expand('%'))
|
||||||
|
" restore old file permissions
|
||||||
|
if exists("*setfperm") && original_fperm != ''
|
||||||
|
call setfperm(expand('%'), original_fperm)
|
||||||
|
endif
|
||||||
silent edit!
|
silent edit!
|
||||||
let &fileformat = old_fileformat
|
let &fileformat = old_fileformat
|
||||||
let &syntax = &syntax
|
let &syntax = &syntax
|
||||||
|
@ -207,4 +215,14 @@ function! go#fmt#Format(withGoimport)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#fmt#ToggleFmtAutoSave()
|
||||||
|
if get(g:, "go_fmt_autosave", 1)
|
||||||
|
let g:go_fmt_autosave = 0
|
||||||
|
call go#util#EchoProgress("auto fmt disabled")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
let g:go_fmt_autosave = 1
|
||||||
|
call go#util#EchoProgress("auto fmt enabled")
|
||||||
|
endfunction
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
" guru.vim -- Vim integration for the Go guru.
|
" guru.vim -- Vim integration for the Go guru.
|
||||||
|
|
||||||
|
|
||||||
func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||||
"return with a warning if the binary doesn't exist
|
"return with a warning if the binary doesn't exist
|
||||||
let bin_path = go#path#CheckBinPath("guru")
|
let bin_path = go#path#CheckBinPath("guru")
|
||||||
|
@ -7,18 +8,6 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||||
return {'err': "bin path not found"}
|
return {'err': "bin path not found"}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let filename = fnamemodify(expand("%"), ':p:gs?\\?/?')
|
|
||||||
if !filereadable(filename)
|
|
||||||
" this might happen for new buffers which are not written yet
|
|
||||||
return {'err': "file does not exist"}
|
|
||||||
endif
|
|
||||||
|
|
||||||
if &modified
|
|
||||||
" Write current unsaved buffer to a temp file and use the modified content
|
|
||||||
let l:tmpname = tempname()
|
|
||||||
call writefile(getline(1, '$'), l:tmpname)
|
|
||||||
let filename = l:tmpname
|
|
||||||
endif
|
|
||||||
let dirname = expand('%:p:h')
|
let dirname = expand('%:p:h')
|
||||||
let pkg = go#package#ImportPath(dirname)
|
let pkg = go#package#ImportPath(dirname)
|
||||||
|
|
||||||
|
@ -30,6 +19,15 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||||
" start constructing the 'command' variable
|
" start constructing the 'command' variable
|
||||||
let command = bin_path
|
let command = bin_path
|
||||||
|
|
||||||
|
let filename = fnamemodify(expand("%"), ':p:gs?\\?/?')
|
||||||
|
let in = ""
|
||||||
|
if &modified
|
||||||
|
let sep = go#util#LineEnding()
|
||||||
|
let content = join(getline(1, '$'), sep )
|
||||||
|
let in = filename . "\n" . strlen(content) . "\n" . content
|
||||||
|
let command .= " -modified"
|
||||||
|
endif
|
||||||
|
|
||||||
" enable outputting in json format
|
" enable outputting in json format
|
||||||
if a:format == "json"
|
if a:format == "json"
|
||||||
let command .= " -json"
|
let command .= " -json"
|
||||||
|
@ -72,8 +70,8 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||||
let scopes = go#util#Shelllist(scopes)
|
let scopes = go#util#Shelllist(scopes)
|
||||||
|
|
||||||
" guru expect a comma-separated list of patterns, construct it
|
" guru expect a comma-separated list of patterns, construct it
|
||||||
let scope = join(scopes, ",")
|
let l:scope = join(scopes, ",")
|
||||||
let command .= printf(" -scope %s", scope)
|
let command .= printf(" -scope %s", l:scope)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let pos = printf("#%s", go#util#OffsetCursor())
|
let pos = printf("#%s", go#util#OffsetCursor())
|
||||||
|
@ -91,16 +89,18 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||||
let old_gopath = $GOPATH
|
let old_gopath = $GOPATH
|
||||||
let $GOPATH = go#path#Detect()
|
let $GOPATH = go#path#Detect()
|
||||||
|
|
||||||
if a:mode !=# 'what'
|
if a:needs_scope
|
||||||
|
call go#util#EchoProgress("analysing with scope ". l:scope . " ...")
|
||||||
|
elseif a:mode !=# 'what'
|
||||||
" the query might take time, let us give some feedback
|
" the query might take time, let us give some feedback
|
||||||
call go#util#EchoProgress("analysing ...")
|
call go#util#EchoProgress("analysing ...")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" run, forrest run!!!
|
" run, forrest run!!!
|
||||||
|
if &modified
|
||||||
|
let out = go#util#System(command, in)
|
||||||
|
else
|
||||||
let out = go#util#System(command)
|
let out = go#util#System(command)
|
||||||
|
|
||||||
if exists("l:tmpname")
|
|
||||||
call delete(l:tmpname)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let $GOPATH = old_gopath
|
let $GOPATH = old_gopath
|
||||||
|
@ -176,6 +176,23 @@ function! go#guru#Tags(...)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Report the possible constants, global variables, and concrete types that may
|
||||||
|
" appear in a value of type error
|
||||||
|
function! go#guru#Whicherrs(selected)
|
||||||
|
let out = s:RunGuru('whicherrs', 'plain', a:selected, 1)
|
||||||
|
if has_key(out, 'err')
|
||||||
|
call go#util#EchoError(out.err)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(out.out)
|
||||||
|
call go#util#EchoSuccess("no error variables found. Try to change the scope with :GoGuruScope")
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:loclistSecond(out.out)
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Show 'implements' relation for selected package
|
" Show 'implements' relation for selected package
|
||||||
function! go#guru#Implements(selected)
|
function! go#guru#Implements(selected)
|
||||||
let out = s:RunGuru('implements', 'plain', a:selected, 1)
|
let out = s:RunGuru('implements', 'plain', a:selected, 1)
|
||||||
|
@ -271,16 +288,11 @@ function! go#guru#Referrers(selected)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#guru#What(selected)
|
function! go#guru#What(selected)
|
||||||
" nvim doesn't have JSON support, though they work on it:
|
" json_encode() and friends are introduced with this patch (7.4.1304)
|
||||||
" https://github.com/neovim/neovim/pull/4131
|
" vim: https://groups.google.com/d/msg/vim_dev/vLupTNhQhZ8/cDGIk0JEDgAJ
|
||||||
if has('nvim')
|
" nvim: https://github.com/neovim/neovim/pull/4131
|
||||||
return {'err': "GoWhat is not supported in Neovim"}
|
if !exists("*json_decode")
|
||||||
endif
|
return {'err': "GoWhat is not supported due old version of Vim/Neovim"}
|
||||||
|
|
||||||
" json_encode() and friends are introduced with this patch
|
|
||||||
" https://groups.google.com/d/msg/vim_dev/vLupTNhQhZ8/cDGIk0JEDgAJ
|
|
||||||
if !has('patch-7.4.1304')
|
|
||||||
return {'err': "GoWhat is supported with Vim version 7.4-1304 or later"}
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let out = s:RunGuru('what', 'json', a:selected, 0)
|
let out = s:RunGuru('what', 'json', a:selected, 0)
|
||||||
|
@ -297,10 +309,29 @@ function! go#guru#What(selected)
|
||||||
return result
|
return result
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#guru#SameIds(selected)
|
function! go#guru#AutoToogleSameIds()
|
||||||
|
if get(g:, "go_auto_sameids", 0)
|
||||||
|
call go#util#EchoProgress("sameids auto highlighting disabled")
|
||||||
call go#guru#ClearSameIds()
|
call go#guru#ClearSameIds()
|
||||||
|
let g:go_auto_sameids = 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call go#util#EchoSuccess("sameids auto highlighting enabled")
|
||||||
|
let g:go_auto_sameids = 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! go#guru#SameIds(selected)
|
||||||
|
" we use matchaddpos() which was introduce with 7.4.330, be sure we have
|
||||||
|
" it: http://ftp.vim.org/vim/patches/7.4/7.4.330
|
||||||
|
if !exists("*matchaddpos")
|
||||||
|
call go#util#EchoError("GoSameIds is supported with Vim version 7.4-330 or later")
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
let result = go#guru#What(a:selected)
|
let result = go#guru#What(a:selected)
|
||||||
|
|
||||||
|
call go#guru#ClearSameIds() " run after calling guru to reduce flicker.
|
||||||
if has_key(result, 'err') && !get(g:, 'go_auto_sameids', 0)
|
if has_key(result, 'err') && !get(g:, 'go_auto_sameids', 0)
|
||||||
" only echo if it's called via `:GoSameIds, but not if it's in automode
|
" only echo if it's called via `:GoSameIds, but not if it's in automode
|
||||||
call go#util#EchoError(result.err)
|
call go#util#EchoError(result.err)
|
||||||
|
@ -327,8 +358,6 @@ function! go#guru#SameIds(selected)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
hi goSameId term=bold cterm=bold ctermbg=white ctermfg=black
|
|
||||||
|
|
||||||
let same_ids = result['sameids']
|
let same_ids = result['sameids']
|
||||||
" highlight the lines
|
" highlight the lines
|
||||||
for item in same_ids
|
for item in same_ids
|
||||||
|
@ -346,4 +375,12 @@ function! go#guru#ClearSameIds()
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#guru#ToggleSameIds(selected)
|
||||||
|
if len(getmatches()) != 0
|
||||||
|
call go#guru#ClearSameIds()
|
||||||
|
else
|
||||||
|
call go#guru#SameIds(a:selected)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -71,12 +71,12 @@ endif
|
||||||
|
|
||||||
function! s:root_dirs()
|
function! s:root_dirs()
|
||||||
let dirs = []
|
let dirs = []
|
||||||
let root = go#util#GOROOT()
|
let root = go#util#goroot()
|
||||||
if root !=# '' && isdirectory(root)
|
if root !=# '' && isdirectory(root)
|
||||||
call add(dirs, root)
|
call add(dirs, root)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let paths = map(split(go#util#GOPATH(), go#util#PathListSep()), "substitute(v:val, '\\\\', '/', 'g')")
|
let paths = map(split(go#util#gopath(), go#util#PathListSep()), "substitute(v:val, '\\\\', '/', 'g')")
|
||||||
if go#util#ShellError()
|
if go#util#ShellError()
|
||||||
return []
|
return []
|
||||||
endif
|
endif
|
||||||
|
@ -91,7 +91,7 @@ endfunction
|
||||||
function! s:go_packages(dirs)
|
function! s:go_packages(dirs)
|
||||||
let pkgs = []
|
let pkgs = []
|
||||||
for d in a:dirs
|
for d in a:dirs
|
||||||
let pkg_root = expand(d . '/pkg/' . go#util#OSARCH())
|
let pkg_root = expand(d . '/pkg/' . go#util#osarch())
|
||||||
call extend(pkgs, split(globpath(pkg_root, '**/*.a', 1), "\n"))
|
call extend(pkgs, split(globpath(pkg_root, '**/*.a', 1), "\n"))
|
||||||
endfor
|
endfor
|
||||||
return map(pkgs, "fnamemodify(v:val, ':t:r')")
|
return map(pkgs, "fnamemodify(v:val, ':t:r')")
|
||||||
|
|
|
@ -196,4 +196,15 @@ function! go#lint#Errcheck(...) abort
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#lint#ToggleMetaLinterAutoSave()
|
||||||
|
if get(g:, "go_metalinter_autosave", 0)
|
||||||
|
let g:go_metalinter_autosave = 0
|
||||||
|
call go#util#EchoProgress("auto metalinter disabled")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
let g:go_metalinter_autosave = 1
|
||||||
|
call go#util#EchoProgress("auto metalinter enabled")
|
||||||
|
endfunction
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -33,7 +33,7 @@ function! go#package#Paths()
|
||||||
|
|
||||||
if !exists("s:goroot")
|
if !exists("s:goroot")
|
||||||
if executable('go')
|
if executable('go')
|
||||||
let s:goroot = substitute(go#util#System('go env GOROOT'), '\n', '', 'g')
|
let s:goroot = go#util#goroot()
|
||||||
if go#util#ShellError() != 0
|
if go#util#ShellError() != 0
|
||||||
echomsg '''go env GOROOT'' failed'
|
echomsg '''go env GOROOT'' failed'
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -14,7 +14,7 @@ function! go#template#create()
|
||||||
if l:package_name == -1
|
if l:package_name == -1
|
||||||
let l:template_file = get(g:, 'go_template_file', "hello_world.go")
|
let l:template_file = get(g:, 'go_template_file', "hello_world.go")
|
||||||
let l:template_path = go#util#Join(l:root_dir, "templates", l:template_file)
|
let l:template_path = go#util#Join(l:root_dir, "templates", l:template_file)
|
||||||
exe '0r ' . l:template_path
|
exe '0r ' . fnameescape(l:template_path)
|
||||||
$delete _
|
$delete _
|
||||||
else
|
else
|
||||||
let l:content = printf("package %s", l:package_name)
|
let l:content = printf("package %s", l:package_name)
|
||||||
|
@ -28,4 +28,15 @@ function! go#template#create()
|
||||||
execute cd . fnameescape(dir)
|
execute cd . fnameescape(dir)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#template#ToggleAutoCreate()
|
||||||
|
if get(g:, "go_template_autocreate", 1)
|
||||||
|
let g:go_template_autocreate = 0
|
||||||
|
call go#util#EchoProgress("auto template create disabled")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
let g:go_template_autocreate = 1
|
||||||
|
call go#util#EchoProgress("auto template create enabled")
|
||||||
|
endfunction
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -44,7 +44,7 @@ function! go#tool#Imports()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#tool#PackageName()
|
function! go#tool#PackageName()
|
||||||
let command = "go list -f '{{.Name}}'"
|
let command = "go list -f \"{{.Name}}\""
|
||||||
let out = go#tool#ExecuteInDir(command)
|
let out = go#tool#ExecuteInDir(command)
|
||||||
if go#util#ShellError() != 0
|
if go#util#ShellError() != 0
|
||||||
return -1
|
return -1
|
||||||
|
|
|
@ -43,27 +43,26 @@ function! go#util#IsWin()
|
||||||
return 0
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#GOARCH()
|
function! go#util#goarch()
|
||||||
return substitute(go#util#System('go env GOARCH'), '\n', '', 'g')
|
return substitute(go#util#System('go env GOARCH'), '\n', '', 'g')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#GOOS()
|
function! go#util#goos()
|
||||||
return substitute(go#util#System('go env GOOS'), '\n', '', 'g')
|
return substitute(go#util#System('go env GOOS'), '\n', '', 'g')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#GOROOT()
|
function! go#util#goroot()
|
||||||
return substitute(go#util#System('go env GOROOT'), '\n', '', 'g')
|
return substitute(go#util#System('go env GOROOT'), '\n', '', 'g')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#GOPATH()
|
function! go#util#gopath()
|
||||||
return substitute(go#util#System('go env GOPATH'), '\n', '', 'g')
|
return substitute(go#util#System('go env GOPATH'), '\n', '', 'g')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#OSARCH()
|
function! go#util#osarch()
|
||||||
return go#util#GOOS() . '_' . go#util#GOARCH()
|
return go#util#goos() . '_' . go#util#goarch()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"Check if has vimproc
|
"Check if has vimproc
|
||||||
function! s:has_vimproc()
|
function! s:has_vimproc()
|
||||||
if !exists('g:go#use_vimproc')
|
if !exists('g:go#use_vimproc')
|
||||||
|
@ -92,8 +91,20 @@ else
|
||||||
let s:vim_shell_error = ''
|
let s:vim_shell_error = ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" System runs a shell command. It will reset the shell to /bin/sh for Unix-like
|
||||||
|
" systems if it is executable.
|
||||||
function! go#util#System(str, ...)
|
function! go#util#System(str, ...)
|
||||||
return call(s:vim_system, [a:str] + a:000)
|
let l:shell = &shell
|
||||||
|
if !go#util#IsWin() && executable('/bin/sh')
|
||||||
|
let &shell = '/bin/sh'
|
||||||
|
endif
|
||||||
|
|
||||||
|
try
|
||||||
|
let l:output = call(s:vim_system, [a:str] + a:000)
|
||||||
|
return l:output
|
||||||
|
finally
|
||||||
|
let &shell = l:shell
|
||||||
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#ShellError()
|
function! go#util#ShellError()
|
||||||
|
@ -228,24 +239,68 @@ function! go#util#camelcase(word)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#util#AddTags(line1, line2, ...)
|
||||||
|
" default is json
|
||||||
|
let l:keys = ["json"]
|
||||||
|
if a:0
|
||||||
|
let l:keys = a:000
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:line1 = a:line1
|
||||||
|
let l:line2 = a:line2
|
||||||
|
|
||||||
|
" If we're inside a struct and just call this function let us add the tags
|
||||||
|
" to all fields
|
||||||
|
" TODO(arslan): I don't like using patterns. Check if we can move it to
|
||||||
|
" `motion` and do it via AST based position
|
||||||
|
let ln1 = searchpair('struct {', '', '}', 'bcnW')
|
||||||
|
if ln1 == 0
|
||||||
|
echon "vim-go: " | echohl ErrorMsg | echon "cursor is outside the struct" | echohl None
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" searchpair only returns a single position
|
||||||
|
let ln2 = search('}', "cnW")
|
||||||
|
|
||||||
|
" if no range is given we apply for the whole struct
|
||||||
|
if l:line1 == l:line2
|
||||||
|
let l:line1 = ln1 + 1
|
||||||
|
let l:line2 = ln2 - 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
for line in range(l:line1, l:line2)
|
||||||
|
" get the field name (word) that are not part of a commented line
|
||||||
|
let l:matched = matchstr(getline(line), '\(\/\/.*\)\@<!\w\+')
|
||||||
|
if empty(l:matched)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let word = go#util#snippetcase(l:matched)
|
||||||
|
let tags = map(copy(l:keys), 'printf("%s:%s", v:val,"\"'. word .'\"")')
|
||||||
|
let updated_line = printf("%s `%s`", getline(line), join(tags, " "))
|
||||||
|
|
||||||
|
" finally, update the line inplace
|
||||||
|
call setline(line, updated_line)
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
" TODO(arslan): I couldn't parameterize the highlight types. Check if we can
|
" TODO(arslan): I couldn't parameterize the highlight types. Check if we can
|
||||||
" simplify the following functions
|
" simplify the following functions
|
||||||
|
|
||||||
function! go#util#EchoSuccess(msg)
|
function! go#util#EchoSuccess(msg)
|
||||||
redraws! | echon "vim-go: " | echohl Function | echon a:msg | echohl None
|
redraw | echon "vim-go: " | echohl Function | echon a:msg | echohl None
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#EchoError(msg)
|
function! go#util#EchoError(msg)
|
||||||
redraws! | echon "vim-go: " | echohl ErrorMsg | echon a:msg | echohl None
|
redraw | echon "vim-go: " | echohl ErrorMsg | echon a:msg | echohl None
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#EchoWarning(msg)
|
function! go#util#EchoWarning(msg)
|
||||||
redraws! | echon "vim-go: " | echohl WarningMsg | echon a:msg | echohl None
|
redraw | echon "vim-go: " | echohl WarningMsg | echon a:msg | echohl None
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! go#util#EchoProgress(msg)
|
function! go#util#EchoProgress(msg)
|
||||||
redraws! | echon "vim-go: " | echohl Identifier | echon a:msg | echohl None
|
redraw | echon "vim-go: " | echohl Identifier | echon a:msg | echohl None
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,6 +4,7 @@ command! -nargs=? GoRename call go#rename#Rename(<bang>0,<f-args>)
|
||||||
" -- guru
|
" -- guru
|
||||||
command! -nargs=* -complete=customlist,go#package#Complete GoGuruScope call go#guru#Scope(<f-args>)
|
command! -nargs=* -complete=customlist,go#package#Complete GoGuruScope call go#guru#Scope(<f-args>)
|
||||||
command! -range=% GoImplements call go#guru#Implements(<count>)
|
command! -range=% GoImplements call go#guru#Implements(<count>)
|
||||||
|
command! -range=% GoWhicherrs call go#guru#Whicherrs(<count>)
|
||||||
command! -range=% GoCallees call go#guru#Callees(<count>)
|
command! -range=% GoCallees call go#guru#Callees(<count>)
|
||||||
command! -range=% GoDescribe call go#guru#Describe(<count>)
|
command! -range=% GoDescribe call go#guru#Describe(<count>)
|
||||||
command! -range=% GoCallers call go#guru#Callers(<count>)
|
command! -range=% GoCallers call go#guru#Callers(<count>)
|
||||||
|
@ -12,13 +13,20 @@ command! -range=% GoFreevars call go#guru#Freevars(<count>)
|
||||||
command! -range=% GoChannelPeers call go#guru#ChannelPeers(<count>)
|
command! -range=% GoChannelPeers call go#guru#ChannelPeers(<count>)
|
||||||
command! -range=% GoReferrers call go#guru#Referrers(<count>)
|
command! -range=% GoReferrers call go#guru#Referrers(<count>)
|
||||||
command! -nargs=? GoGuruTags call go#guru#Tags(<f-args>)
|
command! -nargs=? GoGuruTags call go#guru#Tags(<f-args>)
|
||||||
|
|
||||||
|
|
||||||
|
command! -nargs=* -range GoAddTags call go#util#AddTags(<line1>, <line2>, <f-args>)
|
||||||
|
|
||||||
command! -range=% GoSameIds call go#guru#SameIds(<count>)
|
command! -range=% GoSameIds call go#guru#SameIds(<count>)
|
||||||
command! -range=0 GoSameIdsClear call go#guru#ClearSameIds()
|
command! -range=0 GoSameIdsClear call go#guru#ClearSameIds()
|
||||||
|
command! -range=% GoSameIdsToggle call go#guru#ToggleSameIds(<count>)
|
||||||
|
command! -range=0 GoSameIdsAutoToggle call go#guru#AutoToogleSameIds()
|
||||||
|
|
||||||
" -- tool
|
" -- tool
|
||||||
command! -nargs=0 GoFiles echo go#tool#Files()
|
command! -nargs=0 GoFiles echo go#tool#Files()
|
||||||
command! -nargs=0 GoDeps echo go#tool#Deps()
|
command! -nargs=0 GoDeps echo go#tool#Deps()
|
||||||
command! -nargs=* GoInfo call go#complete#Info(0)
|
command! -nargs=* GoInfo call go#complete#Info(0)
|
||||||
|
command! -nargs=0 GoAutoTypeInfoToggle call go#complete#ToggleAutoTypeInfo()
|
||||||
|
|
||||||
" -- cmd
|
" -- cmd
|
||||||
command! -nargs=* -bang GoBuild call go#cmd#Build(<bang>0,<f-args>)
|
command! -nargs=* -bang GoBuild call go#cmd#Build(<bang>0,<f-args>)
|
||||||
|
@ -50,8 +58,12 @@ command! -nargs=* -range -complete=customlist,go#package#Complete GoDocBrowser c
|
||||||
|
|
||||||
" -- fmt
|
" -- fmt
|
||||||
command! -nargs=0 GoFmt call go#fmt#Format(-1)
|
command! -nargs=0 GoFmt call go#fmt#Format(-1)
|
||||||
|
command! -nargs=0 GoFmtAutoSaveToggle call go#fmt#ToggleFmtAutoSave()
|
||||||
command! -nargs=0 GoImports call go#fmt#Format(1)
|
command! -nargs=0 GoImports call go#fmt#Format(1)
|
||||||
|
|
||||||
|
" -- asmfmt
|
||||||
|
command! -nargs=0 GoAsmFmtAutoSaveToggle call go#asmfmt#ToggleAsmFmtAutoSave()
|
||||||
|
|
||||||
" -- import
|
" -- import
|
||||||
command! -nargs=? -complete=customlist,go#package#Complete GoDrop call go#import#SwitchImport(0, '', <f-args>, '')
|
command! -nargs=? -complete=customlist,go#package#Complete GoDrop call go#import#SwitchImport(0, '', <f-args>, '')
|
||||||
command! -nargs=1 -bang -complete=customlist,go#package#Complete GoImport call go#import#SwitchImport(1, '', <f-args>, '<bang>')
|
command! -nargs=1 -bang -complete=customlist,go#package#Complete GoImport call go#import#SwitchImport(1, '', <f-args>, '<bang>')
|
||||||
|
@ -59,6 +71,7 @@ command! -nargs=* -bang -complete=customlist,go#package#Complete GoImportAs call
|
||||||
|
|
||||||
" -- linters
|
" -- linters
|
||||||
command! -nargs=* GoMetaLinter call go#lint#Gometa(0, <f-args>)
|
command! -nargs=* GoMetaLinter call go#lint#Gometa(0, <f-args>)
|
||||||
|
command! -nargs=0 GoMetalinterAutoSaveToggle call go#lint#ToggleMetaLinterAutoSave()
|
||||||
command! -nargs=* GoLint call go#lint#Golint(<f-args>)
|
command! -nargs=* GoLint call go#lint#Golint(<f-args>)
|
||||||
command! -nargs=* -bang GoVet call go#lint#Vet(<bang>0, <f-args>)
|
command! -nargs=* -bang GoVet call go#lint#Vet(<bang>0, <f-args>)
|
||||||
command! -nargs=* -complete=customlist,go#package#Complete GoErrCheck call go#lint#Errcheck(<f-args>)
|
command! -nargs=* -complete=customlist,go#package#Complete GoErrCheck call go#lint#Errcheck(<f-args>)
|
||||||
|
@ -75,4 +88,7 @@ endif
|
||||||
" -- impl
|
" -- impl
|
||||||
command! -nargs=* -buffer -complete=customlist,go#impl#Complete GoImpl call go#impl#Impl(<f-args>)
|
command! -nargs=* -buffer -complete=customlist,go#impl#Complete GoImpl call go#impl#Impl(<f-args>)
|
||||||
|
|
||||||
|
" -- template
|
||||||
|
command! -nargs=0 GoTemplateAutoCreateToggle call go#template#ToggleAutoCreate()
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -44,6 +44,8 @@ xnoremap <silent> <Plug>(go-freevars) :<C-u>call go#guru#Freevars(0)<CR>
|
||||||
nnoremap <silent> <Plug>(go-channelpeers) :<C-u>call go#guru#ChannelPeers(-1)<CR>
|
nnoremap <silent> <Plug>(go-channelpeers) :<C-u>call go#guru#ChannelPeers(-1)<CR>
|
||||||
nnoremap <silent> <Plug>(go-referrers) :<C-u>call go#guru#Referrers(-1)<CR>
|
nnoremap <silent> <Plug>(go-referrers) :<C-u>call go#guru#Referrers(-1)<CR>
|
||||||
nnoremap <silent> <Plug>(go-sameids) :<C-u>call go#guru#SameIds(-1)<CR>
|
nnoremap <silent> <Plug>(go-sameids) :<C-u>call go#guru#SameIds(-1)<CR>
|
||||||
|
nnoremap <silent> <Plug>(go-whicherrs) :<C-u>call go#guru#Whicherrs(-1)<CR>
|
||||||
|
nnoremap <silent> <Plug>(go-sameids-toggle) :<C-u>call go#guru#ToggleSameIds(-1)<CR>
|
||||||
|
|
||||||
nnoremap <silent> <Plug>(go-rename) :<C-u>call go#rename#Rename(!g:go_jump_to_error)<CR>
|
nnoremap <silent> <Plug>(go-rename) :<C-u>call go#rename#Rename(!g:go_jump_to_error)<CR>
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,11 @@ snippet json "\`json:key\`"
|
||||||
\`json:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\`
|
\`json:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\`
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
# yaml field tag
|
||||||
|
snippet yaml "\`yaml:key\`"
|
||||||
|
\`yaml:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\`
|
||||||
|
endsnippet
|
||||||
|
|
||||||
# fallthrough
|
# fallthrough
|
||||||
snippet ft "fallthrough"
|
snippet ft "fallthrough"
|
||||||
fallthrough
|
fallthrough
|
||||||
|
|
|
@ -162,6 +162,11 @@ snippet json
|
||||||
abbr \`json:key\`
|
abbr \`json:key\`
|
||||||
\`json:"${1:keyName}"\`
|
\`json:"${1:keyName}"\`
|
||||||
|
|
||||||
|
# yaml snippet
|
||||||
|
snippet yaml
|
||||||
|
abbr \`yaml:key\`
|
||||||
|
\`yaml:"${1:keyName}"\`
|
||||||
|
|
||||||
# fallthrough
|
# fallthrough
|
||||||
snippet ft
|
snippet ft
|
||||||
abbr fallthrough
|
abbr fallthrough
|
||||||
|
|
|
@ -27,7 +27,6 @@ command! GoInstallBinaries call s:GoInstallBinaries(-1)
|
||||||
command! GoUpdateBinaries call s:GoInstallBinaries(1)
|
command! GoUpdateBinaries call s:GoInstallBinaries(1)
|
||||||
command! -nargs=? -complete=dir GoPath call go#path#GoPath(<f-args>)
|
command! -nargs=? -complete=dir GoPath call go#path#GoPath(<f-args>)
|
||||||
|
|
||||||
|
|
||||||
" GoInstallBinaries downloads and install all necessary binaries stated in the
|
" GoInstallBinaries downloads and install all necessary binaries stated in the
|
||||||
" packages variable. It uses by default $GOBIN or $GOPATH/bin as the binary
|
" packages variable. It uses by default $GOBIN or $GOPATH/bin as the binary
|
||||||
" target install directory. GoInstallBinaries doesn't install binaries if they
|
" target install directory. GoInstallBinaries doesn't install binaries if they
|
||||||
|
@ -143,44 +142,64 @@ function! s:echo_go_info()
|
||||||
redraws! | echo "vim-go: " | echohl Function | echon item.info | echohl None
|
redraws! | echo "vim-go: " | echohl Function | echon item.info | echohl None
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:auto_type_info()
|
||||||
|
" GoInfo automatic update
|
||||||
|
if get(g:, "go_auto_type_info", 0)
|
||||||
|
call go#complete#Info(1)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:auto_sameids()
|
||||||
|
" GoSameId automatic update
|
||||||
|
if get(g:, "go_auto_sameids", 0)
|
||||||
|
call go#guru#SameIds(-1)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:fmt_autosave()
|
||||||
|
" Go code formatting on save
|
||||||
|
if get(g:, "go_fmt_autosave", 1)
|
||||||
|
call go#fmt#Format(-1)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:asmfmt_autosave()
|
||||||
|
" Go asm formatting on save
|
||||||
|
if get(g:, "go_asmfmt_autosave", 1)
|
||||||
|
call go#asmfmt#Format()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:metalinter_autosave()
|
||||||
|
" run gometalinter on save
|
||||||
|
if get(g:, "go_metalinter_autosave", 0)
|
||||||
|
call go#lint#Gometa(1)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:template_autocreate()
|
||||||
|
" create new template from scratch
|
||||||
|
if get(g:, "go_template_autocreate", 1)
|
||||||
|
call go#template#create()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
augroup vim-go
|
augroup vim-go
|
||||||
autocmd!
|
autocmd!
|
||||||
|
|
||||||
" GoInfo automatic update
|
autocmd CursorHold *.go call s:auto_type_info()
|
||||||
if get(g:, "go_auto_type_info", 0)
|
autocmd CursorHold *.go call s:auto_sameids()
|
||||||
autocmd CursorHold *.go nested call go#complete#Info(1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
" GoSameId automatic update
|
|
||||||
if get(g:, "go_auto_sameids", 0)
|
|
||||||
autocmd CursorMoved *.go nested call go#guru#SameIds(-1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Echo the identifier information when completion is done. Useful to see
|
" Echo the identifier information when completion is done. Useful to see
|
||||||
" the signature of a function, etc...
|
" the signature of a function, etc...
|
||||||
if exists('##CompleteDone')
|
if exists('##CompleteDone')
|
||||||
autocmd CompleteDone *.go nested call s:echo_go_info()
|
autocmd CompleteDone *.go call s:echo_go_info()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Go code formatting on save
|
autocmd BufWritePre *.go call s:fmt_autosave()
|
||||||
if get(g:, "go_fmt_autosave", 1)
|
autocmd BufWritePre *.s call s:asmfmt_autosave()
|
||||||
autocmd BufWritePre *.go call go#fmt#Format(-1)
|
autocmd BufWritePost *.go call s:metalinter_autosave()
|
||||||
endif
|
autocmd BufNewFile *.go call s:template_autocreate()
|
||||||
|
|
||||||
" Go asm formatting on save
|
|
||||||
if get(g:, "go_asmfmt_autosave", 1)
|
|
||||||
autocmd BufWritePre *.s call go#asmfmt#Format()
|
|
||||||
endif
|
|
||||||
|
|
||||||
" run gometalinter on save
|
|
||||||
if get(g:, "go_metalinter_autosave", 0)
|
|
||||||
autocmd BufWritePost *.go call go#lint#Gometa(1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
" create new template from scratch
|
|
||||||
if get(g:, "go_template_autocreate", 1)
|
|
||||||
autocmd BufNewFile *.go call go#template#create()
|
|
||||||
endif
|
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
|
@ -271,6 +271,7 @@ hi def link goSpaceError Error
|
||||||
syn keyword goTodo contained NOTE
|
syn keyword goTodo contained NOTE
|
||||||
hi def link goTodo Todo
|
hi def link goTodo Todo
|
||||||
|
|
||||||
|
syn match goVarArgs /\.\.\./
|
||||||
|
|
||||||
" Operators;
|
" Operators;
|
||||||
if g:go_highlight_operators != 0
|
if g:go_highlight_operators != 0
|
||||||
|
@ -285,9 +286,9 @@ if g:go_highlight_operators != 0
|
||||||
" match remaining two-char operators: := && || <- ++ --
|
" match remaining two-char operators: := && || <- ++ --
|
||||||
syn match goOperator /:=\|||\|<-\|++\|--/
|
syn match goOperator /:=\|||\|<-\|++\|--/
|
||||||
" match ...
|
" match ...
|
||||||
syn match goOperator /\.\.\./
|
|
||||||
|
|
||||||
hi def link goPointerOperator Operator
|
hi def link goPointerOperator goOperator
|
||||||
|
hi def link goVarArgs goOperator
|
||||||
endif
|
endif
|
||||||
hi def link goOperator Operator
|
hi def link goOperator Operator
|
||||||
|
|
||||||
|
@ -306,14 +307,13 @@ hi def link goFunction Function
|
||||||
|
|
||||||
" Methods;
|
" Methods;
|
||||||
if g:go_highlight_methods != 0
|
if g:go_highlight_methods != 0
|
||||||
syn match goMethod /\.\w\+(/hs=s+1,he=e-1
|
syn match goMethod /\.\w\+\ze(/hs=s+1
|
||||||
endif
|
endif
|
||||||
hi def link goMethod Type
|
hi def link goMethod Type
|
||||||
|
|
||||||
" Fields;
|
" Fields;
|
||||||
if g:go_highlight_fields != 0
|
if g:go_highlight_fields != 0
|
||||||
syn match goVarArgs /\.\.\.\w\+\>/
|
syn match goField /\.\w\+\([\ \n\r\:\)\[,]\)\@=/hs=s+1
|
||||||
syn match goField /\.\a\+\([\ \n\r\:\)\[]\)\@=/hs=s+1
|
|
||||||
endif
|
endif
|
||||||
hi def link goField Identifier
|
hi def link goField Identifier
|
||||||
|
|
||||||
|
@ -366,7 +366,13 @@ if g:go_highlight_build_constraints != 0
|
||||||
hi def link goPackageComment Comment
|
hi def link goPackageComment Comment
|
||||||
endif
|
endif
|
||||||
|
|
||||||
hi def link goSameId IncSearch
|
" :GoSameIds
|
||||||
|
hi def goSameId term=bold cterm=bold ctermbg=white ctermfg=black
|
||||||
|
|
||||||
|
" :GoCoverage commands
|
||||||
|
hi def link goCoverageNormalText Comment
|
||||||
|
hi def goCoverageCovered ctermfg=green guifg=#A6E22E
|
||||||
|
hi def goCoverageUncover ctermfg=red guifg=#F92672
|
||||||
|
|
||||||
" Search backwards for a global declaration to start processing the syntax.
|
" Search backwards for a global declaration to start processing the syntax.
|
||||||
"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/
|
"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/
|
||||||
|
|
|
@ -127,7 +127,6 @@ endsnippet
|
||||||
#############
|
#############
|
||||||
snippet input "Input with Label" w
|
snippet input "Input with Label" w
|
||||||
<label for="${2:${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}}">$1</label><input type="${3:text/submit/hidden/button}" name="${4:$2}" value="$5"${6: id="${7:$2}"}`!p x(snip)`>
|
<label for="${2:${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}}">$1</label><input type="${3:text/submit/hidden/button}" name="${4:$2}" value="$5"${6: id="${7:$2}"}`!p x(snip)`>
|
||||||
|
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet input "XHTML <input>" w
|
snippet input "XHTML <input>" w
|
||||||
|
@ -141,9 +140,7 @@ endsnippet
|
||||||
|
|
||||||
snippet select "Select Box" w
|
snippet select "Select Box" w
|
||||||
<select name="${1:some_name}" id="${2:$1}"${3:${4: multiple}${5: onchange="${6:}"}${7: size="${8:1}"}}>
|
<select name="${1:some_name}" id="${2:$1}"${3:${4: multiple}${5: onchange="${6:}"}${7: size="${8:1}"}}>
|
||||||
<option${9: value="${10:option1}"}>${11:$10}</option>
|
${0:${VISUAL}}
|
||||||
<option${12: value="${13:option2}"}>${14:$13}</option>${15:}
|
|
||||||
$0
|
|
||||||
</select>
|
</select>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
@ -162,25 +159,25 @@ endsnippet
|
||||||
|
|
||||||
snippet body "<body>"
|
snippet body "<body>"
|
||||||
<body>
|
<body>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</body>
|
</body>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet div "<div>" w
|
snippet div "<div>" w
|
||||||
<div>
|
<div>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</div>
|
</div>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet div. "<div> with class" w
|
snippet div. "<div> with class" w
|
||||||
<div`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`>
|
<div`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</div>
|
</div>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet div# "<div> with ID & class" w
|
snippet div# "<div> with ID & class" w
|
||||||
<div`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`>
|
<div`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</div>
|
</div>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
@ -188,33 +185,39 @@ snippet form "XHTML <form>" w
|
||||||
<form action="${1:`!p
|
<form action="${1:`!p
|
||||||
snip.rv = (snip.basename or 'unnamed') + '_submit'
|
snip.rv = (snip.basename or 'unnamed') + '_submit'
|
||||||
`}" method="${2:get}" accept-charset="utf-8">
|
`}" method="${2:get}" accept-charset="utf-8">
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
|
|
||||||
<p><input type="submit" value="Continue →"`!p x(snip)`></p>
|
|
||||||
</form>
|
</form>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet h1 "XHTML <h1>" w
|
snippet h1 "XHTML <h1>" w
|
||||||
<h1>$0</h1>
|
<h1>${0:${VISUAL}}</h1>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet h2 "XHTML <h2>" w
|
snippet h2 "XHTML <h2>" w
|
||||||
<h2>$0</h2>
|
<h2>${0:${VISUAL}}</h2>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet h3 "XHTML <h3>" w
|
snippet h3 "XHTML <h3>" w
|
||||||
<h3>$0</h3>
|
<h3>${0:${VISUAL}}</h3>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet h4 "XHTML <h4>" w
|
snippet h4 "XHTML <h4>" w
|
||||||
<h4>$0</h4>
|
<h4>${0:${VISUAL}}</h4>
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
snippet h5 "XHTML <h5>" w
|
||||||
|
<h5>${0:${VISUAL}}</h5>
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
snippet h6 "XHTML <h6>" w
|
||||||
|
<h6>${0:${VISUAL}}</h6>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet head "XHTML <head>"
|
snippet head "XHTML <head>"
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title>
|
<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</head>
|
</head>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
@ -232,20 +235,19 @@ endsnippet
|
||||||
|
|
||||||
snippet script "XHTML <script>" w
|
snippet script "XHTML <script>" w
|
||||||
<script type="text/javascript" charset="utf-8">
|
<script type="text/javascript" charset="utf-8">
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</script>
|
</script>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet style "XHTML <style>" w
|
snippet style "XHTML <style>" w
|
||||||
<style type="text/css" media="screen">
|
<style type="text/css" media="screen">
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</style>
|
</style>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet table "XHTML <table>" w
|
snippet table "XHTML <table>" w
|
||||||
<table border="${1:0}"${2: cellspacing="${3:5}" cellpadding="${4:5}"}>
|
<table border="${1:0}"${2: cellspacing="${3:5}" cellpadding="${4:5}"}>
|
||||||
<tr><th>${5:Header}</th></tr>
|
${0:${VISUAL}}
|
||||||
<tr><td>${0:Data}</td></tr>
|
|
||||||
</table>
|
</table>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
@ -254,29 +256,29 @@ snippet a "Link" w
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet p "paragraph" w
|
snippet p "paragraph" w
|
||||||
<p>$0</p>
|
<p>${0:${VISUAL}}</p>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet li "list item" w
|
snippet li "list item" w
|
||||||
<li>$0</li>
|
<li>${0:${VISUAL}}</li>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet ul "unordered list" w
|
snippet ul "unordered list" w
|
||||||
<ul>
|
<ul>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</ul>
|
</ul>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet td "table cell" w
|
snippet td "table cell" w
|
||||||
<td>$0</td>
|
<td>${0:${VISUAL}}</td>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet th "table header" w
|
snippet th "table header" w
|
||||||
<th>$0</th>
|
<th>${0:${VISUAL}}</th>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet tr "table row" w
|
snippet tr "table row" w
|
||||||
<tr>$0</tr>
|
<tr>${0:${VISUAL}}</tr>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet title "XHTML <title>" w
|
snippet title "XHTML <title>" w
|
||||||
|
@ -286,7 +288,7 @@ endsnippet
|
||||||
snippet fieldset "Fieldset" w
|
snippet fieldset "Fieldset" w
|
||||||
<fieldset id="${1/[\w\d]+|( )/(?1:_:\L$0\E)/g}" ${2:class="${3:}"}>
|
<fieldset id="${1/[\w\d]+|( )/(?1:_:\L$0\E)/g}" ${2:class="${3:}"}>
|
||||||
<legend>$1</legend>
|
<legend>$1</legend>
|
||||||
$0
|
${0:${VISUAL}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
|
|
@ -105,13 +105,17 @@ snippet imp
|
||||||
snippet ali
|
snippet ali
|
||||||
alias ${0:module_name}
|
alias ${0:module_name}
|
||||||
snippet test
|
snippet test
|
||||||
test "${1:test_name}" do
|
test "${1:test name}" do
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet testa
|
snippet testa
|
||||||
test "${1:test_name}", %{${2:arg: arg}} do
|
test "${1:test_name}", %{${2:arg: arg}} do
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
|
snippet des
|
||||||
|
describe "${1:test group subject}" do
|
||||||
|
${0}
|
||||||
|
end
|
||||||
snippet exunit
|
snippet exunit
|
||||||
defmodule ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} do
|
defmodule ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} do
|
||||||
use ExUnit.Case, async: true
|
use ExUnit.Case, async: true
|
||||||
|
|
|
@ -171,6 +171,9 @@ snippet pn
|
||||||
# print
|
# print
|
||||||
snippet pr
|
snippet pr
|
||||||
fmt.Printf("%${1:s}\n", ${2:var})
|
fmt.Printf("%${1:s}\n", ${2:var})
|
||||||
|
# println
|
||||||
|
snippet pl
|
||||||
|
fmt.Println("${1:s}")
|
||||||
# range
|
# range
|
||||||
snippet rn
|
snippet rn
|
||||||
range ${0}
|
range ${0}
|
||||||
|
|
|
@ -30,6 +30,11 @@ snippet (f
|
||||||
(function(${1}) {
|
(function(${1}) {
|
||||||
${0}
|
${0}
|
||||||
}(${2}));
|
}(${2}));
|
||||||
|
# Minify safe iife
|
||||||
|
snippet ;fe
|
||||||
|
;(function(${1}) {
|
||||||
|
${0}
|
||||||
|
}(${2}))
|
||||||
# self-defining function
|
# self-defining function
|
||||||
snippet sdf
|
snippet sdf
|
||||||
var ${1:function_name} = function (${2:argument}) {
|
var ${1:function_name} = function (${2:argument}) {
|
||||||
|
|
127
sources_non_forked/vim-snippets/snippets/vhdl.snippets
Normal file
127
sources_non_forked/vim-snippets/snippets/vhdl.snippets
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
#
|
||||||
|
## Libraries
|
||||||
|
|
||||||
|
snippet lib
|
||||||
|
library ${1}
|
||||||
|
use ${1}.${2}
|
||||||
|
|
||||||
|
# Standard Libraries
|
||||||
|
snippet libs
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.ALL;
|
||||||
|
use IEEE.numeric_std.ALL;
|
||||||
|
|
||||||
|
# Xilinx Library
|
||||||
|
snippet libx
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VCOMPONENTS.ALL;
|
||||||
|
|
||||||
|
## Entity Declaration
|
||||||
|
snippet ent
|
||||||
|
entity ${1:`vim_snippets#Filename()`} is
|
||||||
|
generic (
|
||||||
|
${2}
|
||||||
|
);
|
||||||
|
port (
|
||||||
|
${3}
|
||||||
|
);
|
||||||
|
end entity $1;
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
snippet arc
|
||||||
|
architecture ${1:behav} of ${2:`vim_snippets#Filename()`} is
|
||||||
|
|
||||||
|
${3}
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
|
||||||
|
end $1;
|
||||||
|
|
||||||
|
## Declarations
|
||||||
|
# std_logic
|
||||||
|
snippet st
|
||||||
|
signal ${1} : std_logic;
|
||||||
|
# std_logic_vector
|
||||||
|
snippet sv
|
||||||
|
signal ${1} : std_logic_vector (${2} downto 0);
|
||||||
|
# std_logic in
|
||||||
|
snippet ist
|
||||||
|
${1} : in std_logic;
|
||||||
|
# std_logic_vector in
|
||||||
|
snippet isv
|
||||||
|
${1} : in std_logic_vector (${2} downto 0);
|
||||||
|
# std_logic out
|
||||||
|
snippet ost
|
||||||
|
${1} : out std_logic;
|
||||||
|
# std_logic_vector out
|
||||||
|
snippet osv
|
||||||
|
${1} : out std_logic_vector (${2} downto 0);
|
||||||
|
# unsigned
|
||||||
|
snippet un
|
||||||
|
signal ${1} : unsigned (${2} downto 0);
|
||||||
|
## Process Statements
|
||||||
|
# process
|
||||||
|
snippet pr
|
||||||
|
process (${1})
|
||||||
|
begin
|
||||||
|
${2}
|
||||||
|
end process;
|
||||||
|
# process with clock
|
||||||
|
snippet prc
|
||||||
|
process (${1:clk})
|
||||||
|
begin
|
||||||
|
if rising_edge ($1) then
|
||||||
|
${2}
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
# process all
|
||||||
|
snippet pra
|
||||||
|
process (${1:all})
|
||||||
|
begin
|
||||||
|
${2}
|
||||||
|
end process;
|
||||||
|
## Control Statements
|
||||||
|
# if
|
||||||
|
snippet if
|
||||||
|
if ${1} then
|
||||||
|
${2}
|
||||||
|
end if;
|
||||||
|
# if
|
||||||
|
snippet ife
|
||||||
|
if ${1} then
|
||||||
|
${2}
|
||||||
|
else
|
||||||
|
${3}
|
||||||
|
end if;
|
||||||
|
# else
|
||||||
|
snippet el
|
||||||
|
else
|
||||||
|
${1}
|
||||||
|
# if
|
||||||
|
snippet eif
|
||||||
|
elsif ${1} then
|
||||||
|
${2}
|
||||||
|
# case
|
||||||
|
snippet ca
|
||||||
|
case ${1} is
|
||||||
|
${2}
|
||||||
|
end case;
|
||||||
|
# when
|
||||||
|
snippet wh
|
||||||
|
when ${1} =>
|
||||||
|
${2}
|
||||||
|
# for
|
||||||
|
snippet for
|
||||||
|
for ${1:i} in ${2} ${3:to} ${4} loop
|
||||||
|
${5}
|
||||||
|
end loop;
|
||||||
|
# while
|
||||||
|
snippet wh
|
||||||
|
while ${1} loop
|
||||||
|
${2}
|
||||||
|
end loop;
|
||||||
|
## Misc
|
||||||
|
# others
|
||||||
|
snippet oth
|
||||||
|
(others => '${1:0}');
|
Loading…
Reference in a new issue