refactor: reorganize post-configuration functions into utils module
This commit is contained in:
@@ -35,14 +35,14 @@ vim.g.useimage = true ---@type boolean Options: <true|false>
|
||||
vim.g.ignore_no_lazy = false ---@type boolean Options: <true|false>
|
||||
-- Enable codesnap for code screenshots
|
||||
vim.g.codesnap = true ---@type boolean Options: <true|false>
|
||||
-- Enable encouraging feedback
|
||||
vim.g.encourage_me = true ---@type boolean Options: <true|false>
|
||||
-- Enable Auto-hiding cursorline
|
||||
vim.g.auto_cursorline = true ---@type boolean Options: <true|false>
|
||||
-- Enable Auto-save
|
||||
vim.g.auto_save = true ---@type boolean Options: <true|false>
|
||||
-- Animate blinky cursor
|
||||
vim.g.blinky = true ---@type boolean Options: <true|false>
|
||||
-- Use Rootiest cmd window instead of cmdline
|
||||
vim.g.rootiest_cmd = false ---@type boolean Options: <true|false>
|
||||
-- Use experimental cmp performance fork
|
||||
vim.g.cmp_performance_enabled = true ---@type boolean Options: <true|false>
|
||||
-- Use dev mode for rootiest plugins
|
||||
@@ -118,5 +118,6 @@ vim.g.completion_round_borders_enabled = true ---@type boolean Options: <true|f
|
||||
|
||||
-- stylua: ignore end
|
||||
|
||||
-- Post-Config Operations
|
||||
require("config.post-ops")
|
||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━ Post-Config Functions ━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
-- Setup blinky cursor
|
||||
require("utils.blinky").setup(vim.g.blinky)
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
---@module "config.post_ops"
|
||||
--- This module contains the functions that exectute after
|
||||
--- the options.lua file has been loaded.
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Post Ops │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
local M = {}
|
||||
|
||||
M.apply_options = function()
|
||||
-- Setup blinky cursor
|
||||
require("utils.blinky").setup(vim.g.blinky)
|
||||
|
||||
-- Setup Rootiest cmd window
|
||||
require("utils.cmd_window").setup({
|
||||
override_cmdline = vim.g.rootiest_cmd and true or nil,
|
||||
})
|
||||
end
|
||||
|
||||
-- Setup post-ops module
|
||||
M.setup = function()
|
||||
M.apply_options()
|
||||
end
|
||||
|
||||
-- Call setup
|
||||
M.setup()
|
||||
|
||||
return M
|
||||
@@ -6,6 +6,13 @@
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
local M = {}
|
||||
|
||||
M.chatgpt = {
|
||||
"MunifTanjim/nui.nvim",
|
||||
"nvim-lua/plenary.nvim",
|
||||
"folke/trouble.nvim",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
}
|
||||
|
||||
--- nvim-cmp dependencies
|
||||
---@return table The nvim-cmp dependencies
|
||||
M.cmp = {
|
||||
|
||||
+403
-95
@@ -30,6 +30,94 @@ M.capsword = {
|
||||
},
|
||||
}
|
||||
|
||||
M.chatgpt = {
|
||||
func = function()
|
||||
-- Add ChatGPT menu
|
||||
require("data.func").add_keymap(M.group.chatgpt)
|
||||
-- Add ChatGPT keys
|
||||
return M.chatgpt.keys
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<leader>cxc",
|
||||
"<cmd>ChatGPT<cr>",
|
||||
desc = "ChatGPT",
|
||||
},
|
||||
{
|
||||
"<leader>cxe",
|
||||
"<cmd>ChatGPTEditWithInstruction<cr>",
|
||||
desc = "Edit with instruction",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxg",
|
||||
"<cmd>ChatGPTRun grammar_correction<cr>",
|
||||
desc = "Grammar Correction",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxt",
|
||||
"<cmd>ChatGPTRun translate<cr>",
|
||||
desc = "Translate",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxk",
|
||||
"<cmd>ChatGPTRun keywords<cr>",
|
||||
desc = "Keywords",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxd",
|
||||
"<cmd>ChatGPTRun docstring<cr>",
|
||||
desc = "Docstring",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxa",
|
||||
"<cmd>ChatGPTRun add_tests<cr>",
|
||||
desc = "Add Tests",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxo",
|
||||
"<cmd>ChatGPTRun optimize_code<cr>",
|
||||
desc = "Optimize Code",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxs",
|
||||
"<cmd>ChatGPTRun summarize<cr>",
|
||||
desc = "Summarize",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxf",
|
||||
"<cmd>ChatGPTRun fix_bugs<cr>",
|
||||
desc = "Fix Bugs",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxr",
|
||||
"<cmd>ChatGPTRun explain_code<cr>",
|
||||
desc = "Explain Code",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxr",
|
||||
"<cmd>ChatGPTRun roxygen_edit<cr>",
|
||||
desc = "Roxygen Edit",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
{
|
||||
"<leader>cxl",
|
||||
"<cmd>ChatGPTRun code_readability_analysis<cr>",
|
||||
desc = "Code Readability Analysis",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
M.codesnap = {
|
||||
{ -- Save selected code snapshot into clipboard
|
||||
"<leader>cy",
|
||||
@@ -69,75 +157,83 @@ M.flash = {
|
||||
}
|
||||
|
||||
M.minimap = {
|
||||
{ -- Toggle minimap
|
||||
"<leader>nt",
|
||||
"<cmd>Neominimap toggle<cr>",
|
||||
desc = "Toggle minimap",
|
||||
},
|
||||
{ -- Enable minimap
|
||||
"<leader>no",
|
||||
"<cmd>Neominimap on<cr>",
|
||||
desc = "Enable minimap",
|
||||
},
|
||||
{ -- Disable minimap
|
||||
"<leader>nc",
|
||||
"<cmd>Neominimap off<cr>",
|
||||
desc = "Disable minimap",
|
||||
},
|
||||
{ -- Refresh minimap
|
||||
"<leader>nf",
|
||||
"<cmd>Neominimap focus<cr>",
|
||||
desc = "Focus on minimap",
|
||||
},
|
||||
{ -- Unfocus minimap
|
||||
"<leader>nu",
|
||||
"<cmd>Neominimap unfocus<cr>",
|
||||
desc = "Unfocus minimap",
|
||||
},
|
||||
{ -- Toggle focus
|
||||
"<leader>ns",
|
||||
"<cmd>Neominimap toggleFocus<cr>",
|
||||
desc = "Toggle focus on minimap",
|
||||
},
|
||||
{ -- Toggle minimap for current window
|
||||
"<leader>nwt",
|
||||
"<cmd>Neominimap winToggle<cr>",
|
||||
desc = "Toggle minimap for current window",
|
||||
},
|
||||
{ -- Refresh minimap for current window
|
||||
"<leader>nwr",
|
||||
"<cmd>Neominimap winRefresh<cr>",
|
||||
desc = "Refresh minimap for current window",
|
||||
},
|
||||
{ -- Enable minimap for current window
|
||||
"<leader>nwo",
|
||||
"<cmd>Neominimap winOn<cr>",
|
||||
desc = "Enable minimap for current window",
|
||||
},
|
||||
{ -- Disable minimap for current window
|
||||
"<leader>nwc",
|
||||
"<cmd>Neominimap winOff<cr>",
|
||||
desc = "Disable minimap for current window",
|
||||
},
|
||||
{ -- Toggle minimap for current buffer
|
||||
"<leader>nbt",
|
||||
"<cmd>Neominimap bufToggle<cr>",
|
||||
desc = "Toggle minimap for current buffer",
|
||||
},
|
||||
{ -- Refresh minimap for current buffer
|
||||
"<leader>nbr",
|
||||
"<cmd>Neominimap bufRefresh<cr>",
|
||||
desc = "Refresh minimap for current buffer",
|
||||
},
|
||||
{ -- Enable minimap for current buffer
|
||||
"<leader>nbo",
|
||||
"<cmd>Neominimap bufOn<cr>",
|
||||
desc = "Enable minimap for current buffer",
|
||||
},
|
||||
{ -- Disable minimap for current buffer
|
||||
"<leader>nbc",
|
||||
"<cmd>Neominimap bufOff<cr>",
|
||||
desc = "Disable minimap for current buffer",
|
||||
func = function()
|
||||
-- Add NeoMiniMap menu
|
||||
require("data.func").add_keymap(M.group.minimap)
|
||||
-- Add NeoMiniMap keys
|
||||
return M.minimap.keys
|
||||
end,
|
||||
keys = {
|
||||
{ -- Toggle minimap
|
||||
"<leader>nt",
|
||||
"<cmd>Neominimap toggle<cr>",
|
||||
desc = "Toggle minimap",
|
||||
},
|
||||
{ -- Enable minimap
|
||||
"<leader>no",
|
||||
"<cmd>Neominimap on<cr>",
|
||||
desc = "Enable minimap",
|
||||
},
|
||||
{ -- Disable minimap
|
||||
"<leader>nc",
|
||||
"<cmd>Neominimap off<cr>",
|
||||
desc = "Disable minimap",
|
||||
},
|
||||
{ -- Refresh minimap
|
||||
"<leader>nf",
|
||||
"<cmd>Neominimap focus<cr>",
|
||||
desc = "Focus on minimap",
|
||||
},
|
||||
{ -- Unfocus minimap
|
||||
"<leader>nu",
|
||||
"<cmd>Neominimap unfocus<cr>",
|
||||
desc = "Unfocus minimap",
|
||||
},
|
||||
{ -- Toggle focus
|
||||
"<leader>ns",
|
||||
"<cmd>Neominimap toggleFocus<cr>",
|
||||
desc = "Toggle focus on minimap",
|
||||
},
|
||||
{ -- Toggle minimap for current window
|
||||
"<leader>nwt",
|
||||
"<cmd>Neominimap winToggle<cr>",
|
||||
desc = "Toggle minimap for current window",
|
||||
},
|
||||
{ -- Refresh minimap for current window
|
||||
"<leader>nwr",
|
||||
"<cmd>Neominimap winRefresh<cr>",
|
||||
desc = "Refresh minimap for current window",
|
||||
},
|
||||
{ -- Enable minimap for current window
|
||||
"<leader>nwo",
|
||||
"<cmd>Neominimap winOn<cr>",
|
||||
desc = "Enable minimap for current window",
|
||||
},
|
||||
{ -- Disable minimap for current window
|
||||
"<leader>nwc",
|
||||
"<cmd>Neominimap winOff<cr>",
|
||||
desc = "Disable minimap for current window",
|
||||
},
|
||||
{ -- Toggle minimap for current buffer
|
||||
"<leader>nbt",
|
||||
"<cmd>Neominimap bufToggle<cr>",
|
||||
desc = "Toggle minimap for current buffer",
|
||||
},
|
||||
{ -- Refresh minimap for current buffer
|
||||
"<leader>nbr",
|
||||
"<cmd>Neominimap bufRefresh<cr>",
|
||||
desc = "Refresh minimap for current buffer",
|
||||
},
|
||||
{ -- Enable minimap for current buffer
|
||||
"<leader>nbo",
|
||||
"<cmd>Neominimap bufOn<cr>",
|
||||
desc = "Enable minimap for current buffer",
|
||||
},
|
||||
{ -- Disable minimap for current buffer
|
||||
"<leader>nbc",
|
||||
"<cmd>Neominimap bufOff<cr>",
|
||||
desc = "Disable minimap for current buffer",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -244,44 +340,257 @@ M.gitgraph = {
|
||||
}
|
||||
|
||||
M.gist = {
|
||||
{ -- Create Gist
|
||||
"<leader>gnc",
|
||||
"<cmd>GistCreate<cr>",
|
||||
desc = "Create Gist",
|
||||
mode = { "n", "x" },
|
||||
},
|
||||
{ -- Find Gists
|
||||
"<leader>gnf",
|
||||
"<cmd>GistList<cr>",
|
||||
desc = "Find Gists",
|
||||
func = function()
|
||||
-- Add gists menu
|
||||
require("data.func").add_keymap(M.group.gist)
|
||||
-- Add gists keys
|
||||
return M.gist.keys
|
||||
end,
|
||||
keys = {
|
||||
{ -- Create Gist
|
||||
"<leader>gnc",
|
||||
"<cmd>GistCreate<cr>",
|
||||
desc = "Create Gist",
|
||||
mode = { "n", "x" },
|
||||
},
|
||||
{ -- Find Gists
|
||||
"<leader>gnf",
|
||||
"<cmd>GistList<cr>",
|
||||
desc = "Find Gists",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
M.groups = {
|
||||
{ -- Gists menu
|
||||
M.undotree = function()
|
||||
require("data.func").add_keymap(
|
||||
"<leader>uu",
|
||||
"<cmd>UndotreeToggle<cr>",
|
||||
"Toggle UndoTree"
|
||||
)
|
||||
end
|
||||
|
||||
M.gp = {
|
||||
func = function()
|
||||
-- Use which-key directly
|
||||
if pcall(require, "which-key") then
|
||||
require("which-key").add(M.gp.keys)
|
||||
end
|
||||
end,
|
||||
keys = {
|
||||
-- VISUAL mode mappings
|
||||
-- s, x, v modes are handled the same way by which_key
|
||||
{
|
||||
mode = { "v" },
|
||||
nowait = true,
|
||||
remap = false,
|
||||
{
|
||||
"<C-g><C-t>",
|
||||
":<C-u>'<,'>GpChatNew tabnew<cr>",
|
||||
desc = "ChatNew tabnew",
|
||||
},
|
||||
{
|
||||
"<C-g><C-v>",
|
||||
":<C-u>'<,'>GpChatNew vsplit<cr>",
|
||||
desc = "ChatNew vsplit",
|
||||
},
|
||||
{
|
||||
"<C-g><C-x>",
|
||||
":<C-u>'<,'>GpChatNew split<cr>",
|
||||
desc = "ChatNew split",
|
||||
},
|
||||
{ "<C-g>a", ":<C-u>'<,'>GpAppend<cr>", desc = "Visual Append (after)" },
|
||||
{
|
||||
"<C-g>b",
|
||||
":<C-u>'<,'>GpPrepend<cr>",
|
||||
desc = "Visual Prepend (before)",
|
||||
},
|
||||
{ "<C-g>c", ":<C-u>'<,'>GpChatNew<cr>", desc = "Visual Chat New" },
|
||||
{ "<C-g>g", group = "generate into new .." },
|
||||
{ "<C-g>ge", ":<C-u>'<,'>GpEnew<cr>", desc = "Visual GpEnew" },
|
||||
{ "<C-g>gn", ":<C-u>'<,'>GpNew<cr>", desc = "Visual GpNew" },
|
||||
{ "<C-g>gp", ":<C-u>'<,'>GpPopup<cr>", desc = "Visual Popup" },
|
||||
{ "<C-g>gt", ":<C-u>'<,'>GpTabnew<cr>", desc = "Visual GpTabnew" },
|
||||
{ "<C-g>gv", ":<C-u>'<,'>GpVnew<cr>", desc = "Visual GpVnew" },
|
||||
{ "<C-g>i", ":<C-u>'<,'>GpImplement<cr>", desc = "Implement selection" },
|
||||
{ "<C-g>n", "<cmd>GpNextAgent<cr>", desc = "Next Agent" },
|
||||
{ "<C-g>p", ":<C-u>'<,'>GpChatPaste<cr>", desc = "Visual Chat Paste" },
|
||||
{ "<C-g>r", ":<C-u>'<,'>GpRewrite<cr>", desc = "Visual Rewrite" },
|
||||
{ "<C-g>s", "<cmd>GpStop<cr>", desc = "GpStop" },
|
||||
{ "<C-g>t", ":<C-u>'<,'>GpChatToggle<cr>", desc = "Visual Toggle Chat" },
|
||||
{ "<C-g>w", group = "Whisper" },
|
||||
{ "<C-g>wa", ":<C-u>'<,'>GpWhisperAppend<cr>", desc = "Whisper Append" },
|
||||
{
|
||||
"<C-g>wb",
|
||||
":<C-u>'<,'>GpWhisperPrepend<cr>",
|
||||
desc = "Whisper Prepend",
|
||||
},
|
||||
{ "<C-g>we", ":<C-u>'<,'>GpWhisperEnew<cr>", desc = "Whisper Enew" },
|
||||
{ "<C-g>wn", ":<C-u>'<,'>GpWhisperNew<cr>", desc = "Whisper New" },
|
||||
{ "<C-g>wp", ":<C-u>'<,'>GpWhisperPopup<cr>", desc = "Whisper Popup" },
|
||||
{
|
||||
"<C-g>wr",
|
||||
":<C-u>'<,'>GpWhisperRewrite<cr>",
|
||||
desc = "Whisper Rewrite",
|
||||
},
|
||||
{ "<C-g>wt", ":<C-u>'<,'>GpWhisperTabnew<cr>", desc = "Whisper Tabnew" },
|
||||
{ "<C-g>wv", ":<C-u>'<,'>GpWhisperVnew<cr>", desc = "Whisper Vnew" },
|
||||
{ "<C-g>ww", ":<C-u>'<,'>GpWhisper<cr>", desc = "Whisper" },
|
||||
{ "<C-g>x", ":<C-u>'<,'>GpContext<cr>", desc = "Visual GpContext" },
|
||||
},
|
||||
|
||||
-- NORMAL mode mappings
|
||||
{
|
||||
mode = { "n" },
|
||||
nowait = true,
|
||||
remap = false,
|
||||
{ "<C-g><C-t>", "<cmd>GpChatNew tabnew<cr>", desc = "New Chat tabnew" },
|
||||
{ "<C-g><C-v>", "<cmd>GpChatNew vsplit<cr>", desc = "New Chat vsplit" },
|
||||
{ "<C-g><C-x>", "<cmd>GpChatNew split<cr>", desc = "New Chat split" },
|
||||
{ "<C-g>a", "<cmd>GpAppend<cr>", desc = "Append (after)" },
|
||||
{ "<C-g>b", "<cmd>GpPrepend<cr>", desc = "Prepend (before)" },
|
||||
{ "<C-g>c", "<cmd>GpChatNew<cr>", desc = "New Chat" },
|
||||
{ "<C-g>f", "<cmd>GpChatFinder<cr>", desc = "Chat Finder" },
|
||||
{ "<C-g>g", group = "generate into new .." },
|
||||
{ "<C-g>ge", "<cmd>GpEnew<cr>", desc = "GpEnew" },
|
||||
{ "<C-g>gn", "<cmd>GpNew<cr>", desc = "GpNew" },
|
||||
{ "<C-g>gp", "<cmd>GpPopup<cr>", desc = "Popup" },
|
||||
{ "<C-g>gt", "<cmd>GpTabnew<cr>", desc = "GpTabnew" },
|
||||
{ "<C-g>gv", "<cmd>GpVnew<cr>", desc = "GpVnew" },
|
||||
{ "<C-g>n", "<cmd>GpNextAgent<cr>", desc = "Next Agent" },
|
||||
{ "<C-g>r", "<cmd>GpRewrite<cr>", desc = "Inline Rewrite" },
|
||||
{ "<C-g>s", "<cmd>GpStop<cr>", desc = "GpStop" },
|
||||
{ "<C-g>t", "<cmd>GpChatToggle<cr>", desc = "Toggle Chat" },
|
||||
{ "<C-g>w", group = "Whisper" },
|
||||
{
|
||||
"<C-g>wa",
|
||||
"<cmd>GpWhisperAppend<cr>",
|
||||
desc = "Whisper Append (after)",
|
||||
},
|
||||
{
|
||||
"<C-g>wb",
|
||||
"<cmd>GpWhisperPrepend<cr>",
|
||||
desc = "Whisper Prepend (before)",
|
||||
},
|
||||
{ "<C-g>we", "<cmd>GpWhisperEnew<cr>", desc = "Whisper Enew" },
|
||||
{ "<C-g>wn", "<cmd>GpWhisperNew<cr>", desc = "Whisper New" },
|
||||
{ "<C-g>wp", "<cmd>GpWhisperPopup<cr>", desc = "Whisper Popup" },
|
||||
{
|
||||
"<C-g>wr",
|
||||
"<cmd>GpWhisperRewrite<cr>",
|
||||
desc = "Whisper Inline Rewrite",
|
||||
},
|
||||
{ "<C-g>wt", "<cmd>GpWhisperTabnew<cr>", desc = "Whisper Tabnew" },
|
||||
{ "<C-g>wv", "<cmd>GpWhisperVnew<cr>", desc = "Whisper Vnew" },
|
||||
{ "<C-g>ww", "<cmd>GpWhisper<cr>", desc = "Whisper" },
|
||||
{ "<C-g>x", "<cmd>GpContext<cr>", desc = "Toggle GpContext" },
|
||||
},
|
||||
|
||||
-- INSERT mode mappings
|
||||
{
|
||||
mode = { "i" },
|
||||
nowait = true,
|
||||
remap = false,
|
||||
{ "<C-g><C-t>", "<cmd>GpChatNew tabnew<cr>", desc = "New Chat tabnew" },
|
||||
{ "<C-g><C-v>", "<cmd>GpChatNew vsplit<cr>", desc = "New Chat vsplit" },
|
||||
{ "<C-g><C-x>", "<cmd>GpChatNew split<cr>", desc = "New Chat split" },
|
||||
{ "<C-g>a", "<cmd>GpAppend<cr>", desc = "Append (after)" },
|
||||
{ "<C-g>b", "<cmd>GpPrepend<cr>", desc = "Prepend (before)" },
|
||||
{ "<C-g>c", "<cmd>GpChatNew<cr>", desc = "New Chat" },
|
||||
{ "<C-g>f", "<cmd>GpChatFinder<cr>", desc = "Chat Finder" },
|
||||
{ "<C-g>g", group = "generate into new .." },
|
||||
{ "<C-g>ge", "<cmd>GpEnew<cr>", desc = "GpEnew" },
|
||||
{ "<C-g>gn", "<cmd>GpNew<cr>", desc = "GpNew" },
|
||||
{ "<C-g>gp", "<cmd>GpPopup<cr>", desc = "Popup" },
|
||||
{ "<C-g>gt", "<cmd>GpTabnew<cr>", desc = "GpTabnew" },
|
||||
{ "<C-g>gv", "<cmd>GpVnew<cr>", desc = "GpVnew" },
|
||||
{ "<C-g>n", "<cmd>GpNextAgent<cr>", desc = "Next Agent" },
|
||||
{ "<C-g>r", "<cmd>GpRewrite<cr>", desc = "Inline Rewrite" },
|
||||
{ "<C-g>s", "<cmd>GpStop<cr>", desc = "GpStop" },
|
||||
{ "<C-g>t", "<cmd>GpChatToggle<cr>", desc = "Toggle Chat" },
|
||||
{ "<C-g>w", group = "Whisper" },
|
||||
{
|
||||
"<C-g>wa",
|
||||
"<cmd>GpWhisperAppend<cr>",
|
||||
desc = "Whisper Append (after)",
|
||||
},
|
||||
{
|
||||
"<C-g>wb",
|
||||
"<cmd>GpWhisperPrepend<cr>",
|
||||
desc = "Whisper Prepend (before)",
|
||||
},
|
||||
{ "<C-g>we", "<cmd>GpWhisperEnew<cr>", desc = "Whisper Enew" },
|
||||
{ "<C-g>wn", "<cmd>GpWhisperNew<cr>", desc = "Whisper New" },
|
||||
{ "<C-g>wp", "<cmd>GpWhisperPopup<cr>", desc = "Whisper Popup" },
|
||||
{
|
||||
"<C-g>wr",
|
||||
"<cmd>GpWhisperRewrite<cr>",
|
||||
desc = "Whisper Inline Rewrite",
|
||||
},
|
||||
{ "<C-g>wt", "<cmd>GpWhisperTabnew<cr>", desc = "Whisper Tabnew" },
|
||||
{ "<C-g>wv", "<cmd>GpWhisperVnew<cr>", desc = "Whisper Vnew" },
|
||||
{ "<C-g>ww", "<cmd>GpWhisper<cr>", desc = "Whisper" },
|
||||
{ "<C-g>x", "<cmd>GpContext<cr>", desc = "Toggle GpContext" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
M.group = {
|
||||
chatgpt = { -- ChatGPT
|
||||
lhs = "<leader>cx",
|
||||
group = "ChatGPT",
|
||||
icon = { icon = "", color = "blue" },
|
||||
},
|
||||
gist = { -- Gists menu
|
||||
lhs = "<leader>gn",
|
||||
group = "Gists",
|
||||
icon = { icon = "", color = "orange" },
|
||||
},
|
||||
minimap = { -- MiniMap menu
|
||||
lhs = "<leader>n",
|
||||
group = "MiniMap",
|
||||
icon = { icon = "", color = "green" },
|
||||
},
|
||||
nvimup = { -- Neovim Updater menu
|
||||
lhs = "<leader>qu",
|
||||
group = "Neovim Updater",
|
||||
icon = { icon = "", color = "red" },
|
||||
},
|
||||
}
|
||||
|
||||
M.groups = {
|
||||
{ -- Lazy menu
|
||||
lhs = "<leader>l",
|
||||
group = "Lazy",
|
||||
icon = { icon = "", color = "red" },
|
||||
},
|
||||
{ -- MiniMap menu
|
||||
lhs = "<leader>n",
|
||||
group = "MiniMap",
|
||||
icon = { icon = "", color = "green" },
|
||||
}
|
||||
|
||||
M.nvimup = {
|
||||
{
|
||||
"<Leader>quU",
|
||||
":UpdateNeovim<CR>",
|
||||
desc = "Update Neovim",
|
||||
},
|
||||
{ -- Code action menu
|
||||
lhs = "<leader>C",
|
||||
group = "CodeActions",
|
||||
icon = { icon = "", color = "yellow" },
|
||||
{
|
||||
"<Leader>quD",
|
||||
function()
|
||||
require("nvim_updater").update_neovim({ build_type = "Debug" })
|
||||
end,
|
||||
desc = "Debug Build Neovim",
|
||||
},
|
||||
{ -- Neovim Updater menu
|
||||
lhs = "<leader>qu",
|
||||
group = "Neovim Updater",
|
||||
icon = { icon = "", color = "red" },
|
||||
{
|
||||
"<Leader>quR",
|
||||
function()
|
||||
require("nvim_updater").update_neovim({ build_type = "Release" })
|
||||
end,
|
||||
desc = "Release Build Neovim",
|
||||
},
|
||||
{
|
||||
"<Leader>quC",
|
||||
function()
|
||||
require("nvim_updater").remove_source_dir()
|
||||
end,
|
||||
desc = "Clean Neovim Source",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -725,9 +1034,8 @@ M.telescope = {
|
||||
sources = { "emoji", "kaomoji", "gitmoji", "nerd", "math" },
|
||||
})
|
||||
end,
|
||||
"i",
|
||||
|
||||
desc = "Pick Icon",
|
||||
mode = "i",
|
||||
},
|
||||
},
|
||||
toggleterm = {
|
||||
|
||||
+323
-46
@@ -165,6 +165,14 @@ M.border = {
|
||||
end,
|
||||
}
|
||||
|
||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Cursor Styles ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
M.cursors = {
|
||||
smooth = "",
|
||||
block = "█",
|
||||
line = "⎸",
|
||||
underline = "_",
|
||||
}
|
||||
|
||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Type tables ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
--- General exclusion list for buffers and filetypes
|
||||
@@ -262,6 +270,51 @@ M.bufferline = {
|
||||
},
|
||||
}
|
||||
|
||||
--- CodeSnap configuration options
|
||||
M.codesnap = {
|
||||
save_path = "~/Pictures/Screenshots/",
|
||||
has_breadcrumbs = true,
|
||||
show_workspace = true,
|
||||
bg_theme = "default",
|
||||
watermark = "Rootiest Snippets",
|
||||
code_font_family = "Iosevka NF",
|
||||
code_font_size = 12,
|
||||
}
|
||||
|
||||
--- Flash configuration options
|
||||
M.flash = {
|
||||
modes = { char = { jump_labels = true } },
|
||||
}
|
||||
|
||||
--- Smart-Scrolloff configuration options
|
||||
M.smartscrolloff = { scrolloff_percentage = 0.25 }
|
||||
|
||||
--- AutoCursorline configuration options
|
||||
M.autocursorline = { wait_ms = 2000 }
|
||||
|
||||
--- SmoothCursor
|
||||
M.smoothcursor = {
|
||||
cursor = M.cursors.smooth,
|
||||
}
|
||||
|
||||
--- Suda configuration options
|
||||
M.suda = function()
|
||||
vim.g.suda_smart_edit = 1
|
||||
vim.cmd("let g:suda#prompt = ' Enter Sudo Password '")
|
||||
end
|
||||
|
||||
--- Autosave configuration options
|
||||
M.autosave = {
|
||||
execution_message = {
|
||||
enabled = false,
|
||||
},
|
||||
}
|
||||
|
||||
--- Kulala plugin types
|
||||
M.kulala = {
|
||||
ft = { "http", "https", "ftp", "ftps" },
|
||||
}
|
||||
|
||||
--- LazyVim configuration options
|
||||
M.lazyvim = {
|
||||
opts = {
|
||||
@@ -455,6 +508,61 @@ M.gitblame = {
|
||||
},
|
||||
}
|
||||
|
||||
--- ChatGPT configuration options
|
||||
M.chatgpt = {
|
||||
openai_params = {
|
||||
model = "gpt-4o-mini",
|
||||
},
|
||||
}
|
||||
|
||||
-- GP ChatBot configuration options
|
||||
M.gp = function()
|
||||
require("which-key").setup({
|
||||
triggers = "<C-g>",
|
||||
mode = M.all_modes,
|
||||
})
|
||||
return {
|
||||
hooks = {
|
||||
-- example of adding command which writes unit tests for the selected code
|
||||
UnitTests = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please respond by writing table driven unit tests for the code above."
|
||||
local agent = gp.get_command_agent()
|
||||
gp.Prompt(params, gp.Target.vnew, agent, template)
|
||||
end,
|
||||
-- example of adding command which explains the selected code
|
||||
Explain = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please respond by explaining the code above."
|
||||
local agent = gp.get_chat_agent()
|
||||
gp.Prompt(params, gp.Target.popup, agent, template)
|
||||
end,
|
||||
-- example of usig enew as a function specifying type for the new buffer
|
||||
CodeReview = function(gp, params)
|
||||
local template = "I have the following code from {{filename}}:\n\n"
|
||||
.. "```{{filetype}}\n{{selection}}\n```\n\n"
|
||||
.. "Please analyze for code smells and suggest improvements."
|
||||
local agent = gp.get_chat_agent()
|
||||
gp.Prompt(params, gp.Target.enew("markdown"), agent, template)
|
||||
end,
|
||||
-- example of adding command which opens new chat dedicated for translation
|
||||
Translator = function(gp, params)
|
||||
local chat_system_prompt =
|
||||
"You are a Translator, please translate between English and Chinese."
|
||||
gp.cmd.ChatNew(params, chat_system_prompt)
|
||||
end,
|
||||
-- example of making :%GpChatNew a dedicated command which
|
||||
-- opens new chat with the entire current buffer as a context
|
||||
BufferChatNew = function(gp, _)
|
||||
-- call GpChatNew command in range mode on whole buffer
|
||||
vim.api.nvim_command("%" .. gp.config.cmd_prefix .. "ChatNew")
|
||||
end,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
--- Telescope configuration options
|
||||
M.telescope = {
|
||||
cmdline = {
|
||||
@@ -541,51 +649,68 @@ M.whichkey = {
|
||||
|
||||
--- Git-Graph plugin options
|
||||
M.gitgraph = {
|
||||
--- Git-graph symbols check for kitty
|
||||
symbols = function()
|
||||
if require("data.func").is_kitty() then
|
||||
return {
|
||||
merge_commit = "",
|
||||
commit = "",
|
||||
merge_commit_end = "",
|
||||
commit_end = "",
|
||||
opts = {
|
||||
-- GitGraph Hooks
|
||||
hooks = {
|
||||
-- Check diff of a commit
|
||||
on_select_commit = function(commit)
|
||||
vim.notify("DiffviewOpen " .. commit.hash .. "^!")
|
||||
vim.cmd(":DiffviewOpen " .. commit.hash .. "^!")
|
||||
end,
|
||||
-- Check diff from commit a -> commit b
|
||||
on_select_range_commit = function(from, to)
|
||||
vim.notify("DiffviewOpen " .. from.hash .. "~1.." .. to.hash)
|
||||
vim.cmd(":DiffviewOpen " .. from.hash .. "~1.." .. to.hash)
|
||||
end,
|
||||
},
|
||||
--- Git-graph symbols check for kitty
|
||||
symbols = function()
|
||||
if require("data.func").is_kitty() then
|
||||
return {
|
||||
merge_commit = "",
|
||||
commit = "",
|
||||
merge_commit_end = "",
|
||||
commit_end = "",
|
||||
|
||||
-- Advanced symbols
|
||||
GVER = "",
|
||||
GHOR = "",
|
||||
GCLD = "",
|
||||
GCRD = "╭",
|
||||
GCLU = "",
|
||||
GCRU = "",
|
||||
GLRU = "",
|
||||
GLRD = "",
|
||||
GLUD = "",
|
||||
GRUD = "",
|
||||
GFORKU = "",
|
||||
GFORKD = "",
|
||||
GRUDCD = "",
|
||||
GRUDCU = "",
|
||||
GLUDCD = "",
|
||||
GLUDCU = "",
|
||||
GLRDCL = "",
|
||||
GLRDCR = "",
|
||||
GLRUCL = "",
|
||||
GLRUCR = "",
|
||||
}
|
||||
else
|
||||
-- Fallback
|
||||
return {
|
||||
merge_commit = "",
|
||||
commit = "",
|
||||
merge_commit_end = "",
|
||||
commit_end = "",
|
||||
}
|
||||
end
|
||||
end,
|
||||
-- Git graph timestamp style
|
||||
timestamp = "%H:%M:%S %d-%m-%Y",
|
||||
-- Git graph fields to display
|
||||
fields = { "hash", "timestamp", "author", "branch_name", "tag" },
|
||||
-- Advanced symbols
|
||||
GVER = "",
|
||||
GHOR = "",
|
||||
GCLD = "",
|
||||
GCRD = "╭",
|
||||
GCLU = "",
|
||||
GCRU = "",
|
||||
GLRU = "",
|
||||
GLRD = "",
|
||||
GLUD = "",
|
||||
GRUD = "",
|
||||
GFORKU = "",
|
||||
GFORKD = "",
|
||||
GRUDCD = "",
|
||||
GRUDCU = "",
|
||||
GLUDCD = "",
|
||||
GLUDCU = "",
|
||||
GLRDCL = "",
|
||||
GLRDCR = "",
|
||||
GLRUCL = "",
|
||||
GLRUCR = "",
|
||||
}
|
||||
else
|
||||
-- Fallback
|
||||
return {
|
||||
merge_commit = "",
|
||||
commit = "",
|
||||
merge_commit_end = "",
|
||||
commit_end = "",
|
||||
}
|
||||
end
|
||||
end,
|
||||
format = {
|
||||
-- Git graph timestamp style
|
||||
timestamp = "%H:%M:%S %d-%m-%Y",
|
||||
-- Git graph fields to display
|
||||
fields = { "hash", "timestamp", "author", "branch_name", "tag" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
--- Highlights module options
|
||||
@@ -611,8 +736,18 @@ M.ibl = {
|
||||
"",
|
||||
"",
|
||||
},
|
||||
solid = {
|
||||
"▏",
|
||||
"▎",
|
||||
"▍",
|
||||
"▌",
|
||||
"▋",
|
||||
"▊",
|
||||
"▉",
|
||||
"█",
|
||||
},
|
||||
none = { " " },
|
||||
basic = { "" },
|
||||
baric = { "" },
|
||||
},
|
||||
scope_char = {
|
||||
light = { "" },
|
||||
@@ -624,6 +759,122 @@ M.ibl = {
|
||||
arrow = { "" },
|
||||
tab = { "" },
|
||||
},
|
||||
tab_char = {
|
||||
fancy = {
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
},
|
||||
none = { " " },
|
||||
basic = { "" },
|
||||
simple = { "" },
|
||||
arrow = { "" },
|
||||
tab = { "" },
|
||||
mini = { "" },
|
||||
},
|
||||
}
|
||||
|
||||
--- Mini.Indentscope configuration options
|
||||
M.miniindentscope = {
|
||||
symbol = M.ibl.scope_char.hard[1],
|
||||
options = { try_as_border = true, border = "both" },
|
||||
}
|
||||
|
||||
--- Navic Icons
|
||||
M.navic = {
|
||||
icons = {
|
||||
classic = {
|
||||
File = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Package = " ",
|
||||
Class = " ",
|
||||
Method = " ",
|
||||
Property = " ",
|
||||
Field = " ",
|
||||
Constructor = " ",
|
||||
Enum = "",
|
||||
Interface = "",
|
||||
Function = " ",
|
||||
Variable = " ",
|
||||
Constant = " ",
|
||||
String = " ",
|
||||
Number = " ",
|
||||
Boolean = "◩ ",
|
||||
Array = " ",
|
||||
Object = " ",
|
||||
Key = " ",
|
||||
Null = " ",
|
||||
EnumMember = " ",
|
||||
Struct = " ",
|
||||
Event = " ",
|
||||
Operator = " ",
|
||||
TypeParameter = " ",
|
||||
},
|
||||
trouble = {
|
||||
File = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Package = " ",
|
||||
Class = " ",
|
||||
Method = " ",
|
||||
Property = " ",
|
||||
Field = " ",
|
||||
Constructor = " ",
|
||||
Enum = " ",
|
||||
Interface = " ",
|
||||
Function = " ",
|
||||
Variable = " ",
|
||||
Constant = " ",
|
||||
String = " ",
|
||||
Number = " ",
|
||||
Boolean = " ",
|
||||
Array = " ",
|
||||
Object = " ",
|
||||
Key = " ",
|
||||
Null = " ",
|
||||
EnumMember = " ",
|
||||
Struct = " ",
|
||||
Event = " ",
|
||||
Operator = " ",
|
||||
TypeParameter = " ",
|
||||
},
|
||||
vscode = {
|
||||
File = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Package = " ",
|
||||
Class = " ",
|
||||
Method = " ",
|
||||
Property = " ",
|
||||
Field = " ",
|
||||
Constructor = " ",
|
||||
Enum = " ",
|
||||
Interface = " ",
|
||||
Function = " ",
|
||||
Variable = " ",
|
||||
Constant = " ",
|
||||
String = " ",
|
||||
Number = " ",
|
||||
Boolean = " ",
|
||||
Array = " ",
|
||||
Object = " ",
|
||||
Key = " ",
|
||||
Null = " ",
|
||||
EnumMember = " ",
|
||||
Struct = " ",
|
||||
Event = " ",
|
||||
Operator = " ",
|
||||
TypeParameter = " ",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
--- Smart-Splits plugin options
|
||||
@@ -638,7 +889,6 @@ M.smart_splits = {
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
--- Neominiap plugin options
|
||||
M.minimap = {
|
||||
-- Width of minimap
|
||||
@@ -737,6 +987,7 @@ M.trouble = {
|
||||
opts = {
|
||||
modes = {
|
||||
symbols = { -- Configure symbols mode
|
||||
focus = true,
|
||||
win = {
|
||||
type = "split", -- split window
|
||||
relative = "win", -- relative to current window
|
||||
@@ -745,6 +996,22 @@ M.trouble = {
|
||||
},
|
||||
},
|
||||
},
|
||||
icons = {
|
||||
indent = {
|
||||
top = " ",
|
||||
-- middle = "├╴",
|
||||
middle = "",
|
||||
-- last = "└╴",
|
||||
-- last = "-╴",
|
||||
last = "╰╴",
|
||||
fold_open = " ",
|
||||
fold_closed = " ",
|
||||
ws = " ",
|
||||
},
|
||||
folder_closed = " ",
|
||||
folder_open = " ",
|
||||
kinds = M.navic.icons.vscode,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1003,6 +1270,9 @@ M.auto_dark_mode = {
|
||||
--- Image.nvim enabled filetypes
|
||||
M.image = "markdown"
|
||||
|
||||
--- Noice configuration options
|
||||
M.noice = { presets = { inc_rename = true } }
|
||||
|
||||
--- Todo-comments plugin options
|
||||
M.todo = {
|
||||
keywords = {
|
||||
@@ -1079,6 +1349,13 @@ M.colorful_winsep = {
|
||||
},
|
||||
}
|
||||
|
||||
--- Colorful Window Separators configuration options
|
||||
M.winsep = {
|
||||
only_line_seq = false,
|
||||
symbols = M.colorful_winsep.symbols,
|
||||
no_exec_files = M.colorful_winsep.no_exec_files,
|
||||
}
|
||||
|
||||
--- Toggleterm plugin options
|
||||
M.toggleterm = {
|
||||
--- Sets the terminal panel size
|
||||
|
||||
+11
-13
@@ -31,19 +31,17 @@ return {
|
||||
opts = { provider = "openai" },
|
||||
enabled = data.cond.minuet,
|
||||
},
|
||||
-- {
|
||||
-- "jackMort/ChatGPT.nvim",
|
||||
-- event = "VeryLazy",
|
||||
-- opts = {},
|
||||
-- dependencies = {
|
||||
-- "MunifTanjim/nui.nvim",
|
||||
-- "nvim-lua/plenary.nvim",
|
||||
-- "folke/trouble.nvim",
|
||||
-- "nvim-telescope/telescope.nvim",
|
||||
-- },
|
||||
-- },
|
||||
{
|
||||
{ -- ChatGPT
|
||||
"jackMort/ChatGPT.nvim",
|
||||
event = "VeryLazy",
|
||||
keys = data.keys.chatgpt.func,
|
||||
opts = data.types.chatgpt,
|
||||
dependencies = data.deps.chatgpt,
|
||||
},
|
||||
{ -- GP
|
||||
"robitx/gp.nvim",
|
||||
opts = {},
|
||||
lazy = false,
|
||||
opts = data.types.gp,
|
||||
keys = data.keys.gp.func,
|
||||
},
|
||||
}
|
||||
|
||||
+36
-4
@@ -57,6 +57,17 @@ return { -- cmp
|
||||
}
|
||||
luasnip.config.setup({})
|
||||
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0
|
||||
and vim.api
|
||||
.nvim_buf_get_lines(0, line - 1, line, true)[1]
|
||||
:sub(col, col)
|
||||
:match("%s")
|
||||
== nil
|
||||
end
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
@@ -78,14 +89,33 @@ return { -- cmp
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-y>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<C-Space>"] = cmp.mapping.complete({}),
|
||||
["<Tab>"] = cmp.mapping(function()
|
||||
if luasnip.expand_or_locally_jumpable() then
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
-- cmp.confirm({ select = true })
|
||||
elseif luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif vim.snippet.active({ direction = 1 }) then
|
||||
vim.schedule(function()
|
||||
vim.snippet.jump(1)
|
||||
end)
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function()
|
||||
if luasnip.locally_jumpable(-1) then
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
elseif vim.snippet.active({ direction = -1 }) then
|
||||
vim.schedule(function()
|
||||
vim.snippet.jump(-1)
|
||||
end)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
}),
|
||||
@@ -98,8 +128,10 @@ return { -- cmp
|
||||
{ name = "dotenv" },
|
||||
{ name = "calc" },
|
||||
{ name = "conventionalcommits" },
|
||||
{ name = "nerd", priority = 9997 },
|
||||
{ name = "gitmoji", priority = 9998 },
|
||||
{ name = "emoji", priority = 9999 },
|
||||
{ name = "math", priority = 9999 },
|
||||
},
|
||||
formatting = {
|
||||
fields = { "abbr", "kind", "menu" },
|
||||
|
||||
+19
-44
@@ -24,6 +24,16 @@ return {
|
||||
{ -- Treesitter-context
|
||||
import = "lazyvim.plugins.extras.ui.treesitter-context",
|
||||
},
|
||||
{ -- Mini.Indentscope
|
||||
import = "lazyvim.plugins.extras.ui.mini-indentscope",
|
||||
},
|
||||
{ -- Mini Indentscope
|
||||
"echasnovski/mini.indentscope",
|
||||
opts = data.types.miniindentscope,
|
||||
},
|
||||
{ -- Navic
|
||||
import = "lazyvim.plugins.extras.editor.navic",
|
||||
},
|
||||
{ -- Trouble
|
||||
"folke/trouble.nvim",
|
||||
cmd = data.cmd.trouble,
|
||||
@@ -31,9 +41,7 @@ return {
|
||||
},
|
||||
{ -- Flash
|
||||
"folke/flash.nvim",
|
||||
opts = {
|
||||
modes = { char = { jump_labels = true } },
|
||||
},
|
||||
opts = data.types.flash,
|
||||
keys = data.keys.flash,
|
||||
},
|
||||
{
|
||||
@@ -52,7 +60,7 @@ return {
|
||||
{ -- NeoMiniMap
|
||||
"Isrothy/neominimap.nvim",
|
||||
lazy = false,
|
||||
keys = data.keys.minimap,
|
||||
keys = data.keys.minimap.func,
|
||||
init = data.types.minimap.init(),
|
||||
cond = data.types.minimap.cond(),
|
||||
},
|
||||
@@ -81,16 +89,12 @@ return {
|
||||
"gen740/SmoothCursor.nvim",
|
||||
event = "BufEnter",
|
||||
-- lazy = true,
|
||||
opts = {
|
||||
cursor = "",
|
||||
},
|
||||
opts = data.types.smoothcursor,
|
||||
},
|
||||
{ -- Smart Scrolloff
|
||||
"tonymajestro/smart-scrolloff.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
scrolloff_percentage = 0.25,
|
||||
},
|
||||
opts = data.types.smartscrolloff,
|
||||
},
|
||||
{ -- Recorder
|
||||
"chrisgrieser/nvim-recorder",
|
||||
@@ -114,19 +118,13 @@ return {
|
||||
{ -- Colorful window separators
|
||||
"nvim-zh/colorful-winsep.nvim",
|
||||
lazy = true,
|
||||
opts = {
|
||||
only_line_seq = false,
|
||||
symbols = data.types.colorful_winsep.symbols,
|
||||
no_exec_files = data.types.colorful_winsep.no_exec_files,
|
||||
},
|
||||
opts = data.types.winsep,
|
||||
event = { "WinLeave" },
|
||||
},
|
||||
{ -- Auto Cursorline
|
||||
"delphinus/auto-cursorline.nvim",
|
||||
enabled = data.func.check_global_var("auto_cursorline", true, true),
|
||||
opts = {
|
||||
wait_ms = 2000,
|
||||
},
|
||||
opts = data.types.autocursorline,
|
||||
},
|
||||
{ -- Bars N Lines
|
||||
"OXY2DEV/bars-N-lines.nvim",
|
||||
@@ -134,31 +132,10 @@ return {
|
||||
lazy = false,
|
||||
config = data.types.barsNlines.config,
|
||||
},
|
||||
{ -- UndoTree Telescope extension
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"debugloop/telescope-undo.nvim",
|
||||
},
|
||||
opts = function()
|
||||
require("telescope").load_extension("undo")
|
||||
vim.keymap.set("n", "<leader>uU", "<cmd>Telescope undo<cr>")
|
||||
return {
|
||||
extensions = {
|
||||
undo = {},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
{ -- UndoTree
|
||||
"mbbill/undotree",
|
||||
config = function()
|
||||
data.func.add_keymap(
|
||||
"<leader>uu",
|
||||
"<cmd>UndotreeToggle<cr>",
|
||||
"Toggle UndoTree"
|
||||
)
|
||||
end,
|
||||
opts = {},
|
||||
keys = data.keys.undotree,
|
||||
},
|
||||
{ -- NumberToggle
|
||||
"sitiom/nvim-numbertoggle",
|
||||
@@ -166,8 +143,6 @@ return {
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
optional = true,
|
||||
opts = {
|
||||
presets = { inc_rename = true },
|
||||
},
|
||||
opts = data.types.noice,
|
||||
},
|
||||
}
|
||||
|
||||
+2
-23
@@ -13,7 +13,7 @@ return {
|
||||
"Rawnly/gist.nvim",
|
||||
lazy = true,
|
||||
cmd = data.cmd.gist,
|
||||
keys = data.keys.gist,
|
||||
keys = data.keys.gist.func,
|
||||
config = true,
|
||||
},
|
||||
{ -- LazyGit
|
||||
@@ -46,28 +46,7 @@ return {
|
||||
},
|
||||
{ -- Git Graph
|
||||
"isakbm/gitgraph.nvim",
|
||||
opts = {
|
||||
symbols = data.types.gitgraph.symbols(),
|
||||
format = {
|
||||
timestamp = data.types.gitgraph.timestamp,
|
||||
fields = data.types.gitgraph.fields,
|
||||
},
|
||||
hooks = {
|
||||
-- Check diff of a commit
|
||||
on_select_commit = function(commit)
|
||||
vim.notify("DiffviewOpen " .. commit.hash .. "^!")
|
||||
vim.cmd(":DiffviewOpen " .. commit.hash .. "^!")
|
||||
end,
|
||||
-- Check diff from commit a -> commit b
|
||||
on_select_range_commit = function(from, to)
|
||||
vim.notify("DiffviewOpen " .. from.hash .. "~1.." .. to.hash)
|
||||
vim.cmd(":DiffviewOpen " .. from.hash .. "~1.." .. to.hash)
|
||||
end,
|
||||
},
|
||||
},
|
||||
opts = data.types.gitgraph.opts,
|
||||
keys = data.keys.gitgraph,
|
||||
},
|
||||
{ -- Telescope Git Worktree
|
||||
"ThePrimeagen/git-worktree.nvim",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,34 +1,14 @@
|
||||
local data = require("data")
|
||||
|
||||
return { -- Neovim Updater
|
||||
"rootiest/nvim-updater.nvim",
|
||||
lazy = false,
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
"<Leader>quU",
|
||||
":UpdateNeovim<CR>",
|
||||
desc = "Update Neovim",
|
||||
},
|
||||
{
|
||||
"<Leader>quD",
|
||||
function()
|
||||
require("nvim_updater").update_neovim({ build_type = "Debug" })
|
||||
end,
|
||||
desc = "Debug Build Neovim",
|
||||
},
|
||||
{
|
||||
"<Leader>quR",
|
||||
function()
|
||||
require("nvim_updater").update_neovim({ build_type = "Release" })
|
||||
end,
|
||||
desc = "Release Build Neovim",
|
||||
},
|
||||
{
|
||||
"<Leader>quC",
|
||||
function()
|
||||
require("nvim_updater").remove_source_dir()
|
||||
end,
|
||||
desc = "Clean Neovim Source",
|
||||
},
|
||||
},
|
||||
keys = function()
|
||||
-- Add Neovim Updater menu
|
||||
data.func.add_keymap(data.keys.group.nvimup)
|
||||
-- Add Neovim Updater keys
|
||||
return data.keys.nvimup
|
||||
end,
|
||||
dev = vim.g.rootiest_dev or false,
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Telescope Plugins │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
---@module "plugins.telescope"
|
||||
--- This module defines the telescope plugins specs for the Neovim configuration.
|
||||
|
||||
local data = require("data")
|
||||
|
||||
local P = { -- Define Telescope Plugins Specs
|
||||
{ -- Telescope Cmdline
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"jonarrien/telescope-cmdline.nvim",
|
||||
},
|
||||
keys = data.keys.telescope.cmdline,
|
||||
opts = data.types.telescope.cmdline,
|
||||
config = function(_, opts)
|
||||
require("telescope").setup(opts)
|
||||
require("telescope").load_extension("cmdline")
|
||||
end,
|
||||
},
|
||||
{ -- Telescope All Recent
|
||||
"prochri/telescope-all-recent.nvim",
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"kkharji/sqlite.lua",
|
||||
-- optional, if using telescope for vim.ui.select
|
||||
"stevearc/dressing.nvim",
|
||||
},
|
||||
opts = {
|
||||
default = {
|
||||
disable = true, -- disable any unkown pickers (recommended)
|
||||
use_cwd = true, -- differentiate scoring for each picker based on cwd
|
||||
sorting = "frecency", -- sorting: options: 'recent' and 'frecency'
|
||||
},
|
||||
},
|
||||
},
|
||||
{ -- Telescope Spell checker
|
||||
"matkrin/telescope-spell-errors.nvim",
|
||||
lazy = true,
|
||||
cmd = data.cmd.spell_errors,
|
||||
config = function()
|
||||
require("telescope").load_extension("spell_errors")
|
||||
end,
|
||||
dependencies = data.deps.needs_telescope,
|
||||
},
|
||||
{ -- Telescope symbols
|
||||
"nvim-telescope/telescope-symbols.nvim",
|
||||
config = function() end,
|
||||
keys = data.keys.telescope.symbols,
|
||||
lazy = false,
|
||||
},
|
||||
{ -- Telescope Toggleterm
|
||||
"ryanmsnyder/toggleterm-manager.nvim",
|
||||
dependencies = {
|
||||
"akinsho/nvim-toggleterm.lua",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"nvim-lua/plenary.nvim", -- only needed because it's a dependency of telescope
|
||||
},
|
||||
config = true,
|
||||
keys = data.keys.telescope.toggleterm,
|
||||
},
|
||||
{ -- Telescope Lazy
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = "tsakirist/telescope-lazy.nvim",
|
||||
keys = data.keys.telescope.lazy,
|
||||
},
|
||||
{ -- Telescope Luasnip
|
||||
"benfowler/telescope-luasnip.nvim",
|
||||
module = "telescope._extensions.luasnip", -- if you wish to lazy-load
|
||||
config = function()
|
||||
require("telescope").load_extension("luasnip")
|
||||
end,
|
||||
},
|
||||
{ -- Telescope Git Worktree
|
||||
"ThePrimeagen/git-worktree.nvim",
|
||||
},
|
||||
{ -- UndoTree Telescope extension
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"debugloop/telescope-undo.nvim",
|
||||
},
|
||||
opts = function()
|
||||
require("telescope").load_extension("undo")
|
||||
vim.keymap.set("n", "<leader>uU", "<cmd>Telescope undo<cr>")
|
||||
return {
|
||||
extensions = {
|
||||
undo = {},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
return P
|
||||
+5
-84
@@ -32,11 +32,7 @@ return {
|
||||
enabled = data.func.check_global_var("auto_save", true, true),
|
||||
cmd = data.cmd.autosave,
|
||||
event = { "InsertLeave", "TextChanged" },
|
||||
opts = {
|
||||
execution_message = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
opts = data.types.autosave,
|
||||
},
|
||||
{ -- Ripgrep substitute
|
||||
"chrisgrieser/nvim-rip-substitute",
|
||||
@@ -55,21 +51,13 @@ return {
|
||||
enabled = data.func.check_global_var("codesnap", true, true),
|
||||
lazy = true,
|
||||
build = "make",
|
||||
opts = {
|
||||
save_path = "~/Pictures/Screenshots/",
|
||||
has_breadcrumbs = true,
|
||||
show_workspace = true,
|
||||
bg_theme = "default",
|
||||
watermark = "Rootiest Snippets",
|
||||
code_font_family = "Iosevka NF",
|
||||
code_font_size = 12,
|
||||
},
|
||||
opts = data.types.codesnap,
|
||||
cmd = data.cmd.codesnap,
|
||||
keys = data.keys.codesnap,
|
||||
},
|
||||
{ -- Kulala
|
||||
"mistweaverco/kulala.nvim",
|
||||
ft = { "http", "https", "ftp", "ftps" },
|
||||
ft = data.types.kulala.ft,
|
||||
opts = {},
|
||||
},
|
||||
{ -- Hardtime
|
||||
@@ -110,6 +98,7 @@ return {
|
||||
},
|
||||
{ -- Encourage
|
||||
"r-cha/encourage.nvim",
|
||||
enabled = data.func.check_global_var("encourage", true, true),
|
||||
config = true,
|
||||
},
|
||||
{ -- Helpview
|
||||
@@ -120,19 +109,7 @@ return {
|
||||
{ -- Suda
|
||||
"lambdalisue/vim-suda",
|
||||
cmd = data.cmd.suda,
|
||||
config = function()
|
||||
vim.g.suda_smart_edit = 1
|
||||
vim.cmd("let g:suda#prompt = ' Enter Sudo Password '")
|
||||
end,
|
||||
},
|
||||
{ -- Spell checker
|
||||
"matkrin/telescope-spell-errors.nvim",
|
||||
lazy = true,
|
||||
cmd = data.cmd.spell_errors,
|
||||
config = function()
|
||||
require("telescope").load_extension("spell_errors")
|
||||
end,
|
||||
dependencies = data.deps.needs_telescope,
|
||||
config = data.types.suda,
|
||||
},
|
||||
{ -- Pigeon
|
||||
"Pheon-Dev/pigeon",
|
||||
@@ -144,60 +121,4 @@ return {
|
||||
enable_line_number = true,
|
||||
},
|
||||
},
|
||||
{ -- Telescope Cmdline
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"jonarrien/telescope-cmdline.nvim",
|
||||
},
|
||||
keys = data.keys.telescope.cmdline,
|
||||
opts = data.types.telescope.cmdline,
|
||||
config = function(_, opts)
|
||||
require("telescope").setup(opts)
|
||||
require("telescope").load_extension("cmdline")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"prochri/telescope-all-recent.nvim",
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"kkharji/sqlite.lua",
|
||||
-- optional, if using telescope for vim.ui.select
|
||||
"stevearc/dressing.nvim",
|
||||
},
|
||||
opts = {
|
||||
default = {
|
||||
disable = true, -- disable any unkown pickers (recommended)
|
||||
use_cwd = true, -- differentiate scoring for each picker based on cwd
|
||||
sorting = "frecency", -- sorting: options: 'recent' and 'frecency'
|
||||
},
|
||||
},
|
||||
},
|
||||
{ -- Telescope symbols
|
||||
"nvim-telescope/telescope-symbols.nvim",
|
||||
config = function() end,
|
||||
keys = data.keys.telescope.symbols,
|
||||
},
|
||||
{ -- Telescope Toggleterm
|
||||
"ryanmsnyder/toggleterm-manager.nvim",
|
||||
dependencies = {
|
||||
"akinsho/nvim-toggleterm.lua",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"nvim-lua/plenary.nvim", -- only needed because it's a dependency of telescope
|
||||
},
|
||||
config = true,
|
||||
keys = data.keys.telescope.toggleterm,
|
||||
},
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = "tsakirist/telescope-lazy.nvim",
|
||||
keys = data.keys.telescope.lazy,
|
||||
},
|
||||
{
|
||||
"benfowler/telescope-luasnip.nvim",
|
||||
module = "telescope._extensions.luasnip", -- if you wish to lazy-load
|
||||
config = function()
|
||||
require("telescope").load_extension("luasnip")
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,140 +0,0 @@
|
||||
---@module "utils.cmd_window"
|
||||
--- This module provides a function to open a floating window with a completion menu.
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Rootiest Command Window │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
local M = {}
|
||||
|
||||
function M.open_floating_window_with_completion()
|
||||
local buf = vim.api.nvim_create_buf(false, true) -- Create a new buffer
|
||||
local win_height = 1 -- Height of floating window
|
||||
local win_width = math.floor(vim.o.columns * 0.25) -- Width of floating window
|
||||
local row = math.floor((vim.o.lines - win_height) / 2) -- Position row
|
||||
local col = math.floor((vim.o.columns - win_width) / 2) -- Position column
|
||||
local win_border = "rounded"
|
||||
|
||||
-- Create a floating window
|
||||
local win = vim.api.nvim_open_win(buf, true, {
|
||||
relative = "editor",
|
||||
width = win_width,
|
||||
height = win_height,
|
||||
col = col,
|
||||
row = row,
|
||||
border = win_border,
|
||||
})
|
||||
|
||||
-- Set the buffer's filetype
|
||||
vim.bo[buf].filetype = "cmdline" -- Set a unique filetype
|
||||
|
||||
-- Variables to manage history
|
||||
_G.history_index = 0
|
||||
_G.history_size = vim.fn.histnr("cmd")
|
||||
|
||||
-- Function to close the window
|
||||
M.close_window = function()
|
||||
vim.api.nvim_win_close(win, true) -- Close the window
|
||||
-- Switch back to normal mode
|
||||
vim.api.nvim_command("stopinsert")
|
||||
end
|
||||
|
||||
-- Function to execute the command
|
||||
M.execute_command = function()
|
||||
local cmd = vim.api.nvim_buf_get_lines(buf, 0, -1, false)[1] or ""
|
||||
-- Ensure abbreviation expansion
|
||||
vim.api.nvim_command("execute 'silent! " .. cmd .. "'")
|
||||
M.close_window()
|
||||
end
|
||||
|
||||
-- Function to handle navigation and clear buffer
|
||||
M.handle_history_navigation = function(direction)
|
||||
-- Update history index
|
||||
_G.history_index = (_G.history_index + direction) % _G.history_size
|
||||
if _G.history_index < 0 then
|
||||
_G.history_index = _G.history_size - 1
|
||||
end
|
||||
|
||||
-- Clear the buffer
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, {})
|
||||
|
||||
-- Fetch history item and insert into buffer
|
||||
local history_cmd = vim.fn["histget"]("cmd", _G.history_index + 1)
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { history_cmd or "" })
|
||||
vim.api.nvim_win_set_cursor(win, { 1, #history_cmd or 0 })
|
||||
end
|
||||
|
||||
-- Setup keymaps for buffer
|
||||
-- Map <CR> to execute the command
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<CR>",
|
||||
[[<cmd>lua require('utils.cmd_window').execute_command()<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
-- Map <ESC> to close the window
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<ESC>",
|
||||
[[<cmd>lua require('utils.cmd_window').close_window()<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
-- Map <Up> to navigate command history
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<Up>",
|
||||
[[<cmd>lua require('utils.cmd_window').handle_history_navigation(-1)<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
-- Map <Down> to navigate command history
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<Down>",
|
||||
[[<cmd>lua require('utils.cmd_window').handle_history_navigation(1)<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
-- Map <C-n> to navigate command history
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<C-n>",
|
||||
[[<cmd>lua require('utils.cmd_window').handle_history_navigation(1)<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
-- Map <C-p> to navigate command history
|
||||
vim.api.nvim_buf_set_keymap(
|
||||
buf,
|
||||
"i",
|
||||
"<C-p>",
|
||||
[[<cmd>lua require('utils.cmd_window').handle_history_navigation(-1)<CR>]],
|
||||
{ noremap = true, silent = true }
|
||||
)
|
||||
|
||||
-- Start in insert mode
|
||||
vim.api.nvim_command("startinsert")
|
||||
end
|
||||
|
||||
M.setup = function(opts)
|
||||
opts = opts or {}
|
||||
|
||||
-- Add a user command to open the floating window
|
||||
vim.api.nvim_create_user_command(
|
||||
"FloatingWindowWithCompletion",
|
||||
M.open_floating_window_with_completion,
|
||||
{}
|
||||
)
|
||||
|
||||
-- Optionally override default command-line behavior
|
||||
if opts.override_cmdline then
|
||||
require("data").func.add_keymap(
|
||||
":",
|
||||
"<cmd>lua require('utils.cmd_window').open_floating_window_with_completion()<cr>",
|
||||
"FloatingWindowWithCompletion"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -74,20 +74,19 @@ function M.setup_indent_highlight()
|
||||
require("ibl").setup({
|
||||
indent = {
|
||||
char = vim.g.indent_char or data.types.ibl.indent_char.none,
|
||||
tab_char = vim.g.tab_char or data.types.ibl.tab_char.simple,
|
||||
highlight = {
|
||||
"IndentBlanklineIndent",
|
||||
},
|
||||
},
|
||||
scope = {
|
||||
show_start = true,
|
||||
highlight = {
|
||||
"IndentsScopeHighlight",
|
||||
"IndentsScopeHighlight",
|
||||
},
|
||||
char = vim.g.scope_char or data.types.ibl.scope_char.hard,
|
||||
},
|
||||
whitespace = {
|
||||
remove_blankline_trail = true,
|
||||
enabled = false,
|
||||
-- show_start = true,
|
||||
-- highlight = {
|
||||
-- "IndentsScopeHighlight",
|
||||
-- "IndentsScopeHighlight",
|
||||
-- },
|
||||
-- char = vim.g.scope_char or data.types.ibl.scope_char.hard,
|
||||
},
|
||||
exclude = {
|
||||
filetypes = data.types.highlights.exclude,
|
||||
|
||||
Reference in New Issue
Block a user