Do not depend on UltiSnips internals
Use UltiSnips#SnippetsInCurrentScope to fetch snippets. Add an entry in the FAQ about the :UltiSnipsAddFiletypes command.
This commit is contained in:
parent
e8047050cd
commit
5dca552d5d
10
README.md
10
README.md
@ -2648,6 +2648,16 @@ g:UltiSnipsJumpForwardTrigger
|
||||
g:UltiSnipsJumpBackwardTrigger
|
||||
```
|
||||
|
||||
### Snippets added with `:UltiSnipsAddFiletypes` do not appear in the popup menu
|
||||
|
||||
For efficiency, YCM only fetches UltiSnips snippets in specific scenarios like
|
||||
visiting a buffer or setting its filetype. You can force YCM to retrieve them by
|
||||
manually triggering the `FileType` autocommand:
|
||||
|
||||
```viml
|
||||
:doautocmd FileType
|
||||
```
|
||||
|
||||
### Why isn't YCM just written in plain VimScript, FFS?
|
||||
|
||||
Because of the identifier completion engine and subsequence-based filtering.
|
||||
|
@ -145,23 +145,24 @@ Contents ~
|
||||
19. YCM does not read identifiers from my tags files |youcompleteme-ycm-does-not-read-identifiers-from-my-tags-files|
|
||||
20. 'CTRL-U' in insert mode does not work |CTRL-sub-U|
|
||||
21. YCM conflicts with UltiSnips TAB key usage |youcompleteme-ycm-conflicts-with-ultisnips-tab-key-usage|
|
||||
22. Why isn't YCM just written in plain VimScript, FFS? |youcompleteme-why-isnt-ycm-just-written-in-plain-vimscript-ffs|
|
||||
23. Why does YCM demand such a recent version of Vim? |youcompleteme-why-does-ycm-demand-such-recent-version-of-vim|
|
||||
24. I get annoying messages in Vim's status area when I type |youcompleteme-i-get-annoying-messages-in-vims-status-area-when-i-type|
|
||||
25. Nasty bugs happen if I have the 'vim-autoclose' plugin installed |vim-sub-autoclose|
|
||||
26. Is there some sort of YCM mailing list? I have questions |youcompleteme-is-there-sort-of-ycm-mailing-list-i-have-questions|
|
||||
27. I get an internal compiler error when installing |youcompleteme-i-get-an-internal-compiler-error-when-installing|
|
||||
28. I get weird errors when I press 'Ctrl-C' in Vim |Ctrl-sub-C|
|
||||
29. Why did YCM stop using Syntastic for diagnostics display? |youcompleteme-why-did-ycm-stop-using-syntastic-for-diagnostics-display|
|
||||
30. Completion doesn't work with the C++ standard library headers |youcompleteme-completion-doesnt-work-with-c-standard-library-headers|
|
||||
31. When I open a JavaScript file, I get an annoying warning about '.tern-project'
|
||||
22. Snippets added with |:UltiSnipsAddFiletypes| do not appear in the popup menu
|
||||
23. Why isn't YCM just written in plain VimScript, FFS? |youcompleteme-why-isnt-ycm-just-written-in-plain-vimscript-ffs|
|
||||
24. Why does YCM demand such a recent version of Vim? |youcompleteme-why-does-ycm-demand-such-recent-version-of-vim|
|
||||
25. I get annoying messages in Vim's status area when I type |youcompleteme-i-get-annoying-messages-in-vims-status-area-when-i-type|
|
||||
26. Nasty bugs happen if I have the 'vim-autoclose' plugin installed |vim-sub-autoclose|
|
||||
27. Is there some sort of YCM mailing list? I have questions |youcompleteme-is-there-sort-of-ycm-mailing-list-i-have-questions|
|
||||
28. I get an internal compiler error when installing |youcompleteme-i-get-an-internal-compiler-error-when-installing|
|
||||
29. I get weird errors when I press 'Ctrl-C' in Vim |Ctrl-sub-C|
|
||||
30. Why did YCM stop using Syntastic for diagnostics display? |youcompleteme-why-did-ycm-stop-using-syntastic-for-diagnostics-display|
|
||||
31. Completion doesn't work with the C++ standard library headers |youcompleteme-completion-doesnt-work-with-c-standard-library-headers|
|
||||
32. When I open a JavaScript file, I get an annoying warning about '.tern-project'
|
||||
file |.tern-sub-project|
|
||||
32. When I start vim I get a runtime error saying 'R6034 An application has made an
|
||||
33. When I start vim I get a runtime error saying 'R6034 An application has made an
|
||||
attempt to load the C runtime library incorrectly.' |R6034-An-application-has-made-an-attempt-to-load-the-C-runtime-library-incorrectly.|
|
||||
33. I hear that YCM only supports Python 2, is that true? |youcompleteme-i-hear-that-ycm-only-supports-python-2-is-that-true|
|
||||
34. On Windows I get "E887: Sorry, this command is disabled, the Python's site
|
||||
34. I hear that YCM only supports Python 2, is that true? |youcompleteme-i-hear-that-ycm-only-supports-python-2-is-that-true|
|
||||
35. On Windows I get "E887: Sorry, this command is disabled, the Python's site
|
||||
module could not be loaded" |E887:-Sorry-this-command-is-disabled-the-Python-s-site-module-could-not-be-loaded|
|
||||
35. I can't complete python packages in a virtual environment. |youcompleteme-i-cant-complete-python-packages-in-virtual-environment.|
|
||||
36. I can't complete python packages in a virtual environment. |youcompleteme-i-cant-complete-python-packages-in-virtual-environment.|
|
||||
12. Contributor Code of Conduct |youcompleteme-contributor-code-of-conduct|
|
||||
13. Contact |youcompleteme-contact|
|
||||
14. License |youcompleteme-license|
|
||||
@ -2904,6 +2905,15 @@ options:
|
||||
g:UltiSnipsJumpForwardTrigger
|
||||
g:UltiSnipsJumpBackwardTrigger
|
||||
<
|
||||
-------------------------------------------------------------------------------
|
||||
Snippets added with *:UltiSnipsAddFiletypes* do not appear in the popup menu
|
||||
|
||||
For efficiency, YCM only fetches UltiSnips snippets in specific scenarios like
|
||||
visiting a buffer or setting its filetype. You can force YCM to retrieve them
|
||||
by manually triggering the 'FileType' autocommand:
|
||||
>
|
||||
:doautocmd FileType
|
||||
<
|
||||
-------------------------------------------------------------------------------
|
||||
*youcompleteme-why-isnt-ycm-just-written-in-plain-vimscript-ffs*
|
||||
Why isn't YCM just written in plain VimScript, FFS? ~
|
||||
|
@ -51,12 +51,6 @@ from ycm.client.event_notification import ( SendEventNotificationAsync,
|
||||
EventNotification )
|
||||
from ycm.client.shutdown_request import SendShutdownRequest
|
||||
|
||||
try:
|
||||
from UltiSnips import UltiSnips_Manager
|
||||
USE_ULTISNIPS_DATA = True
|
||||
except ImportError:
|
||||
USE_ULTISNIPS_DATA = False
|
||||
|
||||
|
||||
def PatchNoProxy():
|
||||
current_value = os.environ.get('no_proxy', '')
|
||||
@ -319,7 +313,7 @@ class YouCompleteMe( object ):
|
||||
if not self.IsServerAlive():
|
||||
return
|
||||
extra_data = {}
|
||||
_AddUltiSnipsDataIfNeeded( extra_data )
|
||||
self._AddUltiSnipsDataIfNeeded( extra_data )
|
||||
SendEventNotificationAsync( 'BufferVisit', extra_data )
|
||||
|
||||
|
||||
@ -690,25 +684,16 @@ class YouCompleteMe( object ):
|
||||
extra_conf_vim_data )
|
||||
|
||||
|
||||
def _AddUltiSnipsDataIfNeeded( extra_data ):
|
||||
if not USE_ULTISNIPS_DATA:
|
||||
return
|
||||
def _AddUltiSnipsDataIfNeeded( self, extra_data ):
|
||||
# See :h UltiSnips#SnippetsInCurrentScope.
|
||||
try:
|
||||
vim.eval( 'UltiSnips#SnippetsInCurrentScope( 1 )' )
|
||||
except vim.error:
|
||||
return
|
||||
|
||||
try:
|
||||
# Since UltiSnips may run in a different python interpreter (python 3) than
|
||||
# YCM, UltiSnips_Manager singleton is not necessary the same as the one
|
||||
# used by YCM. In particular, it means that we cannot rely on UltiSnips to
|
||||
# set the current filetypes to the singleton. We need to do it ourself.
|
||||
UltiSnips_Manager.reset_buffer_filetypes()
|
||||
UltiSnips_Manager.add_buffer_filetypes(
|
||||
vimsupport.GetVariableValue( '&filetype' ) )
|
||||
rawsnips = UltiSnips_Manager._snips( '', True )
|
||||
except:
|
||||
return
|
||||
|
||||
# UltiSnips_Manager._snips() returns a class instance where:
|
||||
# class.trigger - name of snippet trigger word ( e.g. defn or testcase )
|
||||
# class.description - description of the snippet
|
||||
extra_data[ 'ultisnips_snippets' ] = [
|
||||
{ 'trigger': x.trigger, 'description': x.description } for x in rawsnips
|
||||
]
|
||||
snippets = vimsupport.GetVariableValue( 'g:current_ulti_dict_info' )
|
||||
extra_data[ 'ultisnips_snippets' ] = [
|
||||
{ 'trigger': trigger,
|
||||
'description': snippet[ 'description' ] }
|
||||
for trigger, snippet in iteritems( snippets )
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user