mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-22 21:30:51 +00:00
feat: breadcrumbs
This commit is contained in:
parent
eaab87d151
commit
14179505b3
8 changed files with 222 additions and 1 deletions
|
@ -54,7 +54,10 @@ inputs: let
|
||||||
|
|
||||||
nix.enable = true;
|
nix.enable = true;
|
||||||
html.enable = isMaximal;
|
html.enable = isMaximal;
|
||||||
clang.enable = isMaximal;
|
clang = {
|
||||||
|
enable = isMaximal;
|
||||||
|
lsp.server = "clangd";
|
||||||
|
};
|
||||||
sql.enable = isMaximal;
|
sql.enable = isMaximal;
|
||||||
rust = {
|
rust = {
|
||||||
enable = isMaximal;
|
enable = isMaximal;
|
||||||
|
@ -189,6 +192,7 @@ inputs: let
|
||||||
colorizer.enable = true;
|
colorizer.enable = true;
|
||||||
modes-nvim.enable = false; # the theme looks terrible with catppuccin
|
modes-nvim.enable = false; # the theme looks terrible with catppuccin
|
||||||
illuminate.enable = true;
|
illuminate.enable = true;
|
||||||
|
breadcrumbs.enable = true;
|
||||||
smartcolumn = {
|
smartcolumn = {
|
||||||
enable = true;
|
enable = true;
|
||||||
columnAt.languages = {
|
columnAt.languages = {
|
||||||
|
|
34
flake.lock
34
flake.lock
|
@ -1077,6 +1077,38 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nvim-navbuddy": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688569844,
|
||||||
|
"narHash": "sha256-011RT/wnQdBR1vMrXFwxbicBAgdcd4eQYPbok/o3CIE=",
|
||||||
|
"owner": "SmiteshP",
|
||||||
|
"repo": "nvim-navbuddy",
|
||||||
|
"rev": "244a4cded6f2b568403684131d148048efe4e8af",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SmiteshP",
|
||||||
|
"repo": "nvim-navbuddy",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nvim-navic": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689447657,
|
||||||
|
"narHash": "sha256-fcSer6l6oX0qnOcRfNSZImmtkqjdH0WSUkptjaFj0AI=",
|
||||||
|
"owner": "SmiteshP",
|
||||||
|
"repo": "nvim-navic",
|
||||||
|
"rev": "e6da6f74d89de65258ea7e98e22103ff5de6dcf5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SmiteshP",
|
||||||
|
"repo": "nvim-navic",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nvim-neoclip": {
|
"nvim-neoclip": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -1397,6 +1429,8 @@
|
||||||
"nvim-dap-ui": "nvim-dap-ui",
|
"nvim-dap-ui": "nvim-dap-ui",
|
||||||
"nvim-lightbulb": "nvim-lightbulb",
|
"nvim-lightbulb": "nvim-lightbulb",
|
||||||
"nvim-lspconfig": "nvim-lspconfig",
|
"nvim-lspconfig": "nvim-lspconfig",
|
||||||
|
"nvim-navbuddy": "nvim-navbuddy",
|
||||||
|
"nvim-navic": "nvim-navic",
|
||||||
"nvim-neoclip": "nvim-neoclip",
|
"nvim-neoclip": "nvim-neoclip",
|
||||||
"nvim-notify": "nvim-notify",
|
"nvim-notify": "nvim-notify",
|
||||||
"nvim-session-manager": "nvim-session-manager",
|
"nvim-session-manager": "nvim-session-manager",
|
||||||
|
|
12
flake.nix
12
flake.nix
|
@ -143,6 +143,7 @@
|
||||||
url = "github:tversteeg/registers.nvim";
|
url = "github:tversteeg/registers.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
nvim-neoclip = {
|
nvim-neoclip = {
|
||||||
url = "github:AckslD/nvim-neoclip.lua";
|
url = "github:AckslD/nvim-neoclip.lua";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
@ -248,6 +249,7 @@
|
||||||
url = "github:b3nj5m1n/kommentary";
|
url = "github:b3nj5m1n/kommentary";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
comment-nvim = {
|
comment-nvim = {
|
||||||
url = "github:numToStr/Comment.nvim";
|
url = "github:numToStr/Comment.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
@ -455,6 +457,16 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# UI
|
# UI
|
||||||
|
nvim-navbuddy = {
|
||||||
|
url = "github:SmiteshP/nvim-navbuddy";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
nvim-navic = {
|
||||||
|
url = "github:SmiteshP/nvim-navic";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
noice-nvim = {
|
noice-nvim = {
|
||||||
url = "github:folke/noice.nvim";
|
url = "github:folke/noice.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
|
|
@ -87,6 +87,8 @@ with lib; let
|
||||||
"nvim-surround"
|
"nvim-surround"
|
||||||
"nvim-dap"
|
"nvim-dap"
|
||||||
"nvim-dap-ui"
|
"nvim-dap-ui"
|
||||||
|
"nvim-navic"
|
||||||
|
"nvim-navbuddy"
|
||||||
];
|
];
|
||||||
# You can either use the name of the plugin or a package.
|
# You can either use the name of the plugin or a package.
|
||||||
pluginsType = with types;
|
pluginsType = with types;
|
||||||
|
|
5
modules/ui/breadcrumbs/breadcrumbs.nix
Normal file
5
modules/ui/breadcrumbs/breadcrumbs.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{lib, ...}: {
|
||||||
|
options.vim.ui.breadcrumbs = {
|
||||||
|
enable = lib.mkEnableOption "breadcrumbs";
|
||||||
|
};
|
||||||
|
}
|
157
modules/ui/breadcrumbs/config.nix
Normal file
157
modules/ui/breadcrumbs/config.nix
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
with builtins; let
|
||||||
|
cfg = config.vim.ui.breadcrumbs;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
vim.startPlugins = [
|
||||||
|
"nvim-navbuddy"
|
||||||
|
"nvim-navic"
|
||||||
|
"nvim-lspconfig"
|
||||||
|
];
|
||||||
|
|
||||||
|
vim.luaConfigRC.breadcrumbs = nvim.dag.entryAfter ["lspconfig"] ''
|
||||||
|
local navbuddy = require("nvim-navbuddy")
|
||||||
|
local actions = require("nvim-navbuddy.actions")
|
||||||
|
|
||||||
|
require("lspconfig").clangd.setup {
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
navbuddy.attach(client, bufnr)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
navbuddy.setup {
|
||||||
|
window = {
|
||||||
|
border = "single", -- "rounded", "double", "solid", "none"
|
||||||
|
-- or an array with eight chars building up the border in a clockwise fashion
|
||||||
|
-- starting with the top-left corner. eg: { "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" }.
|
||||||
|
size = "60%", -- Or table format example: { height = "40%", width = "100%"}
|
||||||
|
position = "50%", -- Or table format example: { row = "100%", col = "0%"}
|
||||||
|
scrolloff = nil, -- scrolloff value within navbuddy window
|
||||||
|
sections = {
|
||||||
|
left = {
|
||||||
|
size = "20%",
|
||||||
|
border = nil, -- You can set border style for each section individually as well.
|
||||||
|
},
|
||||||
|
mid = {
|
||||||
|
size = "40%",
|
||||||
|
border = nil,
|
||||||
|
},
|
||||||
|
right = {
|
||||||
|
-- No size option for right most section. It fills to
|
||||||
|
-- remaining area.
|
||||||
|
border = nil,
|
||||||
|
preview = "leaf", -- Right section can show previews too.
|
||||||
|
-- Options: "leaf", "always" or "never"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
node_markers = {
|
||||||
|
enabled = true,
|
||||||
|
icons = {
|
||||||
|
leaf = " ",
|
||||||
|
leaf_selected = " → ",
|
||||||
|
branch = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
icons = {
|
||||||
|
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 = " ",
|
||||||
|
},
|
||||||
|
use_default_mappings = true, -- If set to false, only mappings set
|
||||||
|
-- by user are set. Else default
|
||||||
|
-- mappings are used for keys
|
||||||
|
-- that are not set by user
|
||||||
|
mappings = {
|
||||||
|
["<esc>"] = actions.close(), -- Close and cursor to original location
|
||||||
|
["q"] = actions.close(),
|
||||||
|
|
||||||
|
["j"] = actions.next_sibling(), -- down
|
||||||
|
["k"] = actions.previous_sibling(), -- up
|
||||||
|
|
||||||
|
["h"] = actions.parent(), -- Move to left panel
|
||||||
|
["l"] = actions.children(), -- Move to right panel
|
||||||
|
["0"] = actions.root(), -- Move to first panel
|
||||||
|
|
||||||
|
["v"] = actions.visual_name(), -- Visual selection of name
|
||||||
|
["V"] = actions.visual_scope(), -- Visual selection of scope
|
||||||
|
|
||||||
|
["y"] = actions.yank_name(), -- Yank the name to system clipboard "+
|
||||||
|
["Y"] = actions.yank_scope(), -- Yank the scope to system clipboard "+
|
||||||
|
|
||||||
|
["i"] = actions.insert_name(), -- Insert at start of name
|
||||||
|
["I"] = actions.insert_scope(), -- Insert at start of scope
|
||||||
|
|
||||||
|
["a"] = actions.append_name(), -- Insert at end of name
|
||||||
|
["A"] = actions.append_scope(), -- Insert at end of scope
|
||||||
|
|
||||||
|
["r"] = actions.rename(), -- Rename currently focused symbol
|
||||||
|
|
||||||
|
["d"] = actions.delete(), -- Delete scope
|
||||||
|
|
||||||
|
["f"] = actions.fold_create(), -- Create fold of current scope
|
||||||
|
["F"] = actions.fold_delete(), -- Delete fold of current scope
|
||||||
|
|
||||||
|
["c"] = actions.comment(), -- Comment out current scope
|
||||||
|
|
||||||
|
["<enter>"] = actions.select(), -- Goto selected symbol
|
||||||
|
["o"] = actions.select(),
|
||||||
|
|
||||||
|
["J"] = actions.move_down(), -- Move focused node down
|
||||||
|
["K"] = actions.move_up(), -- Move focused node up
|
||||||
|
|
||||||
|
["t"] = actions.telescope({ -- Fuzzy finder at current level.
|
||||||
|
layout_config = { -- All options that can be
|
||||||
|
height = 0.60, -- passed to telescope.nvim's
|
||||||
|
width = 0.60, -- default can be passed here.
|
||||||
|
prompt_position = "top",
|
||||||
|
preview_width = 0.50
|
||||||
|
},
|
||||||
|
layout_strategy = "horizontal"
|
||||||
|
}),
|
||||||
|
|
||||||
|
["g?"] = actions.help(), -- Open mappings help window
|
||||||
|
},
|
||||||
|
lsp = {
|
||||||
|
auto_attach = false, -- If set to true, you don't need to manually use attach function
|
||||||
|
preference = nil, -- list of lsp server names in order of preference
|
||||||
|
},
|
||||||
|
source_buffer = {
|
||||||
|
follow_node = true, -- Keep the current node in focus on the source buffer
|
||||||
|
highlight = true, -- Highlight the currently focused node
|
||||||
|
reorient = "smart", -- "smart", "top", "mid" or "none"
|
||||||
|
scrolloff = nil -- scrolloff value when navbuddy is open
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
6
modules/ui/breadcrumbs/default.nix
Normal file
6
modules/ui/breadcrumbs/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
_: {
|
||||||
|
imports = [
|
||||||
|
./config.nix
|
||||||
|
./breadcrumbs.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -6,5 +6,6 @@ _: {
|
||||||
./smartcolumn
|
./smartcolumn
|
||||||
./colorizer
|
./colorizer
|
||||||
./illuminate
|
./illuminate
|
||||||
|
./breadcrumbs
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue