diff options
author | Jerko Steiner <jerko.steiner@gmail.com> | 2019-01-07 17:55:55 +0000 |
---|---|---|
committer | w0rp <w0rp@users.noreply.github.com> | 2019-01-07 17:55:55 +0000 |
commit | 0fcd5e79a9be71027df6d7e77034d530fa9bf959 (patch) | |
tree | 1df17f03c74cc75b8b5b609037e20cce38e04dff | |
parent | 5bbe77101db18968fde65210956e54750d7ff4f5 (diff) | |
download | ale-0fcd5e79a9be71027df6d7e77034d530fa9bf959.zip |
Add ability to manually trigger completion menu (#2177)
* Add ability to manually trigger completion menu
* Mention :ALEComplete in completion docs
* Add test for ALEComplete
-rw-r--r-- | autoload/ale/completion.vim | 6 | ||||
-rw-r--r-- | doc/ale.txt | 14 | ||||
-rw-r--r-- | plugin/ale.vim | 3 | ||||
-rw-r--r-- | test/test_ale_complete_command.vader | 22 |
4 files changed, 45 insertions, 0 deletions
diff --git a/autoload/ale/completion.vim b/autoload/ale/completion.vim index 9dd913f5..3bf29191 100644 --- a/autoload/ale/completion.vim +++ b/autoload/ale/completion.vim @@ -509,6 +509,12 @@ function! ale#completion#GetCompletions() abort return endif + call ale#completion#AlwaysGetCompletions() +endfunction + +" This function can be used to manually trigger autocomplete, even when +" g:ale_completion_enabled is set to false +function! ale#completion#AlwaysGetCompletions() abort let [l:line, l:column] = getcurpos()[1:2] let l:prefix = ale#completion#GetPrefix(&filetype, l:line, l:column) diff --git a/doc/ale.txt b/doc/ale.txt index 1cfa7898..6bedf755 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -821,6 +821,9 @@ with |g:ale_completion_max_suggestions|. If you don't like some of the suggestions you see, you can filter them out with |g:ale_completion_excluded_words| or |b:ale_completion_excluded_words|. +The |ALEComplete| command can be used to show completion suggestions manually, +even when |g:ale_completion_enabled| is set to `0`. + *ale-completion-completopt-bug* ALE implements completion as you type by temporarily adjusting |completeopt| @@ -2236,6 +2239,17 @@ ALE will use to search for Python executables. =============================================================================== 8. Commands/Keybinds *ale-commands* +ALEComplete *ALEComplete* + + Manually trigger LSP autocomplete and show the menu. Works only when called + from insert mode. > + + inoremap <silent> <C-Space> <C-\><C-O>:AleComplete<CR> +< + A plug mapping `<Plug>(ale_complete)` is defined for this command. > + + imap <C-Space> <Plug>(ale_complete) +< ALEDocumentation *ALEDocumentation* Similar to the |ALEHover| command, retrieve documentation information for diff --git a/plugin/ale.vim b/plugin/ale.vim index f57a495c..4af59a91 100644 --- a/plugin/ale.vim +++ b/plugin/ale.vim @@ -204,6 +204,8 @@ command! -bar ALEDocumentation :call ale#hover#ShowDocumentationAtCursor() " Search for appearances of a symbol, such as a type name or function name. command! -nargs=1 ALESymbolSearch :call ale#symbol#Search(<q-args>) +command! -bar ALEComplete :call ale#completion#AlwaysGetCompletions() + " <Plug> mappings for commands nnoremap <silent> <Plug>(ale_previous) :ALEPrevious<Return> nnoremap <silent> <Plug>(ale_previous_wrap) :ALEPreviousWrap<Return> @@ -229,6 +231,7 @@ nnoremap <silent> <Plug>(ale_go_to_definition_in_vsplit) :ALEGoToDefinitionInVSp nnoremap <silent> <Plug>(ale_find_references) :ALEFindReferences<Return> nnoremap <silent> <Plug>(ale_hover) :ALEHover<Return> nnoremap <silent> <Plug>(ale_documentation) :ALEDocumentation<Return> +inoremap <silent> <Plug>(ale_complete) <C-\><C-O>:ALEComplete<Return> " Set up autocmd groups now. call ale#events#Init() diff --git a/test/test_ale_complete_command.vader b/test/test_ale_complete_command.vader new file mode 100644 index 00000000..c6ef8bf5 --- /dev/null +++ b/test/test_ale_complete_command.vader @@ -0,0 +1,22 @@ +Before: + function! MockAlwaysGetCompletions() abort + let g:get_completions_called = 0 + + function! ale#completion#AlwaysGetCompletions() abort + let g:get_completions_called = 1 + endfunction + endfunction + + call MockAlwaysGetCompletions() + +After: + unlet! g:get_completions_called + delfunction MockAlwaysGetCompletions + delfunction ale#completion#AlwaysGetCompletions + + runtime autoload/ale/completion.vim + +Execute(ale#completion#AlwaysGetCompletions should be called when ALEComplete is executed): + AssertEqual 0, g:get_completions_called + ALEComplete + AssertEqual 1, g:get_completions_called |