From d3528370bdc1bba12983d99bb2255829ccc7f6c6 Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Fri, 1 Mar 2024 04:15:20 -0600 Subject: [PATCH] feat(zsh): improve neovide integration into term --- .../zsh/config/profile/profile/aliases.zsh | 147 +++++++++--------- .../zsh/config/profile/profile/env.zsh | 39 +++-- .../profile/manpager_wrapper_func.bash | 7 + 3 files changed, 110 insertions(+), 83 deletions(-) create mode 100755 dots/.config/zsh/config/profile/profile/manpager_wrapper_func.bash diff --git a/dots/.config/zsh/config/profile/profile/aliases.zsh b/dots/.config/zsh/config/profile/profile/aliases.zsh index a01609b9..6d605130 100644 --- a/dots/.config/zsh/config/profile/profile/aliases.zsh +++ b/dots/.config/zsh/config/profile/profile/aliases.zsh @@ -1,83 +1,88 @@ #!/usr/bin/env zsh -### Eza ### -if command -v eza >/dev/null 2>&1; then - alias exa='eza' # This helps some preview commands work from separate repos - alias ls="eza --icons --group --group-directories-first --octal-permissions --classify" - alias l="ls -alh" - alias ll="l" - alias tree="ls --tree" -fi - -### Git ### -if command -v git >/dev/null 2>&1; then - - if command -v nvim >/dev/null 2>&1; then - alias gg="nvim -c 'Neogit'" +() { + ### Eza ### + if command -v eza >/dev/null 2>&1; then + alias exa='eza' # This helps some preview commands work from separate repos + alias ls="eza --icons --group --group-directories-first --octal-permissions --classify" + alias l="ls -alh" + alias ll="l" + alias tree="ls --tree" fi - alias gc="git commit" - alias gcm="git commit -m" - alias ga="git add" - alias gp="git push" - alias gb="git branch" - alias gco="git checkout" - alias gpl="git pull" - alias gs="git status" - alias gst="git stash" - alias gstc="git stash clear" - alias gsw="git switch" - alias gd="nvim -c 'DiffviewOpen' -R" - alias gr="git remote" - alias gl="nvim -c 'call feedkeys(\":Neogit log\l\")'" - alias glo="git log --oneline" - alias gw="git worktree" - alias gwa="git worktree add" - alias gwr="git worktree remove" - alias git-remote="git config --get remote.origin.url" - alias git-head-default="git rev-parse --abbrev-ref origin/HEAD | cut -d '/' -f2" - alias gbc="git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'" -fi + ### Git ### + if command -v git >/dev/null 2>&1; then + if command -v nvim >/dev/null 2>&1; then + local editor_to_use=nvim + if [[ -n "${XDG_CURRENT_DESKTOP}" ]] && [[ "${EDITOR}" =~ "^neovide*" ]] && command -v neovide >/dev/null 2>&1; then + editor_to_use="${EDITOR} --" + fi + alias gg="${editor_to_use} -c 'Neogit'" + alias gd="${editor_to_use} -c 'DiffviewOpen'" + alias gl="${editor_to_use} -c 'call feedkeys(\":Neogit log\l\")'" + fi -### Mac ### -if [[ "$OSTYPE" = "darwin"* ]]; then - alias c="pbcopy" - alias p="pbpaste" - alias grep="ggrep" - alias find="gfind" - alias sed="gsed" -fi - -### Linux ### -if [[ "${OSTYPE}" == "linux-gnu"* ]]; then - if command -v wl-copy >/dev/null 2>&1; then - alias c="wl-copy" - alias p="wl-paste" + alias gc="git commit" + alias gcm="git commit -m" + alias ga="git add" + alias gp="git push" + alias gb="git branch" + alias gco="git checkout" + alias gpl="git pull" + alias gs="git status" + alias gst="git stash" + alias gstc="git stash clear" + alias gsw="git switch" + alias gr="git remote" + alias glo="git log --oneline" + alias gw="git worktree" + alias gwa="git worktree add" + alias gwr="git worktree remove" + alias git-remote="git config --get remote.origin.url" + alias git-head-default="git rev-parse --abbrev-ref origin/HEAD | cut -d '/' -f2" + alias gbc="git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'" fi - if ! command -v open >/dev/null 2>&1 && command -v xdg-open >/dev/null 2>&1; then - alias open="xdg-open" - alias o="xdg-open" + ### Mac ### + if [[ "$OSTYPE" = "darwin"* ]]; then + alias c="pbcopy" + alias p="pbpaste" + alias grep="ggrep" + alias find="gfind" + alias sed="gsed" fi -fi -### Bat ### -if command -v bat >/dev/null 2>&1; then - alias cat="bat" -fi + ### Linux ### + if [[ "${OSTYPE}" == "linux-gnu"* ]]; then + if command -v wl-copy >/dev/null 2>&1; then + alias c="wl-copy" + alias p="wl-paste" + fi -### Wezterm ### -if command -v wezterm >/dev/null 2>&1; then - alias img="wezterm imgcat" - alias ssh="TERM=xterm-256color ssh" -fi + if ! command -v open >/dev/null 2>&1 && command -v xdg-open >/dev/null 2>&1; then + alias open="xdg-open" + alias o="xdg-open" + fi + fi -### Misc ### -alias Get-Public-IPV4="dig @resolver4.opendns.com myip.opendns.com +short -4" -alias Get-Public-IPV6="dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6" -alias cv="command -v" -alias se="sudo -e" + ### Bat ### + if command -v bat >/dev/null 2>&1; then + alias cat="bat" + fi -if command -v arecord >/dev/null 2>&1; then - alias audio-record="arecord -f dat -r 41000 -d 5 $(date_iso_8601).wav" -fi + ### Wezterm ### + if command -v wezterm >/dev/null 2>&1; then + alias img="wezterm imgcat" + alias ssh="TERM=xterm-256color ssh" + fi + + ### Misc ### + alias Get-Public-IPV4="dig @resolver4.opendns.com myip.opendns.com +short -4" + alias Get-Public-IPV6="dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6" + alias cv="command -v" + alias se="sudo -e" + + if command -v arecord >/dev/null 2>&1; then + alias audio-record="arecord -f dat -r 41000 -d 5 $(date_iso_8601).wav" + fi +} diff --git a/dots/.config/zsh/config/profile/profile/env.zsh b/dots/.config/zsh/config/profile/profile/env.zsh index a3b0ff0f..7908c880 100644 --- a/dots/.config/zsh/config/profile/profile/env.zsh +++ b/dots/.config/zsh/config/profile/profile/env.zsh @@ -110,18 +110,33 @@ if [[ -r "${usr/libexec/java_home}" ]]; then export JAVA_HOME="$(/usr/libexec/java_home)" fi -### Editor ### -if command -v nvim >/dev/null 2>&1; then - export EDITOR=nvim - export VISUAL=nvim - export MANPAGER="nvim +Man!" -elif command -v vim >/dev/null 2>&1; then - export EDITOR=vim - export VISUAL=vim -else - export EDITOR=vi - export VISUAL=less -fi +# ### Editor ### +() { + local new_editor + local new_visual + local new_manpager + if [[ -n "${XDG_CURRENT_DESKTOP}" ]] && command -v neovide >/dev/null 2>&1; then + new_editor="neovide --no-fork" + new_visual="neovide --no-fork" + new_manpager="${XDG_CONFIG_HOME}/zsh/config/profile/profile/manpager_wrapper_func.bash" + elif command -v nvim >/dev/null 2>&1; then + new_editor=nvim + new_visual=nvim + new_manpager="nvim +Man!" + elif command -v vim >/dev/null 2>&1; then + new_editor=vim + new_visual=vim + new_manpager=less + else + new_editor=vi + new_visual=vi + new_manpager=less + fi + + export EDITOR="${EDITOR:-$new_editor}" + export VISUAL="${VISUAL:-$new_visual}" + export MANPAGER="${MANPAGER:-$new_manpager}" +} ### Rust ### export CARGO_HOME="${HOME}/.cargo" diff --git a/dots/.config/zsh/config/profile/profile/manpager_wrapper_func.bash b/dots/.config/zsh/config/profile/profile/manpager_wrapper_func.bash new file mode 100755 index 00000000..5d8d20fd --- /dev/null +++ b/dots/.config/zsh/config/profile/profile/manpager_wrapper_func.bash @@ -0,0 +1,7 @@ +#!/usr/bin/env -S nix --extra-experimental-features "nix-command flakes" shell nixpkgs#bash --command bash + +main() { + neovide --no-fork -- "+silent!+Man!" -- <(cat "${@}") +} + +main "${@}"