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
|
" only valid in Insert mode. This way, feedkeys() won't send these keys if you
|
||||||
" quit Insert mode quickly enough.
|
" quit Insert mode quickly enough.
|
||||||
inoremap <silent> <Plug>(ale_show_completion_menu) <C-x><C-o><C-p>
|
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
|
" 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.
|
" we should restore the old settings right away.
|
||||||
nnoremap <silent> <Plug>(ale_show_completion_menu) :call ale#completion#RestoreCompletionOptions()<CR>
|
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]*$|\.$|''$|"$',
|
\ 'typescript': '\v[a-zA-Z$_][a-zA-Z$_0-9]*$|\.$|''$|"$',
|
||||||
\ 'rust': '\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]*$|\.$|::$|-\>$',
|
\ '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.
|
" Regular expressions for finding the start column to replace with completion.
|
||||||
|
@ -148,6 +150,7 @@ let s:trigger_character_map = {
|
||||||
\ 'typescript': ['.', '''', '"'],
|
\ 'typescript': ['.', '''', '"'],
|
||||||
\ 'rust': ['.', '::'],
|
\ 'rust': ['.', '::'],
|
||||||
\ 'cpp': ['.', '::', '->'],
|
\ 'cpp': ['.', '::', '->'],
|
||||||
|
\ 'c': ['.', '->'],
|
||||||
\}
|
\}
|
||||||
|
|
||||||
function! s:GetFiletypeValue(map, filetype) abort
|
function! s:GetFiletypeValue(map, filetype) abort
|
||||||
|
@ -978,6 +981,14 @@ function! ale#completion#StopTimer() abort
|
||||||
let s:timer_id = -1
|
let s:timer_id = -1
|
||||||
endfunction
|
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
|
function! ale#completion#Queue() abort
|
||||||
if !get(b:, 'ale_completion_enabled', g:ale_completion_enabled)
|
if !get(b:, 'ale_completion_enabled', g:ale_completion_enabled)
|
||||||
return
|
return
|
||||||
|
@ -999,6 +1010,8 @@ function! ale#completion#Queue() abort
|
||||||
|
|
||||||
call ale#completion#StopTimer()
|
call ale#completion#StopTimer()
|
||||||
|
|
||||||
|
call s:closePreviousCompletionMenu()
|
||||||
|
|
||||||
let s:timer_id = timer_start(g:ale_completion_delay, function('s:TimerHandler'))
|
let s:timer_id = timer_start(g:ale_completion_delay, function('s:TimerHandler'))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ class Source(Base):
|
||||||
'rust': r'(\.|::)\w*$',
|
'rust': r'(\.|::)\w*$',
|
||||||
'typescript': r'(\.|\'|")\w*$',
|
'typescript': r'(\.|\'|")\w*$',
|
||||||
'cpp': r'(\.|::|->)\w*$',
|
'cpp': r'(\.|::|->)\w*$',
|
||||||
|
'c': r'(\.|->)\w*$',
|
||||||
}
|
}
|
||||||
|
|
||||||
# Returns an integer for the start position, as with omnifunc.
|
# Returns an integer for the start position, as with omnifunc.
|
||||||
|
|
|
@ -53,6 +53,7 @@ class DeopleteSourceTest(unittest.TestCase):
|
||||||
'rust': r'(\.|::)\w*$',
|
'rust': r'(\.|::)\w*$',
|
||||||
'typescript': r'(\.|\'|")\w*$',
|
'typescript': r'(\.|\'|")\w*$',
|
||||||
'cpp': r'(\.|::|->)\w*$',
|
'cpp': r'(\.|::|->)\w*$',
|
||||||
|
'c': r'(\.|->)\w*$',
|
||||||
},
|
},
|
||||||
'is_bytepos': True,
|
'is_bytepos': True,
|
||||||
'is_volatile': True,
|
'is_volatile': True,
|
||||||
|
|
Loading…
Reference in New Issue