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
|
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?
|
### Why isn't YCM just written in plain VimScript, FFS?
|
||||||
|
|
||||||
Because of the identifier completion engine and subsequence-based filtering.
|
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|
|
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|
|
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|
|
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|
|
22. Snippets added with |:UltiSnipsAddFiletypes| do not appear in the popup menu
|
||||||
23. Why does YCM demand such a recent version of Vim? |youcompleteme-why-does-ycm-demand-such-recent-version-of-vim|
|
23. Why isn't YCM just written in plain VimScript, FFS? |youcompleteme-why-isnt-ycm-just-written-in-plain-vimscript-ffs|
|
||||||
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|
|
24. Why does YCM demand such a recent version of Vim? |youcompleteme-why-does-ycm-demand-such-recent-version-of-vim|
|
||||||
25. Nasty bugs happen if I have the 'vim-autoclose' plugin installed |vim-sub-autoclose|
|
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. Is there some sort of YCM mailing list? I have questions |youcompleteme-is-there-sort-of-ycm-mailing-list-i-have-questions|
|
26. Nasty bugs happen if I have the 'vim-autoclose' plugin installed |vim-sub-autoclose|
|
||||||
27. I get an internal compiler error when installing |youcompleteme-i-get-an-internal-compiler-error-when-installing|
|
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 weird errors when I press 'Ctrl-C' in Vim |Ctrl-sub-C|
|
28. I get an internal compiler error when installing |youcompleteme-i-get-an-internal-compiler-error-when-installing|
|
||||||
29. Why did YCM stop using Syntastic for diagnostics display? |youcompleteme-why-did-ycm-stop-using-syntastic-for-diagnostics-display|
|
29. I get weird errors when I press 'Ctrl-C' in Vim |Ctrl-sub-C|
|
||||||
30. Completion doesn't work with the C++ standard library headers |youcompleteme-completion-doesnt-work-with-c-standard-library-headers|
|
30. Why did YCM stop using Syntastic for diagnostics display? |youcompleteme-why-did-ycm-stop-using-syntastic-for-diagnostics-display|
|
||||||
31. When I open a JavaScript file, I get an annoying warning about '.tern-project'
|
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|
|
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.|
|
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. 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
|
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|
|
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|
|
12. Contributor Code of Conduct |youcompleteme-contributor-code-of-conduct|
|
||||||
13. Contact |youcompleteme-contact|
|
13. Contact |youcompleteme-contact|
|
||||||
14. License |youcompleteme-license|
|
14. License |youcompleteme-license|
|
||||||
@ -2904,6 +2905,15 @@ options:
|
|||||||
g:UltiSnipsJumpForwardTrigger
|
g:UltiSnipsJumpForwardTrigger
|
||||||
g:UltiSnipsJumpBackwardTrigger
|
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*
|
*youcompleteme-why-isnt-ycm-just-written-in-plain-vimscript-ffs*
|
||||||
Why isn't 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 )
|
EventNotification )
|
||||||
from ycm.client.shutdown_request import SendShutdownRequest
|
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():
|
def PatchNoProxy():
|
||||||
current_value = os.environ.get('no_proxy', '')
|
current_value = os.environ.get('no_proxy', '')
|
||||||
@ -319,7 +313,7 @@ class YouCompleteMe( object ):
|
|||||||
if not self.IsServerAlive():
|
if not self.IsServerAlive():
|
||||||
return
|
return
|
||||||
extra_data = {}
|
extra_data = {}
|
||||||
_AddUltiSnipsDataIfNeeded( extra_data )
|
self._AddUltiSnipsDataIfNeeded( extra_data )
|
||||||
SendEventNotificationAsync( 'BufferVisit', extra_data )
|
SendEventNotificationAsync( 'BufferVisit', extra_data )
|
||||||
|
|
||||||
|
|
||||||
@ -690,25 +684,16 @@ class YouCompleteMe( object ):
|
|||||||
extra_conf_vim_data )
|
extra_conf_vim_data )
|
||||||
|
|
||||||
|
|
||||||
def _AddUltiSnipsDataIfNeeded( extra_data ):
|
def _AddUltiSnipsDataIfNeeded( self, extra_data ):
|
||||||
if not USE_ULTISNIPS_DATA:
|
# See :h UltiSnips#SnippetsInCurrentScope.
|
||||||
return
|
try:
|
||||||
|
vim.eval( 'UltiSnips#SnippetsInCurrentScope( 1 )' )
|
||||||
|
except vim.error:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
snippets = vimsupport.GetVariableValue( 'g:current_ulti_dict_info' )
|
||||||
# Since UltiSnips may run in a different python interpreter (python 3) than
|
extra_data[ 'ultisnips_snippets' ] = [
|
||||||
# YCM, UltiSnips_Manager singleton is not necessary the same as the one
|
{ 'trigger': trigger,
|
||||||
# used by YCM. In particular, it means that we cannot rely on UltiSnips to
|
'description': snippet[ 'description' ] }
|
||||||
# set the current filetypes to the singleton. We need to do it ourself.
|
for trigger, snippet in iteritems( snippets )
|
||||||
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
|
|
||||||
]
|
|
||||||
|
Loading…
Reference in New Issue
Block a user