From 6707e9c579b0321e833e2841fa5d5e049674bfb0 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Mon, 30 Oct 2023 15:48:49 -0400 Subject: Moving away from null-ls --- .stylua.toml | 2 + lua/ben/core/init.lua | 15 ++- lua/ben/plugins/dressing.lua | 4 + lua/ben/plugins/formatting.lua | 38 +++++++ lua/ben/plugins/lsp/lspconfig.lua | 208 -------------------------------------- lua/ben/plugins/lsp/mason.lua | 98 +++++++----------- lua/ben/plugins/lsp/null-ls.lua | 56 ---------- lua/ben/plugins/noice.lua | 30 ------ lua/ben/plugins/orgmode.lua | 5 +- 9 files changed, 92 insertions(+), 364 deletions(-) create mode 100644 .stylua.toml create mode 100644 lua/ben/plugins/dressing.lua create mode 100644 lua/ben/plugins/formatting.lua delete mode 100644 lua/ben/plugins/lsp/lspconfig.lua delete mode 100644 lua/ben/plugins/lsp/null-ls.lua delete mode 100644 lua/ben/plugins/noice.lua diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..48ca1dd --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,2 @@ +indent_type = "Spaces" +indent_width= 2 diff --git a/lua/ben/core/init.lua b/lua/ben/core/init.lua index 2cc070e..4314091 100644 --- a/lua/ben/core/init.lua +++ b/lua/ben/core/init.lua @@ -9,6 +9,9 @@ vim.keymap.set("n", "", ":") -- Set encoding to UTF-8 vim.opt.encoding = "utf-8" +-- Do not lazy redraw +vim.opt.lazyredraw = false + -- Display all matching files when tab completing vim.opt.wildmenu = true @@ -43,10 +46,6 @@ vim.opt.foldmethod = "marker" vim.opt.complete:append("kspell") -- Better Spell Checking vim.opt.spelllang = "fr" -- French prose --- Tag Editing -vim.api.nvim_set_keymap("i", "t", "<++>", { noremap = true }) -vim.api.nvim_set_keymap("i", ":", '/<++>"_c4l', { noremap = true }) - -- Quickly save vim.api.nvim_set_keymap("n", "w", ":update", { silent = true }) @@ -57,10 +56,10 @@ vim.api.nvim_set_keymap("n", "Y", "y$", {}) vim.api.nvim_set_keymap("t", "", "", {}) -- Split motion -vim.api.nvim_set_keymap("n", "", "h", {}) -vim.api.nvim_set_keymap("n", "", "j", {}) -vim.api.nvim_set_keymap("n", "", "k", {}) -vim.api.nvim_set_keymap("n", "", "l", {}) +vim.api.nvim_set_keymap("n", "", "h", {}) +vim.api.nvim_set_keymap("n", "", "j", {}) +vim.api.nvim_set_keymap("n", "", "k", {}) +vim.api.nvim_set_keymap("n", "", "l", {}) -- Saving and quitting buffers vim.api.nvim_set_keymap("n", "ZF", "ZQ", {}) diff --git a/lua/ben/plugins/dressing.lua b/lua/ben/plugins/dressing.lua new file mode 100644 index 0000000..105f7e5 --- /dev/null +++ b/lua/ben/plugins/dressing.lua @@ -0,0 +1,4 @@ +return { + "stevearc/dressing.nvim", + event = "VeryLazy", +} diff --git a/lua/ben/plugins/formatting.lua b/lua/ben/plugins/formatting.lua new file mode 100644 index 0000000..22ddb17 --- /dev/null +++ b/lua/ben/plugins/formatting.lua @@ -0,0 +1,38 @@ +return { + "stevearc/conform.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + local conform = require("conform") + + conform.setup({ + formatters_by_ft = { + javascript = { "prettier" }, + html = { "prettier" }, + css = { "prettier" }, + json = { "prettier" }, + markdown = { "prettier" }, + bib = { "bibtex_tidy" }, + go = { "goimports", "gci", "golines" }, + sh = { "shfmt" }, + tex = { "latexindent" }, + sql = { "sql_formatter" }, + python = { "isort", "black" }, + yaml = { "yamlfix" }, + lua = { "stylua" }, + }, + + format_on_save = { + lsp_fallback = true, + async = false, + timeout_ms = 300, + }, + }) + vim.keymap.set({ "n", "v" }, "mp", function() + conform.format({ + lsp_fallback = true, + async = false, + timeout_ms = 300, + }) + end, { desc = "Format file or range" }) + end, +} diff --git a/lua/ben/plugins/lsp/lspconfig.lua b/lua/ben/plugins/lsp/lspconfig.lua deleted file mode 100644 index f907ed4..0000000 --- a/lua/ben/plugins/lsp/lspconfig.lua +++ /dev/null @@ -1,208 +0,0 @@ -return { - "neovim/nvim-lspconfig", - event = { "BufReadPre", "BufNewFile" }, - dependencies = { - "hrsh7th/cmp-nvim-lsp", - { "antosha417/nvim-lsp-file-operations", config = true }, - }, - config = function() - -- import lspconfig plugin - local lspconfig = require("lspconfig") - - -- import cmp-nvim-lsp plugin - local cmp_nvim_lsp = require("cmp_nvim_lsp") - - local keymap = vim.keymap -- for conciseness - - local opts = { noremap = true, silent = true } - local on_attach = function(client, bufnr) - opts.buffer = bufnr - - -- set keybinds - opts.desc = "Show LSP references" - keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references - - opts.desc = "Go to declaration" - keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration - - opts.desc = "Show LSP definitions" - keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions - - opts.desc = "Show LSP implementations" - keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations - - opts.desc = "Show LSP type definitions" - keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions - - opts.desc = "See available code actions" - keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection - - opts.desc = "Smart rename" - keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename - - opts.desc = "Show buffer diagnostics" - keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file - - opts.desc = "Show line diagnostics" - keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line - - opts.desc = "Go to previous diagnostic" - keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer - - opts.desc = "Go to next diagnostic" - keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer - - opts.desc = "Show documentation for what is under cursor" - keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor - - opts.desc = "Restart LSP" - keymap.set("n", "rs", ":LspRestart", opts) -- mapping to restart lsp if necessary - end - - -- used to enable autocompletion (assign to every lsp server config) - local capabilities = cmp_nvim_lsp.default_capabilities() - - -- Change the Diagnostic symbols in the sign column (gutter) - -- (not in youtube nvim video) - local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " } - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) - end - - -- configure html server - lspconfig["html"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure typescript server with plugin - lspconfig["tsserver"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure css server - lspconfig["cssls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure tailwindcss server - lspconfig["tailwindcss"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure svelte server - lspconfig["svelte"].setup({ - capabilities = capabilities, - on_attach = function(client, bufnr) - on_attach(client, bufnr) - - vim.api.nvim_create_autocmd("BufWritePost", { - pattern = { "*.js", "*.ts" }, - callback = function(ctx) - if client.name == "svelte" then - client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.file }) - end - end, - }) - end, - }) - - -- configure prisma orm server - lspconfig["prismals"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure graphql language server - lspconfig["graphql"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, - }) - - -- configure emmet language server - lspconfig["emmet_ls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, - }) - - -- configure python server - lspconfig["pyright"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure golang server - lspconfig["gopls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "go", "gomod", "gowork", "gosum" }, - }) - - -- configure golang server - lspconfig["texlab"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "tex", "bib", "plaintex" }, - }) - - -- configure docker server - lspconfig["dockerls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "Dockerfile", "dockerfile" }, - }) - lspconfig["docker_compose_language_service"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "docker-compose" }, - }) - - -- configure clangd server - lspconfig["clangd"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "c", "cpp" }, - }) - - -- configure cmake server - lspconfig["cmake"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "cmake" }, - }) - - -- configure bash server - lspconfig["bashls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "sh" }, - }) - - -- configure lua server (with special settings) - lspconfig["lua_ls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - settings = { -- custom settings for lua - Lua = { - -- make the language server recognize "vim" global - diagnostics = { - globals = { "vim" }, - }, - workspace = { - -- make language server aware of runtime files - library = { - [vim.fn.expand("$VIMRUNTIME/lua")] = true, - [vim.fn.stdpath("config") .. "/lua"] = true, - }, - }, - }, - }, - }) - end, -} diff --git a/lua/ben/plugins/lsp/mason.lua b/lua/ben/plugins/lsp/mason.lua index a1af193..cafdb3b 100644 --- a/lua/ben/plugins/lsp/mason.lua +++ b/lua/ben/plugins/lsp/mason.lua @@ -1,65 +1,41 @@ return { - "williamboman/mason.nvim", - event = "VeryLazy", - dependencies = { - "williamboman/mason-lspconfig.nvim", - "jayp0521/mason-null-ls.nvim", - }, - config = function() - -- import mason - local mason = require("mason") + "williamboman/mason.nvim", + dependencies = { + "williamboman/mason-lspconfig.nvim", - -- import mason-lspconfig - local mason_lspconfig = require("mason-lspconfig") + }, + config = function() + --import mason + local mason = require("mason") + -- import mason-lspconfig + local mason_lspconfig = require("mason-lspconfig") - -- import mason-null-ls - local mason_null_ls = require("mason-null-ls") - - -- enable mason and configure icons - mason.setup({ - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗", - }, - }, - }) - - mason_lspconfig.setup({ - -- list of servers for mason to install - ensure_installed = { - "tsserver", - "html", - "cssls", - "tailwindcss", - "svelte", - "gopls", - "texlab", - "lua_ls", - "graphql", - "emmet_ls", - "prismals", - "pyright", - "dockerls", - "docker_compose_language_service", - "clangd", - "cmake", - "bashls", - }, - -- auto-install configured servers (with lspconfig) - automatic_installation = true, -- not the same as ensure_installed - }) - - mason_null_ls.setup({ - -- list of formatters & linters for mason to install - ensure_installed = { - "prettier", -- ts/js formatter - "stylua", -- lua formatter - "eslint_d", -- ts/js linter - }, - -- auto-install configured servers (with lspconfig) - automatic_installation = true, - }) - end, + -- enable mason and configure icons + mason.setup({ + ui = { + icons = { + package_installed = "", + package_pending = "", + package_uninstalled = "" + }, + }, + }) + mason_lspconfig.setup({ + -- list of servers for mason to install + ensure_installed = { + "prettier", + "bibtex-tidy", + "goimports", + "gci", + "golines", + "shfmt", + "latexindent", + "sql_formatter", + "isort", "black", + "yamlfix", + }, + -- auto-install configured servers (with lspconfig) + automatic_installation = true, -- not the same as ensure_installed + }) + end, } diff --git a/lua/ben/plugins/lsp/null-ls.lua b/lua/ben/plugins/lsp/null-ls.lua deleted file mode 100644 index 9db49cc..0000000 --- a/lua/ben/plugins/lsp/null-ls.lua +++ /dev/null @@ -1,56 +0,0 @@ -return { - "jose-elias-alvarez/null-ls.nvim", -- configure formatters & linters - event = { "BufReadPre", "BufNewFile" }, - config = function() - -- import null-ls plugin - local null_ls = require("null-ls") - - local null_ls_utils = require("null-ls.utils") - - -- for conciseness - local formatting = null_ls.builtins.formatting -- to setup formatters - local diagnostics = null_ls.builtins.diagnostics -- to setup linters - - -- to setup format on save - local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - - -- configure null_ls - null_ls.setup({ - -- add package.json as identifier for root (for typescript monorepos) - root_dir = null_ls_utils.root_pattern(".null-ls-root", "Makefile", ".git", "package.json"), - -- setup formatters & linters - sources = { - -- to disable file types use - -- "formatting.prettier.with({disabled_filetypes: {}})" (see null-ls docs) - formatting.prettier.with({ - extra_filetypes = { "svelte" }, - }), -- js/ts formatter - formatting.stylua, -- lua formatter - diagnostics.eslint_d.with({ -- js/ts linter - condition = function(utils) - return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs - end, - }), - }, - -- configure format on save - on_attach = function(current_client, bufnr) - if current_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.format({ - filter = function(client) - -- only use null-ls for formatting instead of lsp server - return client.name == "null-ls" - end, - bufnr = bufnr, - }) - end, - }) - end - end, - }) - end, -} diff --git a/lua/ben/plugins/noice.lua b/lua/ben/plugins/noice.lua deleted file mode 100644 index 919e7cf..0000000 --- a/lua/ben/plugins/noice.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - enabled = false, - "folke/noice.nvim", - dependencies = { - "MunifTanjim/nui.nvim", - "rcarriga/nvim-notify", - }, - event = "VeryLazy", - opts = { - -- add any options here - }, - config = function() - require("noice").setup({ - lsp = { - override = { - ["vim.lsp.util.convert_input_to_markdown_lines"] = true, - ["vim.lsp.util.stylize_markdown"] = true, - ["cmp.entry.get_documentation"] = true, - }, - }, - presets = { - bottom_search = true, -- use a classic bottom cmdline for search - command_palette = true, -- position the cmdline and popupmenu together - long_message_to_split = true, -- long messages will be sent to a split - inc_rename = false, -- enables an input dialog for inc-rename.nvim - lsp_doc_border = false, -- add a border to hover docs and signature help - }, - }) - end, -} diff --git a/lua/ben/plugins/orgmode.lua b/lua/ben/plugins/orgmode.lua index 6b74944..273524f 100644 --- a/lua/ben/plugins/orgmode.lua +++ b/lua/ben/plugins/orgmode.lua @@ -18,7 +18,10 @@ return { -- Setup orgmode require("orgmode").setup({ org_agenda_files = "~/Dropbox/org/*", - org_default_notes_file = "~/Dropbox/org/refile.org", + org_default_notes_file = "~/Dropbox/org/inbox.org", + org_archive_location = "~/Dropbox/org/archive.org", }) + + -- Custom keybindings end, } -- cgit v1.2.3