From 9ff18bf9d34846e2b6182d72609ba32131e2b356 Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Wed, 22 May 2024 09:51:02 +0530 Subject: [PATCH] Simplify Neovim docs for the LSP setup (#11489) Similar to what we have at https://github.com/astral-sh/ruff-lsp#example-neovim --- docs/integrations.md | 60 ++++++++------------------------------------ 1 file changed, 10 insertions(+), 50 deletions(-) diff --git a/docs/integrations.md b/docs/integrations.md index e82f9be7eaef8..2dfd16e0b1f4e 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -73,61 +73,21 @@ supports the Language Server Protocol, including [Neovim](https://github.com/ast [Sublime Text](https://github.com/astral-sh/ruff-lsp#example-sublime-text), Emacs, and more. For example, to use `ruff-lsp` with Neovim, install `ruff-lsp` from PyPI along with -[`nvim-lspconfig`](https://github.com/neovim/nvim-lspconfig). Then, add something like the following -to your `init.lua`: +[`nvim-lspconfig`](https://github.com/neovim/nvim-lspconfig). Then, set up the Neovim LSP client +using the [suggested configuration](https://github.com/neovim/nvim-lspconfig/tree/master#configuration) +(`:h lspconfig-keybindings`). Finally, configure `ruff-lsp` in your `init.lua`: ```lua --- See: https://github.com/neovim/nvim-lspconfig/tree/54eb2a070a4f389b1be0f98070f81d23e2b1a715#suggested-configuration -local opts = { noremap=true, silent=true } -vim.keymap.set('n', 'e', vim.diagnostic.open_float, opts) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local bufopts = { noremap=true, silent=true, buffer=bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) -end - -- Configure `ruff-lsp`. -local configs = require 'lspconfig.configs' -if not configs.ruff_lsp then - configs.ruff_lsp = { - default_config = { - cmd = { 'ruff-lsp' }, - filetypes = { 'python' }, - root_dir = require('lspconfig').util.find_git_ancestor, - init_options = { - settings = { - args = {} - } - } +-- See: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#ruff_lsp +-- For the default config, along with instructions on how to customize the settings +require('lspconfig').ruff_lsp.setup { + init_options = { + settings = { + -- Any extra CLI arguments for `ruff` go here. + args = {}, } } -end -require('lspconfig').ruff_lsp.setup { - on_attach = on_attach, } ```