develop#zsh: factor out functions into files
Upgrade the `rg` function to only pipe to `PAGER` when output is a terminal.
This commit is contained in:
parent
42197cd35c
commit
6139834a4a
6 changed files with 58 additions and 56 deletions
|
@ -73,7 +73,7 @@ in
|
||||||
interactiveShellInit = let
|
interactiveShellInit = let
|
||||||
zshrc = fileContents ./zshrc;
|
zshrc = fileContents ./zshrc;
|
||||||
|
|
||||||
paths = with pkgs; [
|
sources = with pkgs; [
|
||||||
"${skim}/share/skim/completion.zsh"
|
"${skim}/share/skim/completion.zsh"
|
||||||
"${oh-my-zsh}/share/oh-my-zsh/plugins/sudo/sudo.plugin.zsh"
|
"${oh-my-zsh}/share/oh-my-zsh/plugins/sudo/sudo.plugin.zsh"
|
||||||
"${oh-my-zsh}/share/oh-my-zsh/plugins/extract/extract.plugin.zsh"
|
"${oh-my-zsh}/share/oh-my-zsh/plugins/extract/extract.plugin.zsh"
|
||||||
|
@ -82,8 +82,28 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
source = map
|
source = map
|
||||||
(source: "source " + source)
|
(source: "source ${source}")
|
||||||
paths;
|
sources;
|
||||||
|
|
||||||
|
functions = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "zsh-functions";
|
||||||
|
src = ./functions;
|
||||||
|
|
||||||
|
ripgrep = "${pkgs.ripgrep}";
|
||||||
|
man = "${pkgs.man}";
|
||||||
|
|
||||||
|
installPhase = let
|
||||||
|
basename = "\${file##*/}";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
mkdir $out
|
||||||
|
|
||||||
|
for file in $src/*; do
|
||||||
|
substituteAll $file $out/${basename}
|
||||||
|
chmod 755 $out/${basename}
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
plugins = concatStringsSep "\n"
|
plugins = concatStringsSep "\n"
|
||||||
(
|
(
|
||||||
|
@ -98,8 +118,13 @@ in
|
||||||
''
|
''
|
||||||
${plugins}
|
${plugins}
|
||||||
|
|
||||||
|
fpath+=( ${functions} )
|
||||||
|
autoload -Uz ${functions}/*(:t)
|
||||||
|
|
||||||
${zshrc}
|
${zshrc}
|
||||||
|
|
||||||
|
eval "$(${pkgs.direnv}/bin/direnv hook zsh)"
|
||||||
|
eval $(${pkgs.gitAndTools.hub}/bin/hub alias -s)
|
||||||
source ${pkgs.skim}/share/skim/key-bindings.zsh
|
source ${pkgs.skim}/share/skim/key-bindings.zsh
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
8
profiles/develop/zsh/functions/man
Normal file
8
profiles/develop/zsh/functions/man
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# colorful man pages
|
||||||
|
LESS_TERMCAP_md=$'\e[01;31m' \
|
||||||
|
LESS_TERMCAP_me=$'\e[0m' \
|
||||||
|
LESS_TERMCAP_se=$'\e[0m' \
|
||||||
|
LESS_TERMCAP_so=$'\e[01;44;33m' \
|
||||||
|
LESS_TERMCAP_ue=$'\e[0m' \
|
||||||
|
LESS_TERMCAP_us=$'\e[01;32m' \
|
||||||
|
@man@/bin/man "$@"
|
2
profiles/develop/zsh/functions/mcd
Normal file
2
profiles/develop/zsh/functions/mcd
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# mkdir & cd to it
|
||||||
|
mkdir -p "$1" && cd "$1"
|
6
profiles/develop/zsh/functions/rg
Normal file
6
profiles/develop/zsh/functions/rg
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# pipe rg into less with colors
|
||||||
|
if [[ -t 1 && -n $PAGER ]]; then
|
||||||
|
@ripgrep@/bin/rg -p $@ | $PAGER
|
||||||
|
else
|
||||||
|
@ripgrep@/bin/rg $@
|
||||||
|
fi
|
|
@ -1,3 +1,4 @@
|
||||||
|
# tilde directories
|
||||||
hash -d \
|
hash -d \
|
||||||
nixos=/etc/nixos \
|
nixos=/etc/nixos \
|
||||||
dl=~/Downloads \
|
dl=~/Downloads \
|
||||||
|
@ -7,9 +8,6 @@ hash -d \
|
||||||
github=~git/github.com \
|
github=~git/github.com \
|
||||||
gitlab=~git/gitlab.com
|
gitlab=~git/gitlab.com
|
||||||
|
|
||||||
# hub setup
|
|
||||||
eval $(hub alias -s)
|
|
||||||
|
|
||||||
# Zsh options
|
# Zsh options
|
||||||
setopt extendedglob
|
setopt extendedglob
|
||||||
setopt incappendhistory
|
setopt incappendhistory
|
||||||
|
@ -31,41 +29,23 @@ SAVEHIST=10000
|
||||||
HISTFILE=$HOME/.history
|
HISTFILE=$HOME/.history
|
||||||
DIRSTACKSIZE=5
|
DIRSTACKSIZE=5
|
||||||
|
|
||||||
# user defined functions
|
|
||||||
if [[ -d $HOME/.zfunctions ]]; then
|
|
||||||
typeset -U fpath
|
|
||||||
fpath=($HOME/.zfunctions $fpath)
|
|
||||||
|
|
||||||
for file in $HOME/.zfunctions/*; do
|
|
||||||
autoload -Uz $file
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# source local config not synced to git repo
|
|
||||||
if [[ -f $HOME/.zshlocal ]]; then
|
|
||||||
. $HOME/.zshlocal
|
|
||||||
fi
|
|
||||||
|
|
||||||
# create local zshrc if it does not exist
|
|
||||||
[[ -f $HOME/.zshrc ]] \
|
|
||||||
|| printf "#" > $HOME/.zshrc
|
|
||||||
|
|
||||||
# history substring search keybinds
|
# history substring search keybinds
|
||||||
bindkey '^[OA' history-substring-search-up
|
bindkey '^[OA' history-substring-search-up
|
||||||
bindkey '^[OB' history-substring-search-down
|
bindkey '^[OB' history-substring-search-down
|
||||||
bindkey -M vicmd 'k' history-substring-search-up
|
bindkey -M vicmd 'k' history-substring-search-up
|
||||||
bindkey -M vicmd 'j' history-substring-search-down
|
bindkey -M vicmd 'j' history-substring-search-down
|
||||||
|
|
||||||
zle -N zle-line-init
|
|
||||||
|
|
||||||
# if in tmux launch skim in tmux pane
|
# if in tmux launch skim in tmux pane
|
||||||
[[ ${+TMUX} == 1 ]] \
|
[[ ${+TMUX} == 1 ]] \
|
||||||
&& SKIM_TMUX=1
|
&& SKIM_TMUX=1
|
||||||
|
|
||||||
#load compinit
|
#load compinit
|
||||||
autoload -Uz compinit
|
autoload -Uz compinit
|
||||||
typeset -i updated_at=$(date +'%j' -r ~/.zcompdump ||
|
|
||||||
stat -f '%Sm' -t '%j' ~/.zcompdump)
|
typeset -i updated_at=$(date +'%j' -r ~/.zcompdump \
|
||||||
|
|| stat -f '%Sm' -t '%j' ~/.zcompdump)
|
||||||
|
|
||||||
|
# save time if completion cache has been update recently
|
||||||
if [ $(date +'%j') != $updated_at ]; then
|
if [ $(date +'%j') != $updated_at ]; then
|
||||||
compinit
|
compinit
|
||||||
else
|
else
|
||||||
|
@ -83,29 +63,9 @@ zstyle ':completion:*' rehash true
|
||||||
bindkey "jj" vi-cmd-mode
|
bindkey "jj" vi-cmd-mode
|
||||||
bindkey -v '^?' backward-delete-char
|
bindkey -v '^?' backward-delete-char
|
||||||
|
|
||||||
|
# remove duplicates from paths
|
||||||
|
typeset -U path
|
||||||
|
typeset -U fpath
|
||||||
|
|
||||||
# keep shell state frozen
|
# keep shell state frozen
|
||||||
ttyctl -f
|
ttyctl -f
|
||||||
|
|
||||||
# colorful man pages
|
|
||||||
man () {
|
|
||||||
LESS_TERMCAP_md=$'\e[01;31m' \
|
|
||||||
LESS_TERMCAP_me=$'\e[0m' \
|
|
||||||
LESS_TERMCAP_se=$'\e[0m' \
|
|
||||||
LESS_TERMCAP_so=$'\e[01;44;33m' \
|
|
||||||
LESS_TERMCAP_ue=$'\e[0m' \
|
|
||||||
LESS_TERMCAP_us=$'\e[01;32m' \
|
|
||||||
command man "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
# pipe rg into less with colors
|
|
||||||
rgl () {
|
|
||||||
rg --color=always $@ | less
|
|
||||||
}
|
|
||||||
|
|
||||||
# mkdir & cd to it
|
|
||||||
function mcd() {
|
|
||||||
mkdir -p "$1" && cd "$1";
|
|
||||||
}
|
|
||||||
|
|
||||||
# direnv setup
|
|
||||||
eval "$(direnv hook zsh)"
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ in
|
||||||
file = {
|
file = {
|
||||||
".ec2-keys".source = ../secrets/ec2;
|
".ec2-keys".source = ../secrets/ec2;
|
||||||
".cargo/credentials".source = ../secrets/cargo;
|
".cargo/credentials".source = ../secrets/cargo;
|
||||||
|
".zshrc".text = "#";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue