neo2005/config/plugins/ui/default.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;
};
}