diff --git a/README.md b/README.md index d35070a6..442c41dd 100644 --- a/README.md +++ b/README.md @@ -2073,9 +2073,9 @@ Default: `[see next line]` ```viml let g:ycm_filetype_blacklist = { \ 'tagbar': 1, - \ 'qf': 1, \ 'notes': 1, \ 'markdown': 1, + \ 'netrw': 1, \ 'unite': 1, \ 'text': 1, \ 'vimwiki': 1, @@ -3346,6 +3346,18 @@ more details. This is a Vim bug fixed in version 8.1.0256. Update your Vim to this version or later. +### `TAB` is already mapped to trigger completion in the command-line window + +Vim automatically maps the key set by the `wildchar` option, which is `TAB` by +default, to complete commands in the command-line window. If you would prefer +using this key to cycle through YCM's suggestions without changing the value of +`wildchar`, add the following to your vimrc: + +```viml +autocmd CmdwinEnter * inoremap + \ pumvisible() ? "\" : "\" +``` + Contributor Code of Conduct --------------------------- diff --git a/autoload/youcompleteme.vim b/autoload/youcompleteme.vim index 3526aad4..398c9a6e 100644 --- a/autoload/youcompleteme.vim +++ b/autoload/youcompleteme.vim @@ -45,6 +45,11 @@ let s:pollers = { \ 'wait_milliseconds': 100 \ } \ } +let s:buftype_blacklist = { + \ 'help': 1, + \ 'terminal': 1, + \ 'quickfix': 1 + \ } " When both versions are available, we prefer Python 3 over Python 2: @@ -132,7 +137,7 @@ function! youcompleteme#Enable() " filetype) and if so, the FileType event has triggered before and thus the " buffer is already parsed. autocmd FileType * call s:OnFileTypeSet() - autocmd BufEnter * call s:OnBufferEnter() + autocmd BufEnter,CmdwinEnter * call s:OnBufferEnter() autocmd BufUnload * call s:OnBufferUnload() autocmd InsertLeave * call s:OnInsertLeave() autocmd VimLeave * call s:OnVimLeave() @@ -428,23 +433,23 @@ endfunction function! s:AllowedToCompleteInBuffer( buffer ) - let buffer_filetype = getbufvar( a:buffer, '&filetype' ) + let buftype = getbufvar( a:buffer, '&buftype' ) - if empty( buffer_filetype ) || - \ getbufvar( a:buffer, '&buftype' ) ==# 'nofile' || - \ buffer_filetype ==# 'qf' + if has_key( s:buftype_blacklist, buftype ) return 0 endif - if s:DisableOnLargeFile( a:buffer ) + let filetype = getbufvar( a:buffer, '&filetype' ) + + if empty( filetype ) || s:DisableOnLargeFile( a:buffer ) return 0 endif let whitelist_allows = type( g:ycm_filetype_whitelist ) != type( {} ) || \ has_key( g:ycm_filetype_whitelist, '*' ) || - \ has_key( g:ycm_filetype_whitelist, buffer_filetype ) + \ has_key( g:ycm_filetype_whitelist, filetype ) let blacklist_allows = type( g:ycm_filetype_blacklist ) != type( {} ) || - \ !has_key( g:ycm_filetype_blacklist, buffer_filetype ) + \ !has_key( g:ycm_filetype_blacklist, filetype ) let allowed = whitelist_allows && blacklist_allows if allowed @@ -528,6 +533,13 @@ endfunction function! s:OnFileTypeSet() + " The contents of the command-line window are empty when the filetype is set + " for the first time. Users should never change its filetype so we only rely + " on the CmdwinEnter event for that window. + if !empty( getcmdwintype() ) + return + endif + if !s:AllowedToCompleteInCurrentBuffer() return endif diff --git a/doc/youcompleteme.txt b/doc/youcompleteme.txt index ec5f399f..b8d76986 100644 --- a/doc/youcompleteme.txt +++ b/doc/youcompleteme.txt @@ -181,6 +181,7 @@ module could not be loaded" |youcompleteme-on-windows-i-get-e887-sorry-this-comm 35. YCM does not shut down when I quit Vim |youcompleteme-ycm-does-not-shut-down-when-i-quit-vim| 36. YCM does not work with my Anaconda Python setup |youcompleteme-ycm-does-not-work-with-my-anaconda-python-setup| 37. Automatic import insertion after selecting a completion breaks undo |youcompleteme-automatic-import-insertion-after-selecting-completion-breaks-undo| + 38. 'TAB' is already mapped to trigger completion in the command-line window |youcompleteme-tab-is-already-mapped-to-trigger-completion-in-command-line-window| 14. Contributor Code of Conduct |youcompleteme-contributor-code-of-conduct| 15. Contact |youcompleteme-contact| 16. License |youcompleteme-license| @@ -2331,9 +2332,9 @@ Default: '[see next line]' > let g:ycm_filetype_blacklist = { \ 'tagbar': 1, - \ 'qf': 1, \ 'notes': 1, \ 'markdown': 1, + \ 'netrw': 1, \ 'unite': 1, \ 'text': 1, \ 'vimwiki': 1, @@ -3601,6 +3602,18 @@ Automatic import insertion after selecting a completion breaks undo ~ This is a Vim bug fixed in version 8.1.0256. Update your Vim to this version or later. +------------------------------------------------------------------------------- +*youcompleteme-tab-is-already-mapped-to-trigger-completion-in-command-line-window* +'TAB' is already mapped to trigger completion in the command-line window ~ + +Vim automatically maps the key set by the 'wildchar' option, which is 'TAB' by +default, to complete commands in the command-line window. If you would prefer +using this key to cycle through YCM's suggestions without changing the value of +'wildchar', add the following to your vimrc: +> + autocmd CmdwinEnter * inoremap + \ pumvisible() ? "\" : "\" +< =============================================================================== *youcompleteme-contributor-code-of-conduct* Contributor Code of Conduct ~ diff --git a/plugin/youcompleteme.vim b/plugin/youcompleteme.vim index 54ae050d..23d83cbb 100644 --- a/plugin/youcompleteme.vim +++ b/plugin/youcompleteme.vim @@ -91,7 +91,6 @@ let g:ycm_filetype_whitelist = let g:ycm_filetype_blacklist = \ get( g:, 'ycm_filetype_blacklist', { \ 'tagbar': 1, - \ 'qf': 1, \ 'notes': 1, \ 'markdown': 1, \ 'netrw': 1,