From d01c8ac83bb2d6b95a3d70cd2f880109f7659130 Mon Sep 17 00:00:00 2001 From: micbou Date: Sat, 7 Apr 2018 03:55:24 +0200 Subject: [PATCH] Update Java and TypeScript features in docs --- README.md | 357 +++++++++++++++------------- doc/youcompleteme.txt | 542 +++++++++++++++++++++++------------------- 2 files changed, 489 insertions(+), 410 deletions(-) diff --git a/README.md b/README.md index 4c911221..45f9584e 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,11 @@ Contents - [Completion String Ranking](#completion-string-ranking) - [General Semantic Completion](#general-semantic-completion) - [C-family Semantic Completion](#c-family-semantic-completion) - - [JavaScript Semantic Completion](#javascript-semantic-completion) - - [Rust Semantic Completion](#rust-semantic-completion) - - [Python Semantic Completion](#python-semantic-completion) - [Java Semantic Completion](#java-semantic-completion) + - [JavaScript Semantic Completion](#javascript-semantic-completion) + - [Python Semantic Completion](#python-semantic-completion) + - [Rust Semantic Completion](#rust-semantic-completion) + - [TypeScript Semantic Completion](#typescript-semantic-completion) - [Semantic Completion for Other Languages](#semantic-completion-for-other-languages) - [Writing New Semantic Completers](#writing-new-semantic-completers) - [Diagnostic Display](#diagnostic-display) @@ -149,7 +150,9 @@ number of languages, including: - displaying type information for classes, variables, functions etc., - displaying documentation for methods, members, etc. in the preview window, - fixing common coding errors, like missing semi-colons, typos, etc., -- semantic renaming of variables across files (JavaScript only). +- semantic renaming of variables across files, +- formatting code, +- removing unused imports, sorting imports, etc. Features vary by file type, so make sure to check out the [file type feature summary](#quick-feature-summary) and the @@ -795,12 +798,19 @@ Quick Feature Summary ### TypeScript -* Semantic auto-completion +* Semantic auto-completion with automatic import insertion +* Go to definition (`GoTo`, `GoToDefinition`, and `GoToDeclaration` are + identical) +* Go to type definition (`GoToType`) +* Reference finding (`GoToReferences`) * Real-time diagnostic display * Renaming symbols (`RefactorRename `) -* Go to definition, find references (`GoToDefinition`, `GoToReferences`) -* Semantic type information for identifiers (`GetType`) * View documentation comments for identifiers (`GetDoc`) +* Type information for identifiers (`GetType`) +* Automatically fix certain errors (`FixIt`) +* Code formatting (`Format`) +* Organize imports (`OrganizeImports`) +* Management of `TSServer` server instance ### JavaScript @@ -834,6 +844,7 @@ Quick Feature Summary * Type information for identifiers (`GetType`) * Automatically fix certain errors including code generation (`FixIt`) * Code formatting (`Format`) +* Organize imports (`OrganizeImports`) * Detection of java projects * Management of `jdt.ls` server instance @@ -1030,145 +1041,6 @@ getting fast completions. Call the `:YcmDiags` command to see if any errors or warnings were detected in your file. -### JavaScript Semantic Completion - -#### JavaScript quick start - -1. Ensure that you have enabled the JavaScript completer. See the - [installation guide](#installation) for details. - -2. Create a `.tern-project` file in the root directory of your JavaScript - project, by following the [instructions][tern-project] in the [Tern][] - documentation. - -3. Edit a file from your project. - -#### Explanation - -JavaScript completion is based on [Tern][]. This completion engine requires a -file named [`.tern-project`][tern-project] to exist in the current working -directory or a directory which is an ancestor of the current working directory -when the Tern server is started. YCM starts the Tern server the first time a -JavaScript file is edited and uses its directory as the working directory, so -the directory of that file at that time needs to be a descendent of the -directory containing the `.tern-project` file (or that directory itself). - -Alternatively, as described in the [Tern documentation][tern-docs], a global -`.tern-config` file may be used. - -Multiple Tern servers are not supported. To switch to a different JavaScript -project, you need to restart the Tern server using [the `RestartServer` -subcommand](#the-restartserver-subcommand) while editing a file of that -project: - -```vim -:YcmCompleter RestartServer -``` - -#### Tips and tricks - -This section contains some advice for configuring `.tern-project` and working -with JavaScript files. The canonical reference for correctly configuring Tern is -the [Tern documentation][tern-docs]. Any issues, improvements, advice, etc. -should be sought from the [Tern][] project. For example, see the [list of tern -plugins](http://ternjs.net/doc/manual.html#plugins) for the list of plugins -which can be enabled in the `plugins` section of the `.tern-project` file. - -##### Configuring Tern for node support - -The following simple example `.tern-project` file enables nodejs support: - -```json -{ - "plugins": { - "node": {} - } -} - -``` - -##### Configuring Tern for requirejs support - -The Tern requirejs plugin requires that all included "libraries" are rooted -under the same base directory. If that's not the case for your projects, then it -is possible to make it work with appropriate symbolic links. For example, create -a directory `ext_lib` within your project and populate it with symlinks to your -libraries. Then set up the `.tern-project` something like this: - -```json - -{ - "plugins": { - "requirejs": { - "baseURL": "./ext_lib", - } - } -} -``` - -Then, given the following structure: - -``` -./ext_lib/mylib (symlink) -./ext_lib/anotherlib (symlink) -``` - -Can be used as follows: - -```javascript -define( [ 'mylib/file1', 'anotherlib/anotherfile' ], function( f1, f2 ) { - // etc. -} ); -``` - -### Rust Semantic Completion - -Completions and GoTo commands within the current crate and its dependencies -should work out of the box with no additional configuration (provided that you -built YCM with the `--rust-completer` flag; see the [*Installation* -section](#installation) for details). For semantic analysis inclusive of the -standard library, you must have a local copy of [the Rust source -code][rust-src]. If using [rustup][], run the following command to download the -code: -``` -rustup component add rust-src -``` -YCM will find its location automatically. Otherwise, download the archive, -extract it somewhere, and set the following option so YCM can locate it: -```viml -" In this example, the Rust source code archive has been extracted to -" /usr/local/rust/rustc-1.20.0 -let g:ycm_rust_src_path = '/usr/local/rust/rustc-1.20.0/src' -``` - -### Python Semantic Completion - -Completion and GoTo commands work out of the box with no additional -configuration. Those features are provided by the [jedi][] library which -supports a variety of Python versions (2.6, 2.7, 3.2+) as long as it -runs in the corresponding Python interpreter. By default YCM runs [jedi][] with -the same Python interpreter used by the [ycmd server][ycmd], so if you would like to -use a different interpreter, use the following option specifying the Python -binary to use. For example, to provide Python 3 completion in your project, set: - -```viml -let g:ycm_python_binary_path = '/usr/bin/python3' -``` - -If the value of `g:ycm_python_binary_path` is an absolute path like above it -will be used as-is, but if it's an executable name it will be searched through -the PATH. So for example if you set: - -```viml -let g:ycm_python_binary_path = 'python' -``` - -YCM will use the first `python` executable it finds in the PATH to run -[jedi][]. This means that if you are in a virtual environment and you start vim -in that directory, the first `python` that YCM will find will be the one in the -virtual environment, so [jedi][] will be able to provide completions for every -package you have in the virtual environment. - ### Java Semantic Completion **NOTE**: Java support is currently experimental. Please let us know your @@ -1305,6 +1177,161 @@ For anything else, [contact us](#contact). Java support is experimental at present so we'd love to hear your feedback! Please do remember to check [CONTRIBUTING.md][contributing-md] for the list of diagnostics we'll need. +### JavaScript Semantic Completion + +#### JavaScript quick start + +1. Ensure that you have enabled the JavaScript completer. See the + [installation guide](#installation) for details. + +2. Create a `.tern-project` file in the root directory of your JavaScript + project, by following the [instructions][tern-project] in the [Tern][] + documentation. + +3. Edit a file from your project. + +#### Explanation + +JavaScript completion is based on [Tern][]. This completion engine requires a +file named [`.tern-project`][tern-project] to exist in the current working +directory or a directory which is an ancestor of the current working directory +when the Tern server is started. YCM starts the Tern server the first time a +JavaScript file is edited and uses its directory as the working directory, so +the directory of that file at that time needs to be a descendent of the +directory containing the `.tern-project` file (or that directory itself). + +Alternatively, as described in the [Tern documentation][tern-docs], a global +`.tern-config` file may be used. + +Multiple Tern servers are not supported. To switch to a different JavaScript +project, you need to restart the Tern server using [the `RestartServer` +subcommand](#the-restartserver-subcommand) while editing a file of that +project: + +```vim +:YcmCompleter RestartServer +``` + +#### Tips and tricks + +This section contains some advice for configuring `.tern-project` and working +with JavaScript files. The canonical reference for correctly configuring Tern is +the [Tern documentation][tern-docs]. Any issues, improvements, advice, etc. +should be sought from the [Tern][] project. For example, see the [list of tern +plugins](http://ternjs.net/doc/manual.html#plugins) for the list of plugins +which can be enabled in the `plugins` section of the `.tern-project` file. + +##### Configuring Tern for node support + +The following simple example `.tern-project` file enables nodejs support: + +```json +{ + "plugins": { + "node": {} + } +} + +``` + +##### Configuring Tern for requirejs support + +The Tern requirejs plugin requires that all included "libraries" are rooted +under the same base directory. If that's not the case for your projects, then it +is possible to make it work with appropriate symbolic links. For example, create +a directory `ext_lib` within your project and populate it with symlinks to your +libraries. Then set up the `.tern-project` something like this: + +```json + +{ + "plugins": { + "requirejs": { + "baseURL": "./ext_lib", + } + } +} +``` + +Then, given the following structure: + +``` +./ext_lib/mylib (symlink) +./ext_lib/anotherlib (symlink) +``` + +Can be used as follows: + +```javascript +define( [ 'mylib/file1', 'anotherlib/anotherfile' ], function( f1, f2 ) { + // etc. +} ); +``` + +### Python Semantic Completion + +Completion and GoTo commands work out of the box with no additional +configuration. Those features are provided by the [jedi][] library which +supports a variety of Python versions (2.6, 2.7, 3.2+) as long as it +runs in the corresponding Python interpreter. By default YCM runs [jedi][] with +the same Python interpreter used by the [ycmd server][ycmd], so if you would like to +use a different interpreter, use the following option specifying the Python +binary to use. For example, to provide Python 3 completion in your project, set: + +```viml +let g:ycm_python_binary_path = '/usr/bin/python3' +``` + +If the value of `g:ycm_python_binary_path` is an absolute path like above it +will be used as-is, but if it's an executable name it will be searched through +the PATH. So for example if you set: + +```viml +let g:ycm_python_binary_path = 'python' +``` + +YCM will use the first `python` executable it finds in the PATH to run +[jedi][]. This means that if you are in a virtual environment and you start vim +in that directory, the first `python` that YCM will find will be the one in the +virtual environment, so [jedi][] will be able to provide completions for every +package you have in the virtual environment. + +### Rust Semantic Completion + +Completions and GoTo commands within the current crate and its dependencies +should work out of the box with no additional configuration (provided that you +built YCM with the `--rust-completer` flag; see the [*Installation* +section](#installation) for details). For semantic analysis inclusive of the +standard library, you must have a local copy of [the Rust source +code][rust-src]. If using [rustup][], run the following command to download the +code: +``` +rustup component add rust-src +``` +YCM will find its location automatically. Otherwise, download the archive, +extract it somewhere, and set the following option so YCM can locate it: +```viml +" In this example, the Rust source code archive has been extracted to +" /usr/local/rust/rustc-1.20.0 +let g:ycm_rust_src_path = '/usr/local/rust/rustc-1.20.0/src' +``` + +### TypeScript Semantic Completion + +All TypeScript features are provided by the [TSServer][] engine, which is +included in the TypeScript SDK. To get the SDK, install [Node.js and +npm][npm-install] and run the command: +``` +npm install -g typescript +``` +[TSServer][] relies on [the `tsconfig.json` file][tsconfig.json] to analyze your +project. Ensure the file exists at the root of your project. + +TypeScript 2.8.1 or later is recommended. Some features will be missing on older +versions. You can check which version you are currently using by looking at the +output of [`:YcmDebugInfo` ](#the-ycmdebuginfo-command). If the version is +`None`, your TypeScript is too old and should be updated. + ### Semantic Completion for Other Languages C-family, C#, Go, Java, JavaScript, Python, Rust, and TypeScript languages are @@ -1551,7 +1578,8 @@ Supported in filetypes: `c, cpp, objc, objcpp` Looks up the symbol under the cursor and jumps to its declaration. -Supported in filetypes: `c, cpp, objc, objcpp, cs, go, python, rust, java` +Supported in filetypes: `c, cpp, objc, objcpp, cs, go, java, python, rust, +typescript` #### The `GoToDefinition` subcommand @@ -1562,8 +1590,8 @@ namely when the definition of the symbol is in the current translation unit. A translation unit consists of the file you are editing and all the files you are including with `#include` directives (directly or indirectly) in that file. -Supported in filetypes: `c, cpp, objc, objcpp, cs, go, javascript, python, -rust, typescript, java` +Supported in filetypes: `c, cpp, objc, objcpp, cs, go, java, javascript, python, +rust, typescript` #### The `GoTo` subcommand @@ -1574,8 +1602,8 @@ the current translation unit, jumps to the symbol's declaration. For C/C++/Objective-C, it first tries to look up the current line for a header and jump to it. For C#, implementations are also considered and preferred. -Supported in filetypes: `c, cpp, objc, objcpp, cs, go, javascript, python, rust, -java` +Supported in filetypes: `c, cpp, objc, objcpp, cs, go, java, javascript, python, +rust, typescript` #### The `GoToImprecise` subcommand @@ -1596,7 +1624,7 @@ This command attempts to find all of the references within the project to the identifier under the cursor and populates the quickfix list with those locations. -Supported in filetypes: `javascript, python, typescript, java` +Supported in filetypes: `java, javascript, python, typescript` #### The `GoToImplementation` subcommand @@ -1641,7 +1669,7 @@ Invoking this command on `s` returns `std::string => std::basic_string` **NOTE:** Causes re-parsing of the current translation unit. -Supported in filetypes: `c, cpp, objc, objcpp, javascript, typescript, java` +Supported in filetypes: `c, cpp, objc, objcpp, java, javascript, typescript` #### The `GetTypeImprecise` subcommand @@ -1697,8 +1725,8 @@ under the cursor. Depending on the file type, this includes things like: * Python docstrings, * etc. -Supported in filetypes: `c, cpp, objc, objcpp, cs, python, typescript, -javascript, rust, java` +Supported in filetypes: `c, cpp, objc, objcpp, cs, java, javascript, python, +typescript, rust` #### The `GetDocImprecise` subcommand @@ -1746,7 +1774,7 @@ indication). **NOTE:** Causes re-parsing of the current translation unit. -Supported in filetypes: `c, cpp, objc, objcpp, cs, java` +Supported in filetypes: `c, cpp, objc, objcpp, cs, java, typescript` #### The `RefactorRename ` subcommand @@ -1760,7 +1788,7 @@ files. Rename operations may involve changes to multiple files, which may or may not be open in Vim buffers at the time. YouCompleteMe handles all of this for you. The behavior is described in [the following section](#multi-file-refactor). -Supported in filetypes: `javascript` (variables only), `typescript, java` +Supported in filetypes: `java, javascript (variables only), typescript` #### Multi-file Refactor @@ -1794,14 +1822,22 @@ to see the buffers that were opened by the command. #### The `Format` subcommand -This commands formats the whole buffer or some part of it according to the value +This command formats the whole buffer or some part of it according to the value of the Vim options `shiftwidth` and `expandtab` (see `:h 'sw'` and `:h et` respectively). To format a specific part of your document, you can either select it in one of Vim's visual modes (see `:h visual-use`) and run the command or directly enter the range on the command line, e.g. `:2,5YcmCompleter Format` to format it from line 2 to line 5. -Supported in filetypes: `java` +Supported in filetypes: `java, typescript` + +#### The `OrganizeImports` subcommand + +This command removes unused imports and sorts imports in the current file. It +can also group imports from the same module in TypeScript and resolves imports +in Java. + +Supported in filetypes: `java, typescript` ### Miscellaneous Commands @@ -1824,7 +1860,7 @@ python binary to use to restart the Python semantic engine. :YcmCompleter RestartServer /usr/bin/python3.4 ``` -Supported in filetypes: `cs, go, javascript, python, rust, typescript, java` +Supported in filetypes: `cs, go, java, javascript, python, rust, typescript` #### The `ClearCompilationFlagCache` subcommand @@ -3368,6 +3404,7 @@ This software is licensed under the [GPL v3 license][gpl]. [Gocode]: https://github.com/nsf/gocode [Godef]: https://github.com/Manishearth/godef [TSServer]: https://github.com/Microsoft/TypeScript/tree/master/src/server +[tsconfig.json]: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html [vim-win-download]: https://bintray.com/micbou/generic/vim [python-win-download]: https://www.python.org/downloads/windows/ [visual-studio-download]: https://www.visualstudio.com/downloads/ diff --git a/doc/youcompleteme.txt b/doc/youcompleteme.txt index 6172835c..4391c406 100644 --- a/doc/youcompleteme.txt +++ b/doc/youcompleteme.txt @@ -33,15 +33,7 @@ Contents ~ 1. Option 1: Use a compilation database [48] |youcompleteme-option-1-use-compilation-database-48| 2. Option 2: Provide the flags manually |youcompleteme-option-2-provide-flags-manually| 3. Errors during compilation |youcompleteme-errors-during-compilation| - 6. JavaScript Semantic Completion |youcompleteme-javascript-semantic-completion| - 1. JavaScript quick start |youcompleteme-javascript-quick-start| - 2. Explanation |youcompleteme-explanation| - 3. Tips and tricks |youcompleteme-tips-tricks| - 1. Configuring Tern for node support |youcompleteme-configuring-tern-for-node-support| - 2. Configuring Tern for requirejs support |youcompleteme-configuring-tern-for-requirejs-support| - 7. Rust Semantic Completion |youcompleteme-rust-semantic-completion| - 8. Python Semantic Completion |youcompleteme-python-semantic-completion| - 9. Java Semantic Completion |youcompleteme-java-semantic-completion| + 6. Java Semantic Completion |youcompleteme-java-semantic-completion| 1. Java quick Start |youcompleteme-java-quick-start| 2. Java Project Files |youcompleteme-java-project-files| 3. Diagnostic display - Syntastic |youcompleteme-diagnostic-display-syntastic| @@ -50,9 +42,18 @@ Contents ~ 6. Maven Projects |youcompleteme-maven-projects| 7. Gradle Projecs |youcompleteme-gradle-projecs| 8. Troubleshooting |youcompleteme-troubleshooting| - 10. Semantic Completion for Other Languages |youcompleteme-semantic-completion-for-other-languages| - 11. Writing New Semantic Completers |youcompleteme-writing-new-semantic-completers| - 12. Diagnostic Display |youcompleteme-diagnostic-display| + 7. JavaScript Semantic Completion |youcompleteme-javascript-semantic-completion| + 1. JavaScript quick start |youcompleteme-javascript-quick-start| + 2. Explanation |youcompleteme-explanation| + 3. Tips and tricks |youcompleteme-tips-tricks| + 1. Configuring Tern for node support |youcompleteme-configuring-tern-for-node-support| + 2. Configuring Tern for requirejs support |youcompleteme-configuring-tern-for-requirejs-support| + 8. Python Semantic Completion |youcompleteme-python-semantic-completion| + 9. Rust Semantic Completion |youcompleteme-rust-semantic-completion| + 10. TypeScript Semantic Completion |youcompleteme-typescript-semantic-completion| + 11. Semantic Completion for Other Languages |youcompleteme-semantic-completion-for-other-languages| + 12. Writing New Semantic Completers |youcompleteme-writing-new-semantic-completers| + 13. Diagnostic Display |youcompleteme-diagnostic-display| 1. Diagnostic Highlighting Groups |youcompleteme-diagnostic-highlighting-groups| 8. Commands |youcompleteme-commands| 1. The |:YcmRestartServer| command @@ -84,6 +85,7 @@ Contents ~ 2. The 'RefactorRename ' subcommand |RefactorRename-new-name| 3. Multi-file Refactor |youcompleteme-multi-file-refactor| 4. The |Format| subcommand + 5. The |OrganizeImports| subcommand 4. Miscellaneous Commands |youcompleteme-miscellaneous-commands| 1. The |RestartServer| subcommand 2. The |ClearCompilationFlagCache| subcommand @@ -239,10 +241,11 @@ Contents ~ - Completion String Ranking - General Semantic Completion - C-family Semantic Completion - - JavaScript Semantic Completion - - Rust Semantic Completion - - Python Semantic Completion - Java Semantic Completion + - JavaScript Semantic Completion + - Python Semantic Completion + - Rust Semantic Completion + - TypeScript Semantic Completion - Semantic Completion for Other Languages - Writing New Semantic Completers - Diagnostic Display @@ -349,7 +352,9 @@ including: - displaying type information for classes, variables, functions etc., - displaying documentation for methods, members, etc. in the preview window, - fixing common coding errors, like missing semi-colons, typos, etc., -- semantic renaming of variables across files (JavaScript only). +- semantic renaming of variables across files, +- formatting code, +- removing unused imports, sorting imports, etc. Features vary by file type, so make sure to check out the file type feature summary and the full list of completer subcommands to find out what's available @@ -1039,12 +1044,19 @@ Go ~ *youcompleteme-typescript* TypeScript ~ -- Semantic auto-completion +- Semantic auto-completion with automatic import insertion +- Go to definition (|GoTo|, |GoToDefinition|, and |GoToDeclaration| are + identical) +- Go to type definition (|GoToType|) +- Reference finding (|GoToReferences|) - Real-time diagnostic display - Renaming symbols ('RefactorRename ') -- Go to definition, find references (|GoToDefinition|, |GoToReferences|) -- Semantic type information for identifiers (|GetType|) - View documentation comments for identifiers (|GetDoc|) +- Type information for identifiers (|GetType|) +- Automatically fix certain errors (|FixIt|) +- Code formatting (|Format|) +- Organize imports (|OrganizeImports|) +- Management of 'TSServer' server instance ------------------------------------------------------------------------------- *youcompleteme-javascript* @@ -1084,6 +1096,7 @@ feedback. - Type information for identifiers (|GetType|) - Automatically fix certain errors including code generation (|FixIt|) - Code formatting (|Format|) +- Organize imports (|OrganizeImports|) - Detection of java projects - Management of 'jdt.ls' server instance @@ -1295,6 +1308,148 @@ to getting fast completions. Call the |:YcmDiags| command to see if any errors or warnings were detected in your file. +------------------------------------------------------------------------------- + *youcompleteme-java-semantic-completion* +Java Semantic Completion ~ + +**NOTE**: Java support is currently experimental. Please let us know your +feedback. + +------------------------------------------------------------------------------- + *youcompleteme-java-quick-start* +Java quick Start ~ + +1. Ensure that you have enabled the Java completer. See the installation + guide for details. + +2. Create a project file (gradle or maven) file in the root directory of + your Java project, by following the instructions below. + +3. If you previously used Eclim or Syntastic for Java, disable them for + Java. + +4. Edit a Java file from your project. + +For the best experience, we highly recommend at least Vim 8.0.1493 when using +Java support with YouCompleteMe. + +------------------------------------------------------------------------------- + *youcompleteme-java-project-files* +Java Project Files ~ + +In order to provide semantic analysis, the Java completion engine requires +knowledge of your project structure. In particular it needs to know the class +path to use, when compiling your code. Fortunately jdt.ls [20] supports eclipse +project files [53], maven projects [54] and gradle projects [55]. + +**NOTE:** Our recommendation is to use either maven or gradle projects. + +------------------------------------------------------------------------------- + *youcompleteme-diagnostic-display-syntastic* +Diagnostic display - Syntastic ~ + +The native support for Java includes YCM's native realtime diagnostics display. +This can conflict with other dianostics plugins like Syntastic, so when +enabling Java support, please **manually disable Syntastic Java diagnostics**. + +Add the following to your 'vimrc': +> + let g:syntastic_java_checkers = [] +< +------------------------------------------------------------------------------- + *youcompleteme-diagnostic-display-eclim* +Diagnostic display - Eclim ~ + +The native support for Java includes YCM's native realtime diagnostics display. +This can conflict with other dianostics plugins like Eclim, so when enabling +Java support, please **manually disable Eclim Java diagnostics**. + +Add the following to your 'vimrc': +> + let g:EclimFileTypeValidate = 0 +< +**NOTE**: We recommend disabling Eclim entirely when editing Java with YCM's +native Java support. This can be done temporarily with ':EclimDisable'. + +------------------------------------------------------------------------------- + *youcompleteme-eclipse-projects* +Eclipse Projects ~ + +Eclipse style projects require two files: .project [53] and .classpath [56]. + +If your project already has these files due to previously being set up within +eclipse, then no setup is required. jdt.ls [20] should load the project just +fine (it's basically eclipse after all). + +However, if not, it is possible (easy in fact) to craft them manually, though +it is not recommended. You're better off using gradle or maven (see below). + +A simple eclipse style project example [57] can be found in the ycmd test dir. +Normally all that is required is to copy these files to the root of your +project and to edit the '.classpath' to add additional libraries, such as: +> + + +< +It may also be necessary to change the directory in which your source files are +located (paths are relative to the .project file itself): +> + +< +**NOTE**: The eclipse project and classpath files are not a public interface +and it is highly recommended to use Maven or Gradle project definitions if you +don't already use eclipse to manage your projects. + +------------------------------------------------------------------------------- + *youcompleteme-maven-projects* +Maven Projects ~ + +Maven needs a file named pom.xml [54] in the root of the project. Once again a +simple pom.xml [58] can be found in ycmd source. + +The format of pom.xml [54] files is way beyond the scope of this document, but +we do recommend using the various tools that can generate them for you, if +you're not familiar with them already. + +------------------------------------------------------------------------------- + *youcompleteme-gradle-projecs* +Gradle Projecs ~ + +Gradle projects require a build.gradle [55]. Again, there is a trivial example +in ycmd's tests [59]. + +The format of build.gradle [55] files is way beyond the scope of this document, +but we do recommend using the various tools that can generate them for you, if +you're not familiar with them already. + +------------------------------------------------------------------------------- + *youcompleteme-troubleshooting* +Troubleshooting ~ + +If you're not getting completions or diagnostics, check the server health: + +- The Java completion engine takes a while to start up and parse your + project. You should be able to see its progress in the command line, and + |:YcmDebugInfo|. Ensure that the following lines are present: +> + -- jdt.ls Java Language Server running + -- jdt.ls Java Language Server Startup Status: Ready +< +- If the above lines don't appear after a few minutes, check the jdt.ls and + ycmd log files using |:YcmToggleLogs|. The jdt.ls log file is called '.log' + (for some reason). + +If you get a message about "classpath is incomplete", then make sure you have +correctly configured the project files. + +If you get messages about unresolved imports, then make sure you have correctly +configured the project files, in particular check that the classpath is set +correctly. + +For anything else, contact us. Java support is experimental at present so we'd +love to hear your feedback! Please do remember to check CONTRIBUTING.md [60] +for the list of diagnostics we'll need. + ------------------------------------------------------------------------------- *youcompleteme-javascript-semantic-completion* JavaScript Semantic Completion ~ @@ -1307,7 +1462,7 @@ JavaScript quick start ~ installation guide for details. 2. Create a '.tern-project' file in the root directory of your JavaScript - project, by following the instructions [53] in the Tern [18] + project, by following the instructions [61] in the Tern [18] documentation. 3. Edit a file from your project. @@ -1317,14 +1472,14 @@ JavaScript quick start ~ Explanation ~ JavaScript completion is based on Tern [18]. This completion engine requires a -file named '.tern-project' [53] to exist in the current working directory or a +file named '.tern-project' [61] to exist in the current working directory or a directory which is an ancestor of the current working directory when the Tern server is started. YCM starts the Tern server the first time a JavaScript file is edited and uses its directory as the working directory, so the directory of that file at that time needs to be a descendent of the directory containing the '.tern-project' file (or that directory itself). -Alternatively, as described in the Tern documentation [54], a global '.tern- +Alternatively, as described in the Tern documentation [62], a global '.tern- config' file may be used. Multiple Tern servers are not supported. To switch to a different JavaScript @@ -1339,9 +1494,9 @@ Tips and tricks ~ This section contains some advice for configuring '.tern-project' and working with JavaScript files. The canonical reference for correctly configuring Tern -is the Tern documentation [54]. Any issues, improvements, advice, etc. should +is the Tern documentation [62]. Any issues, improvements, advice, etc. should be sought from the Tern [18] project. For example, see the list of tern plugins -[55] for the list of plugins which can be enabled in the 'plugins' section of +[63] for the list of plugins which can be enabled in the 'plugins' section of the '.tern-project' file. ------------------------------------------------------------------------------- @@ -1385,26 +1540,6 @@ Can be used as follows: // etc. } ); < -------------------------------------------------------------------------------- - *youcompleteme-rust-semantic-completion* -Rust Semantic Completion ~ - -Completions and GoTo commands within the current crate and its dependencies -should work out of the box with no additional configuration (provided that you -built YCM with the '--rust-completer' flag; see the _Installation_ section for -details). For semantic analysis inclusive of the standard library, you must -have a local copy of the Rust source code [56]. If using rustup [57], run the -following command to download the code: -> - rustup component add rust-src -< -YCM will find its location automatically. Otherwise, download the archive, -extract it somewhere, and set the following option so YCM can locate it: -> - " In this example, the Rust source code archive has been extracted to - " /usr/local/rust/rustc-1.20.0 - let g:ycm_rust_src_path = '/usr/local/rust/rustc-1.20.0/src' -< ------------------------------------------------------------------------------- *youcompleteme-python-semantic-completion* Python Semantic Completion ~ @@ -1433,146 +1568,42 @@ virtual environment, so jedi [12] will be able to provide completions for every package you have in the virtual environment. ------------------------------------------------------------------------------- - *youcompleteme-java-semantic-completion* -Java Semantic Completion ~ + *youcompleteme-rust-semantic-completion* +Rust Semantic Completion ~ -**NOTE**: Java support is currently experimental. Please let us know your -feedback. - -------------------------------------------------------------------------------- - *youcompleteme-java-quick-start* -Java quick Start ~ - -1. Ensure that you have enabled the Java completer. See the installation - guide for details. - -2. Create a project file (gradle or maven) file in the root directory of - your Java project, by following the instructions below. - -3. If you previously used Eclim or Syntastic for Java, disable them for - Java. - -4. Edit a Java file from your project. - -For the best experience, we highly recommend at least Vim 8.0.1493 when using -Java support with YouCompleteMe. - -------------------------------------------------------------------------------- - *youcompleteme-java-project-files* -Java Project Files ~ - -In order to provide semantic analysis, the Java completion engine requires -knowledge of your project structure. In particular it needs to know the class -path to use, when compiling your code. Fortunately jdt.ls [20] supports eclipse -project files [58], maven projects [59] and gradle projects [60]. - -**NOTE:** Our recommendation is to use either maven or gradle projects. - -------------------------------------------------------------------------------- - *youcompleteme-diagnostic-display-syntastic* -Diagnostic display - Syntastic ~ - -The native support for Java includes YCM's native realtime diagnostics display. -This can conflict with other dianostics plugins like Syntastic, so when -enabling Java support, please **manually disable Syntastic Java diagnostics**. - -Add the following to your 'vimrc': +Completions and GoTo commands within the current crate and its dependencies +should work out of the box with no additional configuration (provided that you +built YCM with the '--rust-completer' flag; see the _Installation_ section for +details). For semantic analysis inclusive of the standard library, you must +have a local copy of the Rust source code [64]. If using rustup [65], run the +following command to download the code: > - let g:syntastic_java_checkers = [] + rustup component add rust-src +< +YCM will find its location automatically. Otherwise, download the archive, +extract it somewhere, and set the following option so YCM can locate it: +> + " In this example, the Rust source code archive has been extracted to + " /usr/local/rust/rustc-1.20.0 + let g:ycm_rust_src_path = '/usr/local/rust/rustc-1.20.0/src' < ------------------------------------------------------------------------------- - *youcompleteme-diagnostic-display-eclim* -Diagnostic display - Eclim ~ + *youcompleteme-typescript-semantic-completion* +TypeScript Semantic Completion ~ -The native support for Java includes YCM's native realtime diagnostics display. -This can conflict with other dianostics plugins like Eclim, so when enabling -Java support, please **manually disable Eclim Java diagnostics**. - -Add the following to your 'vimrc': +All TypeScript features are provided by the TSServer [17] engine, which is +included in the TypeScript SDK. To get the SDK, install Node.js and npm [31] +and run the command: > - let g:EclimFileTypeValidate = 0 + npm install -g typescript < -**NOTE**: We recommend disabling Eclim entirely when editing Java with YCM's -native Java support. This can be done temporarily with ':EclimDisable'. +TSServer [17] relies on the 'tsconfig.json' file [66] to analyze your project. +Ensure the file exists at the root of your project. -------------------------------------------------------------------------------- - *youcompleteme-eclipse-projects* -Eclipse Projects ~ - -Eclipse style projects require two files: .project [58] and .classpath [61]. - -If your project already has these files due to previously being set up within -eclipse, then no setup is required. jdt.ls [20] should load the project just -fine (it's basically eclipse after all). - -However, if not, it is possible (easy in fact) to craft them manually, though -it is not recommended. You're better off using gradle or maven (see below). - -A simple eclipse style project example [62] can be found in the ycmd test dir. -Normally all that is required is to copy these files to the root of your -project and to edit the '.classpath' to add additional libraries, such as: -> - - -< -It may also be necessary to change the directory in which your source files are -located (paths are relative to the .project file itself): -> - -< -**NOTE**: The eclipse project and classpath files are not a public interface -and it is highly recommended to use Maven or Gradle project definitions if you -don't already use eclipse to manage your projects. - -------------------------------------------------------------------------------- - *youcompleteme-maven-projects* -Maven Projects ~ - -Maven needs a file named pom.xml [59] in the root of the project. Once again a -simple pom.xml [63] can be found in ycmd source. - -The format of pom.xml [59] files is way beyond the scope of this document, but -we do recommend using the various tools that can generate them for you, if -you're not familiar with them already. - -------------------------------------------------------------------------------- - *youcompleteme-gradle-projecs* -Gradle Projecs ~ - -Gradle projects require a build.gradle [60]. Again, there is a trivial example -in ycmd's tests [64]. - -The format of build.gradle [60] files is way beyond the scope of this document, -but we do recommend using the various tools that can generate them for you, if -you're not familiar with them already. - -------------------------------------------------------------------------------- - *youcompleteme-troubleshooting* -Troubleshooting ~ - -If you're not getting completions or diagnostics, check the server health: - -- The Java completion engine takes a while to start up and parse your - project. You should be able to see its progress in the command line, and - |:YcmDebugInfo|. Ensure that the following lines are present: -> - -- jdt.ls Java Language Server running - -- jdt.ls Java Language Server Startup Status: Ready -< -- If the above lines don't appear after a few minutes, check the jdt.ls and - ycmd log files using |:YcmToggleLogs|. The jdt.ls log file is called '.log' - (for some reason). - -If you get a message about "classpath is incomplete", then make sure you have -correctly configured the project files. - -If you get messages about unresolved imports, then make sure you have correctly -configured the project files, in particular check that the classpath is set -correctly. - -For anything else, contact us. Java support is experimental at present so we'd -love to hear your feedback! Please do remember to check CONTRIBUTING.md [65] -for the list of diagnostics we'll need. +TypeScript 2.8.1 or later is recommended. Some features will be missing on +older versions. You can check which version you are currently using by looking +at the output of |:YcmDebugInfo|. If the version is 'None', your TypeScript is +too old and should be updated. ------------------------------------------------------------------------------- *youcompleteme-semantic-completion-for-other-languages* @@ -1589,7 +1620,7 @@ semantic completions if it does not have a native semantic completion engine for your file's filetype. Vim comes with okayish omnifuncs for various languages like Ruby, PHP, etc. It depends on the language. -You can get a stellar omnifunc for Ruby with Eclim [66]. Just make sure you +You can get a stellar omnifunc for Ruby with Eclim [67]. Just make sure you have the _latest_ Eclim installed and configured (this means Eclim '>= 2.2.*' and Eclipse '>= 4.2.*'). @@ -1606,7 +1637,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 [67]. +YCM using the Completer API [68]. Here are the differences between the two approaches: @@ -1625,7 +1656,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 [67]. +complete-functions'. For the Completer API, see the API docs [68]. If you want to upstream your completer into YCM's source, you should use the Completer API. @@ -1677,7 +1708,7 @@ current file in Vim's 'locationlist', which can be opened with the ':lopen' and ':lclose' commands (make sure you have set 'let g:ycm_always_populate_location_list = 1' in your vimrc). 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 [68] (which also makes it +another (very small) Vim plugin called ListToggle [69] (which also makes it possible to change the height of the 'locationlist' window), also written by yours truly. @@ -1840,7 +1871,8 @@ The *GoToDeclaration* subcommand Looks up the symbol under the cursor and jumps to its declaration. -Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, python, rust, java' +Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, java, python, rust, +typescript' ------------------------------------------------------------------------------- The *GoToDefinition* subcommand @@ -1852,8 +1884,8 @@ namely when the definition of the symbol is in the current translation unit. A translation unit consists of the file you are editing and all the files you are including with '#include' directives (directly or indirectly) in that file. -Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, javascript, python, -rust, typescript, java' +Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, java, javascript, +python, rust, typescript' ------------------------------------------------------------------------------- The *GoTo* subcommand @@ -1865,8 +1897,8 @@ the current translation unit, jumps to the symbol's declaration. For C/C++/Objective-C, it first tries to look up the current line for a header and jump to it. For C#, implementations are also considered and preferred. -Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, javascript, python, -rust, java' +Supported in filetypes: 'c, cpp, objc, objcpp, cs, go, java, javascript, +python, rust, typescript' ------------------------------------------------------------------------------- The *GoToImprecise* subcommand @@ -1889,7 +1921,7 @@ This command attempts to find all of the references within the project to the identifier under the cursor and populates the quickfix list with those locations. -Supported in filetypes: 'javascript, python, typescript, java' +Supported in filetypes: 'java, javascript, python, typescript' ------------------------------------------------------------------------------- The *GoToImplementation* subcommand @@ -1938,7 +1970,7 @@ Invoking this command on 's' returns 'std::string => std::basic_string' **NOTE:** Causes re-parsing of the current translation unit. -Supported in filetypes: 'c, cpp, objc, objcpp, javascript, typescript, java' +Supported in filetypes: 'c, cpp, objc, objcpp, java, javascript, typescript' ------------------------------------------------------------------------------- The *GetTypeImprecise* subcommand @@ -1995,8 +2027,8 @@ under the cursor. Depending on the file type, this includes things like: - Python docstrings, - etc. -Supported in filetypes: 'c, cpp, objc, objcpp, cs, python, typescript, -javascript, rust, java' +Supported in filetypes: 'c, cpp, objc, objcpp, cs, java, javascript, python, +typescript, rust' ------------------------------------------------------------------------------- The *GetDocImprecise* subcommand @@ -2048,7 +2080,7 @@ indication). **NOTE:** Causes re-parsing of the current translation unit. -Supported in filetypes: 'c, cpp, objc, objcpp, cs, java' +Supported in filetypes: 'c, cpp, objc, objcpp, cs, java, typescript' ------------------------------------------------------------------------------- *RefactorRename-new-name* @@ -2064,7 +2096,7 @@ files. Rename operations may involve changes to multiple files, which may or may not be open in Vim buffers at the time. YouCompleteMe handles all of this for you. The behavior is described in the following section. -Supported in filetypes: 'javascript' (variables only), 'typescript, java' +Supported in filetypes: 'java, javascript (variables only), typescript' ------------------------------------------------------------------------------- *youcompleteme-multi-file-refactor* @@ -2101,14 +2133,23 @@ buffers') to see the buffers that were opened by the command. ------------------------------------------------------------------------------- The *Format* subcommand -This commands formats the whole buffer or some part of it according to the -value of the Vim options 'shiftwidth' and 'expandtab' (see ":h 'sw'" and ':h -et' respectively). To format a specific part of your document, you can either +This command formats the whole buffer or some part of it according to the value +of the Vim options 'shiftwidth' and 'expandtab' (see ":h 'sw'" and ':h et' +respectively). To format a specific part of your document, you can either select it in one of Vim's visual modes (see ':h visual-use') and run the command or directly enter the range on the command line, e.g. ':2,5YcmCompleter Format' to format it from line 2 to line 5. -Supported in filetypes: 'java' +Supported in filetypes: 'java, typescript' + +------------------------------------------------------------------------------- +The *OrganizeImports* subcommand + +This command removes unused imports and sorts imports in the current file. It +can also group imports from the same module in TypeScript and resolves imports +in Java. + +Supported in filetypes: 'java, typescript' ------------------------------------------------------------------------------- *youcompleteme-miscellaneous-commands* @@ -2132,7 +2173,7 @@ python binary to use to restart the Python semantic engine. > :YcmCompleter RestartServer /usr/bin/python3.4 < -Supported in filetypes: 'cs, go, javascript, python, rust, typescript, java' +Supported in filetypes: 'cs, go, java, javascript, python, rust, typescript' ------------------------------------------------------------------------------- The *ClearCompilationFlagCache* subcommand @@ -2172,7 +2213,7 @@ For example: call youcompleteme#GetErrorCount() < Both this function and |youcompleteme#GetWarningCount| can be useful when -integrating YCM with other Vim plugins. For example, a lightline [69] user +integrating YCM with other Vim plugins. For example, a lightline [70] user could add a diagnostics section to their statusline which would display the number of errors and warnings. @@ -2515,13 +2556,13 @@ YCM will not render it. The following filter types are supported: -- "regex": Accepts a string regular expression [70]. This type matches when +- "regex": Accepts a string regular expression [71]. This type matches when the regex (treated as case-insensitive) is found in the diagnostic text. - "level": Accepts a string level, either "warning" or "error." This type matches when the diagnostic has the same level. -**NOTE:** The regex syntax is **NOT** Vim's, it's Python's [70]. +**NOTE:** The regex syntax is **NOT** Vim's, it's Python's [71]. Default: '{}' > @@ -2610,7 +2651,7 @@ from the 'tagfiles()' Vim function which examines the 'tags' Vim option. See YCM will re-index your tags files if it detects that they have been modified. -The only supported tag format is the Exuberant Ctags format [71]. The format +The only supported tag format is the Exuberant Ctags format [72]. The format from "plain" ctags is NOT supported. Ctags needs to be called with the '-- fields=+l' option (that's a lowercase 'L', not a one) because YCM needs the 'language:' field in the tags output. @@ -2990,7 +3031,7 @@ It's also possible to use a regular expression as a trigger. You have to prefix your trigger with 're!' to signify it's a regex trigger. For instance, 're!\w+\.' would only trigger after the '\w+\.' regex matches. -**NOTE:** The regex syntax is **NOT** Vim's, it's Python's [70]. +**NOTE:** The regex syntax is **NOT** Vim's, it's Python's [71]. Default: '[see next line]' > @@ -3218,7 +3259,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 [72] for suggestions. +then. If you still get problems with this, see issue #18 [73] for suggestions. ------------------------------------------------------------------------------- *youcompleteme-i-get-long_bit-definition-appears-wrong-for-platform-when-compiling* @@ -3317,15 +3358,15 @@ YCM does not read identifiers from my tags files ~ First, put 'let g:ycm_collect_identifiers_from_tags_files = 1' in your vimrc. -Make sure you are using Exuberant Ctags [73] to produce your tags files since -the only supported tag format is the Exuberant Ctags format [71]. The format +Make sure you are using Exuberant Ctags [74] to produce your tags files since +the only supported tag format is the Exuberant Ctags format [72]. The format from "plain" ctags is NOT supported. The output of 'ctags --version' should -list "Exuberant Ctags". See Universal Ctags [74] for a maintained version. +list "Exuberant Ctags". See Universal Ctags [75] for a maintained version. Ctags needs to be called with the '--fields=+l' (that's a lowercase 'L', not a one) option because YCM needs the 'language:' field in the tags output. -**NOTE:** Exuberant Ctags [73] by default sets language tag for '*.h' files as +**NOTE:** Exuberant Ctags [74] by default sets language tag for '*.h' files as 'C++'. If you have C (not C++) project, consider giving parameter '-- langmap=c:.c.h' to ctags to see tags from '*.h' files. @@ -3404,7 +3445,7 @@ asynchronicity. This feature is available since Vim 7.4.1578. *youcompleteme-nasty-bugs-happen-if-i-have-vim-autoclose-plugin-installed* Nasty bugs happen if I have the 'vim-autoclose' plugin installed ~ -Use the delimitMate [75] plugin instead. It does the same thing without +Use the delimitMate [76] plugin instead. It does the same thing without conflicting with YCM. ------------------------------------------------------------------------------- @@ -3412,7 +3453,7 @@ conflicting with YCM. Is there some sort of YCM mailing list? I have questions ~ If you have questions about the plugin or need help, please use the ycm-users -[76] mailing list, _don't_ create issues on the tracker. The tracker is for bug +[77] mailing list, _don't_ create issues on the tracker. The tracker is for bug reports and feature requests. ------------------------------------------------------------------------------- @@ -3466,7 +3507,7 @@ mismatch in assumptions causes performance problems since Syntastic code isn't optimized for this use case of constant diagnostic refreshing. Poor support for this use case also led to crash bugs in Vim caused by -Syntastic-Vim interactions (issue #593 [77]) and other problems, like random +Syntastic-Vim interactions (issue #593 [78]) and other problems, like random Vim flickering. Attempts were made to resolve these issues in Syntastic, but ultimately some of them failed (for various reasons). @@ -3502,7 +3543,7 @@ paths, prepend '-isystem' to each individual path and append them all to the list of flags you return from your 'FlagsForFile' function in your '.ycm_extra_conf.py' file. -See issue #303 [78] for details. +See issue #303 [79] for details. ------------------------------------------------------------------------------- *youcompleteme-when-i-open-javascript-file-i-get-an-annoying-warning-about-.tern-project-file* @@ -3521,7 +3562,7 @@ When I start vim I get a runtime error saying 'R6034 An application has made ~ an attempt to load the C runtime library incorrectly.' ~ CMake and other things seem to screw up the PATH with their own msvcrXX.dll -versions. [79] Add the following to the very top of your vimrc to remove these +versions. [80] Add the following to the very top of your vimrc to remove these entries from the path. > python << EOF @@ -3557,7 +3598,7 @@ On Windows I get "E887: Sorry, this command is disabled, the Python's site ~ module could not be loaded" ~ If you are running vim on Windows with Python 2.7.11, this is likely caused by -a bug [80]. Follow this workaround [81] or use a different version (Python +a bug [81]. Follow this workaround [82] or use a different version (Python 2.7.12 does not suffer from the bug). ------------------------------------------------------------------------------- @@ -3592,7 +3633,7 @@ YCM does not shut down when I quit Vim ~ YCM relies on the 'VimLeave' event to shut down the ycmd server [47]. Some plugins prevent this event from triggering by exiting Vim through an autocommand without using the 'nested' keyword (see ':h autocmd-nested'). One -of these plugins is vim-nerdtree-tabs [82]. You should identify which plugin is +of these plugins is vim-nerdtree-tabs [83]. You should identify which plugin is responsible for the issue and report it to the plugin author. Note that when this happens, ycmd [47] will automatically shut itself down after 30 minutes. @@ -3601,17 +3642,17 @@ this happens, ycmd [47] will automatically shut itself down after 30 minutes. Contributor Code of Conduct ~ Please note that this project is released with a Contributor Code of Conduct -[83]. By participating in this project you agree to abide by its terms. +[84]. By participating in this project you agree to abide by its terms. =============================================================================== *youcompleteme-contact* Contact ~ If you have questions about the plugin or need help, please join the Gitter -room [1] or use the ycm-users [76] mailing list. +room [1] or use the ycm-users [77] mailing list. If you have bug reports or feature suggestions, please use the issue tracker -[84]. Before you do, please carefully read CONTRIBUTING.md [65] as this asks +[85]. Before you do, please carefully read CONTRIBUTING.md [60] as this asks for important diagnostics which the team will use to help get you going. The latest version of the plugin is available at @@ -3626,7 +3667,7 @@ YouCompleteMe maintainers directly using the contact details below. *youcompleteme-license* License ~ -This software is licensed under the GPL v3 license [85]. © 2015-2017 +This software is licensed under the GPL v3 license [86]. © 2015-2017 YouCompleteMe contributors =============================================================================== @@ -3685,38 +3726,39 @@ References ~ [50] https://github.com/rizsotto/Bear [51] https://raw.githubusercontent.com/Valloric/ycmd/3ad0300e94edc13799e8bf7b831de8b57153c5aa/cpp/ycm/.ycm_extra_conf.py [52] https://github.com/rdnetto/YCM-Generator -[53] http://ternjs.net/doc/manual.html#configuration -[54] http://ternjs.net/doc/manual.html#server -[55] http://ternjs.net/doc/manual.html#plugins -[56] https://www.rust-lang.org/downloads.html -[57] https://www.rustup.rs/ -[58] https://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fproject_description_file.html -[59] https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html -[60] https://docs.gradle.org/current/userguide/tutorial_java_projects.html -[61] https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2FIClasspathEntry.html -[62] https://github.com/Valloric/ycmd/tree/master/ycmd/tests/java/testdata/simple_eclipse_project -[63] https://github.com/Valloric/ycmd/blob/java-language-server/ycmd/tests/java/testdata/simple_maven_project/pom.xml -[64] https://github.com/Valloric/ycmd/tree/master/ycmd/tests/java/testdata/simple_gradle_project -[65] https://github.com/Valloric/YouCompleteMe/blob/master/CONTRIBUTING.md -[66] http://eclim.org/ -[67] https://github.com/Valloric/ycmd/blob/master/ycmd/completers/completer.py -[68] https://github.com/Valloric/ListToggle -[69] https://github.com/itchyny/lightline.vim -[70] https://docs.python.org/2/library/re.html#regular-expression-syntax -[71] http://ctags.sourceforge.net/FORMAT -[72] https://github.com/Valloric/YouCompleteMe/issues/18 -[73] http://ctags.sourceforge.net/ -[74] https://github.com/universal-ctags/ctags -[75] https://github.com/Raimondi/delimitMate -[76] https://groups.google.com/forum/?hl=en#!forum/ycm-users -[77] https://github.com/Valloric/YouCompleteMe/issues/593 -[78] https://github.com/Valloric/YouCompleteMe/issues/303 -[79] http://stackoverflow.com/questions/14552348/runtime-error-r6034-in-embedded-python-application/34696022 -[80] https://github.com/vim/vim/issues/717 -[81] https://github.com/vim/vim-win32-installer/blob/a27bbdba9bb87fa0e44c8a00d33d46be936822dd/appveyor.bat#L86-L88 -[82] https://github.com/jistr/vim-nerdtree-tabs -[83] https://github.com/Valloric/YouCompleteMe/blob/master/CODE_OF_CONDUCT.md -[84] https://github.com/Valloric/YouCompleteMe/issues?state=open -[85] http://www.gnu.org/copyleft/gpl.html +[53] https://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fproject_description_file.html +[54] https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html +[55] https://docs.gradle.org/current/userguide/tutorial_java_projects.html +[56] https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2FIClasspathEntry.html +[57] https://github.com/Valloric/ycmd/tree/master/ycmd/tests/java/testdata/simple_eclipse_project +[58] https://github.com/Valloric/ycmd/blob/java-language-server/ycmd/tests/java/testdata/simple_maven_project/pom.xml +[59] https://github.com/Valloric/ycmd/tree/master/ycmd/tests/java/testdata/simple_gradle_project +[60] https://github.com/Valloric/YouCompleteMe/blob/master/CONTRIBUTING.md +[61] http://ternjs.net/doc/manual.html#configuration +[62] http://ternjs.net/doc/manual.html#server +[63] http://ternjs.net/doc/manual.html#plugins +[64] https://www.rust-lang.org/downloads.html +[65] https://www.rustup.rs/ +[66] https://www.typescriptlang.org/docs/handbook/tsconfig-json.html +[67] http://eclim.org/ +[68] https://github.com/Valloric/ycmd/blob/master/ycmd/completers/completer.py +[69] https://github.com/Valloric/ListToggle +[70] https://github.com/itchyny/lightline.vim +[71] https://docs.python.org/2/library/re.html#regular-expression-syntax +[72] http://ctags.sourceforge.net/FORMAT +[73] https://github.com/Valloric/YouCompleteMe/issues/18 +[74] http://ctags.sourceforge.net/ +[75] https://github.com/universal-ctags/ctags +[76] https://github.com/Raimondi/delimitMate +[77] https://groups.google.com/forum/?hl=en#!forum/ycm-users +[78] https://github.com/Valloric/YouCompleteMe/issues/593 +[79] https://github.com/Valloric/YouCompleteMe/issues/303 +[80] http://stackoverflow.com/questions/14552348/runtime-error-r6034-in-embedded-python-application/34696022 +[81] https://github.com/vim/vim/issues/717 +[82] https://github.com/vim/vim-win32-installer/blob/a27bbdba9bb87fa0e44c8a00d33d46be936822dd/appveyor.bat#L86-L88 +[83] https://github.com/jistr/vim-nerdtree-tabs +[84] https://github.com/Valloric/YouCompleteMe/blob/master/CODE_OF_CONDUCT.md +[85] https://github.com/Valloric/YouCompleteMe/issues?state=open +[86] http://www.gnu.org/copyleft/gpl.html vim: ft=help