aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Weigl-Bosker <stefan@s00.xyz>2025-04-29 16:36:55 -0400
committerStefan Weigl-Bosker <stefan@s00.xyz>2025-04-29 16:36:55 -0400
commita1c69cddca1e8feb871e5a26b3809336f80a58bd (patch)
treeae98db58f828bee37ea1a19fa6d11b6616d35637
parent5ea3e108c85d5635ee945d3a47be1ad1d6940e97 (diff)
downloadhome-a1c69cddca1e8feb871e5a26b3809336f80a58bd.tar.gz
update
-rw-r--r--modules/git/default.nix8
-rw-r--r--modules/global.nix7
-rw-r--r--modules/neovim/nvim/lua/config/fzf.lua12
-rw-r--r--modules/neovim/nvim/lua/config/lsp/init.lua3
-rw-r--r--modules/neovim/nvim/lua/config/settings.lua12
-rw-r--r--modules/tmux/default.nix4
-rw-r--r--modules/zsh/themes/simple.zsh-theme92
7 files changed, 125 insertions, 13 deletions
diff --git a/modules/git/default.nix b/modules/git/default.nix
index e8c9d9c..45af5c1 100644
--- a/modules/git/default.nix
+++ b/modules/git/default.nix
@@ -43,6 +43,14 @@ in
".envrc"
".direnv/"
".ignore/"
+ ".cache/"
+ "*.o"
+ "*.a"
+ "*.so"
+ "*.ko"
+ "*.lib"
+ # "*.out"
+ # "*.elf"
];
signing = {
signByDefault = true;
diff --git a/modules/global.nix b/modules/global.nix
index 0247896..1e5bfb8 100644
--- a/modules/global.nix
+++ b/modules/global.nix
@@ -59,7 +59,12 @@ in
programs = {
home-manager.enable = true;
- direnv.enable = true;
+ direnv = {
+ enable = true;
+ enableZshIntegration = true;
+ enableBashIntegration = true;
+ silent = true;
+ };
};
dconf = {
diff --git a/modules/neovim/nvim/lua/config/fzf.lua b/modules/neovim/nvim/lua/config/fzf.lua
index 6cc6381..f994361 100644
--- a/modules/neovim/nvim/lua/config/fzf.lua
+++ b/modules/neovim/nvim/lua/config/fzf.lua
@@ -6,8 +6,8 @@ require("fzf-lua").setup({
},
previewers = {
builtin = {
- -- syntax = false,
- -- treesitter = false,
+ syntax = false,
+ treesitter = false,
-- toggle_behavior = "extend",
},
},
@@ -38,10 +38,10 @@ require("fzf-lua").setup({
backdrop = 70,
-- border = "rounded",
-- border = "none",
- -- treesitter = {
- -- enabled = false,
- -- fzf_colors = false,
- -- },
+ treesitter = {
+ enabled = false,
+ fzf_colors = false,
+ },
border = { "", "─", "", "", "", "", "", "" },
preview = {
layout = "horizontal",
diff --git a/modules/neovim/nvim/lua/config/lsp/init.lua b/modules/neovim/nvim/lua/config/lsp/init.lua
index 5c75827..29d015c 100644
--- a/modules/neovim/nvim/lua/config/lsp/init.lua
+++ b/modules/neovim/nvim/lua/config/lsp/init.lua
@@ -48,6 +48,8 @@ vim.api.nvim_create_autocmd("LspAttach", { callback = function(args)
vim.lsp.buf.references()
end, { desc = "Code references (LSP)" })
+ vim.keymap.set('n', 'gca', '<cmd>FzfLua lsp_code_actions<CR>', { desc = "Code actions (LSP)" })
+
vim.keymap.set('n', 'gd', function()
vim.lsp.buf.definition()
end, { desc = "Goto definition (LSP)" })
@@ -59,7 +61,6 @@ vim.api.nvim_create_autocmd("LspAttach", { callback = function(args)
return pumvisible() and '<C-y>' or '<CR>'
end, { expr = true })
-
-- TODO: this ignores/overwrites default omnifunc rn
map('i', "<C-n>", function()
return pumvisible() and '<C-n>' or vim.lsp.completion.get()
diff --git a/modules/neovim/nvim/lua/config/settings.lua b/modules/neovim/nvim/lua/config/settings.lua
index 7dc4917..c44f0e9 100644
--- a/modules/neovim/nvim/lua/config/settings.lua
+++ b/modules/neovim/nvim/lua/config/settings.lua
@@ -44,8 +44,8 @@ vim.opt.foldlevel = 99
vim.cmd[[set wildchar=<C-n>]]
-- vim.api.nvim_set_hl(0, 'Comment', {})
vim.api.nvim_set_hl(0, 'Constant', {})
-vim.api.nvim_set_hl(0, 'String', {})
-vim.api.nvim_set_hl(0, 'Character', {})
+-- vim.api.nvim_set_hl(0, 'String', {})
+vim.api.nvim_set_hl(0, 'Character', { link = "String" })
vim.api.nvim_set_hl(0, 'Number', {})
vim.api.nvim_set_hl(0, 'Boolean', {})
vim.api.nvim_set_hl(0, 'Float', {})
@@ -68,9 +68,11 @@ vim.api.nvim_set_hl(0, 'StorageClass', {})
vim.api.nvim_set_hl(0, 'Structure', {})
vim.api.nvim_set_hl(0, 'Typedef', {})
vim.api.nvim_set_hl(0, 'Special', {})
-vim.api.nvim_set_hl(0, 'SpecialChar', {})
+vim.api.nvim_set_hl(0, 'SpecialChar', { link = 'String' })
vim.api.nvim_set_hl(0, 'Tag', {})
vim.api.nvim_set_hl(0, 'Delimiter', {})
-vim.api.nvim_set_hl(0, 'SpecialComment', {})
+-- vim.api.nvim_set_hl(0, 'SpecialComment', {})
vim.api.nvim_set_hl(0, 'Debug', {})
-vim.api.nvim_set_hl(0, 'Underlined', {})
+-- vim.api.nvim_set_hl(0, 'Underlined', {})
+
+vim.cmd[[cnoreabbrev ts 'lua vim.treesitter.start()']]
diff --git a/modules/tmux/default.nix b/modules/tmux/default.nix
index cd5f0c6..4fab8e3 100644
--- a/modules/tmux/default.nix
+++ b/modules/tmux/default.nix
@@ -42,6 +42,10 @@ in
extraConfig = ''
set -g default-terminal "screen-256color"
set -g default-command zsh # this fixes colors for some reason
+ # undercurl support in neovim
+ set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
+ # support colors for undercurl
+ set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
set -g renumber-windows on
bind R source-file ~/.config/tmux/tmux.conf
diff --git a/modules/zsh/themes/simple.zsh-theme b/modules/zsh/themes/simple.zsh-theme
new file mode 100644
index 0000000..dc9a201
--- /dev/null
+++ b/modules/zsh/themes/simple.zsh-theme
@@ -0,0 +1,92 @@
+function virtualenv_info {
+ [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '
+}
+
+function gitstatus_prompt_update() {
+ typeset -g GITSTATUS_PROMPT=''
+ local p
+
+ gitstatus_query 'MY' || return 1 # we could use -c to do async
+ [[ $VCS_STATUS_RESULT == 'ok-sync' ]] || return 0 # not in a repo
+
+
+ local green='%{%F{green}%}'
+ local red='%{%F{red}%}'
+ local yellow='%{%F{yellow}%}'
+ local blue='%{%F{blue}%}'
+
+ local name
+ if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
+ name=$VCS_STATUS_LOCAL_BRANCH
+ elif [[ -n $VCS_STATUS_TAG ]]; then
+ p+='%f#'
+ name="${VCS_STATUS_TAG}"
+ else
+ p+='%f@'
+ name="#${VCS_STATUS_COMMIT[1,8]}"
+ fi
+
+ (( $#name > 32 )) && name[13,-13]="…" # truncate long branch names and tags
+ p+="${green}${name//\%/%%}" # escape %
+
+ # ⇣42 if behind the remote.
+ (( VCS_STATUS_COMMITS_BEHIND )) && p+=" ${green}⇣${VCS_STATUS_COMMITS_BEHIND}"
+ # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
+ (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && p+=" "
+ (( VCS_STATUS_COMMITS_AHEAD )) && p+="${green}⇡${VCS_STATUS_COMMITS_AHEAD}"
+ # ⇠42 if behind the push remote.
+ (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" ${green}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
+ (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" "
+ # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
+ (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && p+="${green}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
+ # *42 if have stashes.
+ (( VCS_STATUS_STASHES )) && p+=" ${green}*${VCS_STATUS_STASHES}"
+ # 'merge' if the repo is in an unusual state.
+ [[ -n $VCS_STATUS_ACTION ]] && p+=" ${red}${VCS_STATUS_ACTION}"
+ # ~42 if have merge conflicts.
+ (( VCS_STATUS_NUM_CONFLICTED )) && p+=" ${red}~${VCS_STATUS_NUM_CONFLICTED}"
+ # +42 if have staged changes.
+ (( VCS_STATUS_NUM_STAGED )) && p+=" ${yellow}+${VCS_STATUS_NUM_STAGED}"
+ # !42 if have unstaged changes.
+ (( VCS_STATUS_NUM_UNSTAGED )) && p+=" ${yellow}!${VCS_STATUS_NUM_UNSTAGED}"
+ # ?42 if have untracked files. It's really a question mark, your font isn't broken.
+ (( VCS_STATUS_NUM_UNTRACKED )) && p+=" ${blue}?${VCS_STATUS_NUM_UNTRACKED}"
+
+ GITSTATUS_PROMPT="%f${p}%f"
+}
+
+INS_MODE='%{%F{reset}%}[%{%F{green}%}i%{%F{reset}%}]'
+NORMAL_MODE='%{%F{reset}%}[%{%F{yellow}%}n%{%F{reset}%}]'
+VI_MODE=$INS_MODE
+
+function zle-keymap-select() {
+ VI_MODE="${${KEYMAP/vicmd/${NORMAL_MODE}}/(main|viins)/${INS_MODE}}"
+ zle reset-prompt
+# zle -R
+}
+
+zle -N zle-keymap-select # hook readline so we can determine mode
+
+# normally, SIGINT (<C-c>) will put you in ins, but indictator wont update.
+# fix: hook TRAPINT, update mode and repropagate the SIGINT
+# im too lazy to figure out if its possible to keep normal mode and send a sigint
+TRAPINT() {
+ export VI_MODE=$INS_MODE
+ return $((128+$1))
+}
+
+source "$(gitstatus-share)/gitstatus.plugin.zsh" || return
+
+gitstatus_stop 'MY' && gitstatus_start -s -1 -u -1 -c -1 -d -1 'MY'
+
+autoload -Uz add-zsh-hook
+add-zsh-hook precmd gitstatus_prompt_update
+
+setopt prompt_subst prompt_percent no_prompt_bang
+
+NEWLINE=$'\n'
+GIT_PROMPT_INFO=${GITSTATUS_PROMPT:+ $GITSTATUS_PROMPT}
+PROMPT='%F{magenta}%~% %f% ${VI_MODE}${NEWLINE}%{%F{yellow}%}λ %b%f% '
+RPROMPT='$(virtualenv_info)% ${GITSTATUS_PROMPT:+ $GITSTATUS_PROMPT} '
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"