nvim improvements
This commit is contained in:
parent
a94e2ae578
commit
e767060559
7 changed files with 181 additions and 42 deletions
44
flake.nix
44
flake.nix
|
|
@ -15,8 +15,8 @@
|
||||||
t.url = "github:jdonszelmann/t-rs";
|
t.url = "github:jdonszelmann/t-rs";
|
||||||
|
|
||||||
kitty-search = {
|
kitty-search = {
|
||||||
url = "github:trygveaa/kitty-kitten-search";
|
url = "github:trygveaa/kitty-kitten-search";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -39,27 +39,29 @@
|
||||||
} // {
|
} // {
|
||||||
inherit (args) extraSpecialArgs;
|
inherit (args) extraSpecialArgs;
|
||||||
});
|
});
|
||||||
in flake-utils.lib.eachDefaultSystem (system: rec {
|
in
|
||||||
formatter = legacyPackages.nixfmt-classic;
|
flake-utils.lib.eachDefaultSystem
|
||||||
legacyPackages = pkgsForSystem system;
|
(system: rec {
|
||||||
pkgs = legacyPackages;
|
formatter = legacyPackages.nixfmt-classic;
|
||||||
devShells.default = pkgs.mkShell {
|
legacyPackages = pkgsForSystem system;
|
||||||
buildInputs = with pkgs; [
|
pkgs = legacyPackages;
|
||||||
(pkgs.writeShellScriptBin "fast-repl" ''
|
devShells.default = pkgs.mkShell {
|
||||||
source /etc/set-environment
|
buildInputs = with pkgs; [
|
||||||
nix repl --file "${./.}/repl.nix" $@
|
(pkgs.writeShellScriptBin "fast-repl" ''
|
||||||
'')
|
source /etc/set-environment
|
||||||
|
nix repl --file "${./.}/repl.nix" $@
|
||||||
|
'')
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "apply-home" ''
|
(pkgs.writeShellScriptBin "apply-home" ''
|
||||||
nix run .#home-manager -- switch --flake .#$@
|
nix run .#home-manager -- switch --flake .#$@
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "apply" ''
|
(pkgs.writeShellScriptBin "apply" ''
|
||||||
apply-home $(hostname -f)
|
apply-home $(hostname -f)
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}) // {
|
}) // {
|
||||||
|
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
kili = mkHomeConfiguration (import ./hosts/kili/home.nix) {
|
kili = mkHomeConfiguration (import ./hosts/kili/home.nix) {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
../../programs/zsh
|
../../programs/zsh
|
||||||
../../programs/kanata
|
../../programs/kanata
|
||||||
../../programs/kitty
|
../../programs/kitty
|
||||||
|
../../programs/tmux
|
||||||
];
|
];
|
||||||
|
|
||||||
# use the system-installed version of kitty on arch
|
# use the system-installed version of kitty on arch
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,16 @@
|
||||||
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
||||||
tab q w e r t y u i o p [ ] \
|
tab q w e r t y u i o p [ ] \
|
||||||
@cap a s d f g h j k l ; ' ret
|
@cap a s d f g h j k l ; ' ret
|
||||||
lsft z x c v b n m , . / rsft
|
@lst z x c v b n m , . / rsft
|
||||||
lctl lmet lalt spc ralt rctl
|
lctl lmet lalt spc ralt rctl
|
||||||
)
|
)
|
||||||
|
|
||||||
(defalias
|
(defalias
|
||||||
esc (tap-hold 200 800 esc caps)
|
esc (tap-hold 800 800 esc caps)
|
||||||
cap (tap-dance 300 (esc C-k esc))
|
cap (tap-dance 300 (esc C-k esc))
|
||||||
|
|
||||||
qwr (layer-switch qwerty)
|
qwr (layer-switch qwerty)
|
||||||
|
lst (tap-hold-release 200 200 C-k lsft)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,12 @@
|
||||||
|
|
||||||
keybindings = {
|
keybindings = {
|
||||||
"ctrl+f" = "launch --location=hsplit --allow-remote-control kitty +kitten ${inputs.kitty-search}/search.py @active-kitty-window-id";
|
"ctrl+f" = "launch --location=hsplit --allow-remote-control kitty +kitten ${inputs.kitty-search}/search.py @active-kitty-window-id";
|
||||||
"ctrl+r" = "load_config_file";
|
"ctrl+alt+r" = "load_config_file";
|
||||||
|
"ctrl+shift+r" = "no_op";
|
||||||
"ctrl+EQUAL" = "change_font_size all +2.0";
|
"ctrl+EQUAL" = "change_font_size all +2.0";
|
||||||
"ctrl+minus" = "change_font_size all -2.0";
|
"ctrl+minus" = "change_font_size all -2.0";
|
||||||
"ctrl+0" = "change_font_size all 0";
|
"ctrl+0" = "change_font_size all 0";
|
||||||
|
"ctrl+/" = "send_text all \x1b[47;5u";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,10 @@ vim.filetype.add({
|
||||||
require("onedark").setup {
|
require("onedark").setup {
|
||||||
style = "deep",
|
style = "deep",
|
||||||
highlights = {
|
highlights = {
|
||||||
["@comment"] = {fg = '#77B767'}
|
["@lsp.type.comment"] = {fg = '#77B767'},
|
||||||
|
["@comment.documentation.rust"] = {fg = '#77B767'},
|
||||||
|
["@comment.documentation"] = {fg = '#77B767'},
|
||||||
|
["@comment"] = {fg = '#426639'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
require("onedark").load()
|
require("onedark").load()
|
||||||
|
|
@ -68,10 +71,14 @@ local opts = { noremap = true, silent = true }
|
||||||
local builtin = require('telescope.builtin')
|
local builtin = require('telescope.builtin')
|
||||||
|
|
||||||
-- comment
|
-- comment
|
||||||
vim.keymap.set("n", "<C-/>", ":lua require('Comment.api').toggle.linewise.current()<CR> j", opts)
|
vim.keymap.set("n", "<leader>c", ":lua require('Comment.api').toggle.linewise.current()<CR> j", { remap = true })
|
||||||
vim.keymap.set("v", "<C-/>", ":lua require('Comment.api').toggle.linewise.current()<CR> j", opts)
|
vim.keymap.set("v", "<leader>c", ":lua require('Comment.api').toggle.linewise.current()<CR> j", { remap = true })
|
||||||
|
|
||||||
-- indent and dedent using tab/shift-tab
|
|
||||||
|
vim.keymap.set("n", "<C-/>", ":lua require('Comment.api').toggle.linewise.current()<CR> j", { remap = true })
|
||||||
|
vim.keymap.set("v", "<C-/>", ":lua require('Comment.api').toggle.linewise.current()<CR> j", { remap = true })
|
||||||
|
|
||||||
|
-- indent and dedent using tab/shift-ta
|
||||||
vim.keymap.set("n", "<tab>", ">>_")
|
vim.keymap.set("n", "<tab>", ">>_")
|
||||||
vim.keymap.set("n", "<s-tab>", "<<_")
|
vim.keymap.set("n", "<s-tab>", "<<_")
|
||||||
vim.keymap.set("i", "<s-tab>", "<c-d>")
|
vim.keymap.set("i", "<s-tab>", "<c-d>")
|
||||||
|
|
@ -85,7 +92,7 @@ vim.keymap.set('n', 'gt', builtin.lsp_type_definitions, {})
|
||||||
|
|
||||||
-- format on wq and x and replace X, W and Q with x, w and q
|
-- format on wq and x and replace X, W and Q with x, w and q
|
||||||
vim.cmd [[cabbrev wq execute "Format sync" <bar> wq]]
|
vim.cmd [[cabbrev wq execute "Format sync" <bar> wq]]
|
||||||
vim.cmd [[cabbrev x execute "Format sync" <bar> x]# ]]
|
vim.cmd [[cabbrev x execute "Format sync" <bar> x]]
|
||||||
vim.cmd [[cnoreabbrev W w]]
|
vim.cmd [[cnoreabbrev W w]]
|
||||||
vim.cmd [[cnoreabbrev X execute "Format sync" <bar> x]]
|
vim.cmd [[cnoreabbrev X execute "Format sync" <bar> x]]
|
||||||
vim.cmd [[cnoreabbrev Q q]]
|
vim.cmd [[cnoreabbrev Q q]]
|
||||||
|
|
@ -94,14 +101,21 @@ vim.cmd [[nnoremap ; :]]
|
||||||
local builtin = require('telescope.builtin')
|
local builtin = require('telescope.builtin')
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>s', "<cmd>vertical sb<cr>", {})
|
vim.keymap.set('n', '<leader>s', "<cmd>vertical sb<cr>", {})
|
||||||
vim.keymap.set('n', '<leader>f', builtin.find_files, {})
|
vim.keymap.set('n', '<leader><leader>', builtin.find_files, {})
|
||||||
vim.keymap.set('n', '<leader><leader>', builtin.live_grep, {})
|
vim.keymap.set('n', '<leader>f', builtin.live_grep, {})
|
||||||
vim.keymap.set('n', '<leader>h', builtin.search_history, {})
|
vim.keymap.set('n', '<leader>h', builtin.search_history, {})
|
||||||
vim.keymap.set('n', '<leader>d', "<cmd>Telescope diagnostics bufnr=0<cr>", {})
|
vim.keymap.set('n', '<leader>d', "<cmd>Telescope diagnostics bufnr=0<cr>", {})
|
||||||
vim.keymap.set('n', '<leader>ad', builtin.diagnostics, {})
|
vim.keymap.set('n', '<leader>ad', builtin.diagnostics, {})
|
||||||
|
vim.keymap.set('n', '<leader>em', "<cmd>RustLsp expandMacro<cr>")
|
||||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
|
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
|
||||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
|
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>x", require("telescope.builtin").resume, {
|
||||||
|
noremap = true,
|
||||||
|
silent = true,
|
||||||
|
desc = "Resume",
|
||||||
|
})
|
||||||
|
|
||||||
local gitsigns = require('gitsigns')
|
local gitsigns = require('gitsigns')
|
||||||
vim.keymap.set('n', '<leader>gr', gitsigns.reset_hunk)
|
vim.keymap.set('n', '<leader>gr', gitsigns.reset_hunk)
|
||||||
vim.keymap.set('n', '<leader>gd', gitsigns.diffthis)
|
vim.keymap.set('n', '<leader>gd', gitsigns.diffthis)
|
||||||
|
|
@ -221,3 +235,10 @@ vim.cmd([[
|
||||||
filetype plugin indent on
|
filetype plugin indent on
|
||||||
]])
|
]])
|
||||||
|
|
||||||
|
|
||||||
|
-- multicursor
|
||||||
|
vim.g.VM_default_mappings = 1
|
||||||
|
vim.g.VM_reselect_first = 1
|
||||||
|
vim.g.VM_notify_previously_selected = 1
|
||||||
|
vim.g.VM_theme = "iceblue"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ in
|
||||||
nixGrammars = true;
|
nixGrammars = true;
|
||||||
ensureInstalled = "all";
|
ensureInstalled = "all";
|
||||||
};
|
};
|
||||||
|
rainbow-delimiters.enable = true;
|
||||||
surround.enable = true;
|
surround.enable = true;
|
||||||
cmp-nvim-lsp.enable = true;
|
cmp-nvim-lsp.enable = true;
|
||||||
lsp-format.enable = true;
|
lsp-format.enable = true;
|
||||||
|
|
@ -240,7 +241,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
@ -260,6 +260,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
clangd = {
|
clangd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
filetypes = [ "c" "cpp" "objc" "objcpp" ];
|
filetypes = [ "c" "cpp" "objc" "objcpp" ];
|
||||||
|
|
@ -281,10 +282,10 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
filetypes = [ "python" ];
|
filetypes = [ "python" ];
|
||||||
};
|
};
|
||||||
taplo = {
|
# taplo = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
filetypes = [ "toml" ];
|
# filetypes = [ "toml" ];
|
||||||
};
|
# };
|
||||||
bashls = {
|
bashls = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
@ -306,8 +307,8 @@ in
|
||||||
|
|
||||||
keymaps = {
|
keymaps = {
|
||||||
lspBuf = {
|
lspBuf = {
|
||||||
"<leader>fmt" = "format";
|
"<leader>;" = "format";
|
||||||
"<leader>h" = "hover";
|
"gh" = "hover";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -338,6 +339,20 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
diagnostics = "nvim_lsp";
|
diagnostics = "nvim_lsp";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
none-ls = {
|
||||||
|
enable = true;
|
||||||
|
sources = {
|
||||||
|
formatting.nixpkgs_fmt.enable = true;
|
||||||
|
code_actions.statix.enable = true;
|
||||||
|
diagnostics = {
|
||||||
|
statix.enable = true;
|
||||||
|
deadnix.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nix.enable = true;
|
||||||
};
|
};
|
||||||
extraPlugins = with pkgs.vimPlugins; [
|
extraPlugins = with pkgs.vimPlugins; [
|
||||||
onedark-nvim
|
onedark-nvim
|
||||||
|
|
@ -353,12 +368,13 @@ in
|
||||||
otter
|
otter
|
||||||
vim-astro
|
vim-astro
|
||||||
nvim-web-devicons
|
nvim-web-devicons
|
||||||
|
vim-visual-multi
|
||||||
];
|
];
|
||||||
|
|
||||||
extraConfigLua = ''
|
extraConfigLua = ''
|
||||||
require("render-markdown").setup {
|
require("render-markdown").setup {
|
||||||
latex_converter = '${pkgs.python312Packages.pylatexenc}/bin/latex2text',
|
latex_converter = '${pkgs.python312Packages.pylatexenc}/bin/latex2text',
|
||||||
}
|
}
|
||||||
'' + (builtins.readFile ./config.lua);
|
'' + (builtins.readFile ./config.lua);
|
||||||
|
|
||||||
opts = {
|
opts = {
|
||||||
|
|
|
||||||
96
programs/tmux/default.nix
Normal file
96
programs/tmux/default.nix
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
mouse = true;
|
||||||
|
clock24 = true;
|
||||||
|
|
||||||
|
shortcut = "k";
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
# unbind every single normal keybinding
|
||||||
|
unbind-key -a
|
||||||
|
|
||||||
|
set -g set-titles on
|
||||||
|
set -s escape-time 0
|
||||||
|
|
||||||
|
set-window-option -g mode-keys vi
|
||||||
|
|
||||||
|
# clipboard stuff
|
||||||
|
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||||
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
||||||
|
bind v copy-mode
|
||||||
|
bind p paste-buffer -p
|
||||||
|
set -s set-clipboard on
|
||||||
|
|
||||||
|
# get back normal terminal emulator bindings
|
||||||
|
bind-key -n S-PPage copy-mode -u
|
||||||
|
bind-key -T copy-mode -n S-NPage send-keys -X page-down
|
||||||
|
|
||||||
|
# don't scroll to end when copying with mouse
|
||||||
|
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe
|
||||||
|
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe
|
||||||
|
bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
|
||||||
|
bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
|
||||||
|
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
|
||||||
|
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
|
||||||
|
|
||||||
|
# window control
|
||||||
|
bind t new-window -c "#{pane_current_path}"
|
||||||
|
bind-key Tab next-window
|
||||||
|
bind-key BTab previous-window
|
||||||
|
set -g automatic-rename-format "#{?#{==:#{pane_current_path},$HOME},~,#{b:pane_current_path}} (#{pane_current_command})"
|
||||||
|
set -g renumber-windows on
|
||||||
|
bind-key Q confirm-before -p "kill-window #W? (y/n)" kill-window
|
||||||
|
bind A last-window
|
||||||
|
|
||||||
|
bind-key 1 select-window -t :0
|
||||||
|
bind-key 2 select-window -t :1
|
||||||
|
bind-key 3 select-window -t :2
|
||||||
|
bind-key 4 select-window -t :3
|
||||||
|
bind-key 5 select-window -t :4
|
||||||
|
bind-key 6 select-window -t :5
|
||||||
|
bind-key 7 select-window -t :6
|
||||||
|
bind-key 8 select-window -t :7
|
||||||
|
bind-key 9 select-window -t :8
|
||||||
|
bind-key 0 select-window -t :9
|
||||||
|
|
||||||
|
# pane control
|
||||||
|
bind h select-pane -L
|
||||||
|
bind j select-pane -S
|
||||||
|
bind k select-pane -U
|
||||||
|
bind l select-pane -R
|
||||||
|
bind L split-window -h -c "#{pane_current_path}"
|
||||||
|
bind J split-window -v -c "#{pane_current_path}"
|
||||||
|
bind H split-window -h -b -c "#{pane_current_path}"
|
||||||
|
bind K split-window -v -b -c "#{pane_current_path}"
|
||||||
|
bind x swap-pane -D
|
||||||
|
bind -r a select-pane -l
|
||||||
|
bind-key q confirm-before -p "kill-pane #P? (y/n)" kill-pane
|
||||||
|
|
||||||
|
bind-key o choose-tree -wZ
|
||||||
|
bind-key O choose-tree -sZ
|
||||||
|
|
||||||
|
# get back command mode and some other basics...
|
||||||
|
bind : command-prompt
|
||||||
|
bind r source-file ~/.config/tmux/tmux.conf \; display "config reloaded"
|
||||||
|
bind-key ? list-keys
|
||||||
|
|
||||||
|
# Scroll oin man etc
|
||||||
|
tmux_commands_with_legacy_scroll="nano less more man git"
|
||||||
|
|
||||||
|
bind-key -T root WheelUpPane \
|
||||||
|
if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \
|
||||||
|
'send -Mt=' \
|
||||||
|
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
||||||
|
"send -t= Up" "copy-mode -et="'
|
||||||
|
|
||||||
|
bind-key -T root WheelDownPane \
|
||||||
|
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
|
||||||
|
'send -Mt=' \
|
||||||
|
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
||||||
|
"send -t= Down" "send -Mt="'
|
||||||
|
|
||||||
|
# bind -n DoubleClick1Pane run-shell "${pkgs.xdragon}/bin/dragon -x '#{pane_current_path}/#{mouse_word}'"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue