summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-07-23 18:46:48 +0200
committermakefu <github@syntax-fehler.de>2017-07-23 18:46:48 +0200
commit4c2b481cbbcfb28cf66acce9431fe77a0e2c2575 (patch)
tree6d2b317be62c48d9fdf17b1e94a3aa260f932bed
parent0d176bb2a0fc182c5bcdd89cf21ef663e1726d71 (diff)
ma zsh: enable completion for brain, add ctrl-t
-rw-r--r--makefu/2configs/zsh-user.nix46
1 files changed, 45 insertions, 1 deletions
diff --git a/makefu/2configs/zsh-user.nix b/makefu/2configs/zsh-user.nix
index 453bfbe80..7615f4c0c 100644
--- a/makefu/2configs/zsh-user.nix
+++ b/makefu/2configs/zsh-user.nix
@@ -8,6 +8,7 @@ in
users.extraUsers.${mainUser}.shell = "/run/current-system/sw/bin/zsh";
programs.zsh= {
enable = true;
+ enableCompletion = false ; #manually at the end
interactiveShellInit = ''
HISTSIZE=900001
HISTFILESIZE=$HISTSIZE
@@ -29,7 +30,49 @@ in
unset SSH_AGENT_PID
export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
- '';
+
+ # fzf
+ __fsel_fzf() {
+ local cmd="''${FZF_CTRL_T_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \
+ -o -type f -print \
+ -o -type d -print \
+ -o -type l -print 2> /dev/null | cut -b3-"}"
+ setopt localoptions pipefail 2> /dev/null
+ eval "$cmd" | FZF_DEFAULT_OPTS="--height ''${FZF_TMUX_HEIGHT:-40%} --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS" $(__fzfcmd) -m "$@" | while read item; do
+ echo -n "''${(q)item} "
+ done
+ local ret=$?
+ echo
+ return $ret
+ }
+
+ __fzf_use_tmux__() {
+ [ -n "$TMUX_PANE" ] && [ "''${FZF_TMUX:-0}" != 0 ] && [ ''${LINES:-40} -gt 15 ]
+ }
+
+ __fzfcmd() {
+ __fzf_use_tmux__ &&
+ echo "fzf-tmux -d''${FZF_TMUX_HEIGHT:-40%}" || echo "fzf"
+ }
+
+ fzf-file-widget() {
+ LBUFFER="''${LBUFFER}$(__fsel_fzf)"
+ local ret=$?
+ zle redisplay
+ typeset -f zle-line-init >/dev/null && zle zle-line-init
+ return $ret
+ }
+ zle -N fzf-file-widget
+ bindkey '^T' fzf-file-widget
+
+ # Auto-Completion
+ for p in ''${(z)NIX_PROFILES}; do
+ fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions)
+ done
+ autoload -U compinit && compinit
+ compdef _pass brain
+ zstyle ':completion::complete:brain::' prefix "$HOME/brain"
+ '';
promptInit = ''
RPROMPT=""
@@ -47,5 +90,6 @@ in
krebs.per-user.${mainUser}.packages = [
pkgs.nix-zsh-completions
+ pkgs.fzf
];
}