vim: Fix tabline bindings
This commit is contained in:
parent
dfc8d68495
commit
0bb5981f3a
|
@ -1,154 +1,157 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
config = {
|
||||
programs.nixvim = {
|
||||
autoCmd = [
|
||||
# Turn off relativenumber only for insert mode
|
||||
{ event = "InsertEnter"; pattern = "*"; command = "set norelativenumber"; }
|
||||
{ event = "InsertLeave"; pattern = "*"; command = "set relativenumber"; }
|
||||
];
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
nvim-scrollview # Scroll bar
|
||||
];
|
||||
keymaps = [
|
||||
# barbar
|
||||
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; options = { silent = true; }; }
|
||||
# TODO https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||||
{ key = "<Space><C-H>"; action = "<Cmd>BufferMovePrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<Space><C-L>"; action = "<Cmd>BufferMoveNext<CR>"; options = { silent = true; }; }
|
||||
# TODO gotos don't work
|
||||
{ key = "<C-1>"; action = "<Cmd>BufferGoto 1<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-2>"; action = "<Cmd>BufferGoto 2<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-3>"; action = "<Cmd>BufferGoto 3<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-4>"; action = "<Cmd>BufferGoto 4<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-5>"; action = "<Cmd>BufferGoto 5<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-6>"; action = "<Cmd>BufferGoto 6<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-7>"; action = "<Cmd>BufferGoto 7<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-8>"; action = "<Cmd>BufferGoto 8<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-9>"; action = "<Cmd>BufferGoto 9<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; options = { silent = true; }; }
|
||||
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; options = { silent = true; }; }
|
||||
# TODO Other useful options?
|
||||
];
|
||||
options = {
|
||||
showmode = false;
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
title = true;
|
||||
};
|
||||
plugins = {
|
||||
# Tabline
|
||||
barbar.enable = true;
|
||||
# TODO Investigate bufferline?
|
||||
# Status line
|
||||
lualine = with config.lib.stylix.colors.withHashtag; let
|
||||
normal = { fg = base05; bg = base01; };
|
||||
inverted = { fg = base00; bg = base03; };
|
||||
normal_ina = { fg = base02; bg = base01; };
|
||||
inverted_ina = { fg = base00; bg = base02; };
|
||||
in
|
||||
rec {
|
||||
enable = true;
|
||||
inactiveSections = sections;
|
||||
sections = {
|
||||
lualine_a = [{
|
||||
name = ''string.format('%d', vim.fn.line('$'))'';
|
||||
}];
|
||||
lualine_b = [
|
||||
"mode"
|
||||
];
|
||||
lualine_c = [{
|
||||
name = "filename";
|
||||
color = {
|
||||
__raw = ''
|
||||
function(section)
|
||||
return { fg = vim.bo.modified and '${base08}' or '${normal.fg}' }
|
||||
end
|
||||
'';
|
||||
};
|
||||
extraConfig = {
|
||||
path = 1; # Relative path
|
||||
symbols = {
|
||||
modified = "●";
|
||||
newfile = "";
|
||||
readonly = "";
|
||||
unnamed = "";
|
||||
programs = {
|
||||
# https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||||
alacritty.settings.key_bindings = [
|
||||
{ key = "H"; mods = "Control|Shift"; chars = "\\x1b[72;5u"; }
|
||||
{ key = "L"; mods = "Control|Shift"; chars = "\\x1b[76;5u"; }
|
||||
] ++ (map
|
||||
(n: { key = "Key${builtins.toString n}"; mods = "Control"; chars = "\\x1b[${builtins.toString (48+n)};5u"; })
|
||||
(lib.lists.range 0 9));
|
||||
# Ctrl+<number> doesn't get interpreted, but Ctrl+Shift+<number> does, so let's use that
|
||||
nixvim = {
|
||||
autoCmd = [
|
||||
# Turn off relativenumber only for insert mode
|
||||
{ event = "InsertEnter"; pattern = "*"; command = "set norelativenumber"; }
|
||||
{ event = "InsertLeave"; pattern = "*"; command = "set relativenumber"; }
|
||||
];
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
nvim-scrollview # Scroll bar
|
||||
];
|
||||
keymaps =
|
||||
let
|
||||
options = { silent = true; };
|
||||
in
|
||||
[
|
||||
# barbar
|
||||
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; inherit options; }
|
||||
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; inherit options; }
|
||||
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; inherit options; }
|
||||
{ key = "<C-S-H>"; action = "<Cmd>BufferMovePrevious<CR>"; inherit options; }
|
||||
{ key = "<C-S-L>"; action = "<Cmd>BufferMoveNext<CR>"; inherit options; }
|
||||
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; inherit options; }
|
||||
] ++ (map
|
||||
(n: { key = "<C-${builtins.toString n}>"; action = "<Cmd>BufferGoto ${builtins.toString n}<CR>"; inherit options; })
|
||||
(lib.lists.range 1 9));
|
||||
options = {
|
||||
showmode = false;
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
title = true;
|
||||
};
|
||||
plugins = {
|
||||
# Tabline
|
||||
barbar.enable = true;
|
||||
# Status line
|
||||
lualine = with config.lib.stylix.colors.withHashtag; let
|
||||
normal = { fg = base05; bg = base01; };
|
||||
inverted = { fg = base00; bg = base03; };
|
||||
normal_ina = { fg = base02; bg = base01; };
|
||||
inverted_ina = { fg = base00; bg = base02; };
|
||||
in
|
||||
rec {
|
||||
enable = true;
|
||||
inactiveSections = sections;
|
||||
sections = {
|
||||
lualine_a = [{
|
||||
name = ''string.format('%d', vim.fn.line('$'))'';
|
||||
}];
|
||||
lualine_b = [
|
||||
"mode"
|
||||
];
|
||||
lualine_c = [{
|
||||
name = "filename";
|
||||
color = {
|
||||
__raw = ''
|
||||
function(section)
|
||||
return { fg = vim.bo.modified and '${base08}' or '${normal.fg}' }
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
"location"];
|
||||
lualine_x = [{
|
||||
name = ''(next(vim.lsp.buf_get_clients()) == nil) and " " or ""'';
|
||||
extraConfig.separator = { left = ""; right = ""; };
|
||||
}] ++ (lib.mapAttrsToList
|
||||
(diag_name: diag_color: {
|
||||
name = "diagnostics";
|
||||
extraConfig = {
|
||||
color.bg = diag_color;
|
||||
colored = false;
|
||||
separator = { left = ""; right = ""; };
|
||||
sections = [ diag_name ];
|
||||
path = 1; # Relative path
|
||||
symbols = {
|
||||
modified = "●";
|
||||
newfile = "";
|
||||
readonly = "";
|
||||
unnamed = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
"location"];
|
||||
lualine_x = [{
|
||||
name = ''(next(vim.lsp.buf_get_clients()) == nil) and " " or ""'';
|
||||
extraConfig.separator = { left = ""; right = ""; };
|
||||
}] ++ (lib.mapAttrsToList
|
||||
(diag_name: diag_color: {
|
||||
name = "diagnostics";
|
||||
extraConfig = {
|
||||
color.bg = diag_color;
|
||||
colored = false;
|
||||
separator = { left = ""; right = ""; };
|
||||
sections = [ diag_name ];
|
||||
};
|
||||
})
|
||||
{
|
||||
error = base08;
|
||||
warn = base0A;
|
||||
hint = base0C;
|
||||
info = base0B;
|
||||
});
|
||||
lualine_y = [{
|
||||
name = "diff";
|
||||
extraConfig = {
|
||||
diff_color = {
|
||||
added.fg = base0B;
|
||||
modified.fg = base0A;
|
||||
removed.fg = base08;
|
||||
};
|
||||
symbols = {
|
||||
added = " ";
|
||||
modified = " ";
|
||||
removed = " ";
|
||||
};
|
||||
};
|
||||
}
|
||||
"branch"];
|
||||
lualine_z = [
|
||||
"filetype"
|
||||
"fileformat"
|
||||
"encoding"
|
||||
];
|
||||
};
|
||||
theme = (lib.mapAttrs
|
||||
(mode_name: mode_color: {
|
||||
a = inverted;
|
||||
b = inverted // { bg = mode_color; gui = "bold"; };
|
||||
c = normal;
|
||||
x = inverted;
|
||||
y = normal;
|
||||
z = inverted // { bg = mode_color; };
|
||||
})
|
||||
{
|
||||
error = base08;
|
||||
warn = base0A;
|
||||
hint = base0C;
|
||||
info = base0B;
|
||||
});
|
||||
lualine_y = [{
|
||||
name = "diff";
|
||||
extraConfig = {
|
||||
diff_color = {
|
||||
added.fg = base0B;
|
||||
modified.fg = base0A;
|
||||
removed.fg = base08;
|
||||
};
|
||||
symbols = {
|
||||
added = " ";
|
||||
modified = " ";
|
||||
removed = " ";
|
||||
};
|
||||
normal = base0D;
|
||||
insert = base0B;
|
||||
visual = base0F;
|
||||
replace = base08;
|
||||
command = base0E;
|
||||
}) // {
|
||||
inactive = {
|
||||
a = inverted_ina;
|
||||
b = normal_ina // { bg = base00; gui = "bold"; };
|
||||
c = normal_ina;
|
||||
x = inverted_ina;
|
||||
y = normal_ina;
|
||||
z = normal_ina // { bg = base00; };
|
||||
};
|
||||
}
|
||||
"branch"];
|
||||
lualine_z = [
|
||||
"filetype"
|
||||
"fileformat"
|
||||
"encoding"
|
||||
];
|
||||
};
|
||||
theme = (lib.mapAttrs
|
||||
(mode_name: mode_color: {
|
||||
a = inverted;
|
||||
b = inverted // { bg = mode_color; gui = "bold"; };
|
||||
c = normal;
|
||||
x = inverted;
|
||||
y = normal;
|
||||
z = inverted // { bg = mode_color; };
|
||||
})
|
||||
{
|
||||
normal = base0D;
|
||||
insert = base0B;
|
||||
visual = base0F;
|
||||
replace = base08;
|
||||
command = base0E;
|
||||
}) // {
|
||||
inactive = {
|
||||
a = inverted_ina;
|
||||
b = normal_ina // { bg = base00; gui = "bold"; };
|
||||
c = normal_ina;
|
||||
x = inverted_ina;
|
||||
y = normal_ina;
|
||||
z = normal_ina // { bg = base00; };
|
||||
};
|
||||
};
|
||||
};
|
||||
# Show context on top if scrolled out
|
||||
treesitter-context = {
|
||||
enable = true;
|
||||
maxLines = 5;
|
||||
# Show context on top if scrolled out
|
||||
treesitter-context = {
|
||||
enable = true;
|
||||
maxLines = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue