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|
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|
4. Full Installation Guide |youcompleteme-full-installation-guide|
5. User Guide |youcompleteme-user-guide|
4. Windows Installation |youcompleteme-windows-installation|
5. Full Installation Guide |youcompleteme-full-installation-guide|
6. User Guide |youcompleteme-user-guide|
1. General Usage |youcompleteme-general-usage|
2. Completion string ranking |youcompleteme-completion-string-ranking|
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|
5. Syntastic integration |youcompleteme-syntastic-integration|
6. Writing New Semantic Completers |youcompleteme-writing-new-semantic-completers|
6. Commands |youcompleteme-commands|
7. Commands |youcompleteme-commands|
1. The |YcmForceCompileAndDiagnostics| command
2. The |YcmDiags| command
3. The |YcmShowDetailedDiagnostic| 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
2. The |g:ycm_filetypes_to_completely_ignore| option
3. The |g:ycm_filetype_specific_completion_to_disable| option
@ -35,8 +37,10 @@ Contents ~
12. The |g:ycm_key_invoke_completion| option
13. The |g:ycm_key_detailed_diagnostics| option
14. The |g:ycm_global_ycm_extra_conf| option
15. The |g:ycm_semantic_triggers| option
8. FAQ |youcompleteme-faq|
15. The |g:ycm_confirm_extra_conf| option
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
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
@ -47,12 +51,13 @@ Contents ~
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
10. I get 'LONG_BIT definition appears wrong for platform' when compiling
11. Why isn't YCM just written in plain VimScript, FFS?
12. Why does YCM demand such a recent version of Vim?
13. I get annoying messages in Vim's status area when I type
14. Nasty bugs happen if I have the |vim-autoclose| plugin installed
9. Contact |youcompleteme-contact|
10. License |youcompleteme-license|
11. I get 'Vim: Caught deadly signal SEGV' on Vim startup
12. Why isn't YCM just written in plain VimScript, FFS?
13. Why does YCM demand such a recent version of Vim?
14. I get annoying messages in Vim's status area when I type
15. Nasty bugs happen if I have the |vim-autoclose| plugin installed
10. Contact |youcompleteme-contact|
11. License |youcompleteme-license|
===============================================================================
*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
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
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
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*
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
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
to your vimrc [11].
to your vimrc [12].
- [Complete this step ONLY if you care about semantic completion support for
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
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
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.
- 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
found, it is loaded (only once!) as a Python module. YCM calls a
'FlagsForFile' method in that module which should provide it with the
information necessary to compile the current file. (You can also provide a
path to a global '.ycm_extra_conf.py' file and override this searching
behavior. See the Options section for more details.)
information necessary to compile the current file. You can also provide a path
to a global '.ycm_extra_conf.py' file, which will be used as a fallback. To
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
sequence of operations to produce a list of compilation flags YCM should hand
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
in the 'flags' variable with compilation flags necessary for your project.
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.
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'
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
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.
-------------------------------------------------------------------------------
@ -439,7 +456,7 @@ Writing New Semantic Completers ~
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
YCM using the Completer API [16].
YCM using the Completer API [17].
Here are the differences between the two approaches:
@ -457,7 +474,7 @@ Here are the differences between the two approaches:
than VimScript.
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
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
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*
Options ~
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
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
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.
-------------------------------------------------------------------------------
@ -727,6 +753,55 @@ Default: ''
>
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
@ -747,11 +822,12 @@ Default: '[see next line]'
\ 'c' : ['->', '.'],
\ 'objc' : ['->', '.'],
\ 'cpp,objcpp' : ['->', '.', '::'],
\ 'perl,php' : ['->'],
\ 'cs,java,javascript,d,vim,ruby,python,perl6,scala,vb,elixir' : ['.'],
\ 'perl' : ['->'],
\ 'php' : ['->', '::'],
\ 'cs,java,javascript,d,vim,ruby,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'lua' : ['.', ':'],
\ 'erlang' : [':'],
}
\ }
===============================================================================
*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
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.
-------------------------------------------------------------------------------
@ -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
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? ~
@ -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
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.
===============================================================================
@ -931,7 +1026,7 @@ conflicting with YCM.
Contact ~
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.
@ -939,7 +1034,7 @@ The author's homepage is http://val.markovic.io.
*youcompleteme-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>.
===============================================================================
@ -955,16 +1050,17 @@ References ~
[7] http://mxcl.github.com/homebrew/
[8] http://www.cmake.org/cmake/resources/software.html
[9] https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source
[10] https://github.com/tpope/vim-pathogen#pathogenvim
[11] http://vimhelp.appspot.com/starting.txt.html#vimrc
[12] http://llvm.org/releases/download.html#3.2
[13] https://github.com/Valloric/YouCompleteMe/blob/master/cpp/ycm/.ycm_extra_conf.py
[14] http://clang.llvm.org/docs/JSONCompilationDatabase.html
[15] https://github.com/Valloric/ListToggle
[16] https://github.com/Valloric/YouCompleteMe/blob/master/python/completers/completer.py
[17] https://github.com/Valloric/YouCompleteMe/issues/18
[18] https://github.com/Raimondi/delimitMate
[19] https://github.com/Valloric/YouCompleteMe/issues?state=open
[20] http://www.gnu.org/copyleft/gpl.html
[10] https://github.com/Valloric/YouCompleteMe/wiki/Windows-Installation-Guide
[11] https://github.com/tpope/vim-pathogen#pathogenvim
[12] http://vimhelp.appspot.com/starting.txt.html#vimrc
[13] http://llvm.org/releases/download.html#3.2
[14] https://github.com/Valloric/YouCompleteMe/blob/master/cpp/ycm/.ycm_extra_conf.py
[15] http://clang.llvm.org/docs/JSONCompilationDatabase.html
[16] https://github.com/Valloric/ListToggle
[17] https://github.com/Valloric/YouCompleteMe/blob/master/python/completers/completer.py
[18] https://github.com/Valloric/YouCompleteMe/issues/18
[19] https://github.com/Raimondi/delimitMate
[20] https://github.com/Valloric/YouCompleteMe/issues?state=open
[21] http://www.gnu.org/copyleft/gpl.html
vim: ft=help