From ac0c71775db04214a275702fbcd89cdcab8d7e1f Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sun, 8 Jan 2023 08:44:28 +0000 Subject: [PATCH] feat(zsh): automatically expand aliases Automatically expand aliases after the space key is pressed, unless it was added using the `ialias` function. This is something that I saw on Sebastian Daschner's videos (https://www.sebastian-daschner.com, https://www.youtube.com/@SebastianDaschnerIT) and is from his dotfiles (https://github.com/sdaschner/dotfiles). --- home-manager/modules/zsh.nix | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/home-manager/modules/zsh.nix b/home-manager/modules/zsh.nix index 7312830..1b158da 100644 --- a/home-manager/modules/zsh.nix +++ b/home-manager/modules/zsh.nix @@ -36,6 +36,66 @@ compdef g=git + clear-ls-all() { + clear + exa -al + } + zle -N clear-ls-all + bindkey '^K' clear-ls-all + + clear-git-status() { + clear + git status -sb . + } + zle -N clear-git-status + bindkey '^G' clear-git-status + + # auto-completes aliases + # enables to define + # - normal aliases (completed with trailing space) + # - blank aliases (completed without space) + # - ignored aliases (not completed) + + # ignored aliases + typeset -a ialiases + ialiases=() + + ialias() { + alias $@ + args="$@" + args=''${args%%\=*} + ialiases+=(''${args##* }) + } + + # blank aliases + typeset -a baliases + baliases=() + + balias() { + alias $@ + args="$@" + args=''${args%%\=*} + baliases+=(''${args##* }) + } + + expand-alias-space() { + [[ $LBUFFER =~ "\<(''${(j:|:)baliases})\$" ]]; insertBlank=$? + if [[ ! $LBUFFER =~ "\<(''${(j:|:)ialiases})\$" ]]; then + zle _expand_alias + fi + + zle self-insert + + if [[ "$insertBlank" = "0" ]]; then + zle backward-delete-char + fi + } + + zle -N expand-alias-space + + bindkey " " expand-alias-space + bindkey -M isearch " " magic-space + setopt auto_cd setopt auto_pushd setopt pushd_ignore_dups