mirror of https://github.com/dense-analysis/ale
Improve struct and pointer autocompletion in C (#4231)
* Add explicit trigger characters for C (#4226) * Stop completion before issuing subsequent requests (#4226) Co-authored-by: Marios Sioutis <26476573+s-marios@users.noreply.github.com>
This commit is contained in:
parent
d6f3d4976d
commit
a918f8c7bc
|
@ -6,6 +6,7 @@ scriptencoding utf-8
|
|||
" only valid in Insert mode. This way, feedkeys() won't send these keys if you
|
||||
" quit Insert mode quickly enough.
|
||||
inoremap <silent> <Plug>(ale_show_completion_menu) <C-x><C-o><C-p>
|
||||
inoremap <silent> <Plug>(ale_stop_completion_menu) <C-x><C-z>
|
||||
" If we hit the key sequence in normal mode, then we won't show the menu, so
|
||||
" we should restore the old settings right away.
|
||||
nnoremap <silent> <Plug>(ale_show_completion_menu) :call ale#completion#RestoreCompletionOptions()<CR>
|
||||
|
@ -133,6 +134,7 @@ let s:should_complete_map = {
|
|||
\ 'typescript': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$|\.$|''$|"$',
|
||||
\ 'rust': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$|\.$|::$',
|
||||
\ 'cpp': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$|\.$|::$|-\>$',
|
||||
\ 'c': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$|\.$|-\>$',
|
||||
\}
|
||||
|
||||
" Regular expressions for finding the start column to replace with completion.
|
||||
|
@ -148,6 +150,7 @@ let s:trigger_character_map = {
|
|||
\ 'typescript': ['.', '''', '"'],
|
||||
\ 'rust': ['.', '::'],
|
||||
\ 'cpp': ['.', '::', '->'],
|
||||
\ 'c': ['.', '->'],
|
||||
\}
|
||||
|
||||
function! s:GetFiletypeValue(map, filetype) abort
|
||||
|
@ -978,6 +981,14 @@ function! ale#completion#StopTimer() abort
|
|||
let s:timer_id = -1
|
||||
endfunction
|
||||
|
||||
" Close the previous completion menu (if any), so that the newer autocompletion
|
||||
" candidates will show up
|
||||
function! s:closePreviousCompletionMenu() abort
|
||||
if exists('*complete_info') && !empty(complete_info(['mode']))
|
||||
call ale#util#FeedKeys("\<Plug>(ale_stop_completion_menu)")
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! ale#completion#Queue() abort
|
||||
if !get(b:, 'ale_completion_enabled', g:ale_completion_enabled)
|
||||
return
|
||||
|
@ -999,6 +1010,8 @@ function! ale#completion#Queue() abort
|
|||
|
||||
call ale#completion#StopTimer()
|
||||
|
||||
call s:closePreviousCompletionMenu()
|
||||
|
||||
let s:timer_id = timer_start(g:ale_completion_delay, function('s:TimerHandler'))
|
||||
endfunction
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ class Source(Base):
|
|||
'rust': r'(\.|::)\w*$',
|
||||
'typescript': r'(\.|\'|")\w*$',
|
||||
'cpp': r'(\.|::|->)\w*$',
|
||||
'c': r'(\.|->)\w*$',
|
||||
}
|
||||
|
||||
# Returns an integer for the start position, as with omnifunc.
|
||||
|
|
|
@ -53,6 +53,7 @@ class DeopleteSourceTest(unittest.TestCase):
|
|||
'rust': r'(\.|::)\w*$',
|
||||
'typescript': r'(\.|\'|")\w*$',
|
||||
'cpp': r'(\.|::|->)\w*$',
|
||||
'c': r'(\.|->)\w*$',
|
||||
},
|
||||
'is_bytepos': True,
|
||||
'is_volatile': True,
|
||||
|
|
Loading…
Reference in New Issue