mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-09-10 17:16:18 -07:00
update nvim
This commit is contained in:
@@ -39,29 +39,13 @@ autocmd("TextYankPost", {
|
||||
group = highlight_yank,
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
vim.highlight.on_yank({ higroup = "IncSearch", timeout = 420 })
|
||||
vim.hl.on_yank({ higroup = "IncSearch", timeout = 420 })
|
||||
end,
|
||||
})
|
||||
-- }}}
|
||||
|
||||
-- {{{ Disable indent-blankline for dashboard
|
||||
function disable_for_dashboard()
|
||||
local buftype = vim.api.nvim_buf_get_option(0, "buftype")
|
||||
local filetype = vim.api.nvim_buf_get_option(0, "filetype")
|
||||
if buftype == "nofile" and filetype == "dashboard" then
|
||||
vim.b.indent_blankline_enabled = false
|
||||
end
|
||||
end
|
||||
vim.cmd([[
|
||||
augroup IndentBlankline
|
||||
autocmd!
|
||||
autocmd FileType dashboard lua disable_for_dashboard()
|
||||
augroup END
|
||||
]])
|
||||
-- }}}
|
||||
|
||||
-- {{{ Code companion hook
|
||||
local group = augroup("CodeCompanionHooks", {})
|
||||
local group = augroup("CodeCompanionHooks", { clear = true })
|
||||
|
||||
autocmd({ "User" }, {
|
||||
pattern = "CodeCompanionInline*",
|
||||
|
||||
@@ -1,681 +0,0 @@
|
||||
local map = vim.keymap.set
|
||||
local map_from_table = require("utils.keymaps.converters.from_table").set_keybindings
|
||||
local add_to_whichkey = require("utils.keymaps.converters.whichkey").addToWhichKey
|
||||
local telescope_paste_img = require("utils.telescope_extra").find_and_paste_image
|
||||
local mkdir_under_cursor = require("utils.functions.mkdir_under_cursor").setup()
|
||||
local term = require("utils.terminal")
|
||||
local term_factory = term.term_factory
|
||||
local term_toggle = term.term_toggle
|
||||
|
||||
local nosilent = { silent = false, noremap = true }
|
||||
|
||||
-- Leader key
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = ","
|
||||
|
||||
-- Create a custom command with the given trigger, command, and description
|
||||
--- @param trigger string The command trigger
|
||||
--- @param command string The command to execute
|
||||
--- @param description string Description of the command
|
||||
--- @return nil
|
||||
local create_custom_command = function(trigger, command, description)
|
||||
vim.api.nvim_create_user_command(trigger, command, { desc = description })
|
||||
end
|
||||
-- Custom commands
|
||||
create_custom_command("Config", "edit ~/.config/nvim", "Edit nvim configuration")
|
||||
create_custom_command("Keymaps", "edit ~/.config/nvim/lua/core/keymaps.lua", "Edit Hyprland keybindings")
|
||||
create_custom_command("Hypr", "edit ~/.config/hypr/hyprland.conf", "Edit Hyprland configuration")
|
||||
|
||||
vim.keymap.set("", "<Leader>tl", function()
|
||||
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
|
||||
end, { desc = "Toggle diagnostics virtual text" })
|
||||
|
||||
-- {{{ Basic Mappings
|
||||
local basic_mappings = {
|
||||
{ key = "<C-u>", cmd = "<C-u>zz", desc = "Scroll up and center", mode = "n" },
|
||||
{ key = "n", cmd = "nzzzv", desc = "Next search result and center", mode = "n" },
|
||||
{ key = "N", cmd = "Nzzzv", desc = "Previous search result and center", mode = "n" },
|
||||
{ key = "<leader>pp", cmd = '"_dP', desc = "Paste without yanking", mode = "x" },
|
||||
{ key = "<", cmd = "<gv", desc = "Reselect after indent", mode = "v" },
|
||||
{ key = ">", cmd = ">gv", desc = "Reselect after indent", mode = "v" },
|
||||
{ key = "J", cmd = ":m '>+1<CR>gv=gv", desc = "Move line down", mode = "v" },
|
||||
{ key = "K", cmd = ":m '<-2<CR>gv=gv", desc = "Move line up", mode = "v" },
|
||||
}
|
||||
--}}}
|
||||
|
||||
--{{{ Buffer Navigation Mappings
|
||||
local buffer_navigation_mappings = {
|
||||
{ key = "<C-J>", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n" },
|
||||
{ key = "<C-K>", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n" },
|
||||
{ key = "<leader>bb", cmd = ":Telescope buffers<CR>", desc = "List buffers", mode = "n" },
|
||||
{ key = "<leader>bk", cmd = ":bdelete<CR>", desc = "Delete buffer", mode = "n" },
|
||||
{ key = "<leader>bn", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n" },
|
||||
{ key = "<leader>bp", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n" },
|
||||
}
|
||||
--}}}
|
||||
|
||||
--{{{ Terminal Mappings
|
||||
local terminal_mappings = {
|
||||
-- {
|
||||
-- key = "op",
|
||||
-- cmd = "<C-\\><C-N>:ToggleTerm name=ipython",
|
||||
-- desc = "Open IPython",
|
||||
-- mode = "v",
|
||||
-- group = "Open",
|
||||
-- },
|
||||
-- {
|
||||
-- key = "oP",
|
||||
-- cmd = "<C-\\><C-N>:ToggleTerm name=ipython-full",
|
||||
-- desc = "Open full IPython",
|
||||
-- mode = "v",
|
||||
-- group = "Open",
|
||||
-- },
|
||||
{
|
||||
key = "<C-T>",
|
||||
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||
desc = "Toggle terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>tt",
|
||||
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||
desc = "Toggle terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>tT",
|
||||
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||
desc = "Toggle full terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>ot",
|
||||
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||
desc = "Open terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>oT",
|
||||
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||
desc = "Open full terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>ts",
|
||||
cmd = ":TermSelect<CR>",
|
||||
desc = "Select terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>tv",
|
||||
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||
desc = "Toggle vertical terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>th",
|
||||
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||
desc = "Toggle horizontal terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>ov",
|
||||
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||
desc = "Open vertical terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>oh",
|
||||
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||
desc = "Open horizontal terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>tf",
|
||||
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||
desc = "Toggle terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>-",
|
||||
cmd = ":ToggleTerm direction='horizontal'<CR>",
|
||||
desc = "Toggle horizontal terminal",
|
||||
mode = "n",
|
||||
},
|
||||
{
|
||||
key = "<leader>|",
|
||||
cmd = ":ToggleTerm direction='vertical'<CR>",
|
||||
desc = "Toggle vertical terminal",
|
||||
mode = "n",
|
||||
},
|
||||
}
|
||||
--}}}
|
||||
|
||||
-- {{{ LSP Mappings
|
||||
local lsp_mappings = {
|
||||
{ mode = "n", key = "gA", cmd = vim.lsp.buf.code_action, group = "Code Action" },
|
||||
{ mode = "n", key = "gd", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||
{ mode = "n", key = "gDc", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||
{ mode = "n", key = "gDf", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||
{ mode = "n", key = "gF", cmd = ":edit <cfile><CR>", group = "Edit File" },
|
||||
{ mode = "n", key = "gT", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Type Definitions" },
|
||||
{ mode = "n", key = "gb", cmd = ":Gitsigns blame_line<CR>", group = "Blame Line" },
|
||||
{ mode = "n", key = "<leader>gb", cmd = ":Gitsigns blame<CR>", group = "Git Blame" },
|
||||
{ mode = "n", key = "gi", cmd = ":Telescope lsp_implementations<CR>", group = "Telescope Implementations" },
|
||||
{ mode = "n", key = "gj", cmd = ":Telescope jumplist<CR>", group = "Telescope Jumplist" },
|
||||
{ mode = "n", key = "gr", cmd = ":Telescope lsp_references<CR>", group = "LSP References" },
|
||||
{ mode = "n", key = "gs", cmd = vim.lsp.buf.signature_help },
|
||||
-- { mode = "n", key = "K", cmd = vim.lsp.buf.hover },
|
||||
{ mode = "n", key = "<leader>ca", cmd = vim.lsp.buf.code_action, group = "Code" },
|
||||
{ mode = "n", key = "<leader>ch", cmd = ":lua vim.lsp.buf.signature_help()<CR>", group = "Signature Help" },
|
||||
{ mode = "n", key = "<leader>cR", cmd = ":lua vim.lsp.buf.rename()<CR>", group = "Rename" },
|
||||
{ mode = "n", key = "<leader>cr", cmd = ":Telescope lsp_references<CR>", group = "LSP References" },
|
||||
{ mode = "n", key = "<leader>cs", cmd = ":Telescope lsp_document_symbols<CR>", group = "LSP Document Symbols" },
|
||||
{ mode = "n", key = "<leader>ct", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Definitions" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>cw",
|
||||
cmd = ":Telescope lsp_dynamic_workspace_symbols<CR>",
|
||||
group = "LSP Workspace Symbols",
|
||||
},
|
||||
{ mode = "n", key = "<leader>ci", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||
{ mode = "n", key = "<leader>cci", cmd = ":Telescope lsp_incoming_calls<CR>", group = "LSP Incoming Calls" },
|
||||
{ mode = "n", key = "<leader>cco", cmd = ":Telescope lsp_outgoing_calls<CR>", group = "LSP Outgoing Calls" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>cd",
|
||||
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||
group = "Telecope Diagnostics",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>cDs",
|
||||
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||
group = "Telecope Diagnostics",
|
||||
},
|
||||
{ mode = "n", key = "<leader>cDn", cmd = ":lua vim.diagnostic.goto_next()<CR>", group = "Goto Next Preview" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>cDp",
|
||||
cmd = ":lua vim.diagnostic.goto_prev()<CR>",
|
||||
group = "Goto Previous Preview",
|
||||
},
|
||||
{ mode = "n", key = "<leader>cl", cmd = ":lua vim.diagnostic.setloclist()<CR>", group = "Set Loclist" },
|
||||
{ mode = "n", key = "<leader>Clr", cmd = ":LspRestart<CR>", group = "Restart LSP" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>cPs",
|
||||
cmd = function()
|
||||
vim.cmd("!pyright --createstub " .. vim.fn.expand("<cword>"))
|
||||
end,
|
||||
group = "Generate Stub File",
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Code Companion Mappings
|
||||
local code_companion_mappings = {
|
||||
{ mode = "n", key = "<leader>cp", cmd = ":vert Copilot panel<CR>", group = "Copilot Panel" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Cf",
|
||||
cmd = function()
|
||||
local chat = require("codecompanion").chat
|
||||
chat({ window_opts = { height = 1.0, layout = "buffer" } })
|
||||
end,
|
||||
group = "Codecompanion Fullscreen",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Ch",
|
||||
cmd = function()
|
||||
local chat = require("codecompanion").chat
|
||||
chat({ window_opts = { height = 0.24, layout = "horizontal", position = "bottom" } })
|
||||
end,
|
||||
group = "Codecompanion Horizontal Split",
|
||||
},
|
||||
{ mode = "n", key = "<leader>Cc", cmd = ":CodeCompanionChat Toggle<CR>", group = "Toggle Codecompanion" },
|
||||
{ mode = "n", key = "<leader>oc", cmd = ":CodeCompanionChat Toggle<CR>", group = "Toggle Codecompanion" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Ci",
|
||||
cmd = function()
|
||||
vim.api.nvim_feedkeys(":CodeCompanion #{buffer} ", "n", false)
|
||||
end,
|
||||
group = "Inline CodeCompanion",
|
||||
opts = nosilent,
|
||||
},
|
||||
{ mode = "n", key = "<leader>Ct", cmd = ":CodeCompanionChat Toggle<CR>", group = "CodeCompanion Toggle" },
|
||||
{ mode = "n", key = "<leader>CA", cmd = ":CodeCompanionActions<CR>", group = "CodeCompanion Actions" },
|
||||
{ mode = "v", key = "<leader>Ca", cmd = ":CodeCompanionChat Add<CR>", group = "CodeCompanion Add" },
|
||||
{
|
||||
mode = "v",
|
||||
key = "<leader>Ci",
|
||||
cmd = function()
|
||||
vim.api.nvim_feedkeys(":CodeCompanion #{buffer} ", "n", false)
|
||||
end,
|
||||
group = "CodeCompanion Inline",
|
||||
opts = nosilent,
|
||||
},
|
||||
{ mode = "v", key = "<leader>Ce", cmd = ":CodeCompanion /explain<CR>", group = "CodeCompanion /explain" },
|
||||
{ mode = "v", key = "<leader>Cf", cmd = ":CodeCompanion /fix<CR>", group = "CodeCompanion /fix" },
|
||||
{ mode = "v", key = "<leader>Cl", cmd = ":CodeCompanion /lsp<CR>", group = "CodeCompanion /lsp" },
|
||||
{ mode = "v", key = "<leader>Ct", cmd = ":CodeCompanion /tests<CR>", group = "CodeCompanion /tests" },
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Telescope mappings
|
||||
local telescope_mappings = {
|
||||
{
|
||||
mode = "n",
|
||||
key = "//",
|
||||
cmd = ":Telescope current_buffer_fuzzy_find previewer=false<CR>",
|
||||
desc = "Current buffer fuzzy find",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "??",
|
||||
cmd = ":Telescope lsp_document_symbols theme=dropdown layout_config={width=0.5}<CR>",
|
||||
group = "Lsp document symbols",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>fc",
|
||||
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||
group = "Telescope color names",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Tc",
|
||||
cmd = ":Telescope colorscheme<CR>",
|
||||
group = "Telescope colorscheme",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>TC",
|
||||
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||
group = "Telescope color names",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Tn",
|
||||
cmd = ":Telescope notify theme=dropdown layout_config={width=0.75}<CR>",
|
||||
group = "Telescope notify",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>TN",
|
||||
cmd = ":Telescope noice theme=dropdown layout_config={width=0.75}<CR>",
|
||||
group = "Telescope Noice",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Ti",
|
||||
cmd = function()
|
||||
telescope_paste_img()
|
||||
end,
|
||||
desc = "Find and Paste Image",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>ff",
|
||||
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||
group = "Find files",
|
||||
},
|
||||
{ mode = "n", key = "<leader>fg", cmd = ":Telescope live_grep<CR>", group = "Live Grep" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>Tg",
|
||||
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||
group = "Telescope Glyph",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>fG",
|
||||
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||
group = "Glhph",
|
||||
},
|
||||
{ mode = "n", key = "<leader>fb", cmd = ":Telescope file_browser<CR>", group = "File browser" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>fr",
|
||||
cmd = ":Telescope oldfiles theme=dropdown layout_config={width=0.5}<CR>",
|
||||
group = "Oldfiles",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>hc",
|
||||
cmd = ":Telescope commands<CR>",
|
||||
group = "Commands",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>hv",
|
||||
cmd = ":Telescope vim_options<CR>",
|
||||
group = "Vim options",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>hk",
|
||||
cmd = ":Telescope keymaps<CR>",
|
||||
group = "Keymaps",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>hs",
|
||||
cmd = ":Telescope spell_suggest<CR>",
|
||||
group = "Spell suggest",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>ht",
|
||||
cmd = ":Telescope help_tags<CR>",
|
||||
group = "Help tags",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>hm",
|
||||
cmd = ":Telescope man_pages theme=dropdown layout_config={width=0.75}<CR>",
|
||||
group = "Man pages",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>sf",
|
||||
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||
group = "Search files",
|
||||
},
|
||||
{ mode = "n", key = "<leader>sF", cmd = ":Telescope fidget<CR>", group = "Fidget" },
|
||||
{ mode = "n", key = "<leader>sg", cmd = ":Telescope live_grep<CR>", group = "Live grep" },
|
||||
{ mode = "n", key = "<leader>sh", cmd = ":Telescope command_history<CR>", group = "Command history" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>sn",
|
||||
cmd = function()
|
||||
Snacks.win({
|
||||
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
|
||||
width = 0.6,
|
||||
height = 0.6,
|
||||
wo = {
|
||||
spell = false,
|
||||
wrap = false,
|
||||
signcolumn = "yes",
|
||||
statuscolumn = " ",
|
||||
conceallevel = 3,
|
||||
},
|
||||
})
|
||||
end,
|
||||
group = "News",
|
||||
},
|
||||
{ mode = "n", key = "<leader>sm", cmd = ":Telescope man_pages<CR>", group = "Man pages" },
|
||||
{ mode = "n", key = "<leader>s/", cmd = ":Telescope search_history<CR>", group = "Search history" },
|
||||
{ mode = "n", key = "<leader>gc", cmd = ":Telescope git_commits<CR>", group = "Git commits" },
|
||||
{ mode = "n", key = "<leader>gf", cmd = ":Telescope git_files<CR>", group = "Git files" },
|
||||
{ mode = "n", key = "<leader>Tr", cmd = ":Telescope reloader<CR>", group = "Telescope reloader" },
|
||||
}
|
||||
--}}}
|
||||
|
||||
-- {{{ File Explorer Mappings (i guess)
|
||||
local file_explorer_mappings = {
|
||||
{ mode = "n", key = "<leader>nt", cmd = ":NvimTreeToggle<CR>" },
|
||||
{ mode = "n", key = "<leader>nc", cmd = ":lua Snacks.notifier.hide()<CR>" },
|
||||
{ mode = "n", key = "<leader>nh", cmd = ":lua Snacks.notifier.show_history()<CR>" },
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Misc Utilities Mappings
|
||||
local misc_utilities_mappings = {
|
||||
{ mode = "n", key = "<leader>x", cmd = "<cmd>!chmod +x %<CR>", group = "Make Executable" },
|
||||
{ mode = "n", key = "<leader>y", cmd = '"+y', group = "System Yank" },
|
||||
{ mode = "v", key = "<leader>y", cmd = '"+y', group = "System Yank" },
|
||||
{ mode = "n", key = "<leader>sc", cmd = ":nohls<CR>", group = "Search" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>m",
|
||||
cmd = function()
|
||||
mkdir_under_cursor()
|
||||
end,
|
||||
group = "mkdir under cursor",
|
||||
},
|
||||
{
|
||||
mode = "v",
|
||||
key = "<leader>m",
|
||||
cmd = function()
|
||||
mkdir_under_cursor()
|
||||
end,
|
||||
group = "mkdir selection",
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Goto Preview Mappings
|
||||
local goto_preview_mappings = {
|
||||
{ mode = "n", key = "gpc", cmd = ':lua require("goto-preview").close_all_win()<CR>', group = "Goto Preview" },
|
||||
{
|
||||
mode = "n",
|
||||
key = "gpd",
|
||||
cmd = ':lua require("goto-preview").goto_preview_definition()<CR>',
|
||||
group = "Goto Preview",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "gpi",
|
||||
cmd = ':lua require("goto-preview").goto_preview_implementation()<CR>',
|
||||
group = "Goto Preview",
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Workspace Management Mappings
|
||||
local workspace_management_mappings = {
|
||||
{ mode = "n", key = "<leader>wa", cmd = vim.lsp.buf.add_workspace_folder },
|
||||
{ mode = "n", key = "<leader>wr", cmd = vim.lsp.buf.remove_workspace_folder },
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>wl",
|
||||
cmd = function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end,
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Noice Mappings
|
||||
local noice_mappings = {
|
||||
{ mode = "n", key = "<leader>Nh", cmd = ":Noice telescope<CR>", group = "Noice" },
|
||||
{ mode = "n", key = "<leader>Nl", cmd = ":Noice last<CR>", group = "Noice" },
|
||||
{ mode = "n", key = "<leader>Nd", cmd = ":Noice dismiss<CR>", group = "Noice" },
|
||||
{ mode = "n", key = "<leader>Ne", cmd = ":Noice errors<CR>", group = "Noice" },
|
||||
{ mode = "n", key = "<leader>Ns", cmd = ":Noice stats<CR>", group = "Noice" },
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ ODIS Mappings
|
||||
local odis_mappings = {
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>dv",
|
||||
cmd = ':lua require("odis").show_documentation("vsplit")<CR>',
|
||||
group = "Vertical split",
|
||||
},
|
||||
{ mode = "n", key = "<leader>dh", cmd = ':lua require("odis").show_documentation("split")<CR>', group = "Split" },
|
||||
{ mode = "n", key = "<leader>db", cmd = ':lua require("odis").show_documentation("buffer")<CR>', group = "Buffer" },
|
||||
{ mode = "n", key = "<leader>dt", cmd = ':lua require("odis").show_documentation("tab")<CR>', group = "Tab" },
|
||||
{ mode = "n", key = "<leader>df", cmd = ':lua require("odis").show_documentation("float")<CR>', group = "Float" },
|
||||
}
|
||||
-- }}}
|
||||
|
||||
-- {{{ Diffview Mappings
|
||||
local diffview_mappings = {
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdo",
|
||||
cmd = ":DiffviewOpen<CR>",
|
||||
group = "DiffviewOpen",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdf",
|
||||
cmd = ":DiffviewFileHistory %<CR>",
|
||||
group = "Git",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdh",
|
||||
cmd = ":DiffviewHistory<CR>",
|
||||
group = "Git",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdc",
|
||||
cmd = ":DiffviewClose<CR>",
|
||||
group = "Git",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdt",
|
||||
cmd = ":DiffviewToggleFiles<CR>",
|
||||
group = "Git",
|
||||
desc = "Toggle files view",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>gdr",
|
||||
cmd = ":DiffviewRefresh<CR>",
|
||||
desc = "Refresh diffview",
|
||||
group = "Git",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>gg",
|
||||
cmd = ":lua Snacks.lazygit()<CR>",
|
||||
desc = "Open Lazygit",
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
--{{{ Custom Terminals
|
||||
local programs_map = {
|
||||
op = { cmd = "ipython", display_name = "ipython", direction = "vertical", hidden = true },
|
||||
oP = {
|
||||
cmd = "ipython",
|
||||
display_name = "ipython-full",
|
||||
direction = "tab",
|
||||
hidden = true,
|
||||
},
|
||||
oi = { cmd = "sudo iotop", display_name = "iotop", direction = "tab", hidden = true },
|
||||
on = { cmd = "rmpc", display_name = "rmpc", direction = "tab", hidden = true },
|
||||
oN = { cmd = "nvtop", display_name = "nvtop", direction = "tab", hidden = true },
|
||||
ob = { cmd = "/usr/bin/btop", display_name = "btop", direction = "tab", hidden = true },
|
||||
od = { cmd = "lazydocker", display_name = "lazydocker", direction = "tab", hidden = true },
|
||||
}
|
||||
|
||||
local temp
|
||||
local tbl = {}
|
||||
for key, value in pairs(programs_map) do
|
||||
temp = {
|
||||
cmd = function()
|
||||
term_toggle(term_factory(value))
|
||||
end,
|
||||
key = "<leader>" .. key,
|
||||
group = value.group,
|
||||
mode = "n",
|
||||
desc = "Open " .. value.display_name,
|
||||
}
|
||||
table.insert(tbl, temp)
|
||||
end
|
||||
add_to_whichkey(tbl, { key = "<leader>o", group = "Open" })
|
||||
|
||||
function _G.set_terminal_keymaps()
|
||||
local opts = { buffer = 0 }
|
||||
map("t", "<esc>", [[<C-\><C-n>]], opts)
|
||||
map("t", "<C-w>", [[<C-\><C-n><C-w>]], opts)
|
||||
end
|
||||
|
||||
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
|
||||
--}}}
|
||||
|
||||
-- {{{ IMAGE
|
||||
local image_mappings = {
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>id",
|
||||
cmd = ":lua require('image').disable()<CR>",
|
||||
desc = "Disable image rendering",
|
||||
},
|
||||
{
|
||||
|
||||
mode = "n",
|
||||
key = "<leader>ie",
|
||||
cmd = ":lua require('image').enable()<CR>",
|
||||
desc = "Enable image rendering",
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
key = "<leader>pi",
|
||||
cmd = function()
|
||||
telescope_paste_img()
|
||||
end,
|
||||
desc = "Find and Paste Image",
|
||||
},
|
||||
}
|
||||
-- }}}
|
||||
|
||||
--{{{ Groups
|
||||
add_to_whichkey(nil, { key = "<leader>a", group = "AnyJump" })
|
||||
add_to_whichkey(nil, { key = "<leader>b", group = "Buffers" })
|
||||
add_to_whichkey(nil, { key = "<leader>c", group = "Code" })
|
||||
add_to_whichkey(nil, { key = "<leader>ca", group = "Code Actions" })
|
||||
add_to_whichkey(nil, { key = "<leader>cc", group = "Calls" })
|
||||
add_to_whichkey(nil, { key = "<leader>C", group = "CodeCompanion" })
|
||||
add_to_whichkey(nil, { key = "<leader>cL", group = "LSP" })
|
||||
add_to_whichkey(nil, { key = "<leader>d", group = "ODIS" })
|
||||
add_to_whichkey(nil, { key = "<leader>f", group = "Find" })
|
||||
add_to_whichkey(nil, { key = "<leader>g", group = "Git" })
|
||||
add_to_whichkey(nil, { key = "<leader>gd", group = "DiffView" })
|
||||
add_to_whichkey(nil, { key = "<leader>h", group = "Help" })
|
||||
add_to_whichkey(nil, { key = "<leader>i", group = "Image" })
|
||||
add_to_whichkey(nil, { key = "<leader>j", group = "AnyJump" })
|
||||
add_to_whichkey(nil, { key = "<leader>N", group = "Noice" })
|
||||
-- add_to_whichkey(nil, { key = "<leader>o", group = "Open" })
|
||||
add_to_whichkey(nil, { key = "<leader>p", group = "Paste" })
|
||||
add_to_whichkey(nil, { key = "<leader>pg", group = "Paste Git Raw" })
|
||||
add_to_whichkey(nil, { key = "<leader>s", group = "Search" })
|
||||
add_to_whichkey(nil, { key = "<leader>t", group = "Terminal" })
|
||||
add_to_whichkey(nil, { key = "<leader>T", group = "Telescope" })
|
||||
add_to_whichkey(nil, { key = "<leader>w", group = "Workspace" })
|
||||
add_to_whichkey(nil, { key = "<leader>x", group = "Make Executable" })
|
||||
add_to_whichkey(nil, { key = "<leader>y", group = "System Yank" })
|
||||
add_to_whichkey(nil, { key = "<leader>0", group = "Horizontal Terminal" })
|
||||
add_to_whichkey(nil, { key = "<leader>cP", group = "Python" })
|
||||
--}}}
|
||||
|
||||
--{{{ Whichkey Mappings
|
||||
local mappings_tables = {
|
||||
basic_mappings,
|
||||
buffer_navigation_mappings,
|
||||
terminal_mappings,
|
||||
lsp_mappings,
|
||||
code_companion_mappings,
|
||||
telescope_mappings,
|
||||
file_explorer_mappings,
|
||||
misc_utilities_mappings,
|
||||
goto_preview_mappings,
|
||||
workspace_management_mappings,
|
||||
noice_mappings,
|
||||
odis_mappings,
|
||||
diffview_mappings,
|
||||
image_mappings,
|
||||
}
|
||||
|
||||
for _, mapping in ipairs(mappings_tables) do
|
||||
add_to_whichkey(map_from_table(mapping))
|
||||
end
|
||||
add_to_whichkey(nil, { key = "<leader>dc", group = "Close" })
|
||||
--}}}
|
||||
@@ -0,0 +1,21 @@
|
||||
local M = {}
|
||||
|
||||
function M.setup()
|
||||
vim.api.nvim_create_user_command("Config", "edit ~/.config/nvim", { desc = "Edit Neovim configuration" })
|
||||
vim.api.nvim_create_user_command(
|
||||
"Keymaps",
|
||||
"edit ~/.config/nvim/lua/core/keymaps/init.lua",
|
||||
{ desc = "Edit keymaps" }
|
||||
)
|
||||
vim.api.nvim_create_user_command(
|
||||
"Hypr",
|
||||
"edit ~/.config/hypr/hyprland.conf",
|
||||
{ desc = "Edit Hyprland configuration" }
|
||||
)
|
||||
|
||||
vim.keymap.set("", "<Leader>tl", function()
|
||||
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
|
||||
end, { desc = "Toggle diagnostics" })
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,38 @@
|
||||
local M = {}
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
function M.setup()
|
||||
map("n", "<C-u>", "<C-u>zz", { desc = "Scroll up and center" })
|
||||
map("n", "n", "nzzzv", { desc = "Next search result and center" })
|
||||
map("n", "N", "Nzzzv", { desc = "Previous search result and center" })
|
||||
map("x", "<leader>pp", '"_dP', { desc = "Paste without yanking" })
|
||||
map("v", "<", "<gv", { desc = "Reselect after indent" })
|
||||
map("v", ">", ">gv", { desc = "Reselect after indent" })
|
||||
map("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move line down" })
|
||||
map("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move line up" })
|
||||
|
||||
map("n", "<C-J>", "<cmd>bnext<cr>", { desc = "Next buffer" })
|
||||
map("n", "<C-K>", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
|
||||
map("n", "<leader>bk", "<cmd>bdelete<cr>", { desc = "Delete buffer" })
|
||||
map("n", "<leader>bn", "<cmd>bnext<cr>", { desc = "Next buffer" })
|
||||
map("n", "<leader>bp", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
|
||||
|
||||
map("n", "<leader>x", "<cmd>!chmod +x %<cr>", { desc = "Make file executable" })
|
||||
map({ "n", "v" }, "<leader>y", '"+y', { desc = "Yank to system clipboard" })
|
||||
map("n", "<leader>sc", "<cmd>nohlsearch<cr>", { desc = "Clear search highlights" })
|
||||
map({ "n", "v" }, "<leader>m", require("utils.functions.mkdir_under_cursor").mkdir_under_cursor, {
|
||||
desc = "Create directory from text",
|
||||
})
|
||||
map("n", "<leader>pg", require("utils.functions.git_paste").git_paste_prompt, {
|
||||
desc = "Paste content from Git raw URL",
|
||||
})
|
||||
|
||||
map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, { desc = "Add workspace folder" })
|
||||
map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, { desc = "Remove workspace folder" })
|
||||
map("n", "<leader>wl", function()
|
||||
vim.print(vim.lsp.buf.list_workspace_folders())
|
||||
end, { desc = "List workspace folders" })
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,33 @@
|
||||
local M = {}
|
||||
|
||||
function M.setup()
|
||||
require("which-key").add({
|
||||
{ "<leader>a", group = "AnyJump" },
|
||||
{ "<leader>b", group = "Buffers" },
|
||||
{ "<leader>c", group = "Code" },
|
||||
{ "<leader>ca", group = "Code actions" },
|
||||
{ "<leader>cc", group = "Calls" },
|
||||
{ "<leader>cL", group = "LSP" },
|
||||
{ "<leader>cP", group = "Python" },
|
||||
{ "<leader>C", group = "CodeCompanion" },
|
||||
{ "<leader>f", group = "Find" },
|
||||
{ "<leader>g", group = "Git" },
|
||||
{ "<leader>gd", group = "Diffview" },
|
||||
{ "<leader>h", group = "Help" },
|
||||
{ "<leader>i", group = "Image" },
|
||||
{ "<leader>j", group = "AnyJump" },
|
||||
{ "<leader>n", group = "Navigation and notifications" },
|
||||
{ "<leader>N", group = "Noice" },
|
||||
{ "<leader>o", group = "Open" },
|
||||
{ "<leader>p", group = "Paste" },
|
||||
{ "<leader>pg", group = "Paste Git raw" },
|
||||
{ "<leader>s", group = "Search" },
|
||||
{ "<leader>t", group = "Terminal" },
|
||||
{ "<leader>T", group = "Telescope" },
|
||||
{ "<leader>w", group = "Workspace" },
|
||||
{ "<leader>x", group = "Executable bit" },
|
||||
{ "<leader>y", group = "System clipboard" },
|
||||
})
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,4 @@
|
||||
require("core.keymaps.commands").setup()
|
||||
require("core.keymaps.editing").setup()
|
||||
require("core.keymaps.lsp").setup()
|
||||
require("core.keymaps.groups").setup()
|
||||
@@ -0,0 +1,47 @@
|
||||
local M = {}
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
function M.setup()
|
||||
map("n", "gA", vim.lsp.buf.code_action, { desc = "Code action" })
|
||||
map("n", "gd", "<cmd>Telescope lsp_definitions<cr>", { desc = "Definitions" })
|
||||
map("n", "gDc", "<cmd>Telescope lsp_implementations<cr>", { desc = "Implementations" })
|
||||
map("n", "gDf", "<cmd>Telescope lsp_definitions<cr>", { desc = "Definitions" })
|
||||
map("n", "gF", "<cmd>edit <cfile><cr>", { desc = "Edit file under cursor" })
|
||||
map("n", "gT", "<cmd>Telescope lsp_type_definitions<cr>", { desc = "Type definitions" })
|
||||
map("n", "gb", "<cmd>Gitsigns blame_line<cr>", { desc = "Blame line" })
|
||||
map("n", "<leader>gb", "<cmd>Gitsigns blame<cr>", { desc = "Git blame" })
|
||||
map("n", "gi", "<cmd>Telescope lsp_implementations<cr>", { desc = "Implementations" })
|
||||
map("n", "gj", "<cmd>Telescope jumplist<cr>", { desc = "Jumplist" })
|
||||
map("n", "gr", "<cmd>Telescope lsp_references<cr>", { desc = "References" })
|
||||
map("n", "gs", vim.lsp.buf.signature_help, { desc = "Signature help" })
|
||||
map("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code action" })
|
||||
map("n", "<leader>ch", vim.lsp.buf.signature_help, { desc = "Signature help" })
|
||||
map("n", "<leader>cR", vim.lsp.buf.rename, { desc = "Rename" })
|
||||
map("n", "<leader>cr", "<cmd>Telescope lsp_references<cr>", { desc = "References" })
|
||||
map("n", "<leader>cs", "<cmd>Telescope lsp_document_symbols<cr>", { desc = "Document symbols" })
|
||||
map("n", "<leader>ct", "<cmd>Telescope lsp_type_definitions<cr>", { desc = "Type definitions" })
|
||||
map("n", "<leader>cw", "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>", { desc = "Workspace symbols" })
|
||||
map("n", "<leader>ci", "<cmd>Telescope lsp_implementations<cr>", { desc = "Implementations" })
|
||||
map("n", "<leader>cci", "<cmd>Telescope lsp_incoming_calls<cr>", { desc = "Incoming calls" })
|
||||
map("n", "<leader>cco", "<cmd>Telescope lsp_outgoing_calls<cr>", { desc = "Outgoing calls" })
|
||||
map("n", "<leader>cd", "<cmd>Telescope diagnostics theme=dropdown layout_config={width=0.8}<cr>", {
|
||||
desc = "Diagnostics",
|
||||
})
|
||||
map("n", "<leader>cDs", "<cmd>Telescope diagnostics theme=dropdown layout_config={width=0.8}<cr>", {
|
||||
desc = "Diagnostics",
|
||||
})
|
||||
map("n", "<leader>cDn", function()
|
||||
vim.diagnostic.jump({ count = 1, float = true })
|
||||
end, { desc = "Next diagnostic" })
|
||||
map("n", "<leader>cDp", function()
|
||||
vim.diagnostic.jump({ count = -1, float = true })
|
||||
end, { desc = "Previous diagnostic" })
|
||||
map("n", "<leader>cl", vim.diagnostic.setloclist, { desc = "Diagnostics to location list" })
|
||||
map("n", "<leader>Clr", "<cmd>LspRestart<cr>", { desc = "Restart LSP" })
|
||||
map("n", "<leader>cPs", function()
|
||||
vim.cmd("!pyright --createstub " .. vim.fn.expand("<cword>"))
|
||||
end, { desc = "Generate Python stub" })
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,60 +1,33 @@
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("core.options")
|
||||
|
||||
-- Setup lazy.nvim
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- import your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
-- Configure any other settings here. See the documentation for more details.
|
||||
-- colorscheme that will be used when installing plugins.
|
||||
install = { colorscheme = { "habamax" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = true },
|
||||
dev = {
|
||||
-- Directory where you store your local plugin projects. If a function is used,
|
||||
-- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
|
||||
---@type string | fun(plugin: LazyPlugin): string
|
||||
path = "~/.config/nvim/test",
|
||||
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
||||
patterns = {}, -- For example {"folke"}
|
||||
fallback = false, -- Fallback to git when local plugin doesn't exist
|
||||
},
|
||||
-- lazy can generate helptags from the headings in markdown readme files,
|
||||
-- so :help works even for plugins that don't have vim docs.
|
||||
-- when the readme opens with :help it will be correctly displayed as markdown
|
||||
readme = {
|
||||
enabled = true,
|
||||
root = vim.fn.stdpath("state") .. "/lazy/readme",
|
||||
files = { "README.md", "lua/**/README.md" },
|
||||
-- only generate markdown helptags for plugins that don't have docs
|
||||
skip_if_doc_exists = true,
|
||||
},
|
||||
state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things
|
||||
-- Enable profiling of lazy.nvim. This will add some overhead,
|
||||
-- so only enable this when you are debugging lazy.nvim
|
||||
profiling = {
|
||||
-- Enables extra stats on the debug tab related to the loader cache.
|
||||
-- Additionally gathers stats about all package.loaders
|
||||
loader = false,
|
||||
-- Track each new require in the Lazy profiling tab
|
||||
require = false,
|
||||
},
|
||||
state = vim.fn.stdpath("state") .. "/lazy/state.json",
|
||||
})
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
-- Utility functions shared between progress reports for LSP and DAP
|
||||
vim.notify = require("notify")
|
||||
|
||||
local client_notifs = {}
|
||||
|
||||
local function get_notif_data(client_id, token)
|
||||
if not client_notifs[client_id] then
|
||||
client_notifs[client_id] = {}
|
||||
end
|
||||
|
||||
if not client_notifs[client_id][token] then
|
||||
client_notifs[client_id][token] = {}
|
||||
end
|
||||
|
||||
return client_notifs[client_id][token]
|
||||
end
|
||||
|
||||
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }
|
||||
|
||||
local function update_spinner(client_id, token, title)
|
||||
local notif_data = get_notif_data(client_id, token)
|
||||
|
||||
if notif_data.spinner then
|
||||
local new_spinner = (notif_data.spinner + 1) % #spinner_frames
|
||||
notif_data.spinner = new_spinner
|
||||
|
||||
notif_data.notification = vim.notify("", nil, {
|
||||
hide_from_history = true,
|
||||
icon = spinner_frames[new_spinner],
|
||||
replace = notif_data.notification,
|
||||
title = title,
|
||||
})
|
||||
|
||||
vim.defer_fn(function()
|
||||
update_spinner(client_id, token, title)
|
||||
end, 100)
|
||||
end
|
||||
end
|
||||
|
||||
local function format_title(title, client_name)
|
||||
return client_name .. (title and #title > 0 and ": " .. title or "")
|
||||
end
|
||||
|
||||
local function format_message(message, percentage)
|
||||
return (percentage and percentage .. "%\t" or "") .. (message or "")
|
||||
end
|
||||
|
||||
-- LSP integration
|
||||
-- Make sure to also have the snippet with the common helper functions in your config!
|
||||
|
||||
vim.lsp.handlers["$/progress"] = function(_, result, ctx)
|
||||
local client_id = ctx.client_id
|
||||
|
||||
local val = result.value
|
||||
|
||||
if not val.kind then
|
||||
return
|
||||
end
|
||||
|
||||
local notif_data = get_notif_data(client_id, result.token)
|
||||
|
||||
if val.kind == "begin" then
|
||||
local message = format_message(val.message, val.percentage)
|
||||
|
||||
notif_data.notification = vim.notify(message, "info", {
|
||||
title = format_title("", vim.lsp.get_client_by_id(client_id).name),
|
||||
icon = spinner_frames[1],
|
||||
timeout = false,
|
||||
hide_from_history = false,
|
||||
})
|
||||
|
||||
notif_data.spinner = 1
|
||||
update_spinner(client_id, result.token, val.title)
|
||||
elseif val.kind == "report" and notif_data then
|
||||
notif_data.notification = vim.notify(format_message(val.message, val.percentage), "info", {
|
||||
replace = notif_data.notification,
|
||||
title = format_title("", vim.lsp.get_client_by_id(client_id).name),
|
||||
hide_from_history = false,
|
||||
})
|
||||
elseif val.kind == "end" and notif_data then
|
||||
notif_data.notification = vim.notify(val.message and format_message(val.message) or "Complete", "info", {
|
||||
icon = "",
|
||||
replace = notif_data.notification,
|
||||
title = format_title("", vim.lsp.get_client_by_id(client_id).name),
|
||||
timeout = 3000,
|
||||
})
|
||||
|
||||
notif_data.spinner = nil
|
||||
end
|
||||
end
|
||||
|
||||
vim.lsp.handlers["window/showMessage"] = function(err, result, ctx)
|
||||
local client = vim.lsp.get_client_by_id(ctx.client_id)
|
||||
local lvl = ({
|
||||
"ERROR",
|
||||
"WARN",
|
||||
"INFO",
|
||||
"DEBUG",
|
||||
})[result.type]
|
||||
vim.notify("LSP Message: " .. result.message, lvl, {
|
||||
title = client.name,
|
||||
timeout = 5000,
|
||||
keep = function()
|
||||
return lvl == "ERROR" or lvl == "WARN"
|
||||
end,
|
||||
})
|
||||
end
|
||||
@@ -1,7 +1,5 @@
|
||||
local g = vim.g
|
||||
local o = vim.o
|
||||
local A = vim.api
|
||||
local l = vim.lsp
|
||||
|
||||
g.mapleader = " "
|
||||
g.maplocalleader = ","
|
||||
@@ -11,14 +9,12 @@ o.showmode = false
|
||||
o.termguicolors = true
|
||||
o.background = "dark"
|
||||
o.mouse = "a"
|
||||
o.syntax = "on"
|
||||
o.laststatus = 3
|
||||
o.number = true
|
||||
o.relativenumber = true
|
||||
o.colorcolumn = "88"
|
||||
o.textwidth = 80
|
||||
o.shiftwidth = 4
|
||||
o.expandtab = true
|
||||
o.tabstop = 4
|
||||
o.autoindent = true
|
||||
o.ignorecase = true
|
||||
@@ -37,29 +33,19 @@ o.wildignore = ".git,.hg,.svn,CVS,.DS_Store,.idea,.vscode,.vscode-test,node_modu
|
||||
o.showmatch = true
|
||||
o.list = true
|
||||
o.listchars = "tab:»·,trail:·,nbsp:·,extends:>,precedes:<"
|
||||
o.encoding = "utf-8"
|
||||
o.guifont = "JetBrainsMono Nerd Font 14"
|
||||
o.expandtab = true
|
||||
o.hidden = true
|
||||
o.cmdheight = 1
|
||||
o.updatetime = 300
|
||||
o.timeoutlen = 500
|
||||
o.pumwidth = 35
|
||||
o.foldmethod = "marker"
|
||||
o.conceallevel = 1
|
||||
g.db_ui_use_nerd_fonts = 1
|
||||
|
||||
-- vim.cmd.colorscheme = 'catppuccin-macchiato'
|
||||
vim.cmd.colorscheme = "catppuccin"
|
||||
|
||||
-- set border for floating windows and signature help
|
||||
-- UNSUPPPORTED: https://github.com/neovim/neovim/issues/32242#issuecomment-2777120640
|
||||
-- l.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = border })
|
||||
-- l.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border })
|
||||
o.winborder = "rounded"
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
virtual_lines = { current_line = true },
|
||||
signs = true,
|
||||
underline = true,
|
||||
severity_sort = true,
|
||||
|
||||
Reference in New Issue
Block a user