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],
|
||||
\ 'bufname_mod': ['s:bufname_mod', ':t'],
|
||||
\ 'bufpath_mod': ['s:bufpath_mod', ':~:.:h'],
|
||||
\ 'formatline_func': ['s:flfunc', 's:formatline(v:val)'],
|
||||
\ }, {
|
||||
\ 'open_multiple_files': 's:opmul',
|
||||
\ 'regexp': 's:regexp',
|
||||
|
@ -203,11 +204,11 @@ let s:hlgrps = {
|
|||
\ }
|
||||
|
||||
" lname, sname of the basic(non-extension) modes
|
||||
let s:coretypes = [
|
||||
let s:coretypes = filter([
|
||||
\ ['files', 'fil'],
|
||||
\ ['buffers', 'buf'],
|
||||
\ ['mru files', 'mru'],
|
||||
\ ]
|
||||
\ ], 'index(g:ctrlp_types, v:val[1])!=-1')
|
||||
|
||||
" Get the options {{{2
|
||||
fu! s:opts(...)
|
||||
|
@ -439,9 +440,9 @@ fu! s:UserCmd(lscmd)
|
|||
en
|
||||
if has('patch-7.4-597') && !(has('win32') || has('win64'))
|
||||
let g:ctrlp_allfiles = systemlist(printf(lscmd, path))
|
||||
else
|
||||
el
|
||||
let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n")
|
||||
end
|
||||
en
|
||||
if exists('+ssl') && exists('ssl')
|
||||
let &ssl = ssl
|
||||
cal map(g:ctrlp_allfiles, 'tr(v:val, "\\", "/")')
|
||||
|
@ -624,7 +625,7 @@ fu! s:Render(lines, pat)
|
|||
en
|
||||
if s:mw_order == 'btt' | cal reverse(lines) | en
|
||||
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 s:unmarksigns()
|
||||
cal s:remarksigns()
|
||||
|
@ -719,7 +720,7 @@ fu! s:PrtBS()
|
|||
if empty(s:prompt[0]) && s:brfprt != 0
|
||||
cal s:PrtExit()
|
||||
retu
|
||||
endif
|
||||
en
|
||||
unl! s:hstgot
|
||||
let [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1]
|
||||
cal s:BuildPrompt(1)
|
||||
|
@ -877,12 +878,13 @@ fu! s:PrtFocusMap(char)
|
|||
endf
|
||||
|
||||
fu! s:PrtClearCache()
|
||||
if s:itemtype == 0
|
||||
let ct = s:curtype()
|
||||
if ct == 'fil'
|
||||
cal ctrlp#clr()
|
||||
elsei s:itemtype > 2
|
||||
elsei s:itemtype >= len(s:coretypes)
|
||||
cal ctrlp#clr(s:statypes[s:itemtype][1])
|
||||
en
|
||||
if s:itemtype == 2
|
||||
if ct == 'mru'
|
||||
let g:ctrlp_lines = ctrlp#mrufiles#refresh()
|
||||
el
|
||||
cal ctrlp#setlines()
|
||||
|
@ -893,9 +895,10 @@ fu! s:PrtClearCache()
|
|||
endf
|
||||
|
||||
fu! s:PrtDeleteEnt()
|
||||
if s:itemtype == 2
|
||||
let ct = s:curtype()
|
||||
if ct == 'mru'
|
||||
cal s:PrtDeleteMRU()
|
||||
elsei s:itemtype == 1
|
||||
elsei ct == 'buf'
|
||||
cal s:delbuf()
|
||||
elsei type(s:getextvar('wipe')) == 1
|
||||
cal s:delent(s:getextvar('wipe'))
|
||||
|
@ -903,7 +906,7 @@ fu! s:PrtDeleteEnt()
|
|||
endf
|
||||
|
||||
fu! s:PrtDeleteMRU()
|
||||
if s:itemtype == 2
|
||||
if s:curtype() == 'mru'
|
||||
cal s:delent('ctrlp#mrufiles#remove')
|
||||
en
|
||||
endf
|
||||
|
@ -1011,7 +1014,7 @@ fu! s:ToggleByFname()
|
|||
endf
|
||||
|
||||
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)
|
||||
cal ctrlp#setlines(next)
|
||||
cal ctrlp#syntax()
|
||||
|
@ -1151,7 +1154,7 @@ fu! s:AcceptSelection(action)
|
|||
if subm | if s:SpecInputs(str) | retu | en | en
|
||||
" Get the selected line
|
||||
let line = ctrlp#getcline()
|
||||
if !subm && !s:itemtype && line == '' && line('.') > s:offset
|
||||
if !subm && s:curtype() != 'fil' && line == '' && line('.') > s:offset
|
||||
\ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$'
|
||||
cal s:CreateNewFile(md) | retu
|
||||
en
|
||||
|
@ -1161,7 +1164,7 @@ fu! s:AcceptSelection(action)
|
|||
let actfunc = s:openfunc[s:ctype]
|
||||
let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list'
|
||||
el
|
||||
if s:itemtype < 3
|
||||
if s:itemtype < len(s:coretypes)
|
||||
let [actfunc, type] = ['ctrlp#acceptfile', 'dict']
|
||||
el
|
||||
let [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')]
|
||||
|
@ -1206,15 +1209,16 @@ fu! s:CreateNewFile(...)
|
|||
endf
|
||||
" * OpenMulti() {{{1
|
||||
fu! s:MarkToOpen()
|
||||
let ct = s:curtype()
|
||||
if s:bufnr <= 0 || s:opmul == '0'
|
||||
\ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 )
|
||||
\ || ( s:itemtype >= len(s:coretypes) && s:getextvar('opmul') != 1 )
|
||||
retu
|
||||
en
|
||||
let line = ctrlp#getcline()
|
||||
|
||||
" Do not allow to mark modified or current buffer
|
||||
let bufnr = s:bufnrfilpath(line)[0]
|
||||
if (s:itemtype == 1 && s:delbufcond(bufnr))
|
||||
if (ct == 'buf' && s:delbufcond(bufnr))
|
||||
retu
|
||||
en
|
||||
|
||||
|
@ -1247,7 +1251,7 @@ endf
|
|||
fu! s:OpenMulti(...)
|
||||
let has_marked = exists('s:marked')
|
||||
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
|
||||
en
|
||||
" Get the options
|
||||
|
@ -1442,7 +1446,8 @@ fu! s:shortest(lens)
|
|||
endf
|
||||
|
||||
fu! s:mixedsort(...)
|
||||
if s:itemtype == 1
|
||||
let ct = s:curtype()
|
||||
if ct == 'buf'
|
||||
let pat = '[\/]\?\[\d\+\*No Name\]$'
|
||||
if a:1 =~# pat && a:2 =~# pat | retu 0
|
||||
elsei a:1 =~# pat | retu 1
|
||||
|
@ -1453,10 +1458,10 @@ fu! s:mixedsort(...)
|
|||
let ms = []
|
||||
if s:res_count < 21
|
||||
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
|
||||
en
|
||||
if s:itemtype =~ '^[12]$'
|
||||
if ct =~ '^\(buf\|mru\)$'
|
||||
let ms += [s:compmref(a:1, a:2)]
|
||||
let cln = cml ? cln : 0
|
||||
en
|
||||
|
@ -1540,7 +1545,8 @@ endf
|
|||
" Line formatting {{{3
|
||||
fu! s:formatline(str)
|
||||
let str = a:str
|
||||
if s:itemtype == 1
|
||||
let ct = s:curtype()
|
||||
if ct == 'buf'
|
||||
let bufnr = s:bufnrfilpath(str)[0]
|
||||
let parts = s:bufparts(bufnr)
|
||||
let str = printf('%'.s:bufnr_width.'s', bufnr)
|
||||
|
@ -1560,7 +1566,7 @@ fu! s:formatline(str)
|
|||
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 )
|
||||
endf
|
||||
|
||||
|
@ -1615,7 +1621,7 @@ fu! s:lash(...)
|
|||
endf
|
||||
|
||||
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
|
||||
|
||||
fu! ctrlp#igncwd(cwd)
|
||||
|
@ -1649,11 +1655,11 @@ fu! ctrlp#dirnfile(entries)
|
|||
endf
|
||||
|
||||
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 call(s:usrign, [a:item, a:type])
|
||||
retu 1
|
||||
end
|
||||
en
|
||||
elsei s:igntype == 4
|
||||
if has_key(s:usrign, a:type) && 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'] != ''
|
||||
\ && call(s:usrign['func'], [a:item, a:type])
|
||||
retu 1
|
||||
end
|
||||
end
|
||||
en
|
||||
en
|
||||
retu 0
|
||||
endf
|
||||
|
||||
|
@ -1772,7 +1778,7 @@ fu! ctrlp#syntax()
|
|||
exe "sy match CtrlPLinePre '^".escape(get(g:, 'ctrlp_line_prefix', '>'),'^$.*~\')."'"
|
||||
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 CtrlPBufferInd concealends matchgroup=Ignore start='<bi>' end='</bi>'
|
||||
sy region CtrlPBufferRegion concealends matchgroup=Ignore start='<bn>' end='</bn>'
|
||||
|
@ -1810,7 +1816,7 @@ fu! s:highlight(pat, grp)
|
|||
if s:byfname()
|
||||
" Make sure there are no slashes in our match
|
||||
let beginning = beginning.'\([^\/]*$\)\@='
|
||||
end
|
||||
en
|
||||
|
||||
for i in range(len(chars))
|
||||
" Surround our current target letter with \zs and \ze so it only
|
||||
|
@ -1822,14 +1828,14 @@ fu! s:highlight(pat, grp)
|
|||
if i == 0
|
||||
let charcopy[i] = '\zs'.charcopy[i].'\ze'
|
||||
let middle = join(charcopy, '.\{-}')
|
||||
else
|
||||
el
|
||||
let before = join(charcopy[0:i-1], '.\{-}')
|
||||
let after = join(charcopy[i+1:-1], '.\{-}')
|
||||
let c = charcopy[i]
|
||||
" for abc, match either ab.\{-}c or a.*b.\{-}c in that order
|
||||
let cpat = '\(\zs'.c.'\|'.'.*\zs'.c.'\)\ze.*'
|
||||
let middle = before.cpat.after
|
||||
endif
|
||||
en
|
||||
|
||||
" Now we matchadd for each letter, the basic form being:
|
||||
" ^.*\zsx\ze.*$, but with our pattern we built above for the letter,
|
||||
|
@ -1956,7 +1962,7 @@ fu! s:isabs(path)
|
|||
endf
|
||||
|
||||
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
|
||||
el
|
||||
let filpath = s:dyncwd.s:lash().a:line
|
||||
|
@ -2140,12 +2146,13 @@ fu! s:modevar()
|
|||
endf
|
||||
|
||||
fu! s:nosort()
|
||||
retu s:matcher != {} || s:nolim == 1 || ( s:itemtype == 2 && s:mrudef )
|
||||
\ || ( s:itemtype =~ '\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort
|
||||
let ct = s:curtype()
|
||||
retu s:matcher != {} || s:nolim == 1 || ( ct == 'mru' && s:mrudef )
|
||||
\ || ( ct =~ '^\(buf\|mru\)$' && s:prompt == ['', '', ''] ) || !s:dosort
|
||||
endf
|
||||
|
||||
fu! s:byfname()
|
||||
retu s:itemtype != 1 && s:ispath && s:byfname
|
||||
retu s:curtype() != 'buf' && s:ispath && s:byfname
|
||||
endf
|
||||
|
||||
fu! s:narrowable()
|
||||
|
@ -2374,13 +2381,17 @@ fu! s:buildpat(lst)
|
|||
retu pat
|
||||
endf
|
||||
|
||||
fu! s:curtype()
|
||||
return s:CurTypeName()[1]
|
||||
endf
|
||||
|
||||
fu! s:mfunc()
|
||||
let mfunc = 'match'
|
||||
if s:byfname()
|
||||
let mfunc = 's:matchfname'
|
||||
elsei s:itemtype == 1
|
||||
elsei s:curtype() == 'buf'
|
||||
let mfunc = 's:matchbuf'
|
||||
elsei s:itemtype > 2
|
||||
elsei s:itemtype >= len(s:coretypes)
|
||||
let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
|
||||
if has_key(matchtypes, s:matchtype)
|
||||
let mfunc = matchtypes[s:matchtype]
|
||||
|
@ -2439,7 +2450,7 @@ fu! s:insertcache(str)
|
|||
endf
|
||||
" Extensions {{{2
|
||||
fu! s:mtype()
|
||||
retu s:itemtype > 2 ? s:getextvar('type') : 'path'
|
||||
retu s:itemtype >= len(s:coretypes) ? s:getextvar('type') : 'path'
|
||||
endf
|
||||
|
||||
fu! s:execextvar(key)
|
||||
|
@ -2450,8 +2461,8 @@ fu! s:execextvar(key)
|
|||
endf
|
||||
|
||||
fu! s:getextvar(key)
|
||||
if s:itemtype > 2
|
||||
let vars = g:ctrlp_ext_vars[s:itemtype - 3]
|
||||
if s:itemtype >= len(s:coretypes) && len(g:ctrlp_ext_vars) > 0
|
||||
let vars = g:ctrlp_ext_vars[s:itemtype - len(s:coretypes)]
|
||||
retu has_key(vars, a:key) ? vars[a:key] : -1
|
||||
en
|
||||
retu get(g:, 'ctrlp_' . s:matchtype . '_' . a:key, -1)
|
||||
|
@ -2505,7 +2516,8 @@ endf
|
|||
fu! ctrlp#setlines(...)
|
||||
if a:0 | let s:itemtype = a:1 | en
|
||||
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)
|
||||
cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val["init"])')
|
||||
en
|
||||
|
@ -2514,11 +2526,11 @@ endf
|
|||
|
||||
" Returns [lname, sname]
|
||||
fu! s:CurTypeName()
|
||||
if s:itemtype < 3
|
||||
return s:coretypes[s:itemtype]
|
||||
else
|
||||
if s:itemtype < len(s:coretypes)
|
||||
return filter(copy(s:coretypes), 'v:val[1]==g:ctrlp_types[s:itemtype]')[0]
|
||||
el
|
||||
return [s:getextvar("lname"), s:getextvar('sname')]
|
||||
endif
|
||||
en
|
||||
endfu
|
||||
|
||||
fu! s:ExitIfSingleCandidate()
|
||||
|
@ -2526,7 +2538,7 @@ fu! s:ExitIfSingleCandidate()
|
|||
call s:AcceptSelection('e')
|
||||
call ctrlp#exit()
|
||||
return 1
|
||||
endif
|
||||
en
|
||||
return 0
|
||||
endfu
|
||||
|
||||
|
@ -2539,14 +2551,23 @@ fu! ctrlp#init(type, ...)
|
|||
cal s:SetWD(a:0 ? a:1 : {})
|
||||
cal s:MapNorms()
|
||||
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 s:SetDefTxt()
|
||||
let curName = s:CurTypeName()
|
||||
let shouldExitSingle = index(s:opensingle, curName[0])>=0 || index(s:opensingle, curName[1])>=0
|
||||
if shouldExitSingle && s:ExitIfSingleCandidate()
|
||||
return 0
|
||||
endif
|
||||
en
|
||||
cal s:BuildPrompt(1)
|
||||
if s:keyloop | cal s:KeyLoop() | en
|
||||
return 1
|
||||
|
|
|
@ -68,6 +68,7 @@ Overview:~
|
|||
|ctrlp_open_single_match|.....Automatically accept when only one candidate.
|
||||
|ctrlp_brief_prompt|..........Exit CtrlP on empty prompt by <bs>.
|
||||
|ctrlp_match_current_file|....Include current file in match entries.
|
||||
|ctrlp_types|.................Names of builtin types.
|
||||
|
||||
MRU mode:
|
||||
|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'*
|
||||
Includes the current file in the match entries:
|
||||
Includes the current file in the match entries: >
|
||||
let g:ctrlp_match_current_file = 1
|
||||
|
||||
By default, the current file is excluded from the list.
|
||||
|
||||
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'*
|
||||
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
|
||||
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,
|
||||
\ 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_cmd') | let g:ctrlp_cmd = 'CtrlP' | en
|
||||
|
||||
com! -n=? -com=dir CtrlP cal ctrlp#init(0, { 'dir': <q-args> })
|
||||
com! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init(2, { 'dir': <q-args> })
|
||||
com! -n=? -com=dir CtrlP cal ctrlp#init('fil', { '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! -bar CtrlPClearCache cal ctrlp#clr()
|
||||
|
@ -29,9 +35,9 @@ com! -bar CtrlPClearAllCaches cal ctrlp#clra()
|
|||
com! -bar ClearCtrlPCache cal ctrlp#clr()
|
||||
com! -bar ClearAllCtrlPCaches cal ctrlp#clra()
|
||||
|
||||
com! -bar CtrlPCurWD cal ctrlp#init(0, { 'mode': '' })
|
||||
com! -bar CtrlPCurFile cal ctrlp#init(0, { 'mode': 'c' })
|
||||
com! -bar CtrlPRoot cal ctrlp#init(0, { 'mode': 'r' })
|
||||
com! -bar CtrlPCurWD cal ctrlp#init('fil', { 'mode': '' })
|
||||
com! -bar CtrlPCurFile cal ctrlp#init('fil', { 'mode': 'c' })
|
||||
com! -bar CtrlPRoot cal ctrlp#init('fil', { 'mode': 'r' })
|
||||
|
||||
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! -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
|
||||
\ 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 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.5. [The `perl` checker has stopped working...](#faqperl)
|
||||
4.6. [What happened to the `rustc` checker?](#faqrust)
|
||||
4.7. [What happened to the `xcrun` checker?](#faqxcrun)
|
||||
4.8. [I run a checker and the location list is not updated...](#faqloclist)
|
||||
4.8. [I run`:lopen` or `:lwindow` and the error window is empty...](#faqloclist)
|
||||
4.9. [How can I pass additional arguments to a checker?](#faqargs)
|
||||
4.10. [Syntastic supports several checkers for my filetype - how do I tell which one(s) to use?](#faqcheckers)
|
||||
4.11. [What is the difference between syntax checkers and style checkers?](#faqstyle)
|
||||
4.12. [I have enabled multiple checkers for the current filetype. How can I display all errors from all checkers together?](#faqaggregate)
|
||||
4.13. [How can I jump between the different errors without using the location list at the bottom of the window?](#faqlnext)
|
||||
4.14. [My favourite checker needs to load a configuration file from the project's root rather than the current directory...](#faqconfig)
|
||||
4.15. [The error window is closed automatically when I :quit the current buffer but not when I :bdelete it?](#faqbdelete)
|
||||
4.7. [What happened to the `tsc` checker?](#faqtsc)
|
||||
4.8. [What happened to the `xcrun` checker?](#faqxcrun)
|
||||
4.9. [I run a checker and the location list is not updated...](#faqloclist)
|
||||
4.9. [I run`:lopen` or `:lwindow` and the error window is empty...](#faqloclist)
|
||||
4.10. [How can I pass additional arguments to a checker?](#faqargs)
|
||||
4.11. [Syntastic supports several checkers for my filetype - how do I tell which one(s) to use?](#faqcheckers)
|
||||
4.12. [What is the difference between syntax checkers and style checkers?](#faqstyle)
|
||||
4.13. [I have enabled multiple checkers for the current filetype. How can I display all errors from all checkers together?](#faqaggregate)
|
||||
4.14. [How can I jump between the different errors without using the location list at the bottom of the window?](#faqlnext)
|
||||
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)
|
||||
|
||||
- - -
|
||||
|
@ -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
|
||||
compile their code or execute their script to find them.
|
||||
|
||||
At the time of this writing, syntastic has checking plugins for ActionScript,
|
||||
Ada, Ansible configurations, API Blueprint, AppleScript, AsciiDoc, Assembly
|
||||
languages, BEMHTML, Bro, Bourne shell, C, C++, C#, Cabal, Chef, CoffeeScript,
|
||||
Coco, Coq, CSS, Cucumber, CUDA, D, Dart, DocBook, Dockerfile, Dust, Elixir,
|
||||
Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml, Haskell, Haxe,
|
||||
Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex, Limbo, LISP,
|
||||
LLVM intermediate language, Lua, Markdown, MATLAB, Mercury, NASM, Nix,
|
||||
Objective-C, Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Portable
|
||||
Object, OS X and iOS property lists, Pug (formerly Jade), Puppet, Python,
|
||||
QML, R, Racket, RDF TriG, RDF Turtle, Relax NG, reStructuredText, RPM spec,
|
||||
Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, SQL, Stylus, Tcl, TeX, Texinfo,
|
||||
Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, XQuery,
|
||||
YACC, YAML, YANG data models, z80, Zope page templates, and Zsh. See the
|
||||
[manual][checkers] for details about the corresponding supported checkers
|
||||
(`:help syntastic-checkers` in Vim).
|
||||
At the time of this writing, syntastic has checking plugins for ACPI
|
||||
Source Language, ActionScript, Ada, Ansible configurations, API Blueprint,
|
||||
AppleScript, AsciiDoc, Assembly languages, BEMHTML, Bro, Bourne shell, C,
|
||||
C++, C#, Cabal, Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart,
|
||||
DocBook, Dockerfile, Dust, Elixir, Erlang, eRuby, Fortran, Gentoo metadata,
|
||||
GLSL, Go, Haml, Haskell, Haxe, Handlebars, HSS, HTML, Java, JavaScript, JSON,
|
||||
JSX, LESS, Lex, Limbo, LISP, LLVM intermediate language, Lua, Markdown,
|
||||
MATLAB, Mercury, NASM, Nix, Objective-C, Objective-C++, OCaml, Perl, Perl
|
||||
POD, PHP, gettext Portable Object, OS X and iOS property lists, Pug (formerly
|
||||
Jade), Puppet, Python, QML, R, Racket, RDF TriG, RDF Turtle, Relax NG,
|
||||
reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, SQL,
|
||||
Stylus, Tcl, TeX, Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml,
|
||||
XML, XSLT, XQuery, YACC, YAML, YANG data models, z80, Zope page templates, and
|
||||
Zsh. See the [manual][checkers] for details about the corresponding supported
|
||||
checkers (`:help syntastic-checkers` in Vim).
|
||||
|
||||
A number of third-party Vim plugins also provide checkers for syntastic,
|
||||
for example: [merlin][merlin], [omnisharp-vim][omnisharp], [rust.vim][rust],
|
||||
[syntastic-extras][myint], [syntastic-more][roktas], [vim-crystal][crystal],
|
||||
[vim-eastwood][eastwood], and [vim-swift][swift].
|
||||
A number of third-party Vim plugins also provide checkers for syntastic, for
|
||||
example: [merlin][merlin], [omnisharp-vim][omnisharp], [rust.vim][rust],
|
||||
[syntastic-extras][myint], [syntastic-more][roktas], [tsuquyomi][tsuquyomi],
|
||||
[vim-crystal][crystal], [vim-eastwood][eastwood], and [vim-swift][swift].
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
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>
|
||||
|
||||
__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 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>
|
||||
|
||||
__4.8. 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 a checker and the location list is not updated...__
|
||||
__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`
|
||||
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>
|
||||
|
||||
__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
|
||||
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>
|
||||
|
||||
__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?__
|
||||
|
||||
A. Stick a line like this in your `vimrc`:
|
||||
|
@ -383,7 +392,7 @@ filetype of the current file is `php`).
|
|||
|
||||
<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
|
||||
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>
|
||||
|
||||
__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?__
|
||||
|
||||
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>
|
||||
|
||||
__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?__
|
||||
|
||||
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>
|
||||
|
||||
__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...__
|
||||
|
||||
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>
|
||||
|
||||
__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?__
|
||||
|
||||
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
|
||||
[tidy]: http://www.htacg.org/tidy-html5/
|
||||
[tidy_old]: http://tidy.sourceforge.net/
|
||||
[tsuquyomi]: https://github.com/Quramy/tsuquyomi/
|
||||
[unimpaired]: https://github.com/tpope/vim-unimpaired
|
||||
[vam]: https://github.com/MarcWeber/vim-addon-manager
|
||||
[vim]: http://www.vim.org/
|
||||
|
|
|
@ -6,6 +6,7 @@ SYNTAX CHECKERS BY LANGUAGE *syntastic-checkers-lang*
|
|||
|
||||
|syntastic| comes with checkers for the following languages:
|
||||
|
||||
ACPI Source Language.....................|syntastic-checkers-asl|
|
||||
ActionScript.............................|syntastic-checkers-actionscript|
|
||||
Ada......................................|syntastic-checkers-ada|
|
||||
Ansible..................................|syntastic-checkers-ansible|
|
||||
|
@ -132,6 +133,37 @@ SYNTAX CHECKERS BY LANGUAGE *syntastic-checkers-lang*
|
|||
|
||||
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*
|
||||
|
||||
|
@ -344,7 +376,7 @@ accepts the standard options described at |syntastic-config-makeprg|.
|
|||
==============================================================================
|
||||
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|
|
||||
|
||||
|
@ -432,7 +464,7 @@ The following checkers are available for BEMHTML (filetype "bemhtml"):
|
|||
Name: bemhtmllint
|
||||
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:
|
||||
|
||||
https://github.com/SevInf/bemhtml-lint
|
||||
|
@ -492,9 +524,9 @@ Checker options~
|
|||
This checker is initialised using the "makeprgBuild()" function and thus it
|
||||
accepts the standard options described at |syntastic-config-makeprg|.
|
||||
|
||||
Aditionally:
|
||||
Additionally:
|
||||
|
||||
*g:syntastic_avrgcc_config_file*
|
||||
*'g:syntastic_avrgcc_config_file'*
|
||||
Type: string
|
||||
Default: ".syntastic_avrgcc_config"
|
||||
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"):
|
||||
|
||||
1. ClangCheck...............|syntastic-cpp-clang_check|
|
||||
2. Clang-Tidy...............|syntastic-cpp-clang_tidy|
|
||||
3. Cppcheck.................|syntastic-cpp-cppcheck|
|
||||
4. Cpplint..................|syntastic-cpp-cpplint|
|
||||
5. GCC......................|syntastic-cpp-gcc|
|
||||
6. OClint...................|syntastic-cpp-oclint|
|
||||
7. PC-Lint..................|syntastic-cpp-pc_lint|
|
||||
8. Vera++...................|syntastic-cpp-verapp|
|
||||
1. AVR-GCC..................|syntastic-cpp-avrgcc|
|
||||
2. ClangCheck...............|syntastic-cpp-clang_check|
|
||||
3. Clang-Tidy...............|syntastic-cpp-clang_tidy|
|
||||
4. Cppcheck.................|syntastic-cpp-cppcheck|
|
||||
5. Cpplint..................|syntastic-cpp-cpplint|
|
||||
6. GCC......................|syntastic-cpp-gcc|
|
||||
7. OClint...................|syntastic-cpp-oclint|
|
||||
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
|
||||
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
||||
|
@ -948,7 +1002,7 @@ then ignored.
|
|||
See also: |syntastic-c-clang_check|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
2. Clang-Tidy *syntastic-cpp-clang_tidy*
|
||||
3. Clang-Tidy *syntastic-cpp-clang_tidy*
|
||||
|
||||
Name: clang_tidy
|
||||
Maintainer: Benjamin Bannier <bbannier@gmail.com>
|
||||
|
@ -999,7 +1053,7 @@ then ignored.
|
|||
See also: |syntastic-c-clang_tidy|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3. Cppcheck *syntastic-cpp-cppcheck*
|
||||
4. Cppcheck *syntastic-cpp-cppcheck*
|
||||
|
||||
Name: cppcheck
|
||||
Maintainer: LCD 47 <lcd047@gmail.com>
|
||||
|
@ -1025,7 +1079,7 @@ one option per line (cf. |syntastic-config-files|).
|
|||
See also: |syntastic-c-cppcheck|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
4. Cpplint *syntastic-cpp-cpplint*
|
||||
5. Cpplint *syntastic-cpp-cpplint*
|
||||
|
||||
Name: cpplint
|
||||
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"
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
5. GCC *syntastic-cpp-gcc*
|
||||
6. GCC *syntastic-cpp-gcc*
|
||||
|
||||
Name: gcc
|
||||
Maintainer: Gregor Uhlenheuer <kongo2002@gmail.com>
|
||||
|
@ -1158,7 +1212,7 @@ executable.
|
|||
See also: |syntastic-c-gcc|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
6. OClint *syntastic-cpp-oclint*
|
||||
7. OClint *syntastic-cpp-oclint*
|
||||
|
||||
Name: oclint
|
||||
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|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
7. PC-Lint *syntastic-cpp-pc_lint*
|
||||
8. PC-Lint *syntastic-cpp-pc_lint*
|
||||
|
||||
Name: pc_lint
|
||||
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|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
8. Vera++ *syntastic-cpp-verapp*
|
||||
9. Vera++ *syntastic-cpp-verapp*
|
||||
|
||||
Name: verapp
|
||||
Maintainer: Lucas Verney <phyks@phyks.me>
|
||||
|
@ -1450,7 +1504,7 @@ The following checkers are available for Coq (filetype "coq"):
|
|||
Name: coqtop
|
||||
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:
|
||||
|
||||
http://coq.inria.fr/
|
||||
|
@ -1989,8 +2043,8 @@ Name: syntaxerl
|
|||
Maintainer: locojay
|
||||
|
||||
"SyntaxErl" is a syntax checker for Erlang. It uses "rebar"
|
||||
(https://github.com/basho/rebar) to determine correct deps and libs paths.
|
||||
See the project's page for more information:
|
||||
(https://github.com/basho/rebar) to determine correct dependencies and library
|
||||
paths. See the project's page for more information:
|
||||
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
*'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://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:
|
||||
|
||||
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.
|
||||
Consequently, errors might appear on surprising lines if you enable this
|
||||
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
|
||||
"NoseOfYeti":
|
||||
|
||||
|
@ -4741,7 +4795,7 @@ setting of "lint.style".
|
|||
Name: lintr
|
||||
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:
|
||||
|
||||
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/
|
||||
|
||||
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/
|
||||
|
||||
|
@ -4851,7 +4905,7 @@ The following checkers are available for R Markdown (filetype "rmd"):
|
|||
Name: lintr
|
||||
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:
|
||||
|
||||
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'|
|
||||
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
|
||||
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
|
||||
|
@ -5081,7 +5135,7 @@ The following checkers are available for Linux RPM packages (filetype "spec"):
|
|||
Name: rpmlint
|
||||
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:
|
||||
|
||||
http://sourceforge.net/projects/rpmlint/
|
||||
|
@ -5165,7 +5219,7 @@ Name: macruby
|
|||
Maintainer: Martin Grenfell <martin.grenfell@gmail.com>
|
||||
|
||||
"MacRuby" is an implementation of Ruby for Mac OS X. See the project's
|
||||
pagefor details:
|
||||
page for details:
|
||||
|
||||
http://www.macruby.org/
|
||||
|
||||
|
@ -5864,7 +5918,7 @@ The following checkers are available for Texinfo (filetype "texinfo"):
|
|||
Name: makeinfo
|
||||
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":
|
||||
|
||||
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"):
|
||||
|
||||
1. ESLint...................|syntastic-typescript-eslint|
|
||||
2. tsc......................|syntastic-typescript-tsc|
|
||||
3. TSLint...................|syntastic-typescript-tslint|
|
||||
2. TSLint...................|syntastic-typescript-tslint|
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
1. ESLint *syntastic-typescript-eslint*
|
||||
|
@ -6118,29 +6171,7 @@ as "typescript-vim":
|
|||
See also: |syntastic-html-eslint|, |syntastic-javascript-eslint|.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
2. tsc *syntastic-typescript-tsc*
|
||||
|
||||
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*
|
||||
2. TSLint *syntastic-typescript-tslint*
|
||||
|
||||
Name: tslint
|
||||
Maintainer: Seon-Wook Park <seon.wook@swook.net>
|
||||
|
@ -6861,6 +6892,7 @@ syntastic-specific configuration files:
|
|||
OpenCOBOL (|syntastic-cobol-cobc|)
|
||||
|
||||
C++~
|
||||
AVR-GCC (|syntastic-cpp-avrgcc|)
|
||||
ClangCheck (|syntastic-cpp-clang_check|)
|
||||
Clang-Tidy (|syntastic-cpp-clang_tidy|)
|
||||
Cppcheck (|syntastic-cpp-cppcheck|)
|
||||
|
|
|
@ -19,7 +19,7 @@ if has('reltime')
|
|||
lockvar! g:_SYNTASTIC_START
|
||||
endif
|
||||
|
||||
let g:_SYNTASTIC_VERSION = '3.7.0-162'
|
||||
let g:_SYNTASTIC_VERSION = '3.7.0-177'
|
||||
lockvar g:_SYNTASTIC_VERSION
|
||||
|
||||
" Sanity checks {{{1
|
||||
|
|
|
@ -12,6 +12,7 @@ let s:_DEFAULT_CHECKERS = {
|
|||
\ 'apiblueprint': ['drafter'],
|
||||
\ 'applescript': ['osacompile'],
|
||||
\ 'asciidoc': ['asciidoc'],
|
||||
\ 'asl': ['iasl'],
|
||||
\ 'asm': ['gcc'],
|
||||
\ 'bro': ['bro'],
|
||||
\ 'bemhtml': ['bemhtmllint'],
|
||||
|
@ -93,7 +94,7 @@ let s:_DEFAULT_CHECKERS = {
|
|||
\ 'trig': ['rapper'],
|
||||
\ 'turtle': ['rapper'],
|
||||
\ 'twig': ['twiglint'],
|
||||
\ 'typescript': ['tsc'],
|
||||
\ 'typescript': [],
|
||||
\ 'vala': ['valac'],
|
||||
\ 'verilog': ['verilator'],
|
||||
\ '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
|
||||
"Description: Syntax checking plugin for syntastic.vim
|
||||
"Description: Syntax checking plugin for syntastic
|
||||
"Maintainer: Karel <karelishere at gmail dot com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
|
@ -22,10 +22,12 @@ endif
|
|||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let s:opt_x = { 'c': 'c', 'cpp': 'c++' }
|
||||
|
||||
function! SyntaxCheckers_c_avrgcc_GetLocList() dict
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ '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 =
|
||||
\ '%-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:
|
||||
|
||||
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`:
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
* 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. Checkout the demo to see it in action: https://github.com/fatih/vim-go/pull/927 [gh-927]
|
||||
* **`: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 **`: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]
|
||||
* 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]
|
||||
* 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]
|
||||
* 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]
|
||||
* 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:
|
||||
* `: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]
|
||||
* 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: 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: moved `:GoCoverage` highlight definition into go's syntax file for more customizability [gh-962]
|
||||
|
||||
|
||||
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 `: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 `:GoFmt` to not change the permissions of saved file. Now original file permissions are restored [gh-922]
|
||||
|
||||
BACKWARDS INCOMPATIBILITIES:
|
||||
|
||||
|
|
|
@ -50,10 +50,16 @@ disabled/enabled easily.
|
|||
in their own new terminal. (beta)
|
||||
* 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
|
||||
|
||||
Master branch is supposed to be a development branch. So stuff here can break and change.
|
||||
Please try use always the [latest release](https://github.com/fatih/vim-go/releases/latest)
|
||||
Master branch is supposed to be a development branch. So stuff here can break
|
||||
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
|
||||
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'`
|
||||
* [Vundle](https://github.com/gmarik/vundle)
|
||||
* `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`,
|
||||
`goimports`, etc.). You can easily install them with the included
|
||||
|
@ -84,7 +92,8 @@ installed binaries.
|
|||
completion (completion by type) install:
|
||||
[neocomplete](https://github.com/Shougo/neocomplete.vim) for Vim or
|
||||
[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
|
||||
[tagbar](https://github.com/majutsushi/tagbar).
|
||||
* For snippet features install:
|
||||
|
@ -270,7 +279,6 @@ To resolve this:
|
|||
let g:go_list_type = "quickfix"
|
||||
```
|
||||
|
||||
|
||||
## More info
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
just a way to support vim-go's ongoing development directly. Thanks!
|
||||
[being a patron](https://www.patreon.com/fatih)!
|
||||
|
||||
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)
|
||||
|
||||
|
|
|
@ -41,7 +41,11 @@ function! go#asmfmt#Format()
|
|||
|
||||
" Replace the current file with the temp file; then reload the buffer.
|
||||
let old_fileformat = &fileformat
|
||||
" save old file permissions
|
||||
let original_fperm = getfperm(expand('%'))
|
||||
call rename(l:tmpname, expand('%'))
|
||||
" restore old file permissions
|
||||
call setfperm(expand('%'), original_fperm)
|
||||
silent edit!
|
||||
let &fileformat = old_fileformat
|
||||
let &syntax = &syntax
|
||||
|
@ -51,4 +55,15 @@ function! go#asmfmt#Format()
|
|||
call winrestview(l:curw)
|
||||
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
|
||||
|
|
|
@ -143,6 +143,8 @@ endfunction
|
|||
" is given(which are passed directly to 'go install') it tries to install those
|
||||
" packages. Errors are populated in the location window.
|
||||
function! go#cmd#Install(bang, ...)
|
||||
let old_gopath = $GOPATH
|
||||
let $GOPATH = go#path#Detect()
|
||||
let default_makeprg = &makeprg
|
||||
|
||||
" :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
|
||||
endif
|
||||
|
||||
let $GOPATH = old_gopath
|
||||
let &makeprg = default_makeprg
|
||||
endfunction
|
||||
|
||||
|
|
|
@ -153,4 +153,16 @@ function! go#complete#Complete(findstart, base)
|
|||
endif
|
||||
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
|
||||
|
|
|
@ -134,9 +134,9 @@ endfunction
|
|||
" Generates matches to be added to matchaddpos for the given coverage profile
|
||||
" block
|
||||
function! go#coverage#genmatch(cov)
|
||||
let color = 'covered'
|
||||
let color = 'goCoverageCovered'
|
||||
if a:cov.cnt == 0
|
||||
let color = 'uncover'
|
||||
let color = 'goCoverageUncover'
|
||||
endif
|
||||
|
||||
let matches = []
|
||||
|
@ -195,12 +195,12 @@ function! go#coverage#overlay(file)
|
|||
" contains matches for matchaddpos()
|
||||
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
|
||||
" lower than the cover and uncover matches, it'll be overriden.
|
||||
let cnt = 1
|
||||
while cnt <= line('$')
|
||||
call add(matches, {'group': 'normaltext', 'pos': [cnt], 'priority': 1})
|
||||
call add(matches, {'group': 'goCoverageNormalText', 'pos': [cnt], 'priority': 1})
|
||||
let cnt += 1
|
||||
endwhile
|
||||
|
||||
|
@ -234,9 +234,6 @@ function! go#coverage#overlay(file)
|
|||
endfor
|
||||
|
||||
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
|
||||
autocmd BufWinLeave <buffer> call go#coverage#Clear()
|
||||
|
|
|
@ -6,12 +6,6 @@ function! go#def#Jump(mode)
|
|||
let $GOPATH = go#path#Detect()
|
||||
|
||||
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
|
||||
" 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
|
||||
let bin_name = get(g:, 'go_def_mode', 'guru')
|
||||
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")
|
||||
if empty(bin_path)
|
||||
let $GOPATH = old_gopath
|
||||
|
@ -31,31 +32,45 @@ function! go#def#Jump(mode)
|
|||
" jump_to_declaration() function can parse it. This makes it
|
||||
" compatible with guru definition as well too
|
||||
let out = join(split(out, '\n'), ':')
|
||||
if exists("l:tmpname")
|
||||
call delete(l:tmpname)
|
||||
endif
|
||||
|
||||
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")
|
||||
if empty(bin_path)
|
||||
let $GOPATH = old_gopath
|
||||
return
|
||||
endif
|
||||
|
||||
let flags = ""
|
||||
if exists('g:go_guru_tags')
|
||||
let tags = get(g:, 'go_guru_tags')
|
||||
let flags = printf(" -tags %s", tags)
|
||||
let flags .= printf(" -tags %s", tags)
|
||||
endif
|
||||
|
||||
let fname = shellescape(fname.':#'.go#util#OffsetCursor())
|
||||
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)
|
||||
endif
|
||||
else
|
||||
call go#util#EchoError('go_def_mode value: '. bin_name .' is not valid. Valid values are: [godef, guru]')
|
||||
return
|
||||
endif
|
||||
|
||||
if exists("l:tmpname")
|
||||
call delete(l:tmpname)
|
||||
endif
|
||||
|
||||
if go#util#ShellError() != 0
|
||||
call go#util#EchoError(out)
|
||||
return
|
||||
|
@ -98,6 +113,8 @@ function! s:jump_to_declaration(out, mode)
|
|||
" modes of switchbuf which we need based on the split mode
|
||||
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
|
||||
" and 3. there is buffer window number we switch to
|
||||
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
|
||||
elseif a:mode == "vsplit"
|
||||
vsplit
|
||||
elseif &modified
|
||||
split
|
||||
endif
|
||||
|
||||
" open the file and jump to line and column
|
||||
exec 'edit '.filename
|
||||
endif
|
||||
call cursor(line, col)
|
||||
|
||||
" 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
|
||||
let ssl_save = &shellslash
|
||||
set noshellslash
|
||||
let command = command . '-srcdir ' . shellescape(expand("%:p:h"))
|
||||
let command = command . '-srcdir ' . shellescape(expand("%:p"))
|
||||
let &shellslash = ssl_save
|
||||
endif
|
||||
endif
|
||||
|
@ -149,7 +149,15 @@ function! go#fmt#Format(withGoimport)
|
|||
|
||||
" Replace current file with temp file, then reload buffer
|
||||
let old_fileformat = &fileformat
|
||||
if exists("*getfperm")
|
||||
" save old file permissions
|
||||
let original_fperm = getfperm(expand('%'))
|
||||
endif
|
||||
call rename(l:tmpname, expand('%'))
|
||||
" restore old file permissions
|
||||
if exists("*setfperm") && original_fperm != ''
|
||||
call setfperm(expand('%'), original_fperm)
|
||||
endif
|
||||
silent edit!
|
||||
let &fileformat = old_fileformat
|
||||
let &syntax = &syntax
|
||||
|
@ -207,4 +215,14 @@ function! go#fmt#Format(withGoimport)
|
|||
endif
|
||||
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
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
" guru.vim -- Vim integration for the Go guru.
|
||||
|
||||
|
||||
func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
||||
"return with a warning if the binary doesn't exist
|
||||
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"}
|
||||
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 pkg = go#package#ImportPath(dirname)
|
||||
|
||||
|
@ -30,6 +19,15 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
|||
" start constructing the 'command' variable
|
||||
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
|
||||
if a:format == "json"
|
||||
let command .= " -json"
|
||||
|
@ -72,8 +70,8 @@ func! s:RunGuru(mode, format, selected, needs_scope) range abort
|
|||
let scopes = go#util#Shelllist(scopes)
|
||||
|
||||
" guru expect a comma-separated list of patterns, construct it
|
||||
let scope = join(scopes, ",")
|
||||
let command .= printf(" -scope %s", scope)
|
||||
let l:scope = join(scopes, ",")
|
||||
let command .= printf(" -scope %s", l:scope)
|
||||
endif
|
||||
|
||||
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 $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
|
||||
call go#util#EchoProgress("analysing ...")
|
||||
endif
|
||||
|
||||
" run, forrest run!!!
|
||||
if &modified
|
||||
let out = go#util#System(command, in)
|
||||
else
|
||||
let out = go#util#System(command)
|
||||
|
||||
if exists("l:tmpname")
|
||||
call delete(l:tmpname)
|
||||
endif
|
||||
|
||||
let $GOPATH = old_gopath
|
||||
|
@ -176,6 +176,23 @@ function! go#guru#Tags(...)
|
|||
endif
|
||||
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
|
||||
function! go#guru#Implements(selected)
|
||||
let out = s:RunGuru('implements', 'plain', a:selected, 1)
|
||||
|
@ -271,16 +288,11 @@ function! go#guru#Referrers(selected)
|
|||
endfunction
|
||||
|
||||
function! go#guru#What(selected)
|
||||
" nvim doesn't have JSON support, though they work on it:
|
||||
" https://github.com/neovim/neovim/pull/4131
|
||||
if has('nvim')
|
||||
return {'err': "GoWhat is not supported in Neovim"}
|
||||
endif
|
||||
|
||||
" 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"}
|
||||
" json_encode() and friends are introduced with this patch (7.4.1304)
|
||||
" vim: https://groups.google.com/d/msg/vim_dev/vLupTNhQhZ8/cDGIk0JEDgAJ
|
||||
" nvim: https://github.com/neovim/neovim/pull/4131
|
||||
if !exists("*json_decode")
|
||||
return {'err': "GoWhat is not supported due old version of Vim/Neovim"}
|
||||
endif
|
||||
|
||||
let out = s:RunGuru('what', 'json', a:selected, 0)
|
||||
|
@ -297,10 +309,29 @@ function! go#guru#What(selected)
|
|||
return result
|
||||
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()
|
||||
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)
|
||||
|
||||
call go#guru#ClearSameIds() " run after calling guru to reduce flicker.
|
||||
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
|
||||
call go#util#EchoError(result.err)
|
||||
|
@ -327,8 +358,6 @@ function! go#guru#SameIds(selected)
|
|||
return
|
||||
endif
|
||||
|
||||
hi goSameId term=bold cterm=bold ctermbg=white ctermfg=black
|
||||
|
||||
let same_ids = result['sameids']
|
||||
" highlight the lines
|
||||
for item in same_ids
|
||||
|
@ -346,4 +375,12 @@ function! go#guru#ClearSameIds()
|
|||
endfor
|
||||
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
|
||||
|
|
|
@ -71,12 +71,12 @@ endif
|
|||
|
||||
function! s:root_dirs()
|
||||
let dirs = []
|
||||
let root = go#util#GOROOT()
|
||||
let root = go#util#goroot()
|
||||
if root !=# '' && isdirectory(root)
|
||||
call add(dirs, root)
|
||||
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()
|
||||
return []
|
||||
endif
|
||||
|
@ -91,7 +91,7 @@ endfunction
|
|||
function! s:go_packages(dirs)
|
||||
let pkgs = []
|
||||
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"))
|
||||
endfor
|
||||
return map(pkgs, "fnamemodify(v:val, ':t:r')")
|
||||
|
|
|
@ -196,4 +196,15 @@ function! go#lint#Errcheck(...) abort
|
|||
|
||||
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
|
||||
|
|
|
@ -33,7 +33,7 @@ function! go#package#Paths()
|
|||
|
||||
if !exists("s:goroot")
|
||||
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
|
||||
echomsg '''go env GOROOT'' failed'
|
||||
endif
|
||||
|
|
|
@ -14,7 +14,7 @@ function! go#template#create()
|
|||
if l:package_name == -1
|
||||
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)
|
||||
exe '0r ' . l:template_path
|
||||
exe '0r ' . fnameescape(l:template_path)
|
||||
$delete _
|
||||
else
|
||||
let l:content = printf("package %s", l:package_name)
|
||||
|
@ -28,4 +28,15 @@ function! go#template#create()
|
|||
execute cd . fnameescape(dir)
|
||||
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
|
||||
|
|
|
@ -44,7 +44,7 @@ function! go#tool#Imports()
|
|||
endfunction
|
||||
|
||||
function! go#tool#PackageName()
|
||||
let command = "go list -f '{{.Name}}'"
|
||||
let command = "go list -f \"{{.Name}}\""
|
||||
let out = go#tool#ExecuteInDir(command)
|
||||
if go#util#ShellError() != 0
|
||||
return -1
|
||||
|
|
|
@ -43,27 +43,26 @@ function! go#util#IsWin()
|
|||
return 0
|
||||
endfunction
|
||||
|
||||
function! go#util#GOARCH()
|
||||
function! go#util#goarch()
|
||||
return substitute(go#util#System('go env GOARCH'), '\n', '', 'g')
|
||||
endfunction
|
||||
|
||||
function! go#util#GOOS()
|
||||
function! go#util#goos()
|
||||
return substitute(go#util#System('go env GOOS'), '\n', '', 'g')
|
||||
endfunction
|
||||
|
||||
function! go#util#GOROOT()
|
||||
function! go#util#goroot()
|
||||
return substitute(go#util#System('go env GOROOT'), '\n', '', 'g')
|
||||
endfunction
|
||||
|
||||
function! go#util#GOPATH()
|
||||
function! go#util#gopath()
|
||||
return substitute(go#util#System('go env GOPATH'), '\n', '', 'g')
|
||||
endfunction
|
||||
|
||||
function! go#util#OSARCH()
|
||||
return go#util#GOOS() . '_' . go#util#GOARCH()
|
||||
function! go#util#osarch()
|
||||
return go#util#goos() . '_' . go#util#goarch()
|
||||
endfunction
|
||||
|
||||
|
||||
"Check if has vimproc
|
||||
function! s:has_vimproc()
|
||||
if !exists('g:go#use_vimproc')
|
||||
|
@ -92,8 +91,20 @@ else
|
|||
let s:vim_shell_error = ''
|
||||
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, ...)
|
||||
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
|
||||
|
||||
function! go#util#ShellError()
|
||||
|
@ -228,24 +239,68 @@ function! go#util#camelcase(word)
|
|||
endif
|
||||
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
|
||||
" simplify the following functions
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
" 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
|
||||
command! -nargs=* -complete=customlist,go#package#Complete GoGuruScope call go#guru#Scope(<f-args>)
|
||||
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=% GoDescribe call go#guru#Describe(<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=% GoReferrers call go#guru#Referrers(<count>)
|
||||
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=0 GoSameIdsClear call go#guru#ClearSameIds()
|
||||
command! -range=% GoSameIdsToggle call go#guru#ToggleSameIds(<count>)
|
||||
command! -range=0 GoSameIdsAutoToggle call go#guru#AutoToogleSameIds()
|
||||
|
||||
" -- tool
|
||||
command! -nargs=0 GoFiles echo go#tool#Files()
|
||||
command! -nargs=0 GoDeps echo go#tool#Deps()
|
||||
command! -nargs=* GoInfo call go#complete#Info(0)
|
||||
command! -nargs=0 GoAutoTypeInfoToggle call go#complete#ToggleAutoTypeInfo()
|
||||
|
||||
" -- cmd
|
||||
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
|
||||
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)
|
||||
|
||||
" -- asmfmt
|
||||
command! -nargs=0 GoAsmFmtAutoSaveToggle call go#asmfmt#ToggleAsmFmtAutoSave()
|
||||
|
||||
" -- import
|
||||
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>')
|
||||
|
@ -59,6 +71,7 @@ command! -nargs=* -bang -complete=customlist,go#package#Complete GoImportAs call
|
|||
|
||||
" -- linters
|
||||
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=* -bang GoVet call go#lint#Vet(<bang>0, <f-args>)
|
||||
command! -nargs=* -complete=customlist,go#package#Complete GoErrCheck call go#lint#Errcheck(<f-args>)
|
||||
|
@ -75,4 +88,7 @@ endif
|
|||
" -- impl
|
||||
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
|
||||
|
|
|
@ -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-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-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>
|
||||
|
||||
|
|
|
@ -189,6 +189,11 @@ snippet json "\`json:key\`"
|
|||
\`json:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\`
|
||||
endsnippet
|
||||
|
||||
# yaml field tag
|
||||
snippet yaml "\`yaml:key\`"
|
||||
\`yaml:"${1:`!v go#util#snippetcase(matchstr(getline("."), '\w\+'))`}"\`
|
||||
endsnippet
|
||||
|
||||
# fallthrough
|
||||
snippet ft "fallthrough"
|
||||
fallthrough
|
||||
|
|
|
@ -162,6 +162,11 @@ snippet json
|
|||
abbr \`json:key\`
|
||||
\`json:"${1:keyName}"\`
|
||||
|
||||
# yaml snippet
|
||||
snippet yaml
|
||||
abbr \`yaml:key\`
|
||||
\`yaml:"${1:keyName}"\`
|
||||
|
||||
# fallthrough
|
||||
snippet ft
|
||||
abbr fallthrough
|
||||
|
|
|
@ -27,7 +27,6 @@ command! GoInstallBinaries call s:GoInstallBinaries(-1)
|
|||
command! GoUpdateBinaries call s:GoInstallBinaries(1)
|
||||
command! -nargs=? -complete=dir GoPath call go#path#GoPath(<f-args>)
|
||||
|
||||
|
||||
" GoInstallBinaries downloads and install all necessary binaries stated in the
|
||||
" packages variable. It uses by default $GOBIN or $GOPATH/bin as the binary
|
||||
" 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
|
||||
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
|
||||
autocmd!
|
||||
|
||||
" GoInfo automatic update
|
||||
if get(g:, "go_auto_type_info", 0)
|
||||
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
|
||||
autocmd CursorHold *.go call s:auto_type_info()
|
||||
autocmd CursorHold *.go call s:auto_sameids()
|
||||
|
||||
" Echo the identifier information when completion is done. Useful to see
|
||||
" the signature of a function, etc...
|
||||
if exists('##CompleteDone')
|
||||
autocmd CompleteDone *.go nested call s:echo_go_info()
|
||||
autocmd CompleteDone *.go call s:echo_go_info()
|
||||
endif
|
||||
|
||||
" Go code formatting on save
|
||||
if get(g:, "go_fmt_autosave", 1)
|
||||
autocmd BufWritePre *.go call go#fmt#Format(-1)
|
||||
endif
|
||||
|
||||
" 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
|
||||
autocmd BufWritePre *.go call s:fmt_autosave()
|
||||
autocmd BufWritePre *.s call s:asmfmt_autosave()
|
||||
autocmd BufWritePost *.go call s:metalinter_autosave()
|
||||
autocmd BufNewFile *.go call s:template_autocreate()
|
||||
augroup END
|
||||
|
||||
" vim: sw=2 ts=2 et
|
||||
|
|
|
@ -271,6 +271,7 @@ hi def link goSpaceError Error
|
|||
syn keyword goTodo contained NOTE
|
||||
hi def link goTodo Todo
|
||||
|
||||
syn match goVarArgs /\.\.\./
|
||||
|
||||
" Operators;
|
||||
if g:go_highlight_operators != 0
|
||||
|
@ -285,9 +286,9 @@ if g:go_highlight_operators != 0
|
|||
" match remaining two-char operators: := && || <- ++ --
|
||||
syn match goOperator /:=\|||\|<-\|++\|--/
|
||||
" match ...
|
||||
syn match goOperator /\.\.\./
|
||||
|
||||
hi def link goPointerOperator Operator
|
||||
hi def link goPointerOperator goOperator
|
||||
hi def link goVarArgs goOperator
|
||||
endif
|
||||
hi def link goOperator Operator
|
||||
|
||||
|
@ -306,14 +307,13 @@ hi def link goFunction Function
|
|||
|
||||
" Methods;
|
||||
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
|
||||
hi def link goMethod Type
|
||||
|
||||
" Fields;
|
||||
if g:go_highlight_fields != 0
|
||||
syn match goVarArgs /\.\.\.\w\+\>/
|
||||
syn match goField /\.\a\+\([\ \n\r\:\)\[]\)\@=/hs=s+1
|
||||
syn match goField /\.\w\+\([\ \n\r\:\)\[,]\)\@=/hs=s+1
|
||||
endif
|
||||
hi def link goField Identifier
|
||||
|
||||
|
@ -366,7 +366,13 @@ if g:go_highlight_build_constraints != 0
|
|||
hi def link goPackageComment Comment
|
||||
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.
|
||||
"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/
|
||||
|
|
|
@ -127,7 +127,6 @@ endsnippet
|
|||
#############
|
||||
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)`>
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet input "XHTML <input>" w
|
||||
|
@ -141,9 +140,7 @@ endsnippet
|
|||
|
||||
snippet select "Select Box" w
|
||||
<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>
|
||||
<option${12: value="${13:option2}"}>${14:$13}</option>${15:}
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</select>
|
||||
endsnippet
|
||||
|
||||
|
@ -162,25 +159,25 @@ endsnippet
|
|||
|
||||
snippet body "<body>"
|
||||
<body>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</body>
|
||||
endsnippet
|
||||
|
||||
snippet div "<div>" w
|
||||
<div>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</div>
|
||||
endsnippet
|
||||
|
||||
snippet div. "<div> with class" w
|
||||
<div`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</div>
|
||||
endsnippet
|
||||
|
||||
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 ""`>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</div>
|
||||
endsnippet
|
||||
|
||||
|
@ -188,33 +185,39 @@ snippet form "XHTML <form>" w
|
|||
<form action="${1:`!p
|
||||
snip.rv = (snip.basename or 'unnamed') + '_submit'
|
||||
`}" method="${2:get}" accept-charset="utf-8">
|
||||
$0
|
||||
|
||||
<p><input type="submit" value="Continue →"`!p x(snip)`></p>
|
||||
${0:${VISUAL}}
|
||||
</form>
|
||||
endsnippet
|
||||
|
||||
snippet h1 "XHTML <h1>" w
|
||||
<h1>$0</h1>
|
||||
<h1>${0:${VISUAL}}</h1>
|
||||
endsnippet
|
||||
|
||||
snippet h2 "XHTML <h2>" w
|
||||
<h2>$0</h2>
|
||||
<h2>${0:${VISUAL}}</h2>
|
||||
endsnippet
|
||||
|
||||
snippet h3 "XHTML <h3>" w
|
||||
<h3>$0</h3>
|
||||
<h3>${0:${VISUAL}}</h3>
|
||||
endsnippet
|
||||
|
||||
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
|
||||
|
||||
snippet head "XHTML <head>"
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</head>
|
||||
endsnippet
|
||||
|
||||
|
@ -232,20 +235,19 @@ endsnippet
|
|||
|
||||
snippet script "XHTML <script>" w
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</script>
|
||||
endsnippet
|
||||
|
||||
snippet style "XHTML <style>" w
|
||||
<style type="text/css" media="screen">
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</style>
|
||||
endsnippet
|
||||
|
||||
snippet table "XHTML <table>" w
|
||||
<table border="${1:0}"${2: cellspacing="${3:5}" cellpadding="${4:5}"}>
|
||||
<tr><th>${5:Header}</th></tr>
|
||||
<tr><td>${0:Data}</td></tr>
|
||||
${0:${VISUAL}}
|
||||
</table>
|
||||
endsnippet
|
||||
|
||||
|
@ -254,29 +256,29 @@ snippet a "Link" w
|
|||
endsnippet
|
||||
|
||||
snippet p "paragraph" w
|
||||
<p>$0</p>
|
||||
<p>${0:${VISUAL}}</p>
|
||||
endsnippet
|
||||
|
||||
snippet li "list item" w
|
||||
<li>$0</li>
|
||||
<li>${0:${VISUAL}}</li>
|
||||
endsnippet
|
||||
|
||||
snippet ul "unordered list" w
|
||||
<ul>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</ul>
|
||||
endsnippet
|
||||
|
||||
snippet td "table cell" w
|
||||
<td>$0</td>
|
||||
<td>${0:${VISUAL}}</td>
|
||||
endsnippet
|
||||
|
||||
snippet th "table header" w
|
||||
<th>$0</th>
|
||||
<th>${0:${VISUAL}}</th>
|
||||
endsnippet
|
||||
|
||||
snippet tr "table row" w
|
||||
<tr>$0</tr>
|
||||
<tr>${0:${VISUAL}}</tr>
|
||||
endsnippet
|
||||
|
||||
snippet title "XHTML <title>" w
|
||||
|
@ -286,7 +288,7 @@ endsnippet
|
|||
snippet fieldset "Fieldset" w
|
||||
<fieldset id="${1/[\w\d]+|( )/(?1:_:\L$0\E)/g}" ${2:class="${3:}"}>
|
||||
<legend>$1</legend>
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
</fieldset>
|
||||
endsnippet
|
||||
|
||||
|
|
|
@ -105,13 +105,17 @@ snippet imp
|
|||
snippet ali
|
||||
alias ${0:module_name}
|
||||
snippet test
|
||||
test "${1:test_name}" do
|
||||
test "${1:test name}" do
|
||||
${0}
|
||||
end
|
||||
snippet testa
|
||||
test "${1:test_name}", %{${2:arg: arg}} do
|
||||
${0}
|
||||
end
|
||||
snippet des
|
||||
describe "${1:test group subject}" do
|
||||
${0}
|
||||
end
|
||||
snippet exunit
|
||||
defmodule ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} do
|
||||
use ExUnit.Case, async: true
|
||||
|
|
|
@ -171,6 +171,9 @@ snippet pn
|
|||
# print
|
||||
snippet pr
|
||||
fmt.Printf("%${1:s}\n", ${2:var})
|
||||
# println
|
||||
snippet pl
|
||||
fmt.Println("${1:s}")
|
||||
# range
|
||||
snippet rn
|
||||
range ${0}
|
||||
|
|
|
@ -30,6 +30,11 @@ snippet (f
|
|||
(function(${1}) {
|
||||
${0}
|
||||
}(${2}));
|
||||
# Minify safe iife
|
||||
snippet ;fe
|
||||
;(function(${1}) {
|
||||
${0}
|
||||
}(${2}))
|
||||
# self-defining function
|
||||
snippet sdf
|
||||
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