Updated plugins
This commit is contained in:
parent
fe46dfbbe6
commit
ccb7854aa2
103 changed files with 1729 additions and 445 deletions
|
@ -0,0 +1,37 @@
|
|||
" =============================================================================
|
||||
" Filename: autoload/lightline/colorscheme/darcula.vim
|
||||
" Author: kkopec
|
||||
" License: MIT License
|
||||
" Last Change: 2017/02/11 21:18:54.
|
||||
" =============================================================================
|
||||
|
||||
let s:black = [ '#2b2b2b', 235 ]
|
||||
let s:gray = [ '#323232', 236 ]
|
||||
let s:white = [ '#a9b7c6', 250 ]
|
||||
let s:blue = [ '#6897bb' , 67 ]
|
||||
let s:green = [ '#629755', 71 ]
|
||||
let s:purple = [ '#9876aa', 104 ]
|
||||
let s:red = [ '#ff6b68', 204 ]
|
||||
let s:yellow = [ '#ffc66d', 222 ]
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
let s:p.normal.left = [ [ s:black, s:purple ], [ s:purple, s:gray ] ]
|
||||
let s:p.normal.right = [ [ s:black, s:purple ], [ s:purple, s:gray ] ]
|
||||
let s:p.inactive.left = [ [ s:black, s:blue ], [ s:blue, s:gray ] ]
|
||||
let s:p.inactive.right = [ [ s:black, s:blue ], [ s:blue, s:gray ] ]
|
||||
let s:p.insert.left = [ [ s:black, s:green ], [ s:green, s:gray ] ]
|
||||
let s:p.insert.right = [ [ s:black, s:green ], [ s:green, s:gray ] ]
|
||||
let s:p.replace.left = [ [ s:black, s:red ], [ s:red, s:gray ] ]
|
||||
let s:p.replace.right = [ [ s:black, s:red ], [ s:red, s:gray ] ]
|
||||
let s:p.visual.left = [ [ s:black, s:yellow ], [ s:yellow, s:gray ] ]
|
||||
let s:p.visual.right = [ [ s:black, s:yellow ], [ s:yellow, s:gray ] ]
|
||||
let s:p.normal.middle = [ [ s:white, s:gray ] ]
|
||||
let s:p.inactive.middle = [ [ s:white, s:gray ] ]
|
||||
let s:p.tabline.left = [ [ s:blue, s:gray ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:black, s:blue ] ]
|
||||
let s:p.tabline.middle = [ [ s:blue, s:gray ] ]
|
||||
let s:p.tabline.right = [ [ s:black, s:blue ] ]
|
||||
let s:p.normal.error = [ [ s:red, s:black ] ]
|
||||
let s:p.normal.warning = [ [ s:yellow, s:black ] ]
|
||||
|
||||
let g:lightline#colorscheme#darcula#palette = lightline#colorscheme#flatten(s:p)
|
|
@ -223,7 +223,8 @@ OPTIONS *lightline-option*
|
|||
The colorscheme for lightline.vim.
|
||||
Currently, wombat, solarized, powerline, jellybeans, Tomorrow,
|
||||
Tomorrow_Night, Tomorrow_Night_Blue, Tomorrow_Night_Eighties,
|
||||
PaperColor, seoul256, landscape, one, Dracula, Molokai and 16color are available.
|
||||
PaperColor, seoul256, landscape, one, Dracula, darcula,
|
||||
Molokai and 16color are available.
|
||||
The default value is:
|
||||
>
|
||||
let g:lightline.colorscheme = 'default'
|
||||
|
|
|
@ -20,108 +20,105 @@ endfunction
|
|||
"FUNCTION: s:UI._dumpHelp {{{1
|
||||
"prints out the quick help
|
||||
function! s:UI._dumpHelp()
|
||||
let old_h = @h
|
||||
if self.getShowHelp()
|
||||
let @h= "\" NERD tree (" . nerdtree#version() . ") quickhelp~\n"
|
||||
let @h=@h."\" ============================\n"
|
||||
let @h=@h."\" File node mappings~\n"
|
||||
let @h=@h."\" ". (g:NERDTreeMouseMode ==# 3 ? "single" : "double") ."-click,\n"
|
||||
let @h=@h."\" <CR>,\n"
|
||||
let help = "\" NERD tree (" . nerdtree#version() . ") quickhelp~\n"
|
||||
let help .= "\" ============================\n"
|
||||
let help .= "\" File node mappings~\n"
|
||||
let help .= "\" ". (g:NERDTreeMouseMode ==# 3 ? "single" : "double") ."-click,\n"
|
||||
let help .= "\" <CR>,\n"
|
||||
if self.nerdtree.isTabTree()
|
||||
let @h=@h."\" ". g:NERDTreeMapActivateNode .": open in prev window\n"
|
||||
let help .= "\" ". g:NERDTreeMapActivateNode .": open in prev window\n"
|
||||
else
|
||||
let @h=@h."\" ". g:NERDTreeMapActivateNode .": open in current window\n"
|
||||
let help .= "\" ". g:NERDTreeMapActivateNode .": open in current window\n"
|
||||
endif
|
||||
if self.nerdtree.isTabTree()
|
||||
let @h=@h."\" ". g:NERDTreeMapPreview .": preview\n"
|
||||
let help .= "\" ". g:NERDTreeMapPreview .": preview\n"
|
||||
endif
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
|
||||
let @h=@h."\" middle-click,\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenSplit .": open split\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapPreviewSplit .": preview split\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenVSplit .": open vsplit\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapPreviewVSplit .": preview vsplit\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
|
||||
let help .= "\" middle-click,\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenSplit .": open split\n"
|
||||
let help .= "\" ". g:NERDTreeMapPreviewSplit .": preview split\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenVSplit .": open vsplit\n"
|
||||
let help .= "\" ". g:NERDTreeMapPreviewVSplit .": preview vsplit\n"
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Directory node mappings~\n"
|
||||
let @h=@h."\" ". (g:NERDTreeMouseMode ==# 1 ? "double" : "single") ."-click,\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapActivateNode .": open & close node\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenRecursively .": recursively open node\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapCloseDir .": close parent of node\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapCloseChildren .": close all child nodes of\n"
|
||||
let @h=@h."\" current node recursively\n"
|
||||
let @h=@h."\" middle-click,\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenExpl.": explore selected dir\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Directory node mappings~\n"
|
||||
let help .= "\" ". (g:NERDTreeMouseMode ==# 1 ? "double" : "single") ."-click,\n"
|
||||
let help .= "\" ". g:NERDTreeMapActivateNode .": open & close node\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenRecursively .": recursively open node\n"
|
||||
let help .= "\" ". g:NERDTreeMapCloseDir .": close parent of node\n"
|
||||
let help .= "\" ". g:NERDTreeMapCloseChildren .": close all child nodes of\n"
|
||||
let help .= "\" current node recursively\n"
|
||||
let help .= "\" middle-click,\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenExpl.": explore selected dir\n"
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Bookmark table mappings~\n"
|
||||
let @h=@h."\" double-click,\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapActivateNode .": open bookmark\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapDeleteBookmark .": delete bookmark\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Bookmark table mappings~\n"
|
||||
let help .= "\" double-click,\n"
|
||||
let help .= "\" ". g:NERDTreeMapActivateNode .": open bookmark\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
|
||||
let help .= "\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
|
||||
let help .= "\" ". g:NERDTreeMapDeleteBookmark .": delete bookmark\n"
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Tree navigation mappings~\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpRoot .": go to root\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpParent .": go to parent\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpFirstChild .": go to first child\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpLastChild .": go to last child\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpNextSibling .": go to next sibling\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapJumpPrevSibling .": go to prev sibling\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Tree navigation mappings~\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpRoot .": go to root\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpParent .": go to parent\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpFirstChild .": go to first child\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpLastChild .": go to last child\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpNextSibling .": go to next sibling\n"
|
||||
let help .= "\" ". g:NERDTreeMapJumpPrevSibling .": go to prev sibling\n"
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Filesystem mappings~\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapChangeRoot .": change tree root to the\n"
|
||||
let @h=@h."\" selected dir\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapUpdir .": move tree root up a dir\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapUpdirKeepOpen .": move tree root up a dir\n"
|
||||
let @h=@h."\" but leave old root open\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapRefresh .": refresh cursor dir\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapRefreshRoot .": refresh current root\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapMenu .": Show menu\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapChdir .":change the CWD to the\n"
|
||||
let @h=@h."\" selected dir\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapCWD .":change tree root to CWD\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Filesystem mappings~\n"
|
||||
let help .= "\" ". g:NERDTreeMapChangeRoot .": change tree root to the\n"
|
||||
let help .= "\" selected dir\n"
|
||||
let help .= "\" ". g:NERDTreeMapUpdir .": move tree root up a dir\n"
|
||||
let help .= "\" ". g:NERDTreeMapUpdirKeepOpen .": move tree root up a dir\n"
|
||||
let help .= "\" but leave old root open\n"
|
||||
let help .= "\" ". g:NERDTreeMapRefresh .": refresh cursor dir\n"
|
||||
let help .= "\" ". g:NERDTreeMapRefreshRoot .": refresh current root\n"
|
||||
let help .= "\" ". g:NERDTreeMapMenu .": Show menu\n"
|
||||
let help .= "\" ". g:NERDTreeMapChdir .":change the CWD to the\n"
|
||||
let help .= "\" selected dir\n"
|
||||
let help .= "\" ". g:NERDTreeMapCWD .":change tree root to CWD\n"
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Tree filtering mappings~\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapToggleHidden .": hidden files (" . (self.getShowHidden() ? "on" : "off") . ")\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapToggleFilters .": file filters (" . (self.isIgnoreFilterEnabled() ? "on" : "off") . ")\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapToggleFiles .": files (" . (self.getShowFiles() ? "on" : "off") . ")\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapToggleBookmarks .": bookmarks (" . (self.getShowBookmarks() ? "on" : "off") . ")\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Tree filtering mappings~\n"
|
||||
let help .= "\" ". g:NERDTreeMapToggleHidden .": hidden files (" . (self.getShowHidden() ? "on" : "off") . ")\n"
|
||||
let help .= "\" ". g:NERDTreeMapToggleFilters .": file filters (" . (self.isIgnoreFilterEnabled() ? "on" : "off") . ")\n"
|
||||
let help .= "\" ". g:NERDTreeMapToggleFiles .": files (" . (self.getShowFiles() ? "on" : "off") . ")\n"
|
||||
let help .= "\" ". g:NERDTreeMapToggleBookmarks .": bookmarks (" . (self.getShowBookmarks() ? "on" : "off") . ")\n"
|
||||
|
||||
"add quickhelp entries for each custom key map
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Custom mappings~\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Custom mappings~\n"
|
||||
for i in g:NERDTreeKeyMap.All()
|
||||
if !empty(i.quickhelpText)
|
||||
let @h=@h."\" ". i.key .": ". i.quickhelpText ."\n"
|
||||
let help .= "\" ". i.key .": ". i.quickhelpText ."\n"
|
||||
endif
|
||||
endfor
|
||||
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Other mappings~\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapQuit .": Close the NERDTree window\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapToggleZoom .": Zoom (maximize-minimize)\n"
|
||||
let @h=@h."\" the NERDTree window\n"
|
||||
let @h=@h."\" ". g:NERDTreeMapHelp .": toggle help\n"
|
||||
let @h=@h."\"\n\" ----------------------------\n"
|
||||
let @h=@h."\" Bookmark commands~\n"
|
||||
let @h=@h."\" :Bookmark [<name>]\n"
|
||||
let @h=@h."\" :BookmarkToRoot <name>\n"
|
||||
let @h=@h."\" :RevealBookmark <name>\n"
|
||||
let @h=@h."\" :OpenBookmark <name>\n"
|
||||
let @h=@h."\" :ClearBookmarks [<names>]\n"
|
||||
let @h=@h."\" :ClearAllBookmarks\n"
|
||||
silent! put h
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Other mappings~\n"
|
||||
let help .= "\" ". g:NERDTreeMapQuit .": Close the NERDTree window\n"
|
||||
let help .= "\" ". g:NERDTreeMapToggleZoom .": Zoom (maximize-minimize)\n"
|
||||
let help .= "\" the NERDTree window\n"
|
||||
let help .= "\" ". g:NERDTreeMapHelp .": toggle help\n"
|
||||
let help .= "\"\n\" ----------------------------\n"
|
||||
let help .= "\" Bookmark commands~\n"
|
||||
let help .= "\" :Bookmark [<name>]\n"
|
||||
let help .= "\" :BookmarkToRoot <name>\n"
|
||||
let help .= "\" :RevealBookmark <name>\n"
|
||||
let help .= "\" :OpenBookmark <name>\n"
|
||||
let help .= "\" :ClearBookmarks [<names>]\n"
|
||||
let help .= "\" :ClearAllBookmarks\n"
|
||||
silent! put =help
|
||||
elseif !self.isMinimal()
|
||||
let @h="\" Press ". g:NERDTreeMapHelp ." for help\n"
|
||||
silent! put h
|
||||
let help ="\" Press ". g:NERDTreeMapHelp ." for help\n"
|
||||
silent! put =help
|
||||
endif
|
||||
|
||||
let @h = old_h
|
||||
endfunction
|
||||
|
||||
|
||||
|
@ -440,10 +437,7 @@ function! s:UI.render()
|
|||
call cursor(line(".")+1, col("."))
|
||||
|
||||
"draw the tree
|
||||
let old_o = @o
|
||||
let @o = self.nerdtree.root.renderToString()
|
||||
silent put o
|
||||
let @o = old_o
|
||||
silent put =self.nerdtree.root.renderToString()
|
||||
|
||||
"delete the blank line at the top of the buffer
|
||||
silent 1,1delete _
|
||||
|
|
|
@ -101,10 +101,10 @@ enabled.
|
|||
Syntastic itself has rather relaxed requirements: it doesn't have any external
|
||||
dependencies, and it needs a version of [Vim][vim] compiled with a few common
|
||||
features: `autocmd`, `eval`, `file_in_path`, `modify_fname`, `quickfix`,
|
||||
`reltime`, and `user_commands`. Not all possible combinations of features that
|
||||
include the ones above make equal sense on all operating systems, but Vim
|
||||
version 7 or later with the "normal", "big", or "huge" feature sets should be
|
||||
fine.
|
||||
`reltime`, `statusline`, and `user_commands`. Not all possible combinations of
|
||||
features that include the ones above make equal sense on all operating systems,
|
||||
but Vim version 7 or later with the "normal", "big", or "huge" feature sets
|
||||
should be fine.
|
||||
|
||||
Syntastic should work with any modern plugin managers for Vim, such as
|
||||
[NeoBundle][neobundle], [Pathogen][pathogen], [Vim-Addon-Manager][vam],
|
||||
|
|
|
@ -132,9 +132,9 @@ endfunction " }}}2
|
|||
" returns
|
||||
"
|
||||
" {'exe': '/usr/bin/perl', 'args': ['-f', '-bar']}
|
||||
function! syntastic#util#parseShebang() abort " {{{2
|
||||
function! syntastic#util#parseShebang(buf) abort " {{{2
|
||||
for lnum in range(1, 5)
|
||||
let line = getline(lnum)
|
||||
let line = get(getbufline(a:buf, lnum), 0, '')
|
||||
if line =~# '^#!'
|
||||
let line = substitute(line, '\v^#!\s*(\S+/env(\s+-\S+)*\s+)?', '', '')
|
||||
let exe = matchstr(line, '\m^\S*\ze')
|
||||
|
|
|
@ -164,7 +164,7 @@ When syntax errors are detected a flag will be shown. The content of the flag
|
|||
is derived from the |'syntastic_stl_format'| option.
|
||||
|
||||
Please note that these settings might conflict with other Vim plugins that
|
||||
change the way statusline works. Refer to the |syntastic-compatibility| notes
|
||||
change the way 'statusline' works. Refer to the |syntastic-compatibility| notes
|
||||
below and to the respective plugins' documentation for possible solutions.
|
||||
|
||||
In particular see |syntastic-airline| below if you're using the "airline" Vim
|
||||
|
|
|
@ -19,7 +19,7 @@ if has('reltime')
|
|||
lockvar! g:_SYNTASTIC_START
|
||||
endif
|
||||
|
||||
let g:_SYNTASTIC_VERSION = '3.8.0-21'
|
||||
let g:_SYNTASTIC_VERSION = '3.8.0-26'
|
||||
lockvar g:_SYNTASTIC_VERSION
|
||||
|
||||
" Sanity checks {{{1
|
||||
|
@ -36,7 +36,8 @@ for s:feature in [
|
|||
\ 'modify_fname',
|
||||
\ 'quickfix',
|
||||
\ 'reltime',
|
||||
\ 'user_commands'
|
||||
\ 'statusline',
|
||||
\ 'user_commands',
|
||||
\ ]
|
||||
if !has(s:feature)
|
||||
call syntastic#log#error('need Vim compiled with feature ' . s:feature)
|
||||
|
|
|
@ -34,19 +34,20 @@ function! SyntaxCheckers_asm_gcc_IsAvailable() dict " {{{1
|
|||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_asm_gcc_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
return syntastic#c#GetLocList('asm', 'gcc', {
|
||||
\ 'errorformat':
|
||||
\ '%-G%f:%s:,' .
|
||||
\ '%f:%l:%c: %trror: %m,' .
|
||||
\ '%f:%l:%c: %tarning: %m,' .
|
||||
\ '%f:%l: %m',
|
||||
\ 'main_flags': '-x assembler -fsyntax-only' . (g:syntastic_asm_generic ? '' : ' -masm=' . s:GetDialect()) })
|
||||
\ 'main_flags': '-x assembler -fsyntax-only' . (g:syntastic_asm_generic ? '' : ' -masm=' . s:GetDialect(buf)) })
|
||||
endfunction " }}}1
|
||||
|
||||
" Utilities {{{1
|
||||
|
||||
function! s:GetDialect() " {{{2
|
||||
return syntastic#util#var('asm_dialect', expand('%:e', 1) ==? 'asm' ? 'intel' : 'att')
|
||||
function! s:GetDialect(buf) " {{{2
|
||||
return syntastic#util#bufVar(a:buf, 'asm_dialect', fnamemodify(bufname(a:buf), ':e') ==? 'asm' ? 'intel' : 'att')
|
||||
endfunction " }}}2
|
||||
|
||||
" }}}1
|
||||
|
|
|
@ -23,7 +23,8 @@ if !exists('g:syntastic_pc_lint_config_file')
|
|||
endif
|
||||
|
||||
function! SyntaxCheckers_c_pc_lint_GetLocList() dict
|
||||
let config = syntastic#util#findFileInParent(g:syntastic_pc_lint_config_file, expand('%:p:h', 1))
|
||||
let buf = bufnr('')
|
||||
let config = syntastic#util#findFileInParent(g:syntastic_pc_lint_config_file, fnamemodify(bufname(buf), ':p:h'))
|
||||
call self.log('config =', config)
|
||||
|
||||
" -hFs1 - show filename, add space after messages, try to make message 1 line
|
||||
|
|
|
@ -31,6 +31,7 @@ function! SyntaxCheckers_cabal_cabal_GetHighlightRegex(item)
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_cabal_cabal_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.getExecEscaped() . ' check'
|
||||
|
||||
let errorformat =
|
||||
|
@ -40,9 +41,9 @@ function! SyntaxCheckers_cabal_cabal_GetLocList() dict
|
|||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'cwd': expand('%:p:h', 1),
|
||||
\ 'cwd': fnamemodify(bufname(buf), ':p:h'),
|
||||
\ 'preprocess': 'cabal',
|
||||
\ 'defaults': {'bufnr': bufnr('')} })
|
||||
\ 'defaults': {'bufnr': buf} })
|
||||
endfunction
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
|
|
|
@ -18,7 +18,8 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_cuda_nvcc_GetLocList() dict
|
||||
let arch_flag = syntastic#util#var('cuda_arch')
|
||||
let buf = bufnr('')
|
||||
let arch_flag = syntastic#util#bufVar(buf, 'cuda_arch')
|
||||
if arch_flag !=# ''
|
||||
let arch_flag = '-arch=' . arch_flag
|
||||
call syntastic#log#oneTimeWarn('variable g:syntastic_cuda_arch is deprecated, ' .
|
||||
|
@ -27,9 +28,9 @@ function! SyntaxCheckers_cuda_nvcc_GetLocList() dict
|
|||
|
||||
let build_opts = {}
|
||||
let dummy = ''
|
||||
if index(['h', 'hpp', 'cuh'], expand('%:e', 1), 0, 1) >= 0
|
||||
if syntastic#util#var('cuda_check_header', 0)
|
||||
let dummy = expand('%:p:h', 1) . syntastic#util#Slash() . '.syntastic_dummy.cu'
|
||||
if index(['h', 'hpp', 'cuh'], fnamemodify(bufname(buf), ':e'), 0, 1) >= 0
|
||||
if syntastic#util#bufVar(buf, 'cuda_check_header', 0)
|
||||
let dummy = fnamemodify(bufname(buf), ':p:h') . syntastic#util#Slash() . '.syntastic_dummy.cu'
|
||||
let build_opts = {
|
||||
\ 'exe_before': 'echo > ' . syntastic#util#shescape(dummy) . ' ;',
|
||||
\ 'fname_before': '.syntastic_dummy.cu -include' }
|
||||
|
@ -62,7 +63,18 @@ function! SyntaxCheckers_cuda_nvcc_GetLocList() dict
|
|||
\ '%DMaking %*\a in %f,'.
|
||||
\ '%f|%l| %m'
|
||||
|
||||
let loclist = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||
let loclist = SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'defaults': {'type': 'E'} })
|
||||
|
||||
for e in loclist
|
||||
let pat = matchstr(e['text'], '\m\c^\s*warning:\s*\zs.*')
|
||||
if pat !=# ''
|
||||
let e['text'] = pat
|
||||
let e['type'] = 'W'
|
||||
endif
|
||||
endfor
|
||||
|
||||
if dummy !=# ''
|
||||
call delete(dummy)
|
||||
|
|
|
@ -44,8 +44,9 @@ function! SyntaxCheckers_d_dmd_IsAvailable() dict " {{{1
|
|||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_d_dmd_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
if !exists('g:syntastic_d_include_dirs')
|
||||
let g:syntastic_d_include_dirs = s:GetIncludes(self, expand('%:p:h'))
|
||||
let g:syntastic_d_include_dirs = s:GetIncludes(self, fnamemodify(bufname(buf), ':p:h'))
|
||||
endif
|
||||
|
||||
return syntastic#c#GetLocList('d', 'dmd', {
|
||||
|
|
|
@ -27,9 +27,10 @@ function! SyntaxCheckers_elixir_elixir_IsAvailable() dict
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_elixir_elixir_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let make_options = {}
|
||||
let compile_command = 'elixir'
|
||||
let mix_file = syntastic#util#findFileInParent('mix.exs', expand('%:p:h', 1))
|
||||
let mix_file = syntastic#util#findFileInParent('mix.exs', fnamemodify(bufname(buf), ':p:h'))
|
||||
|
||||
if filereadable(mix_file)
|
||||
let compile_command = 'mix compile'
|
||||
|
|
|
@ -25,11 +25,13 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_erlang_escript_GetLocList() dict
|
||||
if expand('%:e', 1) ==# 'hrl'
|
||||
let buf = bufnr('')
|
||||
|
||||
if fnamemodify(bufname(buf), ':e') ==# 'hrl'
|
||||
return []
|
||||
endif
|
||||
|
||||
let shebang = syntastic#util#parseShebang()
|
||||
let shebang = syntastic#util#parseShebang(buf)
|
||||
if shebang['exe'] ==# 'escript'
|
||||
let args = '-s'
|
||||
let post_args = ''
|
||||
|
@ -39,7 +41,7 @@ function! SyntaxCheckers_erlang_escript_GetLocList() dict
|
|||
endif
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_after': args,
|
||||
\ 'fname': syntastic#util#shexpand('%:p'),
|
||||
\ 'fname': syntastic#util#shexpand(fnamemodify(bufname(buf), ':p')),
|
||||
\ 'post_args_after': post_args })
|
||||
|
||||
let errorformat =
|
||||
|
|
|
@ -31,7 +31,8 @@ function! SyntaxCheckers_eruby_ruby_GetLocList() dict
|
|||
let s:ruby_new = syntastic#util#versionIsAtLeast(self.getVersion(), [1, 9])
|
||||
endif
|
||||
|
||||
let fname = "'" . escape(expand('%', 1), "\\'") . "'"
|
||||
let buf = bufnr('')
|
||||
let fname = "'" . escape(bufname(buf), "\\'") . "'"
|
||||
|
||||
" TODO: encodings became useful in ruby 1.9 :)
|
||||
if s:ruby_new
|
||||
|
@ -69,7 +70,7 @@ function! SyntaxCheckers_eruby_ruby_GetLocList() dict
|
|||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'env': env,
|
||||
\ 'defaults': { 'bufnr': bufnr(''), 'vcol': 1 } })
|
||||
\ 'defaults': { 'bufnr': buf, 'vcol': 1 } })
|
||||
endfunction
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
|
|
|
@ -28,8 +28,9 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_glsl_cgc_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_before': '-oglsl -profile ' . s:GetProfile(),
|
||||
\ 'args_before': '-oglsl -profile ' . s:GetProfile(buf),
|
||||
\ 'args': (exists('g:syntastic_glsl_options') ? ' ' . g:syntastic_glsl_options : '') })
|
||||
|
||||
let errorformat =
|
||||
|
@ -43,27 +44,11 @@ endfunction " }}}1
|
|||
|
||||
" Utilities {{{1
|
||||
|
||||
function! s:GetProfile() " {{{2
|
||||
let save_view = winsaveview()
|
||||
let old_foldenable = &foldenable
|
||||
let old_lazyredraw = &lazyredraw
|
||||
|
||||
let &lazyredraw = 1
|
||||
let &foldenable = 0
|
||||
call cursor(1, 1)
|
||||
|
||||
let magic = '\m\C^// profile:\s*'
|
||||
let line = search(magic, 'c')
|
||||
|
||||
call winrestview(save_view)
|
||||
let &foldenable = old_foldenable
|
||||
let &lazyredraw = old_lazyredraw
|
||||
|
||||
if line
|
||||
let profile = matchstr(getline(line), magic . '\zs.*')
|
||||
else
|
||||
let extensions = exists('g:syntastic_glsl_extensions') ? g:syntastic_glsl_extensions : s:glsl_extensions
|
||||
let profile = get(extensions, tolower(expand('%:e', 1)), 'gpu_vert')
|
||||
function! s:GetProfile(buf) " {{{2
|
||||
let profile = matchstr(get(filter(getbufline(a:buf, 1, 100), 'v:val =~# "\\m\\C^//\\s*profile:"'), 0, ''), '\m\C^//\s*profile:\s*\zs.*')
|
||||
if profile ==# ''
|
||||
let extensions = syntastic#util#bufVar(a:buf, 'glsl_extensions', s:glsl_extensions)
|
||||
let profile = get(extensions, tolower(fnamemodify(bufname(a:buf), ':e')), 'gpu_vert')
|
||||
endif
|
||||
|
||||
return profile
|
||||
|
|
|
@ -30,6 +30,7 @@ function! SyntaxCheckers_go_go_GetLocList() dict
|
|||
if !exists('s:go_new')
|
||||
let s:go_new = syntastic#util#versionIsAtLeast(self.getVersion(self.getExecEscaped() . ' version'), [1, 5])
|
||||
endif
|
||||
let buf = bufnr('')
|
||||
|
||||
" Check with gofmt first, since `go build` and `go test` might not report
|
||||
" syntax errors in the current file if another file with syntax error is
|
||||
|
@ -53,14 +54,14 @@ function! SyntaxCheckers_go_go_GetLocList() dict
|
|||
|
||||
" Test files, i.e. files with a name ending in `_test.go`, are not
|
||||
" compiled by `go build`, therefore `go test` must be called for those.
|
||||
if match(expand('%', 1), '\m_test\.go$') == -1
|
||||
let cmd = 'build'
|
||||
let opts = syntastic#util#var('go_go_build_args', s:go_new ? '-buildmode=archive' : '')
|
||||
let cleanup = 0
|
||||
else
|
||||
if bufname(buf) =~# '\m_test\.go$'
|
||||
let cmd = 'test -c'
|
||||
let opts = syntastic#util#var('go_go_test_args', s:go_new ? '-buildmode=archive' : '')
|
||||
let opts = syntastic#util#bufVar(buf, 'go_go_test_args', s:go_new ? '-buildmode=archive' : '')
|
||||
let cleanup = 1
|
||||
else
|
||||
let cmd = 'build'
|
||||
let opts = syntastic#util#bufVar(buf, 'go_go_build_args', s:go_new ? '-buildmode=archive' : '')
|
||||
let cleanup = 0
|
||||
endif
|
||||
let opt_str = (type(opts) != type('') || opts !=# '') ? join(syntastic#util#argsescape(opts)) : opts
|
||||
let makeprg = self.getExecEscaped() . ' ' . cmd . ' ' . opt_str
|
||||
|
@ -82,12 +83,12 @@ function! SyntaxCheckers_go_go_GetLocList() dict
|
|||
let errors = SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'cwd': expand('%:p:h', 1),
|
||||
\ 'cwd': fnamemodify(bufname(buf), ':p:h'),
|
||||
\ 'env': {'GOGC': 'off'},
|
||||
\ 'defaults': {'type': 'e'} })
|
||||
|
||||
if cleanup
|
||||
call delete(expand('%:p:h', 1) . syntastic#util#Slash() . expand('%:p:h:t', 1) . '.test')
|
||||
call delete(fnamemodify(bufname(buf), ':p:h') . syntastic#util#Slash() . fnamemodify(bufname(buf), ':p:h') . '.test')
|
||||
endif
|
||||
|
||||
return errors
|
||||
|
|
|
@ -19,9 +19,10 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_go_gometalinter_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': '-t',
|
||||
\ 'fname': syntastic#util#shexpand('%:p:h') })
|
||||
\ 'fname': syntastic#util#shescape(fnamemodify(bufname(buf), ':p:h')) })
|
||||
|
||||
let errorformat =
|
||||
\ '%f:%l:%c:%trror: %m,' .
|
||||
|
|
|
@ -19,8 +19,9 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_go_gotype_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': (expand('%', 1) =~# '\m_test\.go$' ? '-a' : ''),
|
||||
\ 'args': (bufname(buf) =~# '\m_test\.go$' ? '-a' : ''),
|
||||
\ 'fname': '.' })
|
||||
|
||||
let errorformat =
|
||||
|
@ -34,7 +35,7 @@ function! SyntaxCheckers_go_gotype_GetLocList() dict
|
|||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'cwd': expand('%:p:h', 1),
|
||||
\ 'cwd': fnamemodify(bufname(buf), ':p:h'),
|
||||
\ 'defaults': {'type': 'e'} })
|
||||
endfunction
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_go_govet_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.getExecEscaped() . ' vet'
|
||||
|
||||
let errorformat =
|
||||
|
@ -33,7 +34,7 @@ function! SyntaxCheckers_go_govet_GetLocList() dict
|
|||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'cwd': expand('%:p:h', 1),
|
||||
\ 'cwd': fnamemodify(bufname(buf), ':p:h'),
|
||||
\ 'defaults': {'type': 'w'} })
|
||||
endfunction
|
||||
|
||||
|
|
|
@ -25,9 +25,10 @@ function! SyntaxCheckers_haskell_hdevtools_GetLocList() dict
|
|||
let g:syntastic_haskell_hdevtools_args = g:hdevtools_options
|
||||
endif
|
||||
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'exe_after': 'check',
|
||||
\ 'fname': syntastic#util#shexpand('%:p') })
|
||||
\ 'fname': syntastic#util#shescape(fnamemodify(bufname(buf), ':p')) })
|
||||
|
||||
let errorformat =
|
||||
\ '%-Z %#,'.
|
||||
|
|
|
@ -14,8 +14,9 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_haskell_hlint_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'fname': syntastic#util#shexpand('%:p')})
|
||||
\ 'fname': syntastic#util#shescape(fnamemodify(bufname(buf), ':p')) })
|
||||
|
||||
let errorformat =
|
||||
\ '%E%f:%l:%v: Error while reading hint file\, %m,' .
|
||||
|
|
|
@ -19,12 +19,10 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_haxe_haxe_GetLocList() dict
|
||||
if exists('b:vaxe_hxml')
|
||||
let hxml = b:vaxe_hxml
|
||||
elseif exists('g:vaxe_hxml')
|
||||
let hxml = g:vaxe_hxml
|
||||
else
|
||||
let hxml = syntastic#util#findGlobInParent('*.hxml', expand('%:p:h', 1))
|
||||
let buf = bufnr('')
|
||||
let hxml = syntastic#util#bufRawVar(buf, 'vaxe_hxml')
|
||||
if hxml ==# ''
|
||||
let hxml = syntastic#util#findGlobInParent('*.hxml', fnamemodify(bufname(buf), ':p:h'))
|
||||
endif
|
||||
let hxml = fnamemodify(hxml, ':p')
|
||||
|
||||
|
|
|
@ -31,7 +31,8 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_html_validator_GetLocList() dict
|
||||
let fname = syntastic#util#shexpand('%')
|
||||
let buf = bufnr('')
|
||||
let fname = syntastic#util#shescape(fnamemodify(bufname(buf), ':p'))
|
||||
let makeprg = self.getExecEscaped() . ' -q -L -s --compressed -F out=gnu -F asciiquotes=yes' .
|
||||
\ (g:syntastic_html_validator_parser !=# '' ? ' -F parser=' . g:syntastic_html_validator_parser : '') .
|
||||
\ (g:syntastic_html_validator_nsfilter !=# '' ? ' -F nsfilter=' . g:syntastic_html_validator_nsfilter : '') .
|
||||
|
|
|
@ -23,8 +23,9 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_html_w3_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.getExecEscaped() . ' -q -L -s -F output=json ' .
|
||||
\ '-F uploaded_file=@' . syntastic#util#shexpand('%:p') . '\;type=text/html ' .
|
||||
\ '-F uploaded_file=@' . syntastic#util#shescape(fnamemodify(bufname(buf), ':p')) . '\;type=text/html ' .
|
||||
\ g:syntastic_html_w3_api
|
||||
|
||||
let errorformat =
|
||||
|
|
|
@ -40,6 +40,8 @@ endfunction
|
|||
|
||||
function! SyntaxCheckers_java_checkstyle_GetLocList() dict
|
||||
|
||||
let buf = bufnr('')
|
||||
|
||||
" classpath
|
||||
if !exists('s:sep')
|
||||
let s:sep = syntastic#util#isRunningWindows() || has('win32unix') ? ';' : ':'
|
||||
|
@ -58,7 +60,7 @@ function! SyntaxCheckers_java_checkstyle_GetLocList() dict
|
|||
\ '-f', 'xml' ])
|
||||
|
||||
" filename
|
||||
let fname = syntastic#util#shescape( expand('%:p:h', 1) . syntastic#util#Slash() . expand('%:t', 1) )
|
||||
let fname = syntastic#util#shescape( fnamemodify(bufname(buf), ':p:h') . syntastic#util#Slash() . fnamemodify(bufname(buf), ':t') )
|
||||
if has('win32unix')
|
||||
let fname = substitute(syntastic#util#system('cygpath -m ' . fname), '\m\%x00', '', 'g')
|
||||
endif
|
||||
|
|
|
@ -223,7 +223,7 @@ endfunction " }}}2
|
|||
function! s:SaveClasspath() " {{{2
|
||||
" build classpath from lines
|
||||
let path = ''
|
||||
let lines = getline(1, line('$'))
|
||||
let lines = getline(1, '$')
|
||||
for l in lines
|
||||
let path = s:AddToClasspath(path, l)
|
||||
endfor
|
||||
|
@ -281,7 +281,7 @@ endfunction " }}}2
|
|||
|
||||
function! s:SaveConfig() " {{{2
|
||||
" get lines
|
||||
let lines = getline(1, line('$'))
|
||||
let lines = getline(1, '$')
|
||||
if g:syntastic_java_javac_config_file_enabled
|
||||
" save config file lines
|
||||
call writefile(lines, expand(g:syntastic_java_javac_config_file, 1))
|
||||
|
|
|
@ -42,11 +42,12 @@ function! SyntaxCheckers_javascript_closurecompiler_GetLocList() dict
|
|||
call syntastic#log#deprecationWarn('javascript_closure_compiler_options', 'javascript_closurecompiler_args')
|
||||
call syntastic#log#deprecationWarn('javascript_closure_compiler_file_list', 'javascript_closurecompiler_file_list')
|
||||
|
||||
let flist = expand(get(g:, 'syntastic_javascript_closurecompiler_file_list', ''), 1)
|
||||
let buf = bufnr('')
|
||||
let flist = expand(syntastic#util#bufVar(buf, 'javascript_closurecompiler_file_list'), 1)
|
||||
if filereadable(flist)
|
||||
let file_list = map( readfile(flist), 'expand(v:var, 1)' )
|
||||
else
|
||||
let file_list = [expand('%', 1)]
|
||||
let file_list = [bufname(buf)]
|
||||
endif
|
||||
|
||||
let makeprg = self.makeprgBuild({
|
||||
|
|
|
@ -29,7 +29,8 @@ function! SyntaxCheckers_javascript_flow_IsAvailable() dict
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_javascript_flow_GetLocList() dict
|
||||
if syntastic#util#findFileInParent('.flowconfig', expand('%:p:h', 1)) ==# ''
|
||||
let buf = bufnr('')
|
||||
if syntastic#util#findFileInParent('.flowconfig', fnamemodify(bufname(buf), ':p:h')) ==# ''
|
||||
return []
|
||||
endif
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_limbo_limbo_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let include = $INFERNO_HOME !=# '' ? '-I$INFERNO_HOME ' : ''
|
||||
" don't generate .dis in current dir while checking syntax,
|
||||
" .dis should be generated by `mk`
|
||||
|
@ -27,7 +28,7 @@ function! SyntaxCheckers_limbo_limbo_GetLocList() dict
|
|||
let makeprg = self.makeprgBuild({ 'args_before': include . '-w' . output })
|
||||
|
||||
let errorformat = '%E%f:%l:%m'
|
||||
if expand('%', 1) =~# '\m\.m$'
|
||||
if bufname(buf) =~# '\m\.m$'
|
||||
let errorformat = '%-G%f:%l: near ` EOF ` : no implementation module,' . errorformat
|
||||
endif
|
||||
|
||||
|
|
|
@ -19,9 +19,10 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_nasm_nasm_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_after': '-X gnu' .
|
||||
\ ' -I ' . syntastic#util#shescape(expand('%:p:h', 1) . syntastic#util#Slash()) .
|
||||
\ ' -I ' . syntastic#util#shescape(fnamemodify(bufname(buf), ':p:h') . syntastic#util#Slash()) .
|
||||
\ ' ' . syntastic#c#NullOutput() })
|
||||
|
||||
let errorformat = '%f:%l: %t%*[^:]: %m'
|
||||
|
|
|
@ -44,7 +44,8 @@ function! SyntaxCheckers_ocaml_camlp4o_IsAvailable() dict " {{{1
|
|||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_ocaml_camlp4o_GetLocList() dict " {{{1
|
||||
let makeprg = s:GetMakeprg()
|
||||
let buf = bufnr('')
|
||||
let makeprg = s:GetMakeprg(buf)
|
||||
if makeprg ==# ''
|
||||
return []
|
||||
endif
|
||||
|
@ -65,7 +66,7 @@ function! SyntaxCheckers_ocaml_camlp4o_GetLocList() dict " {{{1
|
|||
let loclist = SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'defaults': {'bufnr': bufnr('')} })
|
||||
\ 'defaults': {'bufnr': buf} })
|
||||
|
||||
for e in loclist
|
||||
if get(e, 'col', 0) && get(e, 'nr', 0)
|
||||
|
@ -79,40 +80,41 @@ endfunction " }}}1
|
|||
|
||||
" Utilities {{{1
|
||||
|
||||
function! s:GetMakeprg() " {{{2
|
||||
function! s:GetMakeprg(buf) " {{{2
|
||||
return
|
||||
\ g:syntastic_ocaml_use_ocamlc ? g:syntastic_ocaml_use_ocamlc :
|
||||
\ (g:syntastic_ocaml_use_ocamlbuild && isdirectory('_build')) ? s:GetOcamlcMakeprg() :
|
||||
\ s:GetOtherMakeprg()
|
||||
\ (g:syntastic_ocaml_use_ocamlbuild && isdirectory('_build')) ? s:GetOcamlcMakeprg(a:buf) :
|
||||
\ s:GetOtherMakeprg(a:buf)
|
||||
endfunction " }}}2
|
||||
|
||||
function! s:GetOcamlcMakeprg() " {{{2
|
||||
function! s:GetOcamlcMakeprg(buf) " {{{2
|
||||
let build_cmd = g:syntastic_ocaml_use_janestreet_core ?
|
||||
\ 'ocamlc -I ' . syntastic#util#shexpand(g:syntastic_ocaml_janestreet_core_dir) : 'ocamlc'
|
||||
let build_cmd .= ' -c ' . syntastic#util#shexpand('%')
|
||||
let build_cmd .= ' -c ' . syntastic#util#shescape(bufname(a:buf))
|
||||
return build_cmd
|
||||
endfunction " }}}2
|
||||
|
||||
function! s:GetOcamlBuildMakeprg() " {{{2
|
||||
function! s:GetOcamlBuildMakeprg(buf) " {{{2
|
||||
return 'ocamlbuild -quiet -no-log -tag annot,' . s:ocamlpp . ' -no-links -no-hygiene -no-sanitize ' .
|
||||
\ syntastic#util#shexpand('%:r') . '.cmi'
|
||||
\ syntastic#util#shexpand(fnamemodify(bufname(a:buf), ':r')) . '.cmi'
|
||||
endfunction " }}}2
|
||||
|
||||
function! s:GetOtherMakeprg() " {{{2
|
||||
function! s:GetOtherMakeprg(buf) " {{{2
|
||||
"TODO: give this function a better name?
|
||||
"
|
||||
"TODO: should use throw/catch instead of returning an empty makeprg
|
||||
|
||||
let extension = expand('%:e', 1)
|
||||
let fname = bufname(a:buf)
|
||||
let extension = fnamemodify(fname, ':e')
|
||||
let makeprg = ''
|
||||
|
||||
if stridx(extension, 'mly') >= 0 && executable('menhir')
|
||||
" ocamlyacc output can't be redirected, so use menhir
|
||||
let makeprg = 'menhir --only-preprocess ' . syntastic#util#shexpand('%') . ' >' . syntastic#util#DevNull()
|
||||
let makeprg = 'menhir --only-preprocess ' . syntastic#util#shescape(fname) . ' >' . syntastic#util#DevNull()
|
||||
elseif stridx(extension,'mll') >= 0 && executable('ocamllex')
|
||||
let makeprg = 'ocamllex -q ' . syntastic#c#NullOutput() . ' ' . syntastic#util#shexpand('%')
|
||||
let makeprg = 'ocamllex -q ' . syntastic#c#NullOutput() . ' ' . syntastic#util#shescape(fname)
|
||||
else
|
||||
let makeprg = 'camlp4o ' . syntastic#c#NullOutput() . ' ' . syntastic#util#shexpand('%')
|
||||
let makeprg = 'camlp4o ' . syntastic#c#NullOutput() . ' ' . syntastic#util#shescape(fname)
|
||||
endif
|
||||
|
||||
return makeprg
|
||||
|
|
|
@ -51,13 +51,14 @@ function! SyntaxCheckers_perl_perl_IsAvailable() dict " {{{1
|
|||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_perl_perl_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
if type(g:syntastic_perl_lib_path) == type('')
|
||||
call syntastic#log#oneTimeWarn('variable g:syntastic_perl_lib_path should be a list')
|
||||
let includes = split(g:syntastic_perl_lib_path, ',')
|
||||
else
|
||||
let includes = copy(syntastic#util#var('perl_lib_path', []))
|
||||
let includes = copy(syntastic#util#bufVar(buf, 'perl_lib_path', []))
|
||||
endif
|
||||
let shebang = syntastic#util#parseShebang()
|
||||
let shebang = syntastic#util#parseShebang(buf)
|
||||
let extra = map(includes, '"-I" . v:val') +
|
||||
\ (index(shebang['args'], '-T') >= 0 ? ['-T'] : []) +
|
||||
\ (index(shebang['args'], '-t') >= 0 ? ['-t'] : [])
|
||||
|
|
|
@ -43,11 +43,13 @@ function! SyntaxCheckers_r_lint_IsAvailable() dict
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_r_lint_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
|
||||
let setwd = syntastic#util#isRunningWindows() ? 'setwd("' . escape(getcwd(), '"\') . '"); ' : ''
|
||||
let makeprg = self.getExecEscaped() . ' --slave --restore --no-save' .
|
||||
\ ' -e ' . syntastic#util#shescape(setwd . 'library(lint); ' .
|
||||
\ 'try(lint(commandArgs(TRUE), ' . g:syntastic_r_lint_styles . '))') .
|
||||
\ ' --args ' . syntastic#util#shexpand('%')
|
||||
\ ' --args ' . syntastic#util#shescape(bufname(buf))
|
||||
|
||||
let errorformat =
|
||||
\ '%t:%f:%l:%v: %m,' .
|
||||
|
|
|
@ -38,7 +38,7 @@ set cpo&vim
|
|||
|
||||
function! SyntaxCheckers_r_lintr_GetHighlightRegex(item)
|
||||
let term = matchstr(a:item['text'], "\\m'\\zs[^']\\+\\ze'")
|
||||
return term != '' ? '\V' . escape(term, '\') : ''
|
||||
return term !=# '' ? '\V' . escape(term, '\') : ''
|
||||
endfunction
|
||||
|
||||
function! SyntaxCheckers_r_lintr_IsAvailable() dict
|
||||
|
@ -50,11 +50,13 @@ function! SyntaxCheckers_r_lintr_IsAvailable() dict
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_r_lintr_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
|
||||
let setwd = syntastic#util#isRunningWindows() ? 'setwd("' . escape(getcwd(), '"\') . '"); ' : ''
|
||||
let makeprg = self.getExecEscaped() . ' --slave --no-restore --no-save' .
|
||||
\ ' -e ' . syntastic#util#shescape(setwd . 'suppressPackageStartupMessages(library(lintr)); ' .
|
||||
\ 'lint(cache = ' . g:syntastic_r_lintr_cache . ', commandArgs(TRUE), ' . g:syntastic_r_lintr_linters . ')') .
|
||||
\ ' --args ' . syntastic#util#shexpand('%')
|
||||
\ ' --args ' . syntastic#util#shescape(bufname(buf))
|
||||
|
||||
let errorformat =
|
||||
\ '%W%f:%l:%c: style: %m,' .
|
||||
|
|
|
@ -46,11 +46,13 @@ function! SyntaxCheckers_r_svtools_IsAvailable() dict
|
|||
endfunction
|
||||
|
||||
function! SyntaxCheckers_r_svtools_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
|
||||
let setwd = syntastic#util#isRunningWindows() ? 'setwd("' . escape(getcwd(), '"\') . '"); ' : ''
|
||||
let makeprg = self.getExecEscaped() . ' --slave --restore --no-save' .
|
||||
\ ' -e ' . syntastic#util#shescape(setwd . 'library(svTools); ' .
|
||||
\ 'try(lint(commandArgs(TRUE), filename = commandArgs(TRUE), type = "flat", sep = ":"))') .
|
||||
\ ' --args ' . syntastic#util#shexpand('%')
|
||||
\ ' --args ' . syntastic#util#shescape(bufname(buf))
|
||||
|
||||
let errorformat =
|
||||
\ '%trror:%f:%\s%#%l:%\s%#%v:%m,' .
|
||||
|
|
|
@ -26,11 +26,12 @@ augroup syntastic
|
|||
augroup END
|
||||
|
||||
function! SyntaxCheckers_rst_sphinx_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
|
||||
let srcdir = syntastic#util#var('rst_sphinx_source_dir')
|
||||
call self.log('g:syntastic_rst_sphinx_source_dir =', srcdir)
|
||||
let srcdir = syntastic#util#bufVar(buf, 'rst_sphinx_source_dir')
|
||||
call self.log('syntastic_rst_sphinx_source_dir =', srcdir)
|
||||
if srcdir ==# ''
|
||||
let config = syntastic#util#findFileInParent('conf.py', expand('%:p:h', 1))
|
||||
let config = syntastic#util#findFileInParent('conf.py', fnamemodify(bufname(buf), ':p:h'))
|
||||
if config ==# '' || !filereadable(config)
|
||||
call self.log('conf.py file not found')
|
||||
return []
|
||||
|
@ -38,10 +39,10 @@ function! SyntaxCheckers_rst_sphinx_GetLocList() dict
|
|||
let srcdir = fnamemodify(config, ':p:h')
|
||||
endif
|
||||
|
||||
let confdir = syntastic#util#var('rst_sphinx_config_dir')
|
||||
call self.log('g:syntastic_rst_sphinx_config_dir =', confdir)
|
||||
let confdir = syntastic#util#bufVar(buf, 'rst_sphinx_config_dir')
|
||||
call self.log('syntastic_rst_sphinx_config_dir =', confdir)
|
||||
if confdir ==# ''
|
||||
let config = syntastic#util#findFileInParent('conf.py', expand('%:p:h', 1))
|
||||
let config = syntastic#util#findFileInParent('conf.py', fnamemodify(bufname(buf), ':p:h'))
|
||||
let confdir = (config !=# '' && filereadable(config)) ? fnamemodify(config, ':p:h') : srcdir
|
||||
endif
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@ if exists('g:loaded_syntastic_sass_sass_checker')
|
|||
endif
|
||||
let g:loaded_syntastic_sass_sass_checker = 1
|
||||
|
||||
"sass caching for large files drastically speeds up the checking, but store it
|
||||
"in a temp location otherwise sass puts .sass_cache dirs in the users project
|
||||
" sass caching for large files drastically speeds up the checking, but store it
|
||||
" in a temp location otherwise sass puts .sass_cache dirs in the users project
|
||||
let s:sass_cache_location = syntastic#util#tmpdir()
|
||||
lockvar s:sass_cache_location
|
||||
|
||||
|
@ -24,12 +24,12 @@ augroup syntastic
|
|||
autocmd VimLeave * call syntastic#util#rmrf(s:sass_cache_location)
|
||||
augroup END
|
||||
|
||||
"By default do not check partials as unknown variables are a syntax error
|
||||
" By default do not check partials as unknown variables are a syntax error
|
||||
if !exists('g:syntastic_sass_check_partials')
|
||||
let g:syntastic_sass_check_partials = 0
|
||||
endif
|
||||
|
||||
"use compass imports if available
|
||||
" use compass imports if available
|
||||
let s:imports = ''
|
||||
if executable('compass')
|
||||
let s:imports = '--compass'
|
||||
|
@ -39,7 +39,8 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_sass_sass_GetLocList() dict
|
||||
if !g:syntastic_sass_check_partials && expand('%:t', 1)[0] ==# '_'
|
||||
let buf = bufnr('')
|
||||
if !syntastic#util#bufVar(buf, 'sass_check_partials') && fnamemodify(bufname(buf), ':t')[0] ==# '_'
|
||||
return []
|
||||
endif
|
||||
|
||||
|
|
|
@ -24,9 +24,10 @@ function! SyntaxCheckers_scala_fsc_GetLocList() dict
|
|||
" fsc has some serious problems with the
|
||||
" working directory changing after being started
|
||||
" that's why we better pass an absolute path
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': '-Ystop-after:parser',
|
||||
\ 'fname': syntastic#util#shexpand('%:p') })
|
||||
\ 'fname': syntastic#util#shescape(fnamemodify(bufname(buf), ':p')) })
|
||||
|
||||
let errorformat =
|
||||
\ '%E%f:%l: %trror: %m,' .
|
||||
|
|
|
@ -19,21 +19,23 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_sh_sh_IsAvailable() dict " {{{1
|
||||
call self.log('shell =', s:GetShell())
|
||||
return s:IsShellValid()
|
||||
let buf = bufnr('')
|
||||
call self.log('shell =', s:GetShell(buf))
|
||||
return s:IsShellValid(buf)
|
||||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_sh_sh_GetLocList() dict " {{{1
|
||||
if s:GetShell() ==# 'zsh'
|
||||
let buf = bufnr('')
|
||||
if s:GetShell(buf) ==# 'zsh'
|
||||
return s:ForwardToZshChecker()
|
||||
endif
|
||||
|
||||
if !s:IsShellValid()
|
||||
if !s:IsShellValid(buf)
|
||||
return []
|
||||
endif
|
||||
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'exe': s:GetShell(),
|
||||
\ 'exe': s:GetShell(buf),
|
||||
\ 'args_after': '-n' })
|
||||
|
||||
let errorformat = '%f: line %l: %m'
|
||||
|
@ -45,29 +47,29 @@ endfunction " }}}1
|
|||
|
||||
" Utilities {{{1
|
||||
|
||||
function! s:GetShell() " {{{2
|
||||
if !exists('b:shell') || b:shell ==# ''
|
||||
let b:shell = ''
|
||||
let shebang = syntastic#util#parseShebang()['exe']
|
||||
function! s:GetShell(buf) " {{{2
|
||||
let shell = syntastic#util#getbufvar(a:buf, 'shell')
|
||||
if shell ==# ''
|
||||
let shebang = syntastic#util#parseShebang(a:buf)['exe']
|
||||
if shebang !=# ''
|
||||
if shebang[-strlen('bash'):-1] ==# 'bash'
|
||||
let b:shell = 'bash'
|
||||
let shell = 'bash'
|
||||
elseif shebang[-strlen('zsh'):-1] ==# 'zsh'
|
||||
let b:shell = 'zsh'
|
||||
let shell = 'zsh'
|
||||
elseif shebang[-strlen('sh'):-1] ==# 'sh'
|
||||
let b:shell = 'sh'
|
||||
let shell = 'sh'
|
||||
endif
|
||||
endif
|
||||
" try to use env variable in case no shebang could be found
|
||||
if b:shell ==# ''
|
||||
let b:shell = fnamemodify($SHELL, ':t')
|
||||
if shell ==# ''
|
||||
let shell = fnamemodify($SHELL, ':t')
|
||||
endif
|
||||
endif
|
||||
return b:shell
|
||||
return shell
|
||||
endfunction " }}}2
|
||||
|
||||
function! s:IsShellValid() " {{{2
|
||||
let shell = s:GetShell()
|
||||
function! s:IsShellValid(buf) " {{{2
|
||||
let shell = s:GetShell(a:buf)
|
||||
return shell !=# '' && executable(shell)
|
||||
endfunction " }}}2
|
||||
|
||||
|
|
|
@ -12,8 +12,9 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_sh_shellcheck_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': s:GetShell(),
|
||||
\ 'args': s:GetShell(buf),
|
||||
\ 'args_after': '-f gcc' })
|
||||
|
||||
let errorformat =
|
||||
|
@ -38,15 +39,15 @@ endfunction " }}}1
|
|||
|
||||
" Utilities {{{1
|
||||
|
||||
function! s:GetShell() " {{{2
|
||||
function! s:GetShell(buf) " {{{2
|
||||
let sh = ''
|
||||
|
||||
if syntastic#util#parseShebang()['exe'] ==# ''
|
||||
if syntastic#util#rawVar('is_kornshell', 0) || syntastic#util#rawVar('is_posix', 0)
|
||||
if syntastic#util#parseShebang(a:buf)['exe'] ==# ''
|
||||
if syntastic#util#bufRawVar(a:buf, 'is_kornshell', 0) || syntastic#util#bufRawVar(a:buf, 'is_posix', 0)
|
||||
let sh = 'ksh'
|
||||
elseif syntastic#util#rawVar('is_bash', 0)
|
||||
elseif syntastic#util#bufRawVar(a:buf, 'is_bash', 0)
|
||||
let sh = 'bash'
|
||||
elseif syntastic#util#rawVar('is_sh', 0)
|
||||
elseif syntastic#util#bufRawVar(a:buf, 'is_sh', 0)
|
||||
let sh = 'sh'
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -44,19 +44,17 @@ endfunction " }}}1
|
|||
" Utilities {{{1
|
||||
|
||||
function! s:GetValaOpts(buf, name, comment, cmd) " {{{2
|
||||
let var = syntastic#util#var('vala_' . a:name)
|
||||
let var = syntastic#util#bufVar(a:buf, 'vala_' . a:name)
|
||||
if type(var) == type([])
|
||||
let opts = map(copy(var), 'syntastic#util#shescape(v:val)')
|
||||
elseif type(var) == type('')
|
||||
if var !=# ''
|
||||
let opts = split(var, '\s\+')
|
||||
let opts = split(var, '\m\s\+')
|
||||
else
|
||||
let opts = []
|
||||
for line in filter(getbufline(a:buf, 1, 100), 'v:val =~# ' . string('\m^//\s\+' . a:comment . ':\s*'))
|
||||
call extend(opts, split( matchstr(line, '\m^//\s\+' . a:comment . ':\s*\zs.*'), '\s\+' ))
|
||||
call extend(opts, split( matchstr(line, '\m^//\s\+' . a:comment . ':\s*\zs.*'), '\m\s\+' ))
|
||||
endfor
|
||||
|
||||
call map( filter(opts, 'v:val !=# ""'), 'syntastic#util#shescape(v:val)' )
|
||||
endif
|
||||
else
|
||||
call syntastic#log#error('syntastic_vala_' . a:name . ' must be either a list, or a string')
|
||||
|
|
|
@ -44,6 +44,8 @@ function! SyntaxCheckers_vim_vimlint_IsAvailable() dict " {{{1
|
|||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_vim_vimlint_GetLocList() dict " {{{1
|
||||
let buf = bufnr('')
|
||||
|
||||
" EVL102: unused variable v
|
||||
" EVL103: unused argument v
|
||||
" EVL104: variable may not be initialized on some execution path: v
|
||||
|
@ -67,17 +69,15 @@ function! SyntaxCheckers_vim_vimlint_GetLocList() dict " {{{1
|
|||
\ 'EVL204': 3,
|
||||
\ 'EVL205': 3 }
|
||||
|
||||
if exists('g:syntastic_vimlint_options') || exists('b:syntastic_vimlint_options')
|
||||
let opts = syntastic#util#var('vimlint_options')
|
||||
if type(opts) == type({})
|
||||
let options = filter(copy(opts), 'v:key =~# "\\m^EVL"')
|
||||
call extend(param, options, 'force')
|
||||
endif
|
||||
let opts = syntastic#util#bufVar(buf, 'vimlint_options')
|
||||
if type(opts) == type({})
|
||||
let options = filter(copy(opts), 'v:key =~# "\\m^EVL"')
|
||||
call extend(param, options, 'force')
|
||||
endif
|
||||
|
||||
call self.log('options =', param)
|
||||
|
||||
return vimlint#vimlint(expand('%', 1), param)
|
||||
return vimlint#vimlint(bufname(buf), param)
|
||||
endfunction " }}}1
|
||||
|
||||
" Utilities {{{1
|
||||
|
|
|
@ -18,10 +18,11 @@ let s:save_cpo = &cpo
|
|||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_xquery_basex_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_after': '-z',
|
||||
\ 'fname_before': '-q',
|
||||
\ 'fname': syntastic#util#shescape('inspect:module("' . escape(expand('%:p', 1), '"') . '")') })
|
||||
\ 'fname': syntastic#util#shescape('inspect:module("' . escape(fnamemodify(bufname(buf), ':p'), '"') . '")') })
|
||||
|
||||
let errorformat =
|
||||
\ '%f:%l:%c:%t:%n:%m,' .
|
||||
|
|
|
@ -29,13 +29,14 @@ function! SyntaxCheckers_yaml_yamlxs_IsAvailable() dict
|
|||
|
||||
" don't call executable() here, to allow things like
|
||||
" let g:syntastic_perl_interpreter='/usr/bin/env perl'
|
||||
silent! call syntastic#util#system(self.getExecEscaped() . ' ' . s:Modules() . ' -e ' . syntastic#util#shescape('exit(0)'))
|
||||
silent! call syntastic#util#system(self.getExecEscaped() . ' ' . s:Modules(bufnr('')) . ' -e ' . syntastic#util#shescape('exit(0)'))
|
||||
return v:shell_error == 0
|
||||
endfunction
|
||||
|
||||
function! SyntaxCheckers_yaml_yamlxs_GetLocList() dict
|
||||
let buf = bufnr('')
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_before': s:Modules() . ' -e ' . syntastic#util#shescape('YAML::XS::LoadFile($ARGV[0])') })
|
||||
\ 'args_before': s:Modules(buf) . ' -e ' . syntastic#util#shescape('YAML::XS::LoadFile($ARGV[0])') })
|
||||
|
||||
let errorformat =
|
||||
\ '%EYAML::XS::Load Error: The problem:,' .
|
||||
|
@ -51,12 +52,13 @@ function! SyntaxCheckers_yaml_yamlxs_GetLocList() dict
|
|||
\ 'defaults': {'bufnr': bufnr('')} })
|
||||
endfunction
|
||||
|
||||
function s:Modules()
|
||||
if type(g:syntastic_perl_lib_path) == type('')
|
||||
call syntastic#log#oneTimeWarn('variable g:syntastic_perl_lib_path should be a list')
|
||||
let includes = split(g:syntastic_perl_lib_path, ',')
|
||||
function s:Modules(buf)
|
||||
let lib_path = syntastic#util#bufVar(a:buf, 'perl_lib_path')
|
||||
if type(lib_path) == type('')
|
||||
call syntastic#log#oneTimeWarn('variable syntastic_perl_lib_path should be a list')
|
||||
let includes = split(lib_path, ',')
|
||||
else
|
||||
let includes = copy(syntastic#util#var('perl_lib_path'))
|
||||
let includes = copy(lib_path)
|
||||
endif
|
||||
return join(map(includes, '"-I" . v:val') + ['-MYAML::XS'])
|
||||
endfunction
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
All files except:
|
||||
|
||||
ftdetect/vim-literate-coffeescript.vim
|
||||
indent/litcoffee.vim
|
||||
syntax/litcoffee.vim
|
||||
test/test.coffee.md
|
||||
test/test.litcoffee
|
||||
test/test.png
|
||||
|
||||
Issued under WTFPL:
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
|
@ -13,3 +24,31 @@
|
|||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
|
||||
|
||||
These files issed under this license:
|
||||
|
||||
ftdetect/vim-literate-coffeescript.vim
|
||||
indent/litcoffee.vim
|
||||
syntax/litcoffee.vim
|
||||
test/test.coffee.md
|
||||
test/test.litcoffee
|
||||
test/test.png
|
||||
|
||||
Copyright (c) 2013 Michael Smith
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
|
@ -337,23 +337,15 @@ It behaves very similar to `:make`, described [above](#compile-to-javascript).
|
|||
|
||||
## Literate CoffeeScript
|
||||
|
||||
Literate CoffeeScript syntax and indent support is provided by
|
||||
[vim-literate-coffeescript]. The `Coffee` commands detect when they're running
|
||||
on a litcoffee file and pass the `--literate` flag to their respective tools,
|
||||
but at this time the commands are not automatically loaded when a litcoffee file
|
||||
is opened.
|
||||
Literate CoffeeScript syntax and indent support is now built in! The `Coffee`
|
||||
commands detect when they're running on a litcoffee file and pass the
|
||||
`--literate` flag to their respective tools.
|
||||
|
||||
[vim-literate-coffeescript]: https://github.com/mintplant/vim-literate-coffeescript
|
||||
|
||||
To load them, run
|
||||
|
||||
runtime ftplugin/coffee.vim
|
||||
|
||||
while inside a litcoffee buffer. To do this automatically, add
|
||||
|
||||
autocmd FileType litcoffee runtime ftplugin/coffee.vim
|
||||
|
||||
to your vimrc.
|
||||
Literate CoffeeScript syntax and indent support was written by @mintplant
|
||||
(Michael Smith). A standalone repo
|
||||
[exists](https://github.com/jwhitley/vim-literate-coffeescript), but you'll
|
||||
need to copy the `ftplugin/litcoffee.vim` file or set up an autocmd to get the
|
||||
`Coffee` commands to be automatically loaded for litcoffee files.
|
||||
|
||||
## CoffeeScript in HTML
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
" Language: Literate CoffeeScript
|
||||
" Maintainer: Michael Smith <michael@diglumi.com>
|
||||
" URL: https://github.com/mintplant/vim-literate-coffeescript
|
||||
" License: MIT
|
||||
|
||||
autocmd BufNewFile,BufRead *.litcoffee set filetype=litcoffee
|
||||
autocmd BufNewFile,BufRead *.coffee.md set filetype=litcoffee
|
||||
|
|
@ -0,0 +1 @@
|
|||
runtime ftplugin/coffee.vim
|
22
sources_non_forked/vim-coffee-script/indent/litcoffee.vim
Normal file
22
sources_non_forked/vim-coffee-script/indent/litcoffee.vim
Normal file
|
@ -0,0 +1,22 @@
|
|||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! indent/coffee.vim
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetLitCoffeeIndent()
|
||||
|
||||
if exists('*GetLitCoffeeIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
function GetLitCoffeeIndent()
|
||||
if searchpair('^ \|\t', '', '$', 'bWnm') > 0
|
||||
return GetCoffeeIndent(v:lnum)
|
||||
else
|
||||
return -1
|
||||
endif
|
||||
endfunc
|
||||
|
|
@ -32,7 +32,7 @@ hi def link coffeeConditional Conditional
|
|||
syn match coffeeException /\<\%(try\|catch\|finally\)\>/ display
|
||||
hi def link coffeeException Exception
|
||||
|
||||
syn match coffeeKeyword /\<\%(new\|in\|of\|by\|and\|or\|not\|is\|isnt\|class\|extends\|super\|do\|yield\|debugger\|import\|export\)\>/
|
||||
syn match coffeeKeyword /\<\%(new\|in\|of\|by\|and\|or\|not\|is\|isnt\|class\|extends\|super\|do\|yield\|debugger\|import\|export\|await\)\>/
|
||||
\ display
|
||||
" The `own` keyword is only a keyword after `for`.
|
||||
syn match coffeeKeyword /\<for\s\+own\>/ contained containedin=coffeeRepeat
|
||||
|
|
23
sources_non_forked/vim-coffee-script/syntax/litcoffee.vim
Normal file
23
sources_non_forked/vim-coffee-script/syntax/litcoffee.vim
Normal file
|
@ -0,0 +1,23 @@
|
|||
" Language: Literate CoffeeScript
|
||||
" Maintainer: Michael Smith <michael@diglumi.com>
|
||||
" URL: https://github.com/mintplant/vim-literate-coffeescript
|
||||
" License: MIT
|
||||
|
||||
if exists('b:current_syntax') && b:current_syntax == 'litcoffee'
|
||||
finish
|
||||
endif
|
||||
|
||||
syn include @markdown syntax/markdown.vim
|
||||
syn include @coffee syntax/coffee.vim
|
||||
|
||||
" Partition the file into notCoffee and inlineCoffee. Each line will match
|
||||
" exactly one of these regions. notCoffee matches with a zero-width
|
||||
" look-behind.
|
||||
syn region notCoffee start='^\%( \|\t\)\@<!' end='$' contains=@markdown
|
||||
syn region inlineCoffee start='^ \|\t' end='$' contains=@coffee
|
||||
|
||||
" We defined notCoffee as a region so we can highlight every element in it
|
||||
" that doesn't have it's own explicit rule.
|
||||
highlight default link notCoffee Comment
|
||||
|
||||
let b:current_syntax = "litcoffee"
|
117
sources_non_forked/vim-coffee-script/test/test.coffee.md
Normal file
117
sources_non_forked/vim-coffee-script/test/test.coffee.md
Normal file
|
@ -0,0 +1,117 @@
|
|||
The **Scope** class regulates lexical scoping within CoffeeScript. As you
|
||||
generate code, you create a tree of scopes in the same shape as the nested
|
||||
function bodies. Each scope knows about the variables declared within it,
|
||||
and has a reference to its parent enclosing scope. In this way, we know which
|
||||
variables are new and need to be declared with `var`, and which are shared
|
||||
with external scopes.
|
||||
|
||||
Import the helpers we plan to use.
|
||||
|
||||
{extend, last} = require './helpers'
|
||||
|
||||
exports.Scope = class Scope
|
||||
|
||||
The `root` is the top-level **Scope** object for a given file.
|
||||
|
||||
@root: null
|
||||
|
||||
Initialize a scope with its parent, for lookups up the chain,
|
||||
as well as a reference to the **Block** node it belongs to, which is
|
||||
where it should declare its variables, and a reference to the function that
|
||||
it belongs to.
|
||||
|
||||
constructor: (@parent, @expressions, @method) ->
|
||||
@variables = [{name: 'arguments', type: 'arguments'}]
|
||||
@positions = {}
|
||||
Scope.root = this unless @parent
|
||||
|
||||
Adds a new variable or overrides an existing one.
|
||||
|
||||
add: (name, type, immediate) ->
|
||||
return @parent.add name, type, immediate if @shared and not immediate
|
||||
if Object::hasOwnProperty.call @positions, name
|
||||
@variables[@positions[name]].type = type
|
||||
else
|
||||
@positions[name] = @variables.push({name, type}) - 1
|
||||
|
||||
When `super` is called, we need to find the name of the current method we're
|
||||
in, so that we know how to invoke the same method of the parent class. This
|
||||
can get complicated if super is being called from an inner function.
|
||||
`namedMethod` will walk up the scope tree until it either finds the first
|
||||
function object that has a name filled in, or bottoms out.
|
||||
|
||||
namedMethod: ->
|
||||
return @method if @method.name or !@parent
|
||||
@parent.namedMethod()
|
||||
|
||||
Look up a variable name in lexical scope, and declare it if it does not
|
||||
already exist.
|
||||
|
||||
find: (name) ->
|
||||
return yes if @check name
|
||||
@add name, 'var'
|
||||
no
|
||||
|
||||
Reserve a variable name as originating from a function parameter for this
|
||||
scope. No `var` required for internal references.
|
||||
|
||||
parameter: (name) ->
|
||||
return if @shared and @parent.check name, yes
|
||||
@add name, 'param'
|
||||
|
||||
Just check to see if a variable has already been declared, without reserving,
|
||||
walks up to the root scope.
|
||||
|
||||
check: (name) ->
|
||||
!!(@type(name) or @parent?.check(name))
|
||||
|
||||
Generate a temporary variable name at the given index.
|
||||
|
||||
temporary: (name, index) ->
|
||||
if name.length > 1
|
||||
'_' + name + if index > 1 then index - 1 else ''
|
||||
else
|
||||
'_' + (index + parseInt name, 36).toString(36).replace /\d/g, 'a'
|
||||
|
||||
Gets the type of a variable.
|
||||
|
||||
type: (name) ->
|
||||
return v.type for v in @variables when v.name is name
|
||||
null
|
||||
|
||||
If we need to store an intermediate result, find an available name for a
|
||||
compiler-generated variable. `_var`, `_var2`, and so on...
|
||||
|
||||
freeVariable: (name, reserve=true) ->
|
||||
index = 0
|
||||
index++ while @check((temp = @temporary name, index))
|
||||
@add temp, 'var', yes if reserve
|
||||
temp
|
||||
|
||||
Ensure that an assignment is made at the top of this scope
|
||||
(or at the top-level scope, if requested).
|
||||
|
||||
assign: (name, value) ->
|
||||
@add name, {value, assigned: yes}, yes
|
||||
@hasAssignments = yes
|
||||
|
||||
Does this scope have any declared variables?
|
||||
|
||||
hasDeclarations: ->
|
||||
!!@declaredVariables().length
|
||||
|
||||
Return the list of variables first declared in this scope.
|
||||
|
||||
declaredVariables: ->
|
||||
realVars = []
|
||||
tempVars = []
|
||||
for v in @variables when v.type is 'var'
|
||||
(if v.name.charAt(0) is '_' then tempVars else realVars).push v.name
|
||||
realVars.sort().concat tempVars.sort()
|
||||
|
||||
Return the list of assignments that are supposed to be made at the top
|
||||
of this scope.
|
||||
|
||||
assignedVariables: ->
|
||||
"#{v.name} = #{v.type.value}" for v in @variables when v.type.assigned
|
||||
|
117
sources_non_forked/vim-coffee-script/test/test.litcoffee
Normal file
117
sources_non_forked/vim-coffee-script/test/test.litcoffee
Normal file
|
@ -0,0 +1,117 @@
|
|||
The **Scope** class regulates lexical scoping within CoffeeScript. As you
|
||||
generate code, you create a tree of scopes in the same shape as the nested
|
||||
function bodies. Each scope knows about the variables declared within it,
|
||||
and has a reference to its parent enclosing scope. In this way, we know which
|
||||
variables are new and need to be declared with `var`, and which are shared
|
||||
with external scopes.
|
||||
|
||||
Import the helpers we plan to use.
|
||||
|
||||
{extend, last} = require './helpers'
|
||||
|
||||
exports.Scope = class Scope
|
||||
|
||||
The `root` is the top-level **Scope** object for a given file.
|
||||
|
||||
@root: null
|
||||
|
||||
Initialize a scope with its parent, for lookups up the chain,
|
||||
as well as a reference to the **Block** node it belongs to, which is
|
||||
where it should declare its variables, and a reference to the function that
|
||||
it belongs to.
|
||||
|
||||
constructor: (@parent, @expressions, @method) ->
|
||||
@variables = [{name: 'arguments', type: 'arguments'}]
|
||||
@positions = {}
|
||||
Scope.root = this unless @parent
|
||||
|
||||
Adds a new variable or overrides an existing one.
|
||||
|
||||
add: (name, type, immediate) ->
|
||||
return @parent.add name, type, immediate if @shared and not immediate
|
||||
if Object::hasOwnProperty.call @positions, name
|
||||
@variables[@positions[name]].type = type
|
||||
else
|
||||
@positions[name] = @variables.push({name, type}) - 1
|
||||
|
||||
When `super` is called, we need to find the name of the current method we're
|
||||
in, so that we know how to invoke the same method of the parent class. This
|
||||
can get complicated if super is being called from an inner function.
|
||||
`namedMethod` will walk up the scope tree until it either finds the first
|
||||
function object that has a name filled in, or bottoms out.
|
||||
|
||||
namedMethod: ->
|
||||
return @method if @method.name or !@parent
|
||||
@parent.namedMethod()
|
||||
|
||||
Look up a variable name in lexical scope, and declare it if it does not
|
||||
already exist.
|
||||
|
||||
find: (name) ->
|
||||
return yes if @check name
|
||||
@add name, 'var'
|
||||
no
|
||||
|
||||
Reserve a variable name as originating from a function parameter for this
|
||||
scope. No `var` required for internal references.
|
||||
|
||||
parameter: (name) ->
|
||||
return if @shared and @parent.check name, yes
|
||||
@add name, 'param'
|
||||
|
||||
Just check to see if a variable has already been declared, without reserving,
|
||||
walks up to the root scope.
|
||||
|
||||
check: (name) ->
|
||||
!!(@type(name) or @parent?.check(name))
|
||||
|
||||
Generate a temporary variable name at the given index.
|
||||
|
||||
temporary: (name, index) ->
|
||||
if name.length > 1
|
||||
'_' + name + if index > 1 then index - 1 else ''
|
||||
else
|
||||
'_' + (index + parseInt name, 36).toString(36).replace /\d/g, 'a'
|
||||
|
||||
Gets the type of a variable.
|
||||
|
||||
type: (name) ->
|
||||
return v.type for v in @variables when v.name is name
|
||||
null
|
||||
|
||||
If we need to store an intermediate result, find an available name for a
|
||||
compiler-generated variable. `_var`, `_var2`, and so on...
|
||||
|
||||
freeVariable: (name, reserve=true) ->
|
||||
index = 0
|
||||
index++ while @check((temp = @temporary name, index))
|
||||
@add temp, 'var', yes if reserve
|
||||
temp
|
||||
|
||||
Ensure that an assignment is made at the top of this scope
|
||||
(or at the top-level scope, if requested).
|
||||
|
||||
assign: (name, value) ->
|
||||
@add name, {value, assigned: yes}, yes
|
||||
@hasAssignments = yes
|
||||
|
||||
Does this scope have any declared variables?
|
||||
|
||||
hasDeclarations: ->
|
||||
!!@declaredVariables().length
|
||||
|
||||
Return the list of variables first declared in this scope.
|
||||
|
||||
declaredVariables: ->
|
||||
realVars = []
|
||||
tempVars = []
|
||||
for v in @variables when v.type is 'var'
|
||||
(if v.name.charAt(0) is '_' then tempVars else realVars).push v.name
|
||||
realVars.sort().concat tempVars.sort()
|
||||
|
||||
Return the list of assignments that are supposed to be made at the top
|
||||
of this scope.
|
||||
|
||||
assignedVariables: ->
|
||||
"#{v.name} = #{v.type.value}" for v in @variables when v.type.assigned
|
||||
|
|
@ -1060,13 +1060,14 @@ function! s:Commit(args, ...) abort
|
|||
else
|
||||
noautocmd silent execute '!'.command.' > '.outfile.' 2> '.errorfile
|
||||
endif
|
||||
let error = v:shell_error
|
||||
finally
|
||||
execute cd.'`=dir`'
|
||||
endtry
|
||||
if !has('gui_running')
|
||||
redraw!
|
||||
endif
|
||||
if !v:shell_error
|
||||
if !error
|
||||
if filereadable(outfile)
|
||||
for line in readfile(outfile)
|
||||
echo line
|
||||
|
|
|
@ -4,10 +4,10 @@ Write here what's happening and what you're expecting instead of...
|
|||
|
||||
### Steps to reproduce:
|
||||
|
||||
Please create a reproducible case of your problem. If this step is
|
||||
Please create a reproducible case of your problem. If this step is
|
||||
not provided, the issue will be **closed**
|
||||
|
||||
Re produce it with a minimal `vimrc` with all plugins disabled and
|
||||
Re produce it with a minimal `vimrc` with all plugins disabled and
|
||||
only `vim-go` enabled:
|
||||
|
||||
1.
|
||||
|
@ -20,7 +20,6 @@ Add here your current configuration and additional information that might be
|
|||
useful, such as:
|
||||
|
||||
* `vimrc` you used to reproduce
|
||||
* vim version:
|
||||
* vim version:
|
||||
* vim-go version:
|
||||
* go version:
|
||||
|
||||
* go version:
|
||||
|
|
|
@ -19,4 +19,3 @@ install: |
|
|||
cd -
|
||||
|
||||
script: ./scripts/test.sh
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
FEATURES:
|
||||
|
||||
* New `:GoAddTags` and `:GoRemoveTags` command based on the tool [gomodifytags](https://github.com/fatih/gomodifytags). This fixes many old bugs that were due prior regexp based implementation. For the usage please read the docs and checkout the demo at: https://github.com/fatih/vim-go/pull/1204 [gh-1204]
|
||||
* Add new `errl` snippet that expands to [gh-1185]:
|
||||
|
||||
```
|
||||
|
@ -14,6 +15,10 @@ IMPROVEMENTS:
|
|||
|
||||
* Lowercase `<Leader>` in mappings examples for consisten documentation across the README [gh-1192]
|
||||
* All of files should be written in utf-8 if the file will be passed to external command. [gh-1184]
|
||||
* `:GoAddTags` is now able to add options to existing tags with the syntax `:GoAddTags key,option`, i.e: `:GoAddTags json,omitempty` [gh-985]
|
||||
* Document 'noshowmode' requirement for echo_go_info [gh-1197]
|
||||
* Improve godoc view for vertical splits [gh-1195]
|
||||
* Set GOPATH for both possible go guru execution paths (sync and async) [gh-1193]
|
||||
|
||||
BUG FIXES:
|
||||
|
||||
|
@ -22,6 +27,15 @@ BUG FIXES:
|
|||
* Update statusline before and after `go#jobcontrol#Spawn` command is executed [gh-1176]
|
||||
* Correctly report the value of the 'g:go_guru_tags' variable [gh-1177]
|
||||
* Ensure no trailing `:` exist in GOPATH detection if initial GOPATH is not set [gh-1194]
|
||||
* Fix `:GoAddTags` to allow modifying existing comments [gh-984]
|
||||
* Fix `:GoAddTags` to work with nested structs [gh-990]
|
||||
* Fix `:GoAddTags` adding tags twice for existing tags [gh-1064]
|
||||
* Fix `:GoAddTags` not working for fiels of types `interface{}` [gh-1091]
|
||||
* Fix `:GoAddTags` not working for fields with one line comments [gh-1181]
|
||||
* Fix `:GoAddTags` not working if any field comment would contain `{}` [gh-1189]
|
||||
* Respect go_fmt_options when running goimports [gh-1211]
|
||||
* Set the filename in the location-list when there is an error with :GoFmt [gh-1199]
|
||||
|
||||
|
||||
## 1.11 - (January 9, 2017)
|
||||
|
||||
|
@ -80,7 +94,7 @@ FEATURES:
|
|||
you have at least Vim 8.0.0087. Backwards compatible with Vim 7.4.x.
|
||||
If you see any problems, please open an issue.
|
||||
|
||||
* We have now a [logo for vim-go](https://github.com/fatih/vim-go/blob/master/assets/vim-go.png)! Thanks to @egonelbre for his work on this.
|
||||
* We have now a [logo for vim-go](https://github.com/fatih/vim-go/blob/master/assets/vim-go.png)! Thanks to @egonelbre for his work on this.
|
||||
* `:GoBuild`, `:GoTest`, `:GoTestCompile`, `:GoInstall` commands are now fully
|
||||
async. Async means it doesn't block your UI anymore. If the command finished
|
||||
it echoes the status. For a better experience use the statusline information
|
||||
|
@ -95,7 +109,7 @@ FEATURES:
|
|||
`:GoMetaLinterAutoSaveToggle` (temporary) or add `let
|
||||
g:go_metalinter_autosave = 1` (persistent) to your virmc).
|
||||
|
||||
* All `guru` commands run asynchronously if Vim 8.0 is being used. Current
|
||||
* All `guru` commands run asynchronously if Vim 8.0 is being used. Current
|
||||
Commands:
|
||||
* GoImplements
|
||||
* GoWhicherrs
|
||||
|
@ -111,7 +125,7 @@ FEATURES:
|
|||
auto sameids mode. In this mode it constantly evaluates the identifier under the
|
||||
cursor whenever it's in hold position and then calls :GoSameIds. As a
|
||||
reminder, to enable auto info either call `:GoSameIdsAutoToggle`(temporary)
|
||||
or add `let g:go_auto_sameids = 1` (persistent) to your vimrc.
|
||||
or add `let g:go_auto_sameids = 1` (persistent) to your vimrc.
|
||||
|
||||
* `:GoInfo` is now non blocking and works in async mode if `guru` is used in
|
||||
`g:go_info_mode`. This makes it useful especially for autoinfo mode. In this
|
||||
|
@ -221,7 +235,7 @@ FEATURES:
|
|||
* 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]
|
||||
* 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
|
||||
|
@ -371,4 +385,3 @@ BACKWARDS INCOMPATIBILITIES:
|
|||
## Previous releases
|
||||
|
||||
Previous changelogs can be found here: https://github.com/fatih/vim-go/releases
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
This software includes some portions from Go. Go is used under the terms of the
|
||||
BSD like license.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# vim-go [![Build Status](http://img.shields.io/travis/fatih/vim-go.svg?style=flat-square)](https://travis-ci.org/fatih/vim-go)
|
||||
# vim-go [![Build Status](http://img.shields.io/travis/fatih/vim-go.svg?style=flat-square)](https://travis-ci.org/fatih/vim-go)
|
||||
|
||||
<p align="center">
|
||||
<img style="float: right;" src="assets/vim-go.png" alt="Vim-go logo"/>
|
||||
|
@ -235,9 +235,9 @@ let g:go_get_update = 0
|
|||
### Using with Neovim (beta)
|
||||
|
||||
Note: Neovim currently is not a first class citizen for vim-go. You are free
|
||||
to open bug, however I'm not using Neovim so it's hard for me to test it.
|
||||
vim-go might not work well as good as in Vim. I'm happy to accept pull requests
|
||||
or very detailed bug reports. If you're interested to improve the state of
|
||||
to open bug, however I'm not using Neovim so it's hard for me to test it.
|
||||
vim-go might not work well as good as in Vim. I'm happy to accept pull requests
|
||||
or very detailed bug reports. If you're interested to improve the state of
|
||||
Neovim in vim-go you're always welcome!
|
||||
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ function! ctrlp#decls#accept(mode, str) abort
|
|||
let vals = matchlist(a:str, '|\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)|')
|
||||
|
||||
" i.e: main.go
|
||||
let filename = vals[1]
|
||||
let filename = vals[1]
|
||||
let line = vals[2]
|
||||
let col = vals[3]
|
||||
|
||||
|
@ -119,7 +119,7 @@ function! ctrlp#decls#enter() abort
|
|||
let space .= " "
|
||||
endfor
|
||||
|
||||
call add(s:decls, printf("%s\t%s |%s:%s:%s|\t%s",
|
||||
call add(s:decls, printf("%s\t%s |%s:%s:%s|\t%s",
|
||||
\ decl.ident . space,
|
||||
\ decl.keyword,
|
||||
\ fnamemodify(decl.filename, ":t"),
|
||||
|
@ -135,7 +135,7 @@ function! s:enable_syntax() abort
|
|||
return
|
||||
endif
|
||||
|
||||
syntax match CtrlPIdent '\zs\h\+\ze\s'
|
||||
syntax match CtrlPIdent '\zs\h\+\ze\s'
|
||||
syntax match CtrlPKeyword '\zs[^\t|]\+\ze|[^|]\+:\d\+:\d\+|'
|
||||
syntax match CtrlPFilename '|\zs[^|]\+:\d\+:\d\+\ze|'
|
||||
syntax match CtrlPSignature '\zs\t.*\ze$' contains=CtrlPKeyWord,CtrlPFilename
|
||||
|
|
|
@ -373,7 +373,7 @@ function! go#cmd#Generate(bang, ...) abort
|
|||
|
||||
let errors = go#list#Get(l:listtype)
|
||||
call go#list#Window(l:listtype, len(errors))
|
||||
if !empty(errors)
|
||||
if !empty(errors)
|
||||
if !a:bang
|
||||
call go#list#JumpToFirst(l:listtype)
|
||||
endif
|
||||
|
|
|
@ -27,11 +27,11 @@ function! s:gocodeCommand(cmd, preargs, args) abort
|
|||
let $GOROOT = go#util#env("goroot")
|
||||
|
||||
let socket_type = get(g:, 'go_gocode_socket_type', s:sock_type)
|
||||
let cmd = printf('%s -sock %s %s %s %s',
|
||||
\ go#util#Shellescape(bin_path),
|
||||
\ socket_type,
|
||||
\ join(a:preargs),
|
||||
\ go#util#Shellescape(a:cmd),
|
||||
let cmd = printf('%s -sock %s %s %s %s',
|
||||
\ go#util#Shellescape(bin_path),
|
||||
\ socket_type,
|
||||
\ join(a:preargs),
|
||||
\ go#util#Shellescape(a:cmd),
|
||||
\ join(a:args)
|
||||
\ )
|
||||
|
||||
|
@ -55,7 +55,7 @@ endfunction
|
|||
|
||||
let s:optionsEnabled = 0
|
||||
function! s:gocodeEnableOptions() abort
|
||||
if s:optionsEnabled
|
||||
if s:optionsEnabled
|
||||
return
|
||||
endif
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ function! go#coverage#Buffer(bang, ...) abort
|
|||
try
|
||||
execute cd . fnameescape(expand("%:p:h"))
|
||||
if empty(glob("*_test.go"))
|
||||
call go#util#EchoError("no tests files available")
|
||||
call go#util#EchoError("no test files available")
|
||||
return
|
||||
endif
|
||||
finally
|
||||
|
@ -89,8 +89,8 @@ function! go#coverage#Clear() abort
|
|||
|
||||
if exists("s:toggle") | let s:toggle = 0 | endif
|
||||
|
||||
" remove the autocmd we defined
|
||||
if exists("#BufWinLeave#<buffer>")
|
||||
" remove the autocmd we defined
|
||||
if exists("#BufWinLeave#<buffer>")
|
||||
autocmd! BufWinLeave <buffer>
|
||||
endif
|
||||
endfunction
|
||||
|
@ -160,8 +160,8 @@ function! go#coverage#genmatch(cov) abort
|
|||
" example: foo.go:92.2,92.65 1 0
|
||||
if a:cov.startline == a:cov.endline
|
||||
call add(matches, {
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.startline, a:cov.startcol, a:cov.endcol - a:cov.startcol]],
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.startline, a:cov.startcol, a:cov.endcol - a:cov.startcol]],
|
||||
\ 'priority': 2,
|
||||
\ })
|
||||
return matches
|
||||
|
@ -171,8 +171,8 @@ function! go#coverage#genmatch(cov) abort
|
|||
" the line, we assume it is at maximum 200 bytes. I know this is hacky,
|
||||
" but that's only way of fixing the issue
|
||||
call add(matches, {
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.startline, a:cov.startcol, 200]],
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.startline, a:cov.startcol, 200]],
|
||||
\ 'priority': 2,
|
||||
\ })
|
||||
|
||||
|
@ -181,16 +181,16 @@ function! go#coverage#genmatch(cov) abort
|
|||
while start_line < a:cov.endline
|
||||
let start_line += 1
|
||||
call add(matches, {
|
||||
\ 'group': color,
|
||||
\ 'pos': [[start_line]],
|
||||
\ 'group': color,
|
||||
\ 'pos': [[start_line]],
|
||||
\ 'priority': 2,
|
||||
\ })
|
||||
endwhile
|
||||
|
||||
" finally end columns
|
||||
call add(matches, {
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.endline, a:cov.endcol-1]],
|
||||
\ 'group': color,
|
||||
\ 'pos': [[a:cov.endline, a:cov.endcol-1]],
|
||||
\ 'priority': 2,
|
||||
\ })
|
||||
|
||||
|
|
|
@ -209,7 +209,7 @@ function! go#def#StackUI() abort
|
|||
let prefix = " "
|
||||
endif
|
||||
|
||||
call add(stackOut, printf("%s %d %s|%d col %d|%s",
|
||||
call add(stackOut, printf("%s %d %s|%d col %d|%s",
|
||||
\ prefix, i+1, entry["file"], entry["line"], entry["col"], entry["ident"]))
|
||||
let i += 1
|
||||
endwhile
|
||||
|
|
|
@ -32,10 +32,10 @@ function! go#doc#OpenBrowser(...) abort
|
|||
let import = out["import"]
|
||||
let name = out["name"]
|
||||
let decl = out["decl"]
|
||||
|
||||
|
||||
let godoc_url = "https://godoc.org/" . import
|
||||
if decl !~ "^package"
|
||||
let godoc_url .= "#" . name
|
||||
let godoc_url .= "#" . name
|
||||
endif
|
||||
|
||||
echo godoc_url
|
||||
|
@ -92,13 +92,20 @@ function! s:GodocView(newposition, position, content) abort
|
|||
execute bufwinnr(s:buf_nr) . 'wincmd w'
|
||||
endif
|
||||
|
||||
" cap buffer height to 20, but resize it for smaller contents
|
||||
let max_height = 20
|
||||
let content_height = len(split(a:content, "\n"))
|
||||
if content_height > max_height
|
||||
exe 'resize ' . max_height
|
||||
if a:position == "split"
|
||||
" cap buffer height to 20, but resize it for smaller contents
|
||||
let max_height = 20
|
||||
let content_height = len(split(a:content, "\n"))
|
||||
if content_height > max_height
|
||||
exe 'resize ' . max_height
|
||||
else
|
||||
exe 'resize ' . content_height
|
||||
endif
|
||||
else
|
||||
exe 'resize ' . content_height
|
||||
" set a sane maximum width for vertical splits. In this case the minimum
|
||||
" that fits the godoc for package http without extra linebreaks and line
|
||||
" numbers on
|
||||
exe 'vertical resize 84'
|
||||
endif
|
||||
|
||||
setlocal filetype=godoc
|
||||
|
|
|
@ -77,7 +77,7 @@ function! go#fmt#Format(withGoimport) abort
|
|||
if go#util#ShellError() == 0
|
||||
call go#fmt#update_file(l:tmpname, expand('%'))
|
||||
elseif g:go_fmt_fail_silently == 0
|
||||
let errors = s:parse_errors(out)
|
||||
let errors = s:parse_errors(expand('%'), out)
|
||||
call s:show_errors(errors)
|
||||
endif
|
||||
|
||||
|
@ -102,7 +102,7 @@ function! go#fmt#Format(withGoimport) abort
|
|||
endfunction
|
||||
|
||||
" update_file updates the target file with the given formatted source
|
||||
function! go#fmt#update_file(source, target)
|
||||
function! go#fmt#update_file(source, target)
|
||||
" remove undo point caused via BufWritePre
|
||||
try | silent undojoin | catch | endtry
|
||||
|
||||
|
@ -133,8 +133,8 @@ endfunction
|
|||
|
||||
" run runs the gofmt/goimport command for the given source file and returns
|
||||
" the the output of the executed command. Target is the real file to be
|
||||
" formated.
|
||||
function! go#fmt#run(bin_name, source, target)
|
||||
" formated.
|
||||
function! go#fmt#run(bin_name, source, target)
|
||||
let cmd = s:fmt_cmd(a:bin_name, a:source, a:target)
|
||||
if cmd[0] == "goimports"
|
||||
" change GOPATH too, so goimports can pick up the correct library
|
||||
|
@ -168,10 +168,9 @@ function! s:fmt_cmd(bin_name, source, target)
|
|||
" start constructing the command
|
||||
let cmd = [bin_path]
|
||||
call add(cmd, "-w")
|
||||
call extend(cmd, split(g:go_fmt_options, " "))
|
||||
|
||||
if a:bin_name != "goimports"
|
||||
call extend(cmd, split(g:go_fmt_options, " "))
|
||||
else
|
||||
if a:bin_name == "goimports"
|
||||
" lazy check if goimports support `-srcdir`. We should eventually remove
|
||||
" this in the future
|
||||
if !exists('b:goimports_vendor_compatible')
|
||||
|
@ -196,7 +195,7 @@ function! s:fmt_cmd(bin_name, source, target)
|
|||
endfunction
|
||||
|
||||
" parse_errors parses the given errors and returns a list of parsed errors
|
||||
function! s:parse_errors(content) abort
|
||||
function! s:parse_errors(filename, content) abort
|
||||
let splitted = split(a:content, '\n')
|
||||
|
||||
" list of errors to be put into location list
|
||||
|
@ -205,6 +204,7 @@ function! s:parse_errors(content) abort
|
|||
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
|
||||
if !empty(tokens)
|
||||
call add(errors,{
|
||||
\"filename": a:filename,
|
||||
\"lnum": tokens[2],
|
||||
\"col": tokens[3],
|
||||
\"text": tokens[4],
|
||||
|
@ -218,13 +218,13 @@ endfunction
|
|||
" show_errors opens a location list and shows the given errors. If the given
|
||||
" errors is empty, it closes the the location list
|
||||
function! s:show_errors(errors) abort
|
||||
let l:listtype = "locationlist"
|
||||
let l:listtype = "locationlist"
|
||||
if !empty(a:errors)
|
||||
call go#list#Populate(l:listtype, a:errors, 'Format')
|
||||
echohl Error | echomsg "Gofmt returned error" | echohl None
|
||||
endif
|
||||
|
||||
" this closes the window if there are no errors or it opens
|
||||
" this closes the window if there are no errors or it opens
|
||||
" it if there is any
|
||||
call go#list#Window(l:listtype, len(a:errors))
|
||||
endfunction
|
||||
|
|
|
@ -25,7 +25,7 @@ function! s:guru_cmd(args) range abort
|
|||
endif
|
||||
|
||||
"return with a warning if the binary doesn't exist
|
||||
let bin_path = go#path#CheckBinPath("guru")
|
||||
let bin_path = go#path#CheckBinPath("guru")
|
||||
if empty(bin_path)
|
||||
return {'err': "bin path not found"}
|
||||
endif
|
||||
|
@ -41,7 +41,7 @@ function! s:guru_cmd(args) range abort
|
|||
endif
|
||||
|
||||
" enable outputting in json format
|
||||
if format == "json"
|
||||
if format == "json"
|
||||
call add(cmd, "-json")
|
||||
endif
|
||||
|
||||
|
@ -120,8 +120,6 @@ function! s:sync_guru(args) abort
|
|||
endif
|
||||
endif
|
||||
|
||||
let old_gopath = $GOPATH
|
||||
let $GOPATH = go#path#Detect()
|
||||
|
||||
" run, forrest run!!!
|
||||
let command = join(result.cmd, " ")
|
||||
|
@ -131,8 +129,6 @@ function! s:sync_guru(args) abort
|
|||
let out = go#util#System(command)
|
||||
endif
|
||||
|
||||
let $GOPATH = old_gopath
|
||||
|
||||
if has_key(a:args, 'custom_parse')
|
||||
call a:args.custom_parse(go#util#ShellError(), out)
|
||||
else
|
||||
|
@ -217,11 +213,17 @@ endfunc
|
|||
|
||||
" run_guru runs the given guru argument
|
||||
function! s:run_guru(args) abort
|
||||
let old_gopath = $GOPATH
|
||||
let $GOPATH = go#path#Detect()
|
||||
if go#util#has_job()
|
||||
return s:async_guru(a:args)
|
||||
let res = s:async_guru(a:args)
|
||||
else
|
||||
let res = s:sync_guru(a:args)
|
||||
endif
|
||||
|
||||
return s:sync_guru(a:args)
|
||||
let $GOPATH = old_gopath
|
||||
|
||||
return res
|
||||
endfunction
|
||||
|
||||
" Show 'implements' relation for selected package
|
||||
|
@ -270,7 +272,7 @@ endfunction
|
|||
function! go#guru#DescribeInfo() abort
|
||||
" 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
|
||||
" nvim: https://github.com/neovim/neovim/pull/4131
|
||||
if !exists("*json_decode")
|
||||
call go#util#EchoError("requires 'json_decode'. Update your Vim/Neovim version.")
|
||||
return
|
||||
|
@ -465,7 +467,7 @@ function! go#guru#SameIds() abort
|
|||
|
||||
" 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
|
||||
" nvim: https://github.com/neovim/neovim/pull/4131
|
||||
if !exists("*json_decode")
|
||||
call go#util#EchoError("GoSameIds requires 'json_decode'. Update your Vim/Neovim version.")
|
||||
return
|
||||
|
@ -547,7 +549,7 @@ function! go#guru#ClearSameIds() abort
|
|||
endfunction
|
||||
|
||||
function! go#guru#ToggleSameIds() abort
|
||||
if len(getmatches()) != 0
|
||||
if len(getmatches()) != 0
|
||||
call go#guru#ClearSameIds()
|
||||
else
|
||||
call go#guru#SameIds()
|
||||
|
|
|
@ -18,7 +18,7 @@ function! go#impl#Impl(...) abort
|
|||
return
|
||||
endif
|
||||
elseif a:0 == 1
|
||||
" we assume the user only passed the interface type,
|
||||
" we assume the user only passed the interface type,
|
||||
" i.e: ':GoImpl io.Writer'
|
||||
let receiveType = expand("<cword>")
|
||||
let recv = printf("%s *%s", tolower(receiveType)[0], receiveType)
|
||||
|
@ -44,7 +44,7 @@ function! go#impl#Impl(...) abort
|
|||
end
|
||||
|
||||
let pos = getpos('.')
|
||||
put =''
|
||||
put =''
|
||||
put =result
|
||||
call setpos('.', pos)
|
||||
endfunction
|
||||
|
|
|
@ -109,9 +109,9 @@ endfunction
|
|||
" Golint calls 'golint' on the current directory. Any warnings are populated in
|
||||
" the location list
|
||||
function! go#lint#Golint(...) abort
|
||||
let bin_path = go#path#CheckBinPath(g:go_golint_bin)
|
||||
if empty(bin_path)
|
||||
return
|
||||
let bin_path = go#path#CheckBinPath(g:go_golint_bin)
|
||||
if empty(bin_path)
|
||||
return
|
||||
endif
|
||||
|
||||
if a:0 == 0
|
||||
|
@ -280,7 +280,7 @@ function s:lint_job(args)
|
|||
call go#statusline#Update(status_dir, status)
|
||||
|
||||
let errors = go#list#Get(l:listtype)
|
||||
if empty(errors)
|
||||
if empty(errors)
|
||||
call go#list#Window(l:listtype, len(errors))
|
||||
elseif has("patch-7.4.2200")
|
||||
if l:listtype == 'quickfix'
|
||||
|
|
|
@ -124,7 +124,7 @@ function! go#list#Type(listtype) abort
|
|||
if g:go_list_type == "locationlist"
|
||||
return "locationlist"
|
||||
elseif g:go_list_type == "quickfix"
|
||||
return "quickfix"
|
||||
return "quickfix"
|
||||
else
|
||||
return a:listtype
|
||||
endif
|
||||
|
|
|
@ -70,7 +70,7 @@ function! s:get_visual_selection() abort
|
|||
return join(lines, "\n")
|
||||
endfunction
|
||||
|
||||
" following two functions are from: https://github.com/mattn/gist-vim
|
||||
" following two functions are from: https://github.com/mattn/gist-vim
|
||||
" thanks @mattn
|
||||
function! s:get_browser_command() abort
|
||||
let go_play_browser_command = get(g:, 'go_play_browser_command', '')
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
" s:statuses is a global reference to all statuses. It stores the statuses per
|
||||
" import paths (map[string]status), where each status is unique per its
|
||||
" type. Current status dict is in form:
|
||||
" {
|
||||
" {
|
||||
" 'desc' : 'Job description',
|
||||
" 'state' : 'Job state, such as success, failure, etc..',
|
||||
" 'type' : 'Job type, such as build, test, etc..'
|
||||
|
|
206
sources_non_forked/vim-go/autoload/go/tags.vim
Normal file
206
sources_non_forked/vim-go/autoload/go/tags.vim
Normal file
|
@ -0,0 +1,206 @@
|
|||
function! go#tags#Add(start, end, count, ...) abort
|
||||
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
|
||||
|
||||
let offset = 0
|
||||
if a:count == -1
|
||||
let offset = go#util#OffsetCursor()
|
||||
endif
|
||||
|
||||
let test_mode = 0
|
||||
call call("go#tags#run", [a:start, a:end, offset, "add", fname, test_mode] + a:000)
|
||||
|
||||
" if exists, delete it as we don't need it anymore
|
||||
if exists("l:tmpname")
|
||||
call delete(l:tmpname)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! go#tags#Remove(start, end, count, ...) abort
|
||||
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
|
||||
|
||||
let offset = 0
|
||||
if a:count == -1
|
||||
let offset = go#util#OffsetCursor()
|
||||
endif
|
||||
|
||||
let test_mode = 0
|
||||
call call("go#tags#run", [a:start, a:end, offset, "remove", fname, test_mode] + a:000)
|
||||
|
||||
" if exists, delete it as we don't need it anymore
|
||||
if exists("l:tmpname")
|
||||
call delete(l:tmpname)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" run runs gomodifytag. This is an internal test so we can test it
|
||||
function! go#tags#run(start, end, offset, mode, fname, test_mode, ...) abort
|
||||
" do not split this into multiple lines, somehow tests fail in that case
|
||||
let args = {'mode': a:mode,'start': a:start,'end': a:end,'offset': a:offset,'fname': a:fname,'cmd_args': a:000}
|
||||
|
||||
let result = s:create_cmd(args)
|
||||
if has_key(result, 'err')
|
||||
call go#util#EchoError(result.err)
|
||||
return -1
|
||||
endif
|
||||
|
||||
let command = join(result.cmd, " ")
|
||||
|
||||
call go#cmd#autowrite()
|
||||
let out = go#util#System(command)
|
||||
if go#util#ShellError() != 0
|
||||
call go#util#EchoError(out)
|
||||
return
|
||||
endif
|
||||
|
||||
if a:test_mode
|
||||
exe 'edit ' . a:fname
|
||||
endif
|
||||
|
||||
call s:write_out(out)
|
||||
|
||||
if a:test_mode
|
||||
exe 'write! ' . a:fname
|
||||
endif
|
||||
endfunc
|
||||
|
||||
|
||||
" write_out writes back the given output to the current buffer
|
||||
func s:write_out(out) abort
|
||||
" not a json output
|
||||
if a:out[0] !=# '{'
|
||||
return
|
||||
endif
|
||||
|
||||
" nothing to do
|
||||
if empty(a:out) || type(a:out) != type("")
|
||||
return
|
||||
endif
|
||||
|
||||
let result = json_decode(a:out)
|
||||
if type(result) != type({})
|
||||
call go#util#EchoError(printf("malformed output from gomodifytags: %s", a:out))
|
||||
return
|
||||
endif
|
||||
|
||||
let lines = result['lines']
|
||||
let start_line = result['start']
|
||||
let end_line = result['end']
|
||||
|
||||
let index = 0
|
||||
for line in range(start_line, end_line)
|
||||
call setline(line, lines[index])
|
||||
let index += 1
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
|
||||
" create_cmd returns a dict that contains the command to execute gomodifytags
|
||||
func s:create_cmd(args) abort
|
||||
if !exists("*json_decode")
|
||||
return {'err': "requires 'json_decode'. Update your Vim/Neovim version."}
|
||||
endif
|
||||
|
||||
let bin_path = go#path#CheckBinPath('gomodifytags')
|
||||
if empty(bin_path)
|
||||
return {'err': "gomodifytags does not exist"}
|
||||
endif
|
||||
|
||||
let l:start = a:args.start
|
||||
let l:end = a:args.end
|
||||
let l:offset = a:args.offset
|
||||
let l:mode = a:args.mode
|
||||
let l:cmd_args = a:args.cmd_args
|
||||
|
||||
" start constructing the command
|
||||
let cmd = [bin_path]
|
||||
call extend(cmd, ["-format", "json"])
|
||||
call extend(cmd, ["-file", a:args.fname])
|
||||
|
||||
if l:offset != 0
|
||||
call extend(cmd, ["-offset", l:offset])
|
||||
else
|
||||
let range = printf("%d,%d", l:start, l:end)
|
||||
call extend(cmd, ["-line", range])
|
||||
endif
|
||||
|
||||
if l:mode == "add"
|
||||
let l:tags = []
|
||||
let l:options = []
|
||||
|
||||
if !empty(l:cmd_args)
|
||||
for item in l:cmd_args
|
||||
let splitted = split(item, ",")
|
||||
|
||||
" tag only
|
||||
if len(splitted) == 1
|
||||
call add(l:tags, splitted[0])
|
||||
endif
|
||||
|
||||
" options only
|
||||
if len(splitted) == 2
|
||||
call add(l:tags, splitted[0])
|
||||
call add(l:options, printf("%s=%s", splitted[0], splitted[1]))
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
" construct options
|
||||
if !empty(l:options)
|
||||
call extend(cmd, ["-add-options", join(l:options, ",")])
|
||||
else
|
||||
" default value
|
||||
if empty(l:tags)
|
||||
let l:tags = ["json"]
|
||||
endif
|
||||
|
||||
" construct tags
|
||||
call extend(cmd, ["-add-tags", join(l:tags, ",")])
|
||||
endif
|
||||
elseif l:mode == "remove"
|
||||
if empty(l:cmd_args)
|
||||
call add(cmd, "-clear-tags")
|
||||
else
|
||||
let l:tags = []
|
||||
let l:options = []
|
||||
for item in l:cmd_args
|
||||
let splitted = split(item, ",")
|
||||
|
||||
" tag only
|
||||
if len(splitted) == 1
|
||||
call add(l:tags, splitted[0])
|
||||
endif
|
||||
|
||||
" options only
|
||||
if len(splitted) == 2
|
||||
call add(l:options, printf("%s=%s", splitted[0], splitted[1]))
|
||||
endif
|
||||
endfor
|
||||
|
||||
" construct tags
|
||||
if !empty(l:tags)
|
||||
call extend(cmd, ["-remove-tags", join(l:tags, ",")])
|
||||
endif
|
||||
|
||||
" construct options
|
||||
if !empty(l:options)
|
||||
call extend(cmd, ["-remove-options", join(l:options, ",")])
|
||||
endif
|
||||
endif
|
||||
else
|
||||
return {'err': printf("unknown mode: %s", l:mode)}
|
||||
endif
|
||||
|
||||
return {'cmd': cmd}
|
||||
endfunc
|
28
sources_non_forked/vim-go/autoload/go/tags_test.vim
Normal file
28
sources_non_forked/vim-go/autoload/go/tags_test.vim
Normal file
|
@ -0,0 +1,28 @@
|
|||
func Test_add_tags()
|
||||
let input_file = tempname()
|
||||
call writefile(readfile("test-fixtures/tags/add_all_input.go"), input_file)
|
||||
|
||||
let expected = join(readfile("test-fixtures/tags/add_all_golden.go"), "\n")
|
||||
|
||||
" run for offset 40, which is inside the struct
|
||||
call go#tags#run(0, 0, 40, "add", input_file, 1)
|
||||
|
||||
let actual = join(readfile(input_file), "\n")
|
||||
|
||||
call assert_equal(expected, actual)
|
||||
endfunc
|
||||
|
||||
|
||||
func Test_remove_tags()
|
||||
let input_file = tempname()
|
||||
call writefile(readfile("test-fixtures/tags/remove_all_input.go"), input_file)
|
||||
|
||||
let expected = join(readfile("test-fixtures/tags/remove_all_golden.go"), "\n")
|
||||
|
||||
" run for offset 40, which is inside the struct
|
||||
call go#tags#run(0, 0, 40, "remove", input_file, 1)
|
||||
|
||||
let actual = join(readfile(input_file), "\n")
|
||||
|
||||
call assert_equal(expected, actual)
|
||||
endfunc
|
|
@ -67,7 +67,7 @@ function! go#textobj#Function(mode) abort
|
|||
normal! v
|
||||
call cursor(info.rbrace.line, info.rbrace.col)
|
||||
return
|
||||
endif
|
||||
endif
|
||||
|
||||
" rest is inner mode, a:mode == 'i'
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ function! go#tool#Exists(importpath) abort
|
|||
endfunction
|
||||
|
||||
|
||||
" following two functions are from: https://github.com/mattn/gist-vim
|
||||
" following two functions are from: https://github.com/mattn/gist-vim
|
||||
" thanks @mattn
|
||||
function! s:get_browser_command() abort
|
||||
let go_play_browser_command = get(g:, 'go_play_browser_command', '')
|
||||
|
|
|
@ -53,7 +53,7 @@ let s:env_cache = {}
|
|||
|
||||
" env returns the go environment variable for the given key. Where key can be
|
||||
" GOARCH, GOOS, GOROOT, etc... It caches the result and returns the cached
|
||||
" version.
|
||||
" version.
|
||||
function! go#util#env(key) abort
|
||||
let l:key = tolower(a:key)
|
||||
if has_key(s:env_cache, l:key)
|
||||
|
|
|
@ -576,7 +576,7 @@ CTRL-t
|
|||
*:GoSameIdsToggle*
|
||||
:GoSameIdsToggle
|
||||
|
||||
Toggle between |:GoSameIds| and |:GoSameIdsClear|.
|
||||
Toggle between |:GoSameIds| and |:GoSameIdsClear|.
|
||||
|
||||
*:GoSameIdsAutoToggle*
|
||||
:GoSameIdsAutoToggle
|
||||
|
@ -669,12 +669,13 @@ CTRL-t
|
|||
:GoImpl T io.ReadWriteCloser
|
||||
<
|
||||
*:GoAddTags*
|
||||
:[range]GoAddTags [key] [key1] ...
|
||||
:[range]GoAddTags [key],[option] [key1],[option] ...
|
||||
|
||||
Adds field tags for the fields of a struct. If called inside a struct it
|
||||
automatically add field tags with the `json` key and the value
|
||||
automatically generated based on the field name. An error message is given
|
||||
if it's called outside a struct definition.
|
||||
if it's called outside a struct definition or if the file is not correctly
|
||||
formatted.
|
||||
|
||||
If [range] is given, only the selected fields will be changed.
|
||||
|
||||
|
@ -682,6 +683,37 @@ CTRL-t
|
|||
arguments. An example of adding `xml` and `db` would be:
|
||||
>
|
||||
:GoAddTags xml db
|
||||
<
|
||||
If [option] is passed it'll either add a new tag with an option or will
|
||||
modify exising tags. An example of adding `omitempty` to all `json` fields
|
||||
would be:
|
||||
>
|
||||
:GoAddTags json,omitempty
|
||||
<
|
||||
You can define a constant value instead of the default field based value.
|
||||
For example the following command will add ``valid:"1"`` to all fields.
|
||||
>
|
||||
:GoAddTags valid=1
|
||||
<
|
||||
*:GoRemoveTags*
|
||||
:[range]GoRemoveTags [key],[option] [key1],[option1] ...
|
||||
|
||||
Rmove field tags for the fields of a struct. If called inside a struct it
|
||||
automatically remove all field tags. An error message is given if it's
|
||||
called outside a struct definition or if the file is not correctly
|
||||
formatted
|
||||
|
||||
If [range] is given, only the selected fields will be changed.
|
||||
|
||||
If [key] is given, it will only remove those keys. Example:
|
||||
>
|
||||
:GoRemoveTags json
|
||||
<
|
||||
If [option] is passed with a [key], it will only remove the options.
|
||||
Example, this will only remove `omitempty` options from fields containing
|
||||
`json`:
|
||||
>
|
||||
:GoRemoveTags json,omitempty
|
||||
<
|
||||
*:GoAutoTypeInfoToggle*
|
||||
:GoAutoTypeInfoToggle
|
||||
|
@ -958,7 +990,7 @@ Shows the status of a job running asynchronously. Can be used to plug into the
|
|||
statusline. It works to show the status per package instead of per
|
||||
file. Assume you have three files open, all belonging to the same package, if
|
||||
the package build (`:GoBuild`) is successful, all statusline's will show
|
||||
`success`, if you it fails all file's statusline will show `failed`.
|
||||
`success`, if you it fails all file's statusline will show `failed`.
|
||||
|
||||
To avoid always showing old status information, the status information is
|
||||
cleaned for each package after `60` seconds. This can be changed with the
|
||||
|
@ -1488,6 +1520,8 @@ default it's enabled >
|
|||
|
||||
let g:go_echo_go_info = 1
|
||||
<
|
||||
Please note that 'noshowmode' must be set for this feature to work correctly.
|
||||
|
||||
*'g:go_statusline_duration'*
|
||||
|
||||
Specifices the duration of statusline information being showed per package. By
|
||||
|
|
|
@ -14,14 +14,15 @@ 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=0 GoSameIds call go#guru#SameIds()
|
||||
command! -range=0 GoSameIdsClear call go#guru#ClearSameIds()
|
||||
command! -range=0 GoSameIdsToggle call go#guru#ToggleSameIds()
|
||||
command! -range=0 GoSameIdsAutoToggle call go#guru#AutoToogleSameIds()
|
||||
|
||||
" -- tags
|
||||
command! -nargs=* -range GoAddTags call go#tags#Add(<line1>, <line2>, <count>, <f-args>)
|
||||
command! -nargs=* -range GoRemoveTags call go#tags#Remove(<line1>, <line2>, <count>, <f-args>)
|
||||
|
||||
" -- tool
|
||||
command! -nargs=0 GoFiles echo go#tool#Files()
|
||||
command! -nargs=0 GoDeps echo go#tool#Deps()
|
||||
|
|
|
@ -15,9 +15,9 @@ endif
|
|||
|
||||
|
||||
function! s:SetTagbar()
|
||||
let bin_path = go#path#CheckBinPath(g:go_gotags_bin)
|
||||
if empty(bin_path)
|
||||
return
|
||||
let bin_path = go#path#CheckBinPath(g:go_gotags_bin)
|
||||
if empty(bin_path)
|
||||
return
|
||||
endif
|
||||
|
||||
if !exists("g:tagbar_type_go")
|
||||
|
|
|
@ -175,7 +175,7 @@ if err != nil {
|
|||
${0}
|
||||
endsnippet
|
||||
|
||||
# error test
|
||||
# error test
|
||||
snippet errt "Error test fatal " !b
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
|
|
@ -18,6 +18,7 @@ let s:packages = [
|
|||
\ "github.com/jstemmer/gotags",
|
||||
\ "github.com/klauspost/asmfmt/cmd/asmfmt",
|
||||
\ "github.com/fatih/motion",
|
||||
\ "github.com/fatih/gomodifytags",
|
||||
\ "github.com/zmb3/gogetdoc",
|
||||
\ "github.com/josharian/impl",
|
||||
\ ]
|
||||
|
|
|
@ -4,6 +4,9 @@ set -e
|
|||
|
||||
cd $(dirname $0)
|
||||
|
||||
# install dependencies
|
||||
go get github.com/fatih/gomodifytags
|
||||
|
||||
# cleanup test.log
|
||||
if [ -f "test.log" ]; then
|
||||
rm test.log
|
||||
|
|
|
@ -30,7 +30,7 @@ syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~"
|
|||
syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
|
||||
syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript
|
||||
syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText
|
||||
syn match pugTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent
|
||||
syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent
|
||||
syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText
|
||||
syntax keyword pugCommentTodo contained TODO FIXME XXX TBD
|
||||
syn match pugComment '\(\s\+\|^\)\/\/.*$' contains=pugCommentTodo
|
||||
|
|
|
@ -96,4 +96,8 @@ snippet datetime "YYYY-MM-DD hh:mm" w
|
|||
`!v strftime("%Y-%m-%d %H:%M")`
|
||||
endsnippet
|
||||
|
||||
snippet todo "TODO comment" bw
|
||||
`!p snip.rv=get_comment_format()[0]` ${2:TODO}: $0${3: <${4:`!v strftime('%d-%m-%y')`}${5:, `!v g:snips_author`}>} `!p snip.rv=get_comment_format()[2]`
|
||||
endsnippet
|
||||
|
||||
# vim:ft=snippets:
|
||||
|
|
|
@ -4,6 +4,28 @@ extends c
|
|||
|
||||
# We want to overwrite everything in parent ft.
|
||||
priority -49
|
||||
###########################################################################
|
||||
# Global functions #
|
||||
###########################################################################
|
||||
|
||||
global !p
|
||||
|
||||
def write_docstring_args(arglist, snip):
|
||||
args = str(arglist).split(',')
|
||||
|
||||
if len(args) > 1:
|
||||
c = 0
|
||||
for arg in args:
|
||||
if c == 0:
|
||||
snip.rv += arg
|
||||
c = 1
|
||||
else:
|
||||
snip += '* : %s' % arg.strip()
|
||||
else:
|
||||
snip.rv = args[0]
|
||||
|
||||
|
||||
endglobal
|
||||
|
||||
###########################################################################
|
||||
# TextMate Snippets #
|
||||
|
@ -70,4 +92,19 @@ public:
|
|||
|
||||
#endif /* $2 */
|
||||
endsnippet
|
||||
|
||||
|
||||
snippet fnc "Basic c++ doxygen function template" b
|
||||
/**
|
||||
* @brief: ${4:brief}
|
||||
*
|
||||
* @param: `!p write_docstring_args(t[3],snip)`
|
||||
*
|
||||
* @return: `!p snip.rv = t[1]`
|
||||
*/
|
||||
${1:ReturnType} ${2:FunctionName}(${3:param})
|
||||
{
|
||||
${0:FunctionBody}
|
||||
}
|
||||
endsnippet
|
||||
# vim:ft=snippets:
|
||||
|
|
|
@ -0,0 +1,234 @@
|
|||
priority -50
|
||||
|
||||
# JavaScript versions -- from the TextMate bundle + some additions
|
||||
# for jasmine-jquery matchers
|
||||
#
|
||||
|
||||
snippet des "Describe (js)" b
|
||||
describe('${1:description}', () => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet it "it (js)" b
|
||||
it('${1:description}', () => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet bef "before each (js)" b
|
||||
beforeEach(() => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet aft "after each (js)" b
|
||||
afterEach(() => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet befa "before all (js)" b
|
||||
beforeAll(() => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet afta "after all (js)" b
|
||||
afterAll(() => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet any "any (js)" b
|
||||
jasmine.any($1)
|
||||
endsnippet
|
||||
|
||||
snippet anyt "anything (js)" b
|
||||
jasmine.anything()
|
||||
endsnippet
|
||||
|
||||
snippet objc "object containing (js)" b
|
||||
jasmine.objectContaining({
|
||||
${VISUAL}$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet arrc "array containing (js)" b
|
||||
jasmine.arrayContaining([${1:value1}]);
|
||||
endsnippet
|
||||
|
||||
snippet strm "string matching (js)" b
|
||||
jasmine.stringMatching("${1:matcher}")
|
||||
endsnippet
|
||||
|
||||
snippet ru "runs (js)" b
|
||||
runs(() => {
|
||||
$0
|
||||
});
|
||||
endsnippet
|
||||
|
||||
snippet wa "waits (js)" b
|
||||
waits($1);
|
||||
endsnippet
|
||||
|
||||
snippet ex "expect (js)" b
|
||||
expect(${1:target})$0;
|
||||
endsnippet
|
||||
|
||||
snippet ee "expect to equal (js)" b
|
||||
expect(${1:target}).toEqual(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet el "expect to be less than (js)" b
|
||||
expect(${1:target}).toBeLessThan(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet eg "expect to be greater than (js)" b
|
||||
expect(${1:target}).toBeGreaterThan(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet eb "expect to be (js)" b
|
||||
expect(${1:target}).toBe(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet em "expect to match (js)" b
|
||||
expect(${1:target}).toMatch(${2:pattern});
|
||||
endsnippet
|
||||
|
||||
snippet eha "expect to have attribute (js)" b
|
||||
expect(${1:target}).toHaveAttr('${2:attr}'${3:, '${4:value}'});
|
||||
endsnippet
|
||||
|
||||
snippet et "expect to be truthy (js)" b
|
||||
expect(${1:target}).toBeTruthy();
|
||||
endsnippet
|
||||
|
||||
snippet ef "expect to be falsy (js)" b
|
||||
expect(${1:target}).toBeFalsy();
|
||||
endsnippet
|
||||
|
||||
snippet ed "expect to be defined (js)" b
|
||||
expect(${1:target}).toBeDefined();
|
||||
endsnippet
|
||||
|
||||
snippet eud "expect to be defined (js)" b
|
||||
expect(${1:target}).toBeUndefined();
|
||||
endsnippet
|
||||
|
||||
snippet en "expect to be null (js)" b
|
||||
expect(${1:target}).toBeNull();
|
||||
endsnippet
|
||||
|
||||
snippet ec "expect to contain (js)" b
|
||||
expect(${1:target}).toContain(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet ev "expect to be visible (js)" b
|
||||
expect(${1:target}).toBeVisible();
|
||||
endsnippet
|
||||
|
||||
snippet eh "expect to be hidden (js)" b
|
||||
expect(${1:target}).toBeHidden();
|
||||
endsnippet
|
||||
|
||||
snippet eth "expect to throw (js)" b
|
||||
expect(${1:target}).toThrow(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet ethe "expect to throw error (js)" b
|
||||
expect(${1:target}).toThrowError(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notx "expect not (js)" b
|
||||
expect(${1:target}).not$0;
|
||||
endsnippet
|
||||
|
||||
snippet note "expect not to equal (js)" b
|
||||
expect(${1:target}).not.toEqual(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notl "expect to not be less than (js)" b
|
||||
expect(${1:target}).not.toBeLessThan(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notg "expect to not be greater than (js)" b
|
||||
expect(${1:target}).not.toBeGreaterThan(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notm "expect not to match (js)" b
|
||||
expect(${1:target}).not.toMatch(${2:pattern});
|
||||
endsnippet
|
||||
|
||||
snippet notha "expect to not have attribute (js)" b
|
||||
expect(${1:target}).not.toHaveAttr('${2:attr}'${3:, '${4:value}'});
|
||||
endsnippet
|
||||
|
||||
snippet nott "expect not to be truthy (js)" b
|
||||
expect(${1:target}).not.toBeTruthy();
|
||||
endsnippet
|
||||
|
||||
snippet notf "expect not to be falsy (js)" b
|
||||
expect(${1:target}).not.toBeFalsy();
|
||||
endsnippet
|
||||
|
||||
snippet notd "expect not to be defined (js)" b
|
||||
expect(${1:target}).not.toBeDefined();
|
||||
endsnippet
|
||||
|
||||
snippet notn "expect not to be null (js)" b
|
||||
expect(${1:target}).not.toBeNull();
|
||||
endsnippet
|
||||
|
||||
snippet notc "expect not to contain (js)" b
|
||||
expect(${1:target}).not.toContain(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notv "expect not to be visible (js)" b
|
||||
expect(${1:target}).not.toBeVisible();
|
||||
endsnippet
|
||||
|
||||
snippet noth "expect not to be hidden (js)" b
|
||||
expect(${1:target}).not.toBeHidden();
|
||||
endsnippet
|
||||
|
||||
snippet notth "expect not to throw (js)" b
|
||||
expect(${1:target}).not.toThrow(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notthe "expect not to throw error (js)" b
|
||||
expect(${1:target}).not.toThrowError(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet s "spy on (js)" b
|
||||
spyOn(${1:object}, '${2:method}')$0;
|
||||
endsnippet
|
||||
|
||||
snippet sr "spy on and return (js)" b
|
||||
spyOn(${1:object}, '${2:method}').and.returnValue(${3:arguments});
|
||||
endsnippet
|
||||
|
||||
snippet st "spy on and throw (js)" b
|
||||
spyOn(${1:object}, '${2:method}').and.throwError(${3:exception});
|
||||
endsnippet
|
||||
|
||||
snippet sct "spy on and call through (js)" b
|
||||
spyOn(${1:object}, '${2:method}').and.callThrough();
|
||||
endsnippet
|
||||
|
||||
snippet scf "spy on and call fake (js)" b
|
||||
spyOn(${1:object}, '${2:method}').and.callFake(${3:function});
|
||||
endsnippet
|
||||
|
||||
snippet ethbc "expect to have been called (js)" b
|
||||
expect(${1:target}).toHaveBeenCalled();
|
||||
endsnippet
|
||||
|
||||
snippet nthbc "expect not to have been called (js)" b
|
||||
expect(${1:target}).not.toHaveBeenCalled();
|
||||
endsnippet
|
||||
|
||||
snippet ethbcw "expect to have been called with (js)" b
|
||||
expect(${1:target}).toHaveBeenCalledWith(${2:arguments});
|
||||
endsnippet
|
||||
|
|
@ -132,6 +132,14 @@ snippet eh "expect to be hidden (js)" b
|
|||
expect(${1:target}).toBeHidden();
|
||||
endsnippet
|
||||
|
||||
snippet eth "expect to throw (js)" b
|
||||
expect(${1:target}).toThrow(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet ethe "expect to throw error (js)" b
|
||||
expect(${1:target}).toThrowError(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notx "expect not (js)" b
|
||||
expect(${1:target}).not$0;
|
||||
endsnippet
|
||||
|
@ -145,7 +153,7 @@ expect(${1:target}).not.toBeLessThan(${2:value});
|
|||
endsnippet
|
||||
|
||||
snippet notg "expect to not be greater than (js)" b
|
||||
expect(${1:target})..not.toBeGreaterThan(${2:value});
|
||||
expect(${1:target}).not.toBeGreaterThan(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notm "expect not to match (js)" b
|
||||
|
@ -184,6 +192,14 @@ snippet noth "expect not to be hidden (js)" b
|
|||
expect(${1:target}).not.toBeHidden();
|
||||
endsnippet
|
||||
|
||||
snippet notth "expect not to throw (js)" b
|
||||
expect(${1:target}).not.toThrow(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet notthe "expect not to throw error (js)" b
|
||||
expect(${1:target}).not.toThrowError(${2:value});
|
||||
endsnippet
|
||||
|
||||
snippet s "spy on (js)" b
|
||||
spyOn(${1:object}, '${2:method}')$0;
|
||||
endsnippet
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
priority -50
|
||||
|
||||
############
|
||||
# COMMON #
|
||||
############
|
||||
|
||||
# The smart snippets use a global options called
|
||||
# "g:ultisnips_javascript.{option}" which can control the format
|
||||
# of trailing semicolon, space before function paren, etc.
|
||||
|
||||
global !p
|
||||
from javascript_snippets import (
|
||||
semi, space_before_function_paren, keyword_spacing
|
||||
)
|
||||
endglobal
|
||||
|
||||
###########################################################################
|
||||
# TextMate Snippets #
|
||||
###########################################################################
|
||||
|
@ -8,13 +22,13 @@ getElement${1/(T)|.*/(?1:s)/}By${1:T}${1/(T)|(I)|.*/(?1:agName)(?2:d)/}('$2')
|
|||
endsnippet
|
||||
|
||||
snippet '':f "object method string"
|
||||
'${1:${2:#thing}:${3:click}}': function(element) {
|
||||
'${1:${2:#thing}:${3:click}}': function`!p snip.rv = space_before_function_paren(snip)`(element) {
|
||||
${VISUAL}$0
|
||||
}${10:,}
|
||||
endsnippet
|
||||
|
||||
snippet :f "Object Method"
|
||||
${1:method_name}: function(${3:attribute}) {
|
||||
${1:method_name}: function`!p snip.rv = space_before_function_paren(snip)`(${3:attribute}) {
|
||||
${VISUAL}$0
|
||||
}${10:,}
|
||||
endsnippet
|
||||
|
@ -28,48 +42,99 @@ ${1:key}: ${2:"${3:value}"}${4:, }
|
|||
endsnippet
|
||||
|
||||
snippet proto "Prototype (proto)"
|
||||
${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {
|
||||
${1:class_name}.prototype.${2:method_name} = function`!p snip.rv = space_before_function_paren(snip)`(${3:first_argument}) {
|
||||
${VISUAL}$0
|
||||
};
|
||||
}`!p snip.rv = semi(snip)`
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet fun "function (fun)" w
|
||||
function ${1:function_name}(${2:argument}) {
|
||||
function ${1:function_name}`!p snip.rv = space_before_function_paren(snip)`(${2:argument}) {
|
||||
${VISUAL}$0
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet vf "Function assigned to var"
|
||||
${1:var }${2:function_name} = function $2($3) {
|
||||
${1:var }${2:function_name} = function $2`!p snip.rv = space_before_function_paren(snip)`($3) {
|
||||
${VISUAL}$0
|
||||
};
|
||||
}`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet af "Anonymous Function" i
|
||||
function($1) {
|
||||
function`!p snip.rv = space_before_function_paren(snip)`($1) {
|
||||
${VISUAL}$0
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet iife "Immediately-Invoked Function Expression (iife)"
|
||||
(function(${1:window}) {
|
||||
(function`!p snip.rv = space_before_function_paren(snip)`(${1:window}) {
|
||||
${VISUAL}$0
|
||||
}(${2:$1}));
|
||||
}(${2:$1}))`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet ;fe "Minify safe iife"
|
||||
;(function`!p snip.rv = space_before_function_paren(snip)`(${1}) {
|
||||
${VISUAL}$0
|
||||
}(${2}))
|
||||
endsnippet
|
||||
|
||||
snippet timeout "setTimeout function"
|
||||
setTimeout(function() {
|
||||
setTimeout(function`!p snip.rv = space_before_function_paren(snip)`() {
|
||||
${VISUAL}$0
|
||||
}${2:.bind(${3:this})}, ${1:10});
|
||||
}${2:.bind(${3:this})}, ${1:10})`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet fi "for prop in obj using hasOwnProperty" b
|
||||
for (${1:prop} in ${2:obj}){
|
||||
if ($2.hasOwnProperty($1)) {
|
||||
for`!p snip.rv = keyword_spacing(snip)`(${1:prop} in ${2:obj}){
|
||||
if`!p snip.rv = keyword_spacing(snip)`($2.hasOwnProperty($1)) {
|
||||
${VISUAL}$0
|
||||
}
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet if "if (condition) { ... }"
|
||||
if`!p snip.rv = keyword_spacing(snip)`(${1:true}) {
|
||||
${VISUAL}$0
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet ife "if (condition) { ... } else { ... }"
|
||||
if`!p snip.rv = keyword_spacing(snip)`(${1:true}) {
|
||||
${VISUAL}$0
|
||||
}`!p snip.rv = keyword_spacing(snip)`else`!p snip.rv = keyword_spacing(snip)`{
|
||||
${2}
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet switch
|
||||
switch`!p snip.rv = keyword_spacing(snip)`(${VISUAL}${1:expression}) {
|
||||
case '${VISUAL}${3:case}':
|
||||
${4}
|
||||
break`!p snip.rv = semi(snip)`
|
||||
${0}
|
||||
default:
|
||||
${2}
|
||||
}
|
||||
endsnippet
|
||||
|
||||
snippet case "case 'xyz': ... break"
|
||||
case`!p snip.rv = keyword_spacing(snip)`'${VISUAL}${1:case}':
|
||||
${VISUAL}$0
|
||||
break`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet do "do { ... } while (condition)"
|
||||
do`!p snip.rv = keyword_spacing(snip)`{
|
||||
${VISUAL}$0
|
||||
}`!p snip.rv = keyword_spacing(snip)`while`!p snip.rv = keyword_spacing(snip)`(${1:/* condition */})`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet ret "Return statement"
|
||||
return ${VISUAL}$0`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
snippet us
|
||||
'use strict'`!p snip.rv = semi(snip)`
|
||||
endsnippet
|
||||
|
||||
# vim:ft=snippets:
|
||||
|
|
24
sources_non_forked/vim-snippets/UltiSnips/matlab.snippets
Normal file
24
sources_non_forked/vim-snippets/UltiSnips/matlab.snippets
Normal file
|
@ -0,0 +1,24 @@
|
|||
priority -50
|
||||
|
||||
snippet switch "switch ... otherwise"
|
||||
switch ${1:n}
|
||||
case ${2:0}
|
||||
${3}${4:
|
||||
otherwise
|
||||
${5}}
|
||||
end
|
||||
endsnippet
|
||||
|
||||
snippet clc "class with constructor" b
|
||||
classdef ${1:`!p
|
||||
snip.rv = snip.basename or "class_name"`}
|
||||
properties
|
||||
${2}
|
||||
end
|
||||
methods
|
||||
function obj = $1(${3})
|
||||
${4}
|
||||
end${0}
|
||||
end
|
||||
end
|
||||
endsnippet
|
|
@ -1,5 +1,26 @@
|
|||
priority -50
|
||||
|
||||
#
|
||||
# Global functions
|
||||
#
|
||||
|
||||
global !p
|
||||
|
||||
def write_instance_vars(arglist, snip):
|
||||
args = str(arglist).split(',')
|
||||
for arg in args:
|
||||
name = arg.strip().replace(':', ' ').split(' ', 1)[0]
|
||||
if name:
|
||||
snip += ' @{} = {}'.format(name, name)
|
||||
else:
|
||||
snip += ''
|
||||
|
||||
endglobal
|
||||
|
||||
#
|
||||
# Snippets
|
||||
#
|
||||
|
||||
snippet "^#!" "#!/usr/bin/env ruby" r
|
||||
#!/usr/bin/env ruby
|
||||
$0
|
||||
|
@ -17,8 +38,7 @@ end
|
|||
endsnippet
|
||||
|
||||
snippet defi "def initialize ..."
|
||||
def initialize${1:(${2:*args})}
|
||||
$0
|
||||
def initialize($1)`!p write_instance_vars(t[1],snip)`$0
|
||||
end
|
||||
endsnippet
|
||||
|
||||
|
@ -212,32 +232,6 @@ except:
|
|||
end
|
||||
endsnippet
|
||||
|
||||
snippet "(\S+)\.Each_?w(ith)?_?i(ndex)?" ".each_with_index { |<element>,<i>| <block> }" r
|
||||
`!p snip.rv=match.group(1)`.each_with_index { |${1:`!p
|
||||
element_name = match.group(1).lstrip('$@')
|
||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name)
|
||||
try:
|
||||
wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1))
|
||||
snip.rv = wmatch.group(1).lower()
|
||||
except:
|
||||
snip.rv = 'element'
|
||||
`},${2:i}| $0 }
|
||||
endsnippet
|
||||
|
||||
snippet "(\S+)\.each_?w(ith)?_?i(ndex)?" ".each_with_index do |<element>,<i>| <block> end" r
|
||||
`!p snip.rv=match.group(1)`.each_with_index do |${1:`!p
|
||||
element_name = match.group(1).lstrip('$@')
|
||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name)
|
||||
try:
|
||||
wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1))
|
||||
snip.rv = wmatch.group(1).lower()
|
||||
except:
|
||||
snip.rv = 'element'
|
||||
`},${2:i}|
|
||||
$0
|
||||
end
|
||||
endsnippet
|
||||
|
||||
snippet "(\S+)\.Each_?p(air)?" ".each_pair { |<key>,<value>| <block> }" r
|
||||
`!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| $0 }
|
||||
endsnippet
|
||||
|
@ -298,20 +292,6 @@ rescue
|
|||
end
|
||||
endsnippet
|
||||
|
||||
snippet begin "begin ... rescue ... else ... ensure ... end"
|
||||
begin
|
||||
${1:# Raise exception}
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
puts e.backtrace.inspect
|
||||
${2:# Rescue}
|
||||
else
|
||||
${3:# other exception}
|
||||
ensure
|
||||
${0:# always excute}
|
||||
end
|
||||
endsnippet
|
||||
|
||||
snippet rescue
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
|
@ -326,10 +306,6 @@ $0
|
|||
end
|
||||
endsnippet
|
||||
|
||||
snippet alias "alias :<new_name> :<old_name>"
|
||||
alias :${1:new_name} :${2:old_name}
|
||||
endsnippet
|
||||
|
||||
snippet class "class <class_name> def initialize ... end end"
|
||||
class ${1:class_name}
|
||||
def initialize(${2:*args})
|
||||
|
|
|
@ -2,15 +2,15 @@ priority -50
|
|||
|
||||
# We use a little hack so that the snippet is expanded
|
||||
# and parsed correctly
|
||||
snippet snip "Snippet definition" b
|
||||
snippet usnip "Ultisnips snippet definition" b
|
||||
`!p snip.rv = "snippet"` ${1:Tab_trigger} "${2:Description}" ${3:b}
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
`!p snip.rv = "endsnippet"`
|
||||
endsnippet
|
||||
|
||||
snippet global "Global snippet" b
|
||||
`!p snip.rv = "global"` !p
|
||||
$0
|
||||
${0:${VISUAL}}
|
||||
`!p snip.rv = "endglobal"`
|
||||
endsnippet
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Helper utilities to format javascript snippets.
|
||||
"""
|
||||
|
||||
ALWAYS = 'always'
|
||||
NEVER = 'never'
|
||||
|
||||
|
||||
def get_option(snip, option, default=None):
|
||||
return snip.opt('g:ultisnips_javascript["{}"]'.format(option), default)
|
||||
|
||||
|
||||
def semi(snip):
|
||||
option = get_option(snip, 'semi', ALWAYS)
|
||||
|
||||
if option == NEVER:
|
||||
ret = ''
|
||||
elif option == ALWAYS:
|
||||
ret = ';'
|
||||
else:
|
||||
ret = ';'
|
||||
return ret
|
||||
|
||||
|
||||
def space_before_function_paren(snip):
|
||||
option = get_option(snip, 'space-before-function-paren', NEVER)
|
||||
|
||||
if option == NEVER:
|
||||
ret = ''
|
||||
elif option == ALWAYS:
|
||||
ret = ' '
|
||||
else:
|
||||
ret = ''
|
||||
return ret
|
||||
|
||||
|
||||
def keyword_spacing(snip):
|
||||
option = get_option(snip, 'keyword-spacing', ALWAYS)
|
||||
|
||||
if option == NEVER:
|
||||
ret = ''
|
||||
elif option == ALWAYS:
|
||||
ret = ' '
|
||||
else:
|
||||
ret = ''
|
||||
return ret
|
|
@ -130,6 +130,84 @@ snippet fun
|
|||
{
|
||||
${4}
|
||||
}
|
||||
# function definition with zero parameters
|
||||
snippet fun0
|
||||
${1:void} ${2:function_name}()
|
||||
{
|
||||
${3}
|
||||
}
|
||||
# function definition with Doxygen documentation
|
||||
snippet dfun0
|
||||
/*! \brief ${1:Brief function description here}
|
||||
*
|
||||
* ${2:Detailed description of the function}
|
||||
*
|
||||
* \return ${3:Return parameter description}
|
||||
*/
|
||||
${4:void} ${5:function_name}()
|
||||
{
|
||||
${6}
|
||||
}
|
||||
# function definition with one parameter
|
||||
snippet fun1
|
||||
${1:void} ${2:function_name}(${3:Type} ${4:Parameter})
|
||||
{
|
||||
${5}
|
||||
}
|
||||
# function definition with one parameter with Doxygen documentation
|
||||
snippet dfun1
|
||||
/*! \brief ${1:Brief function description here}
|
||||
*
|
||||
* ${2:Detailed description of the function}
|
||||
*
|
||||
* \param $3 ${4:Parameter description}
|
||||
* \return ${5:Return parameter description}
|
||||
*/
|
||||
${6:void} ${7:function_name}(${8:Type} ${3:Parameter})
|
||||
{
|
||||
${9}
|
||||
}
|
||||
# function definition with two parameters
|
||||
snippet fun2
|
||||
${1:void} ${2:function_name}(${3:Type} ${4:Parameter}, ${5:Type} ${6:Parameter})
|
||||
{
|
||||
${7}
|
||||
}
|
||||
# function definition with two parameters with Doxygen documentation
|
||||
snippet dfun2
|
||||
/*! \brief ${1:Brief function description here}
|
||||
*
|
||||
* ${2:Detailed description of the function}
|
||||
*
|
||||
* \param $3 ${4:Parameter description}
|
||||
* \param $5 ${6:Parameter description}
|
||||
* \return ${7:Return parameter description}
|
||||
*/
|
||||
${8:void} ${9:function_name}(${10:Type} ${3:Parameter}, ${11:Type} ${5:Parameter})
|
||||
{
|
||||
${12}
|
||||
}
|
||||
# function definition with two parameters
|
||||
snippet fun3
|
||||
${1:void} ${2:function_name}(${3:Type} ${4:Parameter}, ${5:Type} ${6:Parameter}, ${7:Type} ${8:Parameter})
|
||||
{
|
||||
${9}
|
||||
}
|
||||
# function definition with two parameters with Doxygen documentation
|
||||
snippet dfun3
|
||||
/*! \brief ${1:Brief function description here}
|
||||
*
|
||||
* ${2:Detailed description of the function}
|
||||
*
|
||||
* \param $3 ${4:Parameter description}
|
||||
* \param $5 ${6:Parameter description}
|
||||
* \param $7 ${8:Parameter description}
|
||||
* \return ${9:Return parameter description}
|
||||
*/
|
||||
${10:void} ${11:function_name}(${12:Type} ${3:Parameter}, ${13:Type} ${5:Parameter}, ${14:Type} ${7:Parameter})
|
||||
{
|
||||
${15}
|
||||
}
|
||||
# function declaration
|
||||
snippet fund
|
||||
${1:void} ${2:function_name}(${3});
|
||||
|
@ -140,21 +218,39 @@ snippet td
|
|||
typedef ${1:int} ${2:MyCustomType};
|
||||
# struct
|
||||
snippet st
|
||||
/*! \struct $1
|
||||
* \brief ${3:Brief struct description}
|
||||
*
|
||||
* ${4:Detailed description}
|
||||
*/
|
||||
struct ${1:`vim_snippets#Filename('$1_t', 'name')`} {
|
||||
${2:/* data */}
|
||||
}${3: /* optional variable list */};
|
||||
${2:Data} /*!< ${4:Description} */
|
||||
}${5: /* optional variable list */};
|
||||
# typedef struct
|
||||
snippet tds
|
||||
/*! \struct $2
|
||||
* \brief ${5:Brief struct description}
|
||||
*
|
||||
* ${6:Detailed description}
|
||||
*/
|
||||
typedef struct ${2:_$1 }{
|
||||
${3:/* data */}
|
||||
m_${3:Data} /*!< ${4:Description} */
|
||||
} ${1:`vim_snippets#Filename('$1_t', 'name')`};
|
||||
|
||||
snippet enum
|
||||
/*! \enum $1
|
||||
*
|
||||
* ${2:Detailed description}
|
||||
*/
|
||||
enum ${1:name} { ${0} };
|
||||
# typedef enum
|
||||
snippet tde
|
||||
/*! \enum $2
|
||||
*
|
||||
* ${4:Detailed description}
|
||||
*/
|
||||
typedef enum {
|
||||
${1:/* data */}
|
||||
${1:Data} /*!< ${3:Description} */
|
||||
} ${2:foo};
|
||||
##
|
||||
## Input/Output
|
||||
|
@ -228,6 +324,11 @@ snippet getopt
|
|||
}
|
||||
}
|
||||
##
|
||||
# TODO section
|
||||
snippet todo
|
||||
/*! TODO: ${1:Todo description here}
|
||||
* \todo $1
|
||||
*/
|
||||
## Miscellaneous
|
||||
# This is kind of convenient
|
||||
snippet .
|
||||
|
|
|
@ -78,20 +78,61 @@ snippet mu
|
|||
## Class
|
||||
# class
|
||||
snippet cl
|
||||
/*! \class $1
|
||||
* \brief ${3:Brief class description}
|
||||
*
|
||||
* ${4:Detailed description}
|
||||
*/
|
||||
class ${1:`vim_snippets#Filename('$1', 'name')`}
|
||||
{
|
||||
public:
|
||||
$1(${2});
|
||||
~$1();
|
||||
virtual ~$1();
|
||||
|
||||
private:
|
||||
${0:/* data */}
|
||||
protected:
|
||||
m_${5}; /*!< ${6:Member description} */
|
||||
};
|
||||
# member function implementation
|
||||
snippet mfun
|
||||
${4:void} ${1:`vim_snippets#Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {
|
||||
${0}
|
||||
}
|
||||
# member function implementation without parameters
|
||||
snippet dmfun0
|
||||
/*! \brief ${4:Brief function description here}
|
||||
*
|
||||
* ${5:Detailed description}
|
||||
*
|
||||
* \return ${6:Return parameter description}
|
||||
*/
|
||||
${3:void} ${1:`vim_snippets#Filename('$1', 'ClassName')`}::${2:memberFunction}() {
|
||||
${0}
|
||||
}
|
||||
# member function implementation with one parameter
|
||||
snippet dmfun1
|
||||
/*! \brief ${6:Brief function description here}
|
||||
*
|
||||
* ${7:Detailed description}
|
||||
*
|
||||
* \param $4 ${8:Parameter description}
|
||||
* \return ${9:Return parameter description}
|
||||
*/
|
||||
${5:void} ${1:`vim_snippets#Filename('$1', 'ClassName')`}::${2:memberFunction}(${3:Type} ${4:Parameter}) {
|
||||
${0}
|
||||
}
|
||||
# member function implementation with two parameter
|
||||
snippet dmfun2
|
||||
/*! \brief ${8:Brief function description here}
|
||||
*
|
||||
* ${9:Detailed description}
|
||||
*
|
||||
* \param $4 ${10:Parameter description}
|
||||
* \param $6 ${11:Parameter description}
|
||||
* \return ${12:Return parameter description}
|
||||
*/
|
||||
${7:void} ${1:`vim_snippets#Filename('$1', 'ClassName')`}::${2:memberFunction}(${3:Type} ${4:Parameter},${5:Type} ${6:Parameter}) {
|
||||
${0}
|
||||
}
|
||||
# namespace
|
||||
snippet ns
|
||||
namespace ${1:`vim_snippets#Filename('', 'my')`} {
|
||||
|
@ -152,3 +193,13 @@ snippet lld
|
|||
[${1}](${2}){
|
||||
${3}
|
||||
};
|
||||
# snippets exception
|
||||
snippet try
|
||||
try {
|
||||
|
||||
}catch(${1}) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -28,9 +28,12 @@ snippet doc
|
|||
$0
|
||||
snippet dox
|
||||
!> @brief ${1}
|
||||
!!
|
||||
!> ${2}
|
||||
!> @author `g:snips_author`
|
||||
${0}
|
||||
snippet doxp
|
||||
!> @param[${1}]${0}
|
||||
# Variables definitions
|
||||
# Boolean
|
||||
snippet bool
|
||||
|
|
|
@ -78,7 +78,7 @@ snippet spaceless
|
|||
snippet ssi
|
||||
{% ssi ${0} %}
|
||||
snippet trans
|
||||
{% trans "${0:string}" %}
|
||||
{% trans %}${0}{% endtrans %}
|
||||
snippet url
|
||||
{% url ${1} as ${0} %}
|
||||
snippet widthratio
|
||||
|
|
64
sources_non_forked/vim-snippets/snippets/matlab.snippets
Normal file
64
sources_non_forked/vim-snippets/snippets/matlab.snippets
Normal file
|
@ -0,0 +1,64 @@
|
|||
snippet if if
|
||||
if ${1}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet ife if ... else
|
||||
if ${1}
|
||||
${2}
|
||||
else
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet el else
|
||||
else
|
||||
${0}
|
||||
|
||||
snippet eif elsif
|
||||
elseif ${1}
|
||||
${0}
|
||||
|
||||
snippet wh while
|
||||
while ${1}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet for for
|
||||
for ${1:i} = ${2:1:n}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet parfor parfor
|
||||
parfor ${1:i} = ${2:1:n}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet fun function
|
||||
function [${3:out}] = ${1:`vim_snippets#Filename("$1", "fun_name")`}(${2})
|
||||
${0}
|
||||
|
||||
snippet try try ... catch
|
||||
try
|
||||
${1}
|
||||
catch ${2:err}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet switch switch
|
||||
switch ${1:n}
|
||||
case ${2:0}
|
||||
${0}
|
||||
end
|
||||
|
||||
snippet @ anonymous function
|
||||
@(${1:x}) ${0:x*x}
|
||||
|
||||
snippet cl class
|
||||
classdef ${1:`vim_snippets#Filename("$1", "class_name")`}
|
||||
properties
|
||||
${2}
|
||||
end
|
||||
methods
|
||||
${0}
|
||||
end
|
||||
end
|
|
@ -94,9 +94,9 @@ snippet E
|
|||
$_ENV['${1:variable}']
|
||||
snippet F
|
||||
$_FILES['${1:variable}']
|
||||
snippet G
|
||||
snippet G "_GET array"
|
||||
$_GET['${1:variable}']
|
||||
snippet P
|
||||
snippet P "_POST array"
|
||||
$_POST['${1:variable}']
|
||||
snippet R
|
||||
$_REQUEST['${1:variable}']
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue