191 lines
5.6 KiB
Nix
191 lines
5.6 KiB
Nix
{ pkgs, ... }: {
|
|
# "Smooth" scrolling
|
|
plugins.neoscroll = {
|
|
enable = true;
|
|
};
|
|
# A better command window
|
|
plugins.noice.enable = true;
|
|
|
|
# Terminal
|
|
plugins.toggleterm = {
|
|
enable = true;
|
|
settings = {
|
|
hide_numbers = false;
|
|
autochdir = true;
|
|
close_on_exit = true;
|
|
direction = "tab";
|
|
open_mapping = "[[<c-t>]]";
|
|
shell = "zsh";
|
|
};
|
|
};
|
|
|
|
# Cool indent lines, inspired straight from rainbow-indent on vscode
|
|
plugins.indent-blankline = {
|
|
enable = true;
|
|
settings = {
|
|
scope = {
|
|
show_end = false;
|
|
show_exact_scope = true;
|
|
show_start = false;
|
|
};
|
|
};
|
|
};
|
|
|
|
# highlites colors (like #FFF)
|
|
plugins.colorizer = {
|
|
enable = true;
|
|
};
|
|
|
|
# Highlight TODO FIXME comments
|
|
plugins.todo-comments.enable = true;
|
|
|
|
|
|
# Inline git blame
|
|
plugins.gitsigns = {
|
|
enable = true;
|
|
settings = {
|
|
current_line_blame = true;
|
|
trouble = true;
|
|
};
|
|
};
|
|
|
|
|
|
plugins.trouble = {
|
|
enable = true;
|
|
settings = { };
|
|
};
|
|
|
|
# Clean notifications
|
|
plugins.fidget = {
|
|
enable = true;
|
|
logger = {
|
|
level = "warn"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
|
floatPrecision = 0.01; # Limit the number of decimals displayed for floats
|
|
};
|
|
progress = {
|
|
pollRate = 0; # How and when to poll for progress messages
|
|
suppressOnInsert = true; # Suppress new messages while in insert mode
|
|
ignoreDoneAlready = false; # Ignore new tasks that are already complete
|
|
ignoreEmptyMessage = false; # Ignore new tasks that don't contain a message
|
|
clearOnDetach =
|
|
# Clear notification group when LSP server detaches
|
|
''
|
|
function(client_id)
|
|
local client = vim.lsp.get_client_by_id(client_id)
|
|
return client and client.name or nil
|
|
end
|
|
'';
|
|
notificationGroup =
|
|
# How to get a progress message's notification group key
|
|
''
|
|
function(msg) return msg.lsp_client.name end
|
|
'';
|
|
ignore = [ ]; # List of LSP servers to ignore
|
|
lsp = {
|
|
progressRingbufSize = 0; # Configure the nvim's LSP progress ring buffer size
|
|
};
|
|
display = {
|
|
renderLimit = 16; # How many LSP messages to show at once
|
|
doneTtl = 3; # How long a message should persist after completion
|
|
doneIcon = "✔"; # Icon shown when all LSP progress tasks are complete
|
|
doneStyle = "Constant"; # Highlight group for completed LSP tasks
|
|
progressTtl = "math.huge"; # How long a message should persist when in progress
|
|
progressIcon = {
|
|
pattern = "dots";
|
|
period = 1;
|
|
}; # Icon shown when LSP progress tasks are in progress
|
|
progressStyle = "WarningMsg"; # Highlight group for in-progress LSP tasks
|
|
groupStyle = "Title"; # Highlight group for group name (LSP server name)
|
|
iconStyle = "Question"; # Highlight group for group icons
|
|
priority = 30; # Ordering priority for LSP notification group
|
|
skipHistory = true; # Whether progress notifications should be omitted from history
|
|
formatMessage = ''
|
|
require ("fidget.progress.display").default_format_message
|
|
''; # How to format a progress message
|
|
formatAnnote = ''
|
|
function (msg) return msg.title end
|
|
''; # How to format a progress annotation
|
|
formatGroupName = ''
|
|
function (group) return tostring (group) end
|
|
''; # How to format a progress notification group's name
|
|
overrides = {
|
|
rust_analyzer = {
|
|
name = "rust-analyzer";
|
|
};
|
|
}; # Override options from the default notification config
|
|
};
|
|
};
|
|
notification = {
|
|
pollRate = 10; # How frequently to update and render notifications
|
|
filter = "info"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
|
|
historySize = 128; # Number of removed messages to retain in history
|
|
overrideVimNotify = true;
|
|
redirect = ''
|
|
function(msg, level, opts)
|
|
if opts and opts.on_open then
|
|
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
|
|
end
|
|
end
|
|
'';
|
|
configs = {
|
|
default = "require('fidget.notification').default_config";
|
|
};
|
|
|
|
window = {
|
|
normalHl = "Comment";
|
|
winblend = 0;
|
|
border = "none"; # none, single, double, rounded, solid, shadow
|
|
zindex = 45;
|
|
maxWidth = 0;
|
|
maxHeight = 0;
|
|
xPadding = 1;
|
|
yPadding = 0;
|
|
align = "bottom";
|
|
relative = "editor";
|
|
};
|
|
view = {
|
|
stackUpwards = true; # Display notification items from bottom to top
|
|
iconSeparator = " "; # Separator between group name and icon
|
|
groupSeparator = "---"; # Separator between notification groups
|
|
groupSeparatorHl =
|
|
# Highlight group used for group separator
|
|
"Comment";
|
|
};
|
|
};
|
|
};
|
|
# File tree
|
|
plugins.chadtree = {
|
|
enable = true;
|
|
};
|
|
# Status bar
|
|
plugins.lualine = {
|
|
enable = true;
|
|
settings.sections = {
|
|
# TODO display absolute path based on project. for example on this file neo2005/config/plugins/ui/default.nix
|
|
# lualine_c = ["{ {'filename', path = 1}, },"];
|
|
};
|
|
};
|
|
# Startup dashboard
|
|
plugins.alpha = {
|
|
enable = true;
|
|
theme = "dashboard";
|
|
};
|
|
|
|
# Highlight word under cursor
|
|
plugins.illuminate = {
|
|
enable = true;
|
|
underCursor = false;
|
|
filetypesDenylist = [
|
|
"Outline"
|
|
"TelescopePrompt"
|
|
"alpha"
|
|
"harpoon"
|
|
"reason"
|
|
];
|
|
};
|
|
|
|
plugins.bufferline = {
|
|
enable = true;
|
|
};
|
|
}
|