changed everything to make simpler
This commit is contained in:
		
							parent
							
								
									45ba7555e5
								
							
						
					
					
						commit
						3ffd03cba9
					
				|  | @ -1,40 +1,39 @@ | ||||||
| { | { | ||||||
|   "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, |   "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, | ||||||
|   "LuaSnip": { "branch": "master", "commit": "2b6860d15aaab01d3fb90859c0ba97f20ad7bc5f" }, |   "autoclose.nvim": { "branch": "main", "commit": "b2077aa2c83df7ebc19b2a20a3a0654b24ae9c8f" }, | ||||||
|   "autoclose.nvim": { "branch": "main", "commit": "dc42806540dcf448ecb2bad6b67204410cfbe629" }, |  | ||||||
|   "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" }, |  | ||||||
|   "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, |   "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, | ||||||
|   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, |   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, | ||||||
|   "coc.nvim": { "branch": "release", "commit": "f0ce9ae23d6ce9d0cbabe73bdb738e45accc6f08" }, |   "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, | ||||||
|   "eslint.nvim": { "branch": "main", "commit": "158f2289907d377018752fcfe0d61b746dc11767" }, |   "conform.nvim": { "branch": "master", "commit": "f1125f8eace158255cf55772ce039aaf178a6b42" }, | ||||||
|   "fidget.nvim": { "branch": "main", "commit": "ef99df04a1c53a453602421bc0f756997edc8289" }, |   "fidget.nvim": { "branch": "main", "commit": "e2a175c2abe2d4f65357da1c98c59a5cfb2b543f" }, | ||||||
|   "friendly-snippets": { "branch": "main", "commit": "e11b09bf10706bb74e16e4c3d11b2274d62e687f" }, |   "gitsigns.nvim": { "branch": "main", "commit": "ac5aba6dce8c06ea22bea2c9016f51a2dbf90dc7" }, | ||||||
|   "gitsigns.nvim": { "branch": "main", "commit": "e31d2149d9f3fb056bfd5b3416b2e818be10aabe" }, |   "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, | ||||||
|   "godot.nvim": { "branch": "main", "commit": "9a2d631c6a6313553dbd66f749ed3bc99bd4b4a9" }, |   "lazydev.nvim": { "branch": "main", "commit": "d5800897d9180cea800023f2429bce0a94ed6064" }, | ||||||
|   "harpoon": { "branch": "harpoon2", "commit": "0378a6c428a0bed6a2781d459d7943843f374bce" }, |   "lua-async-await": { "branch": "main", "commit": "652d94df34e97abe2d4a689edbc4270e7ead1a98" }, | ||||||
|   "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" }, |   "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, | ||||||
|   "lazy.nvim": { "branch": "main", "commit": "8f6225751138329da339eb6554d40158768d23ff" }, |   "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, | ||||||
|   "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" }, |   "mason-tool-installer.nvim": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" }, | ||||||
|   "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" }, |   "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, | ||||||
|   "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" }, |   "mini.nvim": { "branch": "main", "commit": "6714e738555b1cfbef646a23af29aa113f91f4fe" }, | ||||||
|   "neodev.nvim": { "branch": "main", "commit": "02893eeb9d6e8503817bd52385e111cba9a90500" }, |   "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, | ||||||
|   "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, |   "nvim-cmp": { "branch": "main", "commit": "40a03dc225383c4f6256596c2cdf27e03b8119b5" }, | ||||||
|   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" }, |   "nvim-dap": { "branch": "master", "commit": "cc92b054720a96170eca6bd9bdedd43d2b0a7a8a" }, | ||||||
|   "nvim-lspconfig": { "branch": "master", "commit": "d1ab6b6051976b04948e127b0f302a465b1394d6" }, |   "nvim-java": { "branch": "main", "commit": "905013eb83c58bda992724b3ecbe20f60b58513f" }, | ||||||
|   "nvim-tree.lua": { "branch": "master", "commit": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812" }, |   "nvim-java-core": { "branch": "main", "commit": "5b03dca22fee76524a89e1c2dc1d73a9f0b1a3bb" }, | ||||||
|   "nvim-treesitter": { "branch": "master", "commit": "49e4e2b4b62360677568c47b6467f31c809b391c" }, |   "nvim-java-dap": { "branch": "main", "commit": "55f239532f7a3789d21ea68d1e795abc77484974" }, | ||||||
|   "nvim-treesitter-textobjects": { "branch": "master", "commit": "fd41b7ccc5490a3a99c734d1ee418b68d06c48a9" }, |   "nvim-java-refactor": { "branch": "main", "commit": "ea1420fed5463c9cc976c2b4175f434b3646f0f7" }, | ||||||
|   "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" }, |   "nvim-java-test": { "branch": "main", "commit": "7f0f40e9c5b7eab5096d8bec6ac04251c6e81468" }, | ||||||
|   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, |   "nvim-lspconfig": { "branch": "master", "commit": "f012c1b176f0e3c71f40eb309bdec0316689462e" }, | ||||||
|   "supermaven-nvim": { "branch": "main", "commit": "ef3bd1a6b6f722857f2f88d929dd4ac875655611" }, |   "nvim-tree.lua": { "branch": "master", "commit": "c7639482a1598f4756798df1b2d72f79fe5bb34f" }, | ||||||
|  |   "nvim-treesitter": { "branch": "master", "commit": "a3a732107f8b529f97bf4921b3e1af5dcc756bb6" }, | ||||||
|  |   "nvim-web-devicons": { "branch": "master", "commit": "e87554285f581047b1bf236794b0eb812b444b87" }, | ||||||
|  |   "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, | ||||||
|  |   "spring-boot.nvim": { "branch": "main", "commit": "218c0c26c14d99feca778e4d13f5ec3e8b1b60f0" }, | ||||||
|   "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, |   "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, | ||||||
|  |   "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, | ||||||
|   "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, |   "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, | ||||||
|   "templ.vim": { "branch": "main", "commit": "5cc48b93a4538adca0003c4bc27af844bb16ba24" }, |   "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, | ||||||
|   "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, |   "tokyonight.nvim": { "branch": "main", "commit": "c2725eb6d086c8c9624456d734bd365194660017" }, | ||||||
|   "vim-devicons": { "branch": "master", "commit": "71f239af28b7214eebb60d4ea5bd040291fb7e33" }, |   "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, | ||||||
|   "vim-fugitive": { "branch": "master", "commit": "4f59455d2388e113bd510e85b310d15b9228ca0d" }, |   "which-key.nvim": { "branch": "main", "commit": "68e37e12913a66b60073906f5d3f14dee0de19f2" } | ||||||
|   "vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" }, |  | ||||||
|   "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, |  | ||||||
|   "vim-tmux-navigator": { "branch": "master", "commit": "5b3c701686fb4e6629c100ed32e827edf8dad01e" }, |  | ||||||
|   "which-key.nvim": { "branch": "main", "commit": "4b7167f8fb2dba3d01980735e3509e172c024c29" } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| require("autoclose").setup({ | require("autoclose").setup({ | ||||||
|    keys = { | 	keys = { | ||||||
|      ["("] = { escape = false, close = true, pair = "()", disabled_filetypes = {} }, | 		["("] = { escape = false, close = true, pair = "()", disabled_filetypes = {} }, | ||||||
|      ["{"] = { escape = false, close = true, pair = "{}", disabled_filetypes = {} }, | 		["{"] = { escape = false, close = true, pair = "{}", disabled_filetypes = {} }, | ||||||
|    }, | 	}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,110 @@ | ||||||
|  | vim.g.mapleader = " " | ||||||
|  | vim.g.maplocalleader = " " | ||||||
|  | 
 | ||||||
|  | vim.opt["tabstop"] = 2 | ||||||
|  | vim.opt["shiftwidth"] = 2 | ||||||
|  | 
 | ||||||
|  | vim.opt.wrap = false | ||||||
|  | 
 | ||||||
|  | -- optionally enable 24-bit colour | ||||||
|  | vim.opt.termguicolors = true | ||||||
|  | 
 | ||||||
|  | vim.g.have_nerd_font = true | ||||||
|  | 
 | ||||||
|  | -- Make line numbers default | ||||||
|  | vim.opt.number = true | ||||||
|  | vim.opt.relativenumber = true | ||||||
|  | 
 | ||||||
|  | -- Enable mouse mode, can be useful for resizing splits for example! | ||||||
|  | vim.opt.mouse = "a" | ||||||
|  | 
 | ||||||
|  | -- Don't show the mode, since it's already in the status line | ||||||
|  | vim.opt.showmode = false | ||||||
|  | 
 | ||||||
|  | -- Enable break indent | ||||||
|  | vim.opt.breakindent = true | ||||||
|  | 
 | ||||||
|  | -- Save undo history | ||||||
|  | vim.opt.undofile = true | ||||||
|  | 
 | ||||||
|  | -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term | ||||||
|  | vim.opt.ignorecase = true | ||||||
|  | vim.opt.smartcase = true | ||||||
|  | 
 | ||||||
|  | -- Keep signcolumn on by default | ||||||
|  | vim.opt.signcolumn = "yes" | ||||||
|  | 
 | ||||||
|  | -- Decrease update time | ||||||
|  | vim.opt.updatetime = 250 | ||||||
|  | 
 | ||||||
|  | -- Decrease mapped sequence wait time | ||||||
|  | -- Displays which-key popup sooner | ||||||
|  | vim.opt.timeoutlen = 300 | ||||||
|  | 
 | ||||||
|  | -- Configure how new splits should be opened | ||||||
|  | vim.opt.splitright = true | ||||||
|  | vim.opt.splitbelow = true | ||||||
|  | 
 | ||||||
|  | -- Sets how neovim will display certain whitespace characters in the editor. | ||||||
|  | vim.opt.list = false | ||||||
|  | vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } | ||||||
|  | 
 | ||||||
|  | -- Preview substitutions live, as you type! | ||||||
|  | vim.opt.inccommand = "split" | ||||||
|  | 
 | ||||||
|  | -- Show which line your cursor is on | ||||||
|  | vim.opt.cursorline = true | ||||||
|  | 
 | ||||||
|  | -- Minimal number of screen lines to keep above and below the cursor. | ||||||
|  | vim.opt.scrolloff = 10 | ||||||
|  | 
 | ||||||
|  | vim.g.loaded_netrw = 1 | ||||||
|  | vim.g.loaded_netrwPlugin = 1 | ||||||
|  | 
 | ||||||
|  | -- [[ Basic Keymaps ]] | ||||||
|  | vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>") | ||||||
|  | 
 | ||||||
|  | -- Diagnostic keymaps | ||||||
|  | vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) | ||||||
|  | 
 | ||||||
|  | -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier | ||||||
|  | -- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which | ||||||
|  | -- is not what someone will guess without a bit more experience. | ||||||
|  | -- | ||||||
|  | -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping | ||||||
|  | -- or just use <C-\><C-n> to exit terminal mode | ||||||
|  | vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" }) | ||||||
|  | 
 | ||||||
|  | -- TIP: Disable arrow keys in normal mode | ||||||
|  | vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>') | ||||||
|  | 
 | ||||||
|  | -- Keybinds to make split navigation easier. | ||||||
|  | --  Use CTRL+<hjkl> to switch between windows | ||||||
|  | -- | ||||||
|  | --  See `:help wincmd` for a list of all window commands | ||||||
|  | vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" }) | ||||||
|  | vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" }) | ||||||
|  | vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" }) | ||||||
|  | vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" }) | ||||||
|  | 
 | ||||||
|  | -- [[ Basic Autocommands ]] | ||||||
|  | --  See `:help lua-guide-autocommands` | ||||||
|  | 
 | ||||||
|  | -- Highlight when yanking (copying) text | ||||||
|  | --  Try it with `yap` in normal mode | ||||||
|  | --  See `:help vim.highlight.on_yank()` | ||||||
|  | vim.api.nvim_create_autocmd("TextYankPost", { | ||||||
|  | 	desc = "Highlight when yanking (copying) text", | ||||||
|  | 	group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }), | ||||||
|  | 	callback = function() | ||||||
|  | 		vim.highlight.on_yank() | ||||||
|  | 	end, | ||||||
|  | }) | ||||||
|  | 
 | ||||||
|  | vim.keymap.set("n", "<leader>y", '"+y') | ||||||
|  | vim.keymap.set("n", "<leader>Y", '"+Y') | ||||||
|  | vim.keymap.set("v", "<leader>y", '"+y') | ||||||
|  | vim.keymap.set("v", "<leader>Y", '"+Y') | ||||||
|  | @ -1,49 +0,0 @@ | ||||||
| require("catppuccin").setup({ |  | ||||||
|     flavour = "mocha", -- latte, frappe, macchiato, mocha |  | ||||||
|     background = { -- :h background |  | ||||||
|         light = "latte", |  | ||||||
|         dark = "mocha", |  | ||||||
|     }, |  | ||||||
|     transparent_background = false, -- disables setting the background color. |  | ||||||
|     show_end_of_buffer = false, -- shows the '~' characters after the end of buffers |  | ||||||
|     term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`) |  | ||||||
|     dim_inactive = { |  | ||||||
|         enabled = false, -- dims the background color of inactive window |  | ||||||
|         shade = "dark", |  | ||||||
|         percentage = 0.15, -- percentage of the shade to apply to the inactive window |  | ||||||
|     }, |  | ||||||
|     no_italic = false, -- Force no italic |  | ||||||
|     no_bold = false, -- Force no bold |  | ||||||
|     no_underline = false, -- Force no underline |  | ||||||
|     styles = { -- Handles the styles of general hi groups (see `:h highlight-args`): |  | ||||||
|         comments = { "italic" }, -- Change the style of comments |  | ||||||
|         conditionals = { "italic" }, |  | ||||||
|         loops = {}, |  | ||||||
|         functions = {}, |  | ||||||
|         keywords = {}, |  | ||||||
|         strings = {}, |  | ||||||
|         variables = {}, |  | ||||||
|         numbers = {}, |  | ||||||
|         booleans = {}, |  | ||||||
|         properties = {}, |  | ||||||
|         types = {}, |  | ||||||
|         operators = {}, |  | ||||||
|     }, |  | ||||||
|     color_overrides = {}, |  | ||||||
|     custom_highlights = {}, |  | ||||||
|     integrations = { |  | ||||||
|         cmp = true, |  | ||||||
|         gitsigns = true, |  | ||||||
|         nvimtree = true, |  | ||||||
|         treesitter = true, |  | ||||||
|         notify = false, |  | ||||||
|         mini = { |  | ||||||
|             enabled = true, |  | ||||||
|             indentscope_color = "", |  | ||||||
|         }, |  | ||||||
|         -- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations) |  | ||||||
|     }, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| -- setup must be called before loading |  | ||||||
| vim.cmd.colorscheme "catppuccin" |  | ||||||
|  | @ -1,50 +0,0 @@ | ||||||
| -- [[ Configure nvim-cmp ]] |  | ||||||
| -- See `:help cmp` |  | ||||||
| local cmp = require 'cmp' |  | ||||||
| local luasnip = require 'luasnip' |  | ||||||
| require('luasnip.loaders.from_vscode').lazy_load() |  | ||||||
| luasnip.config.setup {} |  | ||||||
| 
 |  | ||||||
| cmp.setup { |  | ||||||
|   snippet = { |  | ||||||
|     expand = function(args) |  | ||||||
|       luasnip.lsp_expand(args.body) |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
|   completion = { |  | ||||||
|     completeopt = 'menu,menuone,noinsert', |  | ||||||
|   }, |  | ||||||
|   mapping = cmp.mapping.preset.insert { |  | ||||||
|     ['<C-n>'] = cmp.mapping.select_next_item(), |  | ||||||
|     ['<C-p>'] = cmp.mapping.select_prev_item(), |  | ||||||
|     ['<C-d>'] = cmp.mapping.scroll_docs(-4), |  | ||||||
|     ['<C-f>'] = cmp.mapping.scroll_docs(4), |  | ||||||
|     ['<C-Space>'] = cmp.mapping.complete {}, |  | ||||||
|     ['<CR>'] = cmp.mapping.confirm { |  | ||||||
|       behavior = cmp.ConfirmBehavior.Replace, |  | ||||||
|       select = true, |  | ||||||
|     }, |  | ||||||
|     ['<Tab>'] = cmp.mapping(function(fallback) |  | ||||||
|       if cmp.visible() then |  | ||||||
|         cmp.select_next_item() |  | ||||||
|       elseif luasnip.expand_or_locally_jumpable() then |  | ||||||
|         luasnip.expand_or_jump() |  | ||||||
|       else |  | ||||||
|         fallback() |  | ||||||
|       end |  | ||||||
|     end, { 'i', 's' }), |  | ||||||
|     ['<S-Tab>'] = cmp.mapping(function(fallback) |  | ||||||
|       if cmp.visible() then |  | ||||||
|         cmp.select_prev_item() |  | ||||||
|       elseif luasnip.locally_jumpable(-1) then |  | ||||||
|         luasnip.jump(-1) |  | ||||||
|       else |  | ||||||
|         fallback() |  | ||||||
|       end |  | ||||||
|     end, { 'i', 's' }), |  | ||||||
|   }, |  | ||||||
|   sources = { |  | ||||||
|     { name = 'nvim_lsp' }, |  | ||||||
|     { name = "supermaven" }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| local null_ls = require("null-ls") |  | ||||||
| local eslint = require("eslint") |  | ||||||
| 
 |  | ||||||
| null_ls.setup() |  | ||||||
| 
 |  | ||||||
| eslint.setup({ |  | ||||||
|   bin = 'eslint', -- or `eslint_d` |  | ||||||
|   code_actions = { |  | ||||||
|     enable = true, |  | ||||||
|     apply_on_save = { |  | ||||||
|       enable = true, |  | ||||||
|       types = { "directive", "problem", "suggestion", "layout" }, |  | ||||||
|     }, |  | ||||||
|     disable_rule_comment = { |  | ||||||
|       enable = true, |  | ||||||
|       location = "separate_line", -- or `same_line` |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   diagnostics = { |  | ||||||
|     enable = true, |  | ||||||
|     report_unused_disable_directives = false, |  | ||||||
|     run_on = "type", -- or `save` |  | ||||||
|   }, |  | ||||||
| }) |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| local harpoon = require("harpoon") |  | ||||||
| 
 |  | ||||||
| -- REQUIRED |  | ||||||
| harpoon:setup() |  | ||||||
| -- REQUIRED |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "<leader>h", function() harpoon:list():append() end) |  | ||||||
| vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "<C-hj>", function() harpoon:list():select(1) end) |  | ||||||
| vim.keymap.set("n", "<C-hk>", function() harpoon:list():select(2) end) |  | ||||||
| vim.keymap.set("n", "<C-hl>", function() harpoon:list():select(3) end) |  | ||||||
| vim.keymap.set("n", "<C-hö>", function() harpoon:list():select(4) end) |  | ||||||
| 
 |  | ||||||
| -- Toggle previous & next buffers stored within Harpoon list |  | ||||||
| vim.keymap.set("n", "<C-hp>", function() harpoon:list():prev() end) |  | ||||||
| vim.keymap.set("n", "<C-hn>", function() harpoon:list():next() end) |  | ||||||
|  | @ -1,11 +1,5 @@ | ||||||
| require("lorenz.remap") | require("lorenz.basic") | ||||||
| require("lorenz.set") | require("lorenz.lazy") | ||||||
| require("lorenz.kickstart") | require("lorenz.tree") | ||||||
| require("lorenz.nvim-tree") |  | ||||||
| require("lorenz.lsp") |  | ||||||
| require("lorenz.autoclose") | require("lorenz.autoclose") | ||||||
| require("lorenz.cmp") | require("lorenz.kickstarter") | ||||||
| require("lorenz.catppuccin") |  | ||||||
| require("lorenz.harpoon") |  | ||||||
| require("lorenz.lualine") |  | ||||||
| require("lorenz.eslint") |  | ||||||
|  |  | ||||||
|  | @ -1,517 +0,0 @@ | ||||||
| -- Set <space> as the leader key |  | ||||||
| -- See `:help mapleader` |  | ||||||
| --  NOTE: Must happen before plugins are required (otherwise wrong leader will be used) |  | ||||||
| vim.g.mapleader = ' ' |  | ||||||
| vim.g.maplocalleader = ' ' |  | ||||||
| 
 |  | ||||||
| -- [[ Install `lazy.nvim` plugin manager ]] |  | ||||||
| --    https://github.com/folke/lazy.nvim |  | ||||||
| --    `:help lazy.nvim.txt` for more info |  | ||||||
| local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' |  | ||||||
| if not vim.loop.fs_stat(lazypath) then |  | ||||||
|   vim.fn.system { |  | ||||||
|     'git', |  | ||||||
|     'clone', |  | ||||||
|     '--filter=blob:none', |  | ||||||
|     'https://github.com/folke/lazy.nvim.git', |  | ||||||
|     '--branch=stable', -- latest stable release |  | ||||||
|     lazypath, |  | ||||||
|   } |  | ||||||
| end |  | ||||||
| vim.opt.rtp:prepend(lazypath) |  | ||||||
| 
 |  | ||||||
| -- [[ Configure plugins ]] |  | ||||||
| require('lazy').setup({ |  | ||||||
|   "supermaven-inc/supermaven-nvim", |  | ||||||
|   'neovim/nvim-lspconfig', |  | ||||||
|   'jose-elias-alvarez/null-ls.nvim', |  | ||||||
|   'MunifTanjim/eslint.nvim', |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     'neoclide/coc.nvim', |  | ||||||
|     branch = 'release' |  | ||||||
|   }, |  | ||||||
|   -- autoclose |  | ||||||
|   'm4xshen/autoclose.nvim', |  | ||||||
| 
 |  | ||||||
|   -- Git related plugins |  | ||||||
|   'tpope/vim-fugitive', |  | ||||||
|   'tpope/vim-rhubarb', |  | ||||||
| 
 |  | ||||||
|   --templ |  | ||||||
|   'joerdav/templ.vim', |  | ||||||
| 
 |  | ||||||
|   -- vim font |  | ||||||
|   'ryanoasis/vim-devicons', |  | ||||||
| 
 |  | ||||||
|   -- Git Plugin |  | ||||||
|   { |  | ||||||
|     "tpope/vim-fugitive", |  | ||||||
|     cmd = "Git" |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- Detect tabstop and shiftwidth automatically |  | ||||||
|   'tpope/vim-sleuth', |  | ||||||
| 
 |  | ||||||
|   -- NOTE: This is where your plugins related to LSP can be installed. |  | ||||||
|   --  The configuration is done below. Search for lspconfig to find it below. |  | ||||||
|   { |  | ||||||
|     -- LSP Configuration & Plugins |  | ||||||
|     'neovim/nvim-lspconfig', |  | ||||||
|     dependencies = { |  | ||||||
|       -- Automatically install LSPs to stdpath for neovim |  | ||||||
|       'williamboman/mason.nvim', |  | ||||||
|       'williamboman/mason-lspconfig.nvim', |  | ||||||
| 
 |  | ||||||
|       -- Useful status updates for LSP |  | ||||||
|       -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` |  | ||||||
|       { 'j-hui/fidget.nvim', opts = {} }, |  | ||||||
| 
 |  | ||||||
|       -- Additional lua configuration, makes nvim stuff amazing! |  | ||||||
|       'folke/neodev.nvim', |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     -- Autocompletion |  | ||||||
|     'hrsh7th/nvim-cmp', |  | ||||||
|     dependencies = { |  | ||||||
|       -- Snippet Engine & its associated nvim-cmp source |  | ||||||
|       'L3MON4D3/LuaSnip', |  | ||||||
|       'saadparwaiz1/cmp_luasnip', |  | ||||||
| 
 |  | ||||||
|       -- Adds LSP completion capabilities |  | ||||||
|       'hrsh7th/cmp-nvim-lsp', |  | ||||||
| 
 |  | ||||||
|       -- Adds a number of user-friendly snippets |  | ||||||
|       'rafamadriz/friendly-snippets', |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- Useful plugin to show you pending keybinds. |  | ||||||
|   { 'folke/which-key.nvim',  opts = {} }, |  | ||||||
| 
 |  | ||||||
|   -- Tmux |  | ||||||
|   { |  | ||||||
|     "christoomey/vim-tmux-navigator", |  | ||||||
|     cmd = { |  | ||||||
|       "TmuxNavigateLeft", |  | ||||||
|       "TmuxNavigateDown", |  | ||||||
|       "TmuxNavigateUp", |  | ||||||
|       "TmuxNavigateRight", |  | ||||||
|       "TmuxNavigatePrevious", |  | ||||||
|     }, |  | ||||||
|     keys = { |  | ||||||
|       { "<c-h>",  "<cmd><C-U>TmuxNavigateLeft<cr>" }, |  | ||||||
|       { "<c-j>",  "<cmd><C-U>TmuxNavigateDown<cr>" }, |  | ||||||
|       { "<c-k>",  "<cmd><C-U>TmuxNavigateUp<cr>" }, |  | ||||||
|       { "<c-l>",  "<cmd><C-U>TmuxNavigateRight<cr>" }, |  | ||||||
|       { "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     -- Adds git related signs to the gutter, as well as utilities for managing changes |  | ||||||
|     'lewis6991/gitsigns.nvim', |  | ||||||
|     opts = { |  | ||||||
|       -- See `:help gitsigns.txt` |  | ||||||
|       signs = { |  | ||||||
|         add = { text = '+' }, |  | ||||||
|         change = { text = '~' }, |  | ||||||
|         delete = { text = '_' }, |  | ||||||
|         topdelete = { text = '‾' }, |  | ||||||
|         changedelete = { text = '~' }, |  | ||||||
|       }, |  | ||||||
|       on_attach = function(bufnr) |  | ||||||
|         vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) |  | ||||||
| 
 |  | ||||||
|         -- don't override the built-in and fugitive keymaps |  | ||||||
|         local gs = package.loaded.gitsigns |  | ||||||
|         vim.keymap.set({ 'n', 'v' }, ']c', function() |  | ||||||
|           if vim.wo.diff then |  | ||||||
|             return ']c' |  | ||||||
|           end |  | ||||||
|           vim.schedule(function() |  | ||||||
|             gs.next_hunk() |  | ||||||
|           end) |  | ||||||
|           return '<Ignore>' |  | ||||||
|         end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) |  | ||||||
|         vim.keymap.set({ 'n', 'v' }, '[c', function() |  | ||||||
|           if vim.wo.diff then |  | ||||||
|             return '[c' |  | ||||||
|           end |  | ||||||
|           vim.schedule(function() |  | ||||||
|             gs.prev_hunk() |  | ||||||
|           end) |  | ||||||
|           return '<Ignore>' |  | ||||||
|         end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) |  | ||||||
|       end, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     'catppuccin/nvim', |  | ||||||
|     name = 'catppuccin', |  | ||||||
|     priority = 1000, |  | ||||||
|     config = function() |  | ||||||
|       vim.cmd.colorscheme 'catppuccin' |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     "ThePrimeagen/harpoon", |  | ||||||
|     branch = "harpoon2", |  | ||||||
|     dependencies = { "nvim-lua/plenary.nvim" } |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- Set lualine as statusline |  | ||||||
|   'nvim-lualine/lualine.nvim', |  | ||||||
|   -- See `:help lualine.txt` |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     -- Add indentation guides even on blank lines |  | ||||||
|     'lukas-reineke/indent-blankline.nvim', |  | ||||||
|     -- Enable `lukas-reineke/indent-blankline.nvim` |  | ||||||
|     -- See `:help ibl` |  | ||||||
|     main = 'ibl', |  | ||||||
|     opts = {}, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- "gc" to comment visual regions/lines |  | ||||||
|   { 'numToStr/Comment.nvim', opts = {} }, |  | ||||||
| 
 |  | ||||||
|   -- Fuzzy Finder (files, lsp, etc) |  | ||||||
|   { |  | ||||||
|     'nvim-telescope/telescope.nvim', |  | ||||||
|     branch = '0.1.x', |  | ||||||
|     dependencies = { |  | ||||||
|       'nvim-lua/plenary.nvim', |  | ||||||
|       -- Fuzzy Finder Algorithm which requires local dependencies to be built. |  | ||||||
|       -- Only load if `make` is available. Make sure you have the system |  | ||||||
|       -- requirements installed. |  | ||||||
|       { |  | ||||||
|         'nvim-telescope/telescope-fzf-native.nvim', |  | ||||||
|         -- NOTE: If you are having trouble with this installation, |  | ||||||
|         --       refer to the README for telescope-fzf-native for more instructions. |  | ||||||
|         build = 'make', |  | ||||||
|         cond = function() |  | ||||||
|           return vim.fn.executable 'make' == 1 |  | ||||||
|         end, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     -- Highlight, edit, and navigate code |  | ||||||
|     'nvim-treesitter/nvim-treesitter', |  | ||||||
|     dependencies = { |  | ||||||
|       'nvim-treesitter/nvim-treesitter-textobjects', |  | ||||||
|     }, |  | ||||||
|     build = ':TSUpdate', |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart |  | ||||||
|   --       These are some example plugins that I've included in the kickstart repository. |  | ||||||
|   --       Uncomment any of the lines below to enable them. |  | ||||||
|   -- require 'kickstart.plugins.autoformat', |  | ||||||
|   -- require 'kickstart.plugins.debug', |  | ||||||
| 
 |  | ||||||
|   -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` |  | ||||||
|   --    You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping |  | ||||||
|   --    up-to-date with whatever is in the kickstart repo. |  | ||||||
|   --    Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. |  | ||||||
|   -- |  | ||||||
|   --    For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins |  | ||||||
|   -- { import = 'custom.plugins' }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     "nvim-tree/nvim-tree.lua", |  | ||||||
|     version = "*", |  | ||||||
|     lazy = false, |  | ||||||
|     dependencies = { |  | ||||||
|       "nvim-tree/nvim-web-devicons", |  | ||||||
|     }, |  | ||||||
|     config = function() |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { |  | ||||||
|     "mbbill/undotree", |  | ||||||
|     lazy = false |  | ||||||
|   }, |  | ||||||
| }, {}) |  | ||||||
| 
 |  | ||||||
| -- [[ Setting options ]] |  | ||||||
| -- See `:help vim.o` |  | ||||||
| -- NOTE: You can change these options as you wish! |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| -- [[ Basic Keymaps ]] |  | ||||||
| 
 |  | ||||||
| -- Keymaps for better default experience |  | ||||||
| -- See `:help vim.keymap.set()` |  | ||||||
| 
 |  | ||||||
| -- [[ Highlight on yank ]] |  | ||||||
| -- See `:help vim.highlight.on_yank()` |  | ||||||
| local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) |  | ||||||
| vim.api.nvim_create_autocmd('TextYankPost', { |  | ||||||
|   callback = function() |  | ||||||
|     vim.highlight.on_yank() |  | ||||||
|   end, |  | ||||||
|   group = highlight_group, |  | ||||||
|   pattern = '*', |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| -- [[ Configure Telescope ]] |  | ||||||
| -- See `:help telescope` and `:help telescope.setup()` |  | ||||||
| require('telescope').setup { |  | ||||||
|   defaults = { |  | ||||||
|     mappings = { |  | ||||||
|       i = { |  | ||||||
|         ['<C-u>'] = false, |  | ||||||
|         ['<C-d>'] = false, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| -- Enable telescope fzf native, if installed |  | ||||||
| pcall(require('telescope').load_extension, 'fzf') |  | ||||||
| 
 |  | ||||||
| -- Telescope live_grep in git root |  | ||||||
| -- Function to find the git root directory based on the current buffer's path |  | ||||||
| local function find_git_root() |  | ||||||
|   -- Use the current buffer's path as the starting point for the git search |  | ||||||
|   local current_file = vim.api.nvim_buf_get_name(0) |  | ||||||
|   local current_dir |  | ||||||
|   local cwd = vim.fn.getcwd() |  | ||||||
|   -- If the buffer is not associated with a file, return nil |  | ||||||
|   if current_file == '' then |  | ||||||
|     current_dir = cwd |  | ||||||
|   else |  | ||||||
|     -- Extract the directory from the current file's path |  | ||||||
|     current_dir = vim.fn.fnamemodify(current_file, ':h') |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   -- Find the Git root directory from the current file's path |  | ||||||
|   local git_root = vim.fn.systemlist('git -C ' .. vim.fn.escape(current_dir, ' ') .. ' rev-parse --show-toplevel')[1] |  | ||||||
|   if vim.v.shell_error ~= 0 then |  | ||||||
|     print 'Not a git repository. Searching on current working directory' |  | ||||||
|     return cwd |  | ||||||
|   end |  | ||||||
|   return git_root |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| -- Custom live_grep function to search in git root |  | ||||||
| local function live_grep_git_root() |  | ||||||
|   local git_root = find_git_root() |  | ||||||
|   if git_root then |  | ||||||
|     require('telescope.builtin').live_grep { |  | ||||||
|       search_dirs = { git_root }, |  | ||||||
|     } |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| vim.api.nvim_create_user_command('LiveGrepGitRoot', live_grep_git_root, {}) |  | ||||||
| 
 |  | ||||||
| -- See `:help telescope.builtin` |  | ||||||
| vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) |  | ||||||
| vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) |  | ||||||
| vim.keymap.set('n', '<leader>/', function() |  | ||||||
|   -- You can pass additional configuration to telescope to change theme, layout, etc. |  | ||||||
|   require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { |  | ||||||
|     winblend = 10, |  | ||||||
|     previewer = false, |  | ||||||
|   }) |  | ||||||
| end, { desc = '[/] Fuzzily search in current buffer' }) |  | ||||||
| 
 |  | ||||||
| vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) |  | ||||||
| vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) |  | ||||||
| vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) |  | ||||||
| vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) |  | ||||||
| vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) |  | ||||||
| vim.keymap.set('n', '<leader>sG', ':LiveGrepGitRoot<cr>', { desc = '[S]earch by [G]rep on Git Root' }) |  | ||||||
| vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) |  | ||||||
| vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) |  | ||||||
| 
 |  | ||||||
| -- [[ Configure Treesitter ]] |  | ||||||
| -- See `:help nvim-treesitter` |  | ||||||
| -- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}' |  | ||||||
| vim.defer_fn(function() |  | ||||||
|   require('nvim-treesitter.configs').setup { |  | ||||||
|     -- Add languages to be installed here that you want installed for treesitter |  | ||||||
|     ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'javascript', 'vimdoc', 'vim', 'bash' }, |  | ||||||
| 
 |  | ||||||
|     -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) |  | ||||||
|     auto_install = true, |  | ||||||
|     sync_install = false, |  | ||||||
|     ignore_install = {}, |  | ||||||
|     modules = {}, |  | ||||||
| 
 |  | ||||||
|     highlight = { enable = true }, |  | ||||||
|     indent = { enable = true }, |  | ||||||
|     incremental_selection = { |  | ||||||
|       enable = true, |  | ||||||
|       keymaps = { |  | ||||||
|         init_selection = '<c-space>', |  | ||||||
|         node_incremental = '<c-space>', |  | ||||||
|         scope_incremental = '<c-s>', |  | ||||||
|         node_decremental = '<M-space>', |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|     textobjects = { |  | ||||||
|       select = { |  | ||||||
|         enable = true, |  | ||||||
|         lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim |  | ||||||
|         keymaps = { |  | ||||||
|           -- You can use the capture groups defined in textobjects.scm |  | ||||||
|           ['aa'] = '@parameter.outer', |  | ||||||
|           ['ia'] = '@parameter.inner', |  | ||||||
|           ['af'] = '@function.outer', |  | ||||||
|           ['if'] = '@function.inner', |  | ||||||
|           ['ac'] = '@class.outer', |  | ||||||
|           ['ic'] = '@class.inner', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|       move = { |  | ||||||
|         enable = true, |  | ||||||
|         set_jumps = true, -- whether to set jumps in the jumplist |  | ||||||
|         goto_next_start = { |  | ||||||
|           [']m'] = '@function.outer', |  | ||||||
|           [']]'] = '@class.outer', |  | ||||||
|         }, |  | ||||||
|         goto_next_end = { |  | ||||||
|           [']M'] = '@function.outer', |  | ||||||
|           [']['] = '@class.outer', |  | ||||||
|         }, |  | ||||||
|         goto_previous_start = { |  | ||||||
|           ['[m'] = '@function.outer', |  | ||||||
|           ['[['] = '@class.outer', |  | ||||||
|         }, |  | ||||||
|         goto_previous_end = { |  | ||||||
|           ['[M'] = '@function.outer', |  | ||||||
|           ['[]'] = '@class.outer', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|       swap = { |  | ||||||
|         enable = true, |  | ||||||
|         swap_next = { |  | ||||||
|           ['<leader>a'] = '@parameter.inner', |  | ||||||
|         }, |  | ||||||
|         swap_previous = { |  | ||||||
|           ['<leader>A'] = '@parameter.inner', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   } |  | ||||||
| end, 0) |  | ||||||
| -- [[ Configure LSP ]] |  | ||||||
| --  This function gets run when an LSP connects to a particular buffer. |  | ||||||
| local on_attach = function(_, bufnr) |  | ||||||
|   -- NOTE: Remember that lua is a real programming language, and as such it is possible |  | ||||||
|   -- to define small helper and utility functions so you don't have to repeat yourself |  | ||||||
|   -- many times. |  | ||||||
|   -- |  | ||||||
|   -- In this case, we create a function that lets us more easily define mappings specific |  | ||||||
|   -- for LSP related items. It sets the mode, buffer and description for us each time. |  | ||||||
|   local nmap = function(keys, func, desc) |  | ||||||
|     if desc then |  | ||||||
|       desc = 'LSP: ' .. desc |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') |  | ||||||
|   nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') |  | ||||||
| 
 |  | ||||||
|   nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') |  | ||||||
|   nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') |  | ||||||
|   nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') |  | ||||||
|   nmap('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') |  | ||||||
|   nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') |  | ||||||
|   nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') |  | ||||||
| 
 |  | ||||||
|   -- See `:help K` for why this keymap |  | ||||||
|   nmap('K', vim.lsp.buf.hover, 'Hover Documentation') |  | ||||||
|   nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') |  | ||||||
| 
 |  | ||||||
|   -- Lesser used LSP functionality |  | ||||||
|   nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') |  | ||||||
|   nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') |  | ||||||
|   nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') |  | ||||||
|   nmap('<leader>wl', function() |  | ||||||
|     print(vim.inspect(vim.lsp.buf.list_workspace_folders())) |  | ||||||
|   end, '[W]orkspace [L]ist Folders') |  | ||||||
| 
 |  | ||||||
|   -- Create a command `:Format` local to the LSP buffer |  | ||||||
|   vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) |  | ||||||
|     vim.lsp.buf.format() |  | ||||||
|   end, { desc = 'Format current buffer with LSP' }) |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| -- document existing key chains |  | ||||||
| require('which-key').register { |  | ||||||
|   ['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>g'] = { name = '[G]it', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>h'] = { name = 'More git', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' }, |  | ||||||
|   ['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| -- mason-lspconfig requires that these setup functions are called in this order |  | ||||||
| -- before setting up the servers. |  | ||||||
| require('mason').setup() |  | ||||||
| require('mason-lspconfig').setup() |  | ||||||
| 
 |  | ||||||
| -- Enable the following language servers |  | ||||||
| --  Feel free to add/remove any LSPs that you want here. They will automatically be installed. |  | ||||||
| -- |  | ||||||
| --  Add any additional override configuration in the following tables. They will be passed to |  | ||||||
| --  the `settings` field of the server config. You must look up that documentation yourself. |  | ||||||
| -- |  | ||||||
| --  If you want to override the default filetypes that your language server will attach to you can |  | ||||||
| --  define the property 'filetypes' to the map in question. |  | ||||||
| local servers = { |  | ||||||
|   -- clangd = {}, |  | ||||||
|   -- gopls = {}, |  | ||||||
|   -- pyright = {}, |  | ||||||
|   -- rust_analyzer = {}, |  | ||||||
|   -- tsserver = {}, |  | ||||||
|   -- html = { filetypes = { 'html', 'twig', 'hbs'} }, |  | ||||||
| 
 |  | ||||||
|   lua_ls = { |  | ||||||
|     Lua = { |  | ||||||
|       workspace = { checkThirdParty = false }, |  | ||||||
|       telemetry = { enable = false }, |  | ||||||
|       -- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings |  | ||||||
|       -- diagnostics = { disable = { 'missing-fields' } }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| -- Setup neovim lua configuration |  | ||||||
| require('neodev').setup() |  | ||||||
| 
 |  | ||||||
| -- nvim-cmp supports additional completion capabilities, so broadcast that to servers |  | ||||||
| local capabilities = vim.lsp.protocol.make_client_capabilities() |  | ||||||
| capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) |  | ||||||
| 
 |  | ||||||
| -- Ensure the servers above are installed |  | ||||||
| local mason_lspconfig = require 'mason-lspconfig' |  | ||||||
| 
 |  | ||||||
| mason_lspconfig.setup { |  | ||||||
|   ensure_installed = vim.tbl_keys(servers), |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| mason_lspconfig.setup_handlers { |  | ||||||
|   function(server_name) |  | ||||||
|     require('lspconfig')[server_name].setup { |  | ||||||
|       capabilities = capabilities, |  | ||||||
|       on_attach = on_attach, |  | ||||||
|       settings = servers[server_name], |  | ||||||
|       filetypes = (servers[server_name] or {}).filetypes, |  | ||||||
|     } |  | ||||||
|   end, |  | ||||||
| } |  | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | -- The line beneath this is called `modeline`. See `:help modeline` | ||||||
|  | -- vim: ts=2 sts=2 sw=2 et | ||||||
|  | @ -0,0 +1,735 @@ | ||||||
|  | -- [[ Install `lazy.nvim` plugin manager ]] | ||||||
|  | --    See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info | ||||||
|  | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | ||||||
|  | if not (vim.uv or vim.loop).fs_stat(lazypath) then | ||||||
|  | 	local lazyrepo = "https://github.com/folke/lazy.nvim.git" | ||||||
|  | 	local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) | ||||||
|  | 	if vim.v.shell_error ~= 0 then | ||||||
|  | 		error("Error cloning lazy.nvim:\n" .. out) | ||||||
|  | 	end | ||||||
|  | end ---@diagnostic disable-next-line: undefined-field | ||||||
|  | vim.opt.rtp:prepend(lazypath) | ||||||
|  | 
 | ||||||
|  | require("lazy").setup({ | ||||||
|  | 
 | ||||||
|  | 	"m4xshen/autoclose.nvim", | ||||||
|  | 
 | ||||||
|  | 	{ | ||||||
|  | 		"nvim-tree/nvim-tree.lua", | ||||||
|  | 		version = "*", | ||||||
|  | 		lazy = false, | ||||||
|  | 		dependencies = { | ||||||
|  | 			"nvim-tree/nvim-web-devicons", | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	"tpope/vim-sleuth", -- Detect tabstop and shiftwidth automatically | ||||||
|  | 
 | ||||||
|  | 	{ -- Adds git related signs to the gutter, as well as utilities for managing changes | ||||||
|  | 		"lewis6991/gitsigns.nvim", | ||||||
|  | 		opts = { | ||||||
|  | 			signs = { | ||||||
|  | 				add = { text = "+" }, | ||||||
|  | 				change = { text = "~" }, | ||||||
|  | 				delete = { text = "_" }, | ||||||
|  | 				topdelete = { text = "‾" }, | ||||||
|  | 				changedelete = { text = "~" }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Useful plugin to show you pending keybinds. | ||||||
|  | 		"folke/which-key.nvim", | ||||||
|  | 		event = "VimEnter", -- Sets the loading event to 'VimEnter' | ||||||
|  | 		opts = { | ||||||
|  | 			icons = { | ||||||
|  | 				-- set icon mappings to true if you have a Nerd Font | ||||||
|  | 				mappings = vim.g.have_nerd_font, | ||||||
|  | 				-- If you are using a Nerd Font: set icons.keys to an empty table which will use the | ||||||
|  | 				-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table | ||||||
|  | 				keys = vim.g.have_nerd_font and {} or { | ||||||
|  | 					Up = "<Up> ", | ||||||
|  | 					Down = "<Down> ", | ||||||
|  | 					Left = "<Left> ", | ||||||
|  | 					Right = "<Right> ", | ||||||
|  | 					C = "<C-…> ", | ||||||
|  | 					M = "<M-…> ", | ||||||
|  | 					D = "<D-…> ", | ||||||
|  | 					S = "<S-…> ", | ||||||
|  | 					CR = "<CR> ", | ||||||
|  | 					Esc = "<Esc> ", | ||||||
|  | 					ScrollWheelDown = "<ScrollWheelDown> ", | ||||||
|  | 					ScrollWheelUp = "<ScrollWheelUp> ", | ||||||
|  | 					NL = "<NL> ", | ||||||
|  | 					BS = "<BS> ", | ||||||
|  | 					Space = "<Space> ", | ||||||
|  | 					Tab = "<Tab> ", | ||||||
|  | 					F1 = "<F1>", | ||||||
|  | 					F2 = "<F2>", | ||||||
|  | 					F3 = "<F3>", | ||||||
|  | 					F4 = "<F4>", | ||||||
|  | 					F5 = "<F5>", | ||||||
|  | 					F6 = "<F6>", | ||||||
|  | 					F7 = "<F7>", | ||||||
|  | 					F8 = "<F8>", | ||||||
|  | 					F9 = "<F9>", | ||||||
|  | 					F10 = "<F10>", | ||||||
|  | 					F11 = "<F11>", | ||||||
|  | 					F12 = "<F12>", | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 
 | ||||||
|  | 			-- Document existing key chains | ||||||
|  | 			spec = { | ||||||
|  | 				{ "<leader>c", group = "[C]ode", mode = { "n", "x" } }, | ||||||
|  | 				{ "<leader>d", group = "[D]ocument" }, | ||||||
|  | 				{ "<leader>r", group = "[R]ename" }, | ||||||
|  | 				{ "<leader>s", group = "[S]earch" }, | ||||||
|  | 				{ "<leader>w", group = "[W]orkspace" }, | ||||||
|  | 				{ "<leader>t", group = "[T]oggle" }, | ||||||
|  | 				{ "<leader>h", group = "Git [H]unk", mode = { "n", "v" } }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Fuzzy Finder (files, lsp, etc) | ||||||
|  | 		"nvim-telescope/telescope.nvim", | ||||||
|  | 		event = "VimEnter", | ||||||
|  | 		branch = "0.1.x", | ||||||
|  | 		dependencies = { | ||||||
|  | 			"nvim-lua/plenary.nvim", | ||||||
|  | 			{ -- If encountering errors, see telescope-fzf-native README for installation instructions | ||||||
|  | 				"nvim-telescope/telescope-fzf-native.nvim", | ||||||
|  | 
 | ||||||
|  | 				-- `build` is used to run some command when the plugin is installed/updated. | ||||||
|  | 				-- This is only run then, not every time Neovim starts up. | ||||||
|  | 				build = "make", | ||||||
|  | 
 | ||||||
|  | 				-- `cond` is a condition used to determine whether this plugin should be | ||||||
|  | 				-- installed and loaded. | ||||||
|  | 				cond = function() | ||||||
|  | 					return vim.fn.executable("make") == 1 | ||||||
|  | 				end, | ||||||
|  | 			}, | ||||||
|  | 			{ "nvim-telescope/telescope-ui-select.nvim" }, | ||||||
|  | 
 | ||||||
|  | 			-- Useful for getting pretty icons, but requires a Nerd Font. | ||||||
|  | 			{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- Telescope is a fuzzy finder that comes with a lot of different things that | ||||||
|  | 			-- it can fuzzy find! It's more than just a "file finder", it can search | ||||||
|  | 			-- many different aspects of Neovim, your workspace, LSP, and more! | ||||||
|  | 			-- | ||||||
|  | 			-- The easiest way to use Telescope, is to start by doing something like: | ||||||
|  | 			--  :Telescope help_tags | ||||||
|  | 			-- | ||||||
|  | 			-- After running this command, a window will open up and you're able to | ||||||
|  | 			-- type in the prompt window. You'll see a list of `help_tags` options and | ||||||
|  | 			-- a corresponding preview of the help. | ||||||
|  | 			-- | ||||||
|  | 			-- Two important keymaps to use while in Telescope are: | ||||||
|  | 			--  - Insert mode: <c-/> | ||||||
|  | 			--  - Normal mode: ? | ||||||
|  | 			-- | ||||||
|  | 			-- This opens a window that shows you all of the keymaps for the current | ||||||
|  | 			-- Telescope picker. This is really useful to discover what Telescope can | ||||||
|  | 			-- do as well as how to actually do it! | ||||||
|  | 
 | ||||||
|  | 			-- [[ Configure Telescope ]] | ||||||
|  | 			-- See `:help telescope` and `:help telescope.setup()` | ||||||
|  | 			require("telescope").setup({ | ||||||
|  | 				-- You can put your default mappings / updates / etc. in here | ||||||
|  | 				--  All the info you're looking for is in `:help telescope.setup()` | ||||||
|  | 				-- | ||||||
|  | 				-- defaults = { | ||||||
|  | 				--   mappings = { | ||||||
|  | 				--     i = { ['<c-enter>'] = 'to_fuzzy_refine' }, | ||||||
|  | 				--   }, | ||||||
|  | 				-- }, | ||||||
|  | 				-- pickers = {} | ||||||
|  | 				extensions = { | ||||||
|  | 					["ui-select"] = { | ||||||
|  | 						require("telescope.themes").get_dropdown(), | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 			-- Enable Telescope extensions if they are installed | ||||||
|  | 			pcall(require("telescope").load_extension, "fzf") | ||||||
|  | 			pcall(require("telescope").load_extension, "ui-select") | ||||||
|  | 
 | ||||||
|  | 			-- See `:help telescope.builtin` | ||||||
|  | 			local builtin = require("telescope.builtin") | ||||||
|  | 			vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) | ||||||
|  | 			vim.keymap.set("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" }) | ||||||
|  | 
 | ||||||
|  | 			-- Slightly advanced example of overriding default behavior and theme | ||||||
|  | 			vim.keymap.set("n", "<leader>/", function() | ||||||
|  | 				-- You can pass additional configuration to Telescope to change the theme, layout, etc. | ||||||
|  | 				builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ | ||||||
|  | 					winblend = 10, | ||||||
|  | 					previewer = false, | ||||||
|  | 				})) | ||||||
|  | 			end, { desc = "[/] Fuzzily search in current buffer" }) | ||||||
|  | 
 | ||||||
|  | 			-- It's also possible to pass additional configuration options. | ||||||
|  | 			--  See `:help telescope.builtin.live_grep()` for information about particular keys | ||||||
|  | 			vim.keymap.set("n", "<leader>s/", function() | ||||||
|  | 				builtin.live_grep({ | ||||||
|  | 					grep_open_files = true, | ||||||
|  | 					prompt_title = "Live Grep in Open Files", | ||||||
|  | 				}) | ||||||
|  | 			end, { desc = "[S]earch [/] in Open Files" }) | ||||||
|  | 
 | ||||||
|  | 			-- Shortcut for searching your Neovim configuration files | ||||||
|  | 			vim.keymap.set("n", "<leader>sn", function() | ||||||
|  | 				builtin.find_files({ cwd = vim.fn.stdpath("config") }) | ||||||
|  | 			end, { desc = "[S]earch [N]eovim files" }) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- LSP Plugins | ||||||
|  | 	{ | ||||||
|  | 		-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins | ||||||
|  | 		-- used for completion, annotations and signatures of Neovim apis | ||||||
|  | 		"folke/lazydev.nvim", | ||||||
|  | 		ft = "lua", | ||||||
|  | 		opts = { | ||||||
|  | 			library = { | ||||||
|  | 				-- Load luvit types when the `vim.uv` word is found | ||||||
|  | 				{ path = "luvit-meta/library", words = { "vim%.uv" } }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	{ "Bilal2453/luvit-meta", lazy = true }, | ||||||
|  | 	{ | ||||||
|  | 		-- Main LSP Configuration | ||||||
|  | 		"neovim/nvim-lspconfig", | ||||||
|  | 		dependencies = { | ||||||
|  | 			-- Automatically install LSPs and related tools to stdpath for Neovim | ||||||
|  | 			{ "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants | ||||||
|  | 			"williamboman/mason-lspconfig.nvim", | ||||||
|  | 			"WhoIsSethDaniel/mason-tool-installer.nvim", | ||||||
|  | 
 | ||||||
|  | 			-- Useful status updates for LSP. | ||||||
|  | 			-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` | ||||||
|  | 			{ "j-hui/fidget.nvim", opts = {} }, | ||||||
|  | 
 | ||||||
|  | 			-- Allows extra capabilities provided by nvim-cmp | ||||||
|  | 			"hrsh7th/cmp-nvim-lsp", | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- Brief aside: **What is LSP?** | ||||||
|  | 			-- | ||||||
|  | 			-- LSP is an initialism you've probably heard, but might not understand what it is. | ||||||
|  | 			-- | ||||||
|  | 			-- LSP stands for Language Server Protocol. It's a protocol that helps editors | ||||||
|  | 			-- and language tooling communicate in a standardized fashion. | ||||||
|  | 			-- | ||||||
|  | 			-- In general, you have a "server" which is some tool built to understand a particular | ||||||
|  | 			-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers | ||||||
|  | 			-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone | ||||||
|  | 			-- processes that communicate with some "client" - in this case, Neovim! | ||||||
|  | 			-- | ||||||
|  | 			-- LSP provides Neovim with features like: | ||||||
|  | 			--  - Go to definition | ||||||
|  | 			--  - Find references | ||||||
|  | 			--  - Autocompletion | ||||||
|  | 			--  - Symbol Search | ||||||
|  | 			--  - and more! | ||||||
|  | 			-- | ||||||
|  | 			-- Thus, Language Servers are external tools that must be installed separately from | ||||||
|  | 			-- Neovim. This is where `mason` and related plugins come into play. | ||||||
|  | 			-- | ||||||
|  | 			-- If you're wondering about lsp vs treesitter, you can check out the wonderfully | ||||||
|  | 			-- and elegantly composed help section, `:help lsp-vs-treesitter` | ||||||
|  | 
 | ||||||
|  | 			--  This function gets run when an LSP attaches to a particular buffer. | ||||||
|  | 			--    That is to say, every time a new file is opened that is associated with | ||||||
|  | 			--    an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this | ||||||
|  | 			--    function will be executed to configure the current buffer | ||||||
|  | 			vim.api.nvim_create_autocmd("LspAttach", { | ||||||
|  | 				group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), | ||||||
|  | 				callback = function(event) | ||||||
|  | 					-- NOTE: Remember that Lua is a real programming language, and as such it is possible | ||||||
|  | 					-- to define small helper and utility functions so you don't have to repeat yourself. | ||||||
|  | 					-- | ||||||
|  | 					-- In this case, we create a function that lets us more easily define mappings specific | ||||||
|  | 					-- for LSP related items. It sets the mode, buffer and description for us each time. | ||||||
|  | 					local map = function(keys, func, desc, mode) | ||||||
|  | 						mode = mode or "n" | ||||||
|  | 						vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) | ||||||
|  | 					end | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the definition of the word under your cursor. | ||||||
|  | 					--  This is where a variable was first declared, or where a function is defined, etc. | ||||||
|  | 					--  To jump back, press <C-t>. | ||||||
|  | 					map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") | ||||||
|  | 
 | ||||||
|  | 					-- Find references for the word under your cursor. | ||||||
|  | 					map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the implementation of the word under your cursor. | ||||||
|  | 					--  Useful when your language has ways of declaring types without an actual implementation. | ||||||
|  | 					map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the type of the word under your cursor. | ||||||
|  | 					--  Useful when you're not sure what type a variable is and you want to see | ||||||
|  | 					--  the definition of its *type*, not where it was *defined*. | ||||||
|  | 					map("<leader>D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") | ||||||
|  | 
 | ||||||
|  | 					-- Fuzzy find all the symbols in your current document. | ||||||
|  | 					--  Symbols are things like variables, functions, types, etc. | ||||||
|  | 					map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") | ||||||
|  | 
 | ||||||
|  | 					-- Fuzzy find all the symbols in your current workspace. | ||||||
|  | 					--  Similar to document symbols, except searches over your entire project. | ||||||
|  | 					map( | ||||||
|  | 						"<leader>ws", | ||||||
|  | 						require("telescope.builtin").lsp_dynamic_workspace_symbols, | ||||||
|  | 						"[W]orkspace [S]ymbols" | ||||||
|  | 					) | ||||||
|  | 
 | ||||||
|  | 					-- Rename the variable under your cursor. | ||||||
|  | 					--  Most Language Servers support renaming across files, etc. | ||||||
|  | 					map("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame") | ||||||
|  | 
 | ||||||
|  | 					-- Execute a code action, usually your cursor needs to be on top of an error | ||||||
|  | 					-- or a suggestion from your LSP for this to activate. | ||||||
|  | 					map("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" }) | ||||||
|  | 
 | ||||||
|  | 					-- WARN: This is not Goto Definition, this is Goto Declaration. | ||||||
|  | 					--  For example, in C this would take you to the header. | ||||||
|  | 					map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") | ||||||
|  | 
 | ||||||
|  | 					-- The following two autocommands are used to highlight references of the | ||||||
|  | 					-- word under your cursor when your cursor rests there for a little while. | ||||||
|  | 					--    See `:help CursorHold` for information about when this is executed | ||||||
|  | 					-- | ||||||
|  | 					-- When you move your cursor, the highlights will be cleared (the second autocommand). | ||||||
|  | 					local client = vim.lsp.get_client_by_id(event.data.client_id) | ||||||
|  | 					if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then | ||||||
|  | 						local highlight_augroup = | ||||||
|  | 							vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false }) | ||||||
|  | 						vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { | ||||||
|  | 							buffer = event.buf, | ||||||
|  | 							group = highlight_augroup, | ||||||
|  | 							callback = vim.lsp.buf.document_highlight, | ||||||
|  | 						}) | ||||||
|  | 
 | ||||||
|  | 						vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { | ||||||
|  | 							buffer = event.buf, | ||||||
|  | 							group = highlight_augroup, | ||||||
|  | 							callback = vim.lsp.buf.clear_references, | ||||||
|  | 						}) | ||||||
|  | 
 | ||||||
|  | 						vim.api.nvim_create_autocmd("LspDetach", { | ||||||
|  | 							group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }), | ||||||
|  | 							callback = function(event2) | ||||||
|  | 								vim.lsp.buf.clear_references() | ||||||
|  | 								vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf }) | ||||||
|  | 							end, | ||||||
|  | 						}) | ||||||
|  | 					end | ||||||
|  | 
 | ||||||
|  | 					-- The following code creates a keymap to toggle inlay hints in your | ||||||
|  | 					-- code, if the language server you are using supports them | ||||||
|  | 					-- | ||||||
|  | 					-- This may be unwanted, since they displace some of your code | ||||||
|  | 					if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then | ||||||
|  | 						map("<leader>th", function() | ||||||
|  | 							vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) | ||||||
|  | 						end, "[T]oggle Inlay [H]ints") | ||||||
|  | 					end | ||||||
|  | 				end, | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 			-- LSP servers and clients are able to communicate to each other what features they support. | ||||||
|  | 			--  By default, Neovim doesn't support everything that is in the LSP specification. | ||||||
|  | 			--  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. | ||||||
|  | 			--  So, we create new capabilities with nvim cmp, and then broadcast that to the servers. | ||||||
|  | 			local capabilities = vim.lsp.protocol.make_client_capabilities() | ||||||
|  | 			capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) | ||||||
|  | 
 | ||||||
|  | 			-- Enable the following language servers | ||||||
|  | 			--  Feel free to add/remove any LSPs that you want here. They will automatically be installed. | ||||||
|  | 			-- | ||||||
|  | 			--  Add any additional override configuration in the following tables. Available keys are: | ||||||
|  | 			--  - cmd (table): Override the default command used to start the server | ||||||
|  | 			--  - filetypes (table): Override the default list of associated filetypes for the server | ||||||
|  | 			--  - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. | ||||||
|  | 			--  - settings (table): Override the default settings passed when initializing the server. | ||||||
|  | 			--        For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ | ||||||
|  | 			local servers = { | ||||||
|  | 				-- clangd = {}, | ||||||
|  | 				-- gopls = {}, | ||||||
|  | 				-- pyright = {}, | ||||||
|  | 				-- rust_analyzer = {}, | ||||||
|  | 				-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs | ||||||
|  | 				-- | ||||||
|  | 				-- Some languages (like typescript) have entire language plugins that can be useful: | ||||||
|  | 				--    https://github.com/pmizio/typescript-tools.nvim | ||||||
|  | 				-- | ||||||
|  | 				-- But for many setups, the LSP (`ts_ls`) will work just fine | ||||||
|  | 				-- ts_ls = {}, | ||||||
|  | 				-- | ||||||
|  | 
 | ||||||
|  | 				lua_ls = { | ||||||
|  | 					-- cmd = {...}, | ||||||
|  | 					-- filetypes = { ...}, | ||||||
|  | 					-- capabilities = {}, | ||||||
|  | 					settings = { | ||||||
|  | 						Lua = { | ||||||
|  | 							completion = { | ||||||
|  | 								callSnippet = "Replace", | ||||||
|  | 							}, | ||||||
|  | 							-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings | ||||||
|  | 							-- diagnostics = { disable = { 'missing-fields' } }, | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			-- Ensure the servers and tools above are installed | ||||||
|  | 			--  To check the current status of installed tools and/or manually install | ||||||
|  | 			--  other tools, you can run | ||||||
|  | 			--    :Mason | ||||||
|  | 			-- | ||||||
|  | 			--  You can press `g?` for help in this menu. | ||||||
|  | 			require("mason").setup() | ||||||
|  | 
 | ||||||
|  | 			-- You can add other tools here that you want Mason to install | ||||||
|  | 			-- for you, so that they are available from within Neovim. | ||||||
|  | 			local ensure_installed = vim.tbl_keys(servers or {}) | ||||||
|  | 			vim.list_extend(ensure_installed, { | ||||||
|  | 				"stylua", -- Used to format Lua code | ||||||
|  | 			}) | ||||||
|  | 			require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) | ||||||
|  | 
 | ||||||
|  | 			require("mason-lspconfig").setup({ | ||||||
|  | 				handlers = { | ||||||
|  | 					function(server_name) | ||||||
|  | 						local server = servers[server_name] or {} | ||||||
|  | 						-- This handles overriding only values explicitly passed | ||||||
|  | 						-- by the server configuration above. Useful when disabling | ||||||
|  | 						-- certain features of an LSP (for example, turning off formatting for ts_ls) | ||||||
|  | 						server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) | ||||||
|  | 						require("lspconfig")[server_name].setup(server) | ||||||
|  | 					end, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Autoformat | ||||||
|  | 		"stevearc/conform.nvim", | ||||||
|  | 		event = { "BufWritePre" }, | ||||||
|  | 		cmd = { "ConformInfo" }, | ||||||
|  | 		keys = { | ||||||
|  | 			{ | ||||||
|  | 				"<leader>f", | ||||||
|  | 				function() | ||||||
|  | 					require("conform").format({ async = true, lsp_format = "fallback" }) | ||||||
|  | 				end, | ||||||
|  | 				mode = "", | ||||||
|  | 				desc = "[F]ormat buffer", | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		opts = { | ||||||
|  | 			notify_on_error = false, | ||||||
|  | 			format_on_save = function(bufnr) | ||||||
|  | 				-- Disable "format_on_save lsp_fallback" for languages that don't | ||||||
|  | 				-- have a well standardized coding style. You can add additional | ||||||
|  | 				-- languages here or re-enable it for the disabled ones. | ||||||
|  | 				local disable_filetypes = { c = true, cpp = true } | ||||||
|  | 				local lsp_format_opt | ||||||
|  | 				if disable_filetypes[vim.bo[bufnr].filetype] then | ||||||
|  | 					lsp_format_opt = "never" | ||||||
|  | 				else | ||||||
|  | 					lsp_format_opt = "fallback" | ||||||
|  | 				end | ||||||
|  | 				return { | ||||||
|  | 					timeout_ms = 500, | ||||||
|  | 					lsp_format = lsp_format_opt, | ||||||
|  | 				} | ||||||
|  | 			end, | ||||||
|  | 			formatters_by_ft = { | ||||||
|  | 				lua = { "stylua" }, | ||||||
|  | 				-- Conform can also run multiple formatters sequentially | ||||||
|  | 				-- python = { "isort", "black" }, | ||||||
|  | 				-- | ||||||
|  | 				-- You can use 'stop_after_first' to run the first available formatter from the list | ||||||
|  | 				-- javascript = { "prettierd", "prettier", stop_after_first = true }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Autocompletion | ||||||
|  | 		"hrsh7th/nvim-cmp", | ||||||
|  | 		event = "InsertEnter", | ||||||
|  | 		dependencies = { | ||||||
|  | 			-- Snippet Engine & its associated nvim-cmp source | ||||||
|  | 			{ | ||||||
|  | 				"L3MON4D3/LuaSnip", | ||||||
|  | 				build = (function() | ||||||
|  | 					-- Build Step is needed for regex support in snippets. | ||||||
|  | 					-- This step is not supported in many windows environments. | ||||||
|  | 					-- Remove the below condition to re-enable on windows. | ||||||
|  | 					if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then | ||||||
|  | 						return | ||||||
|  | 					end | ||||||
|  | 					return "make install_jsregexp" | ||||||
|  | 				end)(), | ||||||
|  | 				dependencies = { | ||||||
|  | 					-- `friendly-snippets` contains a variety of premade snippets. | ||||||
|  | 					--    See the README about individual language/framework/plugin snippets: | ||||||
|  | 					--    https://github.com/rafamadriz/friendly-snippets | ||||||
|  | 					-- { | ||||||
|  | 					--   'rafamadriz/friendly-snippets', | ||||||
|  | 					--   config = function() | ||||||
|  | 					--     require('luasnip.loaders.from_vscode').lazy_load() | ||||||
|  | 					--   end, | ||||||
|  | 					-- }, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			"saadparwaiz1/cmp_luasnip", | ||||||
|  | 
 | ||||||
|  | 			-- Adds other completion capabilities. | ||||||
|  | 			--  nvim-cmp does not ship with all sources by default. They are split | ||||||
|  | 			--  into multiple repos for maintenance purposes. | ||||||
|  | 			"hrsh7th/cmp-nvim-lsp", | ||||||
|  | 			"hrsh7th/cmp-path", | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- See `:help cmp` | ||||||
|  | 			local cmp = require("cmp") | ||||||
|  | 			local luasnip = require("luasnip") | ||||||
|  | 			luasnip.config.setup({}) | ||||||
|  | 
 | ||||||
|  | 			cmp.setup({ | ||||||
|  | 				snippet = { | ||||||
|  | 					expand = function(args) | ||||||
|  | 						luasnip.lsp_expand(args.body) | ||||||
|  | 					end, | ||||||
|  | 				}, | ||||||
|  | 				completion = { completeopt = "menu,menuone,noinsert" }, | ||||||
|  | 
 | ||||||
|  | 				-- For an understanding of why these mappings were | ||||||
|  | 				-- chosen, you will need to read `:help ins-completion` | ||||||
|  | 				-- | ||||||
|  | 				-- No, but seriously. Please read `:help ins-completion`, it is really good! | ||||||
|  | 				mapping = cmp.mapping.preset.insert({ | ||||||
|  | 					-- Select the [n]ext item | ||||||
|  | 					["<C-n>"] = cmp.mapping.select_next_item(), | ||||||
|  | 					-- Select the [p]revious item | ||||||
|  | 					["<C-p>"] = cmp.mapping.select_prev_item(), | ||||||
|  | 
 | ||||||
|  | 					-- Scroll the documentation window [b]ack / [f]orward | ||||||
|  | 					["<C-b>"] = cmp.mapping.scroll_docs(-4), | ||||||
|  | 					["<C-f>"] = cmp.mapping.scroll_docs(4), | ||||||
|  | 
 | ||||||
|  | 					-- Accept ([y]es) the completion. | ||||||
|  | 					--  This will auto-import if your LSP supports it. | ||||||
|  | 					--  This will expand snippets if the LSP sent a snippet. | ||||||
|  | 					["<CR>"] = cmp.mapping.confirm({ select = true }), | ||||||
|  | 
 | ||||||
|  | 					-- If you prefer more traditional completion keymaps, | ||||||
|  | 					-- you can uncomment the following lines | ||||||
|  | 					--['<CR>'] = cmp.mapping.confirm { select = true }, | ||||||
|  | 					--['<Tab>'] = cmp.mapping.select_next_item(), | ||||||
|  | 					--['<S-Tab>'] = cmp.mapping.select_prev_item(), | ||||||
|  | 
 | ||||||
|  | 					-- Manually trigger a completion from nvim-cmp. | ||||||
|  | 					--  Generally you don't need this, because nvim-cmp will display | ||||||
|  | 					--  completions whenever it has completion options available. | ||||||
|  | 					["<C-Space>"] = cmp.mapping.complete({}), | ||||||
|  | 
 | ||||||
|  | 					-- Think of <c-l> as moving to the right of your snippet expansion. | ||||||
|  | 					--  So if you have a snippet that's like: | ||||||
|  | 					--  function $name($args) | ||||||
|  | 					--    $body | ||||||
|  | 					--  end | ||||||
|  | 					-- | ||||||
|  | 					-- <c-l> will move you to the right of each of the expansion locations. | ||||||
|  | 					-- <c-h> is similar, except moving you backwards. | ||||||
|  | 					["<C-l>"] = cmp.mapping(function() | ||||||
|  | 						if luasnip.expand_or_locally_jumpable() then | ||||||
|  | 							luasnip.expand_or_jump() | ||||||
|  | 						end | ||||||
|  | 					end, { "i", "s" }), | ||||||
|  | 					["<C-h>"] = cmp.mapping(function() | ||||||
|  | 						if luasnip.locally_jumpable(-1) then | ||||||
|  | 							luasnip.jump(-1) | ||||||
|  | 						end | ||||||
|  | 					end, { "i", "s" }), | ||||||
|  | 
 | ||||||
|  | 					-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: | ||||||
|  | 					--    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps | ||||||
|  | 				}), | ||||||
|  | 				sources = { | ||||||
|  | 					{ | ||||||
|  | 						name = "lazydev", | ||||||
|  | 						-- set group index to 0 to skip loading LuaLS completions as lazydev recommends it | ||||||
|  | 						group_index = 0, | ||||||
|  | 					}, | ||||||
|  | 					{ name = "nvim_lsp" }, | ||||||
|  | 					{ name = "luasnip" }, | ||||||
|  | 					{ name = "path" }, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- You can easily change to a different colorscheme. | ||||||
|  | 		-- Change the name of the colorscheme plugin below, and then | ||||||
|  | 		-- change the command in the config to whatever the name of that colorscheme is. | ||||||
|  | 		-- | ||||||
|  | 		-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. | ||||||
|  | 		"folke/tokyonight.nvim", | ||||||
|  | 		priority = 1000, -- Make sure to load this before all the other start plugins. | ||||||
|  | 		init = function() | ||||||
|  | 			-- Load the colorscheme here. | ||||||
|  | 			-- Like many other themes, this one has different styles, and you could load | ||||||
|  | 			-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. | ||||||
|  | 			vim.cmd.colorscheme("tokyonight-night") | ||||||
|  | 
 | ||||||
|  | 			-- You can configure highlights by doing something like: | ||||||
|  | 			vim.cmd.hi("Comment gui=none") | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- Highlight todo, notes, etc in comments | ||||||
|  | 	{ | ||||||
|  | 		"folke/todo-comments.nvim", | ||||||
|  | 		event = "VimEnter", | ||||||
|  | 		dependencies = { "nvim-lua/plenary.nvim" }, | ||||||
|  | 		opts = { signs = false }, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Collection of various small independent plugins/modules | ||||||
|  | 		"echasnovski/mini.nvim", | ||||||
|  | 		config = function() | ||||||
|  | 			-- Better Around/Inside textobjects | ||||||
|  | 			-- | ||||||
|  | 			-- Examples: | ||||||
|  | 			--  - va)  - [V]isually select [A]round [)]paren | ||||||
|  | 			--  - yinq - [Y]ank [I]nside [N]ext [Q]uote | ||||||
|  | 			--  - ci'  - [C]hange [I]nside [']quote | ||||||
|  | 			require("mini.ai").setup({ n_lines = 500 }) | ||||||
|  | 
 | ||||||
|  | 			-- Add/delete/replace surroundings (brackets, quotes, etc.) | ||||||
|  | 			-- | ||||||
|  | 			-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren | ||||||
|  | 			-- - sd'   - [S]urround [D]elete [']quotes | ||||||
|  | 			-- - sr)'  - [S]urround [R]eplace [)] ['] | ||||||
|  | 			require("mini.surround").setup() | ||||||
|  | 
 | ||||||
|  | 			-- Simple and easy statusline. | ||||||
|  | 			--  You could remove this setup call if you don't like it, | ||||||
|  | 			--  and try some other statusline plugin | ||||||
|  | 			local statusline = require("mini.statusline") | ||||||
|  | 			-- set use_icons to true if you have a Nerd Font | ||||||
|  | 			statusline.setup({ use_icons = vim.g.have_nerd_font }) | ||||||
|  | 
 | ||||||
|  | 			-- You can configure sections in the statusline by overriding their | ||||||
|  | 			-- default behavior. For example, here we set the section for | ||||||
|  | 			-- cursor location to LINE:COLUMN | ||||||
|  | 			---@diagnostic disable-next-line: duplicate-set-field | ||||||
|  | 			statusline.section_location = function() | ||||||
|  | 				return "%2l:%-2v" | ||||||
|  | 			end | ||||||
|  | 
 | ||||||
|  | 			-- ... and there is more! | ||||||
|  | 			--  Check out: https://github.com/echasnovski/mini.nvim | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 	{ -- Highlight, edit, and navigate code | ||||||
|  | 		"nvim-treesitter/nvim-treesitter", | ||||||
|  | 		build = ":TSUpdate", | ||||||
|  | 		main = "nvim-treesitter.configs", -- Sets main module to use for opts | ||||||
|  | 		-- [[ Configure Treesitter ]] See `:help nvim-treesitter` | ||||||
|  | 		opts = { | ||||||
|  | 			ensure_installed = { | ||||||
|  | 				"bash", | ||||||
|  | 				"c", | ||||||
|  | 				"diff", | ||||||
|  | 				"html", | ||||||
|  | 				"lua", | ||||||
|  | 				"luadoc", | ||||||
|  | 				"markdown", | ||||||
|  | 				"markdown_inline", | ||||||
|  | 				"query", | ||||||
|  | 				"vim", | ||||||
|  | 				"vimdoc", | ||||||
|  | 			}, | ||||||
|  | 			-- Autoinstall languages that are not installed | ||||||
|  | 			auto_install = true, | ||||||
|  | 			highlight = { | ||||||
|  | 				enable = true, | ||||||
|  | 				-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. | ||||||
|  | 				--  If you are experiencing weird indenting issues, add the language to | ||||||
|  | 				--  the list of additional_vim_regex_highlighting and disabled languages for indent. | ||||||
|  | 				additional_vim_regex_highlighting = { "ruby" }, | ||||||
|  | 			}, | ||||||
|  | 			indent = { enable = true, disable = { "ruby" } }, | ||||||
|  | 		}, | ||||||
|  | 		-- There are additional nvim-treesitter modules that you can use to interact | ||||||
|  | 		-- with nvim-treesitter. You should go explore a few and see what interests you: | ||||||
|  | 		-- | ||||||
|  | 		--    - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` | ||||||
|  | 		--    - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context | ||||||
|  | 		--    - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the | ||||||
|  | 	-- init.lua. If you want these files, they are in the repository, so you can just download them and | ||||||
|  | 	-- place them in the correct locations. | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart | ||||||
|  | 	-- | ||||||
|  | 	--  Here are some example plugins that I've included in the Kickstart repository. | ||||||
|  | 	--  Uncomment any of the lines below to enable them (you will need to restart nvim). | ||||||
|  | 	-- | ||||||
|  | 	-- require 'kickstart.plugins.debug', | ||||||
|  | 	-- require 'kickstart.plugins.indent_line', | ||||||
|  | 	-- require 'kickstart.plugins.lint', | ||||||
|  | 	-- require 'kickstart.plugins.autopairs', | ||||||
|  | 	-- require 'kickstart.plugins.neo-tree', | ||||||
|  | 	-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` | ||||||
|  | 	--    This is the easiest way to modularize your config. | ||||||
|  | 	-- | ||||||
|  | 	--  Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. | ||||||
|  | 	--    For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins` | ||||||
|  | 	-- { import = 'custom.plugins' }, | ||||||
|  | }, { | ||||||
|  | 	ui = { | ||||||
|  | 		-- If you are using a Nerd Font: set icons to an empty table which will use the | ||||||
|  | 		-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table | ||||||
|  | 		icons = vim.g.have_nerd_font and {} or { | ||||||
|  | 			cmd = "⌘", | ||||||
|  | 			config = "🛠", | ||||||
|  | 			event = "📅", | ||||||
|  | 			ft = "📂", | ||||||
|  | 			init = "⚙", | ||||||
|  | 			keys = "🗝", | ||||||
|  | 			plugin = "🔌", | ||||||
|  | 			runtime = "💻", | ||||||
|  | 			require = "🌙", | ||||||
|  | 			source = "📄", | ||||||
|  | 			start = "🚀", | ||||||
|  | 			task = "📌", | ||||||
|  | 			lazy = "💤 ", | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | }) | ||||||
|  | @ -1,54 +0,0 @@ | ||||||
| local lspconfig = require('lspconfig') |  | ||||||
| local lastRootPath = nil |  | ||||||
| local gomodpath = vim.trim(vim.fn.system("go env GOPATH")) .. "/pkg/mod" |  | ||||||
| 
 |  | ||||||
| lspconfig.gopls.setup({ |  | ||||||
|   root_dir = function(fname) |  | ||||||
|     local fullpath = vim.fn.expand(fname, ":p") |  | ||||||
|     if string.find(fullpath, gomodpath) and lastRootPath ~= nil then |  | ||||||
|         return lastRootPath |  | ||||||
|     end |  | ||||||
|     local root = lspconfig.util.root_pattern("go.mod", ".git")(fname) |  | ||||||
|     if root ~= nil then |  | ||||||
|         lastRootPath = root |  | ||||||
|     end |  | ||||||
|     return root |  | ||||||
|   end, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| lspconfig.templ.setup{ |  | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| lspconfig.tailwindcss.setup({ |  | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
|   filetypes = { "templ", "astro", "javascript", "typescript", "react" }, |  | ||||||
|   init_options = { userLanguages = { templ = "html" } }, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| lspconfig.html.setup({ |  | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
|   filetypes = { "html", "templ" }, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| lspconfig.htmx.setup({ |  | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
|   filetypes = { "html", "templ" }, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| lspconfig.unocss.setup{ |  | ||||||
|   on_attach = on_attach, |  | ||||||
|   capabilities = capabilities, |  | ||||||
|   filetypes = { "html", "javascriptreact", "rescript", "typescriptreact", "vue", "svelte", "templ"} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| lspconfig.gdscript.setup{ |  | ||||||
|     on_attach = on_attach, |  | ||||||
|     flags = { |  | ||||||
|       debounce_text_changes = 150, |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | @ -1,66 +0,0 @@ | ||||||
| local modes = { |  | ||||||
|   ["n"] = "NORMAL", |  | ||||||
|   ["no"] = "NORMAL", |  | ||||||
|   ["v"] = "VISUAL", |  | ||||||
|   ["V"] = "VISUAL LINE", |  | ||||||
|   ["s"] = "SELECT", |  | ||||||
|   ["S"] = "SELECT LINE", |  | ||||||
|   ["i"] = "INSERT", |  | ||||||
|   ["ic"] = "INSERT", |  | ||||||
|   ["R"] = "REPLACE", |  | ||||||
|   ["Rv"] = "VISUAL REPLACE", |  | ||||||
|   ["c"] = "COMMAND", |  | ||||||
|   ["cv"] = "VIM EX", |  | ||||||
|   ["ce"] = "EX", |  | ||||||
|   ["r"] = "PROMPT", |  | ||||||
|   ["rm"] = "MOAR", |  | ||||||
|   ["r?"] = "CONFIRM", |  | ||||||
|   ["!"] = "SHELL", |  | ||||||
|   ["t"] = "TERMINAL", |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| local function mode() |  | ||||||
|   local current_mode = vim.api.nvim_get_mode().mode |  | ||||||
|   return string.format(" %s", modes[current_mode]):upper() |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| require('lualine').setup { |  | ||||||
|   options = { |  | ||||||
|     icons_enabled = true, |  | ||||||
|     theme = 'onedark', |  | ||||||
|     component_separators = { left = '/', right = '|'}, |  | ||||||
|     section_separators = { left = '', right = ''}, |  | ||||||
|     disabled_filetypes = { |  | ||||||
|       statusline = {}, |  | ||||||
|       winbar = {}, |  | ||||||
|     }, |  | ||||||
|     ignore_focus = {}, |  | ||||||
|     always_divide_middle = true, |  | ||||||
|     globalstatus = false, |  | ||||||
|     refresh = { |  | ||||||
|       statusline = 1000, |  | ||||||
|       tabline = 1000, |  | ||||||
|       winbar = 1000, |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   sections = { |  | ||||||
|     lualine_a = { mode,  }, |  | ||||||
|     lualine_b = {'branch', 'diff', 'diagnostics'}, |  | ||||||
|     lualine_c = {'filename'}, |  | ||||||
|     lualine_x = {'encoding', 'fileformat', 'filetype'}, |  | ||||||
|     lualine_y = {'progress'}, |  | ||||||
|     lualine_z = {'location'} |  | ||||||
|   }, |  | ||||||
|   inactive_sections = { |  | ||||||
|     lualine_a = {}, |  | ||||||
|     lualine_b = {}, |  | ||||||
|     lualine_c = {'filename'}, |  | ||||||
|     lualine_x = {'location'}, |  | ||||||
|     lualine_y = {}, |  | ||||||
|     lualine_z = {} |  | ||||||
|   }, |  | ||||||
|   tabline = {}, |  | ||||||
|   winbar = {}, |  | ||||||
|   inactive_winbar = {}, |  | ||||||
|   extensions = {} |  | ||||||
| } |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| local function my_on_attach(bufnr) |  | ||||||
|   local api = require "nvim-tree.api" |  | ||||||
| 
 |  | ||||||
|   local function opts(desc) |  | ||||||
|     return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   -- default mappings |  | ||||||
|   api.config.mappings.default_on_attach(bufnr) |  | ||||||
| 
 |  | ||||||
|   -- custom mappings |  | ||||||
|   vim.keymap.set('n', '<C-t>', api.tree.change_root_to_parent,        opts('Up')) |  | ||||||
|   vim.keymap.set('n', '?',     api.tree.toggle_help,                  opts('Help')) |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| require("nvim-tree").setup { |  | ||||||
|   on_attach = my_on_attach, |  | ||||||
|     actions = { |  | ||||||
|     open_file = { |  | ||||||
|       quit_on_open = true, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1,33 +0,0 @@ | ||||||
| vim.g.mapleader = " " |  | ||||||
| 
 |  | ||||||
| vim.keymap.set('n', '<leader>t', '<cmd>NvimTreeOpen<CR>') |  | ||||||
| vim.keymap.set('n', '<leader>qt', '<cmd>NvimTreeToggle<CR>') |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") |  | ||||||
| vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "n", "nzzzv") |  | ||||||
| vim.keymap.set("n", "N", "Nzzzv") |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "<leader>y", "\"+y") |  | ||||||
| vim.keymap.set("v", "<leader>y", "\"+y") |  | ||||||
| vim.keymap.set("n", "<leader>Y", "\"+Y") |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle) |  | ||||||
| 
 |  | ||||||
| vim.keymap.set("n", "ö", "$") |  | ||||||
| vim.keymap.set("v", "ö", "$") |  | ||||||
| 
 |  | ||||||
| vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) |  | ||||||
| 
 |  | ||||||
| -- Remap for dealing with word wrap |  | ||||||
| vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) |  | ||||||
| vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) |  | ||||||
| 
 |  | ||||||
| -- Diagnostic keymaps |  | ||||||
| vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) |  | ||||||
| vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) |  | ||||||
| vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) |  | ||||||
| vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) |  | ||||||
| 
 |  | ||||||
| vim.keymap.set('n', '<leader>F', ":Format<CR>") |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| vim.opt.nu = true |  | ||||||
| vim.opt.relativenumber = true |  | ||||||
| 
 |  | ||||||
| vim.opt.smartindent = true |  | ||||||
| 
 |  | ||||||
| -- set termguicolors to enable highlight groups |  | ||||||
| vim.opt.termguicolors = true |  | ||||||
| vim.wo.wrap = false |  | ||||||
| vim.opt.tabstop = 2 |  | ||||||
| vim.opt.shiftwidth = 2 |  | ||||||
| vim.opt.softtabstop = 2 |  | ||||||
| 
 |  | ||||||
| --scroll |  | ||||||
| vim.opt.scrolloff = 8 |  | ||||||
| 
 |  | ||||||
| vim.opt.updatetime = 50 |  | ||||||
| 
 |  | ||||||
| -- Set highlight on search |  | ||||||
| vim.o.hlsearch = false |  | ||||||
| 
 |  | ||||||
| -- Make line numbers default |  | ||||||
| vim.wo.number = true |  | ||||||
| 
 |  | ||||||
| -- Enable mouse mode |  | ||||||
| vim.o.mouse = 'a' |  | ||||||
| 
 |  | ||||||
| -- Enable break indent |  | ||||||
| vim.o.breakindent = true |  | ||||||
| 
 |  | ||||||
| -- Save undo history |  | ||||||
| vim.o.undofile = true |  | ||||||
| 
 |  | ||||||
| -- Case-insensitive searching UNLESS \C or capital in search |  | ||||||
| vim.o.ignorecase = true |  | ||||||
| vim.o.smartcase = true |  | ||||||
| 
 |  | ||||||
| -- Keep signcolumn on by default |  | ||||||
| vim.wo.signcolumn = 'yes' |  | ||||||
| 
 |  | ||||||
| -- Decrease update time |  | ||||||
| vim.o.updatetime = 250 |  | ||||||
| vim.o.timeoutlen = 300 |  | ||||||
| 
 |  | ||||||
| -- Set completeopt to have a better completion experience |  | ||||||
| vim.o.completeopt = 'menuone,noselect' |  | ||||||
| 
 |  | ||||||
| -- NOTE: You should make sure your terminal supports this |  | ||||||
| vim.o.termguicolors = true |  | ||||||
| 
 |  | ||||||
| vim.o.errorbells = false |  | ||||||
| vim.o.visualbell = true |  | ||||||
| vim.o.timeoutlen = 500 |  | ||||||
|  | @ -0,0 +1,37 @@ | ||||||
|  | local function my_on_attach(bufnr) | ||||||
|  | 	local api = require("nvim-tree.api") | ||||||
|  | 
 | ||||||
|  | 	local function opts(desc) | ||||||
|  | 		return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } | ||||||
|  | 	end | ||||||
|  | 
 | ||||||
|  | 	-- default mappings | ||||||
|  | 	api.config.mappings.default_on_attach(bufnr) | ||||||
|  | 
 | ||||||
|  | 	-- custom mappings | ||||||
|  | 	vim.keymap.set("n", "<C-t>", api.tree.change_root_to_parent, opts("Up")) | ||||||
|  | 	vim.keymap.set("n", "?", api.tree.toggle_help, opts("Help")) | ||||||
|  | 	vim.keymap.set("n", "<leader>t", "<cmd>NvimTreeOpen<CR>") | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | -- pass to setup along with your other options | ||||||
|  | require("nvim-tree").setup({ | ||||||
|  | 	on_attach = my_on_attach, | ||||||
|  | 	actions = { | ||||||
|  | 		open_file = { | ||||||
|  | 			quit_on_open = true, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	sort = { | ||||||
|  | 		sorter = "case_sensitive", | ||||||
|  | 	}, | ||||||
|  | 	view = { | ||||||
|  | 		width = 30, | ||||||
|  | 	}, | ||||||
|  | 	renderer = { | ||||||
|  | 		group_empty = true, | ||||||
|  | 	}, | ||||||
|  | 	filters = { | ||||||
|  | 		dotfiles = false, | ||||||
|  | 	}, | ||||||
|  | }) | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| if has("persistent_undo") |  | ||||||
|    let target_path = expand('~/.undodir') |  | ||||||
| 
 |  | ||||||
|     " create the directory and any parent directories |  | ||||||
|     " if the location does not exist. |  | ||||||
|     if !isdirectory(target_path) |  | ||||||
|         call mkdir(target_path, "p", 0700) |  | ||||||
|     endif |  | ||||||
| 
 |  | ||||||
|     let &undodir=target_path |  | ||||||
|     set undofile |  | ||||||
| endif |  | ||||||
		Loading…
	
		Reference in New Issue