mirror of
https://github.com/boxpositron/absolute-vim.git
synced 2026-10-24 05:23:19 +00:00
feat(nvim): phase 1 — triage and abandoned-plugin cleanup
Fix keymap collision on <leader>j/<leader>k (now resize-only;
location-list moved to ]l/[l). Migrate diagnostic signs from
deprecated vim.fn.sign_define to vim.diagnostic.config. Drop
orphan after/nvim-tree.lua and the bogus require("../current-theme").
Add foundation snacks.nvim spec. Remove playground, vim-maximizer,
poet-v, git-blame, render-markdown, and all five AI plugin specs.
Enable gitsigns current_line_blame.
This commit is contained in:
@@ -1,38 +0,0 @@
|
|||||||
# Absolute VIM Configuration
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
VIM Configurations for the modern developer. This configuration is designed to be efficient for my personal workflow. It is designed to be minimalistic and easy to use.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```bash
|
|
||||||
|
|
||||||
git clone https://github.com/boxpositron/absolute-vim ~/.config/nvim --depth 1 && nvim
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
### Binaries
|
|
||||||
|
|
||||||
> Improved Git Experience
|
|
||||||
|
|
||||||
- [lazygit](https://github.com/jesseduffield/lazygit)
|
|
||||||
|
|
||||||
> Beautiful Code Screenshots
|
|
||||||
|
|
||||||
- [silicon](https://github.com/Aloxaf/silicon)
|
|
||||||
|
|
||||||
> Fuzzy Finder
|
|
||||||
|
|
||||||
- [fzf](https://github.com/junegunn/fzf)
|
|
||||||
|
|
||||||
### Fonts
|
|
||||||
|
|
||||||
- [Noto Emoji](https://fonts.google.com/noto/specimen/Noto+Emoji)
|
|
||||||
- [JetBrains Mono](https://fonts.google.com/specimen/JetBrains+Mono)
|
|
||||||
|
|
||||||
|
|
||||||
Work in progress...
|
|
||||||
+43
-52
@@ -1,78 +1,69 @@
|
|||||||
{
|
{
|
||||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
"LuaSnip": { "branch": "master", "commit": "831a130291eb6dae0dabd2748d0a99401a2eebc4" },
|
"LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" },
|
||||||
"catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" },
|
"catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" },
|
||||||
"cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" },
|
"cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||||
"cmp-path": { "branch": "main", "commit": "e52e640b7befd8113b3350f46e8cfcfe98fcf730" },
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
"codecompanion.nvim": { "branch": "main", "commit": "99448f47c3e23a06009ac176ba4c785e162d9c10" },
|
"conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
|
||||||
"conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" },
|
|
||||||
"copilot.vim": { "branch": "release", "commit": "12995dffe10282b29b8335650bf3e7457f4870e7" },
|
|
||||||
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
|
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
|
||||||
|
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
||||||
"flutter-tools.nvim": { "branch": "main", "commit": "70430c32d176f4a15c6e2c80586cd2791e3a664e" },
|
"flutter-tools.nvim": { "branch": "main", "commit": "70430c32d176f4a15c6e2c80586cd2791e3a664e" },
|
||||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||||
"fzf": { "branch": "master", "commit": "ead302981cc9d9219e58c1517921e9f2d68a6b6e" },
|
"fzf": { "branch": "master", "commit": "b4a86a9c8a688159131a27b6ec9dbce72ec11573" },
|
||||||
"gen.nvim": { "branch": "main", "commit": "e09a8dbffa139ad60d5b47998fcc8669ead1ebf4" },
|
|
||||||
"git-blame.nvim": { "branch": "master", "commit": "8503b199edf9a666fe7b1a989cf14e3c26b2eb03" },
|
|
||||||
"gitignore.nvim": { "branch": "master", "commit": "0344f643768c4d64af4add8c1bdddf6f7d4c9010" },
|
"gitignore.nvim": { "branch": "master", "commit": "0344f643768c4d64af4add8c1bdddf6f7d4c9010" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "0cb5a7753d3c4b8e9cfdc9d88d9110cb8d4b1544" },
|
"gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
|
||||||
"image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" },
|
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
|
||||||
"incline.nvim": { "branch": "main", "commit": "0fd2d5a27504dba7fdc507a53275f22c081fe640" },
|
"incline.nvim": { "branch": "main", "commit": "8b54c59bcb23366645ae10edca6edfb9d3a0853e" },
|
||||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||||
"llm.nvim": { "branch": "main", "commit": "9832a149bdcf0709433ca9c2c3a1c87460e98d13" },
|
"lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
|
||||||
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
"lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
|
"markview.nvim": { "branch": "main", "commit": "8b82823bbe7b452c5920ab22947e186c6cb067b4" },
|
||||||
"markview.nvim": { "branch": "main", "commit": "ec33f2aa333ca1d76f51847922578434d7aeadf7" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "bb3a17efc797c34c054463174e5522442576ebd8" },
|
"mason-registry": { "branch": "main", "commit": "7319e578b6b83281ef9783705471c573615b51d2" },
|
||||||
"mason-registry": { "branch": "main", "commit": "467ac84d138997773be67e2e5bd4020cb96a3697" },
|
"mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
|
"mini.diff": { "branch": "main", "commit": "0ee0459152b141c0e1b0931eb6949105be4850a9" },
|
||||||
"mcphub.nvim": { "branch": "main", "commit": "0d53a53f327b61c45691d6a60a16c20baf4590ea" },
|
|
||||||
"mini.diff": { "branch": "main", "commit": "63a7ce537ced356b8180892d9586826b0afb519c" },
|
|
||||||
"mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" },
|
"mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" },
|
||||||
"nightfly": { "branch": "master", "commit": "8c55003e89f321a48a8cd4bb426dd3e7c58f0646" },
|
"nightfly": { "branch": "master", "commit": "4980ccc6de5f361fc9da116240ce7592e7d9a53a" },
|
||||||
"nvim-bqf": { "branch": "main", "commit": "dd17c73912487dccb372deff85d4262d2b89bc2b" },
|
"nvim-bqf": { "branch": "main", "commit": "c282a62bec6c0621a1ef5132aa3f4c9fc4dcc2c7" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||||
"nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" },
|
"nvim-dap": { "branch": "master", "commit": "45a69eba683a2c448dd9ecfc4de89511f0646b5f" },
|
||||||
"nvim-dap-python": { "branch": "master", "commit": "261ce649d05bc455a29f9636dc03f8cdaa7e0e2c" },
|
"nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" },
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||||
"nvim-highlight-colors": { "branch": "main", "commit": "b42a5ccec7457b44e89f7ed3b3afb1b375bb2093" },
|
"nvim-highlight-colors": { "branch": "main", "commit": "e2cb22089cc2358b2b995c09578224f142de6039" },
|
||||||
"nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" },
|
"nvim-lsp-file-operations": { "branch": "master", "commit": "b9c795d3973e8eec22706af14959bc60c579e771" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" },
|
"nvim-lspconfig": { "branch": "master", "commit": "31026a13eefb20681124706a79fc1df6bf11ab27" },
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"nvim-notify": { "branch": "master", "commit": "a22f5d7ac511c2df2fd3290a9f04c48d5a822e2e" },
|
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
||||||
"nvim-silicon": { "branch": "main", "commit": "7f66bda8f60c97a5bf4b37e5b8acb0e829ae3c32" },
|
"nvim-silicon": { "branch": "main", "commit": "7f66bda8f60c97a5bf4b37e5b8acb0e829ae3c32" },
|
||||||
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" },
|
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" },
|
||||||
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
|
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
|
||||||
"nvim-treesitter-context": { "branch": "master", "commit": "59f318a65d42a5c4037796886a8874fd57f774fc" },
|
"nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" },
|
"nvim-web-devicons": { "branch": "master", "commit": "4fc505ac7bd7692824a142e96e5f529c133862f8" },
|
||||||
"nvim_lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
|
"nvim_lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||||
"pkl-neovim": { "branch": "main", "commit": "da9d189b4fad7e67e6b2a5456a3cbc4c9d32a17f" },
|
"pkl-neovim": { "branch": "main", "commit": "da9d189b4fad7e67e6b2a5456a3cbc4c9d32a17f" },
|
||||||
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
|
||||||
"poet-v": { "branch": "master", "commit": "85a5dd44d89602cc3dccd2489924e9c7caab0044" },
|
|
||||||
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
||||||
"render-markdown.nvim": { "branch": "main", "commit": "7620d4e96eb5cf8d12e76c6fcaf1267628564ba9" },
|
"rose-pine": { "branch": "main", "commit": "6a961effd67f6130d36df6d1c05c48c739796dd2" },
|
||||||
"rose-pine": { "branch": "main", "commit": "72befaffeac38db7bdd49e0549eaa2c4806dd878" },
|
|
||||||
"smear-cursor.nvim": { "branch": "main", "commit": "4a0f7ac265b4ed1ce4d0af2afc13072763bfa691" },
|
"smear-cursor.nvim": { "branch": "main", "commit": "4a0f7ac265b4ed1ce4d0af2afc13072763bfa691" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
|
||||||
"tailwind-sorter.nvim": { "branch": "main", "commit": "717e5c9761ed8334dadbb9357df7d826aae97b92" },
|
"tailwind-sorter.nvim": { "branch": "main", "commit": "717e5c9761ed8334dadbb9357df7d826aae97b92" },
|
||||||
"telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" },
|
"telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" },
|
||||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "7bf55ed0ff5be182ad3301cff266581fc1c56cce" },
|
"telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" },
|
||||||
"telescope-live-grep-args.nvim": { "branch": "master", "commit": "8ad632f793fd437865f99af5684f78300dac93fb" },
|
"telescope-live-grep-args.nvim": { "branch": "master", "commit": "8ad632f793fd437865f99af5684f78300dac93fb" },
|
||||||
"telescope-media-files.nvim": { "branch": "master", "commit": "0826c7a730bc4d36068f7c85cf4c5b3fd9fb570a" },
|
"telescope-media-files.nvim": { "branch": "master", "commit": "0826c7a730bc4d36068f7c85cf4c5b3fd9fb570a" },
|
||||||
"telescope-themes": { "branch": "main", "commit": "65721365bd7a04a6c9679e76b6387b60320fd5f3" },
|
"telescope-themes": { "branch": "main", "commit": "65721365bd7a04a6c9679e76b6387b60320fd5f3" },
|
||||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||||
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||||
"tokyonight": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
|
"tokyonight": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
|
||||||
"tree-sitter-ghostty": { "branch": "main", "commit": "1d5238fc0da5fd5a59130b95c3e1c4948a3f96c1" },
|
"tree-sitter-ghostty": { "branch": "main", "commit": "8b1530ca50e7a9caefc0e771a790d0a5595b9d40" },
|
||||||
"treesj": { "branch": "main", "commit": "3b4a2bc42738a63de17e7485d4cc5e49970ddbcc" },
|
"treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" },
|
||||||
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||||
"undotree": { "branch": "master", "commit": "28f2f54a34baff90ea6f4a735ef1813ad875c743" },
|
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
|
||||||
"venv-selector.nvim": { "branch": "regexp", "commit": "c677caa1030808a9f90092e522de7cc20c1390dd" },
|
"venv-selector.nvim": { "branch": "main", "commit": "bcb2f58533c59b01565285eba49693f00bc460f5" }
|
||||||
"vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
local codecompanion = require("codecompanion")
|
|
||||||
|
|
||||||
codecompanion.setup({
|
|
||||||
strategies = {
|
|
||||||
chat = {
|
|
||||||
adapter = "openai",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
extensions = {
|
|
||||||
mcphub = {
|
|
||||||
callback = "mcphub.extensions.codecompanion",
|
|
||||||
opts = {
|
|
||||||
make_vars = true,
|
|
||||||
make_slash_commands = true,
|
|
||||||
show_result_in_chat = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local opts = {
|
|
||||||
noremap = true,
|
|
||||||
silent = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>ac", function()
|
|
||||||
vim.cmd("CodeCompanionChat")
|
|
||||||
end, opts)
|
|
||||||
|
|
||||||
vim.keymap.set({ "n", "v" }, "<leader>ai", function()
|
|
||||||
local input = vim.fn.input("[Code Companion Inline]: ")
|
|
||||||
local trimmed_input = vim.fn.trim(input)
|
|
||||||
|
|
||||||
if trimmed_input == "" then
|
|
||||||
vim.notify("No input provided for inline code companion", vim.log.levels.WARN)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.cmd("CodeCompanion" .. " " .. vim.fn.shellescape(trimmed_input))
|
|
||||||
end, opts)
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
local gen = require("gen")
|
|
||||||
|
|
||||||
gen.setup({
|
|
||||||
-- Custom Parameters (with defaults)
|
|
||||||
model = "deepseek-r1:7b", -- The default model to use.
|
|
||||||
quit_map = "q", -- set keymap to close the response window
|
|
||||||
retry_map = "<c-r>", -- set keymap to re-send the current prompt
|
|
||||||
accept_map = "<c-cr>", -- set keymap to replace the previous selection with the last result
|
|
||||||
host = "localhost", -- The host running the Ollama service.
|
|
||||||
port = "11434", -- The port on which the Ollama service is listening.
|
|
||||||
display_mode = "split", -- The display mode. Can be "float" or "split" or "horizontal-split".
|
|
||||||
show_prompt = false, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or "full".
|
|
||||||
show_model = false, -- Displays which model you are using at the beginning of your chat session.
|
|
||||||
no_auto_close = false, -- Never closes the window automatically.
|
|
||||||
file = false, -- Write the payload to a temporary file to keep the command short.
|
|
||||||
hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10
|
|
||||||
init = function(options)
|
|
||||||
pcall(io.popen, "ollama serve > /dev/null 2>&1 &")
|
|
||||||
end,
|
|
||||||
-- Function to initialize Ollama
|
|
||||||
command = function(options)
|
|
||||||
local body = { model = options.model, stream = true }
|
|
||||||
return "curl --silent --no-buffer -X POST http://"
|
|
||||||
.. options.host
|
|
||||||
.. ":"
|
|
||||||
.. options.port
|
|
||||||
.. "/api/chat -d $body"
|
|
||||||
end,
|
|
||||||
-- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped).
|
|
||||||
-- This can also be a command string.
|
|
||||||
-- The executed command must return a JSON object with { response, context }
|
|
||||||
-- (context property is optional).
|
|
||||||
-- list_models = '<omitted lua function>', -- Retrieves a list of model names
|
|
||||||
result_filetype = "markdown", -- Configure filetype of the result buffer
|
|
||||||
debug = false, -- Prints errors and the command which is run.
|
|
||||||
})
|
|
||||||
@@ -1,3 +1,10 @@
|
|||||||
local gitsigns = require("gitsigns")
|
local gitsigns = require("gitsigns")
|
||||||
|
|
||||||
gitsigns.setup()
|
gitsigns.setup({
|
||||||
|
current_line_blame = true,
|
||||||
|
current_line_blame_opts = {
|
||||||
|
virt_text_pos = "eol",
|
||||||
|
delay = 500,
|
||||||
|
ignore_whitespace = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|||||||
@@ -1,105 +0,0 @@
|
|||||||
local llm = require("llm")
|
|
||||||
local llmCompletion = require("llm.completion")
|
|
||||||
|
|
||||||
llm.setup({
|
|
||||||
api_token = nil, -- cf Install paragraph
|
|
||||||
model = "codellama:13b", -- the model ID, behavior depends on backend
|
|
||||||
backend = "ollama", -- backend ID, "huggingface" | "ollama" | "openai" | "tgi"
|
|
||||||
url = "http://localhost:11434", -- the http url of the backend
|
|
||||||
-- tokens_to_clear = { "<|endoftext|>" }, -- tokens to remove from the model's output
|
|
||||||
tokens_to_clear = { "<EOT>" },
|
|
||||||
-- parameters that are added to the request body, values are arbitrary, you can set any field:value pair here it will be passed as is to the backend
|
|
||||||
request_body = {
|
|
||||||
parameters = {
|
|
||||||
-- max_new_tokens = 60,
|
|
||||||
temperature = 0.2,
|
|
||||||
top_p = 0.95,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- set this if the model supports fill in the middle
|
|
||||||
-- fim = {
|
|
||||||
-- enabled = false,
|
|
||||||
-- prefix = "<fim_prefix>",
|
|
||||||
-- middle = "<fim_middle>",
|
|
||||||
-- suffix = "<fim_suffix>",
|
|
||||||
-- },
|
|
||||||
fim = {
|
|
||||||
enabled = true,
|
|
||||||
prefix = "<PRE> ",
|
|
||||||
middle = " <MID>",
|
|
||||||
suffix = " <SUF>",
|
|
||||||
},
|
|
||||||
|
|
||||||
debounce_ms = 150,
|
|
||||||
accept_keymap = nil,
|
|
||||||
dismiss_keymap = nil,
|
|
||||||
tls_skip_verify_insecure = false,
|
|
||||||
-- llm-ls configuration, cf llm-ls section
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
bin_path = vim.api.nvim_call_function("stdpath", { "data" }) .. "/mason/bin/llm-ls",
|
|
||||||
cmd_env = { LLM_LOG_LEVEL = "DEBUG" },
|
|
||||||
},
|
|
||||||
-- tokenizer = nil, -- cf Tokenizer paragraph
|
|
||||||
tokenizer = {
|
|
||||||
repository = "codellama/CodeLlama-13b-hf",
|
|
||||||
},
|
|
||||||
context_window = 4096,
|
|
||||||
enable_suggestions_on_startup = false,
|
|
||||||
enable_suggestions_on_files = { "*.py", "*.js", "*.ts", "*.astro", "*.vue", "*.lua" },
|
|
||||||
disable_url_path_completion = false, -- cf Backend
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.keymap.set("i", "<Tab>", function()
|
|
||||||
if llmCompletion.shown_suggestion ~= nil then
|
|
||||||
llmCompletion.complete()
|
|
||||||
else
|
|
||||||
local keys = vim.api.nvim_replace_termcodes("<Tab>", true, false, true)
|
|
||||||
vim.api.nvim_feedkeys(keys, "n", false)
|
|
||||||
end
|
|
||||||
end, { noremap = true, silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<Tab>", function()
|
|
||||||
if llmCompletion.shown_suggestion ~= nil then
|
|
||||||
llmCompletion.complete()
|
|
||||||
else
|
|
||||||
local keys = vim.api.nvim_replace_termcodes("<Tab>", true, false, true)
|
|
||||||
vim.api.nvim_feedkeys(keys, "n", false)
|
|
||||||
end
|
|
||||||
end, { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- Debounce helper
|
|
||||||
local debounce = function(func, timeout)
|
|
||||||
if type(func) ~= "function" then
|
|
||||||
error("Expected a function")
|
|
||||||
end
|
|
||||||
if type(timeout) ~= "number" or timeout <= 0 then
|
|
||||||
error("Expected a positive number for timeout")
|
|
||||||
end
|
|
||||||
local timer = vim.uv.new_timer()
|
|
||||||
return function(...)
|
|
||||||
local args = { ... }
|
|
||||||
timer:stop() -- Reset the timer
|
|
||||||
timer:start(
|
|
||||||
timeout,
|
|
||||||
0,
|
|
||||||
vim.schedule_wrap(function()
|
|
||||||
func(unpack(args))
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Define the function to be executed
|
|
||||||
local function on_text_change()
|
|
||||||
llmCompletion.lsp_suggest()
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Debounce the function
|
|
||||||
local debounced_on_text_change = debounce(on_text_change, 3000)
|
|
||||||
|
|
||||||
-- Set up the autocommand
|
|
||||||
vim.api.nvim_create_autocmd({ "InsertCharPre" }, {
|
|
||||||
pattern = "*",
|
|
||||||
callback = debounced_on_text_change,
|
|
||||||
desc = "Run method after typing stops with debounce",
|
|
||||||
})
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
-- Setup language servers.
|
-- Setup language servers.
|
||||||
local conform = require("conform")
|
local conform = require("conform")
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
||||||
|
|
||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
@@ -70,27 +69,25 @@ end
|
|||||||
|
|
||||||
local capabilities = cmp_nvim_lsp.default_capabilities()
|
local capabilities = cmp_nvim_lsp.default_capabilities()
|
||||||
|
|
||||||
-- Change the Diagnostic symbols in the sign column (gutter)
|
-- Configure diagnostic signs (Neovim 0.10+ API; required in 0.12)
|
||||||
local signs = {
|
vim.diagnostic.config({
|
||||||
Error = " ",
|
signs = {
|
||||||
Warn = " ",
|
text = {
|
||||||
Hint = " ",
|
[vim.diagnostic.severity.ERROR] = " ",
|
||||||
Info = " ",
|
[vim.diagnostic.severity.WARN] = " ",
|
||||||
}
|
[vim.diagnostic.severity.HINT] = " ",
|
||||||
|
[vim.diagnostic.severity.INFO] = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
for type, icon in pairs(signs) do
|
-- Configure LSP servers using vim.lsp.config
|
||||||
local hl = "DiagnosticSign" .. type
|
vim.lsp.config("html", {
|
||||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
|
|
||||||
end
|
|
||||||
|
|
||||||
-- configure html server
|
|
||||||
lspconfig["html"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure typescript server with plugin
|
vim.lsp.config("ts_ls", {
|
||||||
lspconfig["ts_ls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
init_options = {
|
init_options = {
|
||||||
@@ -105,21 +102,18 @@ lspconfig["ts_ls"].setup({
|
|||||||
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
|
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure css server
|
vim.lsp.config("cssls", {
|
||||||
lspconfig["cssls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure tailwindcss server
|
vim.lsp.config("tailwindcss", {
|
||||||
lspconfig["tailwindcss"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = { "html", "svelte", "vue", "astro" },
|
filetypes = { "html", "svelte", "vue", "astro" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure svelte server
|
vim.lsp.config("svelte", {
|
||||||
lspconfig["svelte"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = function(client, bufnr)
|
on_attach = function(client, bufnr)
|
||||||
on_attach(client, bufnr)
|
on_attach(client, bufnr)
|
||||||
@@ -135,8 +129,7 @@ lspconfig["svelte"].setup({
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure emmet language server
|
vim.lsp.config("emmet_ls", {
|
||||||
lspconfig["emmet_ls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = {
|
filetypes = {
|
||||||
@@ -153,14 +146,12 @@ lspconfig["emmet_ls"].setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure ruff server
|
vim.lsp.config("ruff", {
|
||||||
lspconfig["ruff"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure pyright server
|
vim.lsp.config("pyright", {
|
||||||
lspconfig["pyright"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = { "python" },
|
filetypes = { "python" },
|
||||||
@@ -175,20 +166,17 @@ lspconfig["pyright"].setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure docker server
|
vim.lsp.config("dockerls", {
|
||||||
lspconfig["dockerls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure json server
|
vim.lsp.config("jsonls", {
|
||||||
lspconfig["jsonls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure vue server
|
vim.lsp.config("vue_ls", {
|
||||||
lspconfig["volar"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = { "vue" },
|
filetypes = { "vue" },
|
||||||
@@ -221,9 +209,7 @@ lspconfig["volar"].setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure rust server
|
vim.lsp.config("rust_analyzer", {
|
||||||
lspconfig.rust_analyzer.setup({
|
|
||||||
-- Server-specific settings. See `:help lspconfig-setup`
|
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
settings = {
|
settings = {
|
||||||
@@ -231,18 +217,15 @@ lspconfig.rust_analyzer.setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure lua server (with special settings)
|
vim.lsp.config("lua_ls", {
|
||||||
lspconfig["lua_ls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
settings = { -- custom settings for lua
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
-- make the language server recognize "vim" global
|
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
globals = { "vim" },
|
globals = { "vim" },
|
||||||
},
|
},
|
||||||
workspace = {
|
workspace = {
|
||||||
-- make language server aware of runtime files
|
|
||||||
library = {
|
library = {
|
||||||
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
||||||
[vim.fn.stdpath("config") .. "/lua"] = true,
|
[vim.fn.stdpath("config") .. "/lua"] = true,
|
||||||
@@ -252,73 +235,45 @@ lspconfig["lua_ls"].setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure css server
|
vim.lsp.config("docker_compose_language_service", {
|
||||||
lspconfig["cssls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
--configure docker file server
|
vim.lsp.config("eslint", {
|
||||||
lspconfig["dockerls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure docker compose server
|
vim.lsp.config("astro", {
|
||||||
lspconfig["docker_compose_language_service"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure eslint server
|
vim.lsp.config("kotlin_language_server", {
|
||||||
lspconfig["eslint"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure astro server
|
vim.lsp.config("clangd", {
|
||||||
lspconfig["astro"].setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
-- init_options = {
|
|
||||||
-- typescript = {
|
|
||||||
-- tsdk = ResolveTypescriptServer(),
|
|
||||||
-- },
|
|
||||||
-- },
|
|
||||||
})
|
|
||||||
|
|
||||||
-- configure kotlin server
|
|
||||||
lspconfig["kotlin_language_server"].setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- configure clang server
|
|
||||||
|
|
||||||
lspconfig["clangd"].setup({
|
|
||||||
cmd = { "clangd", "--compile-commands-dir=./", "--background-index=false" },
|
cmd = { "clangd", "--compile-commands-dir=./", "--background-index=false" },
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = { "c", "cpp", "objc", "objcpp" },
|
filetypes = { "c", "cpp", "objc", "objcpp" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure bufls server
|
vim.lsp.config("buf_ls", {
|
||||||
|
|
||||||
lspconfig["buf_ls"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = { "proto" },
|
filetypes = { "proto" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure arduino language server
|
vim.lsp.config("arduino_language_server", {
|
||||||
|
|
||||||
lspconfig["arduino_language_server"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- configure biome server
|
vim.lsp.config("biome", {
|
||||||
lspconfig["biome"].setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
filetypes = {
|
filetypes = {
|
||||||
@@ -334,3 +289,28 @@ lspconfig["biome"].setup({
|
|||||||
"vue",
|
"vue",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Enable all configured LSP servers
|
||||||
|
vim.lsp.enable({
|
||||||
|
"html",
|
||||||
|
"ts_ls",
|
||||||
|
"cssls",
|
||||||
|
"tailwindcss",
|
||||||
|
"svelte",
|
||||||
|
"emmet_ls",
|
||||||
|
"ruff",
|
||||||
|
"pyright",
|
||||||
|
"dockerls",
|
||||||
|
"jsonls",
|
||||||
|
"vue_ls",
|
||||||
|
"rust_analyzer",
|
||||||
|
"lua_ls",
|
||||||
|
"docker_compose_language_service",
|
||||||
|
"eslint",
|
||||||
|
"astro",
|
||||||
|
"kotlin_language_server",
|
||||||
|
"clangd",
|
||||||
|
"buf_ls",
|
||||||
|
"arduino_language_server",
|
||||||
|
"biome",
|
||||||
|
})
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
local nvimtree = require("absolute.disabled.nvim-tree")
|
|
||||||
|
|
||||||
vim.g.loaded_netrw = 1
|
|
||||||
vim.g.loaded_netrwPlugin = 1
|
|
||||||
|
|
||||||
vim.cmd([[ highlight NvimTreeIndentMarker guifg=#3FC5FF ]])
|
|
||||||
|
|
||||||
vim.cmd([[ highlight NvimTreeFolderArrowClosed guifg=#3FC5FF ]])
|
|
||||||
vim.cmd([[ highlight NvimTreeFolderArrowOpen guifg=#3FC5FF ]])
|
|
||||||
|
|
||||||
nvimtree.setup({
|
|
||||||
view = {
|
|
||||||
width = 45,
|
|
||||||
relativenumber = true,
|
|
||||||
},
|
|
||||||
update_focused_file = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
renderer = {
|
|
||||||
indent_markers = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
icons = {
|
|
||||||
glyphs = {
|
|
||||||
|
|
||||||
folder = {
|
|
||||||
arrow_closed = "", -- arrow when folder is closed
|
|
||||||
arrow_open = "", -- arrow when folder is open
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- disable window_picker for
|
|
||||||
-- explorer to work well with
|
|
||||||
-- window splits
|
|
||||||
actions = {
|
|
||||||
open_file = {
|
|
||||||
window_picker = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
filters = {
|
|
||||||
custom = { ".DS_Store" },
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
ignore = false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
vim.g.poetv_executables = { "poetry" }
|
|
||||||
vim.g.poetv_auto_activate = 0
|
|
||||||
vim.g.poetv_set_environment = 1
|
|
||||||
vim.g.poetv_statusline_symbol = "🐍"
|
|
||||||
|
|
||||||
-- Setup Autocommands
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
|
||||||
pattern = { "*/.venv/*", "*.py" },
|
|
||||||
callback = function()
|
|
||||||
-- check if poetv is activated
|
|
||||||
|
|
||||||
if vim.g.poetv_name ~= nil then
|
|
||||||
return
|
|
||||||
else
|
|
||||||
vim.cmd([[ PoetvActivate ]])
|
|
||||||
vim.cmd([[ LspRestart ]])
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
local ThemeRegistry = require("absolute.core.theme-registry")
|
||||||
|
|
||||||
local function SetupWindowPreferences()
|
local function SetupWindowPreferences()
|
||||||
-- Utility function to get the blend value or set a default
|
-- Utility function to get the blend value or set a default
|
||||||
local function get_blend_value(group_name, default_blend)
|
local function get_blend_value(group_name, default_blend)
|
||||||
@@ -20,24 +22,15 @@ local function SetupWindowPreferences()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function SyncWezTerm()
|
local function SyncWezTerm()
|
||||||
local colorschemes = {
|
|
||||||
["tokyonight-day"] = "Tokyo Night Day",
|
|
||||||
["tokyonight-night"] = "Tokyo Night Night",
|
|
||||||
["tokyonight-storm"] = "Tokyo Night Storm",
|
|
||||||
["tokynight-moon"] = "Tokyo Night Moon",
|
|
||||||
["catppuccin-frappe"] = "Catppuccin Frappe",
|
|
||||||
["catppuccin-latte"] = "Catppuccin Latte",
|
|
||||||
["catppuccin-macchiato"] = "Catppuccin Macchiato",
|
|
||||||
["catppuccin-mocha"] = "Catppuccin Mocha",
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("ColorScheme", {
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
group = vim.api.nvim_create_augroup("wezterm_colorscheme", { clear = true }),
|
group = vim.api.nvim_create_augroup("wezterm_colorscheme", { clear = true }),
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
SetupWindowPreferences()
|
SetupWindowPreferences()
|
||||||
|
|
||||||
local colorscheme = colorschemes[args.match]
|
-- Get terminal theme from registry
|
||||||
if not colorscheme then
|
local wezterm_theme = ThemeRegistry.get_theme(args.match, "wezterm")
|
||||||
|
if not wezterm_theme then
|
||||||
|
-- Theme not in registry, skip silently
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -54,9 +47,9 @@ local function SyncWezTerm()
|
|||||||
|
|
||||||
assert(file)
|
assert(file)
|
||||||
|
|
||||||
file:write(colorscheme)
|
file:write(wezterm_theme)
|
||||||
file:close()
|
file:close()
|
||||||
-- vim.notify("Setting WezTerm color scheme to " .. colorscheme, vim.log.levels.INFO)
|
-- vim.notify("Setting WezTerm color scheme to " .. wezterm_theme, vim.log.levels.INFO)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
@@ -75,6 +68,13 @@ local function SyncGhostyTerm()
|
|||||||
|
|
||||||
local notifyOpts = { title = "Set Ghostty Theme" }
|
local notifyOpts = { title = "Set Ghostty Theme" }
|
||||||
|
|
||||||
|
-- Get terminal theme from registry
|
||||||
|
local ghostty_colorscheme = ThemeRegistry.get_theme(args.match, "ghostty")
|
||||||
|
if not ghostty_colorscheme then
|
||||||
|
-- Theme not in registry, skip silently
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- if the file does not exists, exit early
|
-- if the file does not exists, exit early
|
||||||
|
|
||||||
local filename = vim.fn.expand("$XDG_CONFIG_HOME/ghostty/colorscheme")
|
local filename = vim.fn.expand("$XDG_CONFIG_HOME/ghostty/colorscheme")
|
||||||
@@ -86,14 +86,14 @@ local function SyncGhostyTerm()
|
|||||||
-- lets check if ghostty supports the theme
|
-- lets check if ghostty supports the theme
|
||||||
-- ghostty +list-themes | xargs -I {} echo {} | grep <theme>
|
-- ghostty +list-themes | xargs -I {} echo {} | grep <theme>
|
||||||
|
|
||||||
local cmd = "ghostty +list-themes | sed 's/ (resources)//g' | grep '^" .. args.match .. "$'"
|
local cmd = "ghostty +list-themes | sed 's/ (resources)//g' | grep '^" .. ghostty_colorscheme .. "$'"
|
||||||
|
|
||||||
local status = vim.fn.system(cmd)
|
local status = vim.fn.system(cmd)
|
||||||
local trimmed_output = vim.fn.substitute(status, "^s+|s+$", "", "g")
|
local trimmed_output = vim.fn.substitute(status, "^s+|s+$", "", "g")
|
||||||
-- check if status is empty
|
-- check if status is empty
|
||||||
|
|
||||||
if trimmed_output == "" then
|
if trimmed_output == "" then
|
||||||
vim.notify(args.match .. " is not supported by Ghostty", vim.log.levels.ERROR, notifyOpts)
|
vim.notify(ghostty_colorscheme .. " is not supported by Ghostty", vim.log.levels.ERROR, notifyOpts)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ local function SyncGhostyTerm()
|
|||||||
|
|
||||||
assert(file)
|
assert(file)
|
||||||
|
|
||||||
local theme_string = 'theme = "' .. args.match .. '"'
|
local theme_string = 'theme = "' .. ghostty_colorscheme .. '"'
|
||||||
|
|
||||||
file:write(theme_string)
|
file:write(theme_string)
|
||||||
file:close()
|
file:close()
|
||||||
|
|||||||
@@ -6,6 +6,13 @@ local current_home = os.getenv("HOME")
|
|||||||
|
|
||||||
vim.g.python3_host_prog = current_home .. "/.pyenv/versions/py3nvim/bin/python"
|
vim.g.python3_host_prog = current_home .. "/.pyenv/versions/py3nvim/bin/python"
|
||||||
|
|
||||||
|
vim.opt.title = true
|
||||||
|
|
||||||
|
vim.opt.titlestring = "%{fnamemodify(getcwd(), ':t')}"
|
||||||
|
|
||||||
|
-- auto reload
|
||||||
|
vim.o.autoread = true
|
||||||
|
|
||||||
-- disable nvim intro
|
-- disable nvim intro
|
||||||
vim.opt.shortmess:append("sI")
|
vim.opt.shortmess:append("sI")
|
||||||
|
|
||||||
@@ -74,4 +81,26 @@ vim.api.nvim_create_autocmd("InsertLeave", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("GitRootRun", function(opts)
|
||||||
|
local cmd = opts.args
|
||||||
|
local git_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
||||||
|
if git_root and git_root ~= "" then
|
||||||
|
vim.cmd("!cd " .. git_root .. " && " .. cmd)
|
||||||
|
else
|
||||||
|
print("Not in a Git repository.")
|
||||||
|
end
|
||||||
|
end, { nargs = "+" })
|
||||||
|
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
opts.desc = "Run command in Git root"
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>gr", function()
|
||||||
|
local command = vim.fn.input("$: ")
|
||||||
|
if command ~= "" then
|
||||||
|
vim.cmd("GitRootRun " .. command)
|
||||||
|
else
|
||||||
|
print("No command entered.")
|
||||||
|
end
|
||||||
|
end, opts)
|
||||||
|
|
||||||
-- Add similar autocommands for other modes as needed
|
-- Add similar autocommands for other modes as needed
|
||||||
|
|||||||
@@ -0,0 +1,491 @@
|
|||||||
|
-- Theme Registry
|
||||||
|
-- Central mapping between Neovim colorschemes and terminal themes (WezTerm, Ghostty)
|
||||||
|
-- Maintains a curated list of popular themes with verified mappings
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- Core theme mappings (manually curated and tested)
|
||||||
|
-- Each entry maps a Neovim colorscheme to its terminal equivalents
|
||||||
|
M.themes = {
|
||||||
|
-- ============================================================================
|
||||||
|
-- Tokyo Night Family (5 variants)
|
||||||
|
-- ============================================================================
|
||||||
|
["tokyonight"] = {
|
||||||
|
nvim = "tokyonight",
|
||||||
|
wezterm = "Tokyo Night",
|
||||||
|
ghostty = "TokyoNight",
|
||||||
|
family = "tokyonight",
|
||||||
|
variant = "night",
|
||||||
|
description = "A clean, dark Tokyo Night theme",
|
||||||
|
},
|
||||||
|
["tokyonight-night"] = {
|
||||||
|
nvim = "tokyonight-night",
|
||||||
|
wezterm = "Tokyo Night",
|
||||||
|
ghostty = "TokyoNight Night",
|
||||||
|
family = "tokyonight",
|
||||||
|
variant = "night",
|
||||||
|
description = "Tokyo Night (night variant)",
|
||||||
|
},
|
||||||
|
["tokyonight-storm"] = {
|
||||||
|
nvim = "tokyonight-storm",
|
||||||
|
wezterm = "Tokyo Night Storm",
|
||||||
|
ghostty = "TokyoNight Storm",
|
||||||
|
family = "tokyonight",
|
||||||
|
variant = "storm",
|
||||||
|
description = "Tokyo Night (storm variant)",
|
||||||
|
},
|
||||||
|
["tokyonight-day"] = {
|
||||||
|
nvim = "tokyonight-day",
|
||||||
|
wezterm = "Tokyo Night Day",
|
||||||
|
ghostty = "TokyoNight Day",
|
||||||
|
family = "tokyonight",
|
||||||
|
variant = "day",
|
||||||
|
description = "Tokyo Night (light day variant)",
|
||||||
|
},
|
||||||
|
["tokyonight-moon"] = {
|
||||||
|
nvim = "tokyonight-moon",
|
||||||
|
wezterm = "Tokyo Night Moon",
|
||||||
|
ghostty = "TokyoNight Moon",
|
||||||
|
family = "tokyonight",
|
||||||
|
variant = "moon",
|
||||||
|
description = "Tokyo Night (moon variant)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Catppuccin Family (4 variants)
|
||||||
|
-- ============================================================================
|
||||||
|
["catppuccin"] = {
|
||||||
|
nvim = "catppuccin",
|
||||||
|
wezterm = "Catppuccin Mocha",
|
||||||
|
ghostty = "Catppuccin Mocha",
|
||||||
|
family = "catppuccin",
|
||||||
|
variant = "mocha",
|
||||||
|
description = "Catppuccin (default mocha variant)",
|
||||||
|
},
|
||||||
|
["catppuccin-mocha"] = {
|
||||||
|
nvim = "catppuccin-mocha",
|
||||||
|
wezterm = "Catppuccin Mocha",
|
||||||
|
ghostty = "Catppuccin Mocha",
|
||||||
|
family = "catppuccin",
|
||||||
|
variant = "mocha",
|
||||||
|
description = "Catppuccin Mocha (warm, dark)",
|
||||||
|
},
|
||||||
|
["catppuccin-macchiato"] = {
|
||||||
|
nvim = "catppuccin-macchiato",
|
||||||
|
wezterm = "Catppuccin Macchiato",
|
||||||
|
ghostty = "Catppuccin Macchiato",
|
||||||
|
family = "catppuccin",
|
||||||
|
variant = "macchiato",
|
||||||
|
description = "Catppuccin Macchiato (mid-tone dark)",
|
||||||
|
},
|
||||||
|
["catppuccin-frappe"] = {
|
||||||
|
nvim = "catppuccin-frappe",
|
||||||
|
wezterm = "Catppuccin Frappe",
|
||||||
|
ghostty = "Catppuccin Frappe",
|
||||||
|
family = "catppuccin",
|
||||||
|
variant = "frappe",
|
||||||
|
description = "Catppuccin Frappe (cool, dark)",
|
||||||
|
},
|
||||||
|
["catppuccin-latte"] = {
|
||||||
|
nvim = "catppuccin-latte",
|
||||||
|
wezterm = "Catppuccin Latte",
|
||||||
|
ghostty = "Catppuccin Latte",
|
||||||
|
family = "catppuccin",
|
||||||
|
variant = "latte",
|
||||||
|
description = "Catppuccin Latte (light variant)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Rose Pine Family (4 variants)
|
||||||
|
-- ============================================================================
|
||||||
|
["rose-pine"] = {
|
||||||
|
nvim = "rose-pine",
|
||||||
|
wezterm = "rose-pine",
|
||||||
|
ghostty = "Rose Pine",
|
||||||
|
family = "rose-pine",
|
||||||
|
variant = "main",
|
||||||
|
description = "Rose Pine (main dark variant)",
|
||||||
|
},
|
||||||
|
["rose-pine-main"] = {
|
||||||
|
nvim = "rose-pine-main",
|
||||||
|
wezterm = "rose-pine",
|
||||||
|
ghostty = "Rose Pine",
|
||||||
|
family = "rose-pine",
|
||||||
|
variant = "main",
|
||||||
|
description = "Rose Pine (main dark variant)",
|
||||||
|
},
|
||||||
|
["rose-pine-moon"] = {
|
||||||
|
nvim = "rose-pine-moon",
|
||||||
|
wezterm = "rose-pine-moon",
|
||||||
|
ghostty = "Rose Pine Moon",
|
||||||
|
family = "rose-pine",
|
||||||
|
variant = "moon",
|
||||||
|
description = "Rose Pine Moon (darker variant)",
|
||||||
|
},
|
||||||
|
["rose-pine-dawn"] = {
|
||||||
|
nvim = "rose-pine-dawn",
|
||||||
|
wezterm = "rose-pine-dawn",
|
||||||
|
ghostty = "Rose Pine Dawn",
|
||||||
|
family = "rose-pine",
|
||||||
|
variant = "dawn",
|
||||||
|
description = "Rose Pine Dawn (light variant)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Nightfox Family (7 variants)
|
||||||
|
-- ============================================================================
|
||||||
|
["nightfox"] = {
|
||||||
|
nvim = "nightfox",
|
||||||
|
wezterm = "nightfox",
|
||||||
|
ghostty = "Nightfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "night",
|
||||||
|
description = "Nightfox (main dark variant)",
|
||||||
|
},
|
||||||
|
["carbonfox"] = {
|
||||||
|
nvim = "carbonfox",
|
||||||
|
wezterm = "carbonfox",
|
||||||
|
ghostty = "Carbonfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "carbon",
|
||||||
|
description = "Carbonfox (carbon variant)",
|
||||||
|
},
|
||||||
|
["dawnfox"] = {
|
||||||
|
nvim = "dawnfox",
|
||||||
|
wezterm = "dawnfox",
|
||||||
|
ghostty = "Dawnfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "dawn",
|
||||||
|
description = "Dawnfox (dawn variant)",
|
||||||
|
},
|
||||||
|
["dayfox"] = {
|
||||||
|
nvim = "dayfox",
|
||||||
|
wezterm = "dayfox",
|
||||||
|
ghostty = "Dayfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "day",
|
||||||
|
description = "Dayfox (light day variant)",
|
||||||
|
},
|
||||||
|
["duskfox"] = {
|
||||||
|
nvim = "duskfox",
|
||||||
|
wezterm = "duskfox",
|
||||||
|
ghostty = "Duskfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "dusk",
|
||||||
|
description = "Duskfox (dusk variant)",
|
||||||
|
},
|
||||||
|
["nordfox"] = {
|
||||||
|
nvim = "nordfox",
|
||||||
|
wezterm = "nordfox",
|
||||||
|
ghostty = "Nordfox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "nord",
|
||||||
|
description = "Nordfox (nord-inspired variant)",
|
||||||
|
},
|
||||||
|
["terafox"] = {
|
||||||
|
nvim = "terafox",
|
||||||
|
wezterm = "terafox",
|
||||||
|
ghostty = "Terafox",
|
||||||
|
family = "nightfox",
|
||||||
|
variant = "tera",
|
||||||
|
description = "Terafox (tera variant)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Gruvbox Family (4 variants)
|
||||||
|
-- ============================================================================
|
||||||
|
["gruvbox"] = {
|
||||||
|
nvim = "gruvbox",
|
||||||
|
wezterm = "GruvboxDark",
|
||||||
|
ghostty = "Gruvbox Dark",
|
||||||
|
family = "gruvbox",
|
||||||
|
variant = "dark",
|
||||||
|
description = "Gruvbox (dark variant)",
|
||||||
|
},
|
||||||
|
["gruvbox-material"] = {
|
||||||
|
nvim = "gruvbox-material",
|
||||||
|
wezterm = "Gruvbox Material (Gogh)",
|
||||||
|
ghostty = "Gruvbox Material",
|
||||||
|
family = "gruvbox",
|
||||||
|
variant = "material",
|
||||||
|
description = "Gruvbox Material",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Nord
|
||||||
|
-- ============================================================================
|
||||||
|
["nord"] = {
|
||||||
|
nvim = "nord",
|
||||||
|
wezterm = "Nord (base16)",
|
||||||
|
ghostty = "Nord",
|
||||||
|
family = "nord",
|
||||||
|
variant = "main",
|
||||||
|
description = "Nord (arctic, north-bluish color palette)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Dracula
|
||||||
|
-- ============================================================================
|
||||||
|
["dracula"] = {
|
||||||
|
nvim = "dracula",
|
||||||
|
wezterm = "Dracula (Official)",
|
||||||
|
ghostty = "Dracula",
|
||||||
|
family = "dracula",
|
||||||
|
variant = "main",
|
||||||
|
description = "Dracula (dark theme)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- One Dark / One Light
|
||||||
|
-- ============================================================================
|
||||||
|
["onedark"] = {
|
||||||
|
nvim = "onedark",
|
||||||
|
wezterm = "OneDark (base16)",
|
||||||
|
ghostty = "Atom One Dark",
|
||||||
|
family = "onedark",
|
||||||
|
variant = "dark",
|
||||||
|
description = "One Dark (Atom-inspired dark theme)",
|
||||||
|
},
|
||||||
|
["onelight"] = {
|
||||||
|
nvim = "onelight",
|
||||||
|
wezterm = "One Light (base16)",
|
||||||
|
ghostty = "Atom One Light",
|
||||||
|
family = "onelight",
|
||||||
|
variant = "light",
|
||||||
|
description = "One Light (Atom-inspired light theme)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Material
|
||||||
|
-- ============================================================================
|
||||||
|
["material"] = {
|
||||||
|
nvim = "material",
|
||||||
|
wezterm = "MaterialDark",
|
||||||
|
ghostty = "Material",
|
||||||
|
family = "material",
|
||||||
|
variant = "dark",
|
||||||
|
description = "Material (dark variant)",
|
||||||
|
},
|
||||||
|
["material-darker"] = {
|
||||||
|
nvim = "material-darker",
|
||||||
|
wezterm = "MaterialDarker",
|
||||||
|
ghostty = "Material Darker",
|
||||||
|
family = "material",
|
||||||
|
variant = "darker",
|
||||||
|
description = "Material (darker variant)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Solarized
|
||||||
|
-- ============================================================================
|
||||||
|
["solarized-dark"] = {
|
||||||
|
nvim = "solarized-dark",
|
||||||
|
wezterm = "Builtin Solarized Dark",
|
||||||
|
ghostty = "Builtin Solarized Dark",
|
||||||
|
family = "solarized",
|
||||||
|
variant = "dark",
|
||||||
|
description = "Solarized Dark",
|
||||||
|
},
|
||||||
|
["solarized-light"] = {
|
||||||
|
nvim = "solarized-light",
|
||||||
|
wezterm = "Builtin Solarized Light",
|
||||||
|
ghostty = "Builtin Solarized Light",
|
||||||
|
family = "solarized",
|
||||||
|
variant = "light",
|
||||||
|
description = "Solarized Light",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Monokai
|
||||||
|
-- ============================================================================
|
||||||
|
["monokai"] = {
|
||||||
|
nvim = "monokai",
|
||||||
|
wezterm = "Monokai Remastered",
|
||||||
|
ghostty = "Monokai Classic",
|
||||||
|
family = "monokai",
|
||||||
|
variant = "main",
|
||||||
|
description = "Monokai (classic variant)",
|
||||||
|
},
|
||||||
|
["monokai-pro"] = {
|
||||||
|
nvim = "monokai-pro",
|
||||||
|
wezterm = "Monokai Pro (Gogh)",
|
||||||
|
ghostty = "Monokai Pro",
|
||||||
|
family = "monokai",
|
||||||
|
variant = "pro",
|
||||||
|
description = "Monokai Pro",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- GitHub
|
||||||
|
-- ============================================================================
|
||||||
|
["github-dark"] = {
|
||||||
|
nvim = "github-dark",
|
||||||
|
wezterm = "GitHub Dark",
|
||||||
|
ghostty = "GitHub Dark",
|
||||||
|
family = "github",
|
||||||
|
variant = "dark",
|
||||||
|
description = "GitHub Dark",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Ayu
|
||||||
|
-- ============================================================================
|
||||||
|
["ayu-dark"] = {
|
||||||
|
nvim = "ayu-dark",
|
||||||
|
wezterm = "Ayu Dark (Gogh)",
|
||||||
|
ghostty = "Ayu",
|
||||||
|
family = "ayu",
|
||||||
|
variant = "dark",
|
||||||
|
description = "Ayu (dark variant)",
|
||||||
|
},
|
||||||
|
["ayu-mirage"] = {
|
||||||
|
nvim = "ayu-mirage",
|
||||||
|
wezterm = "Ayu Mirage",
|
||||||
|
ghostty = "Ayu Mirage",
|
||||||
|
family = "ayu",
|
||||||
|
variant = "mirage",
|
||||||
|
description = "Ayu Mirage (mid-tone variant)",
|
||||||
|
},
|
||||||
|
["ayu-light"] = {
|
||||||
|
nvim = "ayu-light",
|
||||||
|
wezterm = "Ayu Light (Gogh)",
|
||||||
|
ghostty = "Ayu Light",
|
||||||
|
family = "ayu",
|
||||||
|
variant = "light",
|
||||||
|
description = "Ayu (light variant)",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- Helper Functions
|
||||||
|
-- ============================================================================
|
||||||
|
|
||||||
|
--- Get the terminal theme name for a given Neovim colorscheme
|
||||||
|
--- @param nvim_name string The Neovim colorscheme name
|
||||||
|
--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
|
||||||
|
--- @return string|nil The terminal theme name, or nil if not found
|
||||||
|
function M.get_theme(nvim_name, terminal_type)
|
||||||
|
local theme = M.themes[nvim_name]
|
||||||
|
if not theme then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if terminal_type == "wezterm" then
|
||||||
|
return theme.wezterm
|
||||||
|
elseif terminal_type == "ghostty" then
|
||||||
|
return theme.ghostty
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Check if a Neovim colorscheme is supported for a given terminal
|
||||||
|
--- @param nvim_name string The Neovim colorscheme name
|
||||||
|
--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
|
||||||
|
--- @return boolean True if the mapping exists
|
||||||
|
function M.is_supported(nvim_name, terminal_type)
|
||||||
|
return M.get_theme(nvim_name, terminal_type) ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get all Neovim themes in the registry
|
||||||
|
--- @return table List of Neovim colorscheme names
|
||||||
|
function M.get_all_nvim_themes()
|
||||||
|
local themes = {}
|
||||||
|
for nvim_name, _ in pairs(M.themes) do
|
||||||
|
table.insert(themes, nvim_name)
|
||||||
|
end
|
||||||
|
table.sort(themes)
|
||||||
|
return themes
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get theme family and variant information
|
||||||
|
--- @param nvim_name string The Neovim colorscheme name
|
||||||
|
--- @return table|nil Theme metadata (family, variant, description)
|
||||||
|
function M.get_theme_info(nvim_name)
|
||||||
|
local theme = M.themes[nvim_name]
|
||||||
|
if not theme then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
family = theme.family,
|
||||||
|
variant = theme.variant,
|
||||||
|
description = theme.description,
|
||||||
|
wezterm = theme.wezterm,
|
||||||
|
ghostty = theme.ghostty,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get all themes in a family
|
||||||
|
--- @param family_name string The theme family name (e.g., "tokyonight", "catppuccin")
|
||||||
|
--- @return table List of theme entries in the family
|
||||||
|
function M.get_family_themes(family_name)
|
||||||
|
local family_themes = {}
|
||||||
|
for nvim_name, theme in pairs(M.themes) do
|
||||||
|
if theme.family == family_name then
|
||||||
|
table.insert(family_themes, {
|
||||||
|
nvim = nvim_name,
|
||||||
|
variant = theme.variant,
|
||||||
|
description = theme.description,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Sort by variant name
|
||||||
|
table.sort(family_themes, function(a, b)
|
||||||
|
return a.variant < b.variant
|
||||||
|
end)
|
||||||
|
|
||||||
|
return family_themes
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get a list of all theme families
|
||||||
|
--- @return table List of unique family names
|
||||||
|
function M.get_all_families()
|
||||||
|
local families = {}
|
||||||
|
local seen = {}
|
||||||
|
|
||||||
|
for _, theme in pairs(M.themes) do
|
||||||
|
if not seen[theme.family] then
|
||||||
|
seen[theme.family] = true
|
||||||
|
table.insert(families, theme.family)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
table.sort(families)
|
||||||
|
return families
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get statistics about the theme registry
|
||||||
|
--- @return table Statistics (total_themes, families_count, terminal_coverage)
|
||||||
|
function M.get_stats()
|
||||||
|
local total = 0
|
||||||
|
local wezterm_count = 0
|
||||||
|
local ghostty_count = 0
|
||||||
|
local families = {}
|
||||||
|
|
||||||
|
for _, theme in pairs(M.themes) do
|
||||||
|
total = total + 1
|
||||||
|
if theme.wezterm then
|
||||||
|
wezterm_count = wezterm_count + 1
|
||||||
|
end
|
||||||
|
if theme.ghostty then
|
||||||
|
ghostty_count = ghostty_count + 1
|
||||||
|
end
|
||||||
|
families[theme.family] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
local families_count = 0
|
||||||
|
for _ in pairs(families) do
|
||||||
|
families_count = families_count + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
total_themes = total,
|
||||||
|
families_count = families_count,
|
||||||
|
wezterm_coverage = wezterm_count,
|
||||||
|
ghostty_coverage = ghostty_count,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -27,7 +27,10 @@ require("lazy")
|
|||||||
change_detection = {
|
change_detection = {
|
||||||
notify = false,
|
notify = false,
|
||||||
},
|
},
|
||||||
|
ui = {
|
||||||
|
border = "rounded",
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
require("absolute.core.colorscheme")
|
require("absolute.core.colorscheme")
|
||||||
require("../current-theme");
|
require("current-theme")
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
return {
|
|
||||||
"olimorris/codecompanion.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"ravitemer/mcphub.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("absolute.after.codecompanion")
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
return {
|
|
||||||
"github/copilot.vim",
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
enabled = false,
|
||||||
|
"folke/flash.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
---@type Flash.Config
|
||||||
|
opts = {},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
|
||||||
|
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
|
||||||
|
{ "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
|
||||||
|
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
|
||||||
|
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
"David-Kunz/gen.nvim",
|
|
||||||
enabled = false,
|
|
||||||
config = function()
|
|
||||||
require("absolute.after.gen")
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
return {
|
|
||||||
"f-person/git-blame.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
"huggingface/llm.nvim",
|
|
||||||
enabled = false,
|
|
||||||
config = function()
|
|
||||||
require("absolute.after.llm")
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-treesitter/playground",
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
enabled = false,
|
|
||||||
"petobens/poet-v",
|
|
||||||
config = function()
|
|
||||||
require("absolute.after.poet-v")
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
return {
|
|
||||||
"MeanderingProgrammer/render-markdown.nvim",
|
|
||||||
ft = { "markdown", "codecompanion" }
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
-- input, notifier added in Phase 2
|
||||||
|
-- picker added in Phase 3
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
return {
|
return {
|
||||||
"linux-cultist/venv-selector.nvim",
|
"linux-cultist/venv-selector.nvim",
|
||||||
lazy = false,
|
lazy = false,
|
||||||
branch = "regexp", -- This is the regexp branch, use this for the new version
|
branch = "main", -- This is the regexp branch, use this for the new version
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
"mfussenegger/nvim-dap-python",
|
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
require("absolute.after.venv-selector")
|
require("absolute.after.venv-selector")
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
return {
|
|
||||||
"szw/vim-maximizer"
|
|
||||||
}
|
|
||||||
@@ -66,18 +66,18 @@ vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz", opts)
|
|||||||
opts.desc = "Jump down and center screen"
|
opts.desc = "Jump down and center screen"
|
||||||
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", opts)
|
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", opts)
|
||||||
|
|
||||||
opts.desc = "Jump to next location and center screen"
|
opts.desc = "Next location-list entry"
|
||||||
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", opts)
|
vim.keymap.set("n", "]l", "<cmd>lnext<CR>zz", opts)
|
||||||
|
|
||||||
opts.desc = "Jump to previous location and center screen"
|
opts.desc = "Previous location-list entry"
|
||||||
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", opts)
|
vim.keymap.set("n", "[l", "<cmd>lprev<CR>zz", opts)
|
||||||
|
|
||||||
-- Search Regex Keymap
|
-- Search Regex Keymap
|
||||||
opts.desc = "Regex Replace"
|
opts.desc = "Regex Replace"
|
||||||
vim.keymap.set("n", "<leader>sr", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
|
vim.keymap.set("n", "<leader>sr", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
|
||||||
|
|
||||||
opts.desc = "Replace selected text"
|
opts.desc = "Replace selected text"
|
||||||
vim.keymap.set("v", "<leader>ss", [[:s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
|
vim.keymap.set("v", "<leader>sr", [[:s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
|
||||||
|
|
||||||
-- -- Source File Keymap
|
-- -- Source File Keymap
|
||||||
-- opts.desc = "Source File"
|
-- opts.desc = "Source File"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
vim.cmd("colorscheme catppuccin-macchiato")
|
vim.cmd("colorscheme tokyonight-night")
|
||||||
Reference in New Issue
Block a user