mirror of
https://github.com/nvim-lua/kickstart.nvim.git
synced 2025-06-24 22:28:36 +02:00
done maybe
This commit is contained in:
parent
d00f77555e
commit
c54b71fdd4
24 changed files with 2632 additions and 501 deletions
275
lua/custom/plugins/which_key_integration.lua
Normal file
275
lua/custom/plugins/which_key_integration.lua
Normal file
|
@ -0,0 +1,275 @@
|
|||
-- --[[
|
||||
-- Which-Key Integration Plugin - Latest v3 Configuration
|
||||
|
||||
-- This file sets up which-key with the latest v3 API and configuration.
|
||||
-- which-key v3 uses a new spec-based system for defining keymaps.
|
||||
-- ]]
|
||||
|
||||
-- return {
|
||||
-- {
|
||||
-- 'folke/which-key.nvim',
|
||||
-- event = "VeryLazy",
|
||||
-- opts = {
|
||||
-- preset = "modern", -- "classic", "modern", or "helix"
|
||||
-- delay = function(ctx)
|
||||
-- return ctx.plugin and 0 or 200
|
||||
-- end,
|
||||
-- plugins = {
|
||||
-- marks = true, -- shows a list of your marks on ' and `
|
||||
-- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
|
||||
-- spelling = {
|
||||
-- enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
|
||||
-- suggestions = 20, -- how many suggestions should be shown in the list?
|
||||
-- },
|
||||
-- presets = {
|
||||
-- operators = true, -- adds help for operators like d, y, ...
|
||||
-- motions = true, -- adds help for motions
|
||||
-- text_objects = true, -- help for text objects triggered after entering an operator
|
||||
-- windows = true, -- default bindings on <c-w>
|
||||
-- nav = true, -- misc bindings to work with windows
|
||||
-- z = true, -- bindings for folds, spelling and others prefixed with z
|
||||
-- g = true, -- bindings for prefixed with g
|
||||
-- },
|
||||
-- },
|
||||
-- spec = {
|
||||
-- { "g", group = "goto" },
|
||||
-- { "gz", group = "surround" },
|
||||
-- { "]", group = "next" },
|
||||
-- { "[", group = "prev" },
|
||||
-- { "<leader><tab>", group = "tabs" },
|
||||
-- { "<leader>b", group = "buffer" },
|
||||
-- { "<leader>c", group = "code" },
|
||||
-- { "<leader>f", group = "file/find" },
|
||||
-- { "<leader>g", group = "git" },
|
||||
-- { "<leader>h", group = "harpoon" },
|
||||
-- { "<leader>l", group = "leetcode" },
|
||||
-- { "<leader>n", group = "neorg" },
|
||||
-- { "<leader>q", group = "quit/session" },
|
||||
-- { "<leader>s", group = "search" },
|
||||
-- { "<leader>t", group = "toggle/tab" },
|
||||
-- { "<leader>w", group = "windows" },
|
||||
-- { "<leader>x", group = "diagnostics/quickfix" },
|
||||
-- },
|
||||
-- icons = {
|
||||
-- breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
|
||||
-- separator = "→", -- symbol used between a key and it's label
|
||||
-- group = "+", -- symbol prepended to a group
|
||||
-- mappings = vim.g.have_nerd_font,
|
||||
-- },
|
||||
-- win = {
|
||||
-- border = "rounded", -- none, single, double, shadow, rounded
|
||||
-- position = "bottom", -- bottom, top
|
||||
-- margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
|
||||
-- padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
|
||||
-- winblend = 0, -- value between 0-100 0 for fully opaque and 100 for fully transparent
|
||||
-- },
|
||||
-- layout = {
|
||||
-- height = { min = 4, max = 25 }, -- min and max height of the columns
|
||||
-- width = { min = 20, max = 50 }, -- min and max width of the columns
|
||||
-- spacing = 3, -- spacing between columns
|
||||
-- align = "center", -- align columns left, center or right
|
||||
-- },
|
||||
-- show_help = true, -- show help message on the command line when the popup is visible
|
||||
-- show_keys = true, -- show the currently pressed key and its label as a message in the command line
|
||||
-- },
|
||||
-- config = function(_, opts)
|
||||
-- local wk = require("which-key")
|
||||
-- wk.setup(opts)
|
||||
|
||||
-- -- Use vim.schedule to ensure modules are loaded after Vim is ready
|
||||
-- vim.schedule(function()
|
||||
-- -- Load which-key setup with customized configuration
|
||||
-- require('custom.which_key_setup').setup()
|
||||
|
||||
-- -- Load core keymaps
|
||||
-- pcall(function() require('custom.keymaps').setup() end)
|
||||
|
||||
-- -- Load plugin-specific keymaps
|
||||
-- pcall(function() require('custom.plugin_keymaps').setup() end)
|
||||
-- end)
|
||||
-- end,
|
||||
-- -- Load on specific events with higher priority
|
||||
-- event = "VeryLazy",
|
||||
-- priority = 1000, -- High priority to ensure it loads first
|
||||
-- }
|
||||
-- }
|
||||
--[[
|
||||
Which-Key Integration Plugin - Latest v3 Configuration
|
||||
|
||||
This file sets up which-key with the latest v3 API and configuration.
|
||||
Official documentation: https://github.com/folke/which-key.nvim
|
||||
]]
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
preset = "modern", -- "classic", "modern", or "helix"
|
||||
-- Delay before showing the popup. Can be a number or a function that returns a number.
|
||||
-- 0 to disable, or a function that returns the delay based on the current context
|
||||
delay = function(ctx)
|
||||
return ctx.plugin and 0 or 200
|
||||
end,
|
||||
|
||||
-- Filter to exclude mappings without descriptions or that match certain patterns
|
||||
filter = function(mapping)
|
||||
-- Exclude mappings without descriptions
|
||||
return mapping.desc and mapping.desc ~= ""
|
||||
end,
|
||||
|
||||
-- You can add any mappings here, or use `require("which-key").add()` later
|
||||
spec = {
|
||||
{
|
||||
mode = { "n", "v" },
|
||||
{ "<leader><tab>", group = "tabs" },
|
||||
{ "<leader>b", group = "buffer" },
|
||||
{ "<leader>c", group = "code/copilot" },
|
||||
{ "<leader>f", group = "file/find" },
|
||||
{ "<leader>g", group = "git" },
|
||||
{ "<leader>gh", group = "hunks" },
|
||||
{ "<leader>h", group = "harpoon" },
|
||||
{ "<leader>l", group = "leetcode" },
|
||||
{ "<leader>n", group = "neorg" },
|
||||
{ "<leader>q", group = "quit/session" },
|
||||
{ "<leader>s", group = "search" },
|
||||
{ "<leader>t", group = "toggle/tab" },
|
||||
{ "<leader>u", group = "ui" },
|
||||
{ "<leader>w", group = "windows" },
|
||||
{ "<leader>x", group = "diagnostics/quickfix" },
|
||||
{ "[", group = "prev" },
|
||||
{ "]", group = "next" },
|
||||
{ "g", group = "goto" },
|
||||
{ "gs", group = "surround" },
|
||||
{ "z", group = "fold" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Window configuration
|
||||
win = {
|
||||
border = "rounded",
|
||||
no_overlap = true,
|
||||
padding = { 1, 2 }, -- extra window padding [top/bottom, right/left]
|
||||
title = true,
|
||||
title_pos = "center",
|
||||
zindex = 1000,
|
||||
},
|
||||
|
||||
-- Layout configuration
|
||||
layout = {
|
||||
width = { min = 20 }, -- min and max width of the columns
|
||||
spacing = 3, -- spacing between columns
|
||||
},
|
||||
|
||||
-- Key bindings for the which-key buffer
|
||||
keys = {
|
||||
scroll_down = "<c-d>", -- binding to scroll down inside the popup
|
||||
scroll_up = "<c-u>", -- binding to scroll up inside the popup
|
||||
},
|
||||
|
||||
-- Sort mappings
|
||||
sort = { "local", "order", "group", "alphanum", "mod" },
|
||||
|
||||
-- Expand groups when <= n mappings
|
||||
expand = 0,
|
||||
|
||||
-- Replacements for how keys and descriptions are displayed
|
||||
replace = {
|
||||
key = {
|
||||
function(key)
|
||||
return require("which-key.view").format(key)
|
||||
end,
|
||||
-- { "<Space>", "SPC" },
|
||||
},
|
||||
desc = {
|
||||
{ "<Plug>%(?(.*)%)?", "%1" },
|
||||
{ "^%+", "" },
|
||||
{ "<[cC]md>", "" },
|
||||
{ "<[cC][rR]>", "" },
|
||||
{ "<[sS]ilent>", "" },
|
||||
{ "^lua%s+", "" },
|
||||
{ "^call%s+", "" },
|
||||
{ "^:%s*", "" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Icons configuration
|
||||
icons = {
|
||||
breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
|
||||
separator = "➜", -- symbol used between a key and it's label
|
||||
group = "+", -- symbol prepended to a group
|
||||
ellipsis = "…",
|
||||
mappings = vim.g.have_nerd_font, -- set to false to disable all mapping icons
|
||||
rules = {},
|
||||
colors = true,
|
||||
-- Icon keys for different key types
|
||||
keys = vim.g.have_nerd_font and {} or {
|
||||
Up = " ",
|
||||
Down = " ",
|
||||
Left = " ",
|
||||
Right = " ",
|
||||
C = " ",
|
||||
M = " ",
|
||||
D = " ",
|
||||
S = " ",
|
||||
CR = " ",
|
||||
Esc = " ",
|
||||
ScrollWheelDown = " ",
|
||||
ScrollWheelUp = " ",
|
||||
NL = " ",
|
||||
BS = "",
|
||||
Space = " ",
|
||||
Tab = " ",
|
||||
F1 = "",
|
||||
F2 = "",
|
||||
F3 = "",
|
||||
F4 = "",
|
||||
F5 = "",
|
||||
F6 = "",
|
||||
F7 = "",
|
||||
F8 = "",
|
||||
F9 = "",
|
||||
F10 = "",
|
||||
F11 = "",
|
||||
F12 = "",
|
||||
},
|
||||
},
|
||||
|
||||
-- Show help and keys
|
||||
show_help = true,
|
||||
show_keys = true,
|
||||
|
||||
-- Disable which-key for certain file types or buffer types
|
||||
disable = {
|
||||
buftypes = {},
|
||||
filetypes = {},
|
||||
},
|
||||
},
|
||||
|
||||
config = function(_, opts)
|
||||
local wk = require("which-key")
|
||||
wk.setup(opts)
|
||||
|
||||
-- Load keymap modules after which-key is ready
|
||||
vim.schedule(function()
|
||||
-- Load core keymaps if they exist
|
||||
local core_keymaps_ok, _ = pcall(require, 'custom.keymaps')
|
||||
if core_keymaps_ok then
|
||||
pcall(function() require('custom.keymaps').setup() end)
|
||||
end
|
||||
|
||||
-- Load which-key specific setup
|
||||
local wk_setup_ok, _ = pcall(require, 'custom.which_key_setup')
|
||||
if wk_setup_ok then
|
||||
pcall(function() require('custom.which_key_setup').setup() end)
|
||||
end
|
||||
|
||||
-- Load plugin-specific keymaps
|
||||
local plugin_keymaps_ok, _ = pcall(require, 'custom.plugin_keymaps')
|
||||
if plugin_keymaps_ok then
|
||||
pcall(function() require('custom.plugin_keymaps').setup() end)
|
||||
end
|
||||
end)
|
||||
end,
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue