From 6f288e2976e0d13e291af042387b59af8b995b92 Mon Sep 17 00:00:00 2001 From: Pratik Tripathy Date: Wed, 20 Aug 2025 13:06:27 +0530 Subject: [PATCH] refactor(neovim): Convert file-autocmd to after-ftplugin - Markdown, gitcommit, text: `lua/shared/text_settings.lua` - Javascript, Typescript, React, Vue: `lua/shared/javascript_settings.lua` - `after/ftplugin` files that `require` the above 2 shared configs --- .../.config/nvim/after/ftplugin/gitcommit.lua | 1 + .../nvim/after/ftplugin/javascript.jsx.lua | 1 + .../nvim/after/ftplugin/javascript.lua | 1 + .../nvim/after/ftplugin/javascriptreact.lua | 1 + .../.config/nvim/after/ftplugin/markdown.lua | 1 + common/.config/nvim/after/ftplugin/text.lua | 1 + .../nvim/after/ftplugin/typescript.lua | 1 + .../nvim/after/ftplugin/typescript.tsx.lua | 1 + .../nvim/after/ftplugin/typescriptreact.lua | 1 + common/.config/nvim/after/ftplugin/vue.lua | 1 + .../lua/config/filetype-based-keymaps.lua | 57 ------------------- .../nvim/lua/plugins/lang-markdown.lua | 4 +- .../nvim/lua/shared/javascript_settings.lua | 24 ++++++++ .../.config/nvim/lua/shared/text_settings.lua | 19 +++++++ 14 files changed, 55 insertions(+), 59 deletions(-) create mode 100644 common/.config/nvim/after/ftplugin/gitcommit.lua create mode 100644 common/.config/nvim/after/ftplugin/javascript.jsx.lua create mode 100644 common/.config/nvim/after/ftplugin/javascript.lua create mode 100644 common/.config/nvim/after/ftplugin/javascriptreact.lua create mode 100644 common/.config/nvim/after/ftplugin/markdown.lua create mode 100644 common/.config/nvim/after/ftplugin/text.lua create mode 100644 common/.config/nvim/after/ftplugin/typescript.lua create mode 100644 common/.config/nvim/after/ftplugin/typescript.tsx.lua create mode 100644 common/.config/nvim/after/ftplugin/typescriptreact.lua create mode 100644 common/.config/nvim/after/ftplugin/vue.lua delete mode 100644 common/.config/nvim/lua/config/filetype-based-keymaps.lua create mode 100644 common/.config/nvim/lua/shared/javascript_settings.lua create mode 100644 common/.config/nvim/lua/shared/text_settings.lua diff --git a/common/.config/nvim/after/ftplugin/gitcommit.lua b/common/.config/nvim/after/ftplugin/gitcommit.lua new file mode 100644 index 0000000..a01a971 --- /dev/null +++ b/common/.config/nvim/after/ftplugin/gitcommit.lua @@ -0,0 +1 @@ +require("shared.text_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/javascript.jsx.lua b/common/.config/nvim/after/ftplugin/javascript.jsx.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/javascript.jsx.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/javascript.lua b/common/.config/nvim/after/ftplugin/javascript.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/javascript.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/javascriptreact.lua b/common/.config/nvim/after/ftplugin/javascriptreact.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/javascriptreact.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/markdown.lua b/common/.config/nvim/after/ftplugin/markdown.lua new file mode 100644 index 0000000..a01a971 --- /dev/null +++ b/common/.config/nvim/after/ftplugin/markdown.lua @@ -0,0 +1 @@ +require("shared.text_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/text.lua b/common/.config/nvim/after/ftplugin/text.lua new file mode 100644 index 0000000..a01a971 --- /dev/null +++ b/common/.config/nvim/after/ftplugin/text.lua @@ -0,0 +1 @@ +require("shared.text_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/typescript.lua b/common/.config/nvim/after/ftplugin/typescript.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/typescript.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/typescript.tsx.lua b/common/.config/nvim/after/ftplugin/typescript.tsx.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/typescript.tsx.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/typescriptreact.lua b/common/.config/nvim/after/ftplugin/typescriptreact.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/typescriptreact.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/after/ftplugin/vue.lua b/common/.config/nvim/after/ftplugin/vue.lua new file mode 100644 index 0000000..a0231fc --- /dev/null +++ b/common/.config/nvim/after/ftplugin/vue.lua @@ -0,0 +1 @@ +require("shared.javascript_settings").setup() diff --git a/common/.config/nvim/lua/config/filetype-based-keymaps.lua b/common/.config/nvim/lua/config/filetype-based-keymaps.lua deleted file mode 100644 index 007fd4e..0000000 --- a/common/.config/nvim/lua/config/filetype-based-keymaps.lua +++ /dev/null @@ -1,57 +0,0 @@ --- Enable keymaps that are specific to only a certain LSP -vim.api.nvim_create_autocmd("FileType", { - group = vim.api.nvim_create_augroup("keymaps-javascript", { clear = true }), - pattern = { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "vue", "svelte", "astro" }, - callback = function() - vim.keymap.set({ "n", "v" }, "co", function() - vim.lsp.buf.code_action({ - apply = true, - context = { - only = { "source.organizeImports.ts" }, - diagnostics = {}, - }, - }) - end, { desc = "Code: Typescript: Organize Imports" }) - vim.keymap.set({ "n", "v" }, "cO", function() - vim.lsp.buf.code_action({ - apply = true, - context = { - only = { "source.removeUnused.ts" }, - diagnostics = {}, - }, - }) - end, { desc = "Code: Typescript: Remove Unused Imports" }) - end, - nested = true, -}) - --- Enable spell check on markdown and text files -vim.api.nvim_create_autocmd("FileType", { - group = vim.api.nvim_create_augroup("spell_check_text_files", { clear = true }), - pattern = { "markdown", "gitcommit", "text" }, - callback = function() - vim.opt.spell = true - end, - nested = true, -}) - -vim.api.nvim_create_autocmd("FileType", { - group = vim.api.nvim_create_augroup("markdown-keymaps", { clear = true }), - pattern = { "markdown", "gitcommit", "text" }, - callback = function() - vim.keymap.set("v", "ml", function() - -- Save visually selected text to register 'v' - vim.cmd('normal! "vy') - -- Delete the selected text - vim.cmd("normal! gvd") - -- Get the content of the system clipboard - local clipboard_content = vim.fn.getreg("+") - -- Insert the markdown link - local link = string.format("[%s](%s)", vim.fn.getreg("v"), clipboard_content) - vim.api.nvim_put({ link }, "c", false, true) - -- Move cursor inside the square brackets - vim.cmd("normal! F[l") - end, { desc = "Markdown: Make link" }) - end, - nested = true, -}) diff --git a/common/.config/nvim/lua/plugins/lang-markdown.lua b/common/.config/nvim/lua/plugins/lang-markdown.lua index 89e74e1..1166262 100644 --- a/common/.config/nvim/lua/plugins/lang-markdown.lua +++ b/common/.config/nvim/lua/plugins/lang-markdown.lua @@ -49,11 +49,11 @@ return { indent = { enabled = false, skip_heading = true, icon = "" }, completions = { blink = { enabled = true } }, }, - ft = { "markdown", "norg", "rmd", "org" }, + ft = { "markdown", "text", "gitcommit", "scratch" }, config = function(_, opts) require("render-markdown").setup(opts) Snacks.toggle({ - name = "Markdown Render", + name = "Markdown Rendering", get = function() return require("render-markdown.state").enabled end, diff --git a/common/.config/nvim/lua/shared/javascript_settings.lua b/common/.config/nvim/lua/shared/javascript_settings.lua new file mode 100644 index 0000000..621c377 --- /dev/null +++ b/common/.config/nvim/lua/shared/javascript_settings.lua @@ -0,0 +1,24 @@ +local M = {} + +function M.setup() + vim.keymap.set({ "n", "v" }, "co", function() + vim.lsp.buf.code_action({ + apply = true, + context = { + only = { "source.organizeimports.ts" }, + diagnostics = {}, + }, + }) + end, { desc = "Typescript: organize imports" }) + vim.keymap.set({ "n", "v" }, "co", function() + vim.lsp.buf.code_action({ + apply = true, + context = { + only = { "source.removeunused.ts" }, + diagnostics = {}, + }, + }) + end, { desc = "Typescript: remove unused imports" }) +end + +return M diff --git a/common/.config/nvim/lua/shared/text_settings.lua b/common/.config/nvim/lua/shared/text_settings.lua new file mode 100644 index 0000000..fe1011b --- /dev/null +++ b/common/.config/nvim/lua/shared/text_settings.lua @@ -0,0 +1,19 @@ +local M = {} + +function M.setup() + vim.opt_local.spell = true + + vim.keymap.set("v", "ml", function() + vim.cmd('normal! "vygvc ') -- Save selected text to register 'v' & delete the text + + -- Copy the system clipboard + local clipboard_content = vim.fn.getreg("+") + -- Insert the markdown link + local link = string.format("[%s](%s)", vim.fn.getreg("v"), clipboard_content) + + vim.api.nvim_put({ link }, "c", false, true) + vim.cmd("normal! T[vt]") -- Move cursor inside the square brackets & visually select text + end, { desc = "Markdown: Create link from system clipboard" }) +end + +return M