mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	Updated vim plugins
This commit is contained in:
		| @ -50,12 +50,17 @@ function! ale#c#ParseCFlags(path_prefix, cflag_line) abort | ||||
|     let l:cflags_list = [] | ||||
|     let l:previous_options = [] | ||||
|  | ||||
|     for l:option in split(a:cflag_line, '-') | ||||
|     let l:split_lines = split(a:cflag_line, '-') | ||||
|     let l:option_index = 0 | ||||
|  | ||||
|     while l:option_index < len(l:split_lines) | ||||
|         let l:option = l:split_lines[l:option_index] | ||||
|         let l:option_index = l:option_index + 1 | ||||
|         call add(l:previous_options, l:option) | ||||
|         " Check if cflag contained a '-' and should not have been splitted | ||||
|         let l:option_list = split(l:option, '\zs') | ||||
|  | ||||
|         if len(l:option_list) > 0 && l:option_list[-1] isnot# ' ' | ||||
|         if len(l:option_list) > 0 && l:option_list[-1] isnot# ' ' && l:option_index < len(l:split_lines) | ||||
|             continue | ||||
|         endif | ||||
|  | ||||
| @ -81,7 +86,7 @@ function! ale#c#ParseCFlags(path_prefix, cflag_line) abort | ||||
|                 call add(l:cflags_list, l:option) | ||||
|             endif | ||||
|         endif | ||||
|     endfor | ||||
|     endwhile | ||||
|  | ||||
|     return join(l:cflags_list, ' ') | ||||
| endfunction | ||||
|  | ||||
| @ -52,16 +52,6 @@ function! ale#cursor#TruncatedEcho(original_message) abort | ||||
|     endtry | ||||
| endfunction | ||||
|  | ||||
| function! s:FindItemAtCursor(buffer) abort | ||||
|     let l:info = get(g:ale_buffer_info, a:buffer, {}) | ||||
|     let l:loclist = get(l:info, 'loclist', []) | ||||
|     let l:pos = getcurpos() | ||||
|     let l:index = ale#util#BinarySearch(l:loclist, a:buffer, l:pos[1], l:pos[2]) | ||||
|     let l:loc = l:index >= 0 ? l:loclist[l:index] : {} | ||||
|  | ||||
|     return [l:info, l:loc] | ||||
| endfunction | ||||
|  | ||||
| function! s:StopCursorTimer() abort | ||||
|     if s:cursor_timer != -1 | ||||
|         call timer_stop(s:cursor_timer) | ||||
| @ -85,7 +75,7 @@ function! ale#cursor#EchoCursorWarning(...) abort | ||||
|         return | ||||
|     endif | ||||
|  | ||||
|     let [l:info, l:loc] = s:FindItemAtCursor(l:buffer) | ||||
|     let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer) | ||||
|  | ||||
|     if g:ale_echo_cursor | ||||
|         if !empty(l:loc) | ||||
| @ -169,7 +159,7 @@ function! ale#cursor#ShowCursorDetail() abort | ||||
|  | ||||
|     call s:StopCursorTimer() | ||||
|  | ||||
|     let [l:info, l:loc] = s:FindItemAtCursor(l:buffer) | ||||
|     let [l:info, l:loc] = ale#util#FindItemAtCursor(l:buffer) | ||||
|  | ||||
|     if !empty(l:loc) | ||||
|         call s:ShowCursorDetailForItem(l:loc, {'stay_here': 0}) | ||||
|  | ||||
| @ -22,14 +22,14 @@ let s:global_variable_list = [ | ||||
| \    'ale_lint_delay', | ||||
| \    'ale_lint_on_enter', | ||||
| \    'ale_lint_on_filetype_changed', | ||||
| \    'ale_lint_on_insert_leave', | ||||
| \    'ale_lint_on_save', | ||||
| \    'ale_lint_on_text_changed', | ||||
| \    'ale_lint_on_insert_leave', | ||||
| \    'ale_linter_aliases', | ||||
| \    'ale_linters', | ||||
| \    'ale_linters_explicit', | ||||
| \    'ale_list_window_size', | ||||
| \    'ale_list_vertical', | ||||
| \    'ale_list_window_size', | ||||
| \    'ale_loclist_msg_format', | ||||
| \    'ale_max_buffer_history_size', | ||||
| \    'ale_max_signs', | ||||
| @ -52,6 +52,7 @@ let s:global_variable_list = [ | ||||
| \    'ale_statusline_format', | ||||
| \    'ale_type_map', | ||||
| \    'ale_use_global_executables', | ||||
| \    'ale_virtualtext_cursor', | ||||
| \    'ale_warn_about_trailing_blank_lines', | ||||
| \    'ale_warn_about_trailing_whitespace', | ||||
| \] | ||||
| @ -236,10 +237,11 @@ function! ale#debugging#Info() abort | ||||
| endfunction | ||||
|  | ||||
| function! ale#debugging#InfoToClipboard() abort | ||||
|     redir @+> | ||||
|     redir => l:output | ||||
|         silent call ale#debugging#Info() | ||||
|     redir END | ||||
|  | ||||
|     let @+ = l:output | ||||
|     call s:Echo('ALEInfo copied to your clipboard') | ||||
| endfunction | ||||
|  | ||||
|  | ||||
| @ -304,6 +304,12 @@ function! ale#engine#SetResults(buffer, loclist) abort | ||||
|             call ale#cursor#EchoCursorWarning() | ||||
|         endif | ||||
|  | ||||
|         if g:ale_virtualtext_cursor | ||||
|             " Try and show the warning now. | ||||
|             " This will only do something meaningful if we're in normal mode. | ||||
|             call ale#virtualtext#ShowCursorWarning() | ||||
|         endif | ||||
|  | ||||
|         " Reset the save event marker, used for opening windows, etc. | ||||
|         call setbufvar(a:buffer, 'ale_save_event_fired', 0) | ||||
|         " Set a marker showing how many times a buffer has been checked. | ||||
|  | ||||
| @ -29,7 +29,7 @@ function! ale#events#SaveEvent(buffer) abort | ||||
|         call setbufvar(a:buffer, 'ale_save_event_fired', 1) | ||||
|     endif | ||||
|  | ||||
|     if ale#Var(a:buffer, 'fix_on_save') | ||||
|     if ale#Var(a:buffer, 'fix_on_save') && !ale#events#QuitRecently(a:buffer) | ||||
|         let l:will_fix = ale#fix#Fix(a:buffer, 'save_file') | ||||
|         let l:should_lint = l:should_lint && !l:will_fix | ||||
|     endif | ||||
| @ -139,6 +139,14 @@ function! ale#events#Init() abort | ||||
|                 autocmd InsertLeave * if exists('*ale#engine#Cleanup') | call ale#cursor#EchoCursorWarning() | endif | ||||
|             endif | ||||
|  | ||||
|             if g:ale_virtualtext_cursor | ||||
|                 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. | ||||
|                 " The script's position variable used when moving the cursor will | ||||
|                 " not be changed here. | ||||
|                 autocmd InsertLeave * if exists('*ale#engine#Cleanup') | call ale#virtualtext#ShowCursorWarning() | endif | ||||
|             endif | ||||
|  | ||||
|             if g:ale_close_preview_on_insert | ||||
|                 autocmd InsertEnter * if exists('*ale#preview#CloseIfTypeMatches') | call ale#preview#CloseIfTypeMatches('ale-preview') | endif | ||||
|             endif | ||||
|  | ||||
| @ -17,6 +17,11 @@ let s:default_registry = { | ||||
| \       'suggested_filetypes': ['python'], | ||||
| \       'description': 'Fix PEP8 issues with autopep8.', | ||||
| \   }, | ||||
| \   'bibclean': { | ||||
| \       'function': 'ale#fixers#bibclean#Fix', | ||||
| \       'suggested_filetypes': ['bib'], | ||||
| \       'description': 'Format bib files using bibclean.', | ||||
| \   }, | ||||
| \   'black': { | ||||
| \       'function': 'ale#fixers#black#Fix', | ||||
| \       'suggested_filetypes': ['python'], | ||||
| @ -56,7 +61,7 @@ let s:default_registry = { | ||||
| \   }, | ||||
| \   'prettier': { | ||||
| \       'function': 'ale#fixers#prettier#Fix', | ||||
| \       'suggested_filetypes': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'json5', 'graphql', 'markdown', 'vue'], | ||||
| \       'suggested_filetypes': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'json5', 'graphql', 'markdown', 'vue', 'html', 'yaml'], | ||||
| \       'description': 'Apply prettier to a file.', | ||||
| \   }, | ||||
| \   'prettier_eslint': { | ||||
| @ -110,6 +115,11 @@ let s:default_registry = { | ||||
| \       'suggested_filetypes': ['javascript'], | ||||
| \       'description': 'Fix JavaScript files using standard --fix', | ||||
| \   }, | ||||
| \   'standardrb': { | ||||
| \       'function': 'ale#fixers#standardrb#Fix', | ||||
| \       'suggested_filetypes': ['ruby'], | ||||
| \       'description': 'Fix ruby files with standardrb --fix', | ||||
| \   }, | ||||
| \   'stylelint': { | ||||
| \       'function': 'ale#fixers#stylelint#Fix', | ||||
| \       'suggested_filetypes': ['css', 'sass', 'scss', 'stylus'], | ||||
|  | ||||
| @ -5,14 +5,14 @@ call ale#Set('ocaml_ocamlformat_executable', 'ocamlformat') | ||||
| call ale#Set('ocaml_ocamlformat_options', '') | ||||
|  | ||||
| function! ale#fixers#ocamlformat#Fix(buffer) abort | ||||
|     let l:filename = expand('#' . a:buffer . ':p') | ||||
|     let l:executable = ale#Var(a:buffer, 'ocaml_ocamlformat_executable') | ||||
|     let l:options = ale#Var(a:buffer, 'ocaml_ocamlformat_options') | ||||
|  | ||||
|     return { | ||||
|     \   'command': ale#Escape(l:executable) | ||||
|     \       . (empty(l:options) ? '' : ' ' . l:options) | ||||
|     \       . ' --inplace' | ||||
|     \       . ' %t', | ||||
|     \   'read_temporary_file': 1, | ||||
|     \       . ' --name=' . ale#Escape(l:filename) | ||||
|     \       . ' -' | ||||
|     \} | ||||
| endfunction | ||||
|  | ||||
| @ -58,6 +58,7 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version_output) abort | ||||
|         \    'markdown': 'markdown', | ||||
|         \    'vue': 'vue', | ||||
|         \    'yaml': 'yaml', | ||||
|         \    'html': 'html', | ||||
|         \} | ||||
|         let l:parser = '' | ||||
|  | ||||
|  | ||||
| @ -1,13 +1,28 @@ | ||||
| " Author: Matteo Centenaro (bugant) - https://github.com/bugant | ||||
| " | ||||
| " Description: find the root directory for an elixir project that uses mix | ||||
| " Author: Jon Parise <jon@indelible.org> | ||||
| " Description: Functions for working with Elixir projects | ||||
|  | ||||
| " Find the root directory for an elixir project that uses mix. | ||||
| function! ale#handlers#elixir#FindMixProjectRoot(buffer) abort | ||||
|     let l:mix_file = ale#path#FindNearestFile(a:buffer, 'mix.exs') | ||||
|  | ||||
|     if !empty(l:mix_file) | ||||
|       return fnamemodify(l:mix_file, ':p:h') | ||||
|         return fnamemodify(l:mix_file, ':p:h') | ||||
|     endif | ||||
|  | ||||
|     return '.' | ||||
| endfunction | ||||
|  | ||||
| " Similar to ale#handlers#elixir#FindMixProjectRoot but also continue the | ||||
| " search upward for a potential umbrella project root. If an umbrella root | ||||
| " does not exist, the initial project root will be returned. | ||||
| function! ale#handlers#elixir#FindMixUmbrellaRoot(buffer) abort | ||||
|     let l:app_root = ale#handlers#elixir#FindMixProjectRoot(a:buffer) | ||||
|     let l:umbrella_root = fnamemodify(l:app_root, ':h:h') | ||||
|  | ||||
|     if filereadable(l:umbrella_root . '/mix.exs') | ||||
|         return l:umbrella_root | ||||
|     endif | ||||
|  | ||||
|     return l:app_root | ||||
| endfunction | ||||
|  | ||||
| @ -1,8 +0,0 @@ | ||||
| " Author: KabbAmine - https://github.com/KabbAmine, | ||||
| "   Ben Falconer <ben@falconers.me.uk> | ||||
|  | ||||
| function! ale#handlers#sasslint#GetCommand(buffer) abort | ||||
|     return ale#path#BufferCdString(a:buffer) | ||||
|     \   . ale#Escape('sass-lint') | ||||
|     \   . ' -v -q -f compact %t' | ||||
| endfunction | ||||
| @ -24,7 +24,21 @@ function! ale#hover#HandleTSServerResponse(conn_id, response) abort | ||||
|  | ||||
|         if get(a:response, 'success', v:false) is v:true | ||||
|         \&& get(a:response, 'body', v:null) isnot v:null | ||||
|             if get(l:options, 'hover_from_balloonexpr', 0) | ||||
|             " If we pass the show_documentation flag, we should show the full | ||||
|             " documentation, and always in the preview window. | ||||
|             if get(l:options, 'show_documentation', 0) | ||||
|                 let l:documentation = get(a:response.body, 'documentation', '') | ||||
|  | ||||
|                 " displayString is not included here, because it can be very | ||||
|                 " noisy and run on for many lines for complex types. A less | ||||
|                 " verbose alternative may be nice in future. | ||||
|                 if !empty(l:documentation) | ||||
|                     call ale#preview#Show(split(l:documentation, "\n"), { | ||||
|                     \   'filetype': 'ale-preview.message', | ||||
|                     \   'stay_here': 1, | ||||
|                     \}) | ||||
|                 endif | ||||
|             elseif get(l:options, 'hover_from_balloonexpr', 0) | ||||
|             \&& exists('*balloon_show') | ||||
|             \&& ale#Var(l:options.buffer, 'set_balloons') | ||||
|                 call balloon_show(a:response.body.displayString) | ||||
| @ -126,6 +140,7 @@ function! s:OnReady(linter, lsp_details, line, column, opt, ...) abort | ||||
|     \   'line': a:line, | ||||
|     \   'column': l:column, | ||||
|     \   'hover_from_balloonexpr': get(a:opt, 'called_from_balloonexpr', 0), | ||||
|     \   'show_documentation': get(a:opt, 'show_documentation', 0), | ||||
|     \} | ||||
| endfunction | ||||
|  | ||||
| @ -153,9 +168,30 @@ endfunction | ||||
| " - in the balloon if opt.called_from_balloonexpr and balloon_show is detected | ||||
| " - as status message otherwise | ||||
| function! ale#hover#Show(buffer, line, col, opt) abort | ||||
|     let l:show_documentation = get(a:opt, 'show_documentation', 0) | ||||
|  | ||||
|     for l:linter in ale#linter#Get(getbufvar(a:buffer, '&filetype')) | ||||
|         " Only tsserver supports documentation requests at the moment. | ||||
|         if !empty(l:linter.lsp) | ||||
|         \&& (!l:show_documentation || l:linter.lsp is# 'tsserver') | ||||
|             call s:ShowDetails(l:linter, a:buffer, a:line, a:col, a:opt) | ||||
|         endif | ||||
|     endfor | ||||
| endfunction | ||||
|  | ||||
| " This function implements the :ALEHover command. | ||||
| function! ale#hover#ShowAtCursor() abort | ||||
|     let l:buffer = bufnr('') | ||||
|     let l:pos = getcurpos() | ||||
|  | ||||
|     call ale#hover#Show(l:buffer, l:pos[1], l:pos[2], {}) | ||||
| endfunction | ||||
|  | ||||
| " This function implements the :ALEDocumentation command. | ||||
| function! ale#hover#ShowDocumentationAtCursor() abort | ||||
|     let l:buffer = bufnr('') | ||||
|     let l:pos = getcurpos() | ||||
|     let l:options = {'show_documentation': 1} | ||||
|  | ||||
|     call ale#hover#Show(l:buffer, l:pos[1], l:pos[2], l:options) | ||||
| endfunction | ||||
|  | ||||
| @ -16,6 +16,7 @@ let s:default_ale_linter_aliases = { | ||||
| \   'systemverilog': 'verilog', | ||||
| \   'verilog_systemverilog': ['verilog_systemverilog', 'verilog'], | ||||
| \   'vimwiki': 'markdown', | ||||
| \   'vue': ['vue', 'javascript'], | ||||
| \   'zsh': 'sh', | ||||
| \} | ||||
|  | ||||
| @ -31,6 +32,7 @@ let s:default_ale_linter_aliases = { | ||||
| " NOTE: Update the g:ale_linters documentation when modifying this. | ||||
| let s:default_ale_linters = { | ||||
| \   'csh': ['shell'], | ||||
| \   'elixir': ['credo', 'dialyxir', 'dogma', 'elixir-ls'], | ||||
| \   'go': ['gofmt', 'golint', 'go vet'], | ||||
| \   'hack': ['hack'], | ||||
| \   'help': [], | ||||
| @ -40,6 +42,7 @@ let s:default_ale_linters = { | ||||
| \   'rust': ['cargo'], | ||||
| \   'spec': [], | ||||
| \   'text': [], | ||||
| \   'vue': ['eslint', 'vls'], | ||||
| \   'zsh': ['shell'], | ||||
| \} | ||||
|  | ||||
|  | ||||
| @ -66,6 +66,10 @@ function! ale#lsp#response#ReadDiagnostics(response) abort | ||||
|             let l:loclist_item.detail = l:diagnostic.message . "\n" . join(l:related, "\n") | ||||
|         endif | ||||
|  | ||||
|         if has_key(l:diagnostic, 'source') | ||||
|            let l:loclist_item.detail = printf('[%s] %s', l:diagnostic.source, l:diagnostic.message) | ||||
|         endif | ||||
|  | ||||
|         call add(l:loclist, l:loclist_item) | ||||
|     endfor | ||||
|  | ||||
|  | ||||
| @ -42,3 +42,35 @@ function! ale#ruby#FindProjectRoot(buffer) abort | ||||
|  | ||||
|     return '' | ||||
| endfunction | ||||
|  | ||||
| " Handle output from rubocop and linters that depend on it (e.b. standardrb) | ||||
| function! ale#ruby#HandleRubocopOutput(buffer, lines) abort | ||||
|     try | ||||
|         let l:errors = json_decode(a:lines[0]) | ||||
|     catch | ||||
|         return [] | ||||
|     endtry | ||||
|  | ||||
|     if !has_key(l:errors, 'summary') | ||||
|     \|| l:errors['summary']['offense_count'] == 0 | ||||
|     \|| empty(l:errors['files']) | ||||
|         return [] | ||||
|     endif | ||||
|  | ||||
|     let l:output = [] | ||||
|  | ||||
|     for l:error in l:errors['files'][0]['offenses'] | ||||
|         let l:start_col = l:error['location']['column'] + 0 | ||||
|         call add(l:output, { | ||||
|         \   'lnum': l:error['location']['line'] + 0, | ||||
|         \   'col': l:start_col, | ||||
|         \   'end_col': l:start_col + l:error['location']['length'] - 1, | ||||
|         \   'code': l:error['cop_name'], | ||||
|         \   'text': l:error['message'], | ||||
|         \   'type': ale_linters#ruby#rubocop#GetType(l:error['severity']), | ||||
|         \}) | ||||
|     endfor | ||||
|  | ||||
|     return l:output | ||||
| endfunction | ||||
|  | ||||
|  | ||||
| @ -75,3 +75,13 @@ function! ale#test#GetQflistWithoutModule() abort | ||||
|  | ||||
|     return l:results | ||||
| endfunction | ||||
|  | ||||
| function! ale#test#GetPreviewWindowText() abort | ||||
|     for l:window in range(1, winnr('$')) | ||||
|         if getwinvar(l:window, '&previewwindow', 0) | ||||
|             let l:buffer = winbufnr(l:window) | ||||
|  | ||||
|             return getbufline(l:buffer, 1, '$') | ||||
|         endif | ||||
|     endfor | ||||
| endfunction | ||||
|  | ||||
| @ -452,3 +452,14 @@ function! ale#util#Col(str, chr) abort | ||||
|  | ||||
|     return strlen(join(split(a:str, '\zs')[0:a:chr - 2], '')) + 1 | ||||
| endfunction | ||||
|  | ||||
| function! ale#util#FindItemAtCursor(buffer) abort | ||||
|     let l:info = get(g:ale_buffer_info, a:buffer, {}) | ||||
|     let l:loclist = get(l:info, 'loclist', []) | ||||
|     let l:pos = getcurpos() | ||||
|     let l:index = ale#util#BinarySearch(l:loclist, a:buffer, l:pos[1], l:pos[2]) | ||||
|     let l:loc = l:index >= 0 ? l:loclist[l:index] : {} | ||||
|  | ||||
|     return [l:info, l:loc] | ||||
| endfunction | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Amir Salihefendic
					Amir Salihefendic