diff --git a/.github/assets/clean-editor.png b/.github/assets/clean-editor.png new file mode 100644 index 0000000..8a98b19 Binary files /dev/null and b/.github/assets/clean-editor.png differ diff --git a/.github/assets/dashboard.png b/.github/assets/dashboard.png new file mode 100644 index 0000000..8895b29 Binary files /dev/null and b/.github/assets/dashboard.png differ diff --git a/.github/assets/full.png b/.github/assets/full.png new file mode 100644 index 0000000..b2fcb19 Binary files /dev/null and b/.github/assets/full.png differ diff --git a/.github/assets/md.png b/.github/assets/md.png new file mode 100644 index 0000000..a997492 Binary files /dev/null and b/.github/assets/md.png differ diff --git a/.github/assets/notifications-panels.png b/.github/assets/notifications-panels.png new file mode 100644 index 0000000..5929cb8 Binary files /dev/null and b/.github/assets/notifications-panels.png differ diff --git a/.github/assets/search.png b/.github/assets/search.png new file mode 100644 index 0000000..6b4effc Binary files /dev/null and b/.github/assets/search.png differ diff --git a/.github/cspell/repo_soft.txt b/.github/cspell/repo_soft.txt index 6a1da8d..8f0885b 100644 --- a/.github/cspell/repo_soft.txt +++ b/.github/cspell/repo_soft.txt @@ -2,7 +2,6 @@ nvim Styleguides luacheck yamlfmt -neogit luarocks Luasnip lualine @@ -11,3 +10,8 @@ lazygit Gruvbox Quickkey lspconfig +buildx +neotest +javac +pandoc +chafa diff --git a/README.md b/README.md index 5874bd1..602a490 100644 --- a/README.md +++ b/README.md @@ -13,28 +13,48 @@ universal, extensible IDE setup for web and DevOps development. It emphasizes modular Lua-based plugin configurations and best practices (e.g., one plugin per file, LSP integration, and consistent style conventions). -## 🚀 Setup Instructions +![preview](.github/assets/full.png) -1. **Install Neovim** (version >= 0.8) on your system. +## :bookmark_tabs: Table of Contents + +- [:rocket: Setup Instructions](#rocket-setup-instructions) +- [:star2: Features](#star2-features) +- [:heart: Acknowledgements](#heart-acknowledgements) + - [:star: Star history](#star-star-history) + - [:coin: Donation](#coin-donation) + +## :rocket: Setup Instructions + +1. **Install Neovim** on your system. 2. **Clone this repo** into your config directory: 3. Install plugin manager (lazy.nvim) will automatically setup on first launch. 4. Open Neovim and let it install plugins. 5. Install external dependencies listed below. - -|External Dependency | Plugins | -|--------------------|---------| -| [git](https://git-scm.com/downloads) | [lazy.nvim](https://github.com/folke/lazy.nvim) [neogit](https://github.com/NeogitOrg/neogit) [mason.nvim](https://github.com/williamboman/mason.nvim) | -| [Nerd Font](https://www.nerdfonts.com/) | [lazy.nvim](https://github.com/folke/lazy.nvim) [render-markdown](https://github.com/MeanderingProgrammer/render-markdown.nvim) [todo-comments.nvim](https://github.com/folke/todo-comments.nvim) [which-key.nvim](https://github.com/folke/which-key.nvim) | -| [luarocks](https://luarocks.org/) | [lazy.nvim](https://github.com/folke/lazy.nvim) | -| [curl](https://curl.se/download.html) | [mason.nvim](https://github.com/williamboman/mason.nvim) | -| [wget](https://www.gnu.org/software/wget/) | [mason.nvim](https://github.com/williamboman/mason.nvim) | -| unzip | [mason.nvim](https://github.com/williamboman/mason.nvim) | -| tar | [mason.nvim](https://github.com/williamboman/mason.nvim) | -| gzip | [mason.nvim](https://github.com/williamboman/mason.nvim) | -| [rg](https://github.com/BurntSushi/ripgrep) | [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) [todo-comments.nvim](https://github.com/folke/todo-comments.nvim) | -| [fd](https://github.com/sharkdp/fd) | [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) | - -## 🌟 Features + + +| External Dependency | Plugins | +| -------------------------------------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------- | +| **git** | `gitsigns.nvim`, `auto-session`, `dashboard-nvim` | +| **ripgrep (`rg`)** | `telescope.nvim`, `search.nvim`, `todo-comments.nvim` | +| **fd** | `telescope.nvim`, `search.nvim` | +| **docker** | `telescope-docker.nvim` | +| **docker-compose** | `telescope-docker.nvim` | +| **docker-machine**, **buildx** | `telescope-docker.nvim` | +| **bash** | `nvim-dap` via `bash-debug-adapter`, `neotest-bas | +| **node** | `nvim-dap` via `firefox-debug-adapter`, `neotest-jest`, `conform.nvim` (formatters), many Telescope extensions (`telescope-media-files.nvim`, etc.) | +| **python3** | `nvim-dap` via `debugpy`, `neotest-python`, `conform.nvim` (formatters), `nvim-lint` (linters) | +| **java** / **javac** | `conform.nvim` (`google-java-format`), `nvim-lspconfig` (`jdtls`), `nvim-treesitter` (Java parser) | +| **unzip**, **wget**, **curl**, **gzip**, **tar**, **sh** | `mason.nvim` | +| **npm** / **npx** | `mason-tool-installer.nvim`, `conform.nvim` (formatters) | +| **tree-sitter-cli** | `nvim-treesitter` (only needed if you run `:TSInstallFromGrammar`), `lspsaga.nvim` | +| **luarocks**, **Lua 5.1** | `nvim-colorizer.lua`, `virt-column.nvim`, other plugins that bundle native extensions via LuaRocks | +| **fonts** (Nerd Fonts: Hack, JetBrains Mono, DevIcons) | `bufferline.nvim`, `lualine.nvim`, `statuscol.nvim`, `nvim-web-devicons`, `which-key.nvim`, `dashboard-nvim` | +| **fzf** | `search.nvim` | +| **pandoc** / **latex2html** | `render-markdown.nvim` (LaTeX block rendering) | +| **chafa** | `telescope-media-files.nvim` | +| **sqlite** | `yanky.nvim` | + +## :star2: Features - Modular Plugin Setup: Each plugin config is in its own Lua file (e.g., lua/plugin/git/git.lua), promoting clarity and easy updates. @@ -49,50 +69,10 @@ version control. coloring. - Quickkey Hints: which-key integration for discovering keybindings. -## Hotkeys - -| Group | Key(s) | Description | -|---------------------|----------------------|---------------------------------------| -| **File (⎈ f)** | `ff` | Find files (Telescope) | -| | `fr` | Recently opened files | -| | `fg` | Live grep | -| | `fb` | List buffers | -| | `fh` | Help tags | -| **Explorer (⎈ e)** | `e` | Toggle file tree | -| | `E` | Focus file tree | -| **Git (⎈ g)** | `gs` | Git status (Neogit) | -| | `gc` | Git commits | -| | `gb` | Git branches | -| | `gd` | Git diff | -| | `gp` | Git push | -| **LSP (⎈ l)** | `ld` | Go to definition | -| | `lh` | Hover documentation | -| | `li` | LSP info | -| | `lr` | Rename symbol | -| | `la` | Code action | -| | `lf` | Format document | -| | `le` | Show diagnostics | -| | `lq` | Set quickfix list | -| **Test/Debug (⎈ t)**| `tt` | Toggle test summary | -| | `tn` | Next test | -| | `tp` | Previous test | -| | `db` | Toggle breakpoint | -| | `dc` | Continue (debug) | -| | `dr` | Run to cursor | -| | `ds` | Step over | -| | `di` | Step into | -| **Search/Replace (⎈ s)** | `sr` | Replace in file | -| | `sR` | Replace in project | -| | `ss` | Search word under cursor | -| **Plugins (⎈ p)** | `pi` | Plugin install | -| | `pu` | Plugin update | -| | `ps` | Plugin sync | -| | `pc` | Plugin clean | - ## :heart: Acknowledgements I would like to thank the entire community, anyone who uses or is inspired by -my dotfiles. To everyone who inspired or helped me (I tried to indicate each +my config. To everyone who inspired or helped me (I tried to indicate each author in each script or file I borrowed fully or partially). If you like this project and want to express your gratitude - star this @@ -100,11 +80,12 @@ repository. Or you can donate. ### :star: Star history -[![Star History Chart](https://api.star-history.com/svg?repos=CelticBoozer/nvim-config&type=Timeline&theme=dark)](https://star-history.com/#CelticBoozer/nvim-config&Timeline) +![Star History Chart](https://api.star-history.com/svg?repos=CelticBoozer/nvim-config&type=Timeline&theme=dark) ### :coin: Donation + -| ![USDT-TRC20](.github/assets/USDT.jpg) | ![BTC](.github/assets/BTC.jpg) | ![ETH](.github/assets/ETH.jpg) | -|:----------------------------------:|:------------------------------------------:|:------------------------------------------:| -| USDT TRC20 | BTC | ETH | -| TGhY5bCn12EDP3MGgs8Qg4YerczhP3PsC5 | bc1qru2p84r3zecva68e804jtjqp923mx2eekqwg3a | 0xb00d88737B0BD4f5cb5fc7519b3d27045b796ceb | +| ![USDT-TRC20](.github/assets/USDT.jpg) | ![BTC](.github/assets/BTC.jpg) | ![ETH](.github/assets/ETH.jpg) | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| USDT TRC20 | BTC | ETH | +| TGhY5bCn12EDP3MGgs8Qg4YerczhP3PsC5 | bc1qru2p84r3zecva68e804jtjqp923mx2eekqwg3a | 0xb00d88737B0BD4f5cb5fc7519b3d27045b796ceb | diff --git a/init.lua b/init.lua index 5cc8973..1a1fafb 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,5 @@ -- NOTE: Core initialization file for Neovim configuration. Requires and sets up modules. + require("core.options") require("core.lazy") require("core.functions") diff --git a/lazy-lock.json b/lazy-lock.json index 28041be..642621f 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,76 +1,79 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, - "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, - "auto-session": { "branch": "main", "commit": "00334ee24b9a05001ad50221c8daffbeedaa0842" }, + "LuaSnip": { "branch": "master", "commit": "66b5c2707e624dcd2cd3605676c64a2efe47e9d1" }, + "auto-session": { "branch": "main", "commit": "fffb13dcbe8731b8650e5bf1caa749a485d20556" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, - "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, + "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, "cmp-dotenv": { "branch": "main", "commit": "4dd53aab60982f1f75848aec5e6214986263325e" }, "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, - "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, + "cmp-path": { "branch": "main", "commit": "e52e640b7befd8113b3350f46e8cfcfe98fcf730" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "code_runner.nvim": { "branch": "main", "commit": "b1f2e70bf9824ca1b7aa9478c71ec19f5984ecef" }, - "conform.nvim": { "branch": "master", "commit": "372fc521f8421b7830ea6db4d6ea3bae1c77548c" }, - "dashboard-nvim": { "branch": "master", "commit": "591b5b29e2f17b97496ec3179f6ecd08bb8502cc" }, - "decisive.nvim": { "branch": "main", "commit": "ead9188df6411a52d8859552b8332cb864d22171" }, + "code_runner.nvim": { "branch": "main", "commit": "65c8d11f507073b915f10faa88ea05bd4fbf69ce" }, + "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, + "dashboard-nvim": { "branch": "master", "commit": "c42fcfbd96dfcaa486c0a0ab52494316f1c31350" }, + "decisive.nvim": { "branch": "main", "commit": "c401541b8429b787d7dcb441e43bee63fc94737c" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, - "fine-cmdline.nvim": { "branch": "main", "commit": "aec9efebf6f4606a5204d49ffa3ce2eeb7e08a3e" }, - "garbage-day.nvim": { "branch": "main", "commit": "750ef08ae6031ee3683014c5349144340c08ead6" }, - "gitsigns.nvim": { "branch": "main", "commit": "ee28ba3e70ecea811b8f6d7b51d81976e94b121c" }, - "gruvbox-material": { "branch": "master", "commit": "f5f912fbc7cf2d45da6928b792d554f85c7aa89a" }, - "inc-rename.nvim": { "branch": "main", "commit": "726d28468e900e1172a04faeb7af0b18acd609e7" }, + "fine-cmdline.nvim": { "branch": "main", "commit": "7db181d1cb294581b12a036eadffffde762a118f" }, + "garbage-day.nvim": { "branch": "main", "commit": "cce4a0b394d33878bde3c1648f4e6b358e8769bb" }, + "gitsigns.nvim": { "branch": "main", "commit": "7bbc674278f22376850576dfdddf43bbc17e62b5" }, + "gruvbox-material": { "branch": "master", "commit": "66cfeb7050e081a746a62dd0400446433e802368" }, + "inc-rename.nvim": { "branch": "main", "commit": "a3e31af13844534c66041ce92f29af7745883875" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazygit.nvim": { "branch": "main", "commit": "b9eae3badab982e71abab96d3ee1d258f0c07961" }, + "lazygit.nvim": { "branch": "main", "commit": "4839ab642962cc76bb1bf278427dc4c59be15072" }, "lsp-progress.nvim": { "branch": "main", "commit": "f3df1df8f5ea33d082db047b5d2d2b83cc01cd8a" }, - "lsp_signature.nvim": { "branch": "master", "commit": "a793d02b6a5e639fa9d3f2a89a839fa688ab2d0a" }, + "lsp_signature.nvim": { "branch": "master", "commit": "d9c39937e4e0977357530e988aa8940078bb231f" }, "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, - "lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" }, - "lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "1255518cb067e038a4755f5cb3e980f79b6ab89c" }, - "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, - "neotest": { "branch": "master", "commit": "6267dcd577aa519c828d2526b05844770d3a2c6a" }, + "lspsaga.nvim": { "branch": "main", "commit": "8efe00d6aed9db6449969f889170f1a7e43101a1" }, + "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "7815740f4d0afb74ada00956c36e18ad695ed9e3" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, + "neotest": { "branch": "master", "commit": "61d1951131e6770c815243d84a27ccd0436ec61c" }, "neotest-bash": { "branch": "main", "commit": "57eab5b80a5296dc3fc5b22112b3ed78da3a5732" }, - "neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" }, - "neotest-python": { "branch": "master", "commit": "a2861ab3c9a0bf75a56b11835c2bfc8270f5be7e" }, - "neotest-rust": { "branch": "main", "commit": "e1cb22ecf0341fb894ef2ebde344389fe6e6fc8e" }, - "nui.nvim": { "branch": "main", "commit": "8d5b0b568517935d3c84f257f272ef004d9f5a59" }, - "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, + "neotest-jest": { "branch": "main", "commit": "797515e113ac8e19c6855046d7f746d9c0c39c15" }, + "neotest-python": { "branch": "master", "commit": "ed9b4d794b89044cc32e5476e637936331473c6e" }, + "neotest-rust": { "branch": "main", "commit": "6f79e8468a254d4fe59abf5ca8703c125c16a1e3" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" }, - "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" }, - "nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" }, - "nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" }, - "nvim-lspconfig": { "branch": "master", "commit": "94d0fec9135719e046903bbbbf8f39e3d3436d4e" }, + "nvim-dap": { "branch": "master", "commit": "cc77338e6e34c79f1c638f51ae4160dc9bfb05de" }, + "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, + "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, + "nvim-lint": { "branch": "master", "commit": "3c5e34c24834a67b1cb37600ab7663eefd2b0390" }, + "nvim-lspconfig": { "branch": "master", "commit": "592916db3f4ecdf062962b3aa83583aebe3c4a14" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" }, - "nvim-surround": { "branch": "main", "commit": "0e62500b98f4513feaaf7425c135472457ea5b7d" }, - "nvim-tree.lua": { "branch": "master", "commit": "582ae48c9e43d2bcd55dfcc8e2e7a1f29065d924" }, - "nvim-treesitter": { "branch": "master", "commit": "94ea4f436d2b59c80f02e293466c374584f03b8c" }, + "nvim-notify": { "branch": "master", "commit": "a22f5d7ac511c2df2fd3290a9f04c48d5a822e2e" }, + "nvim-surround": { "branch": "main", "commit": "8dd9150ca7eae5683660ea20cec86edcd5ca4046" }, + "nvim-tree.lua": { "branch": "master", "commit": "b0b49552c9462900a882fe772993b01d780445fe" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-ufo": { "branch": "main", "commit": "cac999ec9f6302d2fd4ad8a846bf8f731af6e7cf" }, - "nvim-web-devicons": { "branch": "master", "commit": "50b5b06bff13a9b4eab946de7c7033649a6618a1" }, + "nvim-ufo": { "branch": "main", "commit": "80fe8215ba566df2fbf3bf4d25f59ff8f41bc0e1" }, + "nvim-web-devicons": { "branch": "master", "commit": "a1366758b3a232036dc97be8ca41184aa3f50506" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" }, "reactive.nvim": { "branch": "master", "commit": "e0a22a42811ca1e7aa7531f931c55619aad68b5d" }, - "render-markdown.nvim": { "branch": "main", "commit": "8c33733b9af902250731539b2fe3920c76993765" }, + "render-markdown.nvim": { "branch": "main", "commit": "c3012098bd44381e3b96bbbbbcc21a54d45a286c" }, "search.nvim": { "branch": "main", "commit": "7b8f2315d031be73e14bc2d82386dfac15952614" }, + "sniprun": { "branch": "master", "commit": "a90c65846c3c18efc3f799d8b6dc26af9d4a69ed" }, + "sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" }, "sqls.nvim": { "branch": "main", "commit": "d1bc5421ef3e8edc5101e37edbb7de6639207a09" }, - "statuscol.nvim": { "branch": "main", "commit": "a2580e009a3b4c51b5978768d907dafae2c919ac" }, + "statuscol.nvim": { "branch": "main", "commit": "c46172d0911aa5d49ba5f39f4351d1bb7aa289cc" }, "supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" }, "telescope-docker.nvim": { "branch": "main", "commit": "4219840291d9e3e64f6b8eefa11e8deb14357581" }, "telescope-media-files.nvim": { "branch": "master", "commit": "0826c7a730bc4d36068f7c85cf4c5b3fd9fb570a" }, "telescope-undo.nvim": { "branch": "main", "commit": "928d0c2dc9606e01e2cc547196f48d2eaecf58e5" }, - "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, "tiny-devicons-auto-colors.nvim": { "branch": "main", "commit": "51f548421f8a74680eff27d283c9d5ea6e8d0074" }, - "tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "cd401038de4cbae37651cfe02510294ccf5cdc98" }, + "tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "7c1595733366d25ddd3a6785cf6327e2e460bae9" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, "virt-column.nvim": { "branch": "master", "commit": "b87e3e0864211a32724a2ebf3be37e24e9e2fa99" }, - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, + "yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" } } diff --git a/lua/core/options.lua b/lua/core/options.lua index 8c97706..2a24193 100644 --- a/lua/core/options.lua +++ b/lua/core/options.lua @@ -46,6 +46,11 @@ o.termguicolors = true o.background = "dark" o.foldlevel = 99 +vim.g.loaded_perl_provider = 0 +vim.g.loaded_ruby_provider = 0 +vim.g.loaded_python3_provider = 0 +vim.g.loaded_node_provider = 0 + vim.diagnostic.config({ severity_sort = true, -- Sort all diagnostics by severity }) diff --git a/lua/plugin/lsp/conform.lua b/lua/plugin/lsp/conform.lua index a162d36..e0699ae 100644 --- a/lua/plugin/lsp/conform.lua +++ b/lua/plugin/lsp/conform.lua @@ -25,12 +25,9 @@ return { lsp_fallback = true, }, formatters_by_ft = { - python = { "ruff" }, - lua = { "stylua" }, + java = { "google-java-format" }, markdown = { "markdownlint" }, - sh = { "shfmt" }, - json = { "prettier" }, - yaml = { "yamlfmt" }, + groovy = { "npm-groovy-lint" }, html = { "prettier" }, css = { "prettier" }, javascript = { "prettier" }, @@ -38,10 +35,16 @@ return { javascriptreact = { "prettier" }, typescriptreact = { "prettier" }, svelte = { "prettier" }, - java = { "google-java-format" }, graphql = { "prettier" }, + json = { "prettier" }, + jsonc = { "prettier" }, + python = { "ruff" }, + sh = { "shfmt" }, sql = { "sqlfluff" }, + lua = { "stylua" }, + toml = { "taplo" }, xml = { "xmlformatter" }, + yaml = { "yamlfmt" }, ["_"] = { "trim_whitespace" }, }, formatters = { diff --git a/lua/plugin/lsp/lint.lua b/lua/plugin/lsp/lint.lua index 2ab4a90..02034cc 100644 --- a/lua/plugin/lsp/lint.lua +++ b/lua/plugin/lsp/lint.lua @@ -6,21 +6,23 @@ return { event = "VeryLazy", opts = { linters_by_ft = { - python = { "ruff" }, - lua = { "luacheck" }, - dockerfile = { "hadolint" }, - sh = { "shellcheck" }, - json = { "jsonlint" }, - yaml = { "yamllint" }, + java = { "checkstyle" }, + ["*"] = { "cspell" }, javascript = { "eslint_d" }, typescript = { "eslint_d" }, javascriptreact = { "eslint_d" }, typescriptreact = { "eslint_d" }, - css = { "stylelint" }, - java = { "checkstyle" }, + dockerfile = { "hadolint" }, + json = { "jsonlint" }, + jsonc = { "jsonlint" }, + lua = { "luacheck" }, + markdown = { "markdownlint" }, + groovy = { "npm-groovy-lint" }, + python = { "ruff" }, + sh = { "shellcheck" }, sql = { "sqlfluff" }, - markdown = { "markdownlint", "cspell" }, - ["*"] = { "cspell" }, + css = { "stylelint" }, + yaml = { "yamllint" }, }, }, config = function(_, opts) diff --git a/lua/plugin/lsp/lspconfig.lua b/lua/plugin/lsp/lspconfig.lua index f404d4b..331c318 100644 --- a/lua/plugin/lsp/lspconfig.lua +++ b/lua/plugin/lsp/lspconfig.lua @@ -17,23 +17,13 @@ return { } return capabilities end, - signs = { Error = "", Warn = "", Hint = "", Info = "", }, - servers = { - lua_ls = { - settings = { - Lua = { - runtime = { version = "LuaJIT" }, - workspace = { checkThirdParty = false }, - }, - }, - }, bashls = {}, cssls = {}, dockerls = {}, @@ -44,12 +34,12 @@ return { jdtls = {}, jsonls = {}, lemminx = {}, + lua_ls = {}, marksman = {}, sqlls = {}, + ruff = {}, taplo = {}, - ts_ls = {}, yamlls = {}, - pylsp = {}, }, }, config = function(_, opts) diff --git a/lua/plugin/lsp/mason.lua b/lua/plugin/lsp/mason.lua index 0e6f165..50a203a 100644 --- a/lua/plugin/lsp/mason.lua +++ b/lua/plugin/lsp/mason.lua @@ -29,22 +29,22 @@ return { -- Configure Mason LSPconfig to ensure necessary LSP servers are installed automatically require("mason-lspconfig").setup({ ensure_installed = { - "pylsp", - "lua_ls", - "marksman", - "dockerls", "bashls", - "jsonls", - "yamlls", - "taplo", - "html", "cssls", + "docker_compose_language_service", + "dockerls", "eslint", - "ts_ls", - "jdtls", "groovyls", - "sqlls", + "html", + "jdtls", + "jsonls", "lemminx", + "lua_ls", + "marksman", + "ruff", + "sqlls", + "taplo", + "yamlls", }, automatic_installation = true, }) @@ -53,7 +53,6 @@ return { require("mason-tool-installer").setup({ ensure_installed = { -- Linters - "ruff", "checkstyle", "cspell", "eslint_d", @@ -61,22 +60,23 @@ return { "jsonlint", "luacheck", "markdownlint", + "npm-groovy-lint", + "ruff", "shellcheck", "sqlfluff", "stylelint", "yamllint", -- Formatters - "stylua", - "shfmt", - "yamlfmt", - "prettier", "google-java-format", - "sql-formatter", + "prettier", + "shfmt", + "stylua", "xmlformatter", + "yamlfmt", -- DAP Tools - "firefox-debug-adapter", - "debugpy", "bash-debug-adapter", + "debugpy", + "firefox-debug-adapter", }, }) end, diff --git a/lua/plugin/syntax/treesitter.lua b/lua/plugin/syntax/treesitter.lua index 096ff8c..3afdd39 100644 --- a/lua/plugin/syntax/treesitter.lua +++ b/lua/plugin/syntax/treesitter.lua @@ -45,4 +45,7 @@ return { }, }, }, + config = function(_, opts) + require("nvim-treesitter.configs").setup(opts) + end, } diff --git a/lua/plugin/ui/bufferline.lua b/lua/plugin/ui/bufferline.lua index 5d58996..52ff048 100644 --- a/lua/plugin/ui/bufferline.lua +++ b/lua/plugin/ui/bufferline.lua @@ -15,14 +15,19 @@ return { style = "underline", }, buffer_close_icon = "", - modified_icon = "", + modified_icon = "", close_icon = "", left_trunc_marker = "", right_trunc_marker = "", diagnostics = "nvim_lsp", diagnostics_indicator = function(count, level) - local icon = level:match("error") and " " or " " - return icon .. count + local icons = { + error = " ", + warning = " ", + info = " ", + hint = " ", + } + return (icons[level] or "?") .. count end, offsets = { { @@ -48,18 +53,160 @@ return { }, }, highlights = { - separator = { - fg = "#252423", + fill = { + fg = "#d4be98", bg = "#32302f", }, - separator_selected = { - fg = "#252423", - bg = "#32302f", + background = { + fg = "#7c6f64", + bg = "#252423", }, - fill = { + close_button = { + fg = "#7c6f64", + bg = "#252423", + }, + close_button_selected = { + fg = "#d4be98", + bg = "#7c6f64", + }, + buffer_selected = { + fg = "#d4be98", + bg = "#7c6f64", + bold = true, + italic = true, + }, + numbers = { + fg = "#7c6f64", + bg = "#252423", + }, + numbers_selected = { + fg = "#d4be98", + bg = "#7c6f64", + bold = true, + italic = true, + }, + hint = { + fg = "#a9b665", + bg = "#252423", + sp = "#a9b665", + }, + hint_selected = { + fg = "#a9b665", + bg = "#7c6f64", + sp = "#a9b665", + bold = true, + italic = true, + }, + hint_diagnostic = { + fg = "#a9b665", + bg = "#252423", + sp = "#a9b665", + }, + hint_diagnostic_selected = { + fg = "#a9b665", + bg = "#7c6f64", + sp = "#a9b665", + bold = true, + italic = true, + }, + info = { + fg = "#89b482", + bg = "#252423", + sp = "#89b482", + }, + info_selected = { + fg = "#89b482", + bg = "#7c6f64", + sp = "#89b482", + bold = true, + italic = true, + }, + info_diagnostic = { + fg = "#89b482", + bg = "#252423", + sp = "#89b482", + }, + info_diagnostic_selected = { + fg = "#89b482", + bg = "#7c6f64", + sp = "#89b482", + bold = true, + italic = true, + }, + warning = { + fg = "#d8a657", + bg = "#252423", + sp = "#d8a657", + }, + warning_selected = { + fg = "#d8a657", + bg = "#7c6f64", + sp = "#d8a657", + bold = true, + italic = true, + }, + warning_diagnostic = { + fg = "#d8a657", + bg = "#252423", + sp = "#d8a657", + }, + warning_diagnostic_selected = { + fg = "#d8a657", + bg = "#7c6f64", + sp = "#d8a657", + bold = true, + italic = true, + }, + error = { + fg = "#ea6962", + bg = "#252423", + sp = "#ea6962", + }, + error_selected = { + fg = "#ea6962", + bg = "#7c6f64", + sp = "#ea6962", + bold = true, + italic = true, + }, + error_diagnostic = { + fg = "#ea6962", + bg = "#252423", + sp = "#ea6962", + }, + error_diagnostic_selected = { + fg = "#ea6962", + bg = "#7c6f64", + sp = "#ea6962", + bold = true, + italic = true, + }, + modified = { + fg = "#a9b665", + bg = "#252423", + }, + modified_selected = { + fg = "#a9b665", + bg = "#7c6f64", + }, + duplicate = { + fg = "#7c6f64", + bg = "#252423", + italic = true, + }, + duplicate_selected = { + fg = "#d4be98", + bg = "#7c6f64", + italic = true, + }, + separator = { fg = "#252423", bg = "#252423", }, + separator_selected = { + fg = "#252423", + bg = "#7c6f64", + }, }, }, } diff --git a/lua/plugin/ui/lualine.lua b/lua/plugin/ui/lualine.lua index a2f1770..a232e5c 100644 --- a/lua/plugin/ui/lualine.lua +++ b/lua/plugin/ui/lualine.lua @@ -45,7 +45,7 @@ return { "filename", path = 1, symbols = { - modified = "● ", + modified = " ", readonly = " ", unnamed = " ", }, diff --git a/lua/plugin/util/code_runner.lua b/lua/plugin/util/code_runner.lua index a43faef..c2dcd89 100644 --- a/lua/plugin/util/code_runner.lua +++ b/lua/plugin/util/code_runner.lua @@ -6,8 +6,8 @@ return { cmd = { "RunCode", "RunFile", "RunProject" }, keys = { { "er", "RunCode", desc = "Run code" }, - { "erf", "RunFile", desc = "Run file" }, - { "erp", "RunProject", desc = "Run project" }, + { "ef", "RunFile", desc = "Run file" }, + { "ep", "RunProject", desc = "Run project" }, }, opts = { mode = "term", @@ -16,19 +16,5 @@ return { position = "bot", size = 15, }, - filetype = { - java = { - "cd $dir &&", - "javac $fileName &&", - "java $fileNameWithoutExt", - }, - python = "python3 -u", - typescript = "deno run", - rust = { - "cd $dir &&", - "rustc $fileName &&", - "$dir/$fileNameWithoutExt", - }, - }, }, } diff --git a/lua/plugin/util/search.lua b/lua/plugin/util/search.lua index 7a1ca88..cb6aac6 100644 --- a/lua/plugin/util/search.lua +++ b/lua/plugin/util/search.lua @@ -29,10 +29,6 @@ return { name = "Grep", tele_func = require("telescope.builtin").live_grep, }, - { - name = "Git files", - tele_func = require("telescope.builtin").git_files, - }, { name = "Buffers", tele_func = require("telescope.builtin").buffers, @@ -61,6 +57,12 @@ return { require("telescope").extensions.undo.undo() end, }, + { + name = "Clipboard history", + tele_func = function() + require("telescope").extensions.yank_history.yank_history() + end, + }, }, }, } diff --git a/lua/plugin/util/sniprun.lua b/lua/plugin/util/sniprun.lua new file mode 100644 index 0000000..d4b0728 --- /dev/null +++ b/lua/plugin/util/sniprun.lua @@ -0,0 +1,12 @@ +-- INFO: Runs code snippent independently +-- NOTE: Provides result in notification + +return { + "michaelb/sniprun", + keys = { + { "es", "SnipRun", desc = "Run snippet", mode = "v" }, + }, + opts = { + display = { "NvimNotify" }, + }, +} diff --git a/lua/plugin/util/supermaven.lua b/lua/plugin/util/supermaven.lua index 860e7de..dd999b8 100644 --- a/lua/plugin/util/supermaven.lua +++ b/lua/plugin/util/supermaven.lua @@ -5,16 +5,8 @@ return { "supermaven-inc/supermaven-nvim", config = function() require("supermaven-nvim").setup({ - keymaps = { - accept_suggestion = "", - clear_suggestion = "", - accept_word = "", - }, - color = { - suggestion_color = "#7daea3", - cterm = 244, - }, log_level = "info", + disable_inline_completion = true, condition = function() return false end, diff --git a/lua/plugin/util/telescope.lua b/lua/plugin/util/telescope.lua index 508a611..da10475 100644 --- a/lua/plugin/util/telescope.lua +++ b/lua/plugin/util/telescope.lua @@ -21,8 +21,30 @@ return { "node_modules", ".git", ".cache", - "%.jpg", - "%.png", + }, + }, + pickers = { + buffers = { + mappings = { + i = { + [""] = require("telescope.actions").delete_buffer + require("telescope.actions").move_to_top, + [""] = require("telescope.actions").select_tab, + }, + n = { + ["d"] = require("telescope.actions").delete_buffer + require("telescope.actions").move_to_top, + ["t"] = require("telescope.actions").select_tab, + }, + }, + }, + live_grep = { + mappings = { + i = { + [""] = require("telescope.actions").select_tab, + }, + n = { + ["t"] = require("telescope.actions").select_tab, + }, + }, }, }, extensions = { diff --git a/lua/plugin/util/which-key.lua b/lua/plugin/util/which-key.lua index b3a8ca7..6328ddd 100644 --- a/lua/plugin/util/which-key.lua +++ b/lua/plugin/util/which-key.lua @@ -32,12 +32,13 @@ return { -- Common prefix registrations wk.add({ + { "a", group = "Action", icon = " " }, { "c", group = "Comment", icon = "󰿟 " }, - { "d", group = "Debug" }, + { "d", group = "Debug", icon = " " }, { "e", group = "Execute", icon = " " }, { "f", group = "Find", icon = " " }, - { "r", group = "Refactor" }, - { "s", group = "Session" }, + { "r", group = "Refactor", icon = " " }, + { "s", group = "Session", icon = " " }, { "t", group = "Tool panels", icon = " " }, }) end, diff --git a/lua/plugin/util/yanky.lua b/lua/plugin/util/yanky.lua new file mode 100644 index 0000000..a283d7c --- /dev/null +++ b/lua/plugin/util/yanky.lua @@ -0,0 +1,38 @@ +-- INFO: yanky.nvim is great clipboard manager +-- NOTE: Use it as a telescope picker + +return { + "gbprod/yanky.nvim", + dependencies = { + { "kkharji/sqlite.lua" }, + }, + opts = { + ring = { storage = "sqlite" }, + }, + config = function() + local utils = require("yanky.utils") + local mapping = require("yanky.telescope.mapping") + + require("yanky").setup({ + picker = { + telescope = { + mappings = { + default = mapping.put("p"), + i = { + [""] = mapping.put("p"), + [""] = mapping.put("P"), + [""] = mapping.delete(), + [""] = mapping.set_register(utils.get_default_register()), + }, + n = { + p = mapping.put("p"), + P = mapping.put("P"), + d = mapping.delete(), + y = mapping.set_register(utils.get_default_register()), + }, + }, + }, + }, + }) + end, +}