summaryrefslogtreecommitdiff
path: root/.config/nvim/lua
diff options
context:
space:
mode:
authorseth <[email protected]>2022-08-17 19:01:57 -0400
committerseth <[email protected]>2022-08-21 14:15:37 -0400
commitd99f98423439020e7bd5fdae0493aa5da9d9bf14 (patch)
treee25b40d44afe36117a0ceefa603f5b3923a8886e /.config/nvim/lua
parenta6a978410d0daecff139a3ab971dc94c75427eb7 (diff)
refactor
Diffstat (limited to '.config/nvim/lua')
-rw-r--r--.config/nvim/lua/getchoo/lsp.lua82
-rw-r--r--.config/nvim/lua/getchoo/lsp/config.lua117
-rw-r--r--.config/nvim/lua/getchoo/lsp/init.lua11
-rw-r--r--.config/nvim/lua/getchoo/lsp/keymap.lua40
-rw-r--r--.config/nvim/lua/getchoo/lsp/server.lua18
-rw-r--r--.config/nvim/lua/getchoo/plugins.lua48
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",