From 07ec4b0f2d04150a54ca7003cf37fce29b47792a Mon Sep 17 00:00:00 2001 From: josean-dev Date: Sat, 30 Sep 2023 10:44:22 -0400 Subject: [PATCH] Migrated from null-ls to conform.nvim and nvim-lint --- .config/nvim/lazy-lock.json | 47 ++++++++-------- .config/nvim/lua/josean/lazy.lua | 2 +- .../nvim/lua/josean/plugins/colorscheme.lua | 38 +++++++++++++ .../nvim/lua/josean/plugins/formatting.lua | 38 +++++++++++++ .config/nvim/lua/josean/plugins/linting.lua | 32 +++++++++++ .config/nvim/lua/josean/plugins/lsp/mason.lua | 29 +++++----- .../nvim/lua/josean/plugins/lsp/null-ls.lua | 56 ------------------- .config/nvim/lua/josean/plugins/nvim-tree.lua | 5 +- .../lua/josean/plugins/nvim-treesitter.lua | 4 +- 9 files changed, 153 insertions(+), 98 deletions(-) create mode 100644 .config/nvim/lua/josean/plugins/formatting.lua create mode 100644 .config/nvim/lua/josean/plugins/linting.lua delete mode 100644 .config/nvim/lua/josean/plugins/lsp/null-ls.lua diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 781f255..61134fe 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -1,42 +1,43 @@ { "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, - "LuaSnip": { "branch": "master", "commit": "ea7d7ea510c641c4f15042becd27f35b3e5b3c2b" }, - "alpha-nvim": { "branch": "main", "commit": "63a860e7ed3ae41ee92481ea65a48fb35431ae21" }, + "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" }, + "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" }, "auto-session": { "branch": "main", "commit": "3eb26b949e1b90798e84926848551046e2eb0721" }, - "bufferline.nvim": { "branch": "main", "commit": "d24378edc14a675c820a303b4512af3bbc5761e9" }, + "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, - "dressing.nvim": { "branch": "master", "commit": "c7b035de7f91bb6b62b4308f105c56d1a968b8c5" }, - "friendly-snippets": { "branch": "main", "commit": "00e191fea2cfbbdd378243f35b5953296537a116" }, - "gitsigns.nvim": { "branch": "main", "commit": "44adf808ace6cb65a3353bd61fa585a2d8fe0db3" }, + "conform.nvim": { "branch": "master", "commit": "3f8927532bc8ce4fc4b5b75eab1bf8f1fc83f6b9" }, + "dressing.nvim": { "branch": "master", "commit": "73a7d54b5289000108c7f52402a36cf380fced67" }, + "friendly-snippets": { "branch": "main", "commit": "0368bee1cecaf3c58d436524234baad4c0e0b8cb" }, + "gitsigns.nvim": { "branch": "main", "commit": "bdeba1cec3faddd89146690c10b9a87949c0ee66" }, "harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, - "lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" }, + "lazy.nvim": { "branch": "main", "commit": "6a2c47e6424a3f1e373bfeb714b716f6be13501c" }, "lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "dfdd771b792fbb4bad8e057d72558255695aa1a7" }, - "mason-null-ls.nvim": { "branch": "main", "commit": "ae0c5fa57468ac65617f1bf821ba0c3a1e251f0c" }, - "mason.nvim": { "branch": "main", "commit": "0942198fb9a998b6ccee36fb8dd7495eb8ba659c" }, - "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, - "nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "81e30dd629de24cbb26d08073ee938ab40006695" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "83dcddb6477f9ba5db98971ef27bd18bdca921b4" }, + "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, + "nvim-autopairs": { "branch": "master", "commit": "de4f7138a68d5d5063170f2182fd27faf06b0b54" }, "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, "nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, - "nvim-lsp-file-operations": { "branch": "master", "commit": "2abe934ab00a18932f55edfd881555934622fe36" }, - "nvim-lspconfig": { "branch": "master", "commit": "a27356f1ef9c11e1f459cc96a3fcac5c265e72d6" }, + "nvim-lint": { "branch": "master", "commit": "67f74e630a84ecfa73a82783c487bdedd8cecdc3" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "0ae13ac58136c6175638b6e1ba04cb487dd22272" }, + "nvim-lspconfig": { "branch": "master", "commit": "50fcf96ec5a6e7bfdcbbea4f905c33e85408f170" }, "nvim-surround": { "branch": "main", "commit": "0d6882635817a2677749a330127d12ac30a4f3c8" }, - "nvim-tree.lua": { "branch": "master", "commit": "00741206c2df9c4b538055def19b99790f0c95c8" }, - "nvim-treesitter": { "branch": "master", "commit": "f8c2825220bff70919b527ee68fe44e7b1dae4b2" }, + "nvim-tree.lua": { "branch": "master", "commit": "934469b9b6df369e198fb3016969e56393b0dc07" }, + "nvim-treesitter": { "branch": "master", "commit": "dd4e2dbc002dfce109d621e8bdcd9d89438b0a32" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" }, "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9bff161dfece6ecf3459e6e46ca42e49f9ed939f" }, - "nvim-web-devicons": { "branch": "master", "commit": "cfc8824cc1db316a276b36517f093baccb8e799a" }, - "plenary.nvim": { "branch": "master", "commit": "0dbe561ae023f02c2fb772b879e905055b939ce3" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" }, + "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" }, + "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, + "tokyonight.nvim": { "branch": "main", "commit": "e89caa3ad6d8da9d0dd981ec74a82c55adc61ffd" }, "vim-ReplaceWithRegister": { "branch": "master", "commit": "aad1e8fa31cb4722f20fe40679caa56e25120032" }, "vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" }, - "vim-nightfly-guicolors": { "branch": "master", "commit": "5d422e8f1e30c842a90e41e6607e46f2b2d18a51" }, - "vim-tmux-navigator": { "branch": "master", "commit": "addb64a772cb4a3ae1f1363583012b2cada2cd66" }, + "vim-tmux-navigator": { "branch": "master", "commit": "7db70e08ea03b3e4d91f63713d76134512e28d7e" }, "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" } } \ No newline at end of file diff --git a/.config/nvim/lua/josean/lazy.lua b/.config/nvim/lua/josean/lazy.lua index 9d548a3..8ee7057 100644 --- a/.config/nvim/lua/josean/lazy.lua +++ b/.config/nvim/lua/josean/lazy.lua @@ -11,7 +11,7 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) -require("lazy").setup({{import = "josean.plugins"}, {import = "josean.plugins.lsp"}}, { +require("lazy").setup({ { import = "josean.plugins" }, { import = "josean.plugins.lsp" } }, { install = { colorscheme = { "nightfly" }, }, diff --git a/.config/nvim/lua/josean/plugins/colorscheme.lua b/.config/nvim/lua/josean/plugins/colorscheme.lua index d64fd8a..3b0204c 100644 --- a/.config/nvim/lua/josean/plugins/colorscheme.lua +++ b/.config/nvim/lua/josean/plugins/colorscheme.lua @@ -7,4 +7,42 @@ return { vim.cmd([[colorscheme nightfly]]) end, }, + -- { + -- "folke/tokyonight.nvim", + -- priority = 1000, -- make sure to load this before all the other start plugins + -- config = function() + -- local bg = "#011628" + -- local bg_dark = "#011423" + -- local bg_highlight = "#143652" + -- local bg_search = "#0A64AC" + -- local bg_visual = "#275378" + -- local fg = "#CBE0F0" + -- local fg_dark = "#B4D0E9" + -- local fg_gutter = "#627E97" + -- local border = "#547998" + -- + -- require("tokyonight").setup({ + -- style = "night", + -- on_colors = function(colors) + -- colors.bg = bg + -- colors.bg_dark = bg_dark + -- colors.bg_float = bg_dark + -- colors.bg_highlight = bg_highlight + -- colors.bg_popup = bg_dark + -- colors.bg_search = bg_search + -- colors.bg_sidebar = bg_dark + -- colors.bg_statusline = bg_dark + -- colors.bg_visual = bg_visual + -- colors.border = border + -- colors.fg = fg + -- colors.fg_dark = fg_dark + -- colors.fg_float = fg + -- colors.fg_gutter = fg_gutter + -- colors.fg_sidebar = fg_dark + -- end, + -- }) + -- -- load the colorscheme here + -- vim.cmd([[colorscheme tokyonight]]) + -- end, + -- }, } diff --git a/.config/nvim/lua/josean/plugins/formatting.lua b/.config/nvim/lua/josean/plugins/formatting.lua new file mode 100644 index 0000000..e090a7b --- /dev/null +++ b/.config/nvim/lua/josean/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" }, + typescript = { "prettier" }, + javascriptreact = { "prettier" }, + typescriptreact = { "prettier" }, + svelte = { "prettier" }, + css = { "prettier" }, + html = { "prettier" }, + json = { "prettier" }, + yaml = { "prettier" }, + markdown = { "prettier" }, + graphql = { "prettier" }, + lua = { "stylua" }, + python = { "isort", "black" }, + }, + format_on_save = { + lsp_fallback = true, + async = false, + timeout_ms = 1000, + }, + }) + + vim.keymap.set({ "n", "v" }, "mp", function() + conform.format({ + lsp_fallback = true, + async = false, + timeout_ms = 1000, + }) + end, { desc = "Format file or range (in visual mode)" }) + end, +} diff --git a/.config/nvim/lua/josean/plugins/linting.lua b/.config/nvim/lua/josean/plugins/linting.lua new file mode 100644 index 0000000..cefbb8c --- /dev/null +++ b/.config/nvim/lua/josean/plugins/linting.lua @@ -0,0 +1,32 @@ +return { + "mfussenegger/nvim-lint", + event = { + "BufReadPre", + "BufNewFile", + }, + config = function() + local lint = require("lint") + + lint.linters_by_ft = { + javascript = { "eslint_d" }, + typescript = { "eslint_d" }, + javascriptreact = { "eslint_d" }, + typescriptreact = { "eslint_d" }, + svelte = { "eslint_d" }, + python = { "pylint" }, + } + + local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true }) + + vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { + group = lint_augroup, + callback = function() + lint.try_lint() + end, + }) + + vim.keymap.set("n", "l", function() + lint.try_lint() + end, { desc = "Trigger linting for current file" }) + end, +} diff --git a/.config/nvim/lua/josean/plugins/lsp/mason.lua b/.config/nvim/lua/josean/plugins/lsp/mason.lua index c1a3c10..cfe0d46 100644 --- a/.config/nvim/lua/josean/plugins/lsp/mason.lua +++ b/.config/nvim/lua/josean/plugins/lsp/mason.lua @@ -2,7 +2,7 @@ return { "williamboman/mason.nvim", dependencies = { "williamboman/mason-lspconfig.nvim", - "jayp0521/mason-null-ls.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", }, config = function() -- import mason @@ -11,18 +11,17 @@ return { -- import mason-lspconfig local mason_lspconfig = require("mason-lspconfig") - -- import mason-null-ls - local mason_null_ls = require("mason-null-ls") + local mason_tool_installer = require("mason-tool-installer") -- enable mason and configure icons mason.setup({ ui = { icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗" - } - } + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, + }, }) mason_lspconfig.setup({ @@ -37,21 +36,21 @@ return { "graphql", "emmet_ls", "prismals", - "pyright" + "pyright", }, -- 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 + mason_tool_installer.setup({ ensure_installed = { - "prettier", -- ts/js formatter + "prettier", -- prettier formatter "stylua", -- lua formatter - "eslint_d", -- ts/js linter + "isort", -- python formatter + "black", -- python formatter + "pylint", -- python linter + "eslint_d", -- js linter }, - -- auto-install configured servers (with lspconfig) - automatic_installation = true, }) end, } diff --git a/.config/nvim/lua/josean/plugins/lsp/null-ls.lua b/.config/nvim/lua/josean/plugins/lsp/null-ls.lua deleted file mode 100644 index 9db49cc..0000000 --- a/.config/nvim/lua/josean/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/.config/nvim/lua/josean/plugins/nvim-tree.lua b/.config/nvim/lua/josean/plugins/nvim-tree.lua index 10f2da5..d8c3cc8 100644 --- a/.config/nvim/lua/josean/plugins/nvim-tree.lua +++ b/.config/nvim/lua/josean/plugins/nvim-tree.lua @@ -9,7 +9,8 @@ return { vim.g.loaded_netrwPlugin = 1 -- change color for arrows in tree to light blue - vim.cmd([[ highlight NvimTreeIndentMarker guifg=#3FC5FF ]]) + vim.cmd([[ highlight NvimTreeFolderArrowClosed guifg=#3FC5FF ]]) + vim.cmd([[ highlight NvimTreeFolderArrowOpen guifg=#3FC5FF ]]) -- configure nvim-tree nvimtree.setup({ @@ -20,7 +21,7 @@ return { -- change folder arrow icons renderer = { indent_markers = { - enable = true + enable = true, }, icons = { glyphs = { diff --git a/.config/nvim/lua/josean/plugins/nvim-treesitter.lua b/.config/nvim/lua/josean/plugins/nvim-treesitter.lua index 98d25b6..97a5663 100644 --- a/.config/nvim/lua/josean/plugins/nvim-treesitter.lua +++ b/.config/nvim/lua/josean/plugins/nvim-treesitter.lua @@ -18,7 +18,9 @@ return { -- enable indentation indent = { enable = true }, -- enable autotagging (w/ nvim-ts-autotag plugin) - autotag = { enable = true }, + autotag = { + enable = true, + }, -- ensure these language parsers are installed ensure_installed = { "json",