From ae7d9bf4b6e7eddb13710d7912e4f2514225aa96 Mon Sep 17 00:00:00 2001 From: "Mariano Z." Date: Sat, 21 Dec 2024 11:22:16 -0300 Subject: [PATCH] batman! --- .stylua.toml | 5 + LICENSE | 21 +++ README.md | 17 ++ init.lua | 5 + lazy-lock.json | 57 ++++++ lua/config/autocomands.lua | 71 ++++++++ lua/config/lazy.lua | 53 ++++++ lua/config/lsp/gopls.lua | 15 ++ lua/config/lsp/html.lua | 3 + lua/config/lsp/htmx.lua | 3 + lua/config/lsp/jsonls.lua | 16 ++ lua/config/lsp/lua_ls.lua | 22 +++ lua/config/lsp/omnisharp.lua | 7 + lua/config/lsp/yamlls.lua | 21 +++ lua/config/options.lua | 119 +++++++++++++ lua/config/plugins/ai.lua | 25 +++ lua/config/plugins/alpha.lua | 15 ++ lua/config/plugins/blankline.lua | 31 ++++ lua/config/plugins/chezmoi.lua | 35 ++++ lua/config/plugins/colorizer.lua | 31 ++++ lua/config/plugins/colors.lua | 32 ++++ lua/config/plugins/comments.lua | 38 ++++ lua/config/plugins/completion.lua | 42 +++++ lua/config/plugins/db.lua | 18 ++ lua/config/plugins/diagnostics.lua | 121 +++++++++++++ lua/config/plugins/env.lua | 59 +++++++ lua/config/plugins/flash.lua | 22 +++ lua/config/plugins/fold.lua | 53 ++++++ lua/config/plugins/format.lua | 38 ++++ lua/config/plugins/fzf.lua | 72 ++++++++ lua/config/plugins/git.lua | 47 +++++ lua/config/plugins/harpoon.lua | 35 ++++ lua/config/plugins/lastplace.lua | 3 + lua/config/plugins/lint.lua | 44 +++++ lua/config/plugins/lsp/extras/gopher.lua | 13 ++ lua/config/plugins/lsp/extras/lazydev.lua | 9 + lua/config/plugins/lsp/extras/typescript.lua | 10 ++ lua/config/plugins/lsp/init.lua | 139 +++++++++++++++ lua/config/plugins/lsp/servers/gopls.lua | 15 ++ lua/config/plugins/lsp/servers/html.lua | 3 + lua/config/plugins/lsp/servers/htmx.lua | 3 + lua/config/plugins/lsp/servers/jsonls.lua | 16 ++ lua/config/plugins/lsp/servers/lua_ls.lua | 21 +++ lua/config/plugins/lsp/servers/omnisharp.lua | 7 + lua/config/plugins/lsp/servers/yamlls.lua | 21 +++ lua/config/plugins/markdown.lua | 20 +++ lua/config/plugins/mini.lua | 24 +++ lua/config/plugins/navic.lua | 19 ++ lua/config/plugins/noice.lua | 93 ++++++++++ lua/config/plugins/oil.lua | 69 ++++++++ lua/config/plugins/schema.lua | 7 + lua/config/plugins/scroll.lua | 41 +++++ lua/config/plugins/snips.lua | 20 +++ lua/config/plugins/spectre.lua | 22 +++ lua/config/plugins/status.lua | 66 +++++++ lua/config/plugins/sudo.lua | 4 + lua/config/plugins/tpope.lua | 9 + lua/config/plugins/treesitter.lua | 24 +++ lua/config/plugins/ui.lua | 9 + lua/config/plugins/undo.lua | 12 ++ lua/config/remap.lua | 91 ++++++++++ lua/config/utils.lua | 177 +++++++++++++++++++ pic.jpg | Bin 0 -> 205448 bytes 63 files changed, 2160 insertions(+) create mode 100644 .stylua.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 init.lua create mode 100644 lazy-lock.json create mode 100644 lua/config/autocomands.lua create mode 100644 lua/config/lazy.lua create mode 100644 lua/config/lsp/gopls.lua create mode 100644 lua/config/lsp/html.lua create mode 100644 lua/config/lsp/htmx.lua create mode 100644 lua/config/lsp/jsonls.lua create mode 100644 lua/config/lsp/lua_ls.lua create mode 100644 lua/config/lsp/omnisharp.lua create mode 100644 lua/config/lsp/yamlls.lua create mode 100644 lua/config/options.lua create mode 100644 lua/config/plugins/ai.lua create mode 100644 lua/config/plugins/alpha.lua create mode 100644 lua/config/plugins/blankline.lua create mode 100644 lua/config/plugins/chezmoi.lua create mode 100644 lua/config/plugins/colorizer.lua create mode 100644 lua/config/plugins/colors.lua create mode 100644 lua/config/plugins/comments.lua create mode 100644 lua/config/plugins/completion.lua create mode 100644 lua/config/plugins/db.lua create mode 100644 lua/config/plugins/diagnostics.lua create mode 100644 lua/config/plugins/env.lua create mode 100644 lua/config/plugins/flash.lua create mode 100644 lua/config/plugins/fold.lua create mode 100644 lua/config/plugins/format.lua create mode 100644 lua/config/plugins/fzf.lua create mode 100644 lua/config/plugins/git.lua create mode 100644 lua/config/plugins/harpoon.lua create mode 100644 lua/config/plugins/lastplace.lua create mode 100644 lua/config/plugins/lint.lua create mode 100644 lua/config/plugins/lsp/extras/gopher.lua create mode 100644 lua/config/plugins/lsp/extras/lazydev.lua create mode 100644 lua/config/plugins/lsp/extras/typescript.lua create mode 100644 lua/config/plugins/lsp/init.lua create mode 100644 lua/config/plugins/lsp/servers/gopls.lua create mode 100644 lua/config/plugins/lsp/servers/html.lua create mode 100644 lua/config/plugins/lsp/servers/htmx.lua create mode 100644 lua/config/plugins/lsp/servers/jsonls.lua create mode 100644 lua/config/plugins/lsp/servers/lua_ls.lua create mode 100644 lua/config/plugins/lsp/servers/omnisharp.lua create mode 100644 lua/config/plugins/lsp/servers/yamlls.lua create mode 100644 lua/config/plugins/markdown.lua create mode 100644 lua/config/plugins/mini.lua create mode 100644 lua/config/plugins/navic.lua create mode 100644 lua/config/plugins/noice.lua create mode 100644 lua/config/plugins/oil.lua create mode 100644 lua/config/plugins/schema.lua create mode 100644 lua/config/plugins/scroll.lua create mode 100644 lua/config/plugins/snips.lua create mode 100644 lua/config/plugins/spectre.lua create mode 100644 lua/config/plugins/status.lua create mode 100644 lua/config/plugins/sudo.lua create mode 100644 lua/config/plugins/tpope.lua create mode 100644 lua/config/plugins/treesitter.lua create mode 100644 lua/config/plugins/ui.lua create mode 100644 lua/config/plugins/undo.lua create mode 100644 lua/config/remap.lua create mode 100644 lua/config/utils.lua create mode 100644 pic.jpg diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..9393cf9 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,5 @@ +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" +indent_width = 2 +quote_style = "AutoPreferDouble" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7569c98 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Mariano Zunino + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..456a634 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# My Neovim Configuration + +This is my personal Neovim setup, tailored for a fast and minimal development workflow. + +## Installation + +1. Clone the repo: + ```bash + git clone https://github.com/marianozunino/nvim.git ~/.config/nvim + ``` +2. Open Neovim +![Neovim Setup](pic.jpg) + + +## License + +This configuration is available under the [MIT License](LICENSE). diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..1a891b9 --- /dev/null +++ b/init.lua @@ -0,0 +1,5 @@ +require("config.utils") +require("config.options") +require("config.remap") +require("config.autocomands") +require("config.lazy") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..9993a03 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,57 @@ +{ + "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, + "LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" }, + "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, + "blink.cmp": { "branch": "main", "commit": "ca05bb33eb071d916d33af08cae8034c3d8002b5" }, + "chezmoi.nvim": { "branch": "main", "commit": "f5614261b77cb17df72ba2c4fdbc31f7ee42bc6c" }, + "chezmoi.vim": { "branch": "main", "commit": "abf37336437867cbd99ce2f8849b717415391cc3" }, + "cloak.nvim": { "branch": "main", "commit": "648aca6d33ec011dc3166e7af3b38820d01a71e4" }, + "codeium.vim": { "branch": "main", "commit": "d152e6cd3d814a44f36447bb0d21d51f6787fe9c" }, + "conform.nvim": { "branch": "master", "commit": "880aa379f91ed36c328806846f7c1eca9b49241e" }, + "dressing.nvim": { "branch": "master", "commit": "8fb86f808420d5a8a1b1bf869b1609b2337dc6e0" }, + "ecolog.nvim": { "branch": "main", "commit": "8e191f639e3c96f7159c5770757aa157292551b9" }, + "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "fzf-lua": { "branch": "main", "commit": "34d5e4053a3825ef16a04aa3664dc856c6a13e64" }, + "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, + "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "gopher.nvim": { "branch": "main", "commit": "f55c15ada8e02398000c04a96ef44d986cd01051" }, + "harpoon": { "branch": "harpoon2", "commit": "a84ab829eaf3678b586609888ef52f7779102263" }, + "indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" }, + "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, + "lazydev.nvim": { "branch": "main", "commit": "8620f82ee3f59ff2187647167b6b47387a13a018" }, + "lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "2daa8921b7afdcfa47419a21ea343c3df6d74fa0" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mini.nvim": { "branch": "main", "commit": "4228f166ee9db3e910eea1915e2d3683028add47" }, + "neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" }, + "nightfox.nvim": { "branch": "main", "commit": "7557f26defd093c4e9bc17f28b08403f706f5a44" }, + "noice.nvim": { "branch": "main", "commit": "eaed6cc9c06aa2013b5255349e4f26a6b17ab70f" }, + "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, + "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, + "nvim-lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" }, + "nvim-lint": { "branch": "master", "commit": "1fea92f1d9908eaa5eb8bafe08b4293d7aadaa55" }, + "nvim-lspconfig": { "branch": "master", "commit": "040001d85e9190a904d0e35ef5774633e14d8475" }, + "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" }, + "nvim-spectre": { "branch": "master", "commit": "08be31c104df3b4b049607694ebb2b6ced4f928b" }, + "nvim-treesitter": { "branch": "master", "commit": "2a75d8065cff33216e106b651eb0f58b90375717" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, + "nvim-vtsls": { "branch": "main", "commit": "45c6dfea9f83a126e9bfc5dd63430562b3f8af16" }, + "oil.nvim": { "branch": "master", "commit": "c5f7c56644425e2b77e71904da98cda0331b3342" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "pretty-fold.nvim": { "branch": "master", "commit": "1eb18f228972e86b7b8f5ef33ca8091e53fb1e49" }, + "render-markdown.nvim": { "branch": "main", "commit": "0022a579ac7355966be5ade77699b88c76b6a549" }, + "rose-pine": { "branch": "main", "commit": "91548dca53b36dbb9d36c10f114385f759731be1" }, + "schemastore.nvim": { "branch": "main", "commit": "af3f82cd4972520e6ac04c48ed3eed473660efca" }, + "suda.vim": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, + "ts-error-translator.nvim": { "branch": "main", "commit": "47e5ba89f71b9e6c72eaaaaa519dd59bd6897df4" }, + "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, + "vim-dadbod": { "branch": "master", "commit": "f740950d0703099e0f172016f10e0e39f50fd0ba" }, + "vim-dadbod-completion": { "branch": "master", "commit": "9e354e86fcc67a5ec2c104f312e374ea2f89c799" }, + "vim-dadbod-ui": { "branch": "master", "commit": "0fec59e3e1e619e302198cd491b7d27f8d398b7c" }, + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" } +} diff --git a/lua/config/autocomands.lua b/lua/config/autocomands.lua new file mode 100644 index 0000000..068c88b --- /dev/null +++ b/lua/config/autocomands.lua @@ -0,0 +1,71 @@ +-- Create autogroups first +local MZuninoGroup = vim.api.nvim_create_augroup("mzunino", {}) +local yank_group = vim.api.nvim_create_augroup("HighlightYank", {}) +local bigfile_group = vim.api.nvim_create_augroup("bigfile", {}) + +-- Set bigfile size threshold +vim.g.bigfile_size = 1024 * 1024 * 1.5 -- 1.5 MB + +-- Netrw diagnostic disable +vim.api.nvim_create_autocmd("FileType", { + pattern = "netrw", + callback = function() + vim.diagnostic.enable(false) + end, +}) + +-- Template files +vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { + pattern = "*.templ", + command = "set filetype=templ", +}) + +-- Highlight on yank +vim.api.nvim_create_autocmd("TextYankPost", { + group = yank_group, + pattern = "*", + callback = function() + vim.highlight.on_yank({ + higroup = "IncSearch", + timeout = 40, + }) + end, +}) + +-- Remove trailing whitespace on save +vim.api.nvim_create_autocmd("BufWritePre", { + group = MZuninoGroup, + pattern = "*", + command = [[%s/\s\+$//e]], +}) + +-- Auto-apply chezmoi changes +vim.api.nvim_create_autocmd("BufWritePost", { + group = MZuninoGroup, + pattern = "~/.local/share/chezmoi/*", + command = [[silent! !chezmoi apply --source-path "%"]], +}) + +-- Bigfile detection +vim.filetype.add({ + pattern = { + [".*"] = { + function(path, buf) + return vim.bo[buf].filetype ~= "bigfile" and path and vim.fn.getfsize(path) > vim.g.bigfile_size and "bigfile" + or nil + end, + }, + }, +}) + +-- Bigfile handling +vim.api.nvim_create_autocmd("FileType", { + group = bigfile_group, + pattern = "bigfile", + callback = function(ev) + vim.b.minianimate_disable = true + vim.schedule(function() + vim.bo[ev.buf].syntax = vim.filetype.match({ buf = ev.buf }) or "" + end) + end, +}) diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua new file mode 100644 index 0000000..5d69ed5 --- /dev/null +++ b/lua/config/lazy.lua @@ -0,0 +1,53 @@ +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 + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + { import = "config.plugins" }, + }, + performance = { + rtp = { + disabled_plugins = { + "gzip", + "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, + change_detection = { + notify = false, + enable = true, + }, + ui = { + border = "rounded", + size = { + width = 0.8, + height = 0.8, + }, + }, +}) + +nmap("la", ":Lazy", { desc = "Open Lazy" }) diff --git a/lua/config/lsp/gopls.lua b/lua/config/lsp/gopls.lua new file mode 100644 index 0000000..9af8045 --- /dev/null +++ b/lua/config/lsp/gopls.lua @@ -0,0 +1,15 @@ +return { + settings = { + gopls = { + gofumpt = true, -- https://github.com/mvdan/gofumpt a stricter gofmt + completeUnimported = true, + usePlaceholders = true, + analyses = { + unusedparams = true, + }, + }, + }, + flags = { + debounce_text_changes = 150, -- https://github.com/golang/tools/blob/master/gopls/doc/settings.md#change-detection + }, +} diff --git a/lua/config/lsp/html.lua b/lua/config/lsp/html.lua new file mode 100644 index 0000000..c4f1ba2 --- /dev/null +++ b/lua/config/lsp/html.lua @@ -0,0 +1,3 @@ +return { + filetypes = { "html", "templ" }, +} diff --git a/lua/config/lsp/htmx.lua b/lua/config/lsp/htmx.lua new file mode 100644 index 0000000..c4f1ba2 --- /dev/null +++ b/lua/config/lsp/htmx.lua @@ -0,0 +1,3 @@ +return { + filetypes = { "html", "templ" }, +} diff --git a/lua/config/lsp/jsonls.lua b/lua/config/lsp/jsonls.lua new file mode 100644 index 0000000..5a685df --- /dev/null +++ b/lua/config/lsp/jsonls.lua @@ -0,0 +1,16 @@ +return { + settings = { + json = { + schemas = require("schemastore").json.schemas(), + }, + }, + setup = { + commands = { + Format = { + function() + vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line("$"), 0 }) + end, + }, + }, + }, +} diff --git a/lua/config/lsp/lua_ls.lua b/lua/config/lsp/lua_ls.lua new file mode 100644 index 0000000..596bf7b --- /dev/null +++ b/lua/config/lsp/lua_ls.lua @@ -0,0 +1,22 @@ +-- With 2-space indentation +return { + settings = { + Lua = { + format = { + enable = false, + }, + hint = { + enable = false, + arrayIndex = "Disable", + await = true, + paramName = "Disable", + paramType = true, + semicolon = "All", + setType = false, + }, + telemetry = { + enable = false, + }, + }, + }, +} diff --git a/lua/config/lsp/omnisharp.lua b/lua/config/lsp/omnisharp.lua new file mode 100644 index 0000000..1362553 --- /dev/null +++ b/lua/config/lsp/omnisharp.lua @@ -0,0 +1,7 @@ +return { + settings = { + enable_roslyn_analyzers = true, + organize_imports_on_format = true, + enable_import_completion = true, + }, +} diff --git a/lua/config/lsp/yamlls.lua b/lua/config/lsp/yamlls.lua new file mode 100644 index 0000000..47b8d97 --- /dev/null +++ b/lua/config/lsp/yamlls.lua @@ -0,0 +1,21 @@ +return { + settings = { + yaml = { + schemaStore = { + -- You must disable built-in schemaStore support if you want to use + -- this plugin and its advanced options like `ignore`. + enable = false, + -- Avoid TypeError: Cannot read properties of undefined (reading 'length') + url = "", + }, + schemas = require("schemastore").yaml.schemas({ + -- additional schemas (not in the catalog) + extra = { + url = "https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/argoproj.io/application_v1alpha1.json", + name = "Argo CD Application", + fileMatch = "argocd-application.yaml", + }, + }), + }, + }, +} diff --git a/lua/config/options.lua b/lua/config/options.lua new file mode 100644 index 0000000..3159e46 --- /dev/null +++ b/lua/config/options.lua @@ -0,0 +1,119 @@ +vim.opt.guifont = "monospace:h17" -- the font used in graphical neovim applications + +-- 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 status line +vim.opt.showmode = false + +-- Sync clipboard between OS and Neovim. +-- Remove this option if you want your OS clipboard to remain independent. +-- See `:help 'clipboard'` +vim.opt.clipboard = "unnamedplus" + +-- Enable break indent +vim.opt.breakindent = true + +-- Save undo history +vim.opt.undofile = true + +-- Case-insensitive searching UNLESS \C or capital in search +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- Search as characters are entered +vim.opt.incsearch = true + +-- Highlight search +vim.opt.hlsearch = true + +-- Keep signcolumn on by default +vim.opt.signcolumn = "yes" + +-- Decrease update time +vim.opt.updatetime = 250 +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 in the editor. +-- See :help 'list' +-- and :help 'listchars' +vim.opt.list = true +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.opt.wrap = false +vim.opt.colorcolumn = "120" + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.termguicolors = true + +vim.opt.showmatch = true + +vim.opt.signcolumn = "yes" +vim.opt.isfname:append("@-@") + +-- Give more space for displaying messages. +vim.opt.cmdheight = 1 + +-- Don't pass messages to |ins-completion-menu|. +vim.opt.shortmess:append("c") + +vim.opt.completeopt = { "menuone", "noselect" } +vim.opt.pumheight = 10 +vim.opt.pumblend = 10 + +local group = vim.api.nvim_create_augroup("highlight_yank", { clear = true }) + +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank({ higroup = "IncSearch", timeout = 50 }) + end, + group = group, +}) + +vim.opt.foldmethod = "indent" +vim.opt.foldnestmax = 3 +vim.opt.foldenable = false + +vim.g.netrw_browse_split = 0 +vim.g.netrw_banner = 0 +vim.g.netrw_winsize = 25 +vim.g.netrw_liststyle = 3 +vim.g.netrw_localrmdir = "rm -r" +vim.g.netrw_browse_split = 0 +vim.g.netrw_banner = 0 +vim.g.netrw_winsize = 25 + +vim.filetype.add({ + extension = { + templ = "templ", + njk = "html", + }, +}) + +vim.filetype.add({ + extension = { rasi = "rasi" }, + pattern = { + [".*/waybar/config"] = "jsonc", + [".*/mako/config"] = "dosini", + [".*/kitty/*.conf"] = "bash", + [".*/hypr/.*%.conf"] = "hyprlang", + }, +}) diff --git a/lua/config/plugins/ai.lua b/lua/config/plugins/ai.lua new file mode 100644 index 0000000..18f6d83 --- /dev/null +++ b/lua/config/plugins/ai.lua @@ -0,0 +1,25 @@ +local M = { + "Exafunction/codeium.vim", + cmd = "CodeiumEnable", + keys = { + { "ce", "CodeiumEnable", desc = "Codeium Enable" }, + }, +} + +M.config = function() + vim.g.codeium_disable_bindings = 1 + + imap("", function() + return vim.fn["codeium#Accept"]() + end, { expr = true, silent = true, desc = "[codeium] Accept completion" }) + + imap("", function() + return vim.fn["codeium#CycleCompletions"](1) + end, { expr = true, silent = true, desc = "[codeium] Cycle completions" }) + + imap("", function() + return vim.fn["codeium#CycleCompletions"](-1) + end, { expr = true, silent = true, desc = "[codeium] Cycle completions" }) +end + +return M diff --git a/lua/config/plugins/alpha.lua b/lua/config/plugins/alpha.lua new file mode 100644 index 0000000..f56209c --- /dev/null +++ b/lua/config/plugins/alpha.lua @@ -0,0 +1,15 @@ +local M = { + "goolord/alpha-nvim", +} + +M.config = function() + local startify = require("alpha.themes.startify") + + startify.section.bottom_buttons.val = { + startify.button("q", "Quit", "q "), -- preserve the quit button + } + + require("alpha").setup(startify.config) +end + +return M diff --git a/lua/config/plugins/blankline.lua b/lua/config/plugins/blankline.lua new file mode 100644 index 0000000..0a6d578 --- /dev/null +++ b/lua/config/plugins/blankline.lua @@ -0,0 +1,31 @@ +local M = { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", +} + +M.config = function() + require("ibl").setup({ + indent = { + char = "│", + tab_char = "│", + }, + scope = { enabled = false }, + exclude = { + filetypes = { + "help", + "alpha", + "dashboard", + "neo-tree", + "Trouble", + "trouble", + "lazy", + "mason", + "notify", + "toggleterm", + "lazyterm", + }, + }, + }) +end + +return M diff --git a/lua/config/plugins/chezmoi.lua b/lua/config/plugins/chezmoi.lua new file mode 100644 index 0000000..5727b86 --- /dev/null +++ b/lua/config/plugins/chezmoi.lua @@ -0,0 +1,35 @@ +return { + { + "alker0/chezmoi.vim", + lazy = false, + init = function() + -- This option is required. + vim.g["chezmoi#use_tmp_buffer"] = true + -- add other options here if needed. + end, + }, + { + "xvzc/chezmoi.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + require("chezmoi").setup({ + -- your configurations + edit = { + watch = true, -- Set true to automatically apply on save. + force = true, -- Set true to force apply. Works only when watch = true. + }, + notification = { + on_open = true, -- vim.notify when start editing chezmoi-managed file. + on_apply = true, -- vim.notify on apply. + }, + }) + vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { + pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" }, + callback = function() + -- invoke with vim.schedule() for better startup time + vim.schedule(require("chezmoi.commands.__edit").watch) + end, + }) + end, + }, +} diff --git a/lua/config/plugins/colorizer.lua b/lua/config/plugins/colorizer.lua new file mode 100644 index 0000000..79c8046 --- /dev/null +++ b/lua/config/plugins/colorizer.lua @@ -0,0 +1,31 @@ +local M = { + "norcalli/nvim-colorizer.lua", + branch = "master", +} + +M.config = function() + require("colorizer").setup({ + filetypes = { + "typescript", + "typescriptreact", + "javascript", + "javascriptreact", + "css", + "html", + "astro", + "lua", + "go", + "golang", + "bash", + "sh", + }, + user_default_options = { + names = false, + rgb_fn = true, + hsl_fn = true, + tailwind = "both", + }, + }) +end + +return M diff --git a/lua/config/plugins/colors.lua b/lua/config/plugins/colors.lua new file mode 100644 index 0000000..c6d991a --- /dev/null +++ b/lua/config/plugins/colors.lua @@ -0,0 +1,32 @@ +local M = { + { + "EdenEast/nightfox.nvim", + enabled = true, + priority = 1000, + config = function() + vim.cmd("colorscheme nightfox") + end, + }, + { + "rose-pine/neovim", + name = "rose-pine", + enabled = false, + priority = 1000, + opts = { + variant = "auto", + dark_variant = "main", + groups = { + border = "muted", + panel = "surface", + error = "love", + hint = "iris", + info = "foam", + }, + }, + config = function() + vim.cmd("colorscheme rose-pine") + end, + }, +} + +return M diff --git a/lua/config/plugins/comments.lua b/lua/config/plugins/comments.lua new file mode 100644 index 0000000..b4317fb --- /dev/null +++ b/lua/config/plugins/comments.lua @@ -0,0 +1,38 @@ +local M = { + { + "numToStr/Comment.nvim", + dependencies = { + "JoosepAlviste/nvim-ts-context-commentstring", + event = "VeryLazy", + }, + }, + { "folke/todo-comments.nvim" }, +} + +M.config = function() + vim.g.skip_ts_context_commentstring_module = true + + require("ts_context_commentstring").setup({ + enable_autocmd = false, + }) + + require("Comment").setup({ + pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(), + opleader = { + line = "gc", + block = "gC", + }, + mappings = { + basic = true, + }, + }) + + require("todo-comments").setup({ + keywords = { + FUCK = { icon = "󰇷 ", color = "error" }, + SHITTY = { icon = "󰇷 ", color = "error" }, + }, + }) +end + +return M diff --git a/lua/config/plugins/completion.lua b/lua/config/plugins/completion.lua new file mode 100644 index 0000000..c9908ef --- /dev/null +++ b/lua/config/plugins/completion.lua @@ -0,0 +1,42 @@ +local M = { + "saghen/blink.cmp", + dependencies = "rafamadriz/friendly-snippets", + version = "v0.*", +} + +M.config = function() + require("blink.cmp").setup({ + keymap = { + [""] = { + "show", + "show_documentation", + "hide_documentation", + }, + [""] = { "hide", "fallback" }, + [""] = { "hide", "fallback" }, + + [""] = { "select_prev", "fallback" }, + [""] = { "select_next", "fallback" }, + }, + + appearance = { + use_nvim_cmp_as_default = true, + nerd_font_variant = "mono", + }, + + signature = { + enabled = true, + }, + + completion = { + accept = { + create_undo_point = true, + auto_brackets = { + enabled = true, + }, + }, + }, + }) +end + +return M diff --git a/lua/config/plugins/db.lua b/lua/config/plugins/db.lua new file mode 100644 index 0000000..94fe64c --- /dev/null +++ b/lua/config/plugins/db.lua @@ -0,0 +1,18 @@ +local M = { + "tpope/vim-dadbod", + cmd = { + "DBUI", + }, + dependencies = { + "kristijanhusak/vim-dadbod-ui", + "kristijanhusak/vim-dadbod-completion", + }, +} + +M.config = function() + vim.g.db_ui_use_nerd_fonts = 1 + -- g:db_ui_save_location + vim.g.db_ui_save_location = "~/Sync/saved_queries" +end + +return M diff --git a/lua/config/plugins/diagnostics.lua b/lua/config/plugins/diagnostics.lua new file mode 100644 index 0000000..e51e9e3 --- /dev/null +++ b/lua/config/plugins/diagnostics.lua @@ -0,0 +1,121 @@ +local M = { + "folke/trouble.nvim", + branch = "main", +} + +local function setup_keymaps(trouble) + -- Diagnostic navigation + nmap("[d", vim.diagnostic.goto_prev, { desc = "Previous diagnostic" }) + nmap("]d", vim.diagnostic.goto_next, { desc = "Next diagnostic" }) + + -- Trouble specific navigation + nmap("", function() + trouble.previous({ skip_groups = true, jump = true }) + end, { desc = "Previous trouble item" }) + nmap("", function() + trouble.next({ skip_groups = true, jump = true }) + end, { desc = "Next trouble item" }) + + -- Trouble mode toggles + nmap("tt", "TroubleToggle", { desc = "Toggle trouble" }) + nmap("tw", "TroubleToggle workspace_diagnostics", { desc = "Workspace diagnostics" }) + nmap("td", "TroubleToggle document_diagnostics", { desc = "Document diagnostics" }) + nmap("tq", "TroubleToggle quickfix", { desc = "Quickfix list" }) + nmap("tl", "TroubleToggle loclist", { desc = "Location list" }) +end + +local function setup_diagnostic_config() + vim.diagnostic.config({ + virtual_text = { + prefix = "●", + suffix = "", + format = function(diagnostic) + local icons = { + [vim.diagnostic.severity.ERROR] = " ", + [vim.diagnostic.severity.WARN] = " ", + [vim.diagnostic.severity.HINT] = " ", + [vim.diagnostic.severity.INFO] = " ", + } + local icon = icons[diagnostic.severity] or "" + return string.format("%s %s", icon, diagnostic.message) + end, + }, + underline = false, + update_in_insert = false, + signs = { + active = true, + text = { + [vim.diagnostic.severity.ERROR] = "", + [vim.diagnostic.severity.WARN] = "", + [vim.diagnostic.severity.HINT] = "", + [vim.diagnostic.severity.INFO] = "", + }, + }, + float = { + focusable = true, + style = "minimal", + border = "rounded", + source = true, + header = "", + prefix = "", + format = function(diagnostic) + local severity = vim.diagnostic.severity[diagnostic.severity] + return string.format("%s: %s", severity:lower(), diagnostic.message) + end, + }, + severity_sort = true, + }) +end + +function M.config() + local trouble = require("trouble") + + trouble.setup({ + position = "bottom", + height = 10, + width = 50, + icons = true, + mode = "workspace_diagnostics", + fold_open = "", + fold_closed = "", + group = true, + padding = true, + action_keys = { + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = { "", "" }, -- jump to the diagnostic or open / close folds + open_split = { "" }, -- open buffer in new split + open_vsplit = { "" }, -- open buffer in new vsplit + open_tab = { "" }, -- open buffer in new tab + toggle_mode = "m", -- toggle between "workspace" and "document" mode + toggle_preview = "P", -- toggle auto_preview + preview = "p", -- preview the diagnostic location + close_folds = { "zM", "zm" }, -- close all folds + open_folds = { "zR", "zr" }, -- open all folds + toggle_fold = { "zA", "za" }, -- toggle fold of current file + previous = "k", -- previous item + next = "j", -- next item + }, + auto_preview = true, + auto_fold = false, + auto_jump = { "lsp_definitions" }, + signs = { + -- Icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "", + }, + use_diagnostic_signs = false, + }) + + -- Setup keymaps + setup_keymaps(trouble) + + -- Setup diagnostic configuration + setup_diagnostic_config() +end + +return M diff --git a/lua/config/plugins/env.lua b/lua/config/plugins/env.lua new file mode 100644 index 0000000..8687cc6 --- /dev/null +++ b/lua/config/plugins/env.lua @@ -0,0 +1,59 @@ +local M = { + { + "laytan/cloak.nvim", + config = function() + require("cloak").setup({ + cloak_character = "*", + highlight_group = "Comment", + patterns = { + { + file_pattern = { + ".env*", + "wrangler.toml", + ".dev.vars", + }, + cloak_pattern = "=.+", + }, + }, + }) + + nmap("cc", ":CloakToggle") + end, + }, + { + "philosofonusus/ecolog.nvim", + keys = { + { "ge", "EcologGoto", desc = "Go to env file" }, + { "ep", "EcologPeek", desc = "Ecolog peek variable" }, + { "es", "EcologSelect", desc = "Switch env file" }, + }, + -- Lazy loading is done internally + lazy = false, + opts = { + integrations = { + blink_cmp = true, + }, + -- Enables shelter mode for sensitive values + shelter = { + configuration = { + partial_mode = false, -- false by default, disables partial mode, for more control check out shelter partial mode + mask_char = "*", -- Character used for masking + }, + modules = { + cmp = true, -- Mask values in completion + peek = false, -- Mask values in peek view + files = false, -- Mask values in files + telescope = false, -- Mask values in telescope + }, + }, + -- true by default, enables built-in types (database_url, url, etc.) + types = true, + path = vim.fn.getcwd(), -- Path to search for .env files + preferred_environment = "development", -- Optional: prioritize specific env files + }, + }, +} + +M.config = function() end + +return M diff --git a/lua/config/plugins/flash.lua b/lua/config/plugins/flash.lua new file mode 100644 index 0000000..06b9f0b --- /dev/null +++ b/lua/config/plugins/flash.lua @@ -0,0 +1,22 @@ +local M = { + "folke/flash.nvim", + opts = { + jump = { + autojump = true, + }, + modes = { + char = { + jump_labels = true, + multi_line = false, + }, + }, + }, +} + +M.config = function() + nmap("ff", function() + require("flash").jump() + end, { desc = "Flash" }) +end + +return M diff --git a/lua/config/plugins/fold.lua b/lua/config/plugins/fold.lua new file mode 100644 index 0000000..188859b --- /dev/null +++ b/lua/config/plugins/fold.lua @@ -0,0 +1,53 @@ +return { + "bbjornstad/pretty-fold.nvim", + enabled = true, + config = function() + local global_setup = { + sections = { + left = { "content" }, + right = { + " ", + function() + return ("[%dL]"):format(vim.v.foldend - vim.v.foldstart) + end, + "[", + "percentage", + "]", + }, + }, + matchup_patterns = { + { "{", "}" }, + { "%(", ")" }, -- % to escape lua pattern char + { "%[", "]" }, -- % to escape lua pattern char + }, + -- add_close_pattern = true, + process_comment_signs = ({ "delete", "spaces", false })[2], + } + + local function ft_setup(lang, options) -- {{{ + local opts = vim.tbl_deep_extend("force", global_setup, options) + -- combine global and ft specific matchup_patterns + if opts and opts.matchup_patterns and global_setup.matchup_patterns then + opts.matchup_patterns = vim.list_extend(opts.matchup_patterns, global_setup.matchup_patterns) + end + require("pretty-fold").ft_setup(lang, opts) + end -- }}} + + require("pretty-fold").setup(global_setup) + + ft_setup("lua", { -- {{{ + matchup_patterns = { + { "^%s*do$", "end" }, -- do ... end blocks + { "^%s*if", "end" }, -- if ... end + { "^%s*for", "end" }, -- for + { "function[^%(]*%(", "end" }, -- 'function( or 'function ('' + }, + }) -- }}} + + ft_setup("vim", { -- {{{ + matchup_patterns = { + { "^%s*function!?[^%(]*%(", "endfunction" }, + }, + }) -- }}} + end, +} diff --git a/lua/config/plugins/format.lua b/lua/config/plugins/format.lua new file mode 100644 index 0000000..13f8258 --- /dev/null +++ b/lua/config/plugins/format.lua @@ -0,0 +1,38 @@ +return { + "stevearc/conform.nvim", + event = { + "BufReadPre", + "BufNewFile", + }, + config = function() + require("conform").setup({ + formatters_by_ft = { + graphql = { "prettierd", "prettier" }, + njk = { "prettierd", "prettier" }, + html = { "prettierd", "prettier" }, + typescript = { "prettierd", "prettier" }, + lua = { "stylua" }, + javascript = { "prettierd", "prettier", stop_after_first = true }, + json = { "prettierd", "prettier" }, + sh = { "shfmt" }, + bash = { "shfmt" }, + tex = { "latexindent" }, + go = { "gofumpt", "goimports-reviser", "golines" }, + cs = { "csharpier" }, + templ = { "templ" }, + }, + formatters = { + csharpier = { + command = "dotnet-csharpier", + args = { "--write-stdout" }, + }, + }, + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + async = false, + }, + notify_on_error = false, + }) + end, +} diff --git a/lua/config/plugins/fzf.lua b/lua/config/plugins/fzf.lua new file mode 100644 index 0000000..0b2684d --- /dev/null +++ b/lua/config/plugins/fzf.lua @@ -0,0 +1,72 @@ +local M = { + "ibhagwan/fzf-lua", +} + +M.config = function() + local config = require("fzf-lua.config") + local actions = require("trouble.sources.fzf").actions + config.defaults.actions.files["ctrl-q"] = actions.open + + local fzf_lua = require("fzf-lua") + + -- Basic fzf-lua setup + fzf_lua.setup({ + layout = "fzf-vim", + keymap = { + fzf = { + ["CTRL-Q"] = "select-all+accept", + }, + }, + grep = { + fzf_opts = { + ["--history"] = vim.fn.stdpath("data") .. "/fzf-lua-grep-history", + }, + }, + }) + + nmap("K", vim.lsp.buf.hover, { desc = "Hover Documentation" }) + nmap("gd", function() + fzf_lua.lsp_definitions({ jump_to_single_result = true }) + end, { desc = "Goto Definition" }) + nmap("gr", function() + fzf_lua.lsp_references({ ignore_current_line = true }) + end, { desc = "Goto References" }) + nmap("gi", function() + fzf_lua.lsp_implementations({ jump_to_single_result = true }) + end, { desc = "Goto Implementation" }) + nmap("D", fzf_lua.lsp_typedefs, { desc = "Type Definition" }) + nmap("ca", fzf_lua.lsp_code_actions, { desc = "Code Action" }) + nmap("ds", fzf_lua.lsp_document_symbols, { desc = "Document Symbols" }) + nmap("ws", fzf_lua.lsp_workspace_symbols, { desc = "Workspace Symbols" }) + nmap("ic", fzf_lua.lsp_incoming_calls, { desc = "Incoming Calls" }) + nmap("oc", fzf_lua.lsp_outgoing_calls, { desc = "Outgoing Calls" }) + + -- keys = { + nmap("/", function() + fzf_lua.files({ + cwd_prompt = false, + silent = true, + }) + end, { desc = "Find Files" }) + nmap(";", fzf_lua.buffers, { desc = "Find Buffers" }) + nmap("gf", fzf_lua.live_grep, { desc = "Find Live Grep" }) + nmap("sb", fzf_lua.grep_curbuf, { desc = "Search Current Buffer" }) + nmap("gw", fzf_lua.grep_cword, { desc = "Search word under cursor" }) + nmap("gW", fzf_lua.grep_cWORD, { desc = "Search WORD under cursor" }) + nmap("sk", fzf_lua.keymaps, { desc = "Search Keymaps" }) + nmap("sh", fzf_lua.help_tags, { desc = "Search help" }) + + -- Automatic sizing of height/width of vim.ui.select + fzf_lua.register_ui_select(function(_, items) + local min_h, max_h = 0.60, 0.80 + local h = (#items + 4) / vim.o.lines + if h < min_h then + h = min_h + elseif h > max_h then + h = max_h + end + return { winopts = { height = h, width = 0.80, row = 0.40 } } + end) +end + +return M diff --git a/lua/config/plugins/git.lua b/lua/config/plugins/git.lua new file mode 100644 index 0000000..6c71b9b --- /dev/null +++ b/lua/config/plugins/git.lua @@ -0,0 +1,47 @@ +local M = { + { "lewis6991/gitsigns.nvim" }, + { + "kdheepak/lazygit.nvim", + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + dependencies = { + "nvim-lua/plenary.nvim", + }, + keys = { + { "lg", "LazyGit", desc = "LazyGit" }, + }, + }, + { + + "ruifm/gitlinker.nvim", + }, +} + +M.config = function() + require("gitsigns").setup({ + current_line_blame_formatter = ", - ", + current_line_blame = true, + signs = { + add = { text = icons.ui.BoldLineMiddle }, + change = { text = icons.ui.BoldLineDashedMiddle }, + delete = { text = icons.ui.TriangleShortArrowRight }, + topdelete = { text = icons.ui.TriangleShortArrowRight }, + changedelete = { text = icons.ui.BoldLineMiddle }, + }, + }) + + require("gitlinker").setup({ + message = false, + console_log = false, + }) + + nmap("gy", "lua require('gitlinker').get_buf_range_url('n')") + namp("gY", "lua require('gitlinker').get_buf_range_url('n', 'blame')") +end + +return M diff --git a/lua/config/plugins/harpoon.lua b/lua/config/plugins/harpoon.lua new file mode 100644 index 0000000..532ac64 --- /dev/null +++ b/lua/config/plugins/harpoon.lua @@ -0,0 +1,35 @@ +local M = { + "ThePrimeagen/harpoon", + branch = "harpoon2", + + dependencies = { + "nvim-lua/plenary.nvim", + }, +} + +M.config = function() + local harpoon = require("harpoon") + + harpoon:setup({ + settings = { + save_on_toggle = true, + sync_on_ui_close = true, + }, + }) + + nmap("a", function() + harpoon:list():add() + end, { desc = "Harpoon: Append" }) + + nmap("h", function() + harpoon.ui:toggle_quick_menu(harpoon:list()) + end, { desc = "Harpoon: Toggle Quick Menu" }) + + for i = 1, 4 do + nmap("" .. i, function() + harpoon:list():select(i) + end, { desc = "Harpoon: Select " .. i }) + end +end + +return M diff --git a/lua/config/plugins/lastplace.lua b/lua/config/plugins/lastplace.lua new file mode 100644 index 0000000..0ca0acc --- /dev/null +++ b/lua/config/plugins/lastplace.lua @@ -0,0 +1,3 @@ +local M = { "ethanholz/nvim-lastplace" } + +return M diff --git a/lua/config/plugins/lint.lua b/lua/config/plugins/lint.lua new file mode 100644 index 0000000..376a867 --- /dev/null +++ b/lua/config/plugins/lint.lua @@ -0,0 +1,44 @@ +local M = { + "mfussenegger/nvim-lint", + event = { + "BufReadPre", + "BufNewFile", + }, +} + +M.config = function() + local lint = require("lint") + + lint.linters_by_ft = { + javascript = { + "eslint_d", + }, + typescript = { + "eslint_d", + }, + javascriptreact = { + "eslint_d", + }, + typescriptreact = { + "eslint_d", + }, + -- go = { + -- "revive", + -- }, + } + + local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true }) + + vim.api.nvim_create_autocmd({ "BufWritePost", "InsertLeave", "BufEnter" }, { + group = lint_augroup, + callback = function() + lint.try_lint() + end, + }) + + nmap("ll", function() + lint.try_lint() + end, { desc = "Trigger linting for current file" }) +end + +return M diff --git a/lua/config/plugins/lsp/extras/gopher.lua b/lua/config/plugins/lsp/extras/gopher.lua new file mode 100644 index 0000000..20ebac6 --- /dev/null +++ b/lua/config/plugins/lsp/extras/gopher.lua @@ -0,0 +1,13 @@ +return { + "olexsmir/gopher.nvim", + ft = "go", + config = function(_, opts) + require("gopher").setup(opts) + vim.keymap.set("n", "gmt", ":GoMod tidy", { + desc = "[Go] Tidy", + }) + end, + build = function() + vim.cmd([[silent! GoInstallDeps]]) + end, +} diff --git a/lua/config/plugins/lsp/extras/lazydev.lua b/lua/config/plugins/lsp/extras/lazydev.lua new file mode 100644 index 0000000..1d80752 --- /dev/null +++ b/lua/config/plugins/lsp/extras/lazydev.lua @@ -0,0 +1,9 @@ +return { + "folke/lazydev.nvim", + ft = "lua", + opts = { + library = { + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, +} diff --git a/lua/config/plugins/lsp/extras/typescript.lua b/lua/config/plugins/lsp/extras/typescript.lua new file mode 100644 index 0000000..84146bb --- /dev/null +++ b/lua/config/plugins/lsp/extras/typescript.lua @@ -0,0 +1,10 @@ +return { + "yioneko/nvim-vtsls", + dependencies = { + "dmmulroy/ts-error-translator.nvim", + }, + config = function() + require("ts-error-translator").setup() + end, + ft = { "typescript", "javascript", "jsx", "tsx", "json" }, +} diff --git a/lua/config/plugins/lsp/init.lua b/lua/config/plugins/lsp/init.lua new file mode 100644 index 0000000..bc3cfd3 --- /dev/null +++ b/lua/config/plugins/lsp/init.lua @@ -0,0 +1,139 @@ +local M = { + "neovim/nvim-lspconfig", + dependencies = { + "saghen/blink.cmp", + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + require("config.plugins.lsp.extras.lazydev"), + require("config.plugins.lsp.extras.gopher"), + require("config.plugins.lsp.extras.typescript"), + }, +} + +local function setup_autocommands(client, bufnr) + if client.server_capabilities.documentHighlightProvider then + local group = vim.api.nvim_create_augroup("LSPDocumentHighlight", { clear = true }) + vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { + group = group, + buffer = bufnr, + callback = vim.lsp.buf.document_highlight, + }) + vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { + group = group, + buffer = bufnr, + callback = vim.lsp.buf.clear_references, + }) + end +end + +local function setup_keymaps(bufnr) + local keymaps = { + { "", vim.lsp.buf.signature_help, "Signature Help" }, + { "cw", vim.lsp.buf.rename, "Rename" }, + { "r", vim.lsp.buf.rename, "Rename" }, + { "vd", vim.diagnostic.open_float, "Open Diagnostics" }, + { "lr", ":LspRestart", "Restart LSP" }, + { "li", ":LspInfo", "LSP Info" }, + } + + for _, map in ipairs(keymaps) do + nmap(map[1], map[2], { + buffer = bufnr, + desc = map[3], + }) + end +end + +local function on_attach(client, bufnr) + setup_autocommands(client, bufnr) + setup_keymaps(bufnr) +end + +local BORDER = "rounded" + +local handlers = { + ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = BORDER }), + ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = BORDER }), +} + +function M.config() + require("mason").setup({ + max_concurrent_installers = 4, + }) + + -- Ensure all tools are installed + local ensure_installed = { + -- LSP servers + "gopls", + "graphql-language-service-cli", + "html-lsp", + "htmx-lsp", + "json-lsp", + "lua-language-server", + "omnisharp", + "vtsls", + "yaml-language-server", + + -- Formatters + "prettierd", + "shfmt", + "stylua", + "latexindent", + + -- Additional tools + "eslint_d", + "templ", + } + + local registry = require("mason-registry") + for _, tool in ipairs(ensure_installed) do + if not registry.is_installed(tool) then + vim.cmd("MasonInstall " .. tool) + end + end + + require("mason-lspconfig").setup({ + automatic_installation = true, + ensure_installed = { + "gopls", + "html", + "htmx", + "jsonls", + "lua_ls", + "omnisharp", + "yamlls", + "graphql", + }, + handlers = { + function(server_name) + local capabilities = require("blink.cmp").get_lsp_capabilities() + + -- Enable folding capabilities + capabilities.textDocument.foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true, + } + + local base_opts = { + on_attach = on_attach, + capabilities = capabilities, + handlers = handlers, + flags = { + debounce_text_changes = 150, + }, + } + + -- Try to load server-specific configuration + local ok, server_opts = pcall(require, "config.plugins.lsp.servers." .. server_name) + if ok then + base_opts = vim.tbl_deep_extend("force", base_opts, server_opts) + end + + -- Set up the LSP server + require("lspconfig")[server_name].setup(base_opts) + end, + }, + }) +end + +return M diff --git a/lua/config/plugins/lsp/servers/gopls.lua b/lua/config/plugins/lsp/servers/gopls.lua new file mode 100644 index 0000000..9af8045 --- /dev/null +++ b/lua/config/plugins/lsp/servers/gopls.lua @@ -0,0 +1,15 @@ +return { + settings = { + gopls = { + gofumpt = true, -- https://github.com/mvdan/gofumpt a stricter gofmt + completeUnimported = true, + usePlaceholders = true, + analyses = { + unusedparams = true, + }, + }, + }, + flags = { + debounce_text_changes = 150, -- https://github.com/golang/tools/blob/master/gopls/doc/settings.md#change-detection + }, +} diff --git a/lua/config/plugins/lsp/servers/html.lua b/lua/config/plugins/lsp/servers/html.lua new file mode 100644 index 0000000..c4f1ba2 --- /dev/null +++ b/lua/config/plugins/lsp/servers/html.lua @@ -0,0 +1,3 @@ +return { + filetypes = { "html", "templ" }, +} diff --git a/lua/config/plugins/lsp/servers/htmx.lua b/lua/config/plugins/lsp/servers/htmx.lua new file mode 100644 index 0000000..c4f1ba2 --- /dev/null +++ b/lua/config/plugins/lsp/servers/htmx.lua @@ -0,0 +1,3 @@ +return { + filetypes = { "html", "templ" }, +} diff --git a/lua/config/plugins/lsp/servers/jsonls.lua b/lua/config/plugins/lsp/servers/jsonls.lua new file mode 100644 index 0000000..5a685df --- /dev/null +++ b/lua/config/plugins/lsp/servers/jsonls.lua @@ -0,0 +1,16 @@ +return { + settings = { + json = { + schemas = require("schemastore").json.schemas(), + }, + }, + setup = { + commands = { + Format = { + function() + vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line("$"), 0 }) + end, + }, + }, + }, +} diff --git a/lua/config/plugins/lsp/servers/lua_ls.lua b/lua/config/plugins/lsp/servers/lua_ls.lua new file mode 100644 index 0000000..45d8e6a --- /dev/null +++ b/lua/config/plugins/lsp/servers/lua_ls.lua @@ -0,0 +1,21 @@ +return { + settings = { + Lua = { + format = { + enable = false, + }, + hint = { + enable = false, + arrayIndex = "Disable", -- "Enable" | "Auto" | "Disable" + await = true, + paramName = "Disable", -- "All" | "Literal" | "Disable" + paramType = true, + semicolon = "All", -- "All" | "SameLine" | "Disable" + setType = false, + }, + telemetry = { + enable = false, + }, + }, + }, +} diff --git a/lua/config/plugins/lsp/servers/omnisharp.lua b/lua/config/plugins/lsp/servers/omnisharp.lua new file mode 100644 index 0000000..1362553 --- /dev/null +++ b/lua/config/plugins/lsp/servers/omnisharp.lua @@ -0,0 +1,7 @@ +return { + settings = { + enable_roslyn_analyzers = true, + organize_imports_on_format = true, + enable_import_completion = true, + }, +} diff --git a/lua/config/plugins/lsp/servers/yamlls.lua b/lua/config/plugins/lsp/servers/yamlls.lua new file mode 100644 index 0000000..47b8d97 --- /dev/null +++ b/lua/config/plugins/lsp/servers/yamlls.lua @@ -0,0 +1,21 @@ +return { + settings = { + yaml = { + schemaStore = { + -- You must disable built-in schemaStore support if you want to use + -- this plugin and its advanced options like `ignore`. + enable = false, + -- Avoid TypeError: Cannot read properties of undefined (reading 'length') + url = "", + }, + schemas = require("schemastore").yaml.schemas({ + -- additional schemas (not in the catalog) + extra = { + url = "https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/argoproj.io/application_v1alpha1.json", + name = "Argo CD Application", + fileMatch = "argocd-application.yaml", + }, + }), + }, + }, +} diff --git a/lua/config/plugins/markdown.lua b/lua/config/plugins/markdown.lua new file mode 100644 index 0000000..292431f --- /dev/null +++ b/lua/config/plugins/markdown.lua @@ -0,0 +1,20 @@ +local M = { + { + "iamcco/markdown-preview.nvim", + cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, + build = "cd app && yarn install", + init = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + ft = { "markdown" }, + }, + { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite + opts = {}, + }, +} + +M.config = function() end + +return M diff --git a/lua/config/plugins/mini.lua b/lua/config/plugins/mini.lua new file mode 100644 index 0000000..3781553 --- /dev/null +++ b/lua/config/plugins/mini.lua @@ -0,0 +1,24 @@ +return { + "echasnovski/mini.nvim", + config = function() + require("mini.icons").setup() + + -- - 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({}) + end, + init = function() + package.preload["nvim-web-devicons"] = function() + require("mini.icons").mock_nvim_web_devicons() + return package.loaded["nvim-web-devicons"] + end + end, +} diff --git a/lua/config/plugins/navic.lua b/lua/config/plugins/navic.lua new file mode 100644 index 0000000..763461c --- /dev/null +++ b/lua/config/plugins/navic.lua @@ -0,0 +1,19 @@ +local M = { + "SmiteshP/nvim-navic", +} + +M.config = function() + require("nvim-navic").setup({ + icons = icons.kind, + highlight = true, + lsp = { + auto_attach = true, + }, + click = true, + separator = " " .. icons.ui.ChevronRight .. " ", + depth_limit = 0, + depth_limit_indicator = "..", + }) +end + +return M diff --git a/lua/config/plugins/noice.lua b/lua/config/plugins/noice.lua new file mode 100644 index 0000000..ea54ddd --- /dev/null +++ b/lua/config/plugins/noice.lua @@ -0,0 +1,93 @@ +local M = { + "folke/noice.nvim", + event = "VeryLazy", + dependencies = { + "MunifTanjim/nui.nvim", + }, +} + +M.config = function() + local noice = require("noice") + + noice.setup({ + routes = { + { + filter = { + event = "msg_show", + any = { + { find = "%d+L, %d+B" }, + { find = "; after #%d+" }, + { find = "; before #%d+" }, + { find = "%d fewer lines" }, + { find = "%d more lines" }, + }, + }, + opts = { skip = true }, + }, + }, + lsp = { + progress = { enabled = true }, + override = { + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, + ["vim.lsp.util.stylize_markdown"] = true, + ["cmp.entry.get_documentation"] = true, + }, + hover = { silent = true }, + signature = { + auto_open = { throttle = vim.api.nvim_get_option_value("updatetime", { scope = "global" }) }, + }, + }, + cmdline = { + format = { + cmdline = { icon = "" }, + search_down = { icon = " " }, + search_up = { icon = " " }, + }, + }, + messages = { + enabled = false, + }, + popupmenu = { enabled = true }, + presets = { + bottom_search = true, + long_message_to_split = true, + lsp_doc_border = true, + }, + throttle = 1000, + views = { + split = { + enter = true, + size = "25%", + win_options = { + signcolumn = "no", + number = false, + relativenumber = false, + list = false, + wrap = false, + }, + }, + popup = { border = { style = "rounded" } }, + hover = { + border = { style = "rounded" }, + position = { row = 2, col = 2 }, + }, + mini = { + timeout = 3000, + position = { row = -2 }, + border = { style = "rounded" }, + win_options = { + winblend = vim.api.nvim_get_option_value("winblend", { scope = "global" }), + }, + }, + cmdline_popup = { border = { style = "rounded" } }, + confirm = { + border = { + style = "rounded", + padding = { 0, 1 }, + }, + }, + }, + }) +end + +return M diff --git a/lua/config/plugins/oil.lua b/lua/config/plugins/oil.lua new file mode 100644 index 0000000..25f0b49 --- /dev/null +++ b/lua/config/plugins/oil.lua @@ -0,0 +1,69 @@ +local M = { + "stevearc/oil.nvim", +} + +M.config = function() + local function max_height() + local height = vim.fn.winheight(0) + if height >= 40 then + return 30 + elseif height >= 30 then + return 20 + else + return 10 + end + end + + require("oil").setup({ + keymaps = { + [""] = false, + ["g?"] = "actions.show_help", + [""] = "actions.select", + [""] = "actions.select_vsplit", + [""] = "actions.select_split", + [""] = "actions.select_tab", + [""] = "actions.close", + [""] = "actions.refresh", + ["-"] = "actions.parent", + ["_"] = "actions.open_cwd", + ["`"] = "actions.cd", + ["~"] = "actions.tcd", + ["g."] = "actions.toggle_hidden", + }, + -- Set to false if you still want to use netrw. + default_file_explorer = true, + delete_to_trash = true, + + -- Skip the confirmation popup for simple operations (:help oil.skip_confirm_for_simple_edits) + skip_confirm_for_simple_edits = true, + + view_options = { + natural_order = true, + -- Show files and directories that start with "." + show_hidden = false, + -- This function defines what is considered a "hidden" file + is_hidden_file = function(name) + local ignore_folders = { "node_modules", "dist", "build", "coverage" } + return vim.startswith(name, ".") or vim.tbl_contains(ignore_folders, name) + end, + wrap = true, + }, + + -- Configuration for the floating window in oil.open_float + float = { + padding = 2, + max_width = 120, + max_height = max_height(), + border = "rounded", + win_options = { + winblend = 0, + }, + }, + }) + + vim.keymap.set("n", "-", function() + require("oil").open() + end) +end + +return M diff --git a/lua/config/plugins/schema.lua b/lua/config/plugins/schema.lua new file mode 100644 index 0000000..14b97e2 --- /dev/null +++ b/lua/config/plugins/schema.lua @@ -0,0 +1,7 @@ +local M = { + "b0o/schemastore.nvim", +} + +M.config = function() end + +return M diff --git a/lua/config/plugins/scroll.lua b/lua/config/plugins/scroll.lua new file mode 100644 index 0000000..79f44d8 --- /dev/null +++ b/lua/config/plugins/scroll.lua @@ -0,0 +1,41 @@ +local M = { + "karb94/neoscroll.nvim", +} + +M.config = function() + require("neoscroll").setup({ + -- All these keys will be mapped to their corresponding default scrolling animation + mappings = { "", "" }, + hide_cursor = true, -- Hide cursor while scrolling + stop_eof = true, -- Stop at when scrolling downwards + respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file + cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further + easing_function = nil, -- Default easing function + pre_hook = nil, -- Function to run before the scrolling animation starts + post_hook = nil, -- Function to run after the scrolling animation ends + performance_mode = false, -- Disable "Performance Mode" on all buffers. + }) + local neoscroll = require("neoscroll") + + local t = { + [""] = function() + neoscroll.ctrl_u({ duration = 50 }) + end, + [""] = function() + neoscroll.ctrl_u({ duration = 50 }) + end, + [""] = function() + neoscroll.ctrl_d({ duration = 50 }) + end, + [""] = function() + neoscroll.ctrl_d({ duration = 50 }) + end, + } + + local modes = { "n", "v", "x" } + for key, func in pairs(t) do + vim.keymap.set(modes, key, func) + end +end + +return M diff --git a/lua/config/plugins/snips.lua b/lua/config/plugins/snips.lua new file mode 100644 index 0000000..930e81f --- /dev/null +++ b/lua/config/plugins/snips.lua @@ -0,0 +1,20 @@ +local M = { + + "L3MON4D3/LuaSnip", + dependencies = { + "rafamadriz/friendly-snippets", + -- "saadparwaiz1/cmp_luasnip", + }, + build = "make install_jsregexp", +} + +M.config = function() + require("luasnip.loaders.from_vscode").lazy_load() + require("luasnip.loaders.from_vscode").lazy_load({ paths = vim.fn.stdpath("config") .. "/lua/plugins/snippets/" }) + require("luasnip").config.set_config({ + history = true, + updateevents = "TextChanged,TextChangedI", + }) +end + +return M diff --git a/lua/config/plugins/spectre.lua b/lua/config/plugins/spectre.lua new file mode 100644 index 0000000..37eca14 --- /dev/null +++ b/lua/config/plugins/spectre.lua @@ -0,0 +1,22 @@ +local M = { + "nvim-pack/nvim-spectre", +} + +M.config = function() + require("spectre").setup() + + nmap("S", 'lua require("spectre").toggle()', { + desc = "Toggle Spectre", + }) + nmap("sw", 'lua require("spectre").open_visual({select_word=true})', { + desc = "[Spectre] Search current word", + }) + nmap("sw", 'lua require("spectre").open_visual()', { + desc = "[Spectre] Search current word", + }) + nmap("sp", 'lua require("spectre").open_file_search({select_word=true})', { + desc = "[Spectre] Search on current file", + }) +end + +return M diff --git a/lua/config/plugins/status.lua b/lua/config/plugins/status.lua new file mode 100644 index 0000000..13866de --- /dev/null +++ b/lua/config/plugins/status.lua @@ -0,0 +1,66 @@ +local M = { + "nvim-lualine/lualine.nvim", +} + +function M.config() + local lualine = require("lualine") + + local mode = "mode" + local filetype = { "filetype", icon_only = true } + + local diagnostics = { + "diagnostics", + sources = { "nvim_diagnostic" }, + sections = { "error", "warn", "info", "hint" }, + symbols = { + error = icons.diagnostics.Error, + hint = icons.diagnostics.Hint, + info = icons.diagnostics.Info, + warn = icons.diagnostics.Warning, + }, + colored = true, + update_in_insert = false, + always_visible = false, + } + + local diff = { + "diff", + source = function() + local gitsigns = vim.b.gitsigns_status_dict + if gitsigns then + return { + added = gitsigns.added, + modified = gitsigns.changed, + removed = gitsigns.removed, + } + end + end, + symbols = { + added = icons.git.LineAdded .. " ", + modified = icons.git.LineModified .. " ", + removed = icons.git.LineRemoved .. " ", + }, + colored = true, + always_visible = false, + } + + lualine.setup({ + options = { + theme = "auto", + globalstatus = true, + section_separators = "", + component_separators = "", + disabled_filetypes = { statusline = { "dashboard", "lazy", "alpha" } }, + }, + sections = { + lualine_a = { mode }, + lualine_b = {}, + lualine_c = { "filename" }, + lualine_x = { diff, diagnostics, filetype }, + lualine_y = {}, + lualine_z = {}, + }, + }) +end + +return M diff --git a/lua/config/plugins/sudo.lua b/lua/config/plugins/sudo.lua new file mode 100644 index 0000000..2c44188 --- /dev/null +++ b/lua/config/plugins/sudo.lua @@ -0,0 +1,4 @@ +return { + "lambdalisue/suda.vim", + lazy = false, +} diff --git a/lua/config/plugins/tpope.lua b/lua/config/plugins/tpope.lua new file mode 100644 index 0000000..c7110c6 --- /dev/null +++ b/lua/config/plugins/tpope.lua @@ -0,0 +1,9 @@ +local M = { + "tpope/vim-sleuth", +} + +M.config = function() + vim.g.sleuth_automatic = 1 +end + +return M diff --git a/lua/config/plugins/treesitter.lua b/lua/config/plugins/treesitter.lua new file mode 100644 index 0000000..9995963 --- /dev/null +++ b/lua/config/plugins/treesitter.lua @@ -0,0 +1,24 @@ +return { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + require("nvim-treesitter.configs").setup({ + ensure_installed = { "c", "lua", "typescript", "go", "vim", "vimdoc", "query", "markdown", "markdown_inline" }, + ignore_install = {}, + modules = {}, + sync_install = false, + auto_install = false, + highlight = { + enable = true, + disable = function(_, buf) + local max_filesize = 100 * 1024 + local ok, stats = pcall(vim.uv.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + additional_vim_regex_highlighting = false, + }, + }) + end, +} diff --git a/lua/config/plugins/ui.lua b/lua/config/plugins/ui.lua new file mode 100644 index 0000000..834805e --- /dev/null +++ b/lua/config/plugins/ui.lua @@ -0,0 +1,9 @@ +local M = { + "stevearc/dressing.nvim", +} + +M.config = function() + require("dressing").setup() +end + +return M diff --git a/lua/config/plugins/undo.lua b/lua/config/plugins/undo.lua new file mode 100644 index 0000000..47311cb --- /dev/null +++ b/lua/config/plugins/undo.lua @@ -0,0 +1,12 @@ +local M = { + "mbbill/undotree", + cmd = { + "UndotreeToggle", + }, +} + +M.config = function() + vim.opt.undodir = vim.fn.expand("~/.config/undodir") +end + +return M diff --git a/lua/config/remap.lua b/lua/config/remap.lua new file mode 100644 index 0000000..24709a5 --- /dev/null +++ b/lua/config/remap.lua @@ -0,0 +1,91 @@ +nmap("", "") + +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +nmap("Y", "yy") +nmap("", "", { desc = "Switch to last buffer" }) +nmap("", ":vertical resize +3", { desc = "Resize window" }) +nmap("", ":vertical resize -3", { desc = "Resize window" }) +nmap("", ":resize +3", { desc = "Resize window" }) +nmap("", ":resize -3", { desc = "Resize window" }) + +vim.cmd([[ + nnoremap + nnoremap +]]) + +nmap("n", "nzz", { desc = "Move to next search match" }) +nmap("N", "Nzz", { desc = "Move to previous search match" }) +nmap("*", "*zz", { desc = "Move to next search match" }) +nmap("#", "#zz", { desc = "Move to previous search match" }) +nmap("g*", "g*zz", { desc = "Move to next search match" }) +nmap("g#", "g#zz", { desc = "Move to previous search match" }) + +-- stay in indent mode +vmap("<", "", ">gv", { desc = "Indent right" }) + +-- keep register after paste +map("x", "p", [["_dP]]) + +map({ "n", "o", "x" }, "", "^", { desc = "Move to first non-blank character" }) +map({ "n", "o", "x" }, "", "g_", { desc = "Move to last non-blank character" }) + +nmap("q", ":q", { desc = "Quit" }) +nmap("Q", function() + vim.api.nvim_command("bd!|qall!") +end, { desc = "Quit all" }) + +-- create a user command to save without formatting :noa w +vim.api.nvim_create_user_command("W", function() + -- if buffer is empty, don't save + if vim.fn.empty(vim.fn.expand("%:t")) == 1 then + return vim.notify("Buffer is empty, not saving", vim.log.levels.ERROR) + end + vim.api.nvim_command("noa w") +end, { nargs = 0, desc = "Save without formatting" }) + +-- move lines +vmap("J", ":m '>+1gv=gv", { desc = "Move lines down" }) +vmap("K", ":m '<-2gv=gv", { desc = "Move lines up" }) + +-- undo tree +nmap("u", vim.cmd.UndotreeToggle) + +-- nnoremap yl :let @" = expand("%:p") +nmap("yl", function() + local file = vim.fn.expand("%:p") + print("Copied path to clipboard: " .. file) + -- copy to os clipboard + vim.fn.setreg("+", file) +end, { desc = "Copy file path to clipboard" }) + +nmap("x", "!chmod +x %", { desc = "Make file executable" }) + +vim.g.user_emmet_leader_key = "," + +nmap("gp", "Git push", { desc = "Git push" }) + +-- reset cmdheight +nmap("ch", function() + vim.o.cmdheight = 1 +end, { desc = "Reset cmdheight" }) + +nmap("w", function() + vim.api.nvim_command("w") +end, { desc = "Save" }) + +nmap("W", function() + vim.api.nvim_command("wa") +end, { desc = "Save all" }) + +-- format json using jq +nmap("jq", ":%!jq '.'", { desc = "Format json using jq" }) +vmap("jq", ":!jq '.'", { desc = "Format json using jq" }) + +-- Navigate quickfix list +nmap("qj", "cnext", { desc = "Next quickfix item" }) +nmap("qk", "cprev", { desc = "Previous quickfix item" }) + +nmap("", "nohlsearch", { desc = "Clear search highlights" }) diff --git a/lua/config/utils.lua b/lua/config/utils.lua new file mode 100644 index 0000000..5432beb --- /dev/null +++ b/lua/config/utils.lua @@ -0,0 +1,177 @@ +_G.map = function(mode, keys, func, opts) + opts = opts or {} + opts.desc = opts.desc or nil + vim.keymap.set(mode, keys, func, opts) +end + +_G.nmap = function(keys, func, opts) + _G.map("n", keys, func, opts) +end + +_G.imap = function(keys, func, opts) + _G.map("i", keys, func, opts) +end + +_G.vmap = function(keys, func, opts) + _G.map("v", keys, func, opts) +end + +_G.icons = { + kind = { + Array = " ", + Boolean = " ", + Class = " ", + Color = " ", + Constant = " ", + Constructor = " ", + Enum = " ", + EnumMember = " ", + Event = " ", + Field = " ", + File = " ", + Folder = "󰉋 ", + Function = " ", + Interface = " ", + Key = " ", + Keyword = " ", + Method = " ", + -- Module = " ", + Module = " ", + Namespace = " ", + Null = "󰟢 ", + Number = " ", + Object = " ", + Operator = " ", + Package = " ", + Property = " ", + Reference = " ", + Snippet = " ", + String = " ", + Struct = " ", + Text = " ", + TypeParameter = " ", + Unit = " ", + Value = " ", + Variable = " ", + }, + git = { + LineAdded = " ", + LineModified = " ", + LineRemoved = " ", + FileDeleted = " ", + FileIgnored = "◌", + FileRenamed = " ", + FileStaged = "S", + FileUnmerged = "", + FileUnstaged = "", + FileUntracked = "U", + Diff = " ", + Repo = " ", + Octoface = " ", + Copilot = " ", + Branch = "", + }, + ui = { + Message = "󰍡 ", + ArrowCircleDown = "", + ArrowCircleLeft = "", + ArrowCircleRight = "", + ArrowCircleUp = "", + BoldArrowDown = "", + BoldArrowLeft = "", + BoldArrowRight = "", + BoldArrowUp = "", + BoldClose = "", + BoldDividerLeft = "", + BoldDividerRight = "", + BoldLineLeft = "▎", + BoldLineMiddle = "┃", + BoldLineDashedMiddle = "┋", + BookMark = "", + BoxChecked = " ", + Bug = " ", + Stacks = "", + Scopes = "", + Watches = "󰂥", + DebugConsole = " ", + Calendar = " ", + Check = "", + ChevronRight = "", + ChevronShortDown = "", + ChevronShortLeft = "", + ChevronShortRight = "", + ChevronShortUp = "", + Circle = " ", + Close = "󰅖", + CloudDownload = " ", + Code = "", + Comment = "", + Dashboard = "", + DividerLeft = "", + DividerRight = "", + DoubleChevronRight = "»", + Ellipsis = "", + EmptyFolder = " ", + EmptyFolderOpen = " ", + File = " ", + FileSymlink = "", + Files = " ", + FindFile = "󰈞", + FindText = "󰊄", + Fire = "", + Folder = "󰉋 ", + FolderOpen = " ", + FolderSymlink = " ", + Forward = " ", + Gear = " ", + History = " ", + Lightbulb = " ", + LineLeft = "▏", + LineMiddle = "│", + List = " ", + Lock = " ", + NewFile = " ", + Note = " ", + Package = " ", + Pencil = "󰏫 ", + Plus = " ", + Project = " ", + Search = " ", + SignIn = " ", + SignOut = " ", + Tab = "󰌒 ", + Table = " ", + Target = "󰀘 ", + Telescope = "🔭", + Text = " ", + Tree = "", + Triangle = "󰐊", + TriangleShortArrowDown = "", + TriangleShortArrowLeft = "", + TriangleShortArrowRight = "", + TriangleShortArrowUp = "", + }, + diagnostics = { + BoldError = "", + Error = "", + BoldWarning = "", + Warning = "", + BoldInformation = "", + Information = "", + BoldQuestion = "", + Question = "", + BoldHint = "", + Hint = "󰌶", + Debug = "", + Trace = "✎", + }, + misc = { + Robot = "󰚩 ", + Squirrel = " ", + Tag = " ", + Watch = "", + Smiley = " ", + Package = " ", + CircuitBoard = " ", + }, +} diff --git a/pic.jpg b/pic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c4dca5e355c0698b726ef8e8b3438a88417f298 GIT binary patch literal 205448 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

Gk`|SMz`mY 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%0D+?Xs$-&uHi#D}PB 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

gCh-P$6`FF4_C>u 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 A!T