diff --git a/sources_non_forked/ale/ale_linters/ada/gcc.vim b/sources_non_forked/ale/ale_linters/ada/gcc.vim new file mode 100644 index 00000000..d6f973ae --- /dev/null +++ b/sources_non_forked/ale/ale_linters/ada/gcc.vim @@ -0,0 +1,54 @@ +" Author: Martino Pilia +" Description: Lint Ada files with GCC + +call ale#Set('ada_gcc_executable', 'gcc') + +" -gnatwa: activate most optional warnings +" -gnatq: try semantic analysis even if syntax errors have been found +call ale#Set('ada_gcc_options', '-gnatwa -gnatq') + +function! ale_linters#ada#gcc#GetCommand(buffer) abort + " Build a suitable output file name. The output file is specified because + " the .ali file may be created even if no code generation is attempted. + " The output file name must match the source file name (except for the + " extension), so here we cannot use the null file as output. + let l:tmp_dir = fnamemodify(ale#engine#CreateDirectory(a:buffer), ':p') + let l:out_file = l:tmp_dir . fnamemodify(bufname(a:buffer), ':t:r') . '.o' + + " -gnatc: Check syntax and semantics only (no code generation attempted) + return '%e -x ada -c -gnatc' + \ . ' -o ' . ale#Escape(l:out_file) + \ . ' -I ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) + \ . ale#Pad(ale#Var(a:buffer, 'ada_gcc_options')) + \ . ' %t' +endfunction + +" For the message format please refer to: +" https://gcc.gnu.org/onlinedocs/gnat_ugn/Output-and-Error-Message-Control.html +" https://gcc.gnu.org/onlinedocs/gnat_ugn/Warning-Message-Control.html +function! ale_linters#ada#gcc#Handle(buffer, lines) abort + " Error format: ::: + " Warning format: ::: warning: + let l:re = '\v(.+):([0-9]+):([0-9]+):\s+(warning:)?\s*(.+)\s*' + let l:output = [] + + for l:match in ale#util#GetMatches(a:lines, l:re) + call add(l:output, { + \ 'bufnr': a:buffer, + \ 'lnum': str2nr(l:match[2]), + \ 'col': str2nr(l:match[3]), + \ 'type': l:match[4] is# 'warning:' ? 'W' : 'E', + \ 'text': l:match[5], + \}) + endfor + + return l:output +endfunction + +call ale#linter#Define('ada', { +\ 'name': 'gcc', +\ 'output_stream': 'stderr', +\ 'executable_callback': ale#VarFunc('ada_gcc_executable'), +\ 'command_callback': 'ale_linters#ada#gcc#GetCommand', +\ 'callback': 'ale_linters#ada#gcc#Handle', +\}) diff --git a/sources_non_forked/ale/ale_linters/asciidoc/vale.vim b/sources_non_forked/ale/ale_linters/asciidoc/vale.vim new file mode 100644 index 00000000..b3cf4547 --- /dev/null +++ b/sources_non_forked/ale/ale_linters/asciidoc/vale.vim @@ -0,0 +1,9 @@ +" Author: Jeff Kreeftmeijer https://github.com/jeffkreeftmeijer +" Description: vale for AsciiDoc files + +call ale#linter#Define('asciidoc', { +\ 'name': 'vale', +\ 'executable': 'vale', +\ 'command': 'vale --output=line %t', +\ 'callback': 'ale#handlers#unix#HandleAsWarning', +\}) diff --git a/sources_non_forked/ale/ale_linters/bib/bibclean.vim b/sources_non_forked/ale/ale_linters/bib/bibclean.vim new file mode 100644 index 00000000..6750f22f --- /dev/null +++ b/sources_non_forked/ale/ale_linters/bib/bibclean.vim @@ -0,0 +1,74 @@ +" Author: Horacio Sanson - https://github.com/hsanson +" Description: Support for bibclean linter for BibTeX files. + +call ale#Set('bib_bibclean_executable', 'bibclean') + +function! ale_linters#bib#bibclean#GetCommand(buffer) abort + let l:executable = ale#Var(a:buffer, 'bib_bibclean_executable') + + return ale#Escape(l:executable) . ' -file-position ' +endfunction + +function! ale_linters#bib#bibclean#get_type(str) abort + if a:str is# '??' + return 'E' + else + return 'W' + endif +endfunction + +function! ale_linters#bib#bibclean#match_msg(line) abort + return matchlist(a:line, '^\(.*\) "stdin", line \(.*\): \(.*\)$') +endfunction + +function! ale_linters#bib#bibclean#match_entry(line) abort + return matchlist(a:line, 'Entry input byte=.* line=\(.*\) column=\(.*\) output .*$') +endfunction + +function! ale_linters#bib#bibclean#match_value(line) abort + return matchlist(a:line, 'Value input byte=.* line=\(.*\) column=\(.*\) output .*$') +endfunction + +function! ale_linters#bib#bibclean#Handle(buffer, lines) abort + let l:output = [] + + let l:type = 'E' + let l:msg = '' + + for l:line in a:lines + if empty(l:msg) + let l:mlist = ale_linters#bib#bibclean#match_msg(l:line) + + if !empty(l:mlist) + let l:msg = l:mlist[3] + let l:type = ale_linters#bib#bibclean#get_type(l:mlist[1]) + endif + else + if l:type is# 'E' + let l:mlist = ale_linters#bib#bibclean#match_entry(l:line) + else + let l:mlist = ale_linters#bib#bibclean#match_value(l:line) + endif + + if !empty(l:mlist) + call add(l:output, { + \ 'lnum': l:mlist[1], + \ 'col': l:mlist[2], + \ 'text': l:msg, + \ 'type': l:type + \}) + let l:msg = '' + endif + endif + endfor + + return l:output +endfunction + +call ale#linter#Define('bib', { +\ 'name': 'bibclean', +\ 'executable_callback': ale#VarFunc('bib_bibclean_executable'), +\ 'command_callback': 'ale_linters#bib#bibclean#GetCommand', +\ 'output_stream': 'stderr', +\ 'callback': 'ale_linters#bib#bibclean#Handle', +\}) diff --git a/sources_non_forked/ale/ale_linters/eruby/ruumba.vim b/sources_non_forked/ale/ale_linters/eruby/ruumba.vim new file mode 100644 index 00000000..24f112e4 --- /dev/null +++ b/sources_non_forked/ale/ale_linters/eruby/ruumba.vim @@ -0,0 +1,62 @@ +" Author: aclemons - https://github.com/aclemons +" based on the ale rubocop linter +" Description: Ruumba, RuboCop linting for ERB templates. + +call ale#Set('eruby_ruumba_executable', 'ruumba') +call ale#Set('eruby_ruumba_options', '') + +function! ale_linters#eruby#ruumba#GetCommand(buffer) abort + let l:executable = ale#Var(a:buffer, 'eruby_ruumba_executable') + + return ale#handlers#ruby#EscapeExecutable(l:executable, 'ruumba') + \ . ' --format json --force-exclusion ' + \ . ale#Var(a:buffer, 'eruby_ruumba_options') + \ . ' --stdin ' . ale#Escape(expand('#' . a:buffer . ':p')) +endfunction + +function! ale_linters#eruby#ruumba#Handle(buffer, lines) abort + try + let l:errors = json_decode(a:lines[0]) + catch + return [] + endtry + + if !has_key(l:errors, 'summary') + \|| l:errors['summary']['offense_count'] == 0 + \|| empty(l:errors['files']) + return [] + endif + + let l:output = [] + + for l:error in l:errors['files'][0]['offenses'] + let l:start_col = l:error['location']['column'] + 0 + call add(l:output, { + \ 'lnum': l:error['location']['line'] + 0, + \ 'col': l:start_col, + \ 'end_col': l:start_col + l:error['location']['length'] - 1, + \ 'code': l:error['cop_name'], + \ 'text': l:error['message'], + \ 'type': ale_linters#eruby#ruumba#GetType(l:error['severity']), + \}) + endfor + + return l:output +endfunction + +function! ale_linters#eruby#ruumba#GetType(severity) abort + if a:severity is? 'convention' + \|| a:severity is? 'warning' + \|| a:severity is? 'refactor' + return 'W' + endif + + return 'E' +endfunction + +call ale#linter#Define('eruby', { +\ 'name': 'ruumba', +\ 'executable_callback': ale#VarFunc('eruby_ruumba_executable'), +\ 'command_callback': 'ale_linters#eruby#ruumba#GetCommand', +\ 'callback': 'ale_linters#eruby#ruumba#Handle', +\}) diff --git a/sources_non_forked/ale/ale_linters/ispc/ispc.vim b/sources_non_forked/ale/ale_linters/ispc/ispc.vim new file mode 100644 index 00000000..de7ceafa --- /dev/null +++ b/sources_non_forked/ale/ale_linters/ispc/ispc.vim @@ -0,0 +1,45 @@ +" Author: Martino Pilia +" Description: Lint ispc files with the Intel(R) SPMD Program Compiler + +call ale#Set('ispc_ispc_executable', 'ispc') +call ale#Set('ispc_ispc_options', '') + +function! ale_linters#ispc#ispc#GetCommand(buffer) abort + " --nowrap: do not wrap message lines + return '%e --nowrap' + \ . ale#Pad(ale#c#IncludeOptions(ale#c#FindLocalHeaderPaths(a:buffer))) + \ . ale#Pad(ale#Var(a:buffer, 'ispc_ispc_options')) + \ . ' %s' +endfunction + +" Note that we ignore the two warnings in the beginning of the compiler output +" ('no output file specified' and 'no --target specified'), since they have +" nothing to do with linting. +function! ale_linters#ispc#ispc#Handle(buffer, lines) abort + " Message format: :: : + " As far as I know, can be any of: + " 'error', 'Error', 'fatal error', 'Warning', 'Performance Warning' + let l:re = '\v.+:([0-9]+):([0-9]+):\s+([^:]+):\s+(.+)' + let l:output = [] + + for l:match in ale#util#GetMatches(a:lines, l:re) + call add(l:output, { + \ 'bufnr': a:buffer, + \ 'lnum': str2nr(l:match[1]), + \ 'col': str2nr(l:match[2]), + \ 'type': l:match[3] =~? 'error' ? 'E' : 'W', + \ 'text': l:match[4], + \}) + endfor + + return l:output +endfunction + +call ale#linter#Define('ispc', { +\ 'name': 'ispc', +\ 'output_stream': 'stderr', +\ 'executable_callback': ale#VarFunc('ispc_ispc_executable'), +\ 'command_callback': 'ale_linters#ispc#ispc#GetCommand', +\ 'callback': 'ale_linters#ispc#ispc#Handle', +\ 'lint_file': 1, +\}) diff --git a/sources_non_forked/ale/ale_linters/python/pydocstyle.vim b/sources_non_forked/ale/ale_linters/python/pydocstyle.vim new file mode 100644 index 00000000..ebf92bf1 --- /dev/null +++ b/sources_non_forked/ale/ale_linters/python/pydocstyle.vim @@ -0,0 +1,74 @@ +" Author: Pablo Acosta +" Description: pydocstyle for python files + +call ale#Set('python_pydocstyle_executable', 'pydocstyle') +call ale#Set('python_pydocstyle_options', '') +call ale#Set('python_pydocstyle_use_global', get(g:, 'ale_use_global_executables', 0)) +call ale#Set('python_pydocstyle_auto_pipenv', 0) + +function! ale_linters#python#pydocstyle#GetExecutable(buffer) abort + if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_pydocstyle_auto_pipenv')) + \ && ale#python#PipenvPresent(a:buffer) + return 'pipenv' + endif + + return ale#python#FindExecutable(a:buffer, 'python_pydocstyle', ['pydocstyle']) +endfunction + +function! ale_linters#python#pydocstyle#GetCommand(buffer) abort + let l:dir = fnamemodify(bufname(a:buffer), ':p:h') + let l:executable = ale_linters#python#pydocstyle#GetExecutable(a:buffer) + + let l:exec_args = l:executable =~? 'pipenv$' + \ ? ' run pydocstyle' + \ : '' + + return ale#path#CdString(l:dir) + \ . ale#Escape(l:executable) . l:exec_args + \ . ' ' . ale#Var(a:buffer, 'python_pydocstyle_options') + \ . ' ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:t')) +endfunction + +function! ale_linters#python#pydocstyle#Handle(buffer, lines) abort + " Matches patterns like the following: + " mydir/myfile.py:33 in public function `myfunction`: + " DXXX: Error description + let l:fname = ale#Escape(fnamemodify(bufname(a:buffer), ':p:t')) + let l:line1_pattern = '\v^' . l:fname . ':\s*(\d+)\s+.*$' + let l:line2_pattern = '\v^.*([a-zA-Z]\d+):\s*(.*)$' + let l:output = [] + + let l:num_lines = len(a:lines) + let l:index = 0 + + while l:index < l:num_lines + let l:lnum = matchlist(a:lines[l:index], l:line1_pattern) + + if !empty(l:lnum) && (l:index + 1 < l:num_lines) + let l:desc = matchlist(a:lines[l:index + 1], l:line2_pattern) + + if !empty(l:desc) + call add(l:output, { + \ 'lnum': l:lnum[1] + 0, + \ 'col': 1, + \ 'type': 'W', + \ 'text': l:desc[2], + \ 'code': l:desc[1], + \}) + endif + + let l:index = l:index + 2 + else + let l:index = l:index + 1 + endif + endwhile + + return l:output +endfunction + +call ale#linter#Define('python', { +\ 'name': 'pydocstyle', +\ 'executable_callback': 'ale_linters#python#pydocstyle#GetExecutable', +\ 'command_callback': 'ale_linters#python#pydocstyle#GetCommand', +\ 'callback': 'ale_linters#python#pydocstyle#Handle', +\}) diff --git a/sources_non_forked/ale/ale_linters/ruby/standardrb.vim b/sources_non_forked/ale/ale_linters/ruby/standardrb.vim new file mode 100644 index 00000000..95e10934 --- /dev/null +++ b/sources_non_forked/ale/ale_linters/ruby/standardrb.vim @@ -0,0 +1,23 @@ +" Author: Justin Searls https://github.com/searls, ynonp - https://github.com/ynonp, Eddie Lebow https://github.com/elebow +" based on the ale rubocop linter +" Description: StandardRB - Ruby Style Guide, with linter & automatic code fixer + +call ale#Set('ruby_standardrb_executable', 'standardrb') +call ale#Set('ruby_standardrb_options', '') + +function! ale_linters#ruby#standardrb#GetCommand(buffer) abort + let l:executable = ale#Var(a:buffer, 'ruby_standardrb_executable') + + return ale#handlers#ruby#EscapeExecutable(l:executable, 'standardrb') + \ . ' --format json --force-exclusion ' + \ . ale#Var(a:buffer, 'ruby_standardrb_options') + \ . ' --stdin ' . ale#Escape(expand('#' . a:buffer . ':p')) +endfunction + +" standardrb is based on RuboCop so the callback is the same +call ale#linter#Define('ruby', { +\ 'name': 'standardrb', +\ 'executable_callback': ale#VarFunc('ruby_standardrb_executable'), +\ 'command_callback': 'ale_linters#ruby#standardrb#GetCommand', +\ 'callback': 'ale#ruby#HandleRubocopOutput', +\}) diff --git a/sources_non_forked/ale/autoload/ale/fixers/bibclean.vim b/sources_non_forked/ale/autoload/ale/fixers/bibclean.vim new file mode 100644 index 00000000..89cb97ab --- /dev/null +++ b/sources_non_forked/ale/autoload/ale/fixers/bibclean.vim @@ -0,0 +1,15 @@ +" Author: Horacio Sanson - https://github.com/hsanson +" Description: Support for bibclean fixer for BibTeX files. + +call ale#Set('bib_bibclean_executable', 'bibclean') +call ale#Set('bib_bibclean_options', '-align-equals') + +function! ale#fixers#bibclean#Fix(buffer) abort + let l:options = ale#Var(a:buffer, 'bib_bibclean_options') + let l:executable = ale#Var(a:buffer, 'bib_bibclean_executable') + + return { + \ 'command': ale#Escape(l:executable) + \ . ' ' . (empty(l:options) ? '' : l:options), + \} +endfunction diff --git a/sources_non_forked/ale/autoload/ale/fixers/standardrb.vim b/sources_non_forked/ale/autoload/ale/fixers/standardrb.vim new file mode 100644 index 00000000..fab1e2bc --- /dev/null +++ b/sources_non_forked/ale/autoload/ale/fixers/standardrb.vim @@ -0,0 +1,23 @@ +" Author: Justin Searls - https://github.com/searls +" Description: Fix Ruby files with StandardRB. + +call ale#Set('ruby_standardrb_options', '') +call ale#Set('ruby_standardrb_executable', 'standardrb') + +function! ale#fixers#standardrb#GetCommand(buffer) abort + let l:executable = ale#Var(a:buffer, 'ruby_standardrb_executable') + let l:config = ale#path#FindNearestFile(a:buffer, '.standard.yml') + let l:options = ale#Var(a:buffer, 'ruby_standardrb_options') + + return ale#handlers#ruby#EscapeExecutable(l:executable, 'standardrb') + \ . (!empty(l:config) ? ' --config ' . ale#Escape(l:config) : '') + \ . (!empty(l:options) ? ' ' . l:options : '') + \ . ' --fix --force-exclusion %t' +endfunction + +function! ale#fixers#standardrb#Fix(buffer) abort + return { + \ 'command': ale#fixers#standardrb#GetCommand(a:buffer), + \ 'read_temporary_file': 1, + \} +endfunction diff --git a/sources_non_forked/ale/autoload/ale/virtualtext.vim b/sources_non_forked/ale/autoload/ale/virtualtext.vim new file mode 100644 index 00000000..c4ce37dd --- /dev/null +++ b/sources_non_forked/ale/autoload/ale/virtualtext.vim @@ -0,0 +1,136 @@ +scriptencoding utf-8 +" Author: w0rp +" Author: Luan Santos +" Description: Shows lint message for the current line as virtualtext, if any + +" Controls the milliseconds delay before showing a message. +let g:ale_virtualtext_delay = get(g:, 'ale_virtualtext_delay', 10) +let s:cursor_timer = -1 +let s:last_pos = [0, 0, 0] + +if has('nvim-0.3.2') + let s:ns_id = nvim_create_namespace('ale') +endif + +if !hlexists('ALEVirtualTextError') + highlight link ALEVirtualTextError ALEError +endif + +if !hlexists('ALEVirtualTextStyleError') + highlight link ALEVirtualTextStyleError ALEVirtualTextError +endif + +if !hlexists('ALEVirtualTextWarning') + highlight link ALEVirtualTextWarning ALEWarning +endif + +if !hlexists('ALEVirtualTextStyleWarning') + highlight link ALEVirtualTextStyleWarning ALEVirtualTextWarning +endif + +if !hlexists('ALEVirtualTextInfo') + highlight link ALEVirtualTextInfo ALEVirtualTextWarning +endif + +function! ale#virtualtext#Clear() abort + if !has('nvim-0.3.2') + return + endif + + let l:buffer = bufnr('') + + call nvim_buf_clear_highlight(l:buffer, s:ns_id, 0, -1) +endfunction + +function! ale#virtualtext#ShowMessage(message, hl_group) abort + if !has('nvim-0.3.2') + return + endif + + let l:cursor_position = getcurpos() + let l:line = line('.') + let l:buffer = bufnr('') + let l:prefix = get(g:, 'ale_virtualtext_prefix', '> ') + + call nvim_buf_set_virtual_text(l:buffer, s:ns_id, l:line-1, [[l:prefix.a:message, a:hl_group]], {}) +endfunction + +function! s:StopCursorTimer() abort + if s:cursor_timer != -1 + call timer_stop(s:cursor_timer) + let s:cursor_timer = -1 + endif +endfunction + +function! ale#virtualtext#ShowCursorWarning(...) abort + if !g:ale_virtualtext_cursor + return + endif + + let l:buffer = bufnr('') + + if mode(1) isnot# 'n' + return + endif + + if ale#ShouldDoNothing(l:buffer) + return + endif + + let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer) + + call ale#virtualtext#Clear() + + if !empty(l:loc) + let l:msg = get(l:loc, 'detail', l:loc.text) + let l:hl_group = 'ALEVirtualTextInfo' + let l:type = get(l:loc, 'type', 'E') + + if l:type is# 'E' + if get(l:loc, 'sub_type', '') is# 'style' + let l:hl_group = 'ALEVirtualTextStyleError' + else + let l:hl_group = 'ALEVirtualTextError' + endif + elseif l:type is# 'W' + if get(l:loc, 'sub_type', '') is# 'style' + let l:hl_group = 'ALEVirtualTextStyleWarning' + else + let l:hl_group = 'ALEVirtualTextWarning' + endif + endif + + call ale#virtualtext#ShowMessage(l:msg, l:hl_group) + endif +endfunction + +function! ale#virtualtext#ShowCursorWarningWithDelay() abort + let l:buffer = bufnr('') + + if !g:ale_virtualtext_cursor + return + endif + + if mode(1) isnot# 'n' + return + endif + + call s:StopCursorTimer() + + let l:pos = getcurpos()[0:2] + + " Check the current buffer, line, and column number against the last + " recorded position. If the position has actually changed, *then* + " we should show something. Otherwise we can end up doing processing + " the show message far too frequently. + if l:pos != s:last_pos + let l:delay = ale#Var(l:buffer, 'virtualtext_delay') + + let s:last_pos = l:pos + let s:cursor_timer = timer_start( + \ l:delay, + \ function('ale#virtualtext#ShowCursorWarning') + \) + endif +endfunction + diff --git a/sources_non_forked/ale/doc/ale-ada.txt b/sources_non_forked/ale/doc/ale-ada.txt new file mode 100644 index 00000000..93e3261a --- /dev/null +++ b/sources_non_forked/ale/doc/ale-ada.txt @@ -0,0 +1,25 @@ +=============================================================================== +ALE Ada Integration *ale-ada-options* + + +=============================================================================== +gcc *ale-ada-gcc* + +g:ale_ada_gcc_executable *g:ale_ada_gcc_executable* + *b:ale_ada_gcc_executable* + Type: |String| + Default: `'gcc'` + +This variable can be changed to use a different executable for gcc. + + +g:ale_ada_gcc_options *g:ale_ada_gcc_options* + *b:ale_ada_gcc_options* + Type: |String| + Default: `'-gnatwa -gnatq'` + + This variable can be set to pass additional options to gcc. + + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/sources_non_forked/ale/doc/ale-bib.txt b/sources_non_forked/ale/doc/ale-bib.txt new file mode 100644 index 00000000..35998c30 --- /dev/null +++ b/sources_non_forked/ale/doc/ale-bib.txt @@ -0,0 +1,19 @@ +=============================================================================== +ALE BibTeX Integration *ale-bib-options* + + +=============================================================================== +bibclean *ale-bib-bibclean* + +g:ale_bib_bibclean_executable *g:ale_bib_bibclean_executable* + + Type: |String| + Default: `'bibclean'` + +g:ale_bib_bibclean_options *g:ale_bib_bibclean_options* + + Type: |String| + Default: `'-align-equals'` + +=============================================================================== +vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/sources_non_forked/ale/doc/ale-ispc.txt b/sources_non_forked/ale/doc/ale-ispc.txt new file mode 100644 index 00000000..bf30e8e3 --- /dev/null +++ b/sources_non_forked/ale/doc/ale-ispc.txt @@ -0,0 +1,24 @@ +=============================================================================== +ALE ISPC Integration *ale-ispc-options* + + +=============================================================================== +ispc *ale-ispc-ispc* + +g:ale_ispc_ispc_executable *g:ale_ispc_ispc_executable* + *b:ale_ispc_ispc_executable* + Type: |String| + Default: `'ispc'` + + This variable can be changed to use a different executable for ispc. + + +g:ale_ispc_ispc_options *g:ale_ispc_ispc_options* + *b:ale_ispc_ispc_options* + Type: |String| + Default: `''` + + This variable can be changed to modify flags given to ispc. + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/sources_non_forked/nerdtree/nerdtree_plugin/vcs.vim b/sources_non_forked/nerdtree/nerdtree_plugin/vcs.vim new file mode 100644 index 00000000..c30579ae --- /dev/null +++ b/sources_non_forked/nerdtree/nerdtree_plugin/vcs.vim @@ -0,0 +1,38 @@ +" ============================================================================ +" File: vcs.vim +" Description: NERDTree plugin that provides a command to open on the root of +" a version control system repository. +" Maintainer: Phil Runninger +" License: This program is free software. It comes without any warranty, +" to the extent permitted by applicable law. You can redistribute +" it and/or modify it under the terms of the Do What The Fuck You +" Want To Public License, Version 2, as published by Sam Hocevar. +" See http://sam.zoy.org/wtfpl/COPYING for more details. +" +" ============================================================================ +command! -n=? -complete=dir -bar NERDTreeVCS :call CreateTabTreeVCS('') + +" FUNCTION: s:CreateTabTreeVCS(a:name) {{{1 +function! s:CreateTabTreeVCS(name) + let l:path = g:NERDTreeCreator._pathForString(a:name) + let l:path = s:FindParentVCSRoot(l:path) + call g:NERDTreeCreator.createTabTree(empty(l:path) ? "" : l:path._str()) +endfunction + +" FUNCTION: s:FindParentVCSRoot(a:path) {{{1 +" Finds the root version control system folder of the given path. If a:path is +" not part of a repository, return the original path. +function! s:FindParentVCSRoot(path) + let l:path = a:path + while !empty(l:path) && + \ l:path._str() !~ '^\(\a:\\\|\/\)$' && + \ !isdirectory(l:path._str() . '/.git') && + \ !isdirectory(l:path._str() . '/.svn') && + \ !isdirectory(l:path._str() . '/.hg') && + \ !isdirectory(l:path._str() . '/.bzr') && + \ !isdirectory(l:path._str() . '/_darcs') + let l:path = l:path.getParent() + endwhile + return (empty(l:path) || l:path._str() =~ '^\(\a:\\\|\/\)$') ? a:path : l:path +endfunction + diff --git a/sources_non_forked/vim-go/autoload/go/debug_test.vim b/sources_non_forked/vim-go/autoload/go/debug_test.vim new file mode 100644 index 00000000..b8192619 --- /dev/null +++ b/sources_non_forked/vim-go/autoload/go/debug_test.vim @@ -0,0 +1,54 @@ +" don't spam the user when Vim is started in Vi compatibility mode +let s:cpo_save = &cpo +set cpo&vim + +function! Test_GoDebugStart_Empty() abort + call s:debug() +endfunction + +function! Test_GoDebugStart_RelativePackage() abort + call s:debug('./debugmain') +endfunction + +function! Test_GoDebugStart_Package() abort + call s:debug('debugmain') +endfunction + +function! s:debug(...) abort + if !go#util#has_job() + return + endif + + try + let l:tmp = gotest#load_fixture('debugmain/debugmain.go') + + call go#debug#Breakpoint(6) + + call assert_false(exists(':GoDebugStop')) + + if a:0 == 0 + let l:cd = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd' + execute l:cd . ' debugmain' + call go#debug#Start(0) + else + call go#debug#Start(0, a:1) + endif + + let l:start = reltime() + while !exists(':GoDebugStop') && reltimefloat(reltime(l:start)) < 10 + sleep 100m + endwhile + + call go#debug#Stop() + + call assert_false(exists(':GoDebugStop')) + finally + call delete(l:tmp, 'rf') + endtry +endfunction + +" restore Vi compatibility settings +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 ts=2 et diff --git a/sources_non_forked/vim-go/autoload/go/test-fixtures/debugmain/debugmain.go b/sources_non_forked/vim-go/autoload/go/test-fixtures/debugmain/debugmain.go new file mode 100644 index 00000000..50e8d8d3 --- /dev/null +++ b/sources_non_forked/vim-go/autoload/go/test-fixtures/debugmain/debugmain.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("vim-go") +} diff --git a/sources_non_forked/vim-snippets/snippets/helm.snippets b/sources_non_forked/vim-snippets/snippets/helm.snippets new file mode 100644 index 00000000..241cc449 --- /dev/null +++ b/sources_non_forked/vim-snippets/snippets/helm.snippets @@ -0,0 +1,591 @@ +snippet service_sample_spec + apiVersion: v1 + kind: Service + metadata: + {{- if .Values.$1.service.annotations }} + annotations: + {{ toYaml .Values.$1.service.annotations | indent 4 }} + {{- end }} + labels: + {{- if .Values.$1.service.labels }} + {{ toYaml .Values.$1.service.labels | indent 4 }} + {{- end }} + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.$1.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "$2.$1.fullname" . }} + spec: + clusterIP: "{{ .Values.$1.service.clusterIP }}" + {{- if .Values.$1.service.externalIPs }} + externalIPs: + {{ toYaml .Values.$1.service.externalIPs | indent 4 }} + {{- end }} + {{- if .Values.$1.service.loadBalancerIP }} + loadBalancerIP: "{{ .Values.$1.service.loadBalancerIP }}" + {{- end }} + {{- if .Values.$1.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{ toYaml .Values.$1.service.loadBalancerSourceRanges | indent 4 }} + {{- end }} + healthCheckNodePort: {{ .Values.$1.service.healthCheckNodePort }} + ports: + - name: http + port: 80 + protocol: TCP + targetPort: {{ .Values.$1.service.targetPorts.http }} + {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.http))) }} + nodePort: {{ .Values.$1.service.nodePorts.http }} + {{- end }} + - name: https + port: 443 + protocol: TCP + targetPort: {{ .Values.$1.service.targetPorts.https }} + {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.https))) }} + nodePort: {{ .Values.$1.service.nodePorts.https }} + {{- end }} + {{- range $key, $value := .Values.tcp }} + - name: "{{ $key }}-tcp" + port: {{ $key }} + protocol: TCP + targetPort: "{{ $key }}-tcp" + {{- end }} + {{- range $key, $value := .Values.udp }} + - name: "{{ $key }}-udp" + port: {{ $key }} + protocol: UDP + targetPort: "{{ $key }}-udp" + {{- end }} + selector: + app: {{ template "${2:chartName}.name" . }} + component: "{{ .Values.$1.name }}" + release: {{ .Release.Name }} + type: "{{ .Values.${1:value_key}.service.type }}" + +snippet service_spec + apiVersion: v1 + kind: Service + metadata: + {{- if .Values.$1.service.annotations }} + annotations: + {{ toYaml .Values.$1.service.annotations | indent 4 }} + {{- end }} + labels: + {{- if .Values.$1.service.labels }} + {{ toYaml .Values.$1.service.labels | indent 4 }} + {{- end }} + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.$1.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} + # spec + ${0} + +snippet annotations_spec + {{- if .Values.$1.service.annotations }} + annotations: + {{ toYaml .Values.${1:value_key}.service.annotations | indent 4 }} + {{- end }} + ${0} + +snippet labels_spec + labels: + {{- if .Values.$1.service.labels }} + {{ toYaml .Values.$1.service.labels | indent 4 }} + {{- end }} + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.$1.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} + ${0} + +snippet service_spec + spec: + type: "{{ .Values.$1.service.type }}" + clusterIP: "{{ .Values.$1.service.clusterIP }}" + {{- if .Values.$1.service.externalIPs }} + externalIPs: + {{ toYaml .Values.$1.service.externalIPs | indent 4 }} + {{- end }} + {{- if .Values.$1.service.loadBalancerIP }} + loadBalancerIP: "{{ .Values.$1.service.loadBalancerIP }}" + {{- end }} + {{- if .Values.$1.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{ toYaml .Values.$1.service.loadBalancerSourceRanges | indent 4 }} + {{- end }} + {{- if and (semverCompare ">=1.7-0" .Capabilities.KubeVersion.GitVersion) (.Values.$1.service.externalTrafficPolicy) }} + externalTrafficPolicy: "{{ .Values.$1.service.externalTrafficPolicy }}" + {{- end }} + {{- if and (semverCompare ">=1.7-0" .Capabilities.KubeVersion.GitVersion) (.Values.$1.service.healthCheckNodePort) }} + healthCheckNodePort: {{ .Values.${1:value_key}.service.healthCheckNodePort }} + {{- end }} + ${0} + +snippet ports_spec + ports: + ${0} + +snippet portHTTP_spec + - name: http + port: 80 + protocol: TCP + targetPort: {{ .Values.$1.service.targetPorts.http }} + {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.http))) }} + nodePort: {{ .Values.${1:value_key}.service.nodePorts.http }} + {{- end }} + ${0} + +snippet portHTTPS_spec + - name: https + port: 443 + protocol: TCP + targetPort: {{ .Values.$1.service.targetPorts.https }} + {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.https))) }} + nodePort: {{ .Values.${1:value_key}.service.nodePorts.https }} + {{- end }} + ${0} + +snippet portTCP_spec + {{- range $key, $value := .Values.tcp }} + - name: "{{ $key }}-tcp" + port: {{ $key }} + protocol: TCP + targetPort: "{{ $key }}-tcp" + {{- end }} + ${0} + +snippet portUDP_spec + {{- range $key, $value := .Values.udp }} + - name: "{{ $key }}-udp" + port: {{ $key }} + protocol: UDP + targetPort: "{{ $key }}-udp" + {{- end }} + ${0} + + +snippet selector_spec + selector: + app: {{ template "${2:chartName}.name" . }} + component: "{{ .Values.${1:value_key}.name }}" + release: {{ .Release.Name }} + ${0} + + +snippet deploy_sample_spec + {{- if .Values.$1.enabled }} + apiVersion: extensions/v1beta1 + kind: Deployment + metadata: + labels: + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.$1.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "$2.$1.fullname" . }} + spec: + replicas: {{ .Values.$1.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + template: + metadata: + {{- if .Values.$1.podAnnotations }} + annotations: + {{ toYaml .Values.$1.podAnnotations | indent 8 }} + {{- end }} + labels: + app: {{ template "$2.name" . }} + component: "{{ .Values.$1.name }}" + release: {{ .Release.Name }} + {{- if .Values.$1.podLabels }} + {{ toYaml .Values.$1.podLabels | indent 8 }} + {{- end }} + spec: + {{- if .Values.imagePullSecrets }} + imagePullSecrets: + {{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + containers: + - name: {{ template "${2:chartName}.name" . }}-{{ .Values.$1.name }} + image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" + imagePullPolicy: "{{ .Values.$1.image.pullPolicy }}" + args: + {{- range $key, $value := .Values.$1.extraArgs }} + {{- if $value }} + - --{{ $key }}={{ $value }} + {{- else }} + - --{{ $key }} + {{- end }} + {{- end }} + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + initialDelaySeconds: 30 + timeoutSeconds: 5 + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + {{ toYaml .Values.$1.resources | indent 12 }} + {{- if .Values.$1.nodeSelector }} + nodeSelector: + {{ toYaml .Values.$1.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.$1.tolerations }} + tolerations: + {{ toYaml .Values.$1.tolerations | indent 8 }} + {{- end }} + {{- if .Values.$1.affinity }} + affinity: + {{ toYaml .Values.${1:value_key}.affinity | indent 8 }} + {{- end }} + terminationGracePeriodSeconds: 60 + {{- end }} + + + +snippet deploy_spec + {{- if .Values.$1.enabled }} + apiVersion: extensions/v1beta1 + kind: Deployment + metadata: + labels: + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.$1.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} + # spec + # containers_spec + # livenessProbe_spec + # PersistentVolumeClaim_spec + # initContainers_spec + # resources_spec + # nodeselector_spec + # tolerations_spec + # affinity_spec + ${0} + +snippet spec_spec + spec: + replicas: {{ .Values.$1.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + template: + metadata: + {{- if .Values.$1.podAnnotations }} + annotations: + {{ toYaml .Values.$1.podAnnotations | indent 8 }} + {{- end }} + labels: + app: {{ template "${2:chartName}.name" . }} + component: "{{ .Values.$1.name }}" + release: {{ .Release.Name }} + {{- if .Values.$1.podLabels }} + {{ toYaml .Values.${1:value_key}.podLabels | indent 8 }} + {{- end }} + spec: + {{- if .Values.imagePullSecrets }} + imagePullSecrets: + {{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + ${0} + +snippet imagePullSecrets_spec + {{- if .Values.imagePullSecrets }} + imagePullSecrets: + {{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + ${0} + +snippet imagePullPolicy_spec + imagePullPolicy: ${1:imagePullPolicy} + ${0} + +snippet containers_spec + containers: + - name: {{ template "${2:chartName}.name" . }}-{{ .Values.$1.name }} + image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" + imagePullPolicy: "{{ .Values.${1:value_key}.image.pullPolicy }}" + ${0} +snippet args_spec + args: + {{- range $key, $value := .Values.${1:value_key}.extraArgs }} + {{- if $value }} + - --{{ $key }}={{ $value }} + {{- else }} + - --{{ $key }} + {{- end }} + {{- end }} + ${0} +snippet livenessProbe_spec + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + initialDelaySeconds: 30 + timeoutSeconds: 5 + ${0} +snippet readinessProbe_spec + readinessProbe: + httpGet: + path: /go/api/v1/health + port: 8153 + initialDelaySeconds: {{ .Values.$1.healthCheck.initialDelaySeconds }} + periodSeconds: {{ .Values.$1.healthCheck.periodSeconds }} + failureThreshold: {{ .Values.$1.healthCheck.failureThreshold }} + ${0} +snippet resources_spec + resources: + {{ toYaml .Values.${1:value_key}.resources | indent 12 }} + ${0} +snippet nodeselector_spec + {{- if .Values.$1.nodeSelector }} + nodeSelector: + {{ toYaml .Values.${1:value_key}.nodeSelector | indent 8 }} + {{- end }} + ${0} +snippet tolerations_spec + {{- if .Values.$1.tolerations }} + tolerations: + {{ toYaml .Values.${1:value_key}.tolerations | indent 8 }} + {{- end }} + ${0} +snippet affinity_spec + {{- if .Values.$1.affinity }} + affinity: + {{ toYaml .Values.${1:value_key}.affinity | indent 8 }} + {{- end }} + terminationGracePeriodSeconds: 60 + {{- end }} + ${0} + +snippet PersistentVolumeClaim_spec + kind: PersistentVolumeClaim + apiVersion: v1 + metadata: + name: {{ template "${2}.$1.fullname" . }} + labels: + app: {{ template "${2:chartName}.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + spec: + accessModes: + - {{ .Values.$1.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.$1.persistence.size | quote }} + {{- if .Values.$1.persistence.storageClass }} + {{- if (eq "-" .Values.$1.persistence.storageClass) }} + storageClassName: "" + {{- else }} + storageClassName: "{{ .Values.${1:value_key}.persistence.storageClass }}" + {{- end }} + {{- end }} + {{- end }} + {{- end }} + ${0} + +snippet configMap_spec + {{- if .Values.artifactory.enabled -}} + apiVersion: v1 + kind: ConfigMap + metadata: + name: {{ template "${2:chartName}.fullname" . }}-${1:value_key}-config + labels: + app: {{ template "${2}.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + data: + ${3:nameOfConfigFile}.conf: | + # data goes here + {{- end -}} + ${0} + +snippet initContainers_spec + {{- if .Values.$1.initContainers }} + initContainers: + - name: wait-workers + image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" + imagePullPolicy: {{ .Values.${1:value_key}.image.pullPolicy }} + # env + command: + - sh + - -c + - | + until printf "." && nc -z -w 2 {{ template "${2:chartName}.fullname" . }} {{ .Values.postgresql.service.port }}; do + sleep 2; + done; + + echo 'PostgreSQL OK ✓' + # args + {{- end }} + ${0} + +snippet pvc_spec + kind: PersistentVolumeClaim + apiVersion: v1 + metadata: + name: {{ template "$2.fullname" . }} + labels: + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + app: {{ template "${2:chartName}.fullname" . }} + spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- if .Values.persistence.storageClass }} + {{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" + {{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" + {{- end }} + {{- end }} + {{- end }} + ${0} + +snippet pv_nfs_spec + apiVersion: v1 + kind: PersistentVolume + metadata: + name: {{ template "$2.fullname" . }}-data-pv + labels: + app: {{ template "$2.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + id: {{ template "${2:chartName}.name" . }}-data-pv + type: nfs-volume + spec: + capacity: + storage: {{ .Values.$1.persistence.nfs.capacity }} + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: {{ .Values.$1.persistence.nfs.ip }} + path: "{{ .Values.${1:value_key}.persistence.nfs.haDataMount }}" + readOnly: false + ${0} + +snippet pvc_hostpath_spec + {{- if and .Values.persistence.enabled .Values.persistence.$1.hostPath (not + .Values.persistence.$1.existingClaim) -}} + apiVersion: v1 + kind: PersistentVolume + metadata: + name: {{ template "${2:chartName}.fullname" . }}-$1 + spec: + accessModes: + - {{ .Values.persistence.$1.accessMode | quote }} + capacity: + storage: {{ .Values.persistence.$1.size | quote }} + hostPath: + path: {{ .Values.persistence.${1:value_key}.hostPath | quote }} + {{- end -}} + ${0} + +snippet deploy_values + $1: + name: ${1:value_key} + image: + repository: + tag: + pullPolicy: IfNotPresent + hostNetwork: false + dnsPolicy: ClusterFirst + daemonset: + useHostPort: false + podLabels: {} + scope: + enabled: false + namespace: "" # defaults to .Release.Namespace + extraArgs: {} + extraEnvs: [] + kind: Deployment + updateStrategy: {} + minReadySeconds: 0 + tolerations: [] + affinity: {} + nodeSelector: {} + podAnnotations: {} + replicaCount: 1 + minAvailable: 1 + resources: {} + autoscaling: + enabled: false + extraContainers: {} + extraVolumeMounts: {} + extraVolumes: {} + extraInitContainers: [] + lifecycle: {} + revisionHistoryLimit: 10 + ${0} + +snippet rbac_values + ${1:value_key}: + rbac: + create: true + serviceAccount: + create: true + name: + imagePullSecrets: [] + ${0} + +snippet service_values + ${1:value_key}: + service: + annotations: {} + labels: {} + clusterIP: "" + externalIPs: [] + loadBalancerIP: "" + loadBalancerSourceRanges: [] + externalTrafficPolicy: "" + healthCheckNodePort: 0 + targetPorts: + http: http + https: https + type: LoadBalancer + nodePorts: + http: "" + https: "" + ${0} + +snippet readinessProbe_values + ${1:value_key}: + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + port: 10254 + ${0} + +snippet livenessProbe_values + ${1:value_key}: + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + port: 10254 + ${0} diff --git a/sources_non_forked/vim-snippets/snippets/jenkins.snippets b/sources_non_forked/vim-snippets/snippets/jenkins.snippets new file mode 100644 index 00000000..2dccd40e --- /dev/null +++ b/sources_non_forked/vim-snippets/snippets/jenkins.snippets @@ -0,0 +1,270 @@ +snippet steps + steps { + sh '${1:make check}' + junit '${2:reports/**/*.xml}' + } + ${0} + +snippet stage + stage('${1:Test}'){ + steps { + sh '${2:make check}' + junit '${3:reports/**/*.xml}' + } + } + ${0} + +snippet pipeline + pipeline { + agent any + stages { + stage('${1:Build}') { + steps { + sh '${2:make}' + } + } + } + } + ${0} + +snippet pipeline_sample + pipeline { + agent any + stages { + stage('${1:Build}') { + steps { + sh '${2:make}' + } + } + stage('${3:Test}'){ + steps { + sh '${4:make check}' + junit '${5:reports/**/*.xml}' + } + } + stage('${6:Deploy}') { + steps { + sh '${7:make publish}' + } + } + } + } + ${0} + +snippet d + docker { + image '${1:myregistry.com/node'}' + label '${2:my-defined-label'}' + registryUrl '${3:https://myregistry.com/'}' + registryCredentialsId '${4:myPredefinedCredentialsInJenkins'}' + } + + +snippet df + dockerfile { + filename '${1:Dockerfile.build}' + dir '${2:build}' + label '${3:my-defined-label}' + registryUrl '${4:https://myregistry.com/}' + registryCredentialsId '${5:myPredefinedCredentialsInJenkins}' + } + +snippet pa + post { + always { + ${1} + } + } + ${0} + +snippet pc + post { + changed { + ${1} + } + } + ${0} + +snippet pf + post { + fixed { + ${1} + } + } + ${0} + +snippet pr + post { + regression { + ${1} + } + } + ${0} + +snippet pab + post { + aborted { + ${1} + } + } + ${0} + +snippet pfa + post { + failure { + ${1} + } + } + ${0} + +snippet ps + post { + success { + ${1} + } + } + ${0} + +snippet pu + post { + unstable { + ${1} + } + } + ${0} + +snippet pc + post { + cleanup { + ${1} + } + } + ${0} + + +snippet psss + pipeline { + agent any + stages { + stage('${1:Build}') { + steps { + sh '${2:make}' + } + } + } + ${0} + +snippet sss + stages { + stage('${1:Build}') { + steps { + sh '${2:make}' + } + } + } + ${0} + + + +snippet parameters + parameters{ + ${1} + } + ${0} + +snippet paramtext + text(name: "${1:BIOGRAPHY}" , defaultValue: "${2:default}" , description: "${3:Enter some information about the person}") + ${0} + +snippet parambool + booleanParam(name: "${1:TOGGLE}" , defaultValue: ${2:default}, description: "${3:Toggle this value}") + ${0} + +snippet paramchoice + choice(name: "${1:CHOICE}" , choices: ["${2:Choices}",] , description: "${3:Pick something}") + ${0} + +snippet parampassword + password(name: "${1:PASSWORD}" , defaultValue: "${2:SECRET}" , description: "${3:Enter a password}") + ${0} + +snippet paramfile + file(name: "${1:FILE}" , description: "${2:Choose a file to upload}")${0} + ${0} + +snippet triggers + triggers { + cron('${1:H */4 * * 1-5}') + } + ${0} + +snippet input + input { + message '${1:Should we continue?}' + ok '${2:Yes, we should.}' + submitter '${3:alice,bob}' + parameters { + string(name: '${4:PERSON}' , defaultValue: '${5:Mr Jenkins}' , description: '${6:Who should I say hello to?}') + } + } + ${0} + +snippet whenbranch + when { + branch '${1:branch}' + } + ${0} +snippet whenbuildingTag + when { + buildingTag '${1:tag}' + } + ${0} +snippet whenchangelog + when { + changelog '${1:changelog}' + } + ${0} +snippet whenchangeset + when { + changeset '${1:changeSet}' + } + ${0} +snippet whenchangeRequest + when { + changeRequest '${1:changeRequest}' + } + ${0} +snippet whenenvironment + when { + environment '${1:environment}' + } + ${0} +snippet whenequals + when { + equals '${1:equals}' + } + ${0} +snippet whenexpression + when { + expression '${1:expression}' + } + ${0} +snippet whentag + when { + tag '${1:tag}' + } + ${0} +snippet whennot + when { + not '${1:not}' + } + ${0} +snippet whenallOf + when { + allOf '${1:allOf}' + } + ${0} +snippet whenanyOf + when { + anyOf '${1:anyOf}' + }