diff options
| author | Stefan Weigl-Bosker <stefan@s00.xyz> | 2025-04-29 16:36:55 -0400 |
|---|---|---|
| committer | Stefan Weigl-Bosker <stefan@s00.xyz> | 2025-04-29 16:36:55 -0400 |
| commit | a1c69cddca1e8feb871e5a26b3809336f80a58bd (patch) | |
| tree | ae98db58f828bee37ea1a19fa6d11b6616d35637 | |
| parent | 5ea3e108c85d5635ee945d3a47be1ad1d6940e97 (diff) | |
| download | home-a1c69cddca1e8feb871e5a26b3809336f80a58bd.tar.gz | |
update
| -rw-r--r-- | modules/git/default.nix | 8 | ||||
| -rw-r--r-- | modules/global.nix | 7 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/fzf.lua | 12 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/lsp/init.lua | 3 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/settings.lua | 12 | ||||
| -rw-r--r-- | modules/tmux/default.nix | 4 | ||||
| -rw-r--r-- | modules/zsh/themes/simple.zsh-theme | 92 |
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%}" |