From 2c0362678fd8ec9e1298a48bda0a15812e092cfd Mon Sep 17 00:00:00 2001 From: Alexander Gehrke Date: Thu, 11 Apr 2024 20:06:27 +0200 Subject: [PATCH] plugin stuff --- init.lua | 92 +++++++++++++++++++++++--------------- lua/plugins/init.lua | 76 +++++++++++++------------------ lua/plugins/treesitter.lua | 62 ++++++++++++++++++------- lua/plugins/vimtex.lua | 9 ++++ lua/plugins/which-key.lua | 9 ++++ 5 files changed, 152 insertions(+), 96 deletions(-) create mode 100644 lua/plugins/vimtex.lua create mode 100644 lua/plugins/which-key.lua diff --git a/init.lua b/init.lua index 17579ac..d540976 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,4 @@ -if vim.env['VIRTUAL_ENV'] ~= nil then +if vim.env["VIRTUAL_ENV"] ~= nil then vim.g.python3_host_prog = vim.fn.system("which -a python3 | sed -n 2p | tr -d '\n'") else vim.g.python3_host_prog = vim.fn.system("which python3 | tr -d '\n'") @@ -21,8 +21,8 @@ require("lazy").setup("plugins", { dev = { path = "~/projects/nvim/", patterns = { "crater2150" }, - fallback = true - } + fallback = true, + }, }) vim.opt.background = "dark" @@ -52,22 +52,36 @@ vim.opt.smartcase = true vim.opt.inccommand = "split" vim.opt.listchars = "tab:⇥\\ ,trail:-,nbsp:+,lead:␣" --vim.opt.list = true -vim.cmd [[hi link Whitespace Comment]] +vim.cmd([[hi link Whitespace Comment]]) vim.opt.wildmode = { "list:longest", "list:full" } vim.opt.wildignore = { "*.so", "*.swp", "*.zip", "*.o" } vim.opt.suffixes = { - ".bak", "~", ".h", ".info", ".swp", ".obj", ".info", ".aux", ".dvi", ".bbl", ".out", ".o", ".lo", - "\\.class", ".pdf" } + ".bak", + "~", + ".h", + ".info", + ".swp", + ".obj", + ".info", + ".aux", + ".dvi", + ".bbl", + ".out", + ".o", + ".lo", + "\\.class", + ".pdf", +} vim.opt.completeopt = "menu,menuone,noselect" -vim.opt.mouse = '' +vim.opt.mouse = "" vim.opt.shortmess = vim.o.shortmess .. "c" vim.opt.cursorline = true vim.opt.undofile = true -vim.opt.spelllang = 'de,en' +vim.opt.spelllang = "de,en" vim.opt.termguicolors = true vim.opt.pumblend = 10 @@ -75,44 +89,48 @@ vim.opt.pumblend = 10 vim.opt.updatetime = 300 local command = vim.api.nvim_create_user_command -local initlua = vim.fn.stdpath('config') .. '/init.lua' -command('RC', function() vim.cmd.edit(initlua) end, { desc = 'edit init.lua' }) -command('CD', ':cd %:h', { desc = 'cd to current file' }) -command('TrailingSpace', '%s/\\s*$//g', { desc = 'remove trailing spaces' }) +local initlua = vim.fn.stdpath("config") .. "/init.lua" +command("RC", function() + vim.cmd.edit(initlua) +end, { desc = "edit init.lua" }) +command("CD", ":cd %:h", { desc = "cd to current file" }) +command("TrailingSpace", "%s/\\s*$//g", { desc = "remove trailing spaces" }) -vim.g.tex_flavor = 'latex' +vim.g.tex_flavor = "latex" local key = vim.keymap.set -key('n', '', 'za', { desc = 'toggle fold' }) -key('v', '.', 'normal .', { desc = 'repeat last command in visual mode' }) -key('n', 'cy', '"*y', { desc = 'copy to system clipboard' }) +key("n", "", "za", { desc = "toggle fold" }) +key("v", ".", "normal .", { desc = "repeat last command in visual mode" }) +key("n", "cy", '"*y', { desc = "copy to system clipboard" }) -key('t', '', '', { desc = 'exit terminal mode' }) +key("t", "", "", { desc = "exit terminal mode" }) -- Arrow keys for window movement and resizing -key('n', '', 'h') -key('n', '', 'j') -key('n', '', 'k') -key('n', '', 'l') +key("n", "", "h") +key("n", "", "j") +key("n", "", "k") +key("n", "", "l") -- -key('n', '', "<") -key('n', '', ">") -key('n', '', "-") -key('n', '', "+") +key("n", "", "<") +key("n", "", ">") +key("n", "", "-") +key("n", "", "+") -key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'be') end, { desc = 'jump to previous unindented line' }) -key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'e') end, { desc = 'jump to next unindented line' }) +key("n", "", function() + vim.fn.search("^[^[:space:])\\]}]", "be") +end, { desc = "jump to previous unindented line" }) +key("n", "", function() + vim.fn.search("^[^[:space:])\\]}]", "e") +end, { desc = "jump to next unindented line" }) -key('i', '', 'u') -key('n', '&', ':&&') -key('x', '&', ':&&') -key('n', 'Y', 'y$') +key("i", "", "u") +key("n", "&", ":&&") +key("x", "&", ":&&") +key("n", "Y", "y$") +key("i", "", "", { desc = "completion" }) +key("n", "", "nohredraw!", { desc = "clear search highlight" }) +key("v", "gs", "'<,'>sort", { desc = "sort selection" }) -key('i', '', '', { desc = 'completion' }) -key('n', '', 'nohredraw!', { desc = 'clear search highlight' }) -key('v', 'gs', "'<,'>sort", { desc = 'sort selection' }) - - -key({ 'n', 'x' }, '', "(EasyAlign)", { desc = 'align selection' }) +key({ "n", "x" }, "", "(EasyAlign)", { desc = "align selection" }) diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index e2449dd..fd92acd 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -1,63 +1,51 @@ return { - "folke/which-key.nvim", - 'pbrisbin/vim-mkdir', - 'fladson/vim-kitty', - 'tpope/vim-repeat', - 'tpope/vim-surround', - 'tpope/vim-characterize', - 'tpope/vim-commentary', - 'tpope/vim-sleuth', + "pbrisbin/vim-mkdir", + "fladson/vim-kitty", + "tpope/vim-repeat", + "tpope/vim-surround", + "tpope/vim-characterize", + "tpope/vim-commentary", { "chrisgrieser/nvim-genghis", dependencies = "stevearc/dressing.nvim" }, -- ic / ac { - 'glts/vim-textobj-comment', - dependencies = { 'kana/vim-textobj-user' } + "glts/vim-textobj-comment", + dependencies = { "kana/vim-textobj-user" }, }, -- ii / ai - 'michaeljsmith/vim-indent-object', - 'neovim/nvim-lspconfig', + "michaeljsmith/vim-indent-object", + "neovim/nvim-lspconfig", { - 'nvim-telescope/telescope.nvim', - dependencies = { 'nvim-lua/plenary.nvim' } + "nvim-telescope/telescope.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, }, { - 'ray-x/lsp_signature.nvim', + "ray-x/lsp_signature.nvim", config = function() - require('lsp_signature').setup({}) - end - }, - 'kyazdani42/nvim-web-devicons', - 'folke/trouble.nvim', - 'folke/lsp-colors.nvim', - 'nvim-lua/popup.nvim', - 'junegunn/vim-easy-align', - 'machakann/vim-highlightedyank', - 'lambdalisue/suda.vim', - 'jamessan/vim-gnupg', - - { - 'lervag/vimtex', - init = function() - vim.g.tex_conceal = "agm" - vim.g.vimtex_quickfix_ignorefilters = { 'overfull', 'underfull' } - vim.g.vimtex_syntax_enabled = 0 + require("lsp_signature").setup({}) end, - ft = "tex", }, - 'ledger/vim-ledger', - 'anekos/hledger-vim', + "kyazdani42/nvim-web-devicons", + "folke/trouble.nvim", + "folke/lsp-colors.nvim", + "nvim-lua/popup.nvim", + "junegunn/vim-easy-align", + "machakann/vim-highlightedyank", + "lambdalisue/suda.vim", + "jamessan/vim-gnupg", + "ledger/vim-ledger", + "anekos/hledger-vim", - 'vim-pandoc/vim-pandoc', - 'vim-pandoc/vim-pandoc-syntax', - 'isobit/vim-caddyfile', - 'Glench/Vim-Jinja2-Syntax', - 'GEverding/vim-hocon', - 'nfnty/vim-nftables', - 'nfnty/vim-nftables', - 'Everduin94/nvim-quick-switcher', + "vim-pandoc/vim-pandoc", + "vim-pandoc/vim-pandoc-syntax", + "isobit/vim-caddyfile", + "Glench/Vim-Jinja2-Syntax", + "GEverding/vim-hocon", + "nfnty/vim-nftables", + "nfnty/vim-nftables", + "Everduin94/nvim-quick-switcher", } -- 'powerman/vim-plugin-AnsiEsc', diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua index ca161a6..51fc43f 100644 --- a/lua/plugins/treesitter.lua +++ b/lua/plugins/treesitter.lua @@ -5,7 +5,7 @@ end return { { "nvim-treesitter/nvim-treesitter", - version = false, -- last release is way too old and doesn't work on Windows + version = false, build = ":TSUpdate", event = { "BufReadPost", "BufNewFile" }, dependencies = { @@ -32,10 +32,11 @@ return { }, keys = { { "", desc = "Increment selection" }, - { "", desc = "Decrement selection", mode = "x" }, + { "", desc = "Decrement selection", mode = "x" }, }, - ---@type TSConfig opts = { + auto_install = true, + ignore_install = {}, highlight = { enable = true, disable = ts_disable }, indent = { enable = true }, ensure_installed = { @@ -68,6 +69,36 @@ return { node_decremental = "", }, }, + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + -- stylua: ignore start + ["af"] = { query = "@function.outer", desc = "outer function" }, + ["if"] = { query = "@function.inner", desc = "inner function" }, + ["ac"] = { query = "@class.outer", desc = "outer class" }, + ["ic"] = { query = "@class.inner", desc = "inner class" }, + ["ap"] = { query = "@parameter.outer", desc = "outer parameter" }, + ["ip"] = { query = "@parameter.inner", desc = "inner parameter" }, + -- stylua: ignore end + }, + selection_modes = { + ["@parameter.outer"] = "v", -- charwise + ["@function.outer"] = "V", -- linewise + ["@class.outer"] = "V", + }, + }, + swap = { + enable = true, + swap_next = { + ["a"] = "@parameter.inner", + }, + swap_previous = { + ["A"] = "@parameter.inner", + }, + }, + }, }, ---@param opts TSConfig config = function(_, opts) @@ -86,28 +117,29 @@ return { end, }, { - 'nvim-treesitter/playground', + "nvim-treesitter/playground", dependencies = { "nvim-treesitter/nvim-treesitter" }, cmd = { - 'TSPlaygroundToggle', - 'TSHighlightCapturesUnderCursor', - 'TSNodeUnderCursor', - } + "TSPlaygroundToggle", + "TSHighlightCapturesUnderCursor", + "TSNodeUnderCursor", + }, }, { "nvim-treesitter/nvim-treesitter-context", event = "VeryLazy", dependencies = { "nvim-treesitter/nvim-treesitter" }, - cmd = { 'TSContextEnable', 'TSContextDisable', 'TSContextToggle' }, + cmd = { "TSContextEnable", "TSContextDisable", "TSContextToggle" }, keys = { - { "[c", function() require("treesitter-context").go_to_context() end, desc = "Go to context start" }, + -- stylua: ignore start + { "[c", function() require("treesitter-context").go_to_context() end, desc = "Go to context start", }, + -- stylua: ignore end }, opts = { enable = true }, config = function(_, opts) - require 'treesitter-context'.setup(opts) - vim.api.nvim_set_hl(0, 'TreesitterContext', { bg = "#555555" }) - vim.api.nvim_set_hl(0, 'TreesitterContextLineNumber', { link = "Special" }) + require("treesitter-context").setup(opts) + vim.api.nvim_set_hl(0, "TreesitterContext", { bg = "#555555" }) + vim.api.nvim_set_hl(0, "TreesitterContextLineNumber", { link = "Special" }) end, - } - + }, } diff --git a/lua/plugins/vimtex.lua b/lua/plugins/vimtex.lua new file mode 100644 index 0000000..b675f73 --- /dev/null +++ b/lua/plugins/vimtex.lua @@ -0,0 +1,9 @@ +return { + "lervag/vimtex", + init = function() + vim.g.tex_conceal = "agm" + vim.g.vimtex_quickfix_ignorefilters = { "overfull", "underfull" } + vim.g.vimtex_syntax_enabled = 0 + end, + ft = "tex", +} diff --git a/lua/plugins/which-key.lua b/lua/plugins/which-key.lua new file mode 100644 index 0000000..183fcb3 --- /dev/null +++ b/lua/plugins/which-key.lua @@ -0,0 +1,9 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end, + opts = {}, +}