From 60e69ab7d3653165c1ce435f3a4bbfc736cccf2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20La=C3=ADn?= Date: Wed, 17 Jan 2024 09:52:25 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(nvim):=20add=20some=20new=20us?= =?UTF-8?q?eful=20autocmds=20on=20ftplugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .config/nvim/after/ftplugin/javascriptreact.lua | 16 ++++++++++++++++ .config/nvim/after/ftplugin/json.lua | 12 ++++++++++++ .config/nvim/after/ftplugin/jsonc.lua | 12 ++++++++++++ .config/nvim/after/ftplugin/typescriptreact.lua | 16 ++++++++++++++++ .config/nvim/lazyvim.json | 3 ++- 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .config/nvim/after/ftplugin/javascriptreact.lua create mode 100644 .config/nvim/after/ftplugin/typescriptreact.lua diff --git a/.config/nvim/after/ftplugin/javascriptreact.lua b/.config/nvim/after/ftplugin/javascriptreact.lua new file mode 100644 index 00000000..458f3e8b --- /dev/null +++ b/.config/nvim/after/ftplugin/javascriptreact.lua @@ -0,0 +1,16 @@ +-- Automatically end a self-closing tag when pressing / +vim.keymap.set("i", "/", function() + local node = vim.treesitter.get_node() + if not node then + return "/" + end + + if node:type() == "jsx_opening_element" then + local char_at_cursor = vim.fn.strcharpart(vim.fn.strpart(vim.fn.getline("."), vim.fn.col(".") - 2), 0, 1) + local already_have_space = char_at_cursor == " " + + return already_have_space and "/>" or " />" + end + + return "/" +end, { expr = true, buffer = true }) diff --git a/.config/nvim/after/ftplugin/json.lua b/.config/nvim/after/ftplugin/json.lua index b58d3e11..fcaaccd4 100644 --- a/.config/nvim/after/ftplugin/json.lua +++ b/.config/nvim/after/ftplugin/json.lua @@ -1 +1,13 @@ vim.opt.conceallevel = 0 + +-- When creating a new line with o, make sure there is a trailing comma on the current line +vim.keymap.set("n", "o", function() + local line = vim.api.nvim_get_current_line() + + local should_add_comma = string.find(line, "[^,{[]$") + if should_add_comma then + return "A," + else + return "o" + end +end, { buffer = true, expr = true }) diff --git a/.config/nvim/after/ftplugin/jsonc.lua b/.config/nvim/after/ftplugin/jsonc.lua index b58d3e11..fcaaccd4 100644 --- a/.config/nvim/after/ftplugin/jsonc.lua +++ b/.config/nvim/after/ftplugin/jsonc.lua @@ -1 +1,13 @@ vim.opt.conceallevel = 0 + +-- When creating a new line with o, make sure there is a trailing comma on the current line +vim.keymap.set("n", "o", function() + local line = vim.api.nvim_get_current_line() + + local should_add_comma = string.find(line, "[^,{[]$") + if should_add_comma then + return "A," + else + return "o" + end +end, { buffer = true, expr = true }) diff --git a/.config/nvim/after/ftplugin/typescriptreact.lua b/.config/nvim/after/ftplugin/typescriptreact.lua new file mode 100644 index 00000000..458f3e8b --- /dev/null +++ b/.config/nvim/after/ftplugin/typescriptreact.lua @@ -0,0 +1,16 @@ +-- Automatically end a self-closing tag when pressing / +vim.keymap.set("i", "/", function() + local node = vim.treesitter.get_node() + if not node then + return "/" + end + + if node:type() == "jsx_opening_element" then + local char_at_cursor = vim.fn.strcharpart(vim.fn.strpart(vim.fn.getline("."), vim.fn.col(".") - 2), 0, 1) + local already_have_space = char_at_cursor == " " + + return already_have_space and "/>" or " />" + end + + return "/" +end, { expr = true, buffer = true }) diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json index c3654374..30f5b80f 100644 --- a/.config/nvim/lazyvim.json +++ b/.config/nvim/lazyvim.json @@ -107,4 +107,5 @@ "NEWS.md": "2123" }, "version": 2 -} \ No newline at end of file +} +