diff options
| author | Ashkan Kiani <ashkan.k.kiani@gmail.com> | 2019-11-17 09:58:52 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-17 09:58:52 -0800 |
| commit | ac3df47ffd418b0f3aec49612d9862364820ed8d (patch) | |
| tree | bc3e3a0a688b6a36b7ccd462395db7c86e8af2ea /README_preamble.md | |
| parent | [docgen] Update README.md (diff) | |
| download | nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar.gz nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar.bz2 nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar.lz nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar.xz nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.tar.zst nvim-lspconfig-ac3df47ffd418b0f3aec49612d9862364820ed8d.zip | |
Use a template for README.md (#28)
Diffstat (limited to 'README_preamble.md')
| -rw-r--r-- | README_preamble.md | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/README_preamble.md b/README_preamble.md deleted file mode 100644 index a932156b..00000000 --- a/README_preamble.md +++ /dev/null @@ -1,170 +0,0 @@ -# nvim-lsp - -WIP Common configurations for Language Servers. - -This repository aims to be a central location to store configurations for -Language Servers which leverage Neovim's built-in LSP client `vim.lsp` as the -client backbone. The `vim.lsp` implementation is made to be customizable and -greatly extensible, but most users just want to get up and going. This -plugin/library is for those people, although it still lets you customize -things as much as you want in addition to the defaults that this provides. - -**NOTE**: Requires current Neovim master as of 2019-11-13 - -**CONTRIBUTIONS ARE WELCOME!** - -There's a lot of language servers in the world, and not enough time. See -[`lua/nvim_lsp/*.lua`](https://github.com/neovim/nvim-lsp/blob/master/lua/nvim_lsp/) -for examples and ask us questions in the [Neovim -Gitter](https://gitter.im/neovim/neovim) to help us complete configurations for -*all the LSPs!* Read `CONTRIBUTING.md` for some instructions. - -If you don't know where to start, you can pick one that's not in progress or -implemented from [this excellent list compiled by the coc.nvim -contributors](https://github.com/neoclide/coc.nvim/wiki/Language-servers) or -[this other excellent list from the emacs lsp-mode -contributors](https://github.com/emacs-lsp/lsp-mode#supported-languages) -and create a new file under `lua/nvim_lsp/SERVER_NAME.lua`. We recommend -looking at `lua/nvim_lsp/texlab.lua` for the most extensive example, but all of -them are good references. - -## Progress - -Implemented language servers: - -Planned servers to implement (by me, but contributions welcome anyway): -- [ccls](https://github.com/MaskRay/ccls) -- [lua-language-server](https://github.com/sumneko/lua-language-server) -- [rust-analyzer](https://github.com/rust-analyzer/rust-analyzer) - -In progress: -- ... - -## Install - -`Plug 'neovim/nvim-lsp'` - -## Usage - -Servers configurations can be set up with a "setup function." These are -functions to set up servers more easily with some server specific defaults and -more server specific things like commands or different diagnostics. - -The "setup functions" are `call nvim_lsp#setup({name}, {config})` from vim and -`nvim_lsp[name].setup(config)` from Lua. - -Servers may define extra functions on the `nvim_lsp.SERVER` table, e.g. -`nvim_lsp.texlab.buf_build({bufnr})`. - -### Auto Installation - -Many servers can be automatically installed with the `:LspInstall` -command. Detailed installation info can be found -with the `:LspInstallInfo` command, which optionally accepts a specific server name. - -For example: -```vim -LspInstall elmls -silent LspInstall elmls " useful if you want to autoinstall in init.vim -LspInstallInfo -LspInstallInfo elmls -``` - -### Example - -From vim: -```vim -call nvim_lsp#setup("texlab", {}) -``` - -From Lua: -```lua -require 'nvim_lsp'.texlab.setup { - name = "texlab_fancy"; - log_level = vim.lsp.protocol.MessageType.Log; - settings = { - latex = { - build = { - onSave = true; - } - } - } -} - -local nvim_lsp = require 'nvim_lsp' - --- Customize how to find the root_dir -nvim_lsp.gopls.setup { - root_dir = nvim_lsp.util.root_pattern(".git"); -} - --- Build the current buffer. -require 'nvim_lsp'.texlab.buf_build(0) -``` - -### Setup function details - -The main setup signature will be: - -``` -nvim_lsp.SERVER.setup({config}) - - {config} is the same as |vim.lsp.start_client()|, but with some - additions and changes: - - {root_dir} - May be required (depending on the server). - `function(filename, bufnr)` which is called on new candidate buffers to - attach to and returns either a root_dir or nil. - - If a root_dir is returned, then this file will also be attached. You - can optionally use {filetype} to help pre-filter by filetype. - - If a root_dir is returned which is unique from any previously returned - root_dir, a new server will be spawned with that root_dir. - - If nil is returned, the buffer is skipped. - - See |nvim_lsp.util.search_ancestors()| and the functions which use it: - - |nvim_lsp.util.root_pattern(patterns...)| finds an ancestor which - - contains one of the files in `patterns...`. This is equivalent - to coc.nvim's "rootPatterns" - - More specific utilities: - - |nvim_lsp.util.find_git_root()| - - |nvim_lsp.util.find_node_modules_root()| - - |nvim_lsp.util.find_package_json_root()| - - {name} - Defaults to the server's name. - - {filetypes} - A set of filetypes to filter for consideration by {root_dir}. - Can be left empty. - A server may specify a default value. - - {log_level} - controls the level of logs to show from build processes and other - window/logMessage events. By default it is set to - vim.lsp.protocol.MessageType.Warning instead of - vim.lsp.protocol.MessageType.Log. - - {settings} - This is a table, and the keys are case sensitive. This is for the - window/configuration event responses. - Example: `settings = { keyName = { subKey = 1 } }` - - {on_attach} - `function(client)` will be executed with the current buffer as the - one the {client} is being attaching to. This is different from - |vim.lsp.start_client()|'s on_attach parameter, which passes the {bufnr} as - the second parameter instead. This is useful for running buffer local - commands. - - {on_new_config} - `function(new_config)` will be executed after a new configuration has been - created as a result of {root_dir} returning a unique value. You can use this - as an opportunity to further modify the new_config or use it before it is - sent to |vim.lsp.start_client()|. -``` - -# LSP Implementations |
