Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/cspell/repo_soft.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,10 @@ luacheck
yamlfmt
neogit
luarocks
Luasnip
lualine
devicons
lazygit
Gruvbox
Quickkey
lspconfig
16 changes: 15 additions & 1 deletion .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,21 @@
-- luacheck:ignore 111

std = {
globals = { "vim", "require", "strategy", "query", "globals", "math" }, -- these globals can be set and accessed.
globals = {
"vim",
"require",
"strategy",
"query",
"globals",
"math",
"pcall",
"os",
"pairs",
"string",
"table",
"ipairs",
},
}

codes = true
ranges = true
10 changes: 2 additions & 8 deletions .luarc.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
{
"diagnostics.globals": [
"vim",
"globals",
"std",
"codes",
"ranges"
]
}
"diagnostics.globals": ["vim", "globals", "std", "codes", "ranges"]
}
49 changes: 48 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,24 @@
![markdownlint](https://img.shields.io/github/actions/workflow/status/CelticBoozer/nvim-config/markdownlint.yaml?branch=master&label=markdownlint)
![cspell](https://img.shields.io/github/actions/workflow/status/CelticBoozer/nvim-config/cspell.yaml?branch=master&label=cspell)

## External dependencies
**Welcome to my Neovim configuration repository!** This config is designed as a
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

1. **Install Neovim** (version >= 0.8) on your system.
2. **Clone this repo** into your config directory:

```bash
git clone https://github.com/CelticBoozer/nvim-config.git ~/.config/nvim
```
<!-- markdownlint-disable-file MD029 -->
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.
<!-- markdownlint-diable-file MD013 -->
|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) |
Expand All @@ -22,3 +38,34 @@
| 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

- Modular Plugin Setup: Each plugin config is in its own Lua file (e.g.,
lua/plugin/git/git.lua), promoting clarity and easy updates.
- LSP & Treesitter: Built-in support for many languages via Mason, lspconfig,
and Treesitter.
- Completion & Snippets: Autocompletion with nvim-cmp and Luasnip.
- Statusline & Icons: Beautiful statusline (lualine) and file icons
(nvim-web-devicons) with auto color adaptation.
- Git Integration: Lazy-loaded Git plugins (e.g., lazygit) for in-editor
version control.
- Theming: Gruvbox Material colorscheme with UI tweaks, plus dynamic icon
coloring.
- Quickkey Hints: which-key integration for discovering keybindings.

## 📚 Usage Examples
<!-- markdownlint-disable-file MD033 -->
- Open Telescope file search: <leader>ff
- Toggle NvimTree: <leader>te
- Git status (lazygit): <leader>gg
- LSP actions: <leader>aa for code actions, <leader>tl for diagnostics, etc.
- Color preview: Hex color codes will display actual colors via nvim-colorizer.lua
when opening relevant files.

[PLACE IMAGE HERE] – (e.g., screenshot of Neovim with this config)

## ⭐ Stay Updated

If you find this configuration helpful, consider starring the repo! Feedback
and suggestions are always appreciated.
4 changes: 1 addition & 3 deletions init.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
-- init.lua
-- NOTE: Core initialization file for Neovim configuration. Requires and sets up modules.
require("core.options")

-- Bootstrap and setup lazy.nvim through its own plugin spec
require("core.lazy")

-- Safe telescope extension loading
Expand Down
52 changes: 28 additions & 24 deletions lazy-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,71 +2,75 @@
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
"auto-session": { "branch": "main", "commit": "00334ee24b9a05001ad50221c8daffbeedaa0842" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-dotenv": { "branch": "main", "commit": "4dd53aab60982f1f75848aec5e6214986263325e" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"code_runner.nvim": { "branch": "main", "commit": "ca64b5bb70730fca03c57d8edee6623863f3fbcb" },
"conform.nvim": { "branch": "master", "commit": "eebc724d12c5579d733d1f801386e0ceb909d001" },
"dashboard-nvim": { "branch": "master", "commit": "000448d837f6e7a47f8f342f29526c4d7e49e9ce" },
"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" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"fine-cmdline.nvim": { "branch": "main", "commit": "aec9efebf6f4606a5204d49ffa3ce2eeb7e08a3e" },
"garbage-day.nvim": { "branch": "main", "commit": "750ef08ae6031ee3683014c5349144340c08ead6" },
"gruvbox-material": { "branch": "master", "commit": "146f40fd42cbef30fed69b4ef51329aeeaceb909" },
"gitsigns.nvim": { "branch": "main", "commit": "8dec8da8ed8a4463cc6abcd3cc3801373600767d" },
"gruvbox-material": { "branch": "master", "commit": "f5f912fbc7cf2d45da6928b792d554f85c7aa89a" },
"inc-rename.nvim": { "branch": "main", "commit": "87ebe7bee0b83d3b6e4f1494c74abed21b318175" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazygit.nvim": { "branch": "main", "commit": "b9eae3badab982e71abab96d3ee1d258f0c07961" },
"lsp-progress.nvim": { "branch": "main", "commit": "f3df1df8f5ea33d082db047b5d2d2b83cc01cd8a" },
"lsp_signature.nvim": { "branch": "master", "commit": "15bb33cdb47e85278e168cad11acb1b6fa9c6488" },
"lsp_signature.nvim": { "branch": "master", "commit": "a793d02b6a5e639fa9d3f2a89a839fa688ab2d0a" },
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
"lspsaga.nvim": { "branch": "main", "commit": "778d56ff9b387dacd14ae648ed5604394b486f51" },
"lualine.nvim": { "branch": "master", "commit": "86fe39534b7da729a1ac56c0466e76f2c663dc42" },
"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" },
"neogit": { "branch": "master", "commit": "97f83f1dc51dee41e08e3c7a8adf00e1083e3178" },
"neotest": { "branch": "master", "commit": "747775fc22dfeb6102bdde6559ccb5126dac0ff8" },
"neotest": { "branch": "master", "commit": "6267dcd577aa519c828d2526b05844770d3a2c6a" },
"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": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
"nui.nvim": { "branch": "main", "commit": "8d5b0b568517935d3c84f257f272ef004d9f5a59" },
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-dap": { "branch": "master", "commit": "7aade9e99bef5f0735cf966e715b3ce45515d786" },
"nvim-dap-ui": { "branch": "master", "commit": "881a69e25bd6658864fab47450025490b74be878" },
"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": "5b1bdf306bd3e565908145279e8bbfc594dac3b3" },
"nvim-lspconfig": { "branch": "master", "commit": "3a7387a9c980304059b2bd7075684d6ef98ff331" },
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
"nvim-lspconfig": { "branch": "master", "commit": "2e3f389aa06c7b7c29600ec2e67ee64c332077eb" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
"nvim-surround": { "branch": "main", "commit": "caf6f633d4d77a29b6e265b560c5a035d171a913" },
"nvim-tree.lua": { "branch": "master", "commit": "5bea2b37523a31288e0fcab42f3be5c1bd4516bb" },
"nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" },
"nvim-surround": { "branch": "main", "commit": "0e62500b98f4513feaaf7425c135472457ea5b7d" },
"nvim-tree.lua": { "branch": "master", "commit": "582ae48c9e43d2bcd55dfcc8e2e7a1f29065d924" },
"nvim-treesitter": { "branch": "master", "commit": "3b308861a8d7d7bfbe9be51d52e54dcfd9fe3d38" },
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
"nvim-ufo": { "branch": "main", "commit": "a026364df62e88037b26d37c9f14c17c006fd577" },
"nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" },
"nvim-ufo": { "branch": "main", "commit": "cac999ec9f6302d2fd4ad8a846bf8f731af6e7cf" },
"nvim-web-devicons": { "branch": "master", "commit": "50b5b06bff13a9b4eab946de7c7033649a6618a1" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "c921526c23fe94e3da5132fea5ca9ee3c3068a90" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
"reactive.nvim": { "branch": "master", "commit": "e0a22a42811ca1e7aa7531f931c55619aad68b5d" },
"render-markdown.nvim": { "branch": "main", "commit": "8355c85e4a34c2071fb9c78295aedf877116648b" },
"render-markdown.nvim": { "branch": "main", "commit": "7f81e9dcc15504c044f20df39d28a590cd5c6ca5" },
"search.nvim": { "branch": "main", "commit": "7b8f2315d031be73e14bc2d82386dfac15952614" },
"sqls.nvim": { "branch": "main", "commit": "d1bc5421ef3e8edc5101e37edbb7de6639207a09" },
"statuscol.nvim": { "branch": "main", "commit": "c399884e8f64019ec9bb581251f9710915b7f996" },
"statuscol.nvim": { "branch": "main", "commit": "a2580e009a3b4c51b5978768d907dafae2c919ac" },
"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" },
"tiny-devicons-auto-colors.nvim": { "branch": "main", "commit": "51f548421f8a74680eff27d283c9d5ea6e8d0074" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "220cba7596cc2ff95c251d3173b26eaf9924ec10" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "cd401038de4cbae37651cfe02510294ccf5cdc98" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"virt-column.nvim": { "branch": "master", "commit": "b87e3e0864211a32724a2ebf3be37e24e9e2fa99" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}
3 changes: 2 additions & 1 deletion lua/core/lazy.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
-- NOTE: Essential foundation for plugin management. Handles installation, updates, and lazy loading.

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({
Expand All @@ -22,6 +23,7 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then
os.exit(1)
end
end

vim.opt.rtp:prepend(lazypath)

-- Setup lazy.nvim
Expand All @@ -31,7 +33,6 @@ require("lazy").setup({
{ import = "plugin.completion" },
{ import = "plugin.dap" },
{ import = "plugin.editor" },
{ import = "plugin.git" },
{ import = "plugin.lsp" },
{ import = "plugin.syntax" },
{ import = "plugin.testing" },
Expand Down
8 changes: 5 additions & 3 deletions lua/core/options.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
-- INFO: Editor and UI settings for Neovim
-- NOTE: Configure line numbers, indentation, splits, and more.
local o = vim.opt

-- Set lines enable
-- Set line numbering
o.number = true
o.relativenumber = true

Expand All @@ -13,10 +15,10 @@ o.smartindent = true
-- Save changes automatically
o.autowriteall = true

-- Enable cursor higlighting
-- Enable cursor highlighting
o.cursorline = true

-- Search ingroing case
-- Search ignoring case
o.ignorecase = true

-- Split rules
Expand Down
2 changes: 0 additions & 2 deletions lua/plugin/colors/colorscheme.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ return {
for option, value in pairs(opts) do
vim.g["gruvbox_material_" .. option] = value
end

-- Set colorscheme
vim.cmd.colorscheme("gruvbox-material")

-- Custom float window styling
vim.api.nvim_set_hl(0, "NormalFloat", { fg = "#d4be98" })
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "#d4be98" })
Expand Down
8 changes: 0 additions & 8 deletions lua/plugin/completion/cmp-dotenv.lua

This file was deleted.

19 changes: 6 additions & 13 deletions lua/plugin/completion/cmp.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-- INFO: .env file completions
-- NOTE: Provides environment variable suggestions for .env files
-- INFO: Autocompletion configuration using nvim-cmp with integrations for LSP, snippets, and other completion sources.
-- NOTE: This configuration integrates nvim-autopairs, custom formatting, and provides experimental ghost text.

return {
"hrsh7th/nvim-cmp",
Expand All @@ -13,10 +13,12 @@ return {
"saadparwaiz1/cmp_luasnip",
"onsails/lspkind.nvim",
"windwp/nvim-autopairs",
"SergioRibera/cmp-dotenv", -- add dotenv plugin as dependency
"SergioRibera/cmp-dotenv",
},
config = function()
local cmp = require("cmp")

-- Initialize autopairs integration for automatic closing.
require("nvim-autopairs").setup()
cmp.event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done())

Expand All @@ -31,8 +33,8 @@ return {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
-- You can comment out the global dotenv source if you want it only in .env files:
{ name = "dotenv" },
{ name = "supermaven" },
},
formatting = {
format = require("lspkind").cmp_format({
Expand All @@ -50,14 +52,5 @@ return {
},
},
})

-- Optional: if you want dotenv completions only for .env files, you can remove it from the
-- global sources list above and add it here:
--
-- cmp.setup.filetype("env", {
-- sources = {
-- { name = "dotenv" },
-- },
-- })
end,
}
14 changes: 2 additions & 12 deletions lua/plugin/dap/dap-ui.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-- INFO: Debug Adapter Protocol UI with interactive elements
-- NOTE: Provides visual debugging interface with variable inspection and REPL
-- NOTE: Provides visual debugging interface with variable inspection and REPL.

return {
"rcarriga/nvim-dap-ui",
Expand All @@ -22,13 +22,6 @@ return {
desc = "Evaluate expression",
mode = { "n", "v" },
},
{
"<leader>db",
function()
require("dap").toggle_breakpoint()
end,
desc = "Toggle breakpoint",
},
},
opts = {
icons = {
Expand All @@ -48,10 +41,7 @@ return {
position = "left",
},
{
elements = {
"repl",
"console",
},
elements = { "repl", "console" },
size = 0.25,
position = "bottom",
},
Expand Down
Loading