From 2cdc4bb21087ffc5fea912e0c367ee53c79b7800 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Sat, 6 Apr 2024 06:48:19 +0545 Subject: [PATCH] . --- config/nvim/lua/config/keymaps.lua | 63 +++++++++++++++++++ .../extras/lang/web/{vue.lua => veu3.lua} | 0 .../nvim/lua/plugins/extras/lang/web/vue2.lua | 51 +++++++++++++++ 3 files changed, 114 insertions(+) rename config/nvim/lua/plugins/extras/lang/web/{vue.lua => veu3.lua} (100%) create mode 100644 config/nvim/lua/plugins/extras/lang/web/vue2.lua diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua index 1941689a..aa7ae216 100644 --- a/config/nvim/lua/config/keymaps.lua +++ b/config/nvim/lua/config/keymaps.lua @@ -24,6 +24,9 @@ map("n", "E", "ge") map("n", "+", "") map("n", "-", "") + + + -- Spelling map("n", "!", "zg", { desc = "Add Word to Dictionary" }) map("n", "@", "zug", { desc = "Remove Word from Dictionary" }) @@ -36,6 +39,34 @@ map("n", "", "tabprevious", { desc = "Previous Tab" }) for i = 1, 9 do map("n", "" .. i, "tabn " .. i .. "", { desc = "Tab " .. i }) end +map("n", "f", function() + vim.ui.select(vim.api.nvim_list_tabpages(), { + prompt = "Select tab:", + format_item = function(tabid) + local wins = vim.api.nvim_tabpage_list_wins(tabid) + local not_floating_win = function(winid) + return vim.api.nvim_win_get_config(winid).relative == "" + end + wins = vim.tbl_filter(not_floating_win, wins) + local bufs = {} + for _, win in ipairs(wins) do + local buf = vim.api.nvim_win_get_buf(win) + local buftype = vim.api.nvim_get_option_value("buftype", { buf = buf }) + if buftype ~= "nofile" then + local fname = vim.api.nvim_buf_get_name(buf) + table.insert(bufs, vim.fn.fnamemodify(fname, ":t")) + end + end + local tabnr = vim.api.nvim_tabpage_get_number(tabid) + local cwd = vim.fn.fnamemodify(vim.fn.getcwd(-1, tabnr), ":t") + return "Tab " .. tabnr .. " (" .. cwd .. "): " .. table.concat(bufs, ",") + end, + }, function(tabid) + if tabid ~= nil then + vim.cmd(tabid .. "tabnext") + end + end) +end, { desc = "Tabs" }) -- Buffers map("n", "bf", "bfirst", { desc = "First Buffer" }) @@ -179,3 +210,35 @@ map('x', 'p', 'p`]') -- Select last pasted text map('n', 'gp', "'`[' . strpart(getregtype(), 0, 1) . '`]'", { expr = true }) + + +-- Search visually selected text (slightly better than builtins in Neovim>=0.8) +map("x", "*", [[y/\V=escape(@", '/\')]], { desc = "Search Selected Text", silent = true }) +map("x", "#", [[y?\V=escape(@", '?\')]], { desc = "Search Selected Text (Backwards)", silent = true }) + +-- Marks +map("n", "dm", function() + local cur_line = vim.fn.line(".") + -- Delete buffer local mark + for _, mark in ipairs(vim.fn.getmarklist("%")) do + if mark.pos[2] == cur_line and mark.mark:match("[a-zA-Z]") then + vim.api.nvim_buf_del_mark(0, string.sub(mark.mark, 2, #mark.mark)) + return + end + end + -- Delete global marks + local cur_buf = vim.api.nvim_win_get_buf(vim.api.nvim_get_current_win()) + for _, mark in ipairs(vim.fn.getmarklist()) do + if mark.pos[1] == cur_buf and mark.pos[2] == cur_line and mark.mark:match("[a-zA-Z]") then + vim.api.nvim_buf_del_mark(0, string.sub(mark.mark, 2, #mark.mark)) + return + end + end +end, { noremap = true, desc = "Mark on Current Line" }) + +-- Empty Line +map("n", "gO", "call append(line('.') - 1, repeat([''], v:count1))", { desc = "Empty Line Above" }) +map("n", "go", "call append(line('.'), repeat([''], v:count1))", { desc = "Empty Line Below" }) + +-- Insert Mode +map({ "c", "i", "t" }, "", "", { desc = "Delete Word" }) diff --git a/config/nvim/lua/plugins/extras/lang/web/vue.lua b/config/nvim/lua/plugins/extras/lang/web/veu3.lua similarity index 100% rename from config/nvim/lua/plugins/extras/lang/web/vue.lua rename to config/nvim/lua/plugins/extras/lang/web/veu3.lua diff --git a/config/nvim/lua/plugins/extras/lang/web/vue2.lua b/config/nvim/lua/plugins/extras/lang/web/vue2.lua new file mode 100644 index 00000000..75f1ee10 --- /dev/null +++ b/config/nvim/lua/plugins/extras/lang/web/vue2.lua @@ -0,0 +1,51 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts.ensure_installed) == "table" then + vim.list_extend(opts.ensure_installed, { "vue" }) + end + end, + }, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + volar = {}, + tsserver = {}, + }, + setup = { + tsserver = function(_, opts) + local mason_registry = require("mason-registry") + local vue_language_server_path = mason_registry.get_package("vue-language-server"):get_install_path() + .. "/node_modules/@vue/language-server" + + opts.init_options = { + plugins = { + { + name = "@vue/typescript-plugin", + location = vue_language_server_path, + languages = { "vue" }, + }, + }, + } + opts.filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" } + end, + }, + }, + }, + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "vue-language-server" }) + end, + }, + { + "luckasRanarison/nvim-devdocs", + optional = true, + ensure_installed = { + "vue-3", + }, + }, +}