commit
00c59fa5e1
122 changed files with 5171 additions and 371 deletions
|
@ -109,6 +109,7 @@ I recommend reading the docs of these plugins to understand them better. Each pl
|
||||||
* [gist-vim](https://github.com/mattn/gist-vim) Easily create gists from Vim using the `:Gist` command
|
* [gist-vim](https://github.com/mattn/gist-vim) Easily create gists from Vim using the `:Gist` command
|
||||||
* [vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides) Is a plugin for visually displaying indent levels in Vim
|
* [vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides) Is a plugin for visually displaying indent levels in Vim
|
||||||
* [editorconfig-vim](https://github.com/editorconfig/editorconfig-vim) EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.
|
* [editorconfig-vim](https://github.com/editorconfig/editorconfig-vim) EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.
|
||||||
|
* [jedi-vim](https://github.com/davidhalter/jedi-vim) A great Python autocompletion library for VIM.
|
||||||
|
|
||||||
|
|
||||||
## Included color schemes
|
## Included color schemes
|
||||||
|
|
63
sources_non_forked/ale/ale_linters/bicep/bicep.vim
Normal file
63
sources_non_forked/ale/ale_linters/bicep/bicep.vim
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
" Author: Carl Smedstad <carl.smedstad at protonmail dot com>
|
||||||
|
" Description: bicep for bicep files
|
||||||
|
|
||||||
|
let g:ale_bicep_bicep_executable =
|
||||||
|
\ get(g:, 'ale_bicep_bicep_executable', 'bicep')
|
||||||
|
|
||||||
|
let g:ale_bicep_bicep_options =
|
||||||
|
\ get(g:, 'ale_bicep_bicep_options', '')
|
||||||
|
|
||||||
|
function! ale_linters#bicep#bicep#Executable(buffer) abort
|
||||||
|
return ale#Var(a:buffer, 'bicep_bicep_executable')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#bicep#bicep#Command(buffer) abort
|
||||||
|
let l:executable = ale_linters#bicep#bicep#Executable(a:buffer)
|
||||||
|
let l:options = ale#Var(a:buffer, 'bicep_bicep_options')
|
||||||
|
|
||||||
|
if has('win32')
|
||||||
|
let l:nullfile = 'NUL'
|
||||||
|
else
|
||||||
|
let l:nullfile = '/dev/null'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ale#Escape(l:executable)
|
||||||
|
\ . ' build --outfile '
|
||||||
|
\ . l:nullfile
|
||||||
|
\ . ' '
|
||||||
|
\ . l:options
|
||||||
|
\ . ' %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#bicep#bicep#Handle(buffer, lines) abort
|
||||||
|
let l:pattern = '\v^.*\((\d+),(\d+)\)\s:\s([a-zA-Z]*)\s([-a-zA-Z0-9]*):\s(.*)'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
|
if l:match[3] is# 'Error'
|
||||||
|
let l:type = 'E'
|
||||||
|
elseif l:match[3] is# 'Warning'
|
||||||
|
let l:type = 'W'
|
||||||
|
else
|
||||||
|
let l:type = 'I'
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:match[1] + 0,
|
||||||
|
\ 'col': l:match[2] + 0,
|
||||||
|
\ 'type': l:type,
|
||||||
|
\ 'code': l:match[4],
|
||||||
|
\ 'text': l:match[5],
|
||||||
|
\})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('bicep', {
|
||||||
|
\ 'name': 'bicep',
|
||||||
|
\ 'executable': function('ale_linters#bicep#bicep#Executable'),
|
||||||
|
\ 'command': function('ale_linters#bicep#bicep#Command'),
|
||||||
|
\ 'callback': 'ale_linters#bicep#bicep#Handle',
|
||||||
|
\ 'output_stream': 'both',
|
||||||
|
\})
|
|
@ -3,12 +3,15 @@
|
||||||
|
|
||||||
call ale#Set('proto_buf_lint_executable', 'buf')
|
call ale#Set('proto_buf_lint_executable', 'buf')
|
||||||
call ale#Set('proto_buf_lint_config', '')
|
call ale#Set('proto_buf_lint_config', '')
|
||||||
|
call ale#Set('proto_buf_lint_options', '')
|
||||||
|
|
||||||
function! ale_linters#proto#buf_lint#GetCommand(buffer) abort
|
function! ale_linters#proto#buf_lint#GetCommand(buffer) abort
|
||||||
let l:config = ale#Var(a:buffer, 'proto_buf_lint_config')
|
let l:config = ale#Var(a:buffer, 'proto_buf_lint_config')
|
||||||
|
let l:options = ale#Var(a:buffer, 'proto_buf_lint_options')
|
||||||
|
|
||||||
return '%e lint'
|
return '%e lint'
|
||||||
\ . (!empty(l:config) ? ' --config=' . ale#Escape(l:config) : '')
|
\ . (!empty(l:config) ? ' --config=' . ale#Escape(l:config) : '')
|
||||||
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
\ . ' %s#include_package_files=true'
|
\ . ' %s#include_package_files=true'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -19,5 +22,5 @@ call ale#linter#Define('proto', {
|
||||||
\ 'output_stream': 'stdout',
|
\ 'output_stream': 'stdout',
|
||||||
\ 'executable': {b -> ale#Var(b, 'proto_buf_lint_executable')},
|
\ 'executable': {b -> ale#Var(b, 'proto_buf_lint_executable')},
|
||||||
\ 'command': function('ale_linters#proto#buf_lint#GetCommand'),
|
\ 'command': function('ale_linters#proto#buf_lint#GetCommand'),
|
||||||
\ 'callback': 'ale#handlers#unix#HandleAsError',
|
\ 'callback': 'ale#handlers#go#Handler',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
" Description: Volar Language Server integration for ALE adopted from
|
" Description: Volar Language Server integration for ALE adopted from
|
||||||
" nvim-lspconfig and volar/packages/shared/src/types.ts
|
" nvim-lspconfig and volar/packages/shared/src/types.ts
|
||||||
|
|
||||||
call ale#Set('vue_volar_executable', 'volar-server')
|
call ale#Set('vue_volar_executable', 'vue-language-server')
|
||||||
call ale#Set('vue_volar_use_global', get(g:, 'ale_use_global_executables', 0))
|
call ale#Set('vue_volar_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
call ale#Set('vue_volar_init_options', {
|
call ale#Set('vue_volar_init_options', {
|
||||||
\ 'documentFeatures': {
|
\ 'documentFeatures': {
|
||||||
|
@ -73,7 +73,7 @@ call ale#linter#Define('vue', {
|
||||||
\ 'name': 'volar',
|
\ 'name': 'volar',
|
||||||
\ 'language': 'vue',
|
\ 'language': 'vue',
|
||||||
\ 'lsp': 'stdio',
|
\ 'lsp': 'stdio',
|
||||||
\ 'executable': {b -> ale#path#FindExecutable(b, 'vue_volar', ['node_modules/.bin/volar-server'])},
|
\ 'executable': {b -> ale#path#FindExecutable(b, 'vue_volar', ['node_modules/.bin/vue-language-server'])},
|
||||||
\ 'command': '%e --stdio',
|
\ 'command': '%e --stdio',
|
||||||
\ 'project_root': function('ale_linters#vue#volar#GetProjectRoot'),
|
\ 'project_root': function('ale_linters#vue#volar#GetProjectRoot'),
|
||||||
\ 'initialization_options': function('ale_linters#vue#volar#GetInitializationOptions'),
|
\ 'initialization_options': function('ale_linters#vue#volar#GetInitializationOptions'),
|
||||||
|
|
49
sources_non_forked/ale/ale_linters/yaml/gitlablint.vim
Normal file
49
sources_non_forked/ale/ale_linters/yaml/gitlablint.vim
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
call ale#Set('yaml_gitlablint_executable', 'gll')
|
||||||
|
call ale#Set('yaml_gitlablint_options', '')
|
||||||
|
|
||||||
|
function! ale_linters#yaml#gitlablint#GetCommand(buffer) abort
|
||||||
|
return '%e' . ale#Pad(ale#Var(a:buffer, 'yaml_gitlablint_options'))
|
||||||
|
\ . ' -p %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#yaml#gitlablint#Handle(buffer, lines) abort
|
||||||
|
" Matches patterns line the following:
|
||||||
|
" (<unknown>): mapping values are not allowed in this context at line 68 column 8
|
||||||
|
" jobs:build:dev config contains unknown keys: ony
|
||||||
|
let l:pattern = '^\(.*\) at line \(\d\+\) column \(\d\+\)$'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:line in a:lines
|
||||||
|
let l:match = matchlist(l:line, l:pattern)
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
let l:item = {
|
||||||
|
\ 'lnum': l:match[2] + 0,
|
||||||
|
\ 'col': l:match[3] + 0,
|
||||||
|
\ 'text': l:match[1],
|
||||||
|
\ 'type': 'E',
|
||||||
|
\}
|
||||||
|
call add(l:output, l:item)
|
||||||
|
else
|
||||||
|
if l:line isnot# 'GitLab CI configuration is invalid'
|
||||||
|
let l:item = {
|
||||||
|
\ 'lnum': 0,
|
||||||
|
\ 'col': 0,
|
||||||
|
\ 'text': l:line,
|
||||||
|
\ 'type': 'E',
|
||||||
|
\}
|
||||||
|
call add(l:output, l:item)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('yaml', {
|
||||||
|
\ 'name': 'gitlablint',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'yaml_gitlablint_executable')},
|
||||||
|
\ 'command': function('ale_linters#yaml#gitlablint#GetCommand'),
|
||||||
|
\ 'callback': 'ale_linters#yaml#gitlablint#Handle',
|
||||||
|
\ 'output_stream': 'stderr',
|
||||||
|
\})
|
|
@ -139,7 +139,7 @@ let s:should_complete_map = {
|
||||||
" Regular expressions for finding the start column to replace with completion.
|
" Regular expressions for finding the start column to replace with completion.
|
||||||
let s:omni_start_map = {
|
let s:omni_start_map = {
|
||||||
\ '<default>': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$',
|
\ '<default>': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$',
|
||||||
\ 'racket': '\k\+',
|
\ 'racket': '\k\+$',
|
||||||
\}
|
\}
|
||||||
|
|
||||||
" A map of exact characters for triggering LSP completions. Do not forget to
|
" A map of exact characters for triggering LSP completions. Do not forget to
|
||||||
|
|
|
@ -203,6 +203,10 @@ function! ale#engine#SetResults(buffer, loclist) abort
|
||||||
call ale#highlight#SetHighlights(a:buffer, a:loclist)
|
call ale#highlight#SetHighlights(a:buffer, a:loclist)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if g:ale_virtualtext_cursor == 2
|
||||||
|
call ale#virtualtext#SetTexts(a:buffer, a:loclist)
|
||||||
|
endif
|
||||||
|
|
||||||
if l:linting_is_done
|
if l:linting_is_done
|
||||||
if g:ale_echo_cursor
|
if g:ale_echo_cursor
|
||||||
" Try and echo the warning now.
|
" Try and echo the warning now.
|
||||||
|
@ -210,7 +214,7 @@ function! ale#engine#SetResults(buffer, loclist) abort
|
||||||
call ale#cursor#EchoCursorWarning()
|
call ale#cursor#EchoCursorWarning()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:ale_virtualtext_cursor
|
if g:ale_virtualtext_cursor == 1
|
||||||
" Try and show the warning now.
|
" Try and show the warning now.
|
||||||
" This will only do something meaningful if we're in normal mode.
|
" This will only do something meaningful if we're in normal mode.
|
||||||
call ale#virtualtext#ShowCursorWarning()
|
call ale#virtualtext#ShowCursorWarning()
|
||||||
|
|
|
@ -139,7 +139,7 @@ function! ale#events#Init() abort
|
||||||
autocmd InsertLeave * if exists('*ale#engine#Cleanup') | call ale#cursor#EchoCursorWarning() | endif
|
autocmd InsertLeave * if exists('*ale#engine#Cleanup') | call ale#cursor#EchoCursorWarning() | endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:ale_virtualtext_cursor
|
if g:ale_virtualtext_cursor == 1
|
||||||
autocmd CursorMoved,CursorHold * if exists('*ale#engine#Cleanup') | call ale#virtualtext#ShowCursorWarningWithDelay() | endif
|
autocmd CursorMoved,CursorHold * if exists('*ale#engine#Cleanup') | call ale#virtualtext#ShowCursorWarningWithDelay() | endif
|
||||||
" Look for a warning to echo as soon as we leave Insert mode.
|
" Look for a warning to echo as soon as we leave Insert mode.
|
||||||
" The script's position variable used when moving the cursor will
|
" The script's position variable used when moving the cursor will
|
||||||
|
|
|
@ -221,6 +221,11 @@ let s:default_registry = {
|
||||||
\ 'suggested_filetypes': ['swift'],
|
\ 'suggested_filetypes': ['swift'],
|
||||||
\ 'description': 'Apply SwiftFormat to a file.',
|
\ 'description': 'Apply SwiftFormat to a file.',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'syntax_tree': {
|
||||||
|
\ 'function': 'ale#fixers#syntax_tree#Fix',
|
||||||
|
\ 'suggested_filetypes': ['ruby'],
|
||||||
|
\ 'description': 'Fix ruby files with stree write',
|
||||||
|
\ },
|
||||||
\ 'apple-swift-format': {
|
\ 'apple-swift-format': {
|
||||||
\ 'function': 'ale#fixers#appleswiftformat#Fix',
|
\ 'function': 'ale#fixers#appleswiftformat#Fix',
|
||||||
\ 'suggested_filetypes': ['swift'],
|
\ 'suggested_filetypes': ['swift'],
|
||||||
|
|
19
sources_non_forked/ale/autoload/ale/fixers/syntax_tree.vim
Normal file
19
sources_non_forked/ale/autoload/ale/fixers/syntax_tree.vim
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
call ale#Set('ruby_syntax_tree_options', '')
|
||||||
|
call ale#Set('ruby_syntax_tree_executable', 'stree')
|
||||||
|
|
||||||
|
function! ale#fixers#syntax_tree#GetCommand(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'ruby_syntax_tree_executable')
|
||||||
|
let l:options = ale#Var(a:buffer, 'ruby_syntax_tree_options')
|
||||||
|
|
||||||
|
return ale#ruby#EscapeExecutable(l:executable, 'stree')
|
||||||
|
\ . ' write'
|
||||||
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
|
\ . ' %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#fixers#syntax_tree#Fix(buffer) abort
|
||||||
|
return {
|
||||||
|
\ 'command': ale#fixers#syntax_tree#GetCommand(a:buffer),
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
|
@ -1,6 +1,7 @@
|
||||||
" Author: Jan-Grimo Sobez <jan-grimo.sobez@phys.chem.ethz.ch>
|
" Author: Jan-Grimo Sobez <jan-grimo.sobez@phys.chem.ethz.ch>
|
||||||
" Author: Kevin Clark <kevin.clark@gmail.com>
|
" Author: Kevin Clark <kevin.clark@gmail.com>
|
||||||
" Author: D. Ben Knoble <ben.knoble+github@gmail.com>
|
" Author: D. Ben Knoble <ben.knoble+github@gmail.com>
|
||||||
|
" Author: Shaun Duncan <shaun.duncan@gmail.com>
|
||||||
" Description: Floating preview window for showing whatever information in.
|
" Description: Floating preview window for showing whatever information in.
|
||||||
|
|
||||||
" Precondition: exists('*nvim_open_win') || has('popupwin')
|
" Precondition: exists('*nvim_open_win') || has('popupwin')
|
||||||
|
@ -133,15 +134,18 @@ function! s:NvimPrepareWindowContent(lines) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:NvimCreate(options) abort
|
function! s:NvimCreate(options) abort
|
||||||
let l:buffer = nvim_create_buf(v:false, v:false)
|
let l:popup_opts = extend({
|
||||||
let l:winid = nvim_open_win(l:buffer, v:false, {
|
|
||||||
\ 'relative': 'cursor',
|
\ 'relative': 'cursor',
|
||||||
\ 'row': 1,
|
\ 'row': 1,
|
||||||
\ 'col': 0,
|
\ 'col': 0,
|
||||||
\ 'width': 42,
|
\ 'width': 42,
|
||||||
\ 'height': 4,
|
\ 'height': 4,
|
||||||
\ 'style': 'minimal'
|
\ 'style': 'minimal'
|
||||||
\ })
|
\ }, s:GetPopupOpts())
|
||||||
|
|
||||||
|
let l:buffer = nvim_create_buf(v:false, v:false)
|
||||||
|
let l:winid = nvim_open_win(l:buffer, v:false, l:popup_opts)
|
||||||
|
|
||||||
call nvim_buf_set_option(l:buffer, 'buftype', 'acwrite')
|
call nvim_buf_set_option(l:buffer, 'buftype', 'acwrite')
|
||||||
call nvim_buf_set_option(l:buffer, 'bufhidden', 'delete')
|
call nvim_buf_set_option(l:buffer, 'bufhidden', 'delete')
|
||||||
call nvim_buf_set_option(l:buffer, 'swapfile', v:false)
|
call nvim_buf_set_option(l:buffer, 'swapfile', v:false)
|
||||||
|
@ -151,7 +155,8 @@ function! s:NvimCreate(options) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:VimCreate(options) abort
|
function! s:VimCreate(options) abort
|
||||||
let l:popup_id = popup_create([], {
|
" default options
|
||||||
|
let l:popup_opts = extend({
|
||||||
\ 'line': 'cursor+1',
|
\ 'line': 'cursor+1',
|
||||||
\ 'col': 'cursor',
|
\ 'col': 'cursor',
|
||||||
\ 'drag': v:true,
|
\ 'drag': v:true,
|
||||||
|
@ -170,7 +175,9 @@ function! s:VimCreate(options) abort
|
||||||
\ get(g:ale_floating_window_border, 5, '+'),
|
\ get(g:ale_floating_window_border, 5, '+'),
|
||||||
\ ],
|
\ ],
|
||||||
\ 'moved': 'any',
|
\ 'moved': 'any',
|
||||||
\ })
|
\ }, s:GetPopupOpts())
|
||||||
|
|
||||||
|
let l:popup_id = popup_create([], l:popup_opts)
|
||||||
call setbufvar(winbufnr(l:popup_id), '&filetype', get(a:options, 'filetype', 'ale-preview'))
|
call setbufvar(winbufnr(l:popup_id), '&filetype', get(a:options, 'filetype', 'ale-preview'))
|
||||||
let w:preview = {'id': l:popup_id}
|
let w:preview = {'id': l:popup_id}
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -204,3 +211,21 @@ function! s:VimClose() abort
|
||||||
call popup_close(w:preview['id'])
|
call popup_close(w:preview['id'])
|
||||||
unlet w:preview
|
unlet w:preview
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" get either the results of a function callback or dictionary for popup overrides
|
||||||
|
function! s:GetPopupOpts() abort
|
||||||
|
if exists('g:ale_floating_preview_popup_opts')
|
||||||
|
let l:ref = g:ale_floating_preview_popup_opts
|
||||||
|
|
||||||
|
if type(l:ref) is# v:t_dict
|
||||||
|
return l:ref
|
||||||
|
elseif type(l:ref) is# v:t_string
|
||||||
|
try
|
||||||
|
return function(l:ref)()
|
||||||
|
catch /E700/
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
return {}
|
||||||
|
endfunction
|
||||||
|
|
|
@ -29,6 +29,8 @@ function! ale#handlers#deno#GetProjectRoot(buffer) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:possible_project_roots = [
|
let l:possible_project_roots = [
|
||||||
|
\ 'deno.json',
|
||||||
|
\ 'deno.jsonc',
|
||||||
\ 'tsconfig.json',
|
\ 'tsconfig.json',
|
||||||
\ '.git',
|
\ '.git',
|
||||||
\ bufname(a:buffer),
|
\ bufname(a:buffer),
|
||||||
|
|
|
@ -339,6 +339,10 @@ function! ale#hover#ShowTruncatedMessageAtCursor() abort
|
||||||
let l:buffer = bufnr('')
|
let l:buffer = bufnr('')
|
||||||
let l:pos = getpos('.')[0:2]
|
let l:pos = getpos('.')[0:2]
|
||||||
|
|
||||||
|
if !getbufvar(l:buffer, 'ale_enabled', 1)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
if l:pos != s:last_pos
|
if l:pos != s:last_pos
|
||||||
let s:last_pos = l:pos
|
let s:last_pos = l:pos
|
||||||
let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer)
|
let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer)
|
||||||
|
|
|
@ -141,6 +141,10 @@ function! s:HandleLSPErrorMessage(linter_name, response) abort
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
call ale#lsp_linter#AddErrorMessage(a:linter_name, l:message)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#lsp_linter#AddErrorMessage(linter_name, message) abort
|
||||||
" This global variable is set here so we don't load the debugging.vim file
|
" This global variable is set here so we don't load the debugging.vim file
|
||||||
" until someone uses :ALEInfo.
|
" until someone uses :ALEInfo.
|
||||||
let g:ale_lsp_error_messages = get(g:, 'ale_lsp_error_messages', {})
|
let g:ale_lsp_error_messages = get(g:, 'ale_lsp_error_messages', {})
|
||||||
|
@ -149,7 +153,7 @@ function! s:HandleLSPErrorMessage(linter_name, response) abort
|
||||||
let g:ale_lsp_error_messages[a:linter_name] = []
|
let g:ale_lsp_error_messages[a:linter_name] = []
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(g:ale_lsp_error_messages[a:linter_name], l:message)
|
call add(g:ale_lsp_error_messages[a:linter_name], a:message)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#lsp_linter#HandleLSPResponse(conn_id, response) abort
|
function! ale#lsp_linter#HandleLSPResponse(conn_id, response) abort
|
||||||
|
@ -430,6 +434,8 @@ function! ale#lsp_linter#StartLSP(buffer, linter, Callback) abort
|
||||||
if empty(l:root) && a:linter.lsp isnot# 'tsserver'
|
if empty(l:root) && a:linter.lsp isnot# 'tsserver'
|
||||||
" If there's no project root, then we can't check files with LSP,
|
" If there's no project root, then we can't check files with LSP,
|
||||||
" unless we are using tsserver, which doesn't use project roots.
|
" unless we are using tsserver, which doesn't use project roots.
|
||||||
|
call ale#lsp_linter#AddErrorMessage(a:linter.name, "Failed to find project root, language server wont't start.")
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ function! s:DisablePostamble() abort
|
||||||
call ale#highlight#UpdateHighlights()
|
call ale#highlight#UpdateHighlights()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:ale_virtualtext_cursor
|
if g:ale_virtualtext_cursor == 1
|
||||||
call ale#virtualtext#Clear()
|
call ale#virtualtext#Clear(bufnr(''))
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -8,52 +8,59 @@ let g:ale_virtualtext_delay = get(g:, 'ale_virtualtext_delay', 10)
|
||||||
let s:cursor_timer = -1
|
let s:cursor_timer = -1
|
||||||
let s:last_pos = [0, 0, 0]
|
let s:last_pos = [0, 0, 0]
|
||||||
let s:has_virt_text = 0
|
let s:has_virt_text = 0
|
||||||
|
let s:emulate_virt = 0
|
||||||
|
|
||||||
if has('nvim-0.3.2')
|
if has('nvim-0.3.2')
|
||||||
let s:ns_id = nvim_create_namespace('ale')
|
let s:ns_id = nvim_create_namespace('ale')
|
||||||
let s:has_virt_text = 1
|
let s:has_virt_text = 1
|
||||||
elseif has('textprop') && has('popupwin')
|
elseif has('textprop') && has('popupwin')
|
||||||
call prop_type_add('ale', {})
|
|
||||||
let s:last_popup = -1
|
|
||||||
let s:has_virt_text = 1
|
let s:has_virt_text = 1
|
||||||
|
let s:emulate_virt = !has('patch-9.0.0297')
|
||||||
|
let s:hl_list = []
|
||||||
|
|
||||||
|
if s:emulate_virt
|
||||||
|
call prop_type_add('ale', {})
|
||||||
|
let s:last_virt = -1
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! ale#virtualtext#Clear() abort
|
function! ale#virtualtext#Clear(buf) abort
|
||||||
if !s:has_virt_text
|
if !s:has_virt_text
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:buffer = bufnr('')
|
|
||||||
|
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
call nvim_buf_clear_highlight(l:buffer, s:ns_id, 0, -1)
|
call nvim_buf_clear_namespace(a:buf, s:ns_id, 0, -1)
|
||||||
else
|
else
|
||||||
if s:last_popup != -1
|
if s:emulate_virt && s:last_virt != -1
|
||||||
call prop_remove({'type': 'ale'})
|
call prop_remove({'type': 'ale'})
|
||||||
call popup_close(s:last_popup)
|
call popup_close(s:last_virt)
|
||||||
let s:last_popup = -1
|
let s:last_virt = -1
|
||||||
|
elseif !empty(s:hl_list)
|
||||||
|
call prop_remove({
|
||||||
|
\ 'types': s:hl_list,
|
||||||
|
\ 'all': 1,
|
||||||
|
\ 'bufnr': a:buf})
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#virtualtext#ShowMessage(message, hl_group) abort
|
function! ale#virtualtext#ShowMessage(message, hl_group, buf, line) abort
|
||||||
if !s:has_virt_text
|
if !s:has_virt_text || !bufexists(str2nr(a:buf))
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:line = line('.')
|
|
||||||
let l:buffer = bufnr('')
|
|
||||||
let l:prefix = get(g:, 'ale_virtualtext_prefix', '> ')
|
let l:prefix = get(g:, 'ale_virtualtext_prefix', '> ')
|
||||||
let l:msg = l:prefix.trim(substitute(a:message, '\n', ' ', 'g'))
|
let l:msg = l:prefix.trim(substitute(a:message, '\n', ' ', 'g'))
|
||||||
|
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
call nvim_buf_set_virtual_text(l:buffer, s:ns_id, l:line-1, [[l:msg, a:hl_group]], {})
|
call nvim_buf_set_virtual_text(a:buf, s:ns_id, a:line-1, [[l:msg, a:hl_group]], {})
|
||||||
else
|
elseif s:emulate_virt
|
||||||
let l:left_pad = col('$')
|
let l:left_pad = col('$')
|
||||||
call prop_add(l:line, l:left_pad, {
|
call prop_add(a:line, l:left_pad, {
|
||||||
\ 'type': 'ale',
|
\ 'type': 'ale',
|
||||||
\})
|
\})
|
||||||
let s:last_popup = popup_create(l:msg, {
|
let s:last_virt = popup_create(l:msg, {
|
||||||
\ 'line': -1,
|
\ 'line': -1,
|
||||||
\ 'padding': [0, 0, 0, 1],
|
\ 'padding': [0, 0, 0, 1],
|
||||||
\ 'mask': [[1, 1, 1, 1]],
|
\ 'mask': [[1, 1, 1, 1]],
|
||||||
|
@ -63,6 +70,19 @@ function! ale#virtualtext#ShowMessage(message, hl_group) abort
|
||||||
\ 'wrap': 0,
|
\ 'wrap': 0,
|
||||||
\ 'zindex': 2
|
\ 'zindex': 2
|
||||||
\})
|
\})
|
||||||
|
else
|
||||||
|
let type = prop_type_get(a:hl_group)
|
||||||
|
|
||||||
|
if type == {}
|
||||||
|
call add(s:hl_list, a:hl_group)
|
||||||
|
call prop_type_add(a:hl_group, {'highlight': a:hl_group})
|
||||||
|
endif
|
||||||
|
|
||||||
|
call prop_add(a:line, 0, {
|
||||||
|
\ 'type': a:hl_group,
|
||||||
|
\ 'text': ' ' . l:msg,
|
||||||
|
\ 'bufnr': a:buf
|
||||||
|
\})
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -73,8 +93,26 @@ function! s:StopCursorTimer() abort
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! ale#virtualtext#GetHlGroup(type, style) abort
|
||||||
|
if a:type is# 'E'
|
||||||
|
if a:style is# 'style'
|
||||||
|
return 'ALEVirtualTextStyleError'
|
||||||
|
else
|
||||||
|
return 'ALEVirtualTextError'
|
||||||
|
endif
|
||||||
|
elseif a:type is# 'W'
|
||||||
|
if a:style is# 'style'
|
||||||
|
return 'ALEVirtualTextStyleWarning'
|
||||||
|
else
|
||||||
|
return 'ALEVirtualTextWarning'
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
return 'ALEVirtualTextInfo'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! ale#virtualtext#ShowCursorWarning(...) abort
|
function! ale#virtualtext#ShowCursorWarning(...) abort
|
||||||
if !g:ale_virtualtext_cursor
|
if g:ale_virtualtext_cursor != 1
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -90,35 +128,21 @@ function! ale#virtualtext#ShowCursorWarning(...) abort
|
||||||
|
|
||||||
let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer)
|
let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer)
|
||||||
|
|
||||||
call ale#virtualtext#Clear()
|
call ale#virtualtext#Clear(l:buffer)
|
||||||
|
|
||||||
if !empty(l:loc)
|
if !empty(l:loc)
|
||||||
let l:msg = l:loc.text
|
let l:msg = l:loc.text
|
||||||
let l:hl_group = 'ALEVirtualTextInfo'
|
|
||||||
let l:type = get(l:loc, 'type', 'E')
|
let l:type = get(l:loc, 'type', 'E')
|
||||||
|
let l:style = get(l:loc, 'sub_type', '')
|
||||||
if l:type is# 'E'
|
let l:hl_group = ale#virtualtext#GetHlGroup(l:type, l:style)
|
||||||
if get(l:loc, 'sub_type', '') is# 'style'
|
call ale#virtualtext#ShowMessage(l:msg, l:hl_group, l:buffer, line('.'))
|
||||||
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
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#virtualtext#ShowCursorWarningWithDelay() abort
|
function! ale#virtualtext#ShowCursorWarningWithDelay() abort
|
||||||
let l:buffer = bufnr('')
|
let l:buffer = bufnr('')
|
||||||
|
|
||||||
if !g:ale_virtualtext_cursor
|
if g:ale_virtualtext_cursor != 1
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -145,3 +169,19 @@ function! ale#virtualtext#ShowCursorWarningWithDelay() abort
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! ale#virtualtext#SetTexts(buf, loclist) abort
|
||||||
|
if !has('nvim') && s:emulate_virt
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call ale#virtualtext#Clear(a:buf)
|
||||||
|
|
||||||
|
for l in a:loclist
|
||||||
|
if l['bufnr'] != a:buf
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let hl = ale#virtualtext#GetHlGroup(l['type'], get(l, 'sub_type', ''))
|
||||||
|
call ale#virtualtext#ShowMessage(l['text'], hl, a:buf, l['lnum'])
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
24
sources_non_forked/ale/doc/ale-bicep.txt
Normal file
24
sources_non_forked/ale/doc/ale-bicep.txt
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE Bicep Integration *ale-bicep-options*
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
bicep *ale-bicep-bicep*
|
||||||
|
|
||||||
|
g:ale_bicep_bicep_executable *g:ale_bicep_bicep_executable*
|
||||||
|
*b:ale_bicep_bicep_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'bicep'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to bicep.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_bicep_bicep_options *g:ale_bicep_bicep_options*
|
||||||
|
*b:ale_bicep_bicep_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'build --outfile /dev/null'`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to bicep.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -219,5 +219,25 @@ g:ale_ruby_standardrb_options *g:ale_ruby_standardrb_options*
|
||||||
This variable can be changed to modify flags given to standardrb.
|
This variable can be changed to modify flags given to standardrb.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
syntax_tree *ale-ruby-syntax_tree*
|
||||||
|
|
||||||
|
g:ale_ruby_syntax_tree_executable *g:ale_ruby_syntax_tree_executable*
|
||||||
|
*b:ale_ruby_syntax_tree_executable*
|
||||||
|
Type: String
|
||||||
|
Default: `'stree'`
|
||||||
|
|
||||||
|
Override the invoked SyntaxTree binary. Set this to `'bundle'` to invoke
|
||||||
|
`'bundle` `exec` stree'.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_ruby_syntax_tree_options *g:ale_ruby_syntax_tree_options*
|
||||||
|
*b:ale_ruby_syntax_tree_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be changed to modify flags given to SyntaxTree.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
|
@ -52,6 +52,8 @@ Notes:
|
||||||
* `buildifier`
|
* `buildifier`
|
||||||
* BibTeX
|
* BibTeX
|
||||||
* `bibclean`
|
* `bibclean`
|
||||||
|
* Bicep
|
||||||
|
* `bicep`
|
||||||
* BitBake
|
* BitBake
|
||||||
* `oelint-adv`
|
* `oelint-adv`
|
||||||
* Bourne Shell
|
* Bourne Shell
|
||||||
|
@ -529,6 +531,7 @@ Notes:
|
||||||
* `solargraph`
|
* `solargraph`
|
||||||
* `sorbet`
|
* `sorbet`
|
||||||
* `standardrb`
|
* `standardrb`
|
||||||
|
* `syntax_tree`
|
||||||
* Rust
|
* Rust
|
||||||
* `cargo`!!
|
* `cargo`!!
|
||||||
* `cspell`
|
* `cspell`
|
||||||
|
@ -664,6 +667,7 @@ Notes:
|
||||||
* YAML
|
* YAML
|
||||||
* `actionlint`
|
* `actionlint`
|
||||||
* `circleci`!!
|
* `circleci`!!
|
||||||
|
* `gitlablint`
|
||||||
* `prettier`
|
* `prettier`
|
||||||
* `spectral`
|
* `spectral`
|
||||||
* `swaglint`
|
* `swaglint`
|
||||||
|
|
|
@ -42,7 +42,7 @@ volar *ale-vue-volar*
|
||||||
g:ale_vue_volar_executable *g:ale_vue_volar_executable*
|
g:ale_vue_volar_executable *g:ale_vue_volar_executable*
|
||||||
*b:ale_vue_volar_executable*
|
*b:ale_vue_volar_executable*
|
||||||
Type: |String|
|
Type: |String|
|
||||||
Default: `'volar-server'`
|
Default: `'vue-language-server'`
|
||||||
|
|
||||||
See |ale-integrations-local-executables|
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
|
|
@ -280,5 +280,52 @@ g:ale_yaml_yamllint_options *g:ale_yaml_yamllint_options*
|
||||||
This variable can be set to pass additional options to yamllint.
|
This variable can be set to pass additional options to yamllint.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
gitlablint *ale-yaml-gitlablint*
|
||||||
|
|
||||||
|
Website: https://github.com/elijah-roberts/gitlab-lint
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install yamllint in your a virtualenv directory, locally, or globally: >
|
||||||
|
|
||||||
|
pip3 install gitlab_lint # After activating virtualenv
|
||||||
|
pip3 install --user gitlab_lint # Install to ~/.local/bin
|
||||||
|
sudo pip3 install gitlab_lint # Install globally
|
||||||
|
|
||||||
|
See |g:ale_virtualenv_dir_names| for configuring how ALE searches for
|
||||||
|
virtualenv directories.
|
||||||
|
|
||||||
|
Is recommended to use |g:ale_pattern_options| to enable this linter so it only
|
||||||
|
applies to 'gitlab-ci.yml' files and not all yaml files:
|
||||||
|
>
|
||||||
|
let g:ale_pattern_options = {
|
||||||
|
\ '.gitlab-ci\.yml$': {
|
||||||
|
\ 'ale_linters': ['gitlablint'],
|
||||||
|
\ },
|
||||||
|
\}
|
||||||
|
<
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_yaml_gitlablint_executable *g:ale_yaml_gitlablint_executable*
|
||||||
|
*b:ale_yaml_gitlablint_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'gll'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to gll.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_yaml_gitlablint_options *g:ale_yaml_gitlablint_options*
|
||||||
|
*b:ale_yaml_gitlablint_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to gll.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
|
@ -1234,6 +1234,29 @@ g:ale_floating_preview *g:ale_floating_preview*
|
||||||
|g:ale_detail_to_floating_preview| to `1`.
|
|g:ale_detail_to_floating_preview| to `1`.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_floating_preview_popup_opts *g:ale_floating_preview_popup_opts*
|
||||||
|
|
||||||
|
Type: |String| or |Dictionary|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
Either a dictionary of options or the string name of a function that returns a
|
||||||
|
dictionary of options. This will be used as an argument to |popup_create| for
|
||||||
|
Vim users or |nvim_open_win| for NeoVim users. Note that in either case, the
|
||||||
|
resulting dictionary is merged with ALE defaults rather than expliciting overriding
|
||||||
|
them. This only takes effect if |g:ale_floating_preview| is enabled.
|
||||||
|
|
||||||
|
NOTE: for Vim users see |popup_create-arguments|, for NeoVim users see
|
||||||
|
|nvim_open_win| for argument details
|
||||||
|
|
||||||
|
For example, to enhance popups with a title: >
|
||||||
|
|
||||||
|
function! CustomOpts() abort {
|
||||||
|
let [l:info, l:loc] = ale#util#FindItemAtCursor(bufnr(''))
|
||||||
|
return {'title': ' ALE: ' . (l:loc.linter_name) . ' '}
|
||||||
|
endfunction
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
g:ale_floating_window_border *g:ale_floating_window_border*
|
g:ale_floating_window_border *g:ale_floating_window_border*
|
||||||
|
|
||||||
Type: |List|
|
Type: |List|
|
||||||
|
@ -2274,6 +2297,9 @@ g:ale_virtualtext_cursor *g:ale_virtualtext_cursor*
|
||||||
column nearest to the cursor when the cursor is resting on a line which
|
column nearest to the cursor when the cursor is resting on a line which
|
||||||
contains a warning or error. This option can be set to `0` to disable this
|
contains a warning or error. This option can be set to `0` to disable this
|
||||||
behavior.
|
behavior.
|
||||||
|
When this option is set to `2`, then all warnings will be shown for the
|
||||||
|
whole buffer, regardless of if the cursor is currently positioned in that
|
||||||
|
line.
|
||||||
|
|
||||||
Messages are only displayed after a short delay. See |g:ale_virtualtext_delay|.
|
Messages are only displayed after a short delay. See |g:ale_virtualtext_delay|.
|
||||||
|
|
||||||
|
@ -2761,6 +2787,8 @@ documented in additional help files.
|
||||||
buildifier............................|ale-bazel-buildifier|
|
buildifier............................|ale-bazel-buildifier|
|
||||||
bib.....................................|ale-bib-options|
|
bib.....................................|ale-bib-options|
|
||||||
bibclean..............................|ale-bib-bibclean|
|
bibclean..............................|ale-bib-bibclean|
|
||||||
|
bicep...................................|ale-bicep-options|
|
||||||
|
bicep.................................|ale-bicep-bicep|
|
||||||
bitbake.................................|ale-bitbake-options|
|
bitbake.................................|ale-bitbake-options|
|
||||||
oelint-adv............................|ale-bitbake-oelint_adv|
|
oelint-adv............................|ale-bitbake-oelint_adv|
|
||||||
c.......................................|ale-c-options|
|
c.......................................|ale-c-options|
|
||||||
|
@ -3167,6 +3195,7 @@ documented in additional help files.
|
||||||
solargraph............................|ale-ruby-solargraph|
|
solargraph............................|ale-ruby-solargraph|
|
||||||
sorbet................................|ale-ruby-sorbet|
|
sorbet................................|ale-ruby-sorbet|
|
||||||
standardrb............................|ale-ruby-standardrb|
|
standardrb............................|ale-ruby-standardrb|
|
||||||
|
syntax_tree...........................|ale-ruby-syntax_tree|
|
||||||
rust....................................|ale-rust-options|
|
rust....................................|ale-rust-options|
|
||||||
analyzer..............................|ale-rust-analyzer|
|
analyzer..............................|ale-rust-analyzer|
|
||||||
cargo.................................|ale-rust-cargo|
|
cargo.................................|ale-rust-cargo|
|
||||||
|
@ -3302,6 +3331,7 @@ documented in additional help files.
|
||||||
yaml-language-server..................|ale-yaml-language-server|
|
yaml-language-server..................|ale-yaml-language-server|
|
||||||
yamlfix...............................|ale-yaml-yamlfix|
|
yamlfix...............................|ale-yaml-yamlfix|
|
||||||
yamllint..............................|ale-yaml-yamllint|
|
yamllint..............................|ale-yaml-yamllint|
|
||||||
|
gitlablint............................|ale-yaml-gitlablint|
|
||||||
yang....................................|ale-yang-options|
|
yang....................................|ale-yang-options|
|
||||||
yang-lsp..............................|ale-yang-lsp|
|
yang-lsp..............................|ale-yang-lsp|
|
||||||
zeek....................................|ale-zeek-options|
|
zeek....................................|ale-zeek-options|
|
||||||
|
|
|
@ -322,7 +322,7 @@ nnoremap <silent> <Plug>(ale_go_to_definition_in_vsplit) :ALEGoToDefinition -vsp
|
||||||
nnoremap <silent> <Plug>(ale_go_to_type_definition) :ALEGoToTypeDefinition<Return>
|
nnoremap <silent> <Plug>(ale_go_to_type_definition) :ALEGoToTypeDefinition<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_tab) :ALEGoToTypeDefinition -tab<Return>
|
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_tab) :ALEGoToTypeDefinition -tab<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_split) :ALEGoToTypeDefinition -split<Return>
|
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_split) :ALEGoToTypeDefinition -split<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_vsplit) :ALEGoToTypeDefinitionIn -vsplit<Return>
|
nnoremap <silent> <Plug>(ale_go_to_type_definition_in_vsplit) :ALEGoToTypeDefinition -vsplit<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_implementation_in_tab) :ALEGoToImplementation -tab<Return>
|
nnoremap <silent> <Plug>(ale_go_to_implementation_in_tab) :ALEGoToImplementation -tab<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_implementation_in_split) :ALEGoToImplementation -split<Return>
|
nnoremap <silent> <Plug>(ale_go_to_implementation_in_split) :ALEGoToImplementation -split<Return>
|
||||||
nnoremap <silent> <Plug>(ale_go_to_implementation_in_vsplit) :ALEGoToImplementation -vsplit<Return>
|
nnoremap <silent> <Plug>(ale_go_to_implementation_in_vsplit) :ALEGoToImplementation -vsplit<Return>
|
||||||
|
|
|
@ -61,6 +61,8 @@ formatting.
|
||||||
* [buildifier](https://github.com/bazelbuild/buildtools)
|
* [buildifier](https://github.com/bazelbuild/buildtools)
|
||||||
* BibTeX
|
* BibTeX
|
||||||
* [bibclean](http://ftp.math.utah.edu/pub/bibclean/)
|
* [bibclean](http://ftp.math.utah.edu/pub/bibclean/)
|
||||||
|
* Bicep
|
||||||
|
* [bicep](https://github.com/Azure/bicep)
|
||||||
* BitBake
|
* BitBake
|
||||||
* [oelint-adv](https://github.com/priv-kweihmann/oelint-adv)
|
* [oelint-adv](https://github.com/priv-kweihmann/oelint-adv)
|
||||||
* Bourne Shell
|
* Bourne Shell
|
||||||
|
@ -538,6 +540,7 @@ formatting.
|
||||||
* [solargraph](https://solargraph.org)
|
* [solargraph](https://solargraph.org)
|
||||||
* [sorbet](https://github.com/sorbet/sorbet)
|
* [sorbet](https://github.com/sorbet/sorbet)
|
||||||
* [standardrb](https://github.com/testdouble/standard)
|
* [standardrb](https://github.com/testdouble/standard)
|
||||||
|
* [syntax_tree](https://github.com/ruby-syntax-tree/syntax_tree)
|
||||||
* Rust
|
* Rust
|
||||||
* [cargo](https://github.com/rust-lang/cargo) :floppy_disk: (see `:help ale-integration-rust` for configuration instructions)
|
* [cargo](https://github.com/rust-lang/cargo) :floppy_disk: (see `:help ale-integration-rust` for configuration instructions)
|
||||||
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
|
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
|
||||||
|
@ -673,6 +676,7 @@ formatting.
|
||||||
* YAML
|
* YAML
|
||||||
* [actionlint](https://github.com/rhysd/actionlint) :warning:
|
* [actionlint](https://github.com/rhysd/actionlint) :warning:
|
||||||
* [circleci](https://circleci.com/docs/2.0/local-cli) :floppy_disk: :warning:
|
* [circleci](https://circleci.com/docs/2.0/local-cli) :floppy_disk: :warning:
|
||||||
|
* [gitlablint](https://github.com/elijah-roberts/gitlab-lint)
|
||||||
* [prettier](https://github.com/prettier/prettier)
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
* [spectral](https://github.com/stoplightio/spectral)
|
* [spectral](https://github.com/stoplightio/spectral)
|
||||||
* [swaglint](https://github.com/byCedric/swaglint) :warning:
|
* [swaglint](https://github.com/byCedric/swaglint) :warning:
|
||||||
|
|
1
sources_non_forked/jedi-vim/.github/FUNDING.yml
vendored
Normal file
1
sources_non_forked/jedi-vim/.github/FUNDING.yml
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
github: [davidhalter]
|
44
sources_non_forked/jedi-vim/.github/ISSUE_TEMPLATE.md
vendored
Normal file
44
sources_non_forked/jedi-vim/.github/ISSUE_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
### Issue
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please describe the issue here.
|
||||||
|
|
||||||
|
If you are not using jedi-vim from Git (but e.g. from a distribution's package,
|
||||||
|
please try it with jedi-vim's Git master, too).
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Include if relevant.
|
||||||
|
|
||||||
|
Please provide steps to reproduce it here, preferably based on a minimal Vim
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
You can use the following template (save it as `minimal.vimrc` in the directory
|
||||||
|
where jedi-vim is installed, `cd` into that directory, and run Vim with
|
||||||
|
`vim -u minimal.vimrc`):
|
||||||
|
|
||||||
|
```
|
||||||
|
set nocompatible
|
||||||
|
|
||||||
|
let script_dir = fnamemodify(expand('<sfile>'), ':h')
|
||||||
|
let &runtimepath .= ','.script_dir.','.script_dir.'/after'
|
||||||
|
|
||||||
|
" Put your config changes here.
|
||||||
|
" let g:jedi#show_call_signatures=1
|
||||||
|
|
||||||
|
syntax on
|
||||||
|
filetype plugin indent on
|
||||||
|
```
|
||||||
|
|
||||||
|
Please provide the `minimal.vimrc` you have used here, too.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Output of “:verbose JediDebugInfo”
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please execute `:redir @+> | silent verb JediDebugInfo | redir END` in a
|
||||||
|
Python buffer to copy debug information into your clipboard.
|
||||||
|
Then paste it here.
|
||||||
|
-->
|
63
sources_non_forked/jedi-vim/.github/workflows/ci.yml
vendored
Normal file
63
sources_non_forked/jedi-vim/.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
name: ci
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup
|
||||||
|
run: |
|
||||||
|
sudo pip install pytest
|
||||||
|
vim --version
|
||||||
|
|
||||||
|
#- name: Setup tmate session
|
||||||
|
# uses: mxschmitt/action-tmate@v3
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: 'make test'
|
||||||
|
|
||||||
|
code-quality:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
vim --version
|
||||||
|
make check
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo add-apt-repository ppa:neovim-ppa/stable -y
|
||||||
|
sudo apt-get update -q
|
||||||
|
sudo apt-get install neovim -y
|
||||||
|
|
||||||
|
sudo pip install pynvim pytest-cov
|
||||||
|
sudo pip list
|
||||||
|
nvim --version
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
make --keep-going test_coverage BUILD_VIRTUAL_ENV=$VIRTUAL_ENV
|
||||||
|
|
||||||
|
- name: Upload coverage data
|
||||||
|
run: |
|
||||||
|
coverage xml
|
||||||
|
bash <(curl -s https://codecov.io/bash) -X fix -f coverage.xml -F py${TRAVIS_PYTHON_VERSION//./}
|
8
sources_non_forked/jedi-vim/.gitignore
vendored
Normal file
8
sources_non_forked/jedi-vim/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
*~
|
||||||
|
*.sw?
|
||||||
|
*.py[cod]
|
||||||
|
.ropeproject
|
||||||
|
doc/tags
|
||||||
|
.pytest-cache
|
||||||
|
build
|
||||||
|
.coverage*
|
6
sources_non_forked/jedi-vim/.gitmodules
vendored
Normal file
6
sources_non_forked/jedi-vim/.gitmodules
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[submodule "jedi"]
|
||||||
|
path = pythonx/jedi
|
||||||
|
url = https://github.com/davidhalter/jedi.git
|
||||||
|
[submodule "pythonx/parso"]
|
||||||
|
path = pythonx/parso
|
||||||
|
url = https://github.com/davidhalter/parso.git
|
31
sources_non_forked/jedi-vim/.travis.yml
Normal file
31
sources_non_forked/jedi-vim/.travis.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
dist: bionic
|
||||||
|
language: python
|
||||||
|
python: 3.8
|
||||||
|
env:
|
||||||
|
- ENV=test
|
||||||
|
- ENV=check
|
||||||
|
- ENV=test_coverage
|
||||||
|
install:
|
||||||
|
- |
|
||||||
|
if [ "$ENV" = "test" ]; then
|
||||||
|
pip install pytest
|
||||||
|
elif [ "$ENV" = "test_coverage" ]; then
|
||||||
|
sudo add-apt-repository ppa:neovim-ppa/stable -y
|
||||||
|
sudo apt-get update -q
|
||||||
|
sudo apt-get install neovim -y
|
||||||
|
|
||||||
|
pip install pynvim pytest-cov
|
||||||
|
pip list
|
||||||
|
nvim --version
|
||||||
|
else
|
||||||
|
vim --version
|
||||||
|
fi
|
||||||
|
script:
|
||||||
|
- make --keep-going "$ENV" BUILD_VIRTUAL_ENV=$VIRTUAL_ENV
|
||||||
|
|
||||||
|
after_script:
|
||||||
|
- |
|
||||||
|
if [ "$ENV" = "test_coverage" ]; then
|
||||||
|
coverage xml
|
||||||
|
travis_retry bash <(curl -s https://codecov.io/bash) -X fix -f coverage.xml -F py${TRAVIS_PYTHON_VERSION//./}
|
||||||
|
fi
|
61
sources_non_forked/jedi-vim/AUTHORS.txt
Normal file
61
sources_non_forked/jedi-vim/AUTHORS.txt
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
Main Authors
|
||||||
|
============
|
||||||
|
|
||||||
|
David Halter (@davidhalter) <davidhalter88@gmail.com>
|
||||||
|
|
||||||
|
|
||||||
|
Contributors (in order of contributions)
|
||||||
|
========================================
|
||||||
|
|
||||||
|
Patrice Peterson (@runiq)
|
||||||
|
tek (@tek)
|
||||||
|
heavenshell (@heavenshell) <heavenshell.jp@gmail.com>
|
||||||
|
Danilo Bargen (@dbrgn) <gezuru@gmail.com>
|
||||||
|
mattn (@mattn) <mattn.jp@gmail.com>
|
||||||
|
Enrico Batista da Luz (@ricobl) <rico.bl@gmail.com>
|
||||||
|
coot (@coot) <mszamot@gmail.com>
|
||||||
|
Artur Dryomov (@ming13) <artur.dryomov@gmail.com>
|
||||||
|
andviro (@andviro)
|
||||||
|
Jean-Louis Fuchs (@ganwell) <ganwell@fangorn.ch>
|
||||||
|
Mathieu Comandon (@strycore) <strider@strycore.com>
|
||||||
|
Nick Hurley (@todesschaf) <hurley@todesschaf.org>
|
||||||
|
gpoulin (@gpoulin)
|
||||||
|
Akinori Hattori (@hattya)
|
||||||
|
Luper Rouch (@flupke)
|
||||||
|
Matthew Moses (@mlmoses) <moses.matthewl@gmail.com>
|
||||||
|
Tyler Wymer (@twymer)
|
||||||
|
Artem Nezvigin (@artnez)
|
||||||
|
rogererens (@rogererens)
|
||||||
|
Emily Strickland (@emilyst) <mail@emily.st>
|
||||||
|
Tin Tvrtković (@Tinche) <tinchester@gmail.com>
|
||||||
|
Zekeriya Koc (@zekzekus) <zekzekus@gmail.com>
|
||||||
|
ethinx (@ethinx) <eth2net@gmail.com>
|
||||||
|
Wouter Overmeire (@lodagro) <lodagro@gmail.com>
|
||||||
|
Stephen J. Fuhry (@fuhrysteve) <fuhrysteve@gmail.com>
|
||||||
|
Sheng Yun (@ShengYun) <uewing@gmail.com>
|
||||||
|
Yann Thomas-Gérard (@inside) <inside@gmail.com>
|
||||||
|
Colin Su (@littleq0903) <littleq0903@gmail.com>
|
||||||
|
Arthur Jaron (@eyetracker)
|
||||||
|
Justin M. Keyes (@justinmk)
|
||||||
|
nagev (@np1)
|
||||||
|
Chris Lasher (@gotgenes) <chris.lasher@gmail.com>
|
||||||
|
Doan Thanh Nam (@tndoan)
|
||||||
|
Markus Koller (@toupeira)
|
||||||
|
Justin Cheevers @justincheevers
|
||||||
|
Talha Ahmed (@talha81) <talha.ahmed@gmail.com>
|
||||||
|
Matthew Tylee Atkinson (@matatk)
|
||||||
|
Pedro Ferrari (@petobens)
|
||||||
|
Daniel Hahler (@blueyed)
|
||||||
|
Dave Honneffer (@pearofducks)
|
||||||
|
Bagrat Aznauryan (@n9code)
|
||||||
|
Tomoyuki Kashiro (@kashiro)
|
||||||
|
Tommy Allen (@tweekmonster)
|
||||||
|
Mingliang (@Aulddays)
|
||||||
|
Brian Mego (@brianmego)
|
||||||
|
Stevan Milic (@stevanmilic) <stevan.milic@yahoo.com>
|
||||||
|
Konstantin Glukhov (@Konstantin-Glukhov)
|
||||||
|
Seungchan An (@SeungChan92) <dev.issea1015@gmail.com>
|
||||||
|
Thomas Blauth (@ThomasBlauth) <thomas.blauth@protonmail.com>
|
||||||
|
James Cherti (@jamescherti)
|
||||||
|
|
||||||
|
@something are github user names.
|
12
sources_non_forked/jedi-vim/CONTRIBUTING.md
Normal file
12
sources_non_forked/jedi-vim/CONTRIBUTING.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# We <3 pull requests!
|
||||||
|
|
||||||
|
1. Fork the Repo on github.
|
||||||
|
2. Add yourself to AUTHORS.txt
|
||||||
|
3. Add a test if possible.
|
||||||
|
4. Push to your fork and submit a pull request.
|
||||||
|
|
||||||
|
Please use PEP8 as a Python code style. For VIM, just try to style your
|
||||||
|
code similar to the jedi-vim code that is already there.
|
||||||
|
|
||||||
|
# Bug reports
|
||||||
|
Please include the output of `:version` and `:JediDebugInfo`.
|
21
sources_non_forked/jedi-vim/LICENSE.txt
Normal file
21
sources_non_forked/jedi-vim/LICENSE.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) <2013> <David Halter and others, see AUTHORS.txt>
|
||||||
|
|
||||||
|
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.
|
35
sources_non_forked/jedi-vim/Makefile
Normal file
35
sources_non_forked/jedi-vim/Makefile
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
BUILD_VIRTUAL_ENV:=build/venv
|
||||||
|
|
||||||
|
test:
|
||||||
|
pytest
|
||||||
|
|
||||||
|
test_nvim:
|
||||||
|
VSPEC_VIM=nvim pytest
|
||||||
|
|
||||||
|
test_coverage: export PYTEST_ADDOPTS:=--cov pythonx --cov test --cov-report=term-missing:skip-covered
|
||||||
|
test_coverage: test_nvim
|
||||||
|
|
||||||
|
$(dir $(BUILD_VIRTUAL_ENV)):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(BUILD_VIRTUAL_ENV): | $(dir $(BUILD_VIRTUAL_ENV))
|
||||||
|
python -m venv $@
|
||||||
|
|
||||||
|
$(BUILD_VIRTUAL_ENV)/bin/vint: | $(BUILD_VIRTUAL_ENV)
|
||||||
|
$|/bin/python -m pip install vim-vint==0.3.21
|
||||||
|
|
||||||
|
$(BUILD_VIRTUAL_ENV)/bin/flake8: | $(BUILD_VIRTUAL_ENV)
|
||||||
|
$|/bin/python -m pip install -q flake8==3.7.8
|
||||||
|
|
||||||
|
vint: $(BUILD_VIRTUAL_ENV)/bin/vint
|
||||||
|
$(BUILD_VIRTUAL_ENV)/bin/vint after autoload ftplugin plugin
|
||||||
|
|
||||||
|
flake8: $(BUILD_VIRTUAL_ENV)/bin/flake8
|
||||||
|
$(BUILD_VIRTUAL_ENV)/bin/flake8 pythonx/jedi_*.py
|
||||||
|
|
||||||
|
check: vint flake8
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf build
|
||||||
|
|
||||||
|
.PHONY: test check clean vint flake8
|
293
sources_non_forked/jedi-vim/README.rst
Normal file
293
sources_non_forked/jedi-vim/README.rst
Normal file
|
@ -0,0 +1,293 @@
|
||||||
|
.. image:: https://github.com/davidhalter/jedi-vim/blob/master/doc/logotype-a.svg
|
||||||
|
|
||||||
|
#################################################
|
||||||
|
jedi-vim - awesome Python autocompletion with VIM
|
||||||
|
#################################################
|
||||||
|
|
||||||
|
.. image:: https://travis-ci.org/davidhalter/jedi-vim.svg?branch=master
|
||||||
|
:target: https://travis-ci.org/davidhalter/jedi-vim
|
||||||
|
:alt: Travis-CI build status
|
||||||
|
|
||||||
|
jedi-vim is a VIM binding to the autocompletion library
|
||||||
|
`Jedi <http://github.com/davidhalter/jedi>`_.
|
||||||
|
|
||||||
|
Here are some pictures:
|
||||||
|
|
||||||
|
.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_complete.png
|
||||||
|
|
||||||
|
Completion for almost anything (Ctrl+Space).
|
||||||
|
|
||||||
|
.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_function.png
|
||||||
|
|
||||||
|
Display of function/class bodies, docstrings.
|
||||||
|
|
||||||
|
.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_pydoc.png
|
||||||
|
|
||||||
|
Documentation (Pydoc) support (with highlighting, Shift+k).
|
||||||
|
|
||||||
|
There is also support for goto and renaming.
|
||||||
|
|
||||||
|
|
||||||
|
Get the latest from `github <http://github.com/davidhalter/jedi-vim>`_.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
|
||||||
|
Documentation is available in your vim: ``:help jedi-vim``. You can also look
|
||||||
|
it up `on github <http://github.com/davidhalter/jedi-vim/blob/master/doc/jedi-vim.txt>`_.
|
||||||
|
|
||||||
|
You can read the Jedi library documentation `here <http://jedi.readthedocs.io/en/latest/>`_.
|
||||||
|
|
||||||
|
If you want to report issues, just use the github issue tracker. In case of
|
||||||
|
questions about the software, please use `stackoverflow
|
||||||
|
<https://stackoverflow.com/questions/tagged/jedi-vim>`_ and tag your question with ``jedi-vim``.
|
||||||
|
|
||||||
|
|
||||||
|
Contributing
|
||||||
|
============
|
||||||
|
|
||||||
|
We love Pull Requests! Read the instructions in ``CONTRIBUTING.md``.
|
||||||
|
|
||||||
|
|
||||||
|
Features
|
||||||
|
========
|
||||||
|
|
||||||
|
The Jedi library understands most of Python's core features. From decorators to
|
||||||
|
generators, there is broad support.
|
||||||
|
|
||||||
|
Apart from that, jedi-vim supports the following commands
|
||||||
|
|
||||||
|
- Completion ``<C-Space>``
|
||||||
|
- Goto assignment ``<leader>g`` (typical goto function)
|
||||||
|
- Goto definition ``<leader>d`` (follow identifier as far as possible,
|
||||||
|
includes imports and statements)
|
||||||
|
- Goto (typing) stub ``<leader>s``
|
||||||
|
- Show Documentation/Pydoc ``K`` (shows a popup with assignments)
|
||||||
|
- Renaming ``<leader>r``
|
||||||
|
- Usages ``<leader>n`` (shows all the usages of a name)
|
||||||
|
- Open module, e.g. ``:Pyimport os`` (opens the ``os`` module)
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
You need a VIM version that was compiled with Python 2.7 or later
|
||||||
|
(``+python`` or ``+python3``). You can check this from within VIM using
|
||||||
|
``:python3 import sys; print(sys.version)`` (use ``:python`` for Python 2).
|
||||||
|
|
||||||
|
Manual installation
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
You might want to use `pathogen <https://github.com/tpope/vim-pathogen>`_ or
|
||||||
|
`Vundle <https://github.com/gmarik/vundle>`_ to install jedi-vim.
|
||||||
|
|
||||||
|
The first thing you need after that is an up-to-date version of Jedi. Install
|
||||||
|
``git submodule update --init --recursive`` in your jedi-vim repository.
|
||||||
|
|
||||||
|
Example installation command using Pathogen:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
git clone --recursive https://github.com/davidhalter/jedi-vim.git ~/.vim/bundle/jedi-vim
|
||||||
|
|
||||||
|
Example installation using Vundle:
|
||||||
|
|
||||||
|
Add the following line in your `~/.vimrc`
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
Plugin 'davidhalter/jedi-vim'
|
||||||
|
|
||||||
|
For installing Jedi, ``pip install jedi`` will also work, but you might run
|
||||||
|
into issues when working in virtual environments. Please use git submodules.
|
||||||
|
|
||||||
|
|
||||||
|
Installation with your distribution
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
On Arch Linux, you can also install jedi-vim from official repositories as
|
||||||
|
`vim-jedi <https://www.archlinux.org/packages/community/any/vim-jedi/>`__.
|
||||||
|
It is also available on
|
||||||
|
`Debian (≥8) <https://packages.debian.org/vim-python-jedi>`__ and
|
||||||
|
`Ubuntu (≥14.04) <http://packages.ubuntu.com/vim-python-jedi>`__ as
|
||||||
|
vim-python-jedi.
|
||||||
|
On Fedora Linux, it is available as
|
||||||
|
`vim-jedi <https://apps.fedoraproject.org/packages/vim-jedi>`__.
|
||||||
|
|
||||||
|
Please note that this version might be quite old compared to using jedi-vim
|
||||||
|
from Git.
|
||||||
|
|
||||||
|
Caveats
|
||||||
|
-------
|
||||||
|
|
||||||
|
Note that the `python-mode <https://github.com/klen/python-mode>`_ VIM plugin seems
|
||||||
|
to conflict with jedi-vim, therefore you should disable it before enabling
|
||||||
|
jedi-vim.
|
||||||
|
|
||||||
|
To enjoy the full features of jedi-vim, you should have VIM >= 7.3, compiled with
|
||||||
|
``+conceal`` (which is not the case on some platforms, including OS X). If your VIM
|
||||||
|
does not meet these requirements, the parameter recommendation list may not appear
|
||||||
|
when you type an open bracket after a function name. Please read
|
||||||
|
`the documentation <http://github.com/davidhalter/jedi-vim/blob/master/doc/jedi-vim.txt>`_
|
||||||
|
for details.
|
||||||
|
|
||||||
|
|
||||||
|
Settings
|
||||||
|
========
|
||||||
|
|
||||||
|
Jedi is by default automatically initialized. If you don't want that I suggest
|
||||||
|
you disable the auto-initialization in your ``.vimrc``:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#auto_initialization = 0
|
||||||
|
|
||||||
|
There are also some VIM options (like ``completeopt`` and key defaults) which
|
||||||
|
are automatically initialized, but you can skip this:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#auto_vim_configuration = 0
|
||||||
|
|
||||||
|
|
||||||
|
You can make jedi-vim use tabs when going to a definition etc:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#use_tabs_not_buffers = 1
|
||||||
|
|
||||||
|
If you are a person who likes to use VIM-splits, you might want to put this in your ``.vimrc``:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#use_splits_not_buffers = "left"
|
||||||
|
|
||||||
|
This options could be "left", "right", "top", "bottom" or "winwidth". It will decide the direction where the split open.
|
||||||
|
|
||||||
|
Jedi automatically starts the completion, if you type a dot, e.g. ``str.``, if
|
||||||
|
you don't want this:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#popup_on_dot = 0
|
||||||
|
|
||||||
|
Jedi selects the first line of the completion menu: for a better typing-flow
|
||||||
|
and usually saves one keypress.
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#popup_select_first = 0
|
||||||
|
|
||||||
|
Jedi displays function call signatures in insert mode in real-time, highlighting
|
||||||
|
the current argument. The call signatures can be displayed as a pop-up in the
|
||||||
|
buffer (set to 1 by default (with the conceal feature), 2 otherwise),
|
||||||
|
which has the advantage of being easier to refer to (but is a hack with
|
||||||
|
many drawbacks since it changes the buffer's contents),
|
||||||
|
or in Vim's command line aligned with the function call (set to 2), which
|
||||||
|
can improve the integrity of Vim's undo history.
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#show_call_signatures = "1"
|
||||||
|
|
||||||
|
Here are a few more defaults for actions, read the docs (``:help jedi-vim``) to
|
||||||
|
get more information. If you set them to ``""``, they are not assigned.
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
NOTE: subject to change!
|
||||||
|
|
||||||
|
let g:jedi#goto_command = "<leader>d"
|
||||||
|
let g:jedi#goto_assignments_command = "<leader>g"
|
||||||
|
let g:jedi#goto_stubs_command = "<leader>s"
|
||||||
|
let g:jedi#goto_definitions_command = ""
|
||||||
|
let g:jedi#documentation_command = "K"
|
||||||
|
let g:jedi#usages_command = "<leader>n"
|
||||||
|
let g:jedi#completions_command = "<C-Space>"
|
||||||
|
let g:jedi#rename_command = "<leader>r"
|
||||||
|
|
||||||
|
An example for setting up your project:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#environment_path = "/usr/bin/python3.9"
|
||||||
|
|
||||||
|
jedi-vim tries its best to guess your virtual env. If you want to work with a
|
||||||
|
specific virtual environment however, you can point jedi-vim towards it:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#environment_path = "venv"
|
||||||
|
|
||||||
|
Finally, if you don't want completion, but all the other features, use:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#completions_enabled = 0
|
||||||
|
|
||||||
|
FAQ
|
||||||
|
===
|
||||||
|
|
||||||
|
I want to use Jedi with a Python 2 Environment, but it's not listed under "Known environments"
|
||||||
|
----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Starting with version 0.18.0 Jedi dropped support for Python 2.
|
||||||
|
|
||||||
|
|
||||||
|
I don't want the docstring window to popup during completion
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
This depends on the ``completeopt`` option. Jedi initializes it in its
|
||||||
|
``ftplugin``. Add the following line to your ``.vimrc`` to disable it:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
autocmd FileType python setlocal completeopt-=preview
|
||||||
|
|
||||||
|
|
||||||
|
I want <Tab> to do autocompletion
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Don't even think about changing the Jedi command to ``<Tab>``,
|
||||||
|
use `supertab <https://github.com/ervandew/supertab>`_!
|
||||||
|
|
||||||
|
|
||||||
|
The completion is too slow!
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
1. Completion of complex libraries (like Numpy) should only be slow the first
|
||||||
|
time you complete them. After that the results should be cached and very fast.
|
||||||
|
|
||||||
|
2. If it is still slow after the initial completion and you have installed the
|
||||||
|
python-mode Vim plugin, try disabling its rope mode:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:pymode_rope = 0
|
||||||
|
|
||||||
|
See issue `#163 <https://github.com/davidhalter/jedi-vim/issues/163>`__.
|
||||||
|
|
||||||
|
3. You can also use `deoplete-jedi <https://github.com/zchee/deoplete-jedi>`__
|
||||||
|
for completions, which uses Jedi, but does completions asynchronously
|
||||||
|
(requires Neovim).
|
||||||
|
It makes sense to use both jedi-vim and deoplete-jedi, but you should disable
|
||||||
|
jedi-vim's completions then:
|
||||||
|
|
||||||
|
.. code-block:: vim
|
||||||
|
|
||||||
|
let g:jedi#completions_enabled = 0
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
jedi-vim is being tested with a combination of `vspec
|
||||||
|
<https://github.com/kana/vim-vspec>`_ and `py.test <http://pytest.org/>`_.
|
||||||
|
|
||||||
|
The tests are in the ``test`` subdirectory, you can run them calling::
|
||||||
|
|
||||||
|
py.test
|
||||||
|
|
||||||
|
The tests are automatically run with `travis
|
||||||
|
<https://travis-ci.org/davidhalter/jedi-vim>`_.
|
|
@ -0,0 +1,3 @@
|
||||||
|
if jedi#init_python() && g:jedi#auto_initialization && g:jedi#completions_enabled
|
||||||
|
call jedi#setup_completion()
|
||||||
|
endif
|
34
sources_non_forked/jedi-vim/after/syntax/python.vim
Normal file
34
sources_non_forked/jedi-vim/after/syntax/python.vim
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
if !jedi#init_python()
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:jedi#show_call_signatures > 0 && has('conceal')
|
||||||
|
" +conceal is the default for vim >= 7.3
|
||||||
|
|
||||||
|
let s:e = g:jedi#call_signature_escape
|
||||||
|
let s:full = s:e.'jedi=.\{-}'.s:e.'.\{-}'.s:e.'jedi'.s:e
|
||||||
|
let s:ignore = s:e.'jedi.\{-}'.s:e
|
||||||
|
exe 'syn match jediIgnore "'.s:ignore.'" contained conceal'
|
||||||
|
setlocal conceallevel=2
|
||||||
|
syn match jediFatSymbol "\*_\*" contained conceal
|
||||||
|
syn match jediFat "\*_\*.\{-}\*_\*" contained contains=jediFatSymbol
|
||||||
|
syn match jediSpace "\v[ ]+( )@=" contained
|
||||||
|
exe 'syn match jediFunction "'.s:full.'" keepend extend '
|
||||||
|
\ .' contains=jediIgnore,jediFat,jediSpace'
|
||||||
|
\ .' containedin=pythonComment,pythonString,pythonRawString'
|
||||||
|
unlet! s:e s:full s:ignore
|
||||||
|
|
||||||
|
hi def link jediIgnore Ignore
|
||||||
|
hi def link jediFatSymbol Ignore
|
||||||
|
hi def link jediSpace Normal
|
||||||
|
|
||||||
|
if exists('g:colors_name')
|
||||||
|
hi def link jediFunction CursorLine
|
||||||
|
hi def link jediFat TabLine
|
||||||
|
else
|
||||||
|
hi def jediFunction term=NONE cterm=NONE ctermfg=6 guifg=Black gui=NONE ctermbg=0 guibg=Grey
|
||||||
|
hi def jediFat term=bold,underline cterm=bold,underline gui=bold,underline ctermbg=0 guibg=#555555
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
hi def jediUsage cterm=reverse gui=standout
|
4
sources_non_forked/jedi-vim/autoload/health/jedi.vim
Normal file
4
sources_non_forked/jedi-vim/autoload/health/jedi.vim
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
function! health#jedi#check() abort
|
||||||
|
call health#report_start('jedi')
|
||||||
|
silent call jedi#debug_info()
|
||||||
|
endfunction
|
732
sources_non_forked/jedi-vim/autoload/jedi.vim
Normal file
732
sources_non_forked/jedi-vim/autoload/jedi.vim
Normal file
|
@ -0,0 +1,732 @@
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" Settings initialization
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
let s:deprecations = {
|
||||||
|
\ 'get_definition_command': 'goto_definitions_command',
|
||||||
|
\ 'pydoc': 'documentation_command',
|
||||||
|
\ 'related_names_command': 'usages_command',
|
||||||
|
\ 'autocompletion_command': 'completions_command',
|
||||||
|
\ 'show_function_definition': 'show_call_signatures',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
let s:default_settings = {
|
||||||
|
\ 'use_tabs_not_buffers': 0,
|
||||||
|
\ 'use_splits_not_buffers': 1,
|
||||||
|
\ 'auto_initialization': 1,
|
||||||
|
\ 'auto_vim_configuration': 1,
|
||||||
|
\ 'goto_command': "'<leader>d'",
|
||||||
|
\ 'goto_assignments_command': "'<leader>g'",
|
||||||
|
\ 'goto_definitions_command': "''",
|
||||||
|
\ 'goto_stubs_command': "'<leader>s'",
|
||||||
|
\ 'completions_command': "'<C-Space>'",
|
||||||
|
\ 'call_signatures_command': "'<leader>n'",
|
||||||
|
\ 'usages_command': "'<leader>n'",
|
||||||
|
\ 'rename_command': "'<leader>r'",
|
||||||
|
\ 'completions_enabled': 1,
|
||||||
|
\ 'popup_on_dot': 'g:jedi#completions_enabled',
|
||||||
|
\ 'documentation_command': "'K'",
|
||||||
|
\ 'show_call_signatures': has('conceal') ? 1 : 2,
|
||||||
|
\ 'show_call_signatures_delay': 500,
|
||||||
|
\ 'call_signature_escape': "'?!?'",
|
||||||
|
\ 'auto_close_doc': 1,
|
||||||
|
\ 'max_doc_height': 30,
|
||||||
|
\ 'popup_select_first': 1,
|
||||||
|
\ 'quickfix_window_height': 10,
|
||||||
|
\ 'force_py_version': "'auto'",
|
||||||
|
\ 'environment_path': "'auto'",
|
||||||
|
\ 'added_sys_path': '[]',
|
||||||
|
\ 'project_path': "'auto'",
|
||||||
|
\ 'smart_auto_mappings': 0,
|
||||||
|
\ 'case_insensitive_completion': 1,
|
||||||
|
\ 'use_tag_stack': 1
|
||||||
|
\ }
|
||||||
|
|
||||||
|
for [s:key, s:val] in items(s:deprecations)
|
||||||
|
if exists('g:jedi#'.s:key)
|
||||||
|
echom "'g:jedi#".s:key."' is deprecated. Please use 'g:jedi#".s:val."' instead. Sorry for the inconvenience."
|
||||||
|
exe 'let g:jedi#'.s:val.' = g:jedi#'.s:key
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
for [s:key, s:val] in items(s:default_settings)
|
||||||
|
if !exists('g:jedi#'.s:key)
|
||||||
|
exe 'let g:jedi#'.s:key.' = '.s:val
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
let s:supports_buffer_usages = has('nvim') || exists('*prop_add')
|
||||||
|
|
||||||
|
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" Python initialization
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
let s:script_path = expand('<sfile>:p:h:h')
|
||||||
|
|
||||||
|
function! s:init_python() abort
|
||||||
|
" Use g:jedi#force_py_version for loading Jedi, or fall back to using
|
||||||
|
" `has()` - preferring Python 3.
|
||||||
|
if !has('python3')
|
||||||
|
throw 'jedi-vim requires Vim with support for Python 3.'
|
||||||
|
endif
|
||||||
|
call jedi#setup_python_imports()
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#reinit_python() abort
|
||||||
|
let s:_init_python = -1
|
||||||
|
call jedi#init_python()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" This is meant to be called with `:unsilent` (for &shortmess+=F).
|
||||||
|
function! s:display_exception() abort
|
||||||
|
let error_lines = split(v:exception, '\n')
|
||||||
|
let msg = 'Error: jedi-vim failed to initialize Python: '
|
||||||
|
\ .error_lines[0].' (in '.v:throwpoint.')'
|
||||||
|
if len(error_lines) > 1
|
||||||
|
echohl ErrorMsg
|
||||||
|
echom 'jedi-vim error: '.error_lines[0]
|
||||||
|
for line in error_lines[1:]
|
||||||
|
echom line
|
||||||
|
endfor
|
||||||
|
echohl None
|
||||||
|
let help_cmd = ':JediDebugInfo'
|
||||||
|
if exists(':checkhealth') == 2
|
||||||
|
let help_cmd .= ' / :checkhealth'
|
||||||
|
endif
|
||||||
|
let msg .= printf('. See :messages and/or %s for more information.',
|
||||||
|
\ help_cmd)
|
||||||
|
endif
|
||||||
|
redraw " Redraw to only have the main message by default.
|
||||||
|
echoerr msg
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
let s:_init_python = -1
|
||||||
|
function! jedi#init_python() abort
|
||||||
|
if s:_init_python == -1
|
||||||
|
let s:_init_python = 0
|
||||||
|
try
|
||||||
|
let s:_init_python = s:init_python()
|
||||||
|
let s:_init_python = 1
|
||||||
|
catch /^jedi/
|
||||||
|
" Only catch errors from jedi-vim itself here, so that for
|
||||||
|
" unexpected Python exceptions the traceback will be shown
|
||||||
|
" (e.g. with NameError in jedi#setup_python_imports's code).
|
||||||
|
if !exists('g:jedi#squelch_py_warning')
|
||||||
|
unsilent call s:display_exception()
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
return s:_init_python
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#setup_python_imports() abort
|
||||||
|
let g:_jedi_init_error = 0
|
||||||
|
let init_lines = [
|
||||||
|
\ 'import vim',
|
||||||
|
\ 'def _jedi_handle_exc(exc_info):',
|
||||||
|
\ ' try:',
|
||||||
|
\ ' from jedi_vim_debug import format_exc_info',
|
||||||
|
\ ' vim.vars["_jedi_init_error"] = format_exc_info(exc_info)',
|
||||||
|
\ ' except Exception:',
|
||||||
|
\ ' import traceback',
|
||||||
|
\ ' vim.vars["_jedi_init_error"] = "\\n".join(traceback.format_exception(*exc_info))',
|
||||||
|
\ 'try:',
|
||||||
|
\ ' import jedi_vim',
|
||||||
|
\ ' if hasattr(jedi_vim, "jedi_import_error"):',
|
||||||
|
\ ' _jedi_handle_exc(jedi_vim.jedi_import_error)',
|
||||||
|
\ 'except Exception as exc:',
|
||||||
|
\ ' _jedi_handle_exc(sys.exc_info())',
|
||||||
|
\ ]
|
||||||
|
exe 'python3 exec('''.escape(join(init_lines, '\n'), "'").''')'
|
||||||
|
if g:_jedi_init_error isnot 0
|
||||||
|
throw printf('jedi#setup_python_imports: %s', g:_jedi_init_error)
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#debug_info() abort
|
||||||
|
if &verbose
|
||||||
|
if &filetype !=# 'python'
|
||||||
|
echohl WarningMsg | echo 'You should run this in a buffer with filetype "python".' | echohl None
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let spath = shellescape(s:script_path)
|
||||||
|
echo '#### Jedi-vim debug information'
|
||||||
|
echo "\n"
|
||||||
|
echo '##### jedi-vim version'
|
||||||
|
echo "\n"
|
||||||
|
echo ' - jedi-vim git version: '
|
||||||
|
echon substitute(system('git -C '.spath.' describe --tags --always --dirty'), '\v\n$', '', '')
|
||||||
|
echo ' - jedi git submodule status: '
|
||||||
|
echon substitute(system('git -C '.spath.' submodule status pythonx/jedi'), '\v\n$', '', '')
|
||||||
|
echo ' - parso git submodule status: '
|
||||||
|
echon substitute(system('git -C '.spath.' submodule status pythonx/parso'), '\v\n$', '', '')
|
||||||
|
echo "\n"
|
||||||
|
echo '##### Global Python'
|
||||||
|
echo "\n"
|
||||||
|
echo 'Using Python version 3 to access Jedi.'
|
||||||
|
let s:pythonjedi_called = 0
|
||||||
|
try
|
||||||
|
python3 import vim; vim.command('let s:pythonjedi_called = 1')
|
||||||
|
catch
|
||||||
|
echo 'Error when trying to import vim: '.v:exception
|
||||||
|
endtry
|
||||||
|
if !s:pythonjedi_called
|
||||||
|
echohl WarningMsg
|
||||||
|
echom 'python3 failed to run, likely a Python config issue.'
|
||||||
|
if exists(':checkhealth') == 2
|
||||||
|
echom 'Try :checkhealth for more information.'
|
||||||
|
endif
|
||||||
|
echohl None
|
||||||
|
else
|
||||||
|
try
|
||||||
|
python3 from jedi_vim_debug import display_debug_info
|
||||||
|
python3 display_debug_info()
|
||||||
|
catch
|
||||||
|
echohl WarningMsg
|
||||||
|
echo 'Error when running display_debug_info: '.v:exception
|
||||||
|
echohl None
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
echo "\n"
|
||||||
|
echo '##### Settings'
|
||||||
|
echo "\n"
|
||||||
|
echo '```'
|
||||||
|
let jedi_settings = items(filter(copy(g:), "v:key =~# '\\v^jedi#'"))
|
||||||
|
let has_nondefault_settings = 0
|
||||||
|
for [k, V] in jedi_settings
|
||||||
|
exe 'let default = '.get(s:default_settings,
|
||||||
|
\ substitute(k, '\v^jedi#', '', ''), "'-'")
|
||||||
|
" vint: -ProhibitUsingUndeclaredVariable
|
||||||
|
if default !=# V
|
||||||
|
echo printf('g:%s = %s (default: %s)', k, string(V), string(default))
|
||||||
|
unlet! V " Fix variable type mismatch with Vim 7.3.
|
||||||
|
let has_nondefault_settings = 1
|
||||||
|
endif
|
||||||
|
" vint: +ProhibitUsingUndeclaredVariable
|
||||||
|
endfor
|
||||||
|
if has_nondefault_settings
|
||||||
|
echo "\n"
|
||||||
|
endif
|
||||||
|
verb set omnifunc? completeopt?
|
||||||
|
echo '```'
|
||||||
|
|
||||||
|
if &verbose
|
||||||
|
echo "\n"
|
||||||
|
echo '#### :version'
|
||||||
|
echo '```'
|
||||||
|
version
|
||||||
|
echo '```'
|
||||||
|
echo "\n"
|
||||||
|
echo '#### :messages'
|
||||||
|
echo '```'
|
||||||
|
messages
|
||||||
|
echo '```'
|
||||||
|
echo "\n"
|
||||||
|
echo '<details><summary>:scriptnames</summary>'
|
||||||
|
echo "\n"
|
||||||
|
echo '```'
|
||||||
|
scriptnames
|
||||||
|
echo '```'
|
||||||
|
echo '</details>'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Helper function instead of `python vim.eval()`, and `.command()` because
|
||||||
|
" these also return error definitions.
|
||||||
|
function! jedi#_vim_exceptions(str, is_eval) abort
|
||||||
|
let l:result = {}
|
||||||
|
try
|
||||||
|
if a:is_eval
|
||||||
|
let l:result.result = eval(a:str)
|
||||||
|
else
|
||||||
|
execute a:str
|
||||||
|
let l:result.result = ''
|
||||||
|
endif
|
||||||
|
catch
|
||||||
|
let l:result.exception = v:exception
|
||||||
|
let l:result.throwpoint = v:throwpoint
|
||||||
|
endtry
|
||||||
|
return l:result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call jedi#init_python() " Might throw an error.
|
||||||
|
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" functions that call python code
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
function! jedi#goto() abort
|
||||||
|
python3 jedi_vim.goto(mode="goto")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#goto_assignments() abort
|
||||||
|
python3 jedi_vim.goto(mode="assignment")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#goto_definitions() abort
|
||||||
|
python3 jedi_vim.goto(mode="definition")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#goto_stubs() abort
|
||||||
|
python3 jedi_vim.goto(mode="stubs")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#usages() abort
|
||||||
|
if exists('#jedi_usages#BufWinEnter')
|
||||||
|
call jedi#clear_usages()
|
||||||
|
endif
|
||||||
|
python3 jedi_vim.usages()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if !s:supports_buffer_usages
|
||||||
|
" Hide usages in the current window.
|
||||||
|
" Only handles the current window due to matchdelete() restrictions.
|
||||||
|
function! jedi#_hide_usages_in_win() abort
|
||||||
|
let winnr = winnr()
|
||||||
|
let matchids = getwinvar(winnr, '_jedi_usages_vim_matchids', [])
|
||||||
|
|
||||||
|
for matchid in matchids[1:]
|
||||||
|
call matchdelete(matchid)
|
||||||
|
endfor
|
||||||
|
call setwinvar(winnr, '_jedi_usages_vim_matchids', [])
|
||||||
|
|
||||||
|
" Remove the autocommands that might have triggered this function.
|
||||||
|
augroup jedi_usages
|
||||||
|
exe 'autocmd! * <buffer='.winbufnr(winnr).'>'
|
||||||
|
augroup END
|
||||||
|
unlet! b:_jedi_usages_needs_clear
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Show usages for current window (Vim without textprops only).
|
||||||
|
function! jedi#_show_usages_in_win() abort
|
||||||
|
python3 jedi_vim.highlight_usages_for_vim_win()
|
||||||
|
|
||||||
|
if !exists('#jedi_usages#TextChanged#<buffer>')
|
||||||
|
augroup jedi_usages
|
||||||
|
" Unset highlights on any changes to this buffer.
|
||||||
|
" NOTE: Neovim's API handles movement of highlights, but would only
|
||||||
|
" need to clear highlights that are changed inline.
|
||||||
|
autocmd TextChanged <buffer> call jedi#_clear_buffer_usages()
|
||||||
|
|
||||||
|
" Hide usages when the buffer is removed from the window, or when
|
||||||
|
" entering insert mode (but keep them for later).
|
||||||
|
autocmd BufWinLeave,InsertEnter <buffer> call jedi#_hide_usages_in_win()
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Remove usages for the current buffer (and all its windows).
|
||||||
|
function! jedi#_clear_buffer_usages() abort
|
||||||
|
let bufnr = bufnr('%')
|
||||||
|
let nvim_src_ids = getbufvar(bufnr, '_jedi_usages_src_ids', [])
|
||||||
|
if !empty(nvim_src_ids)
|
||||||
|
for src_id in nvim_src_ids
|
||||||
|
" TODO: could only clear highlights below/after changed line?!
|
||||||
|
call nvim_buf_clear_highlight(bufnr, src_id, 0, -1)
|
||||||
|
endfor
|
||||||
|
else
|
||||||
|
call jedi#_hide_usages_in_win()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Remove/unset global usages.
|
||||||
|
function! jedi#clear_usages() abort
|
||||||
|
augroup jedi_usages
|
||||||
|
autocmd! BufWinEnter
|
||||||
|
autocmd! WinEnter
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
if !s:supports_buffer_usages
|
||||||
|
" Vim without textprops: clear current window,
|
||||||
|
" autocommands will clean others on demand.
|
||||||
|
call jedi#_hide_usages_in_win()
|
||||||
|
|
||||||
|
" Setup autocommands to clear remaining highlights on WinEnter.
|
||||||
|
augroup jedi_usages
|
||||||
|
for b in range(1, bufnr('$'))
|
||||||
|
if getbufvar(b, '_jedi_usages_needs_clear')
|
||||||
|
exe 'autocmd WinEnter <buffer='.b.'> call jedi#_hide_usages_in_win()'
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
|
||||||
|
python3 jedi_vim.clear_usages()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#rename(...) abort
|
||||||
|
python3 jedi_vim.rename()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#rename_visual(...) abort
|
||||||
|
python3 jedi_vim.rename_visual()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#completions(findstart, base) abort
|
||||||
|
python3 jedi_vim.completions()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#enable_speed_debugging() abort
|
||||||
|
python3 jedi_vim.jedi.set_debug_function(jedi_vim.print_to_stdout, speed=True, warnings=False, notices=False)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#enable_debugging() abort
|
||||||
|
python3 jedi_vim.jedi.set_debug_function(jedi_vim.print_to_stdout)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#disable_debugging() abort
|
||||||
|
python3 jedi_vim.jedi.set_debug_function(None)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! jedi#py_import(args) abort
|
||||||
|
python3 jedi_vim.py_import()
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! jedi#choose_environment(args) abort
|
||||||
|
python3 jedi_vim.choose_environment()
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! jedi#load_project(args) abort
|
||||||
|
python3 jedi_vim.load_project()
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! jedi#py_import_completions(argl, cmdl, pos) abort
|
||||||
|
python3 jedi_vim.py_import_completions()
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! jedi#clear_cache(bang) abort
|
||||||
|
if a:bang
|
||||||
|
python3 jedi_vim.jedi.cache.clear_time_caches(True)
|
||||||
|
else
|
||||||
|
python3 jedi_vim.jedi.cache.clear_time_caches(False)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" show_documentation
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
function! jedi#show_documentation() abort
|
||||||
|
python3 if jedi_vim.show_documentation() is None: vim.command('return')
|
||||||
|
|
||||||
|
let bn = bufnr('__doc__')
|
||||||
|
if bn > 0
|
||||||
|
let wi=index(tabpagebuflist(tabpagenr()), bn)
|
||||||
|
if wi >= 0
|
||||||
|
" If the __doc__ buffer is open in the current tab, jump to it
|
||||||
|
silent execute (wi+1).'wincmd w'
|
||||||
|
else
|
||||||
|
silent execute 'sbuffer '.bn
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
split __doc__
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal modifiable
|
||||||
|
setlocal noswapfile
|
||||||
|
setlocal buftype=nofile
|
||||||
|
silent normal! ggdG
|
||||||
|
silent $put=l:doc
|
||||||
|
silent normal! 1Gdd
|
||||||
|
setlocal nomodifiable
|
||||||
|
setlocal nomodified
|
||||||
|
setlocal filetype=rst
|
||||||
|
setlocal foldlevel=200 " do not fold in __doc__
|
||||||
|
|
||||||
|
if l:doc_lines > g:jedi#max_doc_height " max lines for plugin
|
||||||
|
let l:doc_lines = g:jedi#max_doc_height
|
||||||
|
endif
|
||||||
|
execute 'resize '.l:doc_lines
|
||||||
|
|
||||||
|
" quit comands
|
||||||
|
nnoremap <buffer> q ZQ
|
||||||
|
if len(g:jedi#documentation_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#documentation_command.' ZQ'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" helper functions
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
function! jedi#add_goto_window(for_usages, len) abort
|
||||||
|
let height = min([a:len, g:jedi#quickfix_window_height])
|
||||||
|
|
||||||
|
" Use :copen to go to the window always - the user should select an entry.
|
||||||
|
execute 'belowright copen '.height
|
||||||
|
|
||||||
|
if &filetype !=# 'qf'
|
||||||
|
echoerr printf('jedi-vim: unexpected ft with current window (%s), please report!', &filetype)
|
||||||
|
endif
|
||||||
|
if g:jedi#use_tabs_not_buffers == 1
|
||||||
|
noremap <buffer> <CR> :call jedi#goto_window_on_enter()<CR>
|
||||||
|
endif
|
||||||
|
|
||||||
|
augroup jedi_goto_window
|
||||||
|
if a:for_usages
|
||||||
|
autocmd BufWinLeave <buffer> call jedi#clear_usages()
|
||||||
|
else
|
||||||
|
autocmd WinLeave <buffer> q " automatically leave, if an option is chosen
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
if a:for_usages && !has('nvim')
|
||||||
|
if s:supports_buffer_usages
|
||||||
|
" Setup autocommand for pending highlights with Vim's textprops.
|
||||||
|
" (cannot be added to unlisted buffers)
|
||||||
|
augroup jedi_usages
|
||||||
|
autocmd! BufWinEnter * call s:usages_for_pending_buffers()
|
||||||
|
augroup END
|
||||||
|
else
|
||||||
|
" Setup global autocommand to display any usages for a window.
|
||||||
|
" Gets removed when closing the quickfix window that displays them, or
|
||||||
|
" when clearing them (e.g. on TextChanged).
|
||||||
|
augroup jedi_usages
|
||||||
|
autocmd! BufWinEnter,WinEnter * call jedi#_show_usages_in_win()
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Highlight usages for a buffer if not done so yet (Neovim only).
|
||||||
|
function! s:usages_for_pending_buffers() abort
|
||||||
|
python3 jedi_vim._handle_pending_usages_for_buf()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#goto_window_on_enter() abort
|
||||||
|
let l:list = getqflist()
|
||||||
|
let l:data = l:list[line('.') - 1]
|
||||||
|
if l:data.bufnr
|
||||||
|
" close goto_window buffer
|
||||||
|
normal! ZQ
|
||||||
|
python3 jedi_vim.set_buffer(vim.eval('bufname(l:data.bufnr)'))
|
||||||
|
call cursor(l:data.lnum, l:data.col)
|
||||||
|
else
|
||||||
|
echohl WarningMsg | echo 'Builtin module cannot be opened.' | echohl None
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! s:syn_stack() abort
|
||||||
|
if !exists('*synstack')
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
return map(synstack(line('.'), col('.') - 1), "synIDattr(v:val, 'name')")
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#do_popup_on_dot_in_highlight() abort
|
||||||
|
let highlight_groups = s:syn_stack()
|
||||||
|
for a in highlight_groups
|
||||||
|
if a ==# 'pythonDoctest'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
for a in highlight_groups
|
||||||
|
for b in ['pythonString', 'pythonComment', 'pythonNumber']
|
||||||
|
if a == b
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
return 1
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
|
let s:show_call_signatures_last = [0, 0, '']
|
||||||
|
function! jedi#show_call_signatures() abort
|
||||||
|
if s:_init_python == 0
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
let [line, col] = [line('.'), col('.')]
|
||||||
|
let curline = getline(line)
|
||||||
|
let reload_signatures = 1
|
||||||
|
|
||||||
|
" Caching. On the same line only.
|
||||||
|
if line == s:show_call_signatures_last[0]
|
||||||
|
" Check if the number of special signs before or after the
|
||||||
|
" cursor has not changed since the last call, which means that the
|
||||||
|
" argument position was not changed and we can skip repainting.
|
||||||
|
let prevcol = s:show_call_signatures_last[1]
|
||||||
|
let prevline = s:show_call_signatures_last[2]
|
||||||
|
let no_special = '[^,()=]'
|
||||||
|
if substitute(curline[:col-2], no_special, '', 'g')
|
||||||
|
\ == substitute(prevline[:prevcol-2], no_special, '', 'g')
|
||||||
|
\ && substitute(curline[(col-2):], no_special, '', 'g')
|
||||||
|
\ == substitute(prevline[(prevcol-2):], no_special, '', 'g')
|
||||||
|
let reload_signatures = 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let s:show_call_signatures_last = [line, col, curline]
|
||||||
|
|
||||||
|
if reload_signatures
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#clear_call_signatures() abort
|
||||||
|
if s:_init_python == 0
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:show_call_signatures_last = [0, 0, '']
|
||||||
|
python3 jedi_vim.clear_call_signatures()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#configure_call_signatures() abort
|
||||||
|
augroup jedi_call_signatures
|
||||||
|
autocmd! * <buffer>
|
||||||
|
if g:jedi#show_call_signatures == 2 " Command line call signatures
|
||||||
|
autocmd InsertEnter <buffer> let g:jedi#first_col = s:save_first_col()
|
||||||
|
endif
|
||||||
|
autocmd InsertEnter <buffer> let s:show_call_signatures_last = [0, 0, '']
|
||||||
|
autocmd InsertLeave <buffer> call jedi#clear_call_signatures()
|
||||||
|
if g:jedi#show_call_signatures_delay > 0
|
||||||
|
autocmd InsertEnter <buffer> let b:_jedi_orig_updatetime = &updatetime
|
||||||
|
\ | let &updatetime = g:jedi#show_call_signatures_delay
|
||||||
|
autocmd InsertLeave <buffer> if exists('b:_jedi_orig_updatetime')
|
||||||
|
\ | let &updatetime = b:_jedi_orig_updatetime
|
||||||
|
\ | unlet b:_jedi_orig_updatetime
|
||||||
|
\ | endif
|
||||||
|
autocmd CursorHoldI <buffer> call jedi#show_call_signatures()
|
||||||
|
else
|
||||||
|
autocmd CursorMovedI <buffer> call jedi#show_call_signatures()
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Determine where the current window is on the screen for displaying call
|
||||||
|
" signatures in the correct column.
|
||||||
|
function! s:save_first_col() abort
|
||||||
|
if bufname('%') ==# '[Command Line]' || winnr('$') == 1
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let startwin = winnr()
|
||||||
|
let winwidth = winwidth(0)
|
||||||
|
if winwidth == &columns
|
||||||
|
return 0
|
||||||
|
elseif winnr('$') == 2
|
||||||
|
return startwin == 1 ? 0 : (winwidth(1) + 1)
|
||||||
|
elseif winnr('$') == 3
|
||||||
|
if startwin == 1
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let ww1 = winwidth(1)
|
||||||
|
let ww2 = winwidth(2)
|
||||||
|
let ww3 = winwidth(3)
|
||||||
|
if ww1 + ww2 + ww3 + 2 == &columns
|
||||||
|
if startwin == 2
|
||||||
|
return ww1 + 1
|
||||||
|
else
|
||||||
|
return ww1 + ww2 + 2
|
||||||
|
endif
|
||||||
|
elseif startwin == 2
|
||||||
|
if ww2 + ww3 + 1 == &columns
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return ww1 + 1
|
||||||
|
endif
|
||||||
|
else " startwin == 3
|
||||||
|
if ww2 + ww3 + 1 == &columns
|
||||||
|
return ww2 + 1
|
||||||
|
else
|
||||||
|
return ww1 + 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#complete_string(autocomplete) abort
|
||||||
|
if a:autocomplete
|
||||||
|
if !(g:jedi#popup_on_dot && jedi#do_popup_on_dot_in_highlight())
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:saved_completeopt = &completeopt
|
||||||
|
set completeopt-=longest
|
||||||
|
set completeopt+=menuone
|
||||||
|
set completeopt-=menu
|
||||||
|
if &completeopt !~# 'noinsert\|noselect'
|
||||||
|
" Patch 775 introduced noinsert and noselect, previously these
|
||||||
|
" options didn't exist. Setting them in earlier versions results in
|
||||||
|
" errors (E474).
|
||||||
|
if has('patch-7.4-775')
|
||||||
|
if g:jedi#popup_select_first
|
||||||
|
set completeopt+=noinsert
|
||||||
|
else
|
||||||
|
set completeopt+=noselect
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" To pass the tests we use this, it seems to get the closest to
|
||||||
|
" the other options. I'm really not sure if this properly
|
||||||
|
" works, but VIM 7.4-775 is already pretty old, so it might not
|
||||||
|
" be a problem anymore in a few years.
|
||||||
|
set completeopt+=longest
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif pumvisible()
|
||||||
|
return "\<C-n>"
|
||||||
|
endif
|
||||||
|
return "\<C-x>\<C-o>\<C-r>=jedi#complete_opened(".a:autocomplete.")\<CR>"
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#complete_opened(autocomplete) abort
|
||||||
|
if a:autocomplete
|
||||||
|
let &completeopt = s:saved_completeopt
|
||||||
|
unlet s:saved_completeopt
|
||||||
|
elseif pumvisible() && g:jedi#popup_select_first && stridx(&completeopt, 'longest') > -1
|
||||||
|
return "\<Down>"
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#smart_auto_mappings() abort
|
||||||
|
" Auto put import statement after from module.name<space> and complete
|
||||||
|
if search('\m^\s*from\s\+[A-Za-z0-9._]\{1,50}\%#\s*$', 'bcn', line('.'))
|
||||||
|
" Enter character and start completion.
|
||||||
|
return "\<space>import \<C-r>=jedi#complete_string(1)\<CR>"
|
||||||
|
endif
|
||||||
|
return "\<space>"
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! jedi#setup_completion() abort
|
||||||
|
" We need our own omnifunc, so this overrides the omnifunc set by
|
||||||
|
" $VIMRUNTIME/ftplugin/python.vim.
|
||||||
|
setlocal omnifunc=jedi#completions
|
||||||
|
|
||||||
|
" map ctrl+space for autocompletion
|
||||||
|
if g:jedi#completions_command ==# '<C-Space>'
|
||||||
|
" In terminals, <C-Space> sometimes equals <Nul>.
|
||||||
|
imap <buffer> <Nul> <C-Space>
|
||||||
|
smap <buffer> <Nul> <C-Space>
|
||||||
|
endif
|
||||||
|
if len(g:jedi#completions_command)
|
||||||
|
execute 'inoremap <expr> <buffer> '.g:jedi#completions_command.' jedi#complete_string(0)'
|
||||||
|
" A separate mapping for select mode: deletes and completes.
|
||||||
|
execute 'snoremap <expr> <buffer> '.g:jedi#completions_command." '\<C-g>c'.jedi#complete_string(0)"
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
"python3 jedi_vim.jedi.set_debug_function(jedi_vim.print_to_stdout, speed=True, warnings=False, notices=False)
|
||||||
|
"python3 jedi_vim.jedi.set_debug_function(jedi_vim.print_to_stdout)
|
||||||
|
|
||||||
|
" vim: set et ts=4:
|
7
sources_non_forked/jedi-vim/codecov.yml
Normal file
7
sources_non_forked/jedi-vim/codecov.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
coverage:
|
||||||
|
status:
|
||||||
|
project: true
|
||||||
|
patch: true
|
||||||
|
changes: true
|
||||||
|
|
||||||
|
comment: off
|
578
sources_non_forked/jedi-vim/doc/jedi-vim.txt
Normal file
578
sources_non_forked/jedi-vim/doc/jedi-vim.txt
Normal file
|
@ -0,0 +1,578 @@
|
||||||
|
*jedi-vim.txt* - For Vim version 7.3 - Last change: 2014/07/29
|
||||||
|
__ _______ _______ __ ____ ____ __ .___ ___.~
|
||||||
|
| | | ____|| \ | | \ \ / / | | | \/ |~
|
||||||
|
| | | |__ | .--. || | _____\ \/ / | | | \ / |~
|
||||||
|
.--. | | | __| | | | || | |______\ / | | | |\/| |~
|
||||||
|
| `--' | | |____ | '--' || | \ / | | | | | |~
|
||||||
|
\______/ |_______||_______/ |__| \__/ |__| |__| |__|~
|
||||||
|
|
||||||
|
jedi-vim - awesome Python autocompletion with Vim
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Contents *jedi-vim-contents*
|
||||||
|
|
||||||
|
1. Introduction |jedi-vim-introduction|
|
||||||
|
2. Installation |jedi-vim-installation|
|
||||||
|
2.0. Requirements |jedi-vim-installation-requirements|
|
||||||
|
2.1. Manually |jedi-vim-installation-manually|
|
||||||
|
2.2. Using Pathogen |jedi-vim-installation-pathogen|
|
||||||
|
2.3. Using Vundle |jedi-vim-installation-vundle|
|
||||||
|
2.4. Installing from Repositories |jedi-vim-installation-repos|
|
||||||
|
3. Supported Python features |jedi-vim-support|
|
||||||
|
4. Usage |jedi-vim-usage|
|
||||||
|
5. Mappings |jedi-vim-keybindings|
|
||||||
|
5.1. Start completion |g:jedi#completions_command|
|
||||||
|
5.2. Go to definition |g:jedi#goto_command|
|
||||||
|
5.3. Go to assignment |g:jedi#goto_assignments_command|
|
||||||
|
5.4 Go to stub |g:jedi#goto_stubs_command|
|
||||||
|
5.5. Show documentation |g:jedi#documentation_command|
|
||||||
|
5.6. Rename variables |g:jedi#rename_command|
|
||||||
|
5.7. Show name usages |g:jedi#usages_command|
|
||||||
|
5.8. Open module by name |:Pyimport|
|
||||||
|
6. Configuration |jedi-vim-configuration|
|
||||||
|
6.1. auto_initialization |g:jedi#auto_initialization|
|
||||||
|
6.2. auto_vim_configuration |g:jedi#auto_vim_configuration|
|
||||||
|
6.3. popup_on_dot |g:jedi#popup_on_dot|
|
||||||
|
6.4. popup_select_first |g:jedi#popup_select_first|
|
||||||
|
6.5. auto_close_doc |g:jedi#auto_close_doc|
|
||||||
|
6.6. show_call_signatures |g:jedi#show_call_signatures|
|
||||||
|
6.7. show_call_signatures_delay |g:jedi#show_call_signatures_delay|
|
||||||
|
6.8. use_tabs_not_buffers |g:jedi#use_tabs_not_buffers|
|
||||||
|
6.9. squelch_py_warning |g:jedi#squelch_py_warning|
|
||||||
|
6.10. completions_enabled |g:jedi#completions_enabled|
|
||||||
|
6.11. use_splits_not_buffers |g:jedi#use_splits_not_buffers|
|
||||||
|
6.12. force_py_version |g:jedi#force_py_version|
|
||||||
|
6.13. smart_auto_mappings |g:jedi#smart_auto_mappings|
|
||||||
|
6.14. use_tag_stack |g:jedi#use_tag_stack|
|
||||||
|
6.15. environment_path |g:jedi#environment_path|
|
||||||
|
|b:jedi_environment_path|
|
||||||
|
6.16. added_sys_path |g:jedi#added_sys_path|
|
||||||
|
|b:jedi_added_sys_path|
|
||||||
|
6.17. case_insensitive_completion |g:jedi#case_insensitive_completion|
|
||||||
|
|b:jedi_case_insensitive_completion|
|
||||||
|
7. Testing |jedi-vim-testing|
|
||||||
|
8. Contributing |jedi-vim-contributing|
|
||||||
|
9. License |jedi-vim-license|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
1. Introduction *jedi-vim-introduction*
|
||||||
|
|
||||||
|
Jedi-vim is a Vim binding to the awesome Python autocompletion library
|
||||||
|
`jedi`. Among jedi's (and, therefore, jedi-vim's) features are:
|
||||||
|
|
||||||
|
- Completion for a wide array of Python features (see |jedi-vim-support|)
|
||||||
|
- Robust in dealing with syntax errors and wrong indentation
|
||||||
|
- Parses complex module/function/class structures
|
||||||
|
- Infers function arguments from Sphinx/Epydoc strings
|
||||||
|
- Doesn't execute Python code
|
||||||
|
- Supports Virtualenv
|
||||||
|
- Supports Python 2.7 and 3.4+
|
||||||
|
|
||||||
|
By leveraging this library, jedi-vim adds the following capabilities to Vim:
|
||||||
|
|
||||||
|
- Displaying function/class bodies
|
||||||
|
- "Go to definition" command
|
||||||
|
- Displaying docstrings
|
||||||
|
- Renaming and refactoring
|
||||||
|
- Looking up related names
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
2. Installation *jedi-vim-installation*
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2.0. Requirements *jedi-vim-installation-requirements*
|
||||||
|
|
||||||
|
First of all, jedi-vim requires Vim to be compiled with the `+python` option.
|
||||||
|
|
||||||
|
It is best if you have VIM >= 7.3, compiled with the `+conceal` option. With
|
||||||
|
older versions, you will probably not see the parameter recommendation list
|
||||||
|
for functions after typing the open bracket. Some platforms (including OS X
|
||||||
|
releases) do not ship a VIM with `+conceal`. You can check if your VIM has the
|
||||||
|
feature with >
|
||||||
|
|
||||||
|
:ver
|
||||||
|
|
||||||
|
and look for "`+conceal`" (as opposed to "`-conceal`") or >
|
||||||
|
|
||||||
|
:echo has('conceal')
|
||||||
|
|
||||||
|
which will report 0 (not included) or 1 (included). If your VIM lacks this
|
||||||
|
feature and you would like function parameter completion, you will need to
|
||||||
|
build your own VIM, or use a package for your operating system that has this
|
||||||
|
feature (such as MacVim on OS X, which also contains a console binary).
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2.1. Installing manually *jedi-vim-installation-manually*
|
||||||
|
|
||||||
|
1. If you want to install jedi as a submodule instead, issue this command: >
|
||||||
|
|
||||||
|
git clone --recursive http://github.com/davidhalter/jedi-vim
|
||||||
|
|
||||||
|
2. Put the plugin files into their respective folders in your vim runtime
|
||||||
|
directory (usually ~/.vim). Be sure to pay attention to the directory
|
||||||
|
structure!
|
||||||
|
3. Update the Vim help tags with >
|
||||||
|
|
||||||
|
:helptags <path/to/vimruntime>/doc
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2.2. Installing using Pathogen *jedi-vim-installation-pathogen*
|
||||||
|
|
||||||
|
Pathogen simplifies installation considerably.
|
||||||
|
|
||||||
|
1.a Clone the git repository into your bundles directory: >
|
||||||
|
|
||||||
|
git clone http://github.com/davidhalter/jedi-vim path/to/bundles/jedi-vim
|
||||||
|
|
||||||
|
1b. Again, if you want to install jedi as a submodule, use this command
|
||||||
|
instead: >
|
||||||
|
|
||||||
|
git clone --recursive http://github.com/davidhalter/jedi-vim
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2.3. Installing using Vundle *jedi-vim-installation-vundle*
|
||||||
|
|
||||||
|
1. Vundle automatically downloads subrepositories as git submodules, so you
|
||||||
|
will automatically get the jedi library with the jedi-vim plugin. Add the
|
||||||
|
following to the Bundles section in your .vimrc file: >
|
||||||
|
|
||||||
|
Plugin 'davidhalter/jedi-vim'
|
||||||
|
|
||||||
|
2. Issue the following command in Vim: >
|
||||||
|
|
||||||
|
:PluginInstall
|
||||||
|
|
||||||
|
Help tags are generated automatically, so you should be good to go.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2.4. Installing from Repositories *jedi-vim-installation-repos*
|
||||||
|
|
||||||
|
Some Linux distributions have jedi-vim packages in their official
|
||||||
|
repositories. On Arch Linux, install vim-jedi. On Debian (8+) or Ubuntu
|
||||||
|
(14.04+) install vim-python-jedi.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
3. Supported Python features *jedi-vim-support*
|
||||||
|
|
||||||
|
The Jedi library does all the hard work behind the scenes. It understands most
|
||||||
|
Python features, among them:
|
||||||
|
|
||||||
|
- Builtins
|
||||||
|
- Multiple `return`s or `yield`s
|
||||||
|
- Tuple assignments/array indexing/dictionary indexing
|
||||||
|
- `with`-statement/exception handling
|
||||||
|
- `*args` and `**kwargs`
|
||||||
|
- Decorators, lambdas, closures
|
||||||
|
- Generators, iterators
|
||||||
|
- Some descriptors: `property`/`staticmethod`/`classmethod`
|
||||||
|
- Some magic methods: `__call__`, `__iter__`, `__next__`, `__get__`,
|
||||||
|
`__getitem__`, `__init__`
|
||||||
|
- `list.append()`, `set.add()`, `list.extend()`, etc.
|
||||||
|
- (Nested) list comprehensions and ternary expressions
|
||||||
|
- Relative `import`s
|
||||||
|
- `getattr()`/`__getattr__`/`__getattribute__`
|
||||||
|
- Function annotations (py3k feature, are being ignored at the moment, but are
|
||||||
|
parsed)
|
||||||
|
- Class decorators (py3k feature, are being ignored at the moment, but are
|
||||||
|
parsed)
|
||||||
|
- Simple/usual `sys.path` modifications
|
||||||
|
- `isinstance` checks for `if`/`while`/`assert` case, that doesn't work with
|
||||||
|
Jedi
|
||||||
|
- Stubs
|
||||||
|
- And more...
|
||||||
|
|
||||||
|
Note: This list is not necessarily up to date. For a complete list of
|
||||||
|
features, please refer to the Jedi documentation at
|
||||||
|
http://jedi.readthedocs.io.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
4. Usage *jedi-vim-usage*
|
||||||
|
|
||||||
|
With the default settings, autocompletion can be triggered by typing
|
||||||
|
<Ctrl-Space>. The first entry will automatically be selected, so you can press
|
||||||
|
<Return> to insert it into your code or keep typing and narrow down your
|
||||||
|
completion options. The usual <C-X><C-O> and <C-P>/<C-N> keybindings work as
|
||||||
|
well. Autocompletion is also triggered by typing a period in insert mode.
|
||||||
|
Since periods rarely occur in Python code outside of method/import lookups,
|
||||||
|
this is handy to have (but can be disabled).
|
||||||
|
|
||||||
|
When it encounters a new module, jedi might take a few seconds to parse that
|
||||||
|
module's contents. Afterwards, the contents are cached and completion will be
|
||||||
|
almost instantaneous.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
5. Key Bindings *jedi-vim-keybindings*
|
||||||
|
|
||||||
|
All keybindings can be mapped by setting the appropriate global option. For
|
||||||
|
example, to set the keybinding for starting omnicompletion to <C-N> instead of
|
||||||
|
<Ctrl-Space>, add the following setting to your .vimrc file: >
|
||||||
|
|
||||||
|
let g:jedi#completions_command = "<C-N>"
|
||||||
|
|
||||||
|
Note: If you have |g:jedi#auto_initialization| set to 0, you have to create
|
||||||
|
a mapping yourself by calling a function: >
|
||||||
|
|
||||||
|
" Using <C-N> for omnicompletion
|
||||||
|
inoremap <silent> <buffer> <C-N> <c-x><c-o>
|
||||||
|
" Use <localleader>r (by default <\-r>) for renaming
|
||||||
|
nnoremap <silent> <buffer> <localleader>r :call jedi#rename()<cr>
|
||||||
|
" etc.
|
||||||
|
|
||||||
|
Note: You can set commands to '', which means that they are empty and not
|
||||||
|
assigned. It's an easy way to "disable" functionality of jedi-vim.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.1. `g:jedi#completions_command` *g:jedi#completions_command*
|
||||||
|
Function: n/a; see above
|
||||||
|
Default: <Ctrl-Space> Start completion
|
||||||
|
|
||||||
|
Performs autocompletion (or omnicompletion, to be precise).
|
||||||
|
|
||||||
|
Note: If you want to use <Tab> for completion, please install Supertab:
|
||||||
|
https://github.com/ervandew/supertab.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.2. `g:jedi#goto_command` *g:jedi#goto_command*
|
||||||
|
Function: `jedi#goto()`
|
||||||
|
Default: <leader>d Go to definition (or assignment)
|
||||||
|
|
||||||
|
This function first tries |jedi#goto_definitions|, and falls back to
|
||||||
|
|jedi#goto_assignments| for builtin modules. It produces an error if nothing
|
||||||
|
could be found.
|
||||||
|
NOTE: this implementation is subject to change.
|
||||||
|
Ref: https://github.com/davidhalter/jedi/issues/570
|
||||||
|
|
||||||
|
This command tries to find the original definition of the function/class under
|
||||||
|
the cursor. Just like the `jedi#goto_assignments()` function, it does not work
|
||||||
|
if the definition isn't in a Python source file.
|
||||||
|
|
||||||
|
The difference between `jedi#goto_assignments()` and `jedi#goto_definitions()`
|
||||||
|
is that the latter performs recursive lookups. Take, for example, the
|
||||||
|
following module structure: >
|
||||||
|
|
||||||
|
# file1.py:
|
||||||
|
from file2 import foo
|
||||||
|
|
||||||
|
# file2.py:
|
||||||
|
from file3 import bar as foo
|
||||||
|
|
||||||
|
# file3.py
|
||||||
|
def bar():
|
||||||
|
pass
|
||||||
|
|
||||||
|
The `jedi#goto_assignments()` function will take you to the >
|
||||||
|
|
||||||
|
from file2 import foo
|
||||||
|
|
||||||
|
statement in file1.py, while the `jedi#goto_definitions()` function will take
|
||||||
|
you all the way to the >
|
||||||
|
|
||||||
|
def bar():
|
||||||
|
|
||||||
|
line in file3.py.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.3. `g:jedi#goto_assignments_command` *g:jedi#goto_assignments_command*
|
||||||
|
Function: `jedi#goto_assignments()`
|
||||||
|
Default: <leader>g Go to assignment
|
||||||
|
|
||||||
|
This function finds the first definition of the function/class under the
|
||||||
|
cursor. It produces an error if the definition is not in a Python file.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.4. `g:jedi#goto_stubs_command` *g:jedi#goto_stubs_command*
|
||||||
|
Function: `jedi#goto_stubs()`
|
||||||
|
Default: <leader>s Go to stub
|
||||||
|
|
||||||
|
Finds the stub of the function/class under the cursor.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.5. `g:jedi#documentation_command` *g:jedi#documentation_command*
|
||||||
|
Function: `jedi#show_documentation()`
|
||||||
|
Default: <K> Show pydoc documentation
|
||||||
|
|
||||||
|
This shows the pydoc documentation for the item currently under the cursor.
|
||||||
|
The documentation is opened in a horizontally split buffer. The height of this
|
||||||
|
buffer is controlled by `g:jedi#max_doc_height` (set by default to 30).
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.6. `g:jedi#rename_command` *g:jedi#rename_command*
|
||||||
|
Function: `jedi#rename()`
|
||||||
|
Default: <leader>r Rename variables
|
||||||
|
|
||||||
|
Jedi-vim deletes the word currently under the cursor and puts Vim in insert
|
||||||
|
mode, where the user is expected to enter the new variable name. Upon leaving
|
||||||
|
insert mode, jedi-vim then renames all occurrences of the old variable name
|
||||||
|
with the new one. The number of performed renames is displayed in the command
|
||||||
|
line.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.7. `g:jedi#usages_command` *g:jedi#usages_command*
|
||||||
|
Function: `jedi#usages()`
|
||||||
|
Default: <leader>n Show usages of a name.
|
||||||
|
|
||||||
|
The quickfix window is populated with a list of all names which point to the
|
||||||
|
definition of the name under the cursor.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5.8. Open module by name *:Pyimport*
|
||||||
|
Function: `jedi#py_import(args)`
|
||||||
|
Default: :Pyimport e.g. `:Pyimport os` shows os.py in VIM.
|
||||||
|
|
||||||
|
Simulate an import and open that module in VIM.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
6. Configuration *jedi-vim-configuration*
|
||||||
|
|
||||||
|
Note: You currently have to set these options in your .vimrc. Setting them in
|
||||||
|
an ftplugin (e.g. ~/.vim/ftplugin/python/jedi-vim-settings.vim) will not work
|
||||||
|
because jedi-vim is not set up as an filetype plugin, but as a "regular"
|
||||||
|
plugin.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.1. `g:jedi#auto_initialization` *g:jedi#auto_initialization*
|
||||||
|
|
||||||
|
Upon initialization, jedi-vim performs the following steps:
|
||||||
|
|
||||||
|
1. Set the current buffers 'omnifunc' to its own completion function
|
||||||
|
`jedi#completions`
|
||||||
|
2. Create mappings to commands specified in |jedi-vim-keybindings|
|
||||||
|
3. Call `jedi#configure_call_signatures()` if
|
||||||
|
`g:jedi#show_call_signatures` is set
|
||||||
|
|
||||||
|
You can disable the default initialization routine by setting this option to
|
||||||
|
0. Beware that you have to perform the above steps yourself, though.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (Perform automatic initialization)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.2. `g:jedi#auto_vim_configuration` *g:jedi#auto_vim_configuration*
|
||||||
|
|
||||||
|
Jedi-vim sets 'completeopt' to `menuone,longest,preview` by default, if
|
||||||
|
'completeopt' is not changed from Vim's default.
|
||||||
|
It also remaps <Ctrl-C> to <Esc> in insert mode.
|
||||||
|
|
||||||
|
If you want to keep your own configuration, disable this setting.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (Set 'completeopt' and mapping as described above)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.3. `g:jedi#popup_on_dot` *g:jedi#popup_on_dot*
|
||||||
|
|
||||||
|
Jedi-vim automatically starts completion upon typing a period in insert mode.
|
||||||
|
|
||||||
|
However, when working with large modules, this can slow down your typing flow
|
||||||
|
since you have to wait for jedi to parse the module and show the completion
|
||||||
|
menu. By disabling this setting, completion is only started when you manually
|
||||||
|
press the completion key.
|
||||||
|
You need to also have `g:jedi#completions_enabled` enabled for this.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (Start completion on typing a period)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.4. `g:jedi#popup_select_first` *g:jedi#popup_select_first*
|
||||||
|
|
||||||
|
Upon starting completion, jedi-vim can automatically select the first entry
|
||||||
|
that pops up (without actually inserting it).
|
||||||
|
|
||||||
|
This leads to a better typing flow: As you type more characters, the entries
|
||||||
|
in the completion menu are narrowed down. If they are narrowed down enough,
|
||||||
|
you can just press <Return> to insert the first match.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (Automatically select first completion entry)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.5. `g:jedi#auto_close_doc` *g:jedi#auto_close_doc*
|
||||||
|
|
||||||
|
When doing completion, jedi-vim shows the docstring of the currently selected
|
||||||
|
item in a preview window. By default, this window is being closed after
|
||||||
|
insertion of a completion item.
|
||||||
|
|
||||||
|
Set this to 0 to leave the preview window open even after leaving insert mode.
|
||||||
|
This could be useful if you want to browse longer docstrings.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (Automatically close preview window upon leaving insert mode)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.6. `g:jedi#show_call_signatures` *g:jedi#show_call_signatures*
|
||||||
|
|
||||||
|
Jedi-vim can display a small window detailing the arguments of the currently
|
||||||
|
completed function and highlighting the currently selected argument. This can
|
||||||
|
be disabled by setting this option to 0. Setting this option to 2 shows call
|
||||||
|
signatures in the command line instead of a popup window.
|
||||||
|
|
||||||
|
Options: 0, 1, or 2
|
||||||
|
Default: 1 (Show call signatures window)
|
||||||
|
|
||||||
|
Note: 'showmode' must be disabled for command line call signatures to be
|
||||||
|
visible.
|
||||||
|
|
||||||
|
Note: This setting is ignored if |g:jedi#auto_initialization| is set to 0. In
|
||||||
|
that case, if you want to see call signatures, you have to set it up
|
||||||
|
manually by calling a function in your configuration file: >
|
||||||
|
|
||||||
|
call jedi#configure_call_signatures()
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.7. `g:jedi#show_call_signatures_delay` *g:jedi#show_call_signatures_delay*
|
||||||
|
|
||||||
|
The delay to be used with |g:jedi#show_call_signatures|. If it is greater
|
||||||
|
than 0 it will use Vim's |CursorHoldI| event instead of |CursorMovedI|.
|
||||||
|
It will temporarily set Vim's |'updatetime'| option during insert mode.
|
||||||
|
|
||||||
|
Options: delay in milliseconds
|
||||||
|
Default: 500
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.8. `g:jedi#use_tabs_not_buffers` *g:jedi#use_tabs_not_buffers*
|
||||||
|
|
||||||
|
You can make jedi-vim open a new tab if you use the "go to", "show
|
||||||
|
definition", or "related names" commands. When you leave this at the default
|
||||||
|
(0), they open in the current window instead.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 0 (Command output reuses current window)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.9. `g:jedi#squelch_py_warning` *g:jedi#squelch_py_warning*
|
||||||
|
|
||||||
|
When Vim has not been compiled with +python, jedi-vim shows a warning to that
|
||||||
|
effect and aborts loading itself. Set this to 1 to suppress that warning.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 0 (Warning is shown)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.10. `g:jedi#completions_enabled` *g:jedi#completions_enabled*
|
||||||
|
|
||||||
|
If you don't want Jedi completion, but all the other features, you can disable
|
||||||
|
it in favor of another completion engine (that probably also uses Jedi, like
|
||||||
|
YCM).
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.11. `g:jedi#use_splits_not_buffers` *g:jedi#use_splits_not_buffers*
|
||||||
|
|
||||||
|
If you want to open new split for "go to", you could set this option to the
|
||||||
|
direction which you want to open a split with.
|
||||||
|
|
||||||
|
Options: top, left, right, bottom or winwidth
|
||||||
|
Default: "" (not enabled by default)
|
||||||
|
|
||||||
|
Note: with the 'winwidth' option the window is split vertically or horizontally
|
||||||
|
depending on the width of the window relative to 'textwidth'. This essentially
|
||||||
|
means that if the window is big enough it will be split vertically but if it is
|
||||||
|
small a horizontal split happens.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.12. `g:jedi#force_py_version` *g:jedi#force_py_version*
|
||||||
|
|
||||||
|
If you have installed multiple Python versions, you can force the Python
|
||||||
|
version that is going to be used.
|
||||||
|
You don't have to compile VIM with multiple Python versions.
|
||||||
|
The variable can be set in the .vimrc like this to force python 2:
|
||||||
|
|
||||||
|
let g:jedi#force_py_version = 2
|
||||||
|
|
||||||
|
By default jedi loads the latest Python version installed on your system that
|
||||||
|
can be found.
|
||||||
|
|
||||||
|
This variable can be changed during runtime.
|
||||||
|
|
||||||
|
Options: 2, 2.7, 3, 3.5, 3.6, ...
|
||||||
|
Default: "auto"
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.13. `g:jedi#smart_auto_mappings` *g:jedi#smart_auto_mappings*
|
||||||
|
|
||||||
|
When you start typing `from module.name<space>` jedi-vim automatically
|
||||||
|
can add the "import" statement and trigger the autocompletion popup.
|
||||||
|
|
||||||
|
You can enable this using: >
|
||||||
|
|
||||||
|
let g:jedi#smart_auto_mappings = 1
|
||||||
|
<
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 0 (disabled by default)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.14. `g:jedi#use_tag_stack` *g:jedi#use_tag_stack*
|
||||||
|
|
||||||
|
Write results of |jedi#goto| to a temporary file and use the |:tjump| command
|
||||||
|
to enable full |tagstack| functionality. Use of the tag stack allows
|
||||||
|
returning to the usage of a function with CTRL-T after exploring the
|
||||||
|
definition with arbitrary changes to the |jumplist|.
|
||||||
|
|
||||||
|
Options: 0 or 1
|
||||||
|
Default: 1 (enabled by default)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.15. `g:jedi#environment_path` *g:jedi#environment_path*
|
||||||
|
*b:jedi_environment_path*
|
||||||
|
|
||||||
|
To use a specific virtualenv or a specific Python version it is possible to
|
||||||
|
set an interpreter.
|
||||||
|
|
||||||
|
Both setting the directory and setting a project is working.
|
||||||
|
|
||||||
|
Examples: "/usr/bin/python3.9", "venv", "../venv", "../venv/bin/python"
|
||||||
|
|
||||||
|
The buffer-local variable `b:jedi_environment_path` can be used to override the
|
||||||
|
global variable `g:jedi#environment_path`.
|
||||||
|
|
||||||
|
Default: "auto"
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.16. `g:jedi#added_sys_path` *g:jedi#added_sys_path*
|
||||||
|
*b:jedi_added_sys_path*
|
||||||
|
|
||||||
|
To add extra sys_path.
|
||||||
|
|
||||||
|
The buffer-local variable `b:jedi_added_sys_path` can be used to add
|
||||||
|
additional extra sys_path.
|
||||||
|
|
||||||
|
Examples: ["../site-packages"]
|
||||||
|
Default: []
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
6.17. `g:jedi#case_insensitive_completion` *g:jedi#case_insensitive_completion*
|
||||||
|
*b:jedi_case_insensitive_completion*
|
||||||
|
|
||||||
|
0 to disable case insensitive completion.
|
||||||
|
1 to enable case insensitive completion (default).
|
||||||
|
|
||||||
|
The buffer-local variable `b:jedi_case_insensitive_completion` can be used to
|
||||||
|
override the global variable `g:jedi#case_insensitive_completion`.
|
||||||
|
|
||||||
|
Default: 1
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
7. Testing *jedi-vim-testing*
|
||||||
|
|
||||||
|
jedi-vim is being tested with a combination of vspec
|
||||||
|
https://github.com/kana/vim-vspec and py.test http://pytest.org/.
|
||||||
|
|
||||||
|
The tests are in the test subdirectory, you can run them calling::
|
||||||
|
|
||||||
|
py.test
|
||||||
|
|
||||||
|
The tests are automatically run with `travis
|
||||||
|
<https://travis-ci.org/davidhalter/jedi-vim>`_.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
8. Contributing *jedi-vim-contributing*
|
||||||
|
|
||||||
|
We love Pull Requests! Read the instructions in `CONTRIBUTING.md`.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
9. License *jedi-vim-license*
|
||||||
|
|
||||||
|
Jedi-vim is licensed with the MIT license.
|
||||||
|
|
||||||
|
vim: textwidth=78 et filetype=help:norightleft:
|
140
sources_non_forked/jedi-vim/doc/logotype-a.svg
Normal file
140
sources_non_forked/jedi-vim/doc/logotype-a.svg
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="897.845px" height="247.51px" viewBox="0 0 897.845 247.51" enable-background="new 0 0 897.845 247.51"
|
||||||
|
xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="287.3965" y1="65.2686" x2="287.3965" y2="106.4546">
|
||||||
|
<stop offset="0" style="stop-color:#E27817"/>
|
||||||
|
<stop offset="0.3906" style="stop-color:#E47519"/>
|
||||||
|
<stop offset="0.7116" style="stop-color:#E96B1F"/>
|
||||||
|
<stop offset="1" style="stop-color:#F15A29"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_1_)" points="285.068,66.556 272.054,95.664 302.739,95.664 302.739,66.556 "/>
|
||||||
|
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="216.8877" y1="65.2686" x2="216.8877" y2="106.4546">
|
||||||
|
<stop offset="0" style="stop-color:#E27817"/>
|
||||||
|
<stop offset="0.3906" style="stop-color:#E47519"/>
|
||||||
|
<stop offset="0.7116" style="stop-color:#E96B1F"/>
|
||||||
|
<stop offset="1" style="stop-color:#F15A29"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_2_)" points="180.483,95.664 193.893,95.664 240.172,95.664 253.292,66.556 180.483,66.556 "/>
|
||||||
|
<g>
|
||||||
|
<polygon fill="#019733" points="256.464,59.293 253.603,65.696 253.593,65.696 253.197,66.592 240.172,95.7 215.738,150.321
|
||||||
|
199.788,185.978 231.676,185.978 231.676,185.969 272.071,95.7 275.634,87.737 285.089,66.592 288.355,59.293 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polygon fill="#019733" points="215.738,150.321 194.605,95.7 180.483,95.7 180.483,135.118 199.788,185.969 199.788,185.978
|
||||||
|
"/>
|
||||||
|
</g>
|
||||||
|
<path fill="#019733" d="M151.355,59.294v100.005h-28.989h-11.292v-7.972c3.644-4.232,6.749-9.936,6.749-16.218
|
||||||
|
c0-2.846-0.456-5.578-1.294-8.104h0.011l-4.274-12.151c-0.238-1.16-0.633-2.257-1.15-3.281v-0.032l-5.878-11.59
|
||||||
|
c-1.201-2.808-3.975-4.897-7.34-5.362c0.281-4.969,2.837-8.87,5.932-8.87l-3.137-1.004l3.137-3.033
|
||||||
|
c-5.01,0-9.098,5.775-9.388,13.021c-3.116,0.609-5.672,2.598-6.79,5.258l-5.723,11.271c-0.052,0.104-0.104,0.197-0.155,0.3v0.01
|
||||||
|
c-0.528,1.057-0.932,2.174-1.169,3.344l-4.232,12.079c-0.012,0.02-0.012,0.03-0.021,0.042c-0.828,2.525-1.294,5.258-1.294,8.104
|
||||||
|
c0,6.282,3.25,11.985,6.904,16.218v35.616h29.112h11.294h58.105V59.294H151.355z M86.554,117.834
|
||||||
|
c-0.673,2.019-2.442,3.252-3.954,2.744c-1.51-0.508-2.194-2.547-1.521-4.565c0.673-2.017,2.443-3.25,3.953-2.742
|
||||||
|
C86.544,113.777,87.228,115.817,86.554,117.834z M110.163,120.578c-1.51,0.508-3.27-0.726-3.954-2.744
|
||||||
|
c-0.672-2.017,0.011-4.057,1.521-4.563c1.512-0.508,3.282,0.726,3.955,2.742C112.357,118.031,111.674,120.07,110.163,120.578z"/>
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="134.6348" y1="65.2686" x2="134.6348" y2="106.4546">
|
||||||
|
<stop offset="0" style="stop-color:#E27817"/>
|
||||||
|
<stop offset="0.3906" style="stop-color:#E47519"/>
|
||||||
|
<stop offset="0.7116" style="stop-color:#E96B1F"/>
|
||||||
|
<stop offset="1" style="stop-color:#F15A29"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_3_)" points="151.292,66.556 117.914,66.556 117.914,95.664 145.981,95.664 151.292,95.664
|
||||||
|
151.355,95.664 151.355,66.592 151.292,66.592 "/>
|
||||||
|
<g opacity="0.5">
|
||||||
|
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="244.0713" y1="198.6924" x2="244.0713" y2="111.1674">
|
||||||
|
<stop offset="0" style="stop-color:#019733"/>
|
||||||
|
<stop offset="0.1363" style="stop-color:#0B732D;stop-opacity:0.8637"/>
|
||||||
|
<stop offset="0.2826" style="stop-color:#145529;stop-opacity:0.7174"/>
|
||||||
|
<stop offset="0.4366" style="stop-color:#1A3D25;stop-opacity:0.5634"/>
|
||||||
|
<stop offset="0.5997" style="stop-color:#1F2C22;stop-opacity:0.4003"/>
|
||||||
|
<stop offset="0.778" style="stop-color:#222221;stop-opacity:0.222"/>
|
||||||
|
<stop offset="1" style="stop-color:#231F20;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_4_)" points="256.464,59.293 253.603,65.696 253.593,65.696 253.197,66.592 240.172,95.7
|
||||||
|
215.738,150.321 199.788,185.978 231.676,185.978 231.676,185.969 272.071,95.7 275.634,87.737 285.089,66.592 288.355,59.293
|
||||||
|
"/>
|
||||||
|
</g>
|
||||||
|
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="165.9131" y1="41.1123" x2="165.9131" y2="128.6277">
|
||||||
|
<stop offset="0" style="stop-color:#019733"/>
|
||||||
|
<stop offset="0.1363" style="stop-color:#0B732D;stop-opacity:0.8637"/>
|
||||||
|
<stop offset="0.2826" style="stop-color:#145529;stop-opacity:0.7174"/>
|
||||||
|
<stop offset="0.4366" style="stop-color:#1A3D25;stop-opacity:0.5634"/>
|
||||||
|
<stop offset="0.5997" style="stop-color:#1F2C22;stop-opacity:0.4003"/>
|
||||||
|
<stop offset="0.778" style="stop-color:#222221;stop-opacity:0.222"/>
|
||||||
|
<stop offset="1" style="stop-color:#231F20;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<rect x="151.355" y="59.294" opacity="0.5" fill="url(#SVGID_5_)" width="29.116" height="127.649"/>
|
||||||
|
<g opacity="0.58">
|
||||||
|
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="198.1104" y1="83.4141" x2="198.1104" y2="154.2879">
|
||||||
|
<stop offset="0" style="stop-color:#019733"/>
|
||||||
|
<stop offset="0.0409" style="stop-color:#038E32;stop-opacity:0.9591"/>
|
||||||
|
<stop offset="0.2465" style="stop-color:#0F662B;stop-opacity:0.7535"/>
|
||||||
|
<stop offset="0.4491" style="stop-color:#184726;stop-opacity:0.5509"/>
|
||||||
|
<stop offset="0.6453" style="stop-color:#1E3123;stop-opacity:0.3547"/>
|
||||||
|
<stop offset="0.8322" style="stop-color:#222421;stop-opacity:0.1678"/>
|
||||||
|
<stop offset="1" style="stop-color:#231F20;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_6_)" points="215.738,150.321 194.605,95.7 180.483,95.7 180.483,135.118 199.788,185.969
|
||||||
|
199.788,185.978 "/>
|
||||||
|
</g>
|
||||||
|
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="127.7627" y1="192.1367" x2="127.7627" y2="137.5901">
|
||||||
|
<stop offset="0" style="stop-color:#019733"/>
|
||||||
|
<stop offset="0.0409" style="stop-color:#038E32;stop-opacity:0.9591"/>
|
||||||
|
<stop offset="0.2465" style="stop-color:#0F662B;stop-opacity:0.7535"/>
|
||||||
|
<stop offset="0.4491" style="stop-color:#184726;stop-opacity:0.5509"/>
|
||||||
|
<stop offset="0.6453" style="stop-color:#1E3123;stop-opacity:0.3547"/>
|
||||||
|
<stop offset="0.8322" style="stop-color:#222421;stop-opacity:0.1678"/>
|
||||||
|
<stop offset="1" style="stop-color:#231F20;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path opacity="0.6" fill="url(#SVGID_7_)" d="M151.355,59.294v100.005h-28.989h-11.292v-7.972
|
||||||
|
c3.644-4.232,6.749-9.936,6.749-16.218c0-2.846-0.456-5.578-1.294-8.104h0.011l-4.274-12.151c-0.238-1.16-0.633-2.257-1.15-3.281
|
||||||
|
v-0.032l-5.878-11.59c-1.201-2.808-3.975-4.897-7.34-5.362c0.281-4.969,2.837-8.87,5.932-8.87l-3.137-1.004l3.137-3.033
|
||||||
|
c-5.01,0-9.098,5.775-9.388,13.021c-3.116,0.609-5.672,2.598-6.79,5.258l-5.723,11.271c-0.052,0.104-0.104,0.197-0.155,0.3v0.01
|
||||||
|
c-0.528,1.057-0.932,2.174-1.169,3.344l-4.232,12.079c-0.012,0.02-0.012,0.03-0.021,0.042c-0.828,2.525-1.294,5.258-1.294,8.104
|
||||||
|
c0,6.282,3.25,11.985,6.904,16.218v35.616h29.112h11.294h58.105V59.294H151.355z M86.554,117.834
|
||||||
|
c-0.673,2.019-2.442,3.252-3.954,2.744c-1.51-0.508-2.194-2.547-1.521-4.565c0.673-2.017,2.443-3.25,3.953-2.742
|
||||||
|
C86.544,113.777,87.228,115.817,86.554,117.834z M110.163,120.578c-1.51,0.508-3.27-0.726-3.954-2.744
|
||||||
|
c-0.672-2.017,0.011-4.057,1.521-4.563c1.512-0.508,3.282,0.726,3.955,2.742C112.357,118.031,111.674,120.07,110.163,120.578z"/>
|
||||||
|
<g opacity="0.5">
|
||||||
|
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="244.0713" y1="53.3584" x2="244.0713" y2="78.0277">
|
||||||
|
<stop offset="0" style="stop-color:#019733"/>
|
||||||
|
<stop offset="0.1363" style="stop-color:#0B732D;stop-opacity:0.8637"/>
|
||||||
|
<stop offset="0.2826" style="stop-color:#145529;stop-opacity:0.7174"/>
|
||||||
|
<stop offset="0.4366" style="stop-color:#1A3D25;stop-opacity:0.5634"/>
|
||||||
|
<stop offset="0.5997" style="stop-color:#1F2C22;stop-opacity:0.4003"/>
|
||||||
|
<stop offset="0.778" style="stop-color:#222221;stop-opacity:0.222"/>
|
||||||
|
<stop offset="1" style="stop-color:#231F20;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_8_)" points="256.464,59.293 253.603,65.696 253.593,65.696 253.197,66.592 240.172,95.7
|
||||||
|
215.738,150.321 199.788,185.978 231.676,185.978 231.676,185.969 272.071,95.7 275.634,87.737 285.089,66.592 288.355,59.293
|
||||||
|
"/>
|
||||||
|
</g>
|
||||||
|
<polygon fill="#019733" points="180.483,59.198 183.329,66.556 180.471,66.556 "/>
|
||||||
|
<polygon fill="#019733" points="180.483,59.198 183.329,66.556 180.471,66.556 "/>
|
||||||
|
<g>
|
||||||
|
<polygon fill="#019733" points="290.713,66.592 285.054,66.592 288.32,59.293 "/>
|
||||||
|
<polygon fill="#019733" points="308.417,120.554 283.562,95.7 300.261,95.7 "/>
|
||||||
|
<polygon opacity="0.6" fill="#019733" points="308.417,120.554 283.562,95.7 300.261,95.7 "/>
|
||||||
|
<polygon fill="#019733" points="290.713,66.592 285.054,66.592 288.32,59.293 "/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="#666666" d="M358.849,130.077v23.827h28.81V77.887h16.547v91.732h-62.987v-39.542H358.849z"/>
|
||||||
|
<path fill="#666666" d="M434.61,93.602v22.677h45.356v14.949H434.61v22.677h45.356v15.715h-62.987V77.887h62.987v15.715H434.61z"
|
||||||
|
/>
|
||||||
|
<path fill="#666666" d="M492.744,169.619V77.887h56.342l6.643,8.05v75.634l-6.579,8.049H492.744z M539.184,93.602h-28.811v60.303
|
||||||
|
h28.811V93.602z"/>
|
||||||
|
<path fill="#666666" d="M586.136,169.619h-17.632V77.887h17.632V169.619z"/>
|
||||||
|
<path fill="#666666" d="M598.913,116.278h33.281v14.949h-33.281V116.278z"/>
|
||||||
|
<path fill="#666666" d="M691.412,77.887h16.544l-19.995,91.732h-21.462l-21.527-91.732h17.63l13.798,70.588L691.412,77.887z"/>
|
||||||
|
<path fill="#666666" d="M738.364,169.619h-17.631V77.887h17.631V169.619z"/>
|
||||||
|
<path fill="#666666" d="M768.77,169.619h-17.632V77.887h17.632l17.886,50.273l18.59-50.273h16.545v91.732h-16.545v-38.392
|
||||||
|
l-12.84,38.392h-10.35l-13.286-38.392V169.619z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 9.8 KiB |
53
sources_non_forked/jedi-vim/ftplugin/python/jedi.vim
Normal file
53
sources_non_forked/jedi-vim/ftplugin/python/jedi.vim
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
if !jedi#init_python()
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
" Initialization of jedi-vim
|
||||||
|
" ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if g:jedi#auto_initialization
|
||||||
|
" goto / get_definition / usages
|
||||||
|
if len(g:jedi#goto_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#goto_command.' :call jedi#goto()<CR>'
|
||||||
|
endif
|
||||||
|
if len(g:jedi#goto_assignments_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#goto_assignments_command.' :call jedi#goto_assignments()<CR>'
|
||||||
|
endif
|
||||||
|
if len(g:jedi#goto_definitions_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#goto_definitions_command.' :call jedi#goto_definitions()<CR>'
|
||||||
|
endif
|
||||||
|
if len(g:jedi#goto_stubs_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#goto_stubs_command.' :call jedi#goto_stubs()<CR>'
|
||||||
|
endif
|
||||||
|
if len(g:jedi#usages_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#usages_command.' :call jedi#usages()<CR>'
|
||||||
|
endif
|
||||||
|
" rename
|
||||||
|
if len(g:jedi#rename_command)
|
||||||
|
execute 'nnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename()<CR>'
|
||||||
|
execute 'vnoremap <buffer> '.g:jedi#rename_command.' :call jedi#rename_visual()<CR>'
|
||||||
|
endif
|
||||||
|
" documentation/pydoc
|
||||||
|
if len(g:jedi#documentation_command)
|
||||||
|
execute 'nnoremap <silent> <buffer>'.g:jedi#documentation_command.' :call jedi#show_documentation()<CR>'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:jedi#show_call_signatures > 0
|
||||||
|
call jedi#configure_call_signatures()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:jedi#completions_enabled == 1
|
||||||
|
inoremap <silent> <buffer> . .<C-R>=jedi#complete_string(1)<CR>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:jedi#smart_auto_mappings == 1
|
||||||
|
inoremap <silent> <buffer> <space> <C-R>=jedi#smart_auto_mappings()<CR>
|
||||||
|
end
|
||||||
|
|
||||||
|
if g:jedi#auto_close_doc
|
||||||
|
" close preview if its still open after insert
|
||||||
|
augroup jedi_preview
|
||||||
|
autocmd! InsertLeave <buffer> if pumvisible() == 0|pclose|endif
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
endif
|
77
sources_non_forked/jedi-vim/plugin/jedi.vim
Normal file
77
sources_non_forked/jedi-vim/plugin/jedi.vim
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
"jedi-vim - Omni Completion for python in vim
|
||||||
|
" Maintainer: David Halter <davidhalter88@gmail.com>
|
||||||
|
"
|
||||||
|
" This part of the software is just the vim interface. The really big deal is
|
||||||
|
" the Jedi Python library.
|
||||||
|
|
||||||
|
if get(g:, 'jedi#auto_vim_configuration', 1)
|
||||||
|
" jedi-vim doesn't work in compatible mode (vim script syntax problems)
|
||||||
|
if &compatible
|
||||||
|
" vint: -ProhibitSetNoCompatible
|
||||||
|
set nocompatible
|
||||||
|
" vint: +ProhibitSetNoCompatible
|
||||||
|
endif
|
||||||
|
|
||||||
|
" jedi-vim really needs, otherwise jedi-vim cannot start.
|
||||||
|
filetype plugin on
|
||||||
|
|
||||||
|
augroup jedi_pyi
|
||||||
|
au!
|
||||||
|
autocmd BufNewFile,BufRead *.pyi set filetype=python
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" Change completeopt, but only if it was not set already.
|
||||||
|
" This gets done on VimEnter, since otherwise Vim fails to restore the
|
||||||
|
" screen. Neovim is not affected, this is likely caused by using
|
||||||
|
" :redir/execute() before the (alternate) terminal is configured.
|
||||||
|
function! s:setup_completeopt()
|
||||||
|
if exists('*execute')
|
||||||
|
let completeopt = execute('silent verb set completeopt?')
|
||||||
|
else
|
||||||
|
redir => completeopt
|
||||||
|
silent verb set completeopt?
|
||||||
|
redir END
|
||||||
|
endif
|
||||||
|
if len(split(completeopt, '\n')) == 1
|
||||||
|
set completeopt=menuone,longest,preview
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
if has('nvim')
|
||||||
|
call s:setup_completeopt()
|
||||||
|
else
|
||||||
|
augroup jedi_startup
|
||||||
|
au!
|
||||||
|
autocmd VimEnter * call s:setup_completeopt()
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
|
||||||
|
if len(mapcheck('<C-c>', 'i')) == 0
|
||||||
|
inoremap <C-c> <ESC>
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Pyimport command
|
||||||
|
command! -nargs=1 -complete=custom,jedi#py_import_completions Pyimport :call jedi#py_import(<q-args>)
|
||||||
|
|
||||||
|
command! -nargs=? -complete=file JediChooseEnvironment :call jedi#choose_environment(<q-args>)
|
||||||
|
command! -nargs=? -complete=file JediLoadProject :call jedi#load_project(<q-args>)
|
||||||
|
|
||||||
|
|
||||||
|
function! s:jedi_debug_info()
|
||||||
|
" Ensure the autoload file has been loaded (and ignore any errors, which
|
||||||
|
" will be displayed with the debug info).
|
||||||
|
let unset = {}
|
||||||
|
let saved_squelch_py_warning = get(g:, 'jedi#squelch_py_warning', unset)
|
||||||
|
let g:jedi#squelch_py_warning = 1
|
||||||
|
call jedi#init_python()
|
||||||
|
if saved_squelch_py_warning is unset
|
||||||
|
unlet g:jedi#squelch_py_warning
|
||||||
|
else
|
||||||
|
let g:jedi#squelch_py_warning = saved_squelch_py_warning
|
||||||
|
endif
|
||||||
|
call jedi#debug_info()
|
||||||
|
endfunction
|
||||||
|
command! -nargs=0 -bar JediDebugInfo call s:jedi_debug_info()
|
||||||
|
command! -nargs=0 -bang JediClearCache call jedi#clear_cache(<bang>0)
|
||||||
|
|
||||||
|
" vim: set et ts=4:
|
1211
sources_non_forked/jedi-vim/pythonx/jedi_vim.py
Normal file
1211
sources_non_forked/jedi-vim/pythonx/jedi_vim.py
Normal file
File diff suppressed because it is too large
Load diff
96
sources_non_forked/jedi-vim/pythonx/jedi_vim_debug.py
Normal file
96
sources_non_forked/jedi-vim/pythonx/jedi_vim_debug.py
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
"""Used in jedi-vim's jedi#debug_info()"""
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import vim
|
||||||
|
from jedi_vim import PythonToVimStr, jedi
|
||||||
|
|
||||||
|
|
||||||
|
def echo(msg):
|
||||||
|
vim.command('echo %r' % PythonToVimStr(msg))
|
||||||
|
|
||||||
|
|
||||||
|
def echo_error(msg):
|
||||||
|
vim.command('echohl ErrorMsg')
|
||||||
|
echo(msg)
|
||||||
|
vim.command('echohl None')
|
||||||
|
|
||||||
|
|
||||||
|
def format_exc_info(exc_info=None, tb_indent=2):
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
if exc_info is None:
|
||||||
|
exc_info = sys.exc_info()
|
||||||
|
|
||||||
|
exc_msg = traceback.format_exception_only(exc_info[0], exc_info[1])
|
||||||
|
lines = ''.join(exc_msg).rstrip('\n').split('\n')
|
||||||
|
|
||||||
|
lines.append('Traceback (most recent call last):')
|
||||||
|
tb = traceback.format_tb(exc_info[2])
|
||||||
|
lines.extend(''.join(tb).rstrip('\n').split('\n'))
|
||||||
|
|
||||||
|
indent = ' ' * tb_indent
|
||||||
|
return '{0}'.format(('\n' + indent).join(lines))
|
||||||
|
|
||||||
|
|
||||||
|
def get_known_environments():
|
||||||
|
"""Get known Jedi environments."""
|
||||||
|
envs = list(jedi.find_virtualenvs())
|
||||||
|
envs.extend(jedi.find_system_environments())
|
||||||
|
return envs
|
||||||
|
|
||||||
|
|
||||||
|
def display_debug_info():
|
||||||
|
echo(' - global sys.executable: `{0}`'.format(sys.executable))
|
||||||
|
echo(' - global sys.version: `{0}`'.format(
|
||||||
|
', '.join([x.strip()
|
||||||
|
for x in sys.version.split('\n')])))
|
||||||
|
echo(' - global site module: `{0}`'.format(__import__('site').__file__))
|
||||||
|
|
||||||
|
try:
|
||||||
|
import jedi_vim
|
||||||
|
except Exception:
|
||||||
|
echo_error('ERROR: could not import jedi_vim: {0}'.format(
|
||||||
|
format_exc_info()))
|
||||||
|
return
|
||||||
|
|
||||||
|
if jedi_vim.jedi is None:
|
||||||
|
if hasattr(jedi_vim, 'jedi_import_error'):
|
||||||
|
error_msg = format_exc_info(jedi_vim.jedi_import_error)
|
||||||
|
else:
|
||||||
|
error_msg = 'unknown error'
|
||||||
|
echo_error('ERROR: could not import the "jedi" Python module: {0}'.format(
|
||||||
|
error_msg))
|
||||||
|
else:
|
||||||
|
echo('\n##### Jedi\n\n - path: `{0}`'.format(jedi_vim.jedi.__file__))
|
||||||
|
echo(' - version: {0}'.format(jedi_vim.jedi.__version__))
|
||||||
|
|
||||||
|
try:
|
||||||
|
project = jedi_vim.get_project()
|
||||||
|
environment = project.get_environment()
|
||||||
|
except AttributeError:
|
||||||
|
script_evaluator = jedi_vim.jedi.Script('')._evaluator
|
||||||
|
try:
|
||||||
|
sys_path = script_evaluator.project.sys_path
|
||||||
|
except AttributeError:
|
||||||
|
sys_path = script_evaluator.sys_path
|
||||||
|
else:
|
||||||
|
echo('\n##### Jedi environment: {0}\n\n'.format(environment))
|
||||||
|
echo(' - executable: {0}'.format(environment.executable))
|
||||||
|
try:
|
||||||
|
sys_path = environment.get_sys_path()
|
||||||
|
except Exception:
|
||||||
|
echo_error('ERROR: failed to get sys path from environment: {0}'.format(
|
||||||
|
format_exc_info()))
|
||||||
|
return
|
||||||
|
|
||||||
|
echo(' - sys_path:')
|
||||||
|
for p in sys_path:
|
||||||
|
echo(' - `{0}`'.format(p))
|
||||||
|
|
||||||
|
if environment:
|
||||||
|
echo('\n##### Known environments\n\n')
|
||||||
|
for environment in get_known_environments():
|
||||||
|
echo(' - {0} ({1})\n'.format(
|
||||||
|
environment,
|
||||||
|
environment.executable,
|
||||||
|
))
|
5
sources_non_forked/jedi-vim/setup.cfg
Normal file
5
sources_non_forked/jedi-vim/setup.cfg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[tool:pytest]
|
||||||
|
testpaths = test
|
||||||
|
|
||||||
|
[flake8]
|
||||||
|
max-line-length = 100
|
11
sources_non_forked/jedi-vim/test/_utils.vim
Normal file
11
sources_non_forked/jedi-vim/test/_utils.vim
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
function! CurrentBufferIsModule(module_name)
|
||||||
|
return EndsWith(bufname('%'), a:module_name.'.py')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function EndsWith(string, end)
|
||||||
|
let l:should = len(a:string) - strlen(a:end)
|
||||||
|
return l:should == stridx(a:string, a:end, should)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
65
sources_non_forked/jedi-vim/test/test_integration.py
Normal file
65
sources_non_forked/jedi-vim/test/test_integration.py
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
"""Runs tests from ./vspec in vim-vspec."""
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
try:
|
||||||
|
from urllib.request import urlretrieve
|
||||||
|
except ImportError:
|
||||||
|
from urllib import urlretrieve
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
vspec_version = '1.9.0'
|
||||||
|
|
||||||
|
VSPEC_URL = 'https://github.com/kana/vim-vspec/archive/%s.zip' % vspec_version
|
||||||
|
root = os.path.dirname(os.path.dirname(__file__))
|
||||||
|
CACHE_FOLDER = os.path.join(root, 'build')
|
||||||
|
VSPEC_FOLDER = os.path.join(CACHE_FOLDER, 'vim-vspec-%s' % vspec_version)
|
||||||
|
VSPEC_RUNNER = os.path.join(VSPEC_FOLDER, 'bin/vspec')
|
||||||
|
TEST_DIR = os.path.join(root, 'test', 'vspec')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def install_vspec():
|
||||||
|
if not os.path.isdir(CACHE_FOLDER):
|
||||||
|
os.mkdir(CACHE_FOLDER)
|
||||||
|
|
||||||
|
if not os.path.exists(VSPEC_FOLDER):
|
||||||
|
name, hdrs = urlretrieve(VSPEC_URL)
|
||||||
|
z = zipfile.ZipFile(name)
|
||||||
|
for n in z.namelist():
|
||||||
|
dest = os.path.join(CACHE_FOLDER, n)
|
||||||
|
destdir = os.path.dirname(dest)
|
||||||
|
if not os.path.isdir(destdir):
|
||||||
|
os.makedirs(destdir)
|
||||||
|
data = z.read(n)
|
||||||
|
if not os.path.isdir(dest):
|
||||||
|
with open(dest, 'wb') as f:
|
||||||
|
f.write(data)
|
||||||
|
z.close()
|
||||||
|
os.chmod(VSPEC_RUNNER, 0o777)
|
||||||
|
|
||||||
|
|
||||||
|
def get_vspec_tests():
|
||||||
|
for f in os.listdir(TEST_DIR):
|
||||||
|
yield os.path.relpath(os.path.join(TEST_DIR, f))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('path', get_vspec_tests())
|
||||||
|
def test_integration(install_vspec, path):
|
||||||
|
output = subprocess.check_output(
|
||||||
|
[VSPEC_RUNNER, '.', VSPEC_FOLDER, os.path.relpath(path, root)],
|
||||||
|
cwd=root,
|
||||||
|
)
|
||||||
|
had_ok = False
|
||||||
|
for line in output.splitlines():
|
||||||
|
if (line.startswith(b'not ok') or
|
||||||
|
line.startswith(b'Error') or
|
||||||
|
line.startswith(b'Bail out!')):
|
||||||
|
pytest.fail(u"{0} failed:\n{1}".format(
|
||||||
|
path, output.decode('utf-8')), pytrace=False)
|
||||||
|
if not had_ok and line.startswith(b'ok'):
|
||||||
|
had_ok = True
|
||||||
|
if not had_ok:
|
||||||
|
pytest.fail(u"{0} failed: no 'ok' found:\n{1}".format(
|
||||||
|
path, output.decode('utf-8')), pytrace=False)
|
8
sources_non_forked/jedi-vim/test/vimrc
Normal file
8
sources_non_forked/jedi-vim/test/vimrc
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
" Minimal vimrc to use jedi-vim.
|
||||||
|
"
|
||||||
|
" Not used anywhere yet, but allows for easy testing.
|
||||||
|
let script_dir = fnamemodify(expand('<sfile>'), ':h:h')
|
||||||
|
let &runtimepath = script_dir.','.&runtimepath.','.script_dir.'/after'
|
||||||
|
|
||||||
|
syntax on
|
||||||
|
filetype plugin indent on
|
29
sources_non_forked/jedi-vim/test/vspec/choose-venv.vim
Normal file
29
sources_non_forked/jedi-vim/test/vspec/choose-venv.vim
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
source plugin/jedi.vim
|
||||||
|
source test/_utils.vim
|
||||||
|
|
||||||
|
describe 'simple:'
|
||||||
|
before
|
||||||
|
new
|
||||||
|
normal! ifoo
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
bd!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'choose'
|
||||||
|
Expect g:jedi#environment_path == 'auto'
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
|
||||||
|
JediChooseEnvironment
|
||||||
|
" A Python executable needs to be a few letters
|
||||||
|
Expect len(getline('.')) > 5
|
||||||
|
Expect bufname('%') == 'Hit Enter to Choose an Environment'
|
||||||
|
|
||||||
|
execute "normal \<CR>"
|
||||||
|
Expect g:jedi#environment_path != 'auto'
|
||||||
|
bd " TODO why is this necessary? There seems to be a random buffer.
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
Expect getline('.') == 'foo'
|
||||||
|
end
|
||||||
|
end
|
131
sources_non_forked/jedi-vim/test/vspec/completions.vim
Normal file
131
sources_non_forked/jedi-vim/test/vspec/completions.vim
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
let g:jedi#completions_command = 'X'
|
||||||
|
source plugin/jedi.vim
|
||||||
|
|
||||||
|
describe 'completions'
|
||||||
|
before
|
||||||
|
new
|
||||||
|
set filetype=python
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
" default
|
||||||
|
let g:jedi#popup_select_first = 1
|
||||||
|
bd!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'longest in completeopt'
|
||||||
|
" This gets set up with Vim only on VimEnter.
|
||||||
|
if has('nvim')
|
||||||
|
Expect stridx(&completeopt, 'longest') > -1
|
||||||
|
else
|
||||||
|
Expect stridx(&completeopt, 'longest') == -1
|
||||||
|
doautocmd VimEnter
|
||||||
|
Expect stridx(&completeopt, 'longest') > -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Do not use it for following tests.
|
||||||
|
set completeopt-=longest
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'no smart import by default'
|
||||||
|
exec "normal ifrom os "
|
||||||
|
Expect getline('.') == 'from os '
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'import'
|
||||||
|
" X is the completion command
|
||||||
|
normal oimporX
|
||||||
|
Expect getline('.') == 'import'
|
||||||
|
normal a subproX
|
||||||
|
Expect getline('.') == 'import subprocess'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'exception'
|
||||||
|
normal oIndentationErrX
|
||||||
|
Expect getline('.') == 'IndentationError'
|
||||||
|
|
||||||
|
" Do not remap keys (".") here, otherwise this triggers completion in
|
||||||
|
" Neovim already.
|
||||||
|
normal! a().filena
|
||||||
|
|
||||||
|
normal aX
|
||||||
|
Expect getline('.') == 'IndentationError().filename'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'multi complete'
|
||||||
|
" NOTE: nvim results in "importErr()" here with completeopt+=longest,
|
||||||
|
" but Vim is fine.
|
||||||
|
" This is due to `pumvisible()` in jedi#complete_opened being true
|
||||||
|
" with nvim still, but it is 0 with Vim, i.e. Vim appears to close
|
||||||
|
" the pum already (with the tests).
|
||||||
|
"
|
||||||
|
" This might be a misunderstanding though, since the test might not
|
||||||
|
" expect the "import" keyword to be offered for completion?!
|
||||||
|
normal oImpXErrX()
|
||||||
|
Expect getline('.') == 'ImportError()'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cycling through entries popup_select_first=0'
|
||||||
|
set completeopt+=longest
|
||||||
|
let g:jedi#popup_select_first = 0
|
||||||
|
execute "normal oraise impX\<C-n>"
|
||||||
|
|
||||||
|
Expect getline('.') == 'raise ImportError'
|
||||||
|
set completeopt-=longest
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cycling through entries popup_select_first=1'
|
||||||
|
execute "normal oraise impX\<C-n>"
|
||||||
|
Expect getline('.') == 'raise ImportWarning'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'cycling through entries popup_select_first=1 and longest'
|
||||||
|
set completeopt+=longest
|
||||||
|
execute "normal oraise impX"
|
||||||
|
Expect getline('.') == 'raise Import'
|
||||||
|
|
||||||
|
" With Neovim pumvisible() is 1 in jedi#complete_opened, which then
|
||||||
|
" triggers the <Down>. This is not the case with Vim.
|
||||||
|
if has('nvim')
|
||||||
|
execute "normal oraise impX\<C-n>"
|
||||||
|
Expect getline('.') == 'raise ImportWarning'
|
||||||
|
|
||||||
|
execute "normal oraise impX\<C-n>\<C-n>"
|
||||||
|
Expect getline('.') == 'raise imp'
|
||||||
|
else
|
||||||
|
execute "normal oraise impX\<C-n>"
|
||||||
|
Expect getline('.') == 'raise ImportError'
|
||||||
|
|
||||||
|
execute "normal oraise impX\<C-n>\<C-n>"
|
||||||
|
Expect getline('.') == 'raise ImportWarning'
|
||||||
|
endif
|
||||||
|
set completeopt-=longest
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'smart completions'
|
||||||
|
before
|
||||||
|
new
|
||||||
|
let g:jedi#smart_auto_mappings = 1
|
||||||
|
set filetype=python
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
" default
|
||||||
|
let g:jedi#smart_auto_mappings = 0
|
||||||
|
bd!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'smart import'
|
||||||
|
exec "normal ifrom os "
|
||||||
|
Expect getline('.') == 'from os import '
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'no smart import after space'
|
||||||
|
exec "normal! ifrom os "
|
||||||
|
exec "normal a "
|
||||||
|
Expect getline('.') == 'from os '
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
|
@ -0,0 +1,20 @@
|
||||||
|
let g:jedi#completions_command = 'X'
|
||||||
|
let g:jedi#completions_enabled = 0
|
||||||
|
source plugin/jedi.vim
|
||||||
|
|
||||||
|
describe 'completions_disabled'
|
||||||
|
before
|
||||||
|
set filetype=python
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'typing'
|
||||||
|
normal oraise ImportErrX
|
||||||
|
Expect getline('.') == 'raise ImportErrX'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
34
sources_non_forked/jedi-vim/test/vspec/documentation.vim
Normal file
34
sources_non_forked/jedi-vim/test/vspec/documentation.vim
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
source plugin/jedi.vim
|
||||||
|
|
||||||
|
describe 'documentation docstrings'
|
||||||
|
before
|
||||||
|
set filetype=python
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'simple'
|
||||||
|
Expect maparg('K') == ':call jedi#show_documentation()<CR>'
|
||||||
|
put = 'ImportError'
|
||||||
|
normal GK
|
||||||
|
Expect bufname('%') == "__doc__"
|
||||||
|
Expect &filetype == 'rst'
|
||||||
|
let header = getline(1, 2)
|
||||||
|
Expect header[0] == "Docstring for class builtins.ImportError"
|
||||||
|
Expect header[1] == "========================================"
|
||||||
|
let content = join(getline(3, '$'), "\n")
|
||||||
|
Expect stridx(content, "Import can't find module") > 0
|
||||||
|
normal K
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'no documentation'
|
||||||
|
put = 'x = 2'
|
||||||
|
normal o<ESC>GK
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
177
sources_non_forked/jedi-vim/test/vspec/goto.vim
Normal file
177
sources_non_forked/jedi-vim/test/vspec/goto.vim
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
let mapleader = '\'
|
||||||
|
source plugin/jedi.vim
|
||||||
|
source test/_utils.vim
|
||||||
|
|
||||||
|
describe 'goto simple:'
|
||||||
|
before
|
||||||
|
new
|
||||||
|
set filetype=python
|
||||||
|
put =[
|
||||||
|
\ 'def a(): pass',
|
||||||
|
\ 'b = a',
|
||||||
|
\ 'c = b',
|
||||||
|
\ ]
|
||||||
|
normal! ggdd
|
||||||
|
normal! G$
|
||||||
|
Expect line('.') == 3
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
bd!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'goto definitions'
|
||||||
|
normal \d
|
||||||
|
Expect line('.') == 2
|
||||||
|
Expect col('.') == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'goto assignments'
|
||||||
|
normal \g
|
||||||
|
Expect line('.') == 2
|
||||||
|
Expect col('.') == 1
|
||||||
|
|
||||||
|
" cursor before `=` means that it stays there.
|
||||||
|
normal \g
|
||||||
|
Expect line('.') == 2
|
||||||
|
Expect col('.') == 1
|
||||||
|
|
||||||
|
" going to the last line changes it.
|
||||||
|
normal! $
|
||||||
|
normal \g
|
||||||
|
Expect line('.') == 1
|
||||||
|
Expect col('.') == 5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe 'goto with tabs:'
|
||||||
|
before
|
||||||
|
set filetype=python
|
||||||
|
let g:jedi#use_tabs_not_buffers = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'follow import'
|
||||||
|
put = ['import subprocess', 'subprocess']
|
||||||
|
normal G\g
|
||||||
|
Expect getline('.') == 'import subprocess'
|
||||||
|
Expect line('.') == 2
|
||||||
|
Expect col('.') == 8
|
||||||
|
|
||||||
|
normal G\d
|
||||||
|
Expect CurrentBufferIsModule('subprocess') == 1
|
||||||
|
Expect line('.') == 1
|
||||||
|
Expect col('.') == 1
|
||||||
|
Expect tabpagenr('$') == 2
|
||||||
|
Expect winnr('$') == 1
|
||||||
|
bwipe
|
||||||
|
|
||||||
|
Expect tabpagenr('$') == 1
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe 'goto with buffers'
|
||||||
|
before
|
||||||
|
set filetype=python
|
||||||
|
let g:jedi#use_tabs_not_buffers = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
set nohidden
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'no new tabs'
|
||||||
|
put = ['import os']
|
||||||
|
normal G$
|
||||||
|
call jedi#goto_assignments()
|
||||||
|
python3 jedi_vim.goto()
|
||||||
|
Expect CurrentBufferIsModule('os') == 0
|
||||||
|
" Without hidden, it's not possible to open a new buffer, when the old
|
||||||
|
" one is not saved.
|
||||||
|
set hidden
|
||||||
|
call jedi#goto_assignments()
|
||||||
|
Expect CurrentBufferIsModule('os') == 1
|
||||||
|
Expect winnr('$') == 1
|
||||||
|
Expect tabpagenr('$') == 1
|
||||||
|
Expect line('.') == 1
|
||||||
|
Expect col('.') == 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
describe 'goto with splits'
|
||||||
|
before
|
||||||
|
enew!
|
||||||
|
set filetype=python
|
||||||
|
let g:jedi#use_splits_not_buffers = 'left'
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'follow import'
|
||||||
|
put = ['import subprocess', 'subprocess']
|
||||||
|
normal G\g
|
||||||
|
Expect getline('.') == 'import subprocess'
|
||||||
|
Expect line('.') == 2
|
||||||
|
Expect col('.') == 8
|
||||||
|
|
||||||
|
normal G\d
|
||||||
|
Expect CurrentBufferIsModule('subprocess') == 1
|
||||||
|
Expect line('.') == 1
|
||||||
|
Expect col('.') == 1
|
||||||
|
Expect winnr('$') == 2
|
||||||
|
wincmd l
|
||||||
|
Expect bufname('%') == ''
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe 'goto wildignore'
|
||||||
|
before
|
||||||
|
enew!
|
||||||
|
set filetype=python
|
||||||
|
set wildignore=*,with\ spaces,*.pyc
|
||||||
|
set hidden
|
||||||
|
let g:jedi#use_tag_stack = 1
|
||||||
|
let g:jedi#use_tabs_not_buffers = 0
|
||||||
|
" Need to use splits for code coverage in new_buffer()
|
||||||
|
let g:jedi#use_splits_not_buffers = 1
|
||||||
|
|
||||||
|
put = ['from subprocess import Popen', 'Popen']
|
||||||
|
Expect CurrentBufferIsModule('subprocess') == 0
|
||||||
|
normal G
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
set wildignore&vim
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'restores wildignore'
|
||||||
|
let before = &wildignore
|
||||||
|
call jedi#goto()
|
||||||
|
Expect getline('.') =~ 'Popen'
|
||||||
|
Expect &wildignore == before
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'not using tagstack'
|
||||||
|
let g:jedi#use_tag_stack = 0
|
||||||
|
call jedi#goto()
|
||||||
|
Expect CurrentBufferIsModule('subprocess') == 1
|
||||||
|
Expect getline('.') =~ 'Popen'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
13
sources_non_forked/jedi-vim/test/vspec/jedi_debug_info.vim
Normal file
13
sources_non_forked/jedi-vim/test/vspec/jedi_debug_info.vim
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
source plugin/jedi.vim
|
||||||
|
|
||||||
|
describe 'JediDebugInfo'
|
||||||
|
it 'works'
|
||||||
|
redir @a | JediDebugInfo | redir END
|
||||||
|
let output = split(@a, '\n')
|
||||||
|
Expect output[0] == 'You should run this in a buffer with filetype "python".'
|
||||||
|
Expect output[1] == '#### Jedi-vim debug information'
|
||||||
|
Expect output[-1] == '</details>'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
" vim: et:ts=4:sw=4
|
34
sources_non_forked/jedi-vim/test/vspec/pyimport.vim
Normal file
34
sources_non_forked/jedi-vim/test/vspec/pyimport.vim
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
source plugin/jedi.vim
|
||||||
|
source test/_utils.vim
|
||||||
|
|
||||||
|
describe 'pyimport'
|
||||||
|
before
|
||||||
|
let g:jedi#use_tabs_not_buffers = 1
|
||||||
|
let g:jedi#project_path = 'autoload'
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
unlet g:jedi#project_path
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'open_tab'
|
||||||
|
Pyimport os
|
||||||
|
Expect CurrentBufferIsModule('os') == 1
|
||||||
|
Pyimport subprocess
|
||||||
|
Expect CurrentBufferIsModule('subprocess') == 1
|
||||||
|
" the empty tab is sometimes also a tab
|
||||||
|
Expect tabpagenr('$') >= 2
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'completion'
|
||||||
|
" don't know how to test this directly
|
||||||
|
"execute "Pyimport subproc\<Tab>"
|
||||||
|
"Expect CurrentBufferIsModule('subprocess') == 1
|
||||||
|
|
||||||
|
Expect jedi#py_import_completions('subproc', 0, 0) == 'subprocess'
|
||||||
|
Expect jedi#py_import_completions('subprocess', 0, 0) == 'subprocess'
|
||||||
|
let g:comp = jedi#py_import_completions('sre_', 0, 0)
|
||||||
|
Expect g:comp == "sre_compile\nsre_constants\nsre_parse"
|
||||||
|
end
|
||||||
|
end
|
143
sources_non_forked/jedi-vim/test/vspec/signatures.vim
Normal file
143
sources_non_forked/jedi-vim/test/vspec/signatures.vim
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
source plugin/jedi.vim
|
||||||
|
|
||||||
|
describe 'signatures'
|
||||||
|
before
|
||||||
|
enew
|
||||||
|
set filetype=python
|
||||||
|
end
|
||||||
|
|
||||||
|
after
|
||||||
|
try | %bwipeout! | catch | endtry
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'simple'
|
||||||
|
normal odef xyz(number): return
|
||||||
|
normal o
|
||||||
|
normal oxyz()
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
Expect getline(3) == '?!?jedi=0, ?!? (*_*number*_*) ?!?jedi?!?'
|
||||||
|
|
||||||
|
doautocmd InsertLeave
|
||||||
|
Expect getline(3) == ''
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'multiple buffers'
|
||||||
|
set hidden
|
||||||
|
new
|
||||||
|
setfiletype python
|
||||||
|
redir => autocmds
|
||||||
|
autocmd jedi_call_signatures * <buffer>
|
||||||
|
redir END
|
||||||
|
Expect autocmds =~# 'jedi_call_signatures'
|
||||||
|
buffer #
|
||||||
|
redir => autocmds
|
||||||
|
autocmd jedi_call_signatures * <buffer>
|
||||||
|
redir END
|
||||||
|
Expect autocmds =~# 'jedi_call_signatures'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'simple after CursorHoldI with only parenthesis'
|
||||||
|
noautocmd normal o
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
noautocmd normal istaticmethod()
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
Expect getline(1) == '?!?jedi=0, ?!? (*_*f: Callable[..., Any]*_*) ?!?jedi?!?'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'highlights correct argument'
|
||||||
|
noautocmd normal o
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
noautocmd normal iformat(42, "x")
|
||||||
|
" Move to x - highlights "x".
|
||||||
|
noautocmd normal 2h
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
Expect getline(1) == '?!?jedi=0, ?!? (value: object, *_*format_spec: str=...*_*) ?!?jedi?!?'
|
||||||
|
" Move left to 42 - hightlights first argument ("value").
|
||||||
|
noautocmd normal 4h
|
||||||
|
doautocmd CursorHoldI
|
||||||
|
Expect getline(1) == '?!?jedi=0, ?!? (*_*value: object*_*, format_spec: str=...) ?!?jedi?!?'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'no signature'
|
||||||
|
exe 'normal ostr '
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
Expect getline(1, '$') == ['', 'str ']
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'signatures disabled'
|
||||||
|
let g:jedi#show_call_signatures = 0
|
||||||
|
|
||||||
|
exe 'normal ostr( '
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
Expect getline(1, '$') == ['', 'str( ']
|
||||||
|
|
||||||
|
let g:jedi#show_call_signatures = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'command line simple'
|
||||||
|
let g:jedi#show_call_signatures = 2
|
||||||
|
call jedi#configure_call_signatures()
|
||||||
|
|
||||||
|
exe 'normal ostaticmethod( '
|
||||||
|
redir => msg
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
redir END
|
||||||
|
Expect msg == "\nstaticmethod(f: Callable[..., Any])"
|
||||||
|
|
||||||
|
redir => msg
|
||||||
|
doautocmd InsertLeave
|
||||||
|
redir END
|
||||||
|
Expect msg == "\n"
|
||||||
|
|
||||||
|
normal Sdef foo(a, b): pass
|
||||||
|
exe 'normal ofoo(a, b, c, '
|
||||||
|
redir => msg
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
redir END
|
||||||
|
Expect msg == "\nfoo(a, b)"
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'command line truncation'
|
||||||
|
let g:jedi#show_call_signatures = 2
|
||||||
|
call jedi#configure_call_signatures()
|
||||||
|
|
||||||
|
function! Signature()
|
||||||
|
redir => msg
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
redir END
|
||||||
|
return msg
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let funcname = repeat('a', &columns - (30 + (&ruler ? 18 : 0)))
|
||||||
|
put = 'def '.funcname.'(arg1, arg2, arg3, a, b, c):'
|
||||||
|
put = ' pass'
|
||||||
|
execute "normal o\<BS>".funcname."( "
|
||||||
|
Expect Signature() == "\n".funcname."(arg1, …)"
|
||||||
|
|
||||||
|
exe 'normal sarg1, '
|
||||||
|
Expect Signature() == "\n".funcname."(…, arg2, …)"
|
||||||
|
|
||||||
|
exe 'normal sarg2, arg3, '
|
||||||
|
Expect Signature() == "\n".funcname."(…, a, b, c)"
|
||||||
|
|
||||||
|
exe 'normal sa, b, '
|
||||||
|
Expect Signature() == "\n".funcname."(…, c)"
|
||||||
|
|
||||||
|
g/^/d
|
||||||
|
put = 'def '.funcname.'('.repeat('b', 20).', arg2):'
|
||||||
|
put = ' pass'
|
||||||
|
execute "normal o\<BS>".funcname."( "
|
||||||
|
Expect Signature() == "\n".funcname."(…)"
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'command line no signature'
|
||||||
|
let g:jedi#show_call_signatures = 2
|
||||||
|
call jedi#configure_call_signatures()
|
||||||
|
|
||||||
|
exe 'normal ostr '
|
||||||
|
redir => msg
|
||||||
|
python3 jedi_vim.show_call_signatures()
|
||||||
|
redir END
|
||||||
|
Expect msg == "\n"
|
||||||
|
end
|
||||||
|
end
|
|
@ -50,6 +50,8 @@ if !exists("no_plugin_maps") && !exists("no_flake8_maps")
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
command! Flake :call flake8#Flake8()
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
|
|
@ -1598,11 +1598,20 @@ function! fugitive#repo(...) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_dir(...) dict abort
|
function! s:repo_dir(...) dict abort
|
||||||
throw 'fugitive: fugitive#repo().dir() has been replaced by FugitiveGitDir()'
|
if !a:0
|
||||||
|
return self.git_dir
|
||||||
|
endif
|
||||||
|
throw 'fugitive: fugitive#repo().dir("...") has been replaced by FugitiveFind(".git/...")'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_tree(...) dict abort
|
function! s:repo_tree(...) dict abort
|
||||||
throw 'fugitive: fugitive#repo().tree() has been replaced by FugitiveFind(":/")'
|
let tree = s:Tree(self.git_dir)
|
||||||
|
if empty(tree)
|
||||||
|
throw 'fugitive: no work tree'
|
||||||
|
elseif !a:0
|
||||||
|
return tree
|
||||||
|
endif
|
||||||
|
throw 'fugitive: fugitive#repo().tree("...") has been replaced by FugitiveFind(":(top)...")'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_bare() dict abort
|
function! s:repo_bare() dict abort
|
||||||
|
@ -1628,11 +1637,11 @@ function! s:repo_git_command(...) dict abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_git_chomp(...) dict abort
|
function! s:repo_git_chomp(...) dict abort
|
||||||
throw 'fugitive: fugitive#repo().git_chomp(...) has been replaced by FugitiveExecute(...).stdout'
|
silent return substitute(system(fugitive#ShellCommand(a:000, self.git_dir)), '\n$', '', '')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_git_chomp_in_tree(...) dict abort
|
function! s:repo_git_chomp_in_tree(...) dict abort
|
||||||
throw 'fugitive: fugitive#repo().git_chomp_in_tree(...) has been replaced by FugitiveExecute(...).stdout'
|
return call(self.git_chomp, a:000, self)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:repo_rev_parse(rev) dict abort
|
function! s:repo_rev_parse(rev) dict abort
|
||||||
|
@ -1642,7 +1651,7 @@ endfunction
|
||||||
call s:add_methods('repo',['git_command','git_chomp','git_chomp_in_tree','rev_parse'])
|
call s:add_methods('repo',['git_command','git_chomp','git_chomp_in_tree','rev_parse'])
|
||||||
|
|
||||||
function! s:repo_config(name) dict abort
|
function! s:repo_config(name) dict abort
|
||||||
throw 'fugitive: fugitive#repo().config(...) has been replaced by FugitiveConfigGet(...)'
|
return FugitiveConfigGet(a:name, self.git_dir)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call s:add_methods('repo',['config'])
|
call s:add_methods('repo',['config'])
|
||||||
|
@ -2388,7 +2397,7 @@ function! s:GlobComplete(lead, pattern, ...) abort
|
||||||
if a:lead ==# '/'
|
if a:lead ==# '/'
|
||||||
return []
|
return []
|
||||||
else
|
else
|
||||||
let results = glob(a:lead . a:pattern, a:0 ? a:1 : 0, 1)
|
let results = glob(substitute(a:lead . a:pattern, '[\{}]', '\\&', 'g'), a:0 ? a:1 : 0, 1)
|
||||||
endif
|
endif
|
||||||
call map(results, 'v:val !~# "/$" && isdirectory(v:val) ? v:val."/" : v:val')
|
call map(results, 'v:val !~# "/$" && isdirectory(v:val) ? v:val."/" : v:val')
|
||||||
call map(results, 'v:val[ strlen(a:lead) : -1 ]')
|
call map(results, 'v:val[ strlen(a:lead) : -1 ]')
|
||||||
|
@ -7196,9 +7205,9 @@ function! s:BlameMaps(is_ftplugin) abort
|
||||||
call s:Map('n', 'o', ':<C-U>exe <SID>BlameCommit("split")<CR>', '<silent>', ft)
|
call s:Map('n', 'o', ':<C-U>exe <SID>BlameCommit("split")<CR>', '<silent>', ft)
|
||||||
call s:Map('n', 'O', ':<C-U>exe <SID>BlameCommit("tabedit")<CR>', '<silent>', ft)
|
call s:Map('n', 'O', ':<C-U>exe <SID>BlameCommit("tabedit")<CR>', '<silent>', ft)
|
||||||
call s:Map('n', 'p', ':<C-U>exe <SID>BlameCommit("pedit")<CR>', '<silent>', ft)
|
call s:Map('n', 'p', ':<C-U>exe <SID>BlameCommit("pedit")<CR>', '<silent>', ft)
|
||||||
call s:Map('n', '.', ":<C-U> <C-R>=substitute(<SID>BlameCommitFileLnum()[0],'^$','@','')<CR><Home>", ft)
|
exe s:Map('n', '.', ":<C-U> <C-R>=substitute(<SID>BlameCommitFileLnum()[0],'^$','@','')<CR><Home>", '', ft)
|
||||||
call s:Map('n', '(', "-", ft)
|
exe s:Map('n', '(', "-", '', ft)
|
||||||
call s:Map('n', ')', "+", ft)
|
exe s:Map('n', ')', "+", '', ft)
|
||||||
call s:Map('n', 'A', ":<C-u>exe 'vertical resize '.(<SID>linechars('.\\{-\\}\\ze [0-9:/+-][0-9:/+ -]* \\d\\+)')+1+v:count)<CR>", '<silent>', ft)
|
call s:Map('n', 'A', ":<C-u>exe 'vertical resize '.(<SID>linechars('.\\{-\\}\\ze [0-9:/+-][0-9:/+ -]* \\d\\+)')+1+v:count)<CR>", '<silent>', ft)
|
||||||
call s:Map('n', 'C', ":<C-u>exe 'vertical resize '.(<SID>linechars('^\\S\\+')+1+v:count)<CR>", '<silent>', ft)
|
call s:Map('n', 'C', ":<C-u>exe 'vertical resize '.(<SID>linechars('^\\S\\+')+1+v:count)<CR>", '<silent>', ft)
|
||||||
call s:Map('n', 'D', ":<C-u>exe 'vertical resize '.(<SID>linechars('.\\{-\\}\\ze\\d\\ze\\s\\+\\d\\+)')+1-v:count)<CR>", '<silent>', ft)
|
call s:Map('n', 'D', ":<C-u>exe 'vertical resize '.(<SID>linechars('.\\{-\\}\\ze\\d\\ze\\s\\+\\d\\+)')+1-v:count)<CR>", '<silent>', ft)
|
||||||
|
|
|
@ -689,6 +689,9 @@ augroup fugitive
|
||||||
\ if FugitiveIsGitDir(expand('<amatch>:p:h')) |
|
\ if FugitiveIsGitDir(expand('<amatch>:p:h')) |
|
||||||
\ let b:git_dir = s:Slash(expand('<amatch>:p:h')) |
|
\ let b:git_dir = s:Slash(expand('<amatch>:p:h')) |
|
||||||
\ exe fugitive#BufReadStatus(v:cmdbang) |
|
\ exe fugitive#BufReadStatus(v:cmdbang) |
|
||||||
|
\ echohl WarningMSG |
|
||||||
|
\ echo "fugitive: Direct editing of .git/" . expand('%:t') . " is deprecated" |
|
||||||
|
\ echohl NONE |
|
||||||
\ elseif filereadable(expand('<amatch>')) |
|
\ elseif filereadable(expand('<amatch>')) |
|
||||||
\ silent doautocmd BufReadPre |
|
\ silent doautocmd BufReadPre |
|
||||||
\ keepalt noautocmd read <amatch> |
|
\ keepalt noautocmd read <amatch> |
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
let s:available = has('nvim') || (
|
let s:available = has('nvim') || (
|
||||||
\ has('job') && (
|
\ has('job') && (
|
||||||
\ (has('patch-7-4-1826') && !has('gui_running')) ||
|
\ (has('patch-7.4.1826') && !has('gui_running')) ||
|
||||||
\ (has('patch-7-4-1850') && has('gui_running')) ||
|
\ (has('patch-7.4.1850') && has('gui_running')) ||
|
||||||
\ (has('patch-7-4-1832') && has('gui_macvim'))
|
\ (has('patch-7.4.1832') && has('gui_macvim'))
|
||||||
\ )
|
\ )
|
||||||
\ )
|
\ )
|
||||||
|
|
||||||
|
|
|
@ -245,8 +245,10 @@ function! s:on_bufenter()
|
||||||
" been any changes to the buffer since the first round, the second round
|
" been any changes to the buffer since the first round, the second round
|
||||||
" will be cheap.
|
" will be cheap.
|
||||||
if has('vim_starting') && !$VIM_GITGUTTER_TEST
|
if has('vim_starting') && !$VIM_GITGUTTER_TEST
|
||||||
if exists('*timer_start')
|
if exists('*timer_start') && has('lambda')
|
||||||
call timer_start(&updatetime, 'GitGutterCursorHold')
|
call s:next_tick("call gitgutter#process_buffer(+".bufnr('').", 0)")
|
||||||
|
else
|
||||||
|
call gitgutter#process_buffer(bufnr(''), 0)
|
||||||
endif
|
endif
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
@ -259,10 +261,6 @@ function! s:on_bufenter()
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! GitGutterCursorHold(timer)
|
|
||||||
execute 'doautocmd' s:nomodeline 'gitgutter CursorHold'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:next_tick(cmd)
|
function! s:next_tick(cmd)
|
||||||
call timer_start(1, {-> execute(a:cmd)})
|
call timer_start(1, {-> execute(a:cmd)})
|
||||||
endfunction
|
endfunction
|
||||||
|
|
|
@ -18,7 +18,8 @@ syntax region jsDocTypeRecord contained start=/{/ end=/}/ contains=jsDocTypeRe
|
||||||
syntax region jsDocTypeRecord contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend
|
syntax region jsDocTypeRecord contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend
|
||||||
syntax region jsDocTypeNoParam contained start="{" end="}" oneline
|
syntax region jsDocTypeNoParam contained start="{" end="}" oneline
|
||||||
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
|
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
|
||||||
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.\{-}]\|=\)\+"
|
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\~\|\.\|:\|\/\|\[.\{-}]\|=\)\+"
|
||||||
|
|
||||||
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
|
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
|
||||||
|
|
||||||
if version >= 508 || !exists("did_javascript_syn_inits")
|
if version >= 508 || !exists("did_javascript_syn_inits")
|
||||||
|
|
|
@ -28,7 +28,7 @@ syntax match jsNoise /[:;]/
|
||||||
syntax match jsNoise /,/ skipwhite skipempty nextgroup=@jsExpression
|
syntax match jsNoise /,/ skipwhite skipempty nextgroup=@jsExpression
|
||||||
syntax match jsDot /\./ skipwhite skipempty nextgroup=jsObjectProp,jsFuncCall,jsPrototype,jsTaggedTemplate
|
syntax match jsDot /\./ skipwhite skipempty nextgroup=jsObjectProp,jsFuncCall,jsPrototype,jsTaggedTemplate
|
||||||
syntax match jsObjectProp contained /\<\K\k*/
|
syntax match jsObjectProp contained /\<\K\k*/
|
||||||
syntax match jsFuncCall /\<\K\k*\ze\s*(/
|
syntax match jsFuncCall /\<\K\k*\ze[\s\n]*(/
|
||||||
syntax match jsParensError /[)}\]]/
|
syntax match jsParensError /[)}\]]/
|
||||||
|
|
||||||
" Program Keywords
|
" Program Keywords
|
||||||
|
|
|
@ -34,7 +34,7 @@ There are many flavors of markdown, each one with an unique feature set. This pl
|
||||||
|
|
||||||
## Style
|
## Style
|
||||||
|
|
||||||
When choosing between multiple valid Markdown syntaxes, the default behavior must be that specified at: <http://www.cirosantilli.com/markdown-styleguide>
|
When choosing between multiple valid Markdown syntaxes, the default behavior must be that specified at: <https://cirosantilli.com/markdown-style-guide>
|
||||||
|
|
||||||
If you wish to have a behavior that differs from that style guide, add an option to turn it on or off, and leave it off by default.
|
If you wish to have a behavior that differs from that style guide, add an option to turn it on or off, and leave it off by default.
|
||||||
|
|
||||||
|
|
|
@ -398,11 +398,6 @@ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
|
||||||
|
|
||||||
SynFold 'for' syn region rubyRepeatExpression start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
|
SynFold 'for' syn region rubyRepeatExpression start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
|
||||||
|
|
||||||
if !exists("ruby_minlines")
|
|
||||||
let ruby_minlines = 500
|
|
||||||
endif
|
|
||||||
exe "syn sync minlines=" . ruby_minlines
|
|
||||||
|
|
||||||
else
|
else
|
||||||
syn match rubyControl "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
|
syn match rubyControl "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
|
||||||
syn match rubyControl "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
|
syn match rubyControl "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
|
||||||
|
@ -411,6 +406,11 @@ else
|
||||||
syn match rubyKeyword "\<\%(alias\|undef\)\>"
|
syn match rubyKeyword "\<\%(alias\|undef\)\>"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists("ruby_minlines")
|
||||||
|
let ruby_minlines = 500
|
||||||
|
endif
|
||||||
|
exe "syn sync minlines=" . ruby_minlines
|
||||||
|
|
||||||
" Special Methods {{{1
|
" Special Methods {{{1
|
||||||
if !exists("ruby_no_special_methods")
|
if !exists("ruby_no_special_methods")
|
||||||
syn match rubyAccess "\<\%(public\|protected\|private\)\>" " use re=2
|
syn match rubyAccess "\<\%(public\|protected\|private\)\>" " use re=2
|
||||||
|
|
|
@ -27,6 +27,12 @@ snippets by typing the name of a snippet hitting the expansion mapping.
|
||||||
snippets/*
|
snippets/*
|
||||||
- [github.com/Shougo/neosnippet](https://github.com/Shougo/neosnippet.vim):
|
- [github.com/Shougo/neosnippet](https://github.com/Shougo/neosnippet.vim):
|
||||||
VimL, supports snippets/* with some configuration.
|
VimL, supports snippets/* with some configuration.
|
||||||
|
- [github.com/dcampos/nvim-snippy](https://github.com/dcampos/nvim-snippy):
|
||||||
|
Lua, supports snippets/* with some configuration.
|
||||||
|
- [github.com/L3MON4D3/LuaSnip](https://github.com/L3MON4D3/LuaSnip):
|
||||||
|
Lua, supports snippets/* with some configuration.
|
||||||
|
Also supports redefining snippets without changing the priority, unlike
|
||||||
|
nvim-snippy.
|
||||||
- [github.com/drmingdrmer/xptemplate](https://github.com/drmingdrmer/xptemplate):
|
- [github.com/drmingdrmer/xptemplate](https://github.com/drmingdrmer/xptemplate):
|
||||||
Totally different syntax, does not read snippets contained in this file, but
|
Totally different syntax, does not read snippets contained in this file, but
|
||||||
it is also very powerful. It does not support vim-snippets (just listing it
|
it is also very powerful. It does not support vim-snippets (just listing it
|
||||||
|
@ -46,6 +52,9 @@ If you have VimL only (vim without python support) your best option is using
|
||||||
[garbas/vim-snipmate](https://github.com/garbas/vim-snipmate) and cope with the
|
[garbas/vim-snipmate](https://github.com/garbas/vim-snipmate) and cope with the
|
||||||
minor bugs found in the engine.
|
minor bugs found in the engine.
|
||||||
|
|
||||||
|
If you use Neovim and prefer Lua plugins,
|
||||||
|
[L3MON4D3/LuaSnip](https://github.com/L3MON4D3/LuaSnip) is the best option.
|
||||||
|
|
||||||
**Q**: Should snipMate be deprecated in favour of UltiSnips?
|
**Q**: Should snipMate be deprecated in favour of UltiSnips?
|
||||||
|
|
||||||
**A**: No, because snipMate is VimL, and UltiSnips requires Python.
|
**A**: No, because snipMate is VimL, and UltiSnips requires Python.
|
||||||
|
|
|
@ -30,6 +30,11 @@ endglobal
|
||||||
###########################################################################
|
###########################################################################
|
||||||
# TextMate Snippets #
|
# TextMate Snippets #
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
snippet ponce "#pragma once include guard"
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
endsnippet
|
||||||
|
|
||||||
snippet main
|
snippet main
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -67,6 +72,14 @@ namespace${1/.+/ /m}${1:`!p snip.rv = snip.basename or "name"`}
|
||||||
}${1/.+/ \/* /m}$1${1/.+/ *\/ /m}
|
}${1/.+/ \/* /m}$1${1/.+/ *\/ /m}
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
snippet nsa "namespace alias"
|
||||||
|
namespace ${1:alias} = ${2:namespace};
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
snippet using "using directive/using declaration/type alias"
|
||||||
|
using ${1:namespace}`!p snip.rv = ' ' if t[1] == 'namespace' else ' = ' if t[1] != '' else ''`${2:name};
|
||||||
|
endsnippet
|
||||||
|
|
||||||
snippet readfile "read file (readF)"
|
snippet readfile "read file (readF)"
|
||||||
std::vector<char> v;
|
std::vector<char> v;
|
||||||
if (FILE *fp = fopen(${1:"filename"}, "r"))
|
if (FILE *fp = fopen(${1:"filename"}, "r"))
|
||||||
|
|
|
@ -104,11 +104,11 @@ snippet local "local x = 1"
|
||||||
local ${1:x} = ${0:1}
|
local ${1:x} = ${0:1}
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet use "Use" Ab
|
snippet use "Use" b
|
||||||
use { '$1' }
|
use { '$1' }
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet req "Require"
|
snippet req "Require" b
|
||||||
require('$1')
|
require('$1')
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
|
28
sources_non_forked/vim-snippets/UltiSnips/smarty.snippets
Normal file
28
sources_non_forked/vim-snippets/UltiSnips/smarty.snippets
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# snippets for smarty3
|
||||||
|
|
||||||
|
extends html
|
||||||
|
extends javascript
|
||||||
|
extends css
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# https://www.smarty.net/docs/en/language.function.append.tpl
|
||||||
|
snippet append "{append} is used for creating or appending template variable arrays during the execution of a template."
|
||||||
|
{append var='${1}' value='${2}'${3: index='${4|first,last|}'}${5: scope='${6|parent,root,global|}'}}
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
# https://www.smarty.net/docs/en/language.function.assign.tpl
|
||||||
|
snippet assign "{assign} is used for assigning template variables during the execution of a template."
|
||||||
|
{assign var='${1}' value='${2}'${3: scope='${4|parent,root,global|}'}}
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
# https://www.smarty.net/docs/en/language.function.config.load.tpl
|
||||||
|
snippet config_load "config_load"
|
||||||
|
{config_load file='${1}'${2: section='${3}'}${4: scope='${5|local,parent,global|}'}}
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
# https://www.smarty.net/docs/en/language.function.include.tpl
|
||||||
|
snippet include "{include} tags are used for including other templates in the current template. Any variables available in the current template are also available within the included template."
|
||||||
|
{include file='${1}'${2: assign='${3}'}${4: cache_lifetime=${5}}${6: compile_id='${7}'}${8: cache_id='${9}'}${10: scope='${11|parent,root,global|}'}${12: variables}}
|
||||||
|
endsnippet
|
|
@ -454,27 +454,6 @@ snippet docls "Document Class" bA
|
||||||
\documentclass{$1}$0
|
\documentclass{$1}$0
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet tmplt "Template"
|
|
||||||
\documentclass{article}
|
|
||||||
|
|
||||||
\usepackage{import}
|
|
||||||
\usepackage{pdfpages}
|
|
||||||
\usepackage{transparent}
|
|
||||||
\usepackage{xcolor}
|
|
||||||
$1
|
|
||||||
|
|
||||||
\newcommand{\incfig}[2][1]{%
|
|
||||||
\def\svgwidth{#1\columnwidth}
|
|
||||||
\import{./figures/}{#2.pdf_tex}
|
|
||||||
}
|
|
||||||
$2
|
|
||||||
\pdfsuppresswarningpagegroup=1
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
$0
|
|
||||||
\end{document}
|
|
||||||
endsnippet
|
|
||||||
|
|
||||||
|
|
||||||
#########
|
#########
|
||||||
# OTHER #
|
# OTHER #
|
||||||
|
|
|
@ -114,7 +114,7 @@ snippet forr
|
||||||
}
|
}
|
||||||
# If Condition
|
# If Condition
|
||||||
snippet if
|
snippet if
|
||||||
if (${1:/* condition */}) {
|
if ($1) {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
snippet el
|
snippet el
|
||||||
|
@ -122,8 +122,8 @@ snippet el
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
# Ternary conditional
|
# Ternary conditional
|
||||||
snippet t
|
snippet t Ternary: `condition ? true : false`
|
||||||
${1:/* condition */} ? ${2:a} : ${0:b}
|
$1 ? $2 : $0
|
||||||
snippet fun
|
snippet fun
|
||||||
function ${1:function_name}(${2})${3}
|
function ${1:function_name}(${2})${3}
|
||||||
{
|
{
|
||||||
|
@ -150,4 +150,3 @@ snippet FlxSprite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
sources_non_forked/vim-snippets/snippets/all.snippets
Normal file
1
sources_non_forked/vim-snippets/snippets/all.snippets
Normal file
|
@ -0,0 +1 @@
|
||||||
|
extends _
|
|
@ -19,7 +19,7 @@ snippet def
|
||||||
|
|
||||||
# if
|
# if
|
||||||
snippet if
|
snippet if
|
||||||
if (${1:/* condition */}) {
|
if ($1) {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
# else
|
# else
|
||||||
|
@ -29,12 +29,12 @@ snippet el
|
||||||
}
|
}
|
||||||
# else if
|
# else if
|
||||||
snippet elif
|
snippet elif
|
||||||
else if (${1:/* condition */}) {
|
else if ($1) {
|
||||||
${2}
|
${2}
|
||||||
}
|
}
|
||||||
# ifi
|
# ifi
|
||||||
snippet ifi
|
snippet ifi
|
||||||
if (${1:/* condition */}) ${2};
|
if ($1) ${2};
|
||||||
|
|
||||||
# switch
|
# switch
|
||||||
snippet switch
|
snippet switch
|
||||||
|
@ -63,14 +63,14 @@ snippet forr
|
||||||
}
|
}
|
||||||
# while
|
# while
|
||||||
snippet wh
|
snippet wh
|
||||||
while (${1:/* condition */}) {
|
while ($1) {
|
||||||
${2}
|
${2}
|
||||||
}
|
}
|
||||||
# do... while
|
# do... while
|
||||||
snippet do
|
snippet do
|
||||||
do {
|
do {
|
||||||
${2}
|
${2}
|
||||||
} while (${1:/* condition */});
|
} while ($1);
|
||||||
##
|
##
|
||||||
## Functions
|
## Functions
|
||||||
# function definition
|
# function definition
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
snippet if
|
snippet if
|
||||||
If ${1:condition} Then
|
If $1 Then
|
||||||
${0:; True code}
|
${0:; True code}
|
||||||
EndIf
|
EndIf
|
||||||
snippet el
|
snippet el
|
||||||
Else
|
Else
|
||||||
${0}
|
${0}
|
||||||
snippet eif
|
snippet eif
|
||||||
ElseIf ${1:condition} Then
|
ElseIf $1 Then
|
||||||
${0:; True code}
|
${0:; True code}
|
||||||
# If/Else block
|
# If/Else block
|
||||||
snippet ife
|
snippet ife
|
||||||
If ${1:condition} Then
|
If $1 Then
|
||||||
${2:; True code}
|
${2:; True code}
|
||||||
Else
|
Else
|
||||||
${0:; Else code}
|
${0:; Else code}
|
||||||
|
@ -26,7 +26,7 @@ snippet ifelif
|
||||||
EndIf
|
EndIf
|
||||||
# Switch block
|
# Switch block
|
||||||
snippet switch
|
snippet switch
|
||||||
Switch (${1:condition})
|
Switch ($1)
|
||||||
Case ${2:case1}:
|
Case ${2:case1}:
|
||||||
${3:; Case 1 code}
|
${3:; Case 1 code}
|
||||||
Case Else:
|
Case Else:
|
||||||
|
@ -34,7 +34,7 @@ snippet switch
|
||||||
EndSwitch
|
EndSwitch
|
||||||
# Select block
|
# Select block
|
||||||
snippet select
|
snippet select
|
||||||
Select (${1:condition})
|
Select ($1)
|
||||||
Case ${2:case1}:
|
Case ${2:case1}:
|
||||||
${3:; Case 1 code}
|
${3:; Case 1 code}
|
||||||
Case Else:
|
Case Else:
|
||||||
|
@ -42,7 +42,7 @@ snippet select
|
||||||
EndSelect
|
EndSelect
|
||||||
# While loop
|
# While loop
|
||||||
snippet wh
|
snippet wh
|
||||||
While (${1:condition})
|
While ($1)
|
||||||
${0:; code...}
|
${0:; code...}
|
||||||
WEnd
|
WEnd
|
||||||
# For loop
|
# For loop
|
||||||
|
|
25
sources_non_forked/vim-snippets/snippets/bash.snippets
Normal file
25
sources_non_forked/vim-snippets/snippets/bash.snippets
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
extends sh
|
||||||
|
|
||||||
|
# Shebang
|
||||||
|
snippet #!
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
snippet s#!
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
snippet if
|
||||||
|
if [[ $1 ]]; then
|
||||||
|
${0:${VISUAL}}
|
||||||
|
fi
|
||||||
|
snippet elif
|
||||||
|
elif [[ $1 ]]; then
|
||||||
|
${0:${VISUAL}}
|
||||||
|
snippet wh
|
||||||
|
while [[ $1 ]]; do
|
||||||
|
${0:${VISUAL}}
|
||||||
|
done
|
||||||
|
snippet until
|
||||||
|
until [[ $1 ]]; do
|
||||||
|
${0:${VISUAL}}
|
||||||
|
done
|
|
@ -4,23 +4,23 @@ snippet main
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
${0}
|
${0}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
# main(void)
|
# main(void)
|
||||||
snippet mainn
|
snippet mainn
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
${0}
|
${0}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
##
|
##
|
||||||
## Preprocessor
|
## Preprocessor
|
||||||
# #include <...>
|
# #include <...>
|
||||||
snippet inc
|
snippet inc
|
||||||
#include <${1:stdio}.h>
|
#include <${1:stdio}.h>
|
||||||
|
$0
|
||||||
# #include "..."
|
# #include "..."
|
||||||
snippet Inc
|
snippet Inc
|
||||||
#include "${1:`vim_snippets#Filename("$1.h")`}"
|
#include "${1:`vim_snippets#Filename("$1.h")`}"
|
||||||
|
$0
|
||||||
# ifndef...define...endif
|
# ifndef...define...endif
|
||||||
snippet ndef
|
snippet ndef
|
||||||
#ifndef $1
|
#ifndef $1
|
||||||
|
@ -86,8 +86,8 @@ snippet elif
|
||||||
snippet ifi
|
snippet ifi
|
||||||
if (${1:true}) ${0};
|
if (${1:true}) ${0};
|
||||||
# ternary
|
# ternary
|
||||||
snippet t
|
snippet t Ternary: `condition ? true : false`
|
||||||
${1:/* condition */} ? ${2:a} : ${3:b}
|
$1 ? $2 : $0
|
||||||
# switch
|
# switch
|
||||||
snippet switch
|
snippet switch
|
||||||
switch (${1:/* variable */}) {
|
switch (${1:/* variable */}) {
|
||||||
|
@ -111,6 +111,8 @@ snippet case
|
||||||
${3:break;}
|
${3:break;}
|
||||||
snippet ret
|
snippet ret
|
||||||
return ${0};
|
return ${0};
|
||||||
|
snippet ex
|
||||||
|
exit($0);
|
||||||
##
|
##
|
||||||
## Loops
|
## Loops
|
||||||
# for
|
# for
|
||||||
|
@ -125,14 +127,18 @@ snippet forr
|
||||||
}
|
}
|
||||||
# while
|
# while
|
||||||
snippet wh
|
snippet wh
|
||||||
while (${1:/* condition */}) {
|
while (${1:1}) {
|
||||||
|
${0:${VISUAL}}
|
||||||
|
}
|
||||||
|
snippet wht
|
||||||
|
while (true) {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
# do... while
|
# do... while
|
||||||
snippet do
|
snippet do
|
||||||
do {
|
do {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
} while (${1:/* condition */});
|
} while ($1);
|
||||||
##
|
##
|
||||||
## Functions
|
## Functions
|
||||||
# function definition
|
# function definition
|
||||||
|
@ -277,6 +283,14 @@ snippet prf
|
||||||
printf("${1:} = %f\n", $1);
|
printf("${1:} = %f\n", $1);
|
||||||
snippet prx
|
snippet prx
|
||||||
printf("${1:} = %${2}\n", $1);
|
printf("${1:} = %${2}\n", $1);
|
||||||
|
snippet warn
|
||||||
|
warn("${1:%s}"$0);
|
||||||
|
snippet warnx
|
||||||
|
warnx("${1:%s}"$0);
|
||||||
|
snippet err
|
||||||
|
err(${1:1}, "${2:%s}"$0);
|
||||||
|
snippet errx
|
||||||
|
errx(${1:1}, "${2:%s}"$0);
|
||||||
# getopt
|
# getopt
|
||||||
snippet getopt
|
snippet getopt
|
||||||
int choice;
|
int choice;
|
||||||
|
@ -337,7 +351,7 @@ snippet getopt
|
||||||
|
|
||||||
## Assertions
|
## Assertions
|
||||||
snippet asr
|
snippet asr
|
||||||
assert(${1:condition});
|
assert($1);
|
||||||
|
|
||||||
snippet anl
|
snippet anl
|
||||||
assert(${1:ptr} != NULL);
|
assert(${1:ptr} != NULL);
|
||||||
|
|
|
@ -81,7 +81,7 @@ snippet print
|
||||||
snippet reduce
|
snippet reduce
|
||||||
(reduce ${1:(fn [p n] ${3})} ${2})
|
(reduce ${1:(fn [p n] ${3})} ${2})
|
||||||
snippet when
|
snippet when
|
||||||
(when ${1:test} ${0:body})
|
(when ${1:test} $0)
|
||||||
snippet when-let
|
snippet when-let
|
||||||
(when-let [${1:result} ${2:test}]
|
(when-let [${1:result} ${2:test}]
|
||||||
${0:body})
|
$0)
|
||||||
|
|
|
@ -99,7 +99,7 @@ snippet ci_db-select
|
||||||
snippet ci_db-from
|
snippet ci_db-from
|
||||||
$this->db->from("${1:table}");${2}
|
$this->db->from("${1:table}");${2}
|
||||||
snippet ci_db-join
|
snippet ci_db-join
|
||||||
$this->db->join("${1:table}", "${2:condition}", "${3:type}");${4}
|
$this->db->join("${1:table}", "$2", "${3:type}");${4}
|
||||||
snippet ci_db-where
|
snippet ci_db-where
|
||||||
$this->db->where("${1:key}", "${2:value}");${3}
|
$this->db->where("${1:key}", "${2:value}");${3}
|
||||||
snippet ci_db-or_where
|
snippet ci_db-or_where
|
||||||
|
|
|
@ -2,37 +2,37 @@
|
||||||
snippet forindo
|
snippet forindo
|
||||||
for ${1:name} in ${2:array}
|
for ${1:name} in ${2:array}
|
||||||
do ($1) ->
|
do ($1) ->
|
||||||
${0:// body}
|
$0
|
||||||
# Array comprehension
|
# Array comprehension
|
||||||
snippet fora
|
snippet fora
|
||||||
for ${1:name} in ${2:array}
|
for ${1:name} in ${2:array}
|
||||||
${0:# body...}
|
$0
|
||||||
# Object comprehension
|
# Object comprehension
|
||||||
snippet foro
|
snippet foro
|
||||||
for ${1:key}, ${2:value} of ${3:object}
|
for ${1:key}, ${2:value} of ${3:object}
|
||||||
${0:# body...}
|
$0
|
||||||
# Range comprehension (inclusive)
|
# Range comprehension (inclusive)
|
||||||
snippet forr
|
snippet forr
|
||||||
for ${1:name} in [${2:start}..${3:finish}]
|
for ${1:name} in [${2:start}..${3:finish}]
|
||||||
${0:# body...}
|
$0
|
||||||
snippet forrb
|
snippet forrb
|
||||||
for ${1:name} in [${2:start}..${3:finish}] by ${4:step}
|
for ${1:name} in [${2:start}..${3:finish}] by ${4:step}
|
||||||
${0:# body...}
|
$0
|
||||||
# Range comprehension (exclusive)
|
# Range comprehension (exclusive)
|
||||||
snippet forrex
|
snippet forrex
|
||||||
for ${1:name} in [${2:start}...${3:finish}]
|
for ${1:name} in [${2:start}...${3:finish}]
|
||||||
${0:# body...}
|
$0
|
||||||
snippet forrexb
|
snippet forrexb
|
||||||
for ${1:name} in [${2:start}...${3:finish}] by ${4:step}
|
for ${1:name} in [${2:start}...${3:finish}] by ${4:step}
|
||||||
${0:# body...}
|
$0
|
||||||
# Function
|
# Function
|
||||||
snippet fun
|
snippet fun
|
||||||
(${1:args}) ->
|
(${1:args}) ->
|
||||||
${0:# body...}
|
$0
|
||||||
# Function (bound)
|
# Function (bound)
|
||||||
snippet bfun
|
snippet bfun
|
||||||
(${1:args}) =>
|
(${1:args}) =>
|
||||||
${0:# body...}
|
$0
|
||||||
# Class
|
# Class
|
||||||
snippet cla class ..
|
snippet cla class ..
|
||||||
class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
|
class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
|
||||||
|
@ -54,29 +54,29 @@ snippet cla class .. extends .. constructor: ..
|
||||||
${0}
|
${0}
|
||||||
# If
|
# If
|
||||||
snippet if
|
snippet if
|
||||||
if ${1:condition}
|
if $1
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
# If __ Else
|
# If __ Else
|
||||||
snippet ife
|
snippet ife
|
||||||
if ${1:condition}
|
if $1
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
else
|
else
|
||||||
${0:# body...}
|
${0}
|
||||||
# Else if
|
# Else if
|
||||||
snippet eif
|
snippet eif
|
||||||
else if ${1:condition}
|
else if $1
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
# Ternary If
|
# Ternary If
|
||||||
snippet ifte
|
snippet ifte Ternary
|
||||||
if ${1:condition} then ${2:value} else ${0:other}
|
if $1 then $2 else $0
|
||||||
# Unless
|
# Unless
|
||||||
snippet unl
|
snippet unl Unless
|
||||||
${1:action} unless ${0:condition}
|
$1 unless $0
|
||||||
# Switch
|
# Switch
|
||||||
snippet swi
|
snippet swi
|
||||||
switch ${1:object}
|
switch ${1:object}
|
||||||
when ${2:value}
|
when ${2:value}
|
||||||
${0:# body...}
|
$0
|
||||||
|
|
||||||
# Log
|
# Log
|
||||||
snippet log
|
snippet log
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
extends c
|
extends c
|
||||||
|
|
||||||
|
## Main
|
||||||
|
# main()
|
||||||
|
snippet mainn
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
##
|
##
|
||||||
## Preprocessor
|
## Preprocessor
|
||||||
# #include <...>
|
# #include <...>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
snippet req require
|
snippet req require
|
||||||
require "${1}"
|
require "${1}"
|
||||||
snippet case
|
snippet case
|
||||||
case ${1:object}
|
case $1
|
||||||
when ${2:condition}
|
when $2
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet when
|
snippet when
|
||||||
when ${1:condition}
|
when $1
|
||||||
${0}
|
${0}
|
||||||
snippet def
|
snippet def
|
||||||
def ${1:method_name}
|
def ${1:method_name}
|
||||||
|
@ -17,17 +17,17 @@ snippet pdef
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet if
|
snippet if
|
||||||
if ${1:condition}
|
if $1
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
end
|
end
|
||||||
snippet ife
|
snippet ife
|
||||||
if ${1:condition}
|
if $1
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
else
|
else
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet wh
|
snippet wh
|
||||||
while ${1:condition}
|
while $1
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
end
|
end
|
||||||
snippet cla class .. end
|
snippet cla class .. end
|
||||||
|
|
|
@ -61,15 +61,15 @@ snippet fore
|
||||||
${0}
|
${0}
|
||||||
}
|
}
|
||||||
snippet wh
|
snippet wh
|
||||||
while (${1:/* condition */}) {
|
while ($1) {
|
||||||
${0}
|
${0}
|
||||||
}
|
}
|
||||||
snippet dowh
|
snippet dowh
|
||||||
do {
|
do {
|
||||||
${0}
|
${0}
|
||||||
} while (${0:/* condition */});
|
} while ($0);
|
||||||
snippet as
|
snippet as
|
||||||
assert(${0:/* condition */});
|
assert($0);
|
||||||
snippet try
|
snippet try
|
||||||
try {
|
try {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
|
|
|
@ -13,29 +13,29 @@ snippet if if .. do .. end
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
end
|
end
|
||||||
snippet if: if .. do: ..
|
snippet if: if .. do: ..
|
||||||
if ${1:condition}, do: ${0}
|
if $1, do: ${0}
|
||||||
snippet ife if .. do .. else .. end
|
snippet ife if .. do .. else .. end
|
||||||
if ${1:condition} do
|
if $1 do
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
else
|
else
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet ife: if .. do: .. else:
|
snippet ife: if .. do: .. else:
|
||||||
if ${1:condition}, do: ${2}, else: ${0}
|
if $1, do: ${2}, else: ${0}
|
||||||
snippet unless unless .. do .. end
|
snippet unless unless .. do .. end
|
||||||
unless ${1} do
|
unless ${1} do
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
end
|
end
|
||||||
snippet unless: unless .. do: ..
|
snippet unless: unless .. do: ..
|
||||||
unless ${1:condition}, do: ${0}
|
unless $1, do: ${0}
|
||||||
snippet unlesse unless .. do .. else .. end
|
snippet unlesse unless .. do .. else .. end
|
||||||
unless ${1:condition} do
|
unless $1 do
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
else
|
else
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
snippet unlesse: unless .. do: .. else:
|
snippet unlesse: unless .. do: .. else:
|
||||||
unless ${1:condition}, do: ${2}, else: ${0}
|
unless $1, do: ${2}, else: ${0}
|
||||||
snippet cond
|
snippet cond
|
||||||
cond do
|
cond do
|
||||||
${1} ->
|
${1} ->
|
||||||
|
|
|
@ -17,7 +17,7 @@ snippet dt
|
||||||
erlang:display({${1}, ${0}}),
|
erlang:display({${1}, ${0}}),
|
||||||
# define directive
|
# define directive
|
||||||
snippet def
|
snippet def
|
||||||
-define(${1:macro}, ${2:body}).
|
-define(${1:macro}, $2).
|
||||||
# export directive
|
# export directive
|
||||||
snippet exp
|
snippet exp
|
||||||
-export([${1:function}/${0:arity}]).
|
-export([${1:function}/${0:arity}]).
|
||||||
|
@ -44,17 +44,17 @@ snippet undef
|
||||||
snippet if
|
snippet if
|
||||||
if
|
if
|
||||||
${1:guard} ->
|
${1:guard} ->
|
||||||
${0:body}
|
$0
|
||||||
end
|
end
|
||||||
# case expression
|
# case expression
|
||||||
snippet case
|
snippet case
|
||||||
case ${1:expression} of
|
case ${1:expression} of
|
||||||
${2:pattern} ->
|
${2:pattern} ->
|
||||||
${0:body};
|
$0;
|
||||||
end
|
end
|
||||||
# anonymous function
|
# anonymous function
|
||||||
snippet fun
|
snippet fun
|
||||||
fun (${1:Parameters}) -> ${2:body} end
|
fun (${1:Parameters}) -> $2 end
|
||||||
# try...catch
|
# try...catch
|
||||||
snippet try
|
snippet try
|
||||||
try
|
try
|
||||||
|
@ -65,10 +65,10 @@ snippet try
|
||||||
snippet rcv "Receive Expression"
|
snippet rcv "Receive Expression"
|
||||||
receive
|
receive
|
||||||
${1: ${2:pattern}${3: when ${4:guard}} ->
|
${1: ${2:pattern}${3: when ${4:guard}} ->
|
||||||
${5:body}}
|
$5
|
||||||
${6:after
|
${6:after
|
||||||
${7:expression} ->
|
${7:expression} ->
|
||||||
${8:body}}
|
$8
|
||||||
end
|
end
|
||||||
# record directive
|
# record directive
|
||||||
snippet rec
|
snippet rec
|
||||||
|
|
|
@ -19,13 +19,13 @@ snippet class
|
||||||
|
|
||||||
# If
|
# If
|
||||||
snippet if
|
snippet if
|
||||||
if ${1:condition}
|
if $1
|
||||||
${0}
|
${0}
|
||||||
end
|
end
|
||||||
|
|
||||||
# If else
|
# If else
|
||||||
snippet ife
|
snippet ife
|
||||||
if ${1:condition}
|
if $1
|
||||||
${0}
|
${0}
|
||||||
else
|
else
|
||||||
${1}
|
${1}
|
||||||
|
@ -33,7 +33,7 @@ snippet ife
|
||||||
|
|
||||||
# If else if
|
# If else if
|
||||||
snippet eif
|
snippet eif
|
||||||
elif ${1:condition}
|
elif $1
|
||||||
${0}
|
${0}
|
||||||
|
|
||||||
# Switch case
|
# Switch case
|
||||||
|
|
|
@ -64,7 +64,7 @@ snippet intent
|
||||||
snippet /
|
snippet /
|
||||||
(/ $1 /) ${2:,&} ${0}
|
(/ $1 /) ${2:,&} ${0}
|
||||||
snippet if
|
snippet if
|
||||||
if (${1:condition}) then
|
if ($1) then
|
||||||
${0}
|
${0}
|
||||||
end if
|
end if
|
||||||
snippet case
|
snippet case
|
||||||
|
@ -78,7 +78,7 @@ snippet do
|
||||||
${0}
|
${0}
|
||||||
end do
|
end do
|
||||||
snippet dow
|
snippet dow
|
||||||
do while (${1:condition})
|
do while ($1)
|
||||||
$2
|
$2
|
||||||
end do
|
end do
|
||||||
snippet sub
|
snippet sub
|
||||||
|
|
|
@ -64,13 +64,13 @@ snippet inf "full interface "
|
||||||
}
|
}
|
||||||
|
|
||||||
snippet if "if condition"
|
snippet if "if condition"
|
||||||
if ${1:/* condition */} {
|
if $1 {
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
snippet ife "if else condition"
|
snippet ife "if else condition"
|
||||||
if ${1:/* condition */} {
|
if $1 {
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
} else {
|
} else {
|
||||||
${0}
|
${0}
|
||||||
|
|
|
@ -26,12 +26,12 @@ snippet mt
|
||||||
snippet mts
|
snippet mts
|
||||||
= mail_to ${1:email_address}, ${2:name}, :subject => ${3}, :body => ${4}
|
= mail_to ${1:email_address}, ${2:name}, :subject => ${3}, :body => ${4}
|
||||||
snippet ife
|
snippet ife
|
||||||
- if ${1:condition}
|
- if $1
|
||||||
${2:${VISUAL}}
|
${2:${VISUAL}}
|
||||||
- else
|
- else
|
||||||
${0}
|
${0}
|
||||||
snippet ifp
|
snippet ifp
|
||||||
- if ${1:condition}.presence?
|
- if $1.presence?
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
snippet ntc
|
snippet ntc
|
||||||
= number_to_currency(${1})
|
= number_to_currency(${1})
|
||||||
|
|
|
@ -441,10 +441,9 @@ snippet html5
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
|
<title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
|
||||||
${2:link}
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
${0:body}
|
$0
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
snippet html5l
|
snippet html5l
|
||||||
|
@ -457,7 +456,7 @@ snippet html5l
|
||||||
${3:link}
|
${3:link}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
${0:body}
|
$0
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
snippet i
|
snippet i
|
||||||
|
|
|
@ -24,11 +24,11 @@ snippet for
|
||||||
snippet from
|
snippet from
|
||||||
{% from ${1:x} import ${0:y} %}
|
{% from ${1:x} import ${0:y} %}
|
||||||
snippet if
|
snippet if
|
||||||
{% if ${1:condition} %}
|
{% if $1 %}
|
||||||
${0}
|
${0}
|
||||||
{% end %}
|
{% end %}
|
||||||
snippet eif
|
snippet eif
|
||||||
{% elif ${0:condition} %}
|
{% elif $0 %}
|
||||||
snippet el
|
snippet el
|
||||||
{% else %}
|
{% else %}
|
||||||
snippet import
|
snippet import
|
||||||
|
@ -50,6 +50,6 @@ snippet try
|
||||||
${0}
|
${0}
|
||||||
{% end %}
|
{% end %}
|
||||||
snippet wh
|
snippet wh
|
||||||
{% while ${1:condition} %}
|
{% while $1 %}
|
||||||
${0}
|
${0}
|
||||||
{% end %}
|
{% end %}
|
||||||
|
|
|
@ -142,9 +142,9 @@ snippet ae
|
||||||
snippet aae
|
snippet aae
|
||||||
assertArrayEquals("${1:Failure message}", ${2:expecteds}, ${3:actuals});
|
assertArrayEquals("${1:Failure message}", ${2:expecteds}, ${3:actuals});
|
||||||
snippet af
|
snippet af
|
||||||
assertFalse("${1:Failure message}", ${2:condition});
|
assertFalse("${1:Failure message}", $2);
|
||||||
snippet at
|
snippet at
|
||||||
assertTrue("${1:Failure message}", ${2:condition});
|
assertTrue("${1:Failure message}", $2);
|
||||||
snippet an
|
snippet an
|
||||||
assertNull("${1:Failure message}", ${2:object});
|
assertNull("${1:Failure message}", ${2:object});
|
||||||
snippet ann
|
snippet ann
|
||||||
|
@ -211,7 +211,9 @@ snippet enfor
|
||||||
snippet for
|
snippet for
|
||||||
for (${1}; ${2}; ${3}) ${0}
|
for (${1}; ${2}; ${3}) ${0}
|
||||||
snippet wh
|
snippet wh
|
||||||
while (${1}) ${0}
|
while (${1:true}) ${0}
|
||||||
|
snippet wht
|
||||||
|
while (true) ${0}
|
||||||
##
|
##
|
||||||
## Main method
|
## Main method
|
||||||
snippet psvm
|
snippet psvm
|
||||||
|
|
|
@ -62,8 +62,8 @@ snippet ife "if (condition) { ... } else { ... }"
|
||||||
${2}
|
${2}
|
||||||
}
|
}
|
||||||
# tertiary conditional
|
# tertiary conditional
|
||||||
snippet ter
|
snippet ter Ternary: `condition ? true : false`
|
||||||
${1:/* condition */} ? ${2:/* if true */} : ${0:/* if false */}
|
$1 ? $2: $0
|
||||||
# switch
|
# switch
|
||||||
snippet switch
|
snippet switch
|
||||||
switch (${1:expression}) {
|
switch (${1:expression}) {
|
||||||
|
@ -107,13 +107,17 @@ snippet forr "reversed for (...) {...}"
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
snippet wh "(condition) { ... }"
|
snippet wh "(condition) { ... }"
|
||||||
while (${1:/* condition */}) {
|
while (${1:true}) {
|
||||||
|
${0:${VISUAL}}
|
||||||
|
}
|
||||||
|
snippet wht "(true) { ... }"
|
||||||
|
while (true) {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
snippet do "do { ... } while (condition)"
|
snippet do "do { ... } while (condition)"
|
||||||
do {
|
do {
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
} while (${1:/* condition */});
|
} while ($1);
|
||||||
# For in loop
|
# For in loop
|
||||||
snippet fori
|
snippet fori
|
||||||
for (let ${1:prop} in ${2:object}) {
|
for (let ${1:prop} in ${2:object}) {
|
||||||
|
|
|
@ -2,32 +2,32 @@
|
||||||
# https://marketplace.visualstudio.com/items?itemName=killalau.vscode-liquid-snippets
|
# https://marketplace.visualstudio.com/items?itemName=killalau.vscode-liquid-snippets
|
||||||
|
|
||||||
snippet if
|
snippet if
|
||||||
{% if ${1:condition} %}
|
{% if $1 %}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
snippet else
|
snippet else
|
||||||
{% else %}
|
{% else %}
|
||||||
snippet elsif
|
snippet elsif
|
||||||
{% elsif ${1:condition} %}
|
{% elsif $1 %}
|
||||||
snippet ifelse
|
snippet ifelse
|
||||||
{% if ${1:condition} %}
|
{% if $1 %}
|
||||||
${2}
|
${2}
|
||||||
{% else %}
|
{% else %}
|
||||||
${0}
|
${0}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
snippet unless
|
snippet unless
|
||||||
{% unless ${1:condition} %}
|
{% unless $1 %}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
snippet case
|
snippet case
|
||||||
{% case ${1:variable} %}
|
{% case ${1:variable} %}
|
||||||
{% when ${2:condition} %}
|
{% when $2 %}
|
||||||
${3}
|
${3}
|
||||||
{% else %}
|
{% else %}
|
||||||
${0}
|
${0}
|
||||||
{% endcase %}
|
{% endcase %}
|
||||||
snippet when
|
snippet when
|
||||||
{% when ${1:condition} %}
|
{% when $1 %}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
snippet cycle
|
snippet cycle
|
||||||
{% cycle '${1:odd}', '${2:even}' %}
|
{% cycle '${1:odd}', '${2:even}' %}
|
||||||
|
@ -102,32 +102,32 @@ snippet javascript
|
||||||
snippet comment-
|
snippet comment-
|
||||||
{%- comment -%}${0:${VISUAL}}{%- endcomment -%}
|
{%- comment -%}${0:${VISUAL}}{%- endcomment -%}
|
||||||
snippet if-
|
snippet if-
|
||||||
{%- if ${1:condition} -%}
|
{%- if $1 -%}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
snippet else-
|
snippet else-
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
snippet elsif-
|
snippet elsif-
|
||||||
{%- elsif ${1:condition} -%}
|
{%- elsif $1 -%}
|
||||||
snippet ifelse-
|
snippet ifelse-
|
||||||
{%- if ${1:condition} -%}
|
{%- if $1 -%}
|
||||||
${2}
|
${2}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
${0}
|
${0}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
snippet unless-
|
snippet unless-
|
||||||
{%- unless ${1:condition} -%}
|
{%- unless $1 -%}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
{%- endunless -%}
|
{%- endunless -%}
|
||||||
snippet case-
|
snippet case-
|
||||||
{%- case ${1:variable} -%}
|
{%- case ${1:variable} -%}
|
||||||
{%- when ${2:condition} -%}
|
{%- when $2 -%}
|
||||||
${3}
|
${3}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
${0}
|
${0}
|
||||||
{%- endcase -%}
|
{%- endcase -%}
|
||||||
snippet when-
|
snippet when-
|
||||||
{%- when ${1:condition} -%}
|
{%- when $1 -%}
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
snippet cycle-
|
snippet cycle-
|
||||||
{%- cycle '${1:odd}', '${2:even}' -%}
|
{%- cycle '${1:odd}', '${2:even}' -%}
|
||||||
|
|
|
@ -66,8 +66,8 @@ snippet elif
|
||||||
snippet ifi
|
snippet ifi
|
||||||
if(${1:true}) ${0};
|
if(${1:true}) ${0};
|
||||||
# ternary
|
# ternary
|
||||||
snippet t
|
snippet t Ternary: `condition ? true : false`
|
||||||
${1:/* condition */} ? ${2:a} : ${3:b}
|
$1 ? $2 : $0
|
||||||
# switch
|
# switch
|
||||||
snippet switch
|
snippet switch
|
||||||
switch(${1:/* variable */})
|
switch(${1:/* variable */})
|
||||||
|
@ -115,7 +115,7 @@ snippet forr
|
||||||
}
|
}
|
||||||
# while
|
# while
|
||||||
snippet wh
|
snippet wh
|
||||||
while(${1:/* condition */})
|
while($1)
|
||||||
{
|
{
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ snippet wh
|
||||||
snippet do
|
snippet do
|
||||||
do{
|
do{
|
||||||
${0:${VISUAL}}
|
${0:${VISUAL}}
|
||||||
}while (${1:/* condition */});
|
}while ($1);
|
||||||
##
|
##
|
||||||
## Functions
|
## Functions
|
||||||
# function definition
|
# function definition
|
||||||
|
|
|
@ -54,24 +54,24 @@ snippet cla class .. extends .. constructor: ..
|
||||||
${5}
|
${5}
|
||||||
# If
|
# If
|
||||||
snippet if
|
snippet if
|
||||||
if ${1:condition}
|
if $1
|
||||||
${2}
|
${2}
|
||||||
# If __ Else
|
# If __ Else
|
||||||
snippet ife
|
snippet ife
|
||||||
if ${1:condition}
|
if $1
|
||||||
${2}
|
${2}
|
||||||
else
|
else
|
||||||
${3}
|
${3}
|
||||||
# Else if
|
# Else if
|
||||||
snippet elif
|
snippet elif
|
||||||
else if ${1:condition}
|
else if $1
|
||||||
${2}
|
${2}
|
||||||
# Ternary If
|
# Ternary If
|
||||||
snippet ifte
|
snippet ifte
|
||||||
if ${1:condition} then ${2:value} else ${3:other}
|
if $1 then $2 else $0
|
||||||
# Unless
|
# Unless
|
||||||
snippet unl
|
snippet unl
|
||||||
${1:action} unless ${2:condition}
|
$1 unless $0
|
||||||
# Switch
|
# Switch
|
||||||
snippet swi
|
snippet swi
|
||||||
switch ${1:object}
|
switch ${1:object}
|
||||||
|
|
|
@ -5,7 +5,7 @@ snippet local
|
||||||
local ${1:x} = ${0:1}
|
local ${1:x} = ${0:1}
|
||||||
snippet fun
|
snippet fun
|
||||||
function ${1:fname}(${2:...})
|
function ${1:fname}(${2:...})
|
||||||
${0:-- body}
|
$0
|
||||||
end
|
end
|
||||||
snippet for
|
snippet for
|
||||||
for ${1:i}=${2:1},${3:10} do
|
for ${1:i}=${2:1},${3:10} do
|
||||||
|
@ -13,34 +13,60 @@ snippet for
|
||||||
end
|
end
|
||||||
snippet forp
|
snippet forp
|
||||||
for ${1:i},${2:v} in pairs(${3:table_name}) do
|
for ${1:i},${2:v} in pairs(${3:table_name}) do
|
||||||
${0:-- body}
|
$0
|
||||||
end
|
end
|
||||||
snippet fori
|
snippet fori
|
||||||
for ${1:i},${2:v} in ipairs(${3:table_name}) do
|
for ${1:i},${2:v} in ipairs(${3:table_name}) do
|
||||||
${0:-- body}
|
$0
|
||||||
end
|
end
|
||||||
snippet if
|
snippet if
|
||||||
if ${1:condition} then
|
if $1 then
|
||||||
${2:-- body}
|
$2
|
||||||
end
|
end
|
||||||
snippet ife
|
snippet ife
|
||||||
if ${1:condition} then
|
if $1 then
|
||||||
${2:-- if condition}
|
${2:-- if condition}
|
||||||
else
|
else
|
||||||
${0:-- else}
|
${0:-- else}
|
||||||
end
|
end
|
||||||
snippet elif
|
snippet elif
|
||||||
elseif ${1:condition} then
|
elseif $1 then
|
||||||
${0:--body}
|
$0
|
||||||
snippet repeat
|
snippet repeat
|
||||||
repeat
|
repeat
|
||||||
${1:--body}
|
$1
|
||||||
until ${0:condition}
|
until $0
|
||||||
snippet while
|
snippet while
|
||||||
while ${1:condition} do
|
while $1 do
|
||||||
${0:--body}
|
$0
|
||||||
|
end
|
||||||
|
snippet wh
|
||||||
|
while ${1:true} do
|
||||||
|
${0}
|
||||||
|
end
|
||||||
|
snippet wht
|
||||||
|
while true do
|
||||||
|
${0}
|
||||||
end
|
end
|
||||||
snippet print
|
snippet print
|
||||||
print("${1:string}")
|
print("${1:string}")
|
||||||
|
snippet pr
|
||||||
|
print($0)
|
||||||
|
snippet prs
|
||||||
|
print("$0")
|
||||||
|
snippet prf
|
||||||
|
print(string.format("${1:%s}"$0))
|
||||||
|
snippet wr
|
||||||
|
io.write($0)
|
||||||
|
snippet wrs
|
||||||
|
io.write("$0")
|
||||||
|
snippet wrf
|
||||||
|
io.write(string.format("${1:%s}"$0))
|
||||||
|
snippet fwr
|
||||||
|
io.${1:stderr}:write($0)
|
||||||
|
snippet fwrs
|
||||||
|
io.${1:stderr}:write("$0")
|
||||||
|
snippet fwrf
|
||||||
|
io.${1:stderr}:write(string.format("${2:%s}"$0))
|
||||||
snippet im
|
snippet im
|
||||||
import "${1:import file}"
|
import "${1:import file}"
|
||||||
|
|
|
@ -19,11 +19,11 @@ snippet for
|
||||||
${0:}
|
${0:}
|
||||||
% endfor
|
% endfor
|
||||||
snippet if if
|
snippet if if
|
||||||
% if ${1:condition}:
|
% if $1:
|
||||||
${0:}
|
${0:}
|
||||||
% endif
|
% endif
|
||||||
snippet ife if/else
|
snippet ife if/else
|
||||||
% if ${1:condition}:
|
% if $1:
|
||||||
${2:}
|
${2:}
|
||||||
% else:
|
% else:
|
||||||
${0:}
|
${0:}
|
||||||
|
|
|
@ -67,17 +67,21 @@ snippet <*
|
||||||
<`@*`>
|
<`@*`>
|
||||||
snippet <c
|
snippet <c
|
||||||
<`@+`>
|
<`@+`>
|
||||||
snippet **
|
snippet ** Bold
|
||||||
**${1:bold}**
|
**$0**
|
||||||
snippet __
|
snippet __ Bold
|
||||||
__${1:bold}__
|
__$0__
|
||||||
snippet ===
|
snippet --- Front matter
|
||||||
|
---
|
||||||
|
$0
|
||||||
|
---
|
||||||
|
snippet ====
|
||||||
`repeat('=', strlen(getline(line('.') - 3)))`
|
`repeat('=', strlen(getline(line('.') - 3)))`
|
||||||
|
|
||||||
${0}
|
${0}
|
||||||
snippet -
|
snippet -
|
||||||
- ${0}
|
- ${0}
|
||||||
snippet ---
|
snippet ----
|
||||||
`repeat('-', strlen(getline(line('.') - 3)))`
|
`repeat('-', strlen(getline(line('.') - 3)))`
|
||||||
|
|
||||||
${0}
|
${0}
|
||||||
|
@ -142,3 +146,11 @@ snippet pullquote
|
||||||
{% pullquote %}
|
{% pullquote %}
|
||||||
${1:text} {" ${2:quote} "} ${0:text}
|
${1:text} {" ${2:quote} "} ${0:text}
|
||||||
{% endpullquote %}
|
{% endpullquote %}
|
||||||
|
|
||||||
|
# Definition lists
|
||||||
|
snippet : Definition list
|
||||||
|
$1
|
||||||
|
: $0
|
||||||
|
snippet :: Alternate definition list
|
||||||
|
$1
|
||||||
|
- $0
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue