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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ Nerd fonts - lazy, whichkey
python3
deno
rg - lspsaga,

ueberzug (for media previews), docker-cli
15 changes: 14 additions & 1 deletion init.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
-- init.lua
require("core.options")

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

require("telescope").load_extension("media_files")
-- Safe telescope extension loading
vim.api.nvim_create_autocmd("User", {
pattern = "LazyDone",
callback = function()
pcall(function()
require("telescope").load_extension("media_files")
require("telescope").load_extension("docker")
require("telescope").load_extension("undo")
end)
end,
})
70 changes: 44 additions & 26 deletions lazy-lock.json
Original file line number Diff line number Diff line change
@@ -1,56 +1,74 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"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" },
"conform.nvim": { "branch": "master", "commit": "db8a4a9edb217067b1d7a2e0362c74bfe9cc944d" },
"code_runner.nvim": { "branch": "main", "commit": "ca64b5bb70730fca03c57d8edee6623863f3fbcb" },
"conform.nvim": { "branch": "master", "commit": "eebc724d12c5579d733d1f801386e0ceb909d001" },
"dashboard-nvim": { "branch": "master", "commit": "000448d837f6e7a47f8f342f29526c4d7e49e9ce" },
"decisive.nvim": { "branch": "main", "commit": "ead9188df6411a52d8859552b8332cb864d22171" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
"fine-cmdline.nvim": { "branch": "main", "commit": "aec9efebf6f4606a5204d49ffa3ce2eeb7e08a3e" },
"garbage-day.nvim": { "branch": "main", "commit": "750ef08ae6031ee3683014c5349144340c08ead6" },
"gruvbox-material": { "branch": "master", "commit": "146f40fd42cbef30fed69b4ef51329aeeaceb909" },
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
"inc-rename.nvim": { "branch": "main", "commit": "f9b9e5b9a75074810f40881b7e254b5bbeaf122e" },
"indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" },
"inc-rename.nvim": { "branch": "main", "commit": "87ebe7bee0b83d3b6e4f1494c74abed21b318175" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lsp-progress.nvim": { "branch": "main", "commit": "f3df1df8f5ea33d082db047b5d2d2b83cc01cd8a" },
"lsp_signature.nvim": { "branch": "master", "commit": "02629e5bc38f6cb1a49bb43ff4a441f23335a933" },
"lsp_signature.nvim": { "branch": "master", "commit": "15bb33cdb47e85278e168cad11acb1b6fa9c6488" },
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
"lspsaga.nvim": { "branch": "main", "commit": "6063935cf68de9aa6dd79f8e1caf5df0a9385de3" },
"lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" },
"lspsaga.nvim": { "branch": "main", "commit": "778d56ff9b387dacd14ae648ed5604394b486f51" },
"lualine.nvim": { "branch": "master", "commit": "86fe39534b7da729a1ac56c0466e76f2c663dc42" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "5639d58a3d11ff7c05c8e31e159bfedae55d7961" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "1255518cb067e038a4755f5cb3e980f79b6ab89c" },
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
"mini.icons": { "branch": "main", "commit": "ec61af6e606fc89ee3b1d8f2f20166a3ca917a36" },
"neo-tree.nvim": { "branch": "main", "commit": "40dd57777a96d0728f6758874b141f409466e2da" },
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
"neogit": { "branch": "master", "commit": "97f83f1dc51dee41e08e3c7a8adf00e1083e3178" },
"neotest": { "branch": "master", "commit": "747775fc22dfeb6102bdde6559ccb5126dac0ff8" },
"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" },
"nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" },
"nvim-cmp": { "branch": "main", "commit": "c27370703e798666486e3064b64d59eaf4bdc6d5" },
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-jdtls": { "branch": "master", "commit": "2f7bff9b8d2ee1918b36ca55f19547d9d335a268" },
"nvim-lint": { "branch": "master", "commit": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8" },
"nvim-lspconfig": { "branch": "master", "commit": "fd26f8626c03b424f7140d454031d1dcb8d23513" },
"nvim-treesitter": { "branch": "master", "commit": "59573f96164ab3725a2358fe8ffe69e8291d9549" },
"nvim-dap": { "branch": "master", "commit": "7aade9e99bef5f0735cf966e715b3ce45515d786" },
"nvim-dap-ui": { "branch": "master", "commit": "7c9207dcc2dfb52d3c3435f02a59948f5076eb9e" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" },
"nvim-lint": { "branch": "master", "commit": "5b1bdf306bd3e565908145279e8bbfc594dac3b3" },
"nvim-lspconfig": { "branch": "master", "commit": "f9b6a702b7430aff0770c04771f2dba78163d2c6" },
"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": "0e21ee8df6235511c02bab4a5b391d18e165a58d" },
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
"nvim-ufo": { "branch": "main", "commit": "a52c92c3bbaa10f0c9b547a50adaa8c7d8b29f94" },
"nvim-web-devicons": { "branch": "master", "commit": "ab4cfee554e501f497bce0856788d43cf2eb93d7" },
"peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" },
"nvim-ufo": { "branch": "main", "commit": "a026364df62e88037b26d37c9f14c17c006fd577" },
"nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "c2255b20bb1accb0e83e70f995adf99b78dee13d" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "351e449683070a2bb946bbd603555faf5a195e9a" },
"reactive.nvim": { "branch": "master", "commit": "e0a22a42811ca1e7aa7531f931c55619aad68b5d" },
"render-markdown.nvim": { "branch": "main", "commit": "8bb0d4725cc4909a603158d44ff28b6158ad9278" },
"search.nvim": { "branch": "main", "commit": "7b8f2315d031be73e14bc2d82386dfac15952614" },
"sqls.nvim": { "branch": "main", "commit": "d1bc5421ef3e8edc5101e37edbb7de6639207a09" },
"statuscol.nvim": { "branch": "main", "commit": "c399884e8f64019ec9bb581251f9710915b7f996" },
"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": "814f102cd1da3dc78c7d2f20f2ef3ed3cdf0e6e4" },
"telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" },
"tiny-devicons-auto-colors.nvim": { "branch": "main", "commit": "51f548421f8a74680eff27d283c9d5ea6e8d0074" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "842983e91e0b8825f1084b8323c7806c8bf64c74" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}
9 changes: 1 addition & 8 deletions lua/core/options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,8 @@ o.mousemoveevent = true
o.termguicolors = true
o.background = "dark"

-- UFO folding
vim.o.foldcolumn = "1" -- '0' is not bad
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevelstart = 99
vim.o.foldenable = true
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]

vim.diagnostic.config({
severity_sort = true, -- Sort all diagnostics by severity
-- Optional: Reverse sort order (highest first is default)
severity_sort = { reverse = false }
severity_sort = { reverse = false },
})
20 changes: 14 additions & 6 deletions lua/plugin/editor/autopairs.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
-- INFO: pair {}/[]/()
-- INFO: Automatic bracket/parenthesis completion
-- NOTE: Smart pair management with LSP/cmp integration

return {
"windwp/nvim-autopairs",
lazy = false,
event = { "InsertEnter" },
dependencies = {
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = { "hrsh7th/nvim-cmp" },
opts = {
check_ts = true, -- Use treesitter to check pairs
disable_filetype = { "TelescopePrompt", "spectre_panel" },
ignored_next_char = "[%w%.]", -- Don't pair if next char is alphanumeric or dot
fast_wrap = {
map = "<M-e>", -- Alt+e to jump between pairs
offset = -1, -- Offset from pair start
},
map_cr = false, -- Disable Enter key pairing
},
opts = {},
}
20 changes: 17 additions & 3 deletions lua/plugin/editor/autotag.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
-- INFO: autoclose and autorename html tag
-- INFO: Automatic HTML tag closure and renaming
-- NOTE: Works with JSX/TSX/XML and other markup languages

return {
"windwp/nvim-ts-autotag",
lazy = false,
opts = {},
event = "VeryLazy",
opts = {
filetypes = {
"html",
"javascript",
"typescript",
"javascriptreact",
"typescriptreact",
"svelte",
"vue",
"xml",
"markdown",
},
},
}
8 changes: 8 additions & 0 deletions lua/plugin/editor/cmp-dotenv.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
-- INFO: .env file completions
-- NOTE: Provides environment variable suggestions for .env files

return {
"SergioRibera/cmp-dotenv",
dependencies = { "hrsh7th/nvim-cmp" },
config = function() end,
}
83 changes: 41 additions & 42 deletions lua/plugin/editor/cmp.lua
Original file line number Diff line number Diff line change
@@ -1,64 +1,63 @@
-- INFO: completion engine
-- INFO: .env file completions
-- NOTE: Provides environment variable suggestions for .env files

return {
"hrsh7th/nvim-cmp",
lazy = true,
event = { "InsertEnter" },
event = "InsertEnter",
dependencies = {
"neovim/nvim-lspconfig", -- LSP server support
"hrsh7th/cmp-nvim-lsp", -- LSP support for completion
"hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words
"hrsh7th/cmp-path", -- nvim-cmp source for filesystem paths
"hrsh7th/cmp-cmdline", -- nvim-cmp source for vim's cmdline
"L3MON4D3/LuaSnip", -- Snippet support
"saadparwaiz1/cmp_luasnip", -- Snippet support
"onsails/lspkind.nvim", -- Plugin adds vscode-like pictograms to neovim built-in lsp
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"onsails/lspkind.nvim",
"windwp/nvim-autopairs",
"SergioRibera/cmp-dotenv", -- add dotenv plugin as dependency
},
config = function()
local cmp = require("cmp")
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
require("nvim-autopairs").setup()
cmp.event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done())

cmp.setup({
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
mapping = {
["<Tab>"] = cmp.mapping.select_next_item(),
["<S-Tab>"] = cmp.mapping.select_prev_item(),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end, { "i", "s" }),
}),
sources = cmp.config.sources({
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "nvim_lsp_signature_help" },
}),
-- You can comment out the global dotenv source if you want it only in .env files:
{ name = "dotenv" },
},
formatting = {
format = require("lspkind").cmp_format({
maxwidth = 50,
ellipsis_char = "...",
}),
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
experimental = {
ghost_text = {
hl_group = "Comment",
},
},
})

-- 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,
}
34 changes: 25 additions & 9 deletions lua/plugin/editor/comment.lua
Original file line number Diff line number Diff line change
@@ -1,18 +1,34 @@
-- INFO: comment/uncomment strings
-- INFO: Smart comment toggling with context awareness
-- NOTE: Supports language-specific comment styles

return {
"numToStr/Comment.nvim",
lazy = true,
event = { "BufReadPre", "BufNewFile" },
event = "VeryLazy",
dependencies = {
"nvim-treesitter/nvim-treesitter", -- For calculating commentstring
"JoosepAlviste/nvim-ts-context-commentstring", -- Context commenting for example, Vue have many different sections
"nvim-treesitter/nvim-treesitter",
"JoosepAlviste/nvim-ts-context-commentstring",
},
config = function()
local comment = require("Comment")
local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim")
-- First ensure treesitter is initialized
require("nvim-treesitter.configs").setup({})

-- Then setup context commentstring
require("ts_context_commentstring").setup({})

comment.setup({
pre_hook = ts_context_commentstring.create_pre_hook(),
-- Finally configure Comment.nvim
require("Comment").setup({
pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
toggler = {
line = "<leader>cc",
block = "<leader>bc",
},
opleader = {
line = "<leader>c",
block = "<leader>b",
},
extra = {
eol = "<leader>cA",
},
})
end,
}
4 changes: 3 additions & 1 deletion lua/plugin/editor/indent-blankline.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
-- INFO: indentation guides
-- INFO: Visual indentation guides (v3+)
-- NOTE: Modern indentation visualization with treesitter

return {
"lukas-reineke/indent-blankline.nvim",
lazy = true,
Expand Down
5 changes: 3 additions & 2 deletions lua/plugin/editor/rainbow-delimiters.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
-- INFO: colorize bracket, tags and other delimiters
-- INFO: Syntax-aware delimiter highlighting
-- NOTE: Context-aware bracket/quote colorization
return {
"hiphish/rainbow-delimiters.nvim",
lazy = false,
event = "VeryLazy",
dependencies = {
"nvim-treesitter/nvim-treesitter",
},
Expand Down
Loading
Loading