diff --git a/home/darwin/aerospace/config.toml b/home/darwin/aerospace/config.toml index d1ae1f59..b2eeb345 100644 --- a/home/darwin/aerospace/config.toml +++ b/home/darwin/aerospace/config.toml @@ -90,10 +90,10 @@ alt-slash = 'layout tiles horizontal vertical' alt-comma = 'layout accordion horizontal vertical' # See: https://nikitabobko.github.io/AeroSpace/commands#focus -alt-h = 'focus left' -alt-j = 'focus down' -alt-k = 'focus up' -alt-l = 'focus right' +# alt-h = 'focus left' +# alt-j = 'focus down' +# alt-k = 'focus up' +# alt-l = 'focus right' # See: https://nikitabobko.github.io/AeroSpace/commands#move alt-shift-h = 'move left' diff --git a/home/profiles/cli/default.nix b/home/profiles/cli/default.nix index 37e73977..2006c1d9 100644 --- a/home/profiles/cli/default.nix +++ b/home/profiles/cli/default.nix @@ -249,8 +249,8 @@ tree = "ls --tree --icons"; cat = "bat"; unzip = "aunpack"; - copy = "xclip -selection clipboard"; - paste = "xclip -selection clipboard -o"; + copy = if pkgs.stdenv.isDarwin then "pbcopy" else "xclip -selection clipboard"; + paste = if pkgs.stdenv.isDarwin then "pbpaste" else "xclip -selection clipboard -o"; rm = "echo USE TRASH, FOOL: trash "; trash = "trash-put"; make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;"; @@ -303,7 +303,7 @@ orch = "ns override"; nrb = '' if [[ "$OSTYPE" == "darwin"* ]]; then - cd ~/usr/helm && sudo darwin-rebuild switch --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD + cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD else cd /tmp && sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve' && cd $OLDPWD fi diff --git a/home/profiles/kitty/kitty.conf b/home/profiles/kitty/kitty.conf index 5c1400ac..7f8783c3 100644 --- a/home/profiles/kitty/kitty.conf +++ b/home/profiles/kitty/kitty.conf @@ -9,6 +9,7 @@ mouse_map left click ungrabbed mouse_click_url_or_select confirm_os_window_close 0 enable_audio_bell no hide_window_decorations titlebar-only +macos_option_as_alt left -- Allows zen-mode.nvim to increase font size -- allow_remote_control socket-only -- listen_on unix:/tmp/kitty diff --git a/home/profiles/nvim/amp-plugin.nix b/home/profiles/nvim/amp-plugin.nix new file mode 100644 index 00000000..3cf08002 --- /dev/null +++ b/home/profiles/nvim/amp-plugin.nix @@ -0,0 +1,9 @@ +{ pkgs }: + +if pkgs.stdenv.isDarwin && builtins.pathExists /Users/anishlakhwara/usr/amp.nvim then + pkgs.vimUtils.buildVimPlugin { + pname = "amp-nvim"; + version = "unstable"; + src = /Users/anishlakhwara/usr/amp.nvim; + } +else null diff --git a/home/profiles/nvim/amp.lua b/home/profiles/nvim/amp.lua new file mode 100644 index 00000000..4098774a --- /dev/null +++ b/home/profiles/nvim/amp.lua @@ -0,0 +1,5 @@ +-- amp.nvim configuration +require('amp').setup({ + auto_start = true, + log_level = "info" +}) diff --git a/home/profiles/nvim/default.nix b/home/profiles/nvim/default.nix index f2453702..abbacb95 100644 --- a/home/profiles/nvim/default.nix +++ b/home/profiles/nvim/default.nix @@ -29,24 +29,6 @@ let sha256 = "gMaS5YFi3+gmUIfkCMEt9vhm8XSgv54Cquv5+WCWeTo="; }; }; - leap = pkgs.vimUtils.buildVimPlugin { - name = "leap"; - src = pkgs.fetchFromGitHub { - owner = "ggandor"; - repo = "leap.nvim"; - rev = "1bb1fec369b1e9ae96e6ff1b829ea9272c51f844"; - sha256 = "dH0v1D5q5OlMLA/omTDMb/taKyIgQ5VfVMYXJ609k/k="; - }; - }; - nvim-navic = pkgs.vimUtils.buildVimPlugin { - name = "nvim-navic"; - src = pkgs.fetchFromGitHub { - owner = "SmiteshP"; - repo = "nvim-navic"; - rev = "096b23e73c84a653fd317c0c10261875fa573a6d"; - sha256 = "vX7ZVJxgatIicmijehtaRvyHxk1i4gFfXrbPM/+VoFc="; - }; - }; my-which-key-nvim = pkgs.vimUtils.buildVimPlugin { pname = "which-key.nvim"; version = "2022-05-04"; @@ -108,6 +90,20 @@ let sha256 = "czKjJgCpvRSdtR7rNGlJrluDgPIdx94KUyx33op5gdY="; }; }; + gh-addressed = pkgs.vimUtils.buildVimPlugin { + pname = "gh-addressed"; + version = "2024-09-17"; + src = pkgs.fetchFromGitHub { + owner = "dlvhdr"; + repo = "gh-addressed.nvim"; + rev = "64c12f0f2a1d28afe53220da5fb86e1adb79be07"; + sha256 = "0pxzq9jllw7rfspyy6j8dr464g0ph7xvh317l4iyva26ld8889mp"; + }; + doCheck = false; + doInstallCheck = false; + nvimRequireCheck = "none"; + }; + amp-nvim = import ./amp-plugin.nix { inherit pkgs; }; }; my-python-packages = python-packages: with python-packages; [ @@ -842,6 +838,14 @@ in require("which-key").setup{} require('leap').set_default_keymaps() + ${lib.optionalString (customPlugins.amp-nvim != null) '' + -- Setup amp.nvim + require('amp').setup({ + auto_start = true, + log_level = "info" + }) + ''} + -- supercollider local scnvim = require 'scnvim' local map = scnvim.map @@ -967,7 +971,7 @@ in vim.keymap.set({'n', 't'}, '', 'NavigatorRight') -- Disable Ctrl+V in nvim so Kitty can handle paste - vim.keymap.set({'n', 'v', 'i'}, '', '', {noremap = true, silent = true}) + vim.keymap.set({'v', 'i'}, '', '', {noremap = true, silent = true}) -- Pane resizing with Alt+Shift+hjkl (to match tmux) vim.keymap.set('n', '', 'vertical resize -2', {silent = true}) @@ -1083,8 +1087,9 @@ in # experimental nvim-luapad + gh-addressed scnvim - leap + leap-nvim Navigator-nvim vim-beancount # vimtex @@ -1095,7 +1100,9 @@ in ] ++ lib.optionals pkgs.stdenv.isLinux [ # Linux-only plugins vim-tidal # requires SuperCollider which is Linux-only - ]; + ] ++ lib.optionals (customPlugins.amp-nvim != null) [ + customPlugins.amp-nvim + ]; withPython3 = true; extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ]; vimAlias = true; diff --git a/home/profiles/nvim/lazynvim/.config/nvim/lua/config/autocmds.lua b/home/profiles/nvim/lazynvim/.config/nvim/lua/config/autocmds.lua index 27e9e064..68b31089 100644 --- a/home/profiles/nvim/lazynvim/.config/nvim/lua/config/autocmds.lua +++ b/home/profiles/nvim/lazynvim/.config/nvim/lua/config/autocmds.lua @@ -1,3 +1,68 @@ -- Autocmds are automatically loaded on the VeryLazy event -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua -- Add any additional autocmds here + +-- Aggressive fugitive auto-reload with polling +local function setup_fugitive_aggressive_reload() + local timer = nil + + local function refresh_fugitive() + -- Check all files for changes + vim.cmd("silent! checktime") + + -- Force refresh any open fugitive buffers + for _, win in ipairs(vim.api.nvim_list_wins()) do + local buf = vim.api.nvim_win_get_buf(win) + if vim.api.nvim_buf_get_option(buf, "filetype") == "fugitive" then + vim.api.nvim_buf_call(buf, function() + pcall(vim.cmd, "silent! edit") + end) + end + end + end + + local function start_polling() + if timer then vim.fn.timer_stop(timer) end + -- Poll every 2 seconds + timer = vim.fn.timer_start(2000, function() + refresh_fugitive() + end, { ["repeat"] = -1 }) + end + + local function stop_polling() + if timer then + vim.fn.timer_stop(timer) + timer = nil + end + end + + local augroup = vim.api.nvim_create_augroup("FugitiveAggressiveReload", { clear = true }) + + -- Start polling when fugitive buffer opens + vim.api.nvim_create_autocmd("FileType", { + group = augroup, + pattern = "fugitive", + callback = start_polling, + }) + + -- Stop polling when no fugitive buffers are open + vim.api.nvim_create_autocmd("BufDelete", { + group = augroup, + callback = function() + -- Check if any fugitive buffers remain + local has_fugitive = false + for _, buf in ipairs(vim.api.nvim_list_bufs()) do + if vim.api.nvim_buf_is_valid(buf) and vim.api.nvim_buf_get_option(buf, "filetype") == "fugitive" then + has_fugitive = true + break + end + end + if not has_fugitive then + stop_polling() + end + end, + }) +end + +-- Set up aggressive reload +setup_fugitive_aggressive_reload() diff --git a/home/profiles/nvim/lazynvim/.config/nvim/lua/config/options.lua b/home/profiles/nvim/lazynvim/.config/nvim/lua/config/options.lua index 3ea1454f..88c85493 100644 --- a/home/profiles/nvim/lazynvim/.config/nvim/lua/config/options.lua +++ b/home/profiles/nvim/lazynvim/.config/nvim/lua/config/options.lua @@ -1,3 +1,6 @@ -- Options are automatically loaded before lazy.nvim startup -- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua -- Add any additional options here + +-- Enable autoread to detect external file changes +vim.opt.autoread = true diff --git a/home/profiles/nvim/lazynvim/.config/nvim/lua/plugins/amp.lua b/home/profiles/nvim/lazynvim/.config/nvim/lua/plugins/amp.lua new file mode 100644 index 00000000..093b3002 --- /dev/null +++ b/home/profiles/nvim/lazynvim/.config/nvim/lua/plugins/amp.lua @@ -0,0 +1,8 @@ +return { + { + "sourcegraph/amp.nvim", + branch = "main", + lazy = false, + opts = { auto_start = true, log_level = "info" }, + }, +} diff --git a/home/profiles/tmux/tmux.conf b/home/profiles/tmux/tmux.conf index 2eaf48fd..1abdcc0b 100644 --- a/home/profiles/tmux/tmux.conf +++ b/home/profiles/tmux/tmux.conf @@ -9,6 +9,9 @@ set-environment -g COLORTERM "truecolor" # Mouse works as expected set-option -g mouse on + +# Enable focus events for vim/neovim autoread +set -g focus-events on # easy-to-remember split pane commands bind | split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}"