Updating vimdoc from readme

This commit is contained in:
Strahinja Val Markovic 2013-03-01 18:40:02 -08:00
parent d2db03b021
commit 6d64a841bb

View File

@ -7,20 +7,22 @@ Contents ~
1. Introduction |youcompleteme-introduction| 1. Introduction |youcompleteme-introduction|
2. Mac OS X super-quick installation |youcompleteme-mac-os-x-super-quick-installation| 2. Mac OS X super-quick installation |youcompleteme-mac-os-x-super-quick-installation|
3. Ubuntu Linux x64 super-quick installation |youcompleteme-ubuntu-linux-x64-super-quick-installation| 3. Ubuntu Linux x64 super-quick installation |youcompleteme-ubuntu-linux-x64-super-quick-installation|
4. Full Installation Guide |youcompleteme-full-installation-guide| 4. Windows Installation |youcompleteme-windows-installation|
5. User Guide |youcompleteme-user-guide| 5. Full Installation Guide |youcompleteme-full-installation-guide|
6. User Guide |youcompleteme-user-guide|
1. General Usage |youcompleteme-general-usage| 1. General Usage |youcompleteme-general-usage|
2. Completion string ranking |youcompleteme-completion-string-ranking| 2. Completion string ranking |youcompleteme-completion-string-ranking|
3. General Semantic Completion Engine Usage |youcompleteme-general-semantic-completion-engine-usage| 3. General Semantic Completion Engine Usage |youcompleteme-general-semantic-completion-engine-usage|
4. C-family Semantic Completion Engine Usage |youcompleteme-c-family-semantic-completion-engine-usage| 4. C-family Semantic Completion Engine Usage |youcompleteme-c-family-semantic-completion-engine-usage|
5. Syntastic integration |youcompleteme-syntastic-integration| 5. Syntastic integration |youcompleteme-syntastic-integration|
6. Writing New Semantic Completers |youcompleteme-writing-new-semantic-completers| 6. Writing New Semantic Completers |youcompleteme-writing-new-semantic-completers|
6. Commands |youcompleteme-commands| 7. Commands |youcompleteme-commands|
1. The |YcmForceCompileAndDiagnostics| command 1. The |YcmForceCompileAndDiagnostics| command
2. The |YcmDiags| command 2. The |YcmDiags| command
3. The |YcmShowDetailedDiagnostic| command 3. The |YcmShowDetailedDiagnostic| command
4. The |YcmDebugInfo| command 4. The |YcmDebugInfo| command
7. Options |youcompleteme-options| 5. The |YcmCompleter| command
8. Options |youcompleteme-options|
1. The |g:ycm_min_num_of_chars_for_completion| option 1. The |g:ycm_min_num_of_chars_for_completion| option
2. The |g:ycm_filetypes_to_completely_ignore| option 2. The |g:ycm_filetypes_to_completely_ignore| option
3. The |g:ycm_filetype_specific_completion_to_disable| option 3. The |g:ycm_filetype_specific_completion_to_disable| option
@ -35,8 +37,10 @@ Contents ~
12. The |g:ycm_key_invoke_completion| option 12. The |g:ycm_key_invoke_completion| option
13. The |g:ycm_key_detailed_diagnostics| option 13. The |g:ycm_key_detailed_diagnostics| option
14. The |g:ycm_global_ycm_extra_conf| option 14. The |g:ycm_global_ycm_extra_conf| option
15. The |g:ycm_semantic_triggers| option 15. The |g:ycm_confirm_extra_conf| option
8. FAQ |youcompleteme-faq| 16. The |g:ycm_extra_conf_globlist| option
17. The |g:ycm_semantic_triggers| option
9. FAQ |youcompleteme-faq|
1. I get a linker warning regarding |libpython| on Mac when compiling YCM 1. I get a linker warning regarding |libpython| on Mac when compiling YCM
2. I get a weird window at the top of my file when I use the semantic engine 2. I get a weird window at the top of my file when I use the semantic engine
3. It appears that YCM is not working 3. It appears that YCM is not working
@ -47,12 +51,13 @@ Contents ~
8. I'm trying to use a Homebrew Vim with YCM and I'm getting segfaults 8. I'm trying to use a Homebrew Vim with YCM and I'm getting segfaults
9. I have a Homebrew Python and/or MacVim; can't compile/SIGABRT when starting 9. I have a Homebrew Python and/or MacVim; can't compile/SIGABRT when starting
10. I get 'LONG_BIT definition appears wrong for platform' when compiling 10. I get 'LONG_BIT definition appears wrong for platform' when compiling
11. Why isn't YCM just written in plain VimScript, FFS? 11. I get 'Vim: Caught deadly signal SEGV' on Vim startup
12. Why does YCM demand such a recent version of Vim? 12. Why isn't YCM just written in plain VimScript, FFS?
13. I get annoying messages in Vim's status area when I type 13. Why does YCM demand such a recent version of Vim?
14. Nasty bugs happen if I have the |vim-autoclose| plugin installed 14. I get annoying messages in Vim's status area when I type
9. Contact |youcompleteme-contact| 15. Nasty bugs happen if I have the |vim-autoclose| plugin installed
10. License |youcompleteme-license| 10. Contact |youcompleteme-contact|
11. License |youcompleteme-license|
=============================================================================== ===============================================================================
*youcompleteme-introduction* *youcompleteme-introduction*
@ -187,7 +192,8 @@ Remember: YCM is a plugin with a compiled component. If you update YCM using
Vundle and the ycm_core library API has changed (happens rarely), YCM will Vundle and the ycm_core library API has changed (happens rarely), YCM will
notify you to recompile it. You should then rerun the install process. notify you to recompile it. You should then rerun the install process.
Install CMake. 'sudo apt-get install cmake' Install development tools and CMake: 'sudo apt-get install build-essential
cmake'
Make sure you have Python headers installed: 'sudo apt-get install Make sure you have Python headers installed: 'sudo apt-get install
python-dev'. python-dev'.
@ -212,6 +218,14 @@ look at what's available for configuration. There are a few interesting
options that are conservatively turned off by default that you may want to options that are conservatively turned off by default that you may want to
turn on. turn on.
===============================================================================
*youcompleteme-windows-installation*
Windows Installation ~
YCM has no official support for Windows, but that doesn't mean you can't get
it to work there. See the Windows Installation Guide [10] wiki page. Feel free
to add to it.
=============================================================================== ===============================================================================
*youcompleteme-full-installation-guide* *youcompleteme-full-installation-guide*
Full Installation Guide ~ Full Installation Guide ~
@ -240,9 +254,9 @@ Please follow the instructions carefully. Read EVERY WORD.
':echo has('python')'. The output should be 1. If it's 0, then get a ':echo has('python')'. The output should be 1. If it's 0, then get a
version of Vim with Python support. version of Vim with Python support.
- Install YCM with Vundle [6] (or Pathogen [10], but Vundle is a better idea). - Install YCM with Vundle [6] (or Pathogen [11], but Vundle is a better idea).
With Vundle, this would mean adding a 'Bundle 'Valloric/YouCompleteMe' line With Vundle, this would mean adding a 'Bundle 'Valloric/YouCompleteMe' line
to your vimrc [11]. to your vimrc [12].
- [Complete this step ONLY if you care about semantic completion support for - [Complete this step ONLY if you care about semantic completion support for
C-family languages. Otherwise it's not neccessary.] Download the latest C-family languages. Otherwise it's not neccessary.] Download the latest
@ -251,7 +265,7 @@ Please follow the instructions carefully. Read EVERY WORD.
to power the YCM semantic completion engine for those languages. YCM needs to power the YCM semantic completion engine for those languages. YCM needs
libclang version 3.2 or higher. You can use the system libclang only if you libclang version 3.2 or higher. You can use the system libclang only if you
are sure it is version 3.2 or higher, otherwise don't. Even if it is, I are sure it is version 3.2 or higher, otherwise don't. Even if it is, I
recommend using the official binaries from llvm.org [12] if at all recommend using the official binaries from llvm.org [13] if at all
possible. Make sure you download the correct archive file for your OS. possible. Make sure you download the correct archive file for your OS.
- Compile the 'ycm_core' plugin plugin (ha!) that YCM needs. This is the C++ - Compile the 'ycm_core' plugin plugin (ha!) that YCM needs. This is the C++
@ -361,20 +375,23 @@ YCM looks for a '.ycm_extra_conf.py' file in the directory of the opened file
or in any directory above it in the hierarchy (recursively); when the file is or in any directory above it in the hierarchy (recursively); when the file is
found, it is loaded (only once!) as a Python module. YCM calls a found, it is loaded (only once!) as a Python module. YCM calls a
'FlagsForFile' method in that module which should provide it with the 'FlagsForFile' method in that module which should provide it with the
information necessary to compile the current file. (You can also provide a information necessary to compile the current file. You can also provide a path
path to a global '.ycm_extra_conf.py' file and override this searching to a global '.ycm_extra_conf.py' file, which will be used as a fallback. To
behavior. See the Options section for more details.) prevent the execution of malicious code from a file you didn't write YCM will
ask you once per '.ycm_extra_conf.py' if it is safe to load. This can be
disabled and you can white-/blacklist files. See the Options section for more
details.
This system was designed this way so that the user can perform any arbitrary This system was designed this way so that the user can perform any arbitrary
sequence of operations to produce a list of compilation flags YCM should hand sequence of operations to produce a list of compilation flags YCM should hand
to Clang. to Clang.
See YCM's own '.ycm_extra_conf.py' [13] for details on how this works. You See YCM's own '.ycm_extra_conf.py' [14] for details on how this works. You
should be able to use it as a starting point. Hint: just replace the strings should be able to use it as a starting point. Hint: just replace the strings
in the 'flags' variable with compilation flags necessary for your project. in the 'flags' variable with compilation flags necessary for your project.
That should be enough for 99% of projects. That should be enough for 99% of projects.
Yes, Clang's 'CompilationDatabase' system [14] is also supported. Again, see Yes, Clang's 'CompilationDatabase' system [15] is also supported. Again, see
the above linked example file. the above linked example file.
If Clang encounters errors when compiling the header files that your file If Clang encounters errors when compiling the header files that your file
@ -430,7 +447,7 @@ You can also see the full diagnostic message for all the diagnostics in the
current file in Vim's 'locationlist', which can be opened with the ':lopen' current file in Vim's 'locationlist', which can be opened with the ':lopen'
and ':lclose' commands. A good way to toggle the display of the 'locationlist' and ':lclose' commands. A good way to toggle the display of the 'locationlist'
with a single key mapping is provided by another (very small) Vim plugin with a single key mapping is provided by another (very small) Vim plugin
called ListToggle [15] (which also makes it possible to change the height of called ListToggle [16] (which also makes it possible to change the height of
the 'locationlist' window), also written by yours truly. the 'locationlist' window), also written by yours truly.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -439,7 +456,7 @@ Writing New Semantic Completers ~
You have two options here: writing an 'omnifunc' for Vim's omnicomplete system You have two options here: writing an 'omnifunc' for Vim's omnicomplete system
that YCM will then use through its omni-completer, or a custom completer for that YCM will then use through its omni-completer, or a custom completer for
YCM using the Completer API [16]. YCM using the Completer API [17].
Here are the differences between the two approaches: Here are the differences between the two approaches:
@ -457,7 +474,7 @@ Here are the differences between the two approaches:
than VimScript. than VimScript.
If you want to use the 'omnifunc' system, see the relevant Vim docs with ':h If you want to use the 'omnifunc' system, see the relevant Vim docs with ':h
complete-functions'. For the Completer API, see the API docs [16]. complete-functions'. For the Completer API, see the API docs [17].
If you want to upstream your completer into YCM's source, you should use the If you want to upstream your completer into YCM's source, you should use the
Completer API. Completer API.
@ -500,17 +517,26 @@ This will print out various debug information for the current file. Useful to
see what compile commands will be used for the file if you're using the see what compile commands will be used for the file if you're using the
semantic completion engine. semantic completion engine.
-------------------------------------------------------------------------------
The *YcmCompleter* command
This command can be used to invoke completer-specific commands. If the first
argument is of the form 'ft=...' the completer for that file type will be used
(for example 'ft=cpp'), else the native completer of the current buffer will
be used. Call |YcmCompleter| without further arguments for information about
the commands you can call for the selected completer.
=============================================================================== ===============================================================================
*youcompleteme-options* *youcompleteme-options*
Options ~ Options ~
All options have reasonable defaults so if the plug-in works after All options have reasonable defaults so if the plug-in works after
installation you don't need to change any options. These options can be installation you don't need to change any options. These options can be
configured in your vimrc script [11] by including a line like this: configured in your vimrc script [12] by including a line like this:
> >
let g:ycm_min_num_of_chars_for_completion = 1 let g:ycm_min_num_of_chars_for_completion = 1
Note that after changing an option in your vimrc script [11] you have to Note that after changing an option in your vimrc script [12] you have to
restart Vim for the changes to take effect. restart Vim for the changes to take effect.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -727,6 +753,55 @@ Default: ''
> >
let g:ycm_global_ycm_extra_conf = '' let g:ycm_global_ycm_extra_conf = ''
-------------------------------------------------------------------------------
The *g:ycm_confirm_extra_conf* option
When this option is set to '1' YCM will ask once per '.ycm_extra_conf.py' file
if it is safe to be loaded. This is to prevent execution of malicious code
from a '.ycm_extra_conf.py' file you didn't write.
Default: '1'
>
let g:ycm_confirm_extra_conf = 1
-------------------------------------------------------------------------------
The *g:ycm_extra_conf_globlist* option
This option is a list that may contain several globbing patterns. If a pattern
starts with a '!' all '.ycm_extra_conf.py' files matching that pattern will be
blacklisted, that is they won't be loaded and no confirmation dialog will be
shown. If a pattern does not start with a '!' all files matching that pattern
will be whitelisted. Note that this option is not used when confirmation is
disabled using |g:ycm_confirm_extra_conf| and that items earlier in the list
will take precedence over the later ones.
Rules:
- '*' matches everything
- '?' matches any single character
- '[seq]' matches any character in seq
- '[!seq]' matches any char not in seq
Example:
>
let g:ycm_extra_conf_globlist = ['~/dev/*','!~/*']
- The first rule will match everything contained in the '~/dev' directory so
'.ycm_extra_conf.py' files from there will be loaded.
- The second rule will match everything in the home directory so a
'.ycm_extra_conf.py' file from there won't be loaded.
- As the first rule takes precedence everything in the home directory
excluding the '~/dev' directory will be blacklisted.
Default: '[]'
>
let g:ycm_extra_conf_globlist = []
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
The *g:ycm_semantic_triggers* option The *g:ycm_semantic_triggers* option
@ -747,11 +822,12 @@ Default: '[see next line]'
\ 'c' : ['->', '.'], \ 'c' : ['->', '.'],
\ 'objc' : ['->', '.'], \ 'objc' : ['->', '.'],
\ 'cpp,objcpp' : ['->', '.', '::'], \ 'cpp,objcpp' : ['->', '.', '::'],
\ 'perl,php' : ['->'], \ 'perl' : ['->'],
\ 'cs,java,javascript,d,vim,ruby,python,perl6,scala,vb,elixir' : ['.'], \ 'php' : ['->', '::'],
\ 'cs,java,javascript,d,vim,ruby,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'lua' : ['.', ':'], \ 'lua' : ['.', ':'],
\ 'erlang' : [':'], \ 'erlang' : [':'],
} \ }
=============================================================================== ===============================================================================
*youcompleteme-faq* *youcompleteme-faq*
@ -849,7 +925,7 @@ I have a Homebrew Python and/or MacVim; can't compile/SIGABRT when starting ~
You should probably run 'brew rm python; brew install python' to get the You should probably run 'brew rm python; brew install python' to get the
latest fixes that should make YCM work with such a configuration. Also rebuild latest fixes that should make YCM work with such a configuration. Also rebuild
Macvim then. If you still get problems with this, see issue #18 [17] for Macvim then. If you still get problems with this, see issue #18 [18] for
suggestions. suggestions.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -886,6 +962,25 @@ library to use. You may need to set these flags to something else, but you
need to make sure you use the same version of Python that your Vim binary is need to make sure you use the same version of Python that your Vim binary is
built against, which is highly likely to be the system's default Python. built against, which is highly likely to be the system's default Python.
-------------------------------------------------------------------------------
I get 'Vim: Caught deadly signal SEGV' on Vim startup ~
This can happen on some Linux distros. If you encounter this situation, run
Vim under 'gdb'. You'll probably see something like this in the output when
Vim crashes:
'undefined symbol: clang_CompileCommands_dispose'
This means that Vim is trying to load a 'libclang.so' that is too old. You
need at least a 3.2 libclang. Some distros ship with a system 'libclang.so'
that identifies itself as 3.2 but is not; it was cut from the upstream sources
before the official 3.2 release and some API changes (like the addition of the
CompileCommands API) were added after their cut.
So just go through the installation guide and make sure you are using a
correct 'libclang.so'. I recommend downloading prebuilt binaries from
llvm.org.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Why isn't YCM just written in plain VimScript, FFS? ~ Why isn't YCM just written in plain VimScript, FFS? ~
@ -923,7 +1018,7 @@ You'll have to learn to ignore them. It's a shitty "solution", I know.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Nasty bugs happen if I have the *vim-autoclose* plugin installed Nasty bugs happen if I have the *vim-autoclose* plugin installed
Use the delimitMate [18] plugin instead. It does the same thing without Use the delimitMate [19] plugin instead. It does the same thing without
conflicting with YCM. conflicting with YCM.
=============================================================================== ===============================================================================
@ -931,7 +1026,7 @@ conflicting with YCM.
Contact ~ Contact ~
If you have questions, bug reports, suggestions, etc. please use the issue If you have questions, bug reports, suggestions, etc. please use the issue
tracker [19]. The latest version is available at http://valloric.github.com/YouCompleteMe/. tracker [20]. The latest version is available at http://valloric.github.com/YouCompleteMe/.
The author's homepage is http://val.markovic.io. The author's homepage is http://val.markovic.io.
@ -939,7 +1034,7 @@ The author's homepage is http://val.markovic.io.
*youcompleteme-license* *youcompleteme-license*
License ~ License ~
This software is licensed under the GPL v3 license [20]. Copyright 2012 This software is licensed under the GPL v3 license [21]. Copyright 2012
Strahinja Val Markovic <val@markovic.io>. Strahinja Val Markovic <val@markovic.io>.
=============================================================================== ===============================================================================
@ -955,16 +1050,17 @@ References ~
[7] http://mxcl.github.com/homebrew/ [7] http://mxcl.github.com/homebrew/
[8] http://www.cmake.org/cmake/resources/software.html [8] http://www.cmake.org/cmake/resources/software.html
[9] https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source [9] https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source
[10] https://github.com/tpope/vim-pathogen#pathogenvim [10] https://github.com/Valloric/YouCompleteMe/wiki/Windows-Installation-Guide
[11] http://vimhelp.appspot.com/starting.txt.html#vimrc [11] https://github.com/tpope/vim-pathogen#pathogenvim
[12] http://llvm.org/releases/download.html#3.2 [12] http://vimhelp.appspot.com/starting.txt.html#vimrc
[13] https://github.com/Valloric/YouCompleteMe/blob/master/cpp/ycm/.ycm_extra_conf.py [13] http://llvm.org/releases/download.html#3.2
[14] http://clang.llvm.org/docs/JSONCompilationDatabase.html [14] https://github.com/Valloric/YouCompleteMe/blob/master/cpp/ycm/.ycm_extra_conf.py
[15] https://github.com/Valloric/ListToggle [15] http://clang.llvm.org/docs/JSONCompilationDatabase.html
[16] https://github.com/Valloric/YouCompleteMe/blob/master/python/completers/completer.py [16] https://github.com/Valloric/ListToggle
[17] https://github.com/Valloric/YouCompleteMe/issues/18 [17] https://github.com/Valloric/YouCompleteMe/blob/master/python/completers/completer.py
[18] https://github.com/Raimondi/delimitMate [18] https://github.com/Valloric/YouCompleteMe/issues/18
[19] https://github.com/Valloric/YouCompleteMe/issues?state=open [19] https://github.com/Raimondi/delimitMate
[20] http://www.gnu.org/copyleft/gpl.html [20] https://github.com/Valloric/YouCompleteMe/issues?state=open
[21] http://www.gnu.org/copyleft/gpl.html
vim: ft=help vim: ft=help