summaryrefslogtreecommitdiff
path: root/dot_config/nvim/lua/plugins/lsp-zero.lua
diff options
context:
space:
mode:
Diffstat (limited to 'dot_config/nvim/lua/plugins/lsp-zero.lua')
-rw-r--r--dot_config/nvim/lua/plugins/lsp-zero.lua173
1 files changed, 0 insertions, 173 deletions
diff --git a/dot_config/nvim/lua/plugins/lsp-zero.lua b/dot_config/nvim/lua/plugins/lsp-zero.lua
deleted file mode 100644
index b58284e..0000000
--- a/dot_config/nvim/lua/plugins/lsp-zero.lua
+++ /dev/null
@@ -1,173 +0,0 @@
-return {
-
- {
- 'VonHeikemen/lsp-zero.nvim',
- branch = 'v3.x',
- lazy = true,
- config = false,
- init = function()
- -- Disable automatic setup, we are doing it manually
- vim.g.lsp_zero_extend_cmp = 0
- vim.g.lsp_zero_extend_lspconfig = 0
- end,
- },
-
- {
- 'williamboman/mason.nvim',
- lazy = false,
- config = true,
- },
-
-
- -- LSP
- {
- 'neovim/nvim-lspconfig',
- cmd = { 'LspInfo', 'LspInstall', 'LspStart' },
- event = { 'BufReadPre', 'BufNewFile' },
- dependencies = {
- { 'hrsh7th/cmp-nvim-lsp' },
- { 'williamboman/mason-lspconfig.nvim' },
- { "j-hui/fidget.nvim", tag = "legacy", opts = {} },
- },
- config = function()
- -- This is where all the LSP shenanigans will live
- local lsp_zero = require('lsp-zero')
- lsp_zero.extend_lspconfig()
-
- -- if you want to know more about lsp-zero and mason.nvim
- -- read this: https://github.com/VonHeikemen/lsp-zero.nvim/blob/v3.x/doc/md/guides/integrate-with-mason-nvim.md
- lsp_zero.on_attach(function(client, bufnr)
- -- see :help lsp_zero_keybindings
- -- to learn the available actions
- lsp_zero.default_keymaps({ buffer = bufnr })
- end)
-
- require('mason-lspconfig').setup({
- ensure_installed = {
- 'basedpyright',
- 'ruff_lsp',
- 'tsserver',
- 'lua_ls',
- },
- handlers = {
- lsp_zero.default_setup,
- basedpyright = function()
- local basedpyright_opts = {
- settings = {
- basedpyright = {
- -- Type checking is very strict by default. Standard is a good balance.
- typeCheckingMode = "standard",
- }
- }
- }
- require('lspconfig').basedpyright.setup(basedpyright_opts)
-
- end,
- lua_ls = function()
- -- (Optional) Configure lua langauge server for neovim
- local lua_opts = lsp_zero.nvim_lua_ls()
- require('lspconfig').lua_ls.setup(lua_opts)
- end,
- },
- })
-
- vim.diagnostic.config({
- underline = false,
- })
-
- vim.lsp.inlay_hint.enable()
-
- end,
- },
-
- -- Lint
- {
- "mfussenegger/nvim-lint",
- dependencies = {
- -- Additional lua configuration, makes nvim stuff amazing!
- "folke/neodev.nvim",
- },
- event = {
- "BufReadPre",
- "BufNewFile",
- },
- opts = {
- autocmd = {
- events = { "BufEnter", "BufWritePost" },
- pattern = { "*.py", "*.lua", "*.js", "*.ts", },
- linters_by_ft = {
- python = { "mypy" },
- },
- },
- on_demand = {
- linters_by_ft = {
- python = { "mypy", "pylint" },
- },
- },
- },
- config = function(_, opts)
- local lint = require("lint")
- lint.linters_by_ft = {
- javascript = { "eslint_d" },
- typescript = { "eslint_d" },
- }
-
- local function lint_autocmd()
- local filetype = vim.bo.filetype
- local linter_names = opts.autocmd.linters_by_ft[filetype] or {}
- require("lint").try_lint(linter_names)
- end
-
- local function lint_on_demand()
- local filetype = vim.bo.filetype
- local linter_names = opts.on_demand.linters_by_ft[filetype] or {}
- require("lint").try_lint(linter_names)
- end
-
- local lint_augroup = vim.api.nvim_create_augroup("user-nvim-lint", { clear = true })
- vim.api.nvim_create_autocmd(opts.autocmd.events, {
- group = lint_augroup,
- pattern = opts.autocmd.pattern,
- callback = lint_autocmd,
- })
-
- vim.keymap.set("n", "<leader>cl", lint_on_demand, { desc = "[C]ode [l]int" })
-
- -- Hate to remove this because I was pretty proud of it, but I'm removing
- -- Pylint altogether. Since this is just my code, I'm leaving it here
- -- as a reference if I want to mess with it again later.
- -- -- I use Pylint consistently, and I have some projects that enforce
- -- -- that Pylint must be passing. However, I don't always want to see
- -- -- low-severity Pylint warnings like "missing docstring" for things
- -- -- I'm still actively writing. They can be distracting.
- -- --
- -- -- Build out a simple behavior that switches the Pylint arguments
- -- -- to include or exclude Pylint's complexity (C) and conventions (R)
- -- -- messages.
- -- --
- -- -- I intentionally make this a global user command instead of a
- -- -- buffer-specific one.
- --
- -- local default_pylint_args = vim.deepcopy(lint.linters.pylint.args)
- -- local simple_pylint_args = vim.deepcopy(lint.linters.pylint.args)
- -- table.insert(simple_pylint_args, "--disable=C,R")
- --
- -- local disable_pylint_low_severity = false
- -- local function toggle_pylint_severity_mode()
- -- disable_pylint_low_severity = not disable_pylint_low_severity
- -- if disable_pylint_low_severity then
- -- lint.linters.pylint.args = simple_pylint_args
- -- print("Pylint mode changed to error/warning only")
- -- else
- -- lint.linters.pylint.args = default_pylint_args
- -- print("Pylint mode reset to default")
- -- end
- -- -- Run the linter again to remove leftover messages or restore
- -- -- newly added ones
- -- lint.try_lint()
- -- end
- --
- -- vim.api.nvim_create_user_command("PylintSeverityToggle", toggle_pylint_severity_mode, {})
- end,
- }
-}