From 940c66406f3519c588825405274b2c5e9482df91 Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Wed, 25 Oct 2023 17:52:04 +0530 Subject: [PATCH] nvim: Use Ruff as Python LSP Though Ruff is not an LSP in the LSP sense but using it this way gives us formatting and linting via code actions. All other Python LSP servers are garbage anyway. --- nvim/.config/nvim/after/ftplugin/python.lua | 8 +++++--- nvim/.config/nvim/after/plugin/nvim-lint.lua | 1 - nvim/.config/nvim/lua/lsp-utils.lua | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/nvim/.config/nvim/after/ftplugin/python.lua b/nvim/.config/nvim/after/ftplugin/python.lua index d7f5db6..3c294b7 100644 --- a/nvim/.config/nvim/after/ftplugin/python.lua +++ b/nvim/.config/nvim/after/ftplugin/python.lua @@ -1,7 +1,9 @@ -vim.bo.textwidth = 0 -vim.bo.formatprg = "black -q -" +local lsp_utils = require('lsp-utils') +local ruff_config = lsp_utils.ruff_config() -vim.keymap.set('n', 'gq', "ggVGgq", { noremap=true, silent=true, buffer=0 }) +vim.lsp.start(ruff_config) + +vim.bo.textwidth = 0 vim.api.nvim_create_autocmd({ "BufWritePost" }, { buffer = 0, diff --git a/nvim/.config/nvim/after/plugin/nvim-lint.lua b/nvim/.config/nvim/after/plugin/nvim-lint.lua index e85f0a5..58da95e 100644 --- a/nvim/.config/nvim/after/plugin/nvim-lint.lua +++ b/nvim/.config/nvim/after/plugin/nvim-lint.lua @@ -11,7 +11,6 @@ nvim_lint.linters_by_ft = { javascript = { 'eslint_d' }, lua = { 'luacheck' }, markdown = { 'vale' }, - python = { 'ruff' }, sh = { 'shellcheck' }, typescript = { 'eslint_d' }, yaml = { 'yamllint' }, diff --git a/nvim/.config/nvim/lua/lsp-utils.lua b/nvim/.config/nvim/lua/lsp-utils.lua index 7070687..adb9a81 100644 --- a/nvim/.config/nvim/lua/lsp-utils.lua +++ b/nvim/.config/nvim/lua/lsp-utils.lua @@ -239,6 +239,20 @@ function M.ra_config() } end +function M.ruff_config() + local root_files = { 'pyproject.toml', 'setup.py', 'setup.cfg', 'requirements.txt', 'Pipfile' } + local root_directory = get_root_directory(root_files) + + return { + name = "ruff", + cmd = { "ruff-lsp" }, + filetypes = { 'python' }, + capabilities = default_capabilities, + root_dir = root_directory, + single_file_support = true, + } +end + function M.scheme_config() local root_files = { '.git' } local root_directory = get_root_directory(root_files)