diff options
Diffstat (limited to '.config/nvim/lua/getchoo')
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp.lua | 82 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config.lua | 117 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/init.lua | 11 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/keymap.lua | 40 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/server.lua | 18 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/plugins.lua | 48 |
6 files changed, 208 insertions, 108 deletions
diff --git a/.config/nvim/lua/getchoo/lsp.lua b/.config/nvim/lua/getchoo/lsp.lua deleted file mode 100644 index 980d77e..0000000 --- a/.config/nvim/lua/getchoo/lsp.lua +++ /dev/null @@ -1,82 +0,0 @@ --- --- lsp settings using coq-nvim, null-ls, bufferline, nvim-tree, trouble, & telescope --- - ---- require lsp plugins -require("nvim-tree").setup() -require("alpha").setup(require("alpha.themes.dashboard").config) -require("bufferline").setup() -require("trouble").setup() -require("telescope").setup() -require("mason").setup() -require("mason-lspconfig").setup() -vim.opt.runtimepath:append("~/.local/share/nvim/mason/bin/") -local lspconfig = require("lspconfig") -local null_ls = require("null-ls") - -vim.g.coq_settings = { auto_start = "shut-up" } - ---- mappings -local opts = { noremap = true, silent = true } -vim.keymap.set("n", "<space>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", "<space>q", vim.diagnostic.setloclist, opts) - ---- setup lsp servers ----- null-ls builtins shorthand -local completion = null_ls.builtins.completion -local diagnostics = null_ls.builtins.diagnostics -local formatting = null_ls.builtins.formatting - -local servers = { "rust_analyzer", "pyright", "bashls" } -- lspconfig servers -local sources = { -- null-ls sources - diagnostics.alex, - diagnostics.codespell, - diagnostics.flake8, - formatting.black, - formatting.codespell, - formatting.prettier, - formatting.rustfmt, - formatting.stylua, -} - -for _, lsp in ipairs(servers) do - lspconfig[lsp].setup(require("coq").lsp_ensure_capabilities({})) -end - -lspconfig["sumneko_lua"].setup(require("coq").lsp_ensure_capabilities({ - settings = { - Lua = { - runtime = { - version = "LuaJIT", - }, - diagnostics = { - globals = { "vim" }, -- ignore regular vim errors - }, - format = { - enable = false, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - }, - }, -})) - -local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) -null_ls.setup({ - on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.formatting_sync() - end, - }) - end - end, - sources = sources, -}) diff --git a/.config/nvim/lua/getchoo/lsp/config.lua b/.config/nvim/lua/getchoo/lsp/config.lua new file mode 100644 index 0000000..857879a --- /dev/null +++ b/.config/nvim/lua/getchoo/lsp/config.lua @@ -0,0 +1,117 @@ +-- +-- config for lsp server +-- +local null_ls = require("null-ls") +local diagnostics = null_ls.builtins.diagnostics +local formatting = null_ls.builtins.formatting + +local M = {} + +vim.g.coq_settings = { auto_start = "shut-up" } + +local sources = { + lsp_servers = { "rust_analyzer", "pyright", "bashls" }, + null_ls = { + diagnostics.alex, + diagnostics.codespell, + diagnostics.flake8, + formatting.black, + formatting.codespell, + formatting.prettier, + formatting.rustfmt, + formatting.stylua, + }, + mason = { + "alex", + "black", + "codespell", + "flake8", + "prettier", + "stylua", + }, +} + +-- configure lsp servers +local all_config = {} +local servers = {} +for _, server in ipairs(sources.lsp_servers) do + servers[server] = all_config +end + +servers["sumneko_lua"] = { + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +} + +M.lsp_servers = servers + +-- only use null-ls for formatting + +--- for neovim >= 8 +--- local lsp_formatting = function(bufnr) +--- vim.lsp.buf.format({ +--- filter = function(client) +--- return client.name == "null-ls" +--- end, +--- bufnr = bufnr, +--- }) +--- end + +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) +local on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + local params = require("vim.lsp.util").make_formatting_params({}) + client.request("textDocument/formatting", params, nil, bufnr) + -- lsp_formatting(bufnr) -- neovim >= 8 + end, + }) + end +end + +M.null_ls = { + on_attach = on_attach, + sources = sources.null_ls, +} + +M.mason_tool_installer = { + ensure_installed = sources.mason, +} + +M.mason_lsp = { + automatic_installation = true, +} + +-- etc plugins +M.bufferline = { + options = { + numbers = "ordinal", + diagnostics = "nvim_lsp", + always_show_bufferline = false, + }, +} +M.tree = {} +M.treesitter = { + auto_install = true, +} +M.trouble = {} + +return M diff --git a/.config/nvim/lua/getchoo/lsp/init.lua b/.config/nvim/lua/getchoo/lsp/init.lua new file mode 100644 index 0000000..b4f61f8 --- /dev/null +++ b/.config/nvim/lua/getchoo/lsp/init.lua @@ -0,0 +1,11 @@ +-- +-- setup lsp environment +-- +require("getchoo.lsp.server") +require("getchoo.lsp.keymap") +local config = require("getchoo.lsp.config") + +require("bufferline").setup(config.bufferline) +require("nvim-tree").setup(config.tree) +require("nvim-treesitter.configs").setup(config.treesitter) +require("trouble").setup(config.trouble) diff --git a/.config/nvim/lua/getchoo/lsp/keymap.lua b/.config/nvim/lua/getchoo/lsp/keymap.lua new file mode 100644 index 0000000..8cb92ac --- /dev/null +++ b/.config/nvim/lua/getchoo/lsp/keymap.lua @@ -0,0 +1,40 @@ +-- +-- keymaps for lsp +-- + +local opts = { noremap = true, silent = true } +local set = function(mode, key, cmd) + vim.keymap.set(mode, key, cmd, opts) +end + +set("n", "<space>e", vim.diagnostic.open_float) +set("n", "[d", vim.diagnostic.goto_prev) +set("n", "]d", vim.diagnostic.goto_next) +set("n", "<space>q", vim.diagnostic.setloclist) + +set("n", "<space>f", function() + vim.cmd([[:Clap]]) +end) + +set("n", "<leader>t", function() + vim.cmd([[:NvimTreeToggle]]) +end) + +set("n", "<space>t", function() + vim.cmd([[:TroubleToggle]]) +end) + +local bufferline = require("bufferline") +for i = 1, 9 do + set("n", "<leader>" .. i, function() + bufferline.go_to_buffer(i, true) + end) +end + +set("n", "<leader>p", function() + bufferline.pick_buffer() +end) + +set("n", "<leader>q", function() + bufferline.close_buffer_with_pick() +end) diff --git a/.config/nvim/lua/getchoo/lsp/server.lua b/.config/nvim/lua/getchoo/lsp/server.lua new file mode 100644 index 0000000..8521801 --- /dev/null +++ b/.config/nvim/lua/getchoo/lsp/server.lua @@ -0,0 +1,18 @@ +-- +-- initialize lsp servers +-- + +local lspconfig = require("lspconfig") +local null_ls = require("null-ls") +local config = require("getchoo.lsp.config") + +require("mason").setup() +require("mason-lspconfig").setup(config.mason_lsp) +require("mason-tool-installer").setup(config.mason_tool_installer) +vim.opt.runtimepath:append("~/.local/share/nvim/mason/bin/") + +for server, settings in pairs(config.lsp_servers) do + lspconfig[server].setup(require("coq").lsp_ensure_capabilities(settings)) +end + +null_ls.setup(config.null_ls) diff --git a/.config/nvim/lua/getchoo/plugins.lua b/.config/nvim/lua/getchoo/plugins.lua index 9c77dc2..8cf0371 100644 --- a/.config/nvim/lua/getchoo/plugins.lua +++ b/.config/nvim/lua/getchoo/plugins.lua @@ -21,54 +21,50 @@ end require("packer").startup(function(use) use("wbthomason/packer.nvim") + -- comsetic plugins + use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons", opt = true } }) + use("arcticicestudio/nord-vim") + use({ "rose-pine/neovim", as = "rose-pine" }) + -- lsp plugins + use("neovim/nvim-lspconfig") + use({ + "jose-elias-alvarez/null-ls.nvim", + requires = { "nvim-lua/plenary.nvim" }, + }) + use("williamboman/mason.nvim") + use("williamboman/mason-lspconfig") + use("WhoIsSethDaniel/mason-tool-installer.nvim") use({ "nvim-treesitter/nvim-treesitter", run = function() require("nvim-treesitter.install").update({ with_sync = true }) end, }) - use({ - "goolord/alpha-nvim", - requires = { "kyazdani42/nvim-web-devicons" }, - }) - use("kyazdani42/nvim-tree.lua") - use("williamboman/mason.nvim") - use("williamboman/mason-lspconfig") - use("neovim/nvim-lspconfig") - use({ "ms-jpq/coq_nvim", run = "python3 -m coq deps" }) + use("ms-jpq/coq_nvim") use("ms-jpq/coq.artifacts") use("ms-jpq/coq.thirdparty") + use("kyazdani42/nvim-tree.lua") use({ - "jose-elias-alvarez/null-ls.nvim", - requires = { "nvim-lua/plenary.nvim" }, - }) - use({ - "folke/trouble.nvim", + "akinsho/bufferline.nvim", + tag = "v2.*", requires = { "kyazdani42/nvim-web-devicons" }, }) use({ - "akinsho/bufferline.nvim", - tag = "v2.*", + "folke/trouble.nvim", requires = { "kyazdani42/nvim-web-devicons" }, }) use({ - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - requires = { "nvim-lua/plenary.nvim" }, + "liuchengxu/vim-clap", + run = function() + vim.cmd([[:Clap install-binary!]]) + end, }) - use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons", opt = true } }) - use("arcticicestudio/nord-vim") - use({ "rose-pine/neovim", as = "rose-pine" }) if Packer_bootstrap then require("packer").sync() end end) -require("nvim-treesitter.configs").setup({ - auto_install = true, -}) - require("lualine").setup({ options = { theme = "nord", |
