Adding the g:ycm_auto_trigger option

Toggling this option off turns off the identifier completer and the semantic
triggers.

Fixes #597
This commit is contained in:
Strahinja Val Markovic 2013-12-02 16:36:53 -08:00
parent 1ccf57614f
commit aeb2c5c227
5 changed files with 55 additions and 4 deletions

View File

@ -678,6 +678,21 @@ Default: `0`
let g:ycm_min_num_identifier_candidate_chars = 0 let g:ycm_min_num_identifier_candidate_chars = 0
### The `g:ycm_auto_trigger` option
When set to `0`, this option turns off YCM's identifier completer (the
as-you-type popup) _and_ the semantic triggers (the popup you'd get after typing
`.` or `->` in say C++). The Syntastic integration remains working and you can
still force semantic completion with the `<C-Space>` shortcut.
If you want to just turn off the identifier completer but keep the semantic
triggers, you should set `g:ycm_min_num_of_chars_for_completion` to a high
number like `99`.
Default: `1`
let g:ycm_auto_trigger = 1
### The `g:ycm_filetype_whitelist` option ### The `g:ycm_filetype_whitelist` option
This option controls for which Vim filetypes (see `:h filetype`) should YCM be This option controls for which Vim filetypes (see `:h filetype`) should YCM be

View File

@ -366,7 +366,10 @@ function! s:OnCursorMovedInsertMode()
if g:ycm_autoclose_preview_window_after_completion if g:ycm_autoclose_preview_window_after_completion
call s:ClosePreviewWindowIfNeeded() call s:ClosePreviewWindowIfNeeded()
endif endif
if g:ycm_auto_trigger
call s:InvokeCompletion() call s:InvokeCompletion()
endif
endfunction endfunction

View File

@ -18,6 +18,7 @@
# along with YouCompleteMe. If not, see <http://www.gnu.org/licenses/>. # along with YouCompleteMe. If not, see <http://www.gnu.org/licenses/>.
import abc import abc
from collections import defaultdict
from ycm.utils import ToUtf8IfNeeded, ForceSemanticCompletion, RunningInsideVim from ycm.utils import ToUtf8IfNeeded, ForceSemanticCompletion, RunningInsideVim
if RunningInsideVim(): if RunningInsideVim():
@ -100,8 +101,9 @@ class Completer( object ):
def __init__( self, user_options ): def __init__( self, user_options ):
self.user_options = user_options self.user_options = user_options
self.min_num_chars = user_options[ 'min_num_of_chars_for_completion' ] self.min_num_chars = user_options[ 'min_num_of_chars_for_completion' ]
self.triggers_for_filetype = TriggersForFiletype( self.triggers_for_filetype = (
user_options[ 'semantic_triggers' ] ) TriggersForFiletype( user_options[ 'semantic_triggers' ] )
if user_options[ 'auto_trigger' ] else defaultdict( set ) )
self.completions_future = None self.completions_future = None
self._completions_cache = None self._completions_cache = None

View File

@ -1,5 +1,6 @@
{ {
"filepath_completion_use_working_dir": 0, "filepath_completion_use_working_dir": 0,
"auto_trigger": 1,
"min_num_of_chars_for_completion": 2, "min_num_of_chars_for_completion": 2,
"min_num_identifier_candidate_chars": 0, "min_num_identifier_candidate_chars": 0,
"semantic_triggers": {}, "semantic_triggers": {},

View File

@ -26,7 +26,7 @@ from .test_utils import ( Setup, BuildRequest, PathToTestFile,
from webtest import TestApp from webtest import TestApp
from nose.tools import eq_, with_setup from nose.tools import eq_, with_setup
from hamcrest import ( assert_that, has_item, has_items, has_entry, from hamcrest import ( assert_that, has_item, has_items, has_entry,
contains_inanyorder ) contains_inanyorder, empty )
from ..responses import BuildCompletionData, UnknownExtraConf from ..responses import BuildCompletionData, UnknownExtraConf
from .. import handlers from .. import handlers
import bottle import bottle
@ -127,6 +127,36 @@ int main()
CompletionEntryMatcher( 'x' ), CompletionEntryMatcher( 'x' ),
CompletionEntryMatcher( 'y' ) ) ) CompletionEntryMatcher( 'y' ) ) )
@with_setup( Setup )
def GetCompletions_ClangCompleter_NoCompletionsWhenAutoTriggerOff_test():
ChangeSpecificOptions( { 'auto_trigger': False } )
app = TestApp( handlers.app )
contents = """
struct Foo {
int x;
int y;
char c;
};
int main()
{
Foo foo;
foo.
}
"""
# 0-based line and column!
completion_data = BuildRequest( filepath = '/foo.cpp',
filetype = 'cpp',
contents = contents,
line_num = 10,
column_num = 6,
start_column = 6,
compilation_flags = ['-x', 'c++'] )
results = app.post_json( '/completions', completion_data ).json
assert_that( results, empty() )
@with_setup( Setup ) @with_setup( Setup )
def GetCompletions_ClangCompleter_UnknownExtraConfException_test(): def GetCompletions_ClangCompleter_UnknownExtraConfException_test():