2020-07-03 22:47:14 +00:00
|
|
|
{ myConf, pkgs ? import <nixpkgs> }:
|
|
|
|
let
|
|
|
|
makeAbbrs = with builtins; abbrs: concatStringsSep "\n"
|
|
|
|
(
|
|
|
|
attrValues
|
|
|
|
(mapAttrs (k: v: ''abbr --session ${k}="${v}" >/dev/null 2>&1'') abbrs)
|
|
|
|
);
|
|
|
|
|
|
|
|
abbrs = makeAbbrs {
|
|
|
|
gc = "git commit -m";
|
|
|
|
gp = "git push";
|
|
|
|
gaa = "git add --all";
|
|
|
|
gs = "git status";
|
|
|
|
cxmonad = "cd ~/.xmonad && nvim ~/.xmonad/lib/Config.hs && cd -";
|
|
|
|
};
|
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
manFunction = ''
|
|
|
|
function man() {
|
|
|
|
env \
|
|
|
|
LESS_TERMCAP_md=$(tput bold; tput setaf 4) \
|
|
|
|
LESS_TERMCAP_me=$(tput sgr0) \
|
|
|
|
LESS_TERMCAP_mb=$(tput blink) \
|
|
|
|
LESS_TERMCAP_us=$(tput setaf 2) \
|
|
|
|
LESS_TERMCAP_ue=$(tput sgr0) \
|
|
|
|
LESS_TERMCAP_so=$(tput smso) \
|
|
|
|
LESS_TERMCAP_se=$(tput rmso) \
|
|
|
|
PAGER="''${commands[less]:-$PAGER}" \
|
|
|
|
man "$@"
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
|
|
|
fixedKeybinds = ''
|
|
|
|
typeset -g -A key
|
|
|
|
key[Home]="^[[H"
|
|
|
|
key[End]="^[[F"
|
|
|
|
key[Insert]="''${terminfo[kich1]}"
|
|
|
|
key[Backspace]="''${terminfo[kbs]}"
|
|
|
|
key[Delete]="''${terminfo[kdch1]}"
|
|
|
|
key[Up]="''${terminfo[kcuu1]}"
|
|
|
|
key[Down]="''${terminfo[kcud1]}"
|
|
|
|
key[Left]="''${terminfo[kcub1]}"
|
|
|
|
key[Right]="''${terminfo[kcuf1]}"
|
|
|
|
key[PageUp]="''${terminfo[kpp]}"
|
|
|
|
key[PageDown]="''${terminfo[knp]}"
|
|
|
|
key[Shift-Tab]="''${terminfo[kcbt]}"
|
|
|
|
|
|
|
|
# setup key accordingly
|
|
|
|
[[ -n "''${key[Home]}" ]] && bindkey -M vicmd "''${key[Home]}" beginning-of-line && bindkey -M viins "''${key[Home]}" beginning-of-line
|
|
|
|
[[ -n "''${key[End]}" ]] && bindkey -M vicmd "''${key[End]}" end-of-line && bindkey -M viins "''${key[End]}" end-of-line
|
|
|
|
[[ -n "''${key[Insert]}" ]] && bindkey -M vicmd "''${key[Insert]}" overwrite-mode && bindkey -M viins "''${key[Insert]}" overwrite-mode
|
|
|
|
[[ -n "''${key[Backspace]}" ]] && bindkey -M vicmd "''${key[Backspace]}" backward-delete-char && bindkey -M viins "''${key[Backspace]}" backward-delete-char
|
|
|
|
[[ -n "''${key[Delete]}" ]] && bindkey -M vicmd "''${key[Delete]}" delete-char && bindkey -M viins "''${key[Delete]}" delete-char
|
|
|
|
[[ -n "''${key[Up]}" ]] && bindkey -M vicmd "''${key[Up]}" up-line-or-history && bindkey -M viins "''${key[Up]}" up-line-or-history
|
|
|
|
[[ -n "''${key[Down]}" ]] && bindkey -M vicmd "''${key[Down]}" down-line-or-history && bindkey -M viins "''${key[Down]}" down-line-or-history
|
|
|
|
[[ -n "''${key[Left]}" ]] && bindkey -M vicmd "''${key[Left]}" backward-char && bindkey -M viins "''${key[Left]}" backward-char
|
|
|
|
[[ -n "''${key[Right]}" ]] && bindkey -M vicmd "''${key[Right]}" forward-char && bindkey -M viins "''${key[Right]}" forward-char
|
|
|
|
[[ -n "''${key[PageUp]}" ]] && bindkey -M vicmd "''${key[PageUp]}" beginning-of-buffer-or-history && bindkey -M viins "''${key[PageUp]}" beginning-of-buffer-or-history
|
|
|
|
[[ -n "''${key[PageDown]}" ]] && bindkey -M vicmd "''${key[PageDown]}" end-of-buffer-or-history && bindkey -M viins "''${key[PageDown]}" end-of-buffer-or-history
|
|
|
|
[[ -n "''${key[Shift-Tab]}" ]] && bindkey -M vicmd "''${key[Shift-Tab]}" reverse-menu-complete && bindkey -M viins "''${key[Shift-Tab]}" reverse-menu-complete
|
|
|
|
'';
|
|
|
|
|
|
|
|
fzf-tab-stuff = ''
|
|
|
|
|
|
|
|
FZF_TAB_COMMAND=(
|
|
|
|
fzf
|
|
|
|
--ansi
|
|
|
|
--expect='$continuous_trigger' # For continuous completion
|
|
|
|
'--color=hl:$(( $#headers == 0 ? 108 : 255 ))'
|
|
|
|
--nth=2,3 --delimiter='\x00' # Don't search prefix
|
|
|
|
--layout=reverse --height="''${FZF_TMUX_HEIGHT:=50%}"
|
|
|
|
--tiebreak=begin -m --bind=tab:down,btab:up,change:top,ctrl-space:toggle --cycle
|
|
|
|
'--query=$query' # $query will be expanded to query string at runtime.
|
|
|
|
'--header-lines=$#headers' # $#headers will be expanded to lines of headers at runtime
|
|
|
|
)
|
|
|
|
zstyle ':fzf-tab:*' command $FZF_TAB_COMMAND
|
|
|
|
|
|
|
|
zstyle ':completion:complete:*:options' sort false
|
|
|
|
zstyle ':fzf-tab:complete:_zlua:*' query-string input
|
|
|
|
|
|
|
|
local extract="
|
|
|
|
local in=\''${\''${\"\$(<{f})\"%\$'\0'*}#*\$'\0'}
|
|
|
|
local -A ctxt=(\"\''${(@ps:\2:)CTXT}\")
|
|
|
|
local realpath=\''${ctxt[IPREFIX]}\''${ctxt[hpre]}\$in
|
|
|
|
realpath=\''${(Qe)~realpath}
|
|
|
|
"
|
|
|
|
|
2020-07-05 22:43:10 +00:00
|
|
|
#zstyle ':fzf-tab:complete:cd:*' extra-opts --preview=$extract'lsd -1 --color=always $realpath'
|
|
|
|
#zstyle ':fzf-tab:complete:ls:*' extra-opts --preview=$extract'lsd -1 --color=always $realpath'
|
|
|
|
#zstyle ':fzf-tab:complete:nvim:*' extra-opts --preview=$extract'bat --color=always $realpath'
|
|
|
|
zstyle ':fzf-tab:complete:*:*' extra-opts --preview=$extract'if [ -f $realpath ]; then bat -p --color=always $realpath; else lsd -1 --color=always $realpath; fi'
|
2020-07-04 11:29:51 +00:00
|
|
|
|
2020-07-04 17:05:32 +00:00
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
'';
|
|
|
|
|
2020-07-03 22:47:14 +00:00
|
|
|
in
|
|
|
|
{
|
|
|
|
enable = true;
|
2020-07-04 17:05:32 +00:00
|
|
|
|
|
|
|
|
2020-07-03 22:47:14 +00:00
|
|
|
enableAutosuggestions = true;
|
|
|
|
enableCompletion = true;
|
2020-07-05 22:43:10 +00:00
|
|
|
dotDir = ".config/zsh";
|
2020-07-04 11:29:51 +00:00
|
|
|
#defaultKeymap = "viins";
|
2020-07-03 22:47:14 +00:00
|
|
|
history = {
|
|
|
|
save = 10000;
|
2020-07-04 11:29:51 +00:00
|
|
|
share = false;
|
2020-07-03 22:47:14 +00:00
|
|
|
ignoreDups = true;
|
|
|
|
ignoreSpace = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
localVariables = {
|
|
|
|
#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "bg=${myConf.colors.accentDark}"; # why does this not work D:
|
2020-07-04 17:05:32 +00:00
|
|
|
ZSH_AUTOSUGGEST_USE_ASYNC = 1;
|
2020-07-03 22:47:14 +00:00
|
|
|
};
|
|
|
|
|
2020-07-04 17:05:32 +00:00
|
|
|
initExtraBeforeCompInit = ''
|
2020-07-05 22:43:10 +00:00
|
|
|
|
2020-07-04 17:05:32 +00:00
|
|
|
zstyle ':completion:*' menu select
|
|
|
|
zstyle ':completion::complete:*' gain-privileges 1
|
|
|
|
zstyle ':completion:*' list-prompt ""
|
|
|
|
zstyle ':completion:*' select-prompt ""
|
|
|
|
zmodload zsh/complist
|
|
|
|
|
|
|
|
fpath+=( /usr/share/zsh/site-functions/ )
|
|
|
|
'';
|
|
|
|
|
2020-07-03 22:47:14 +00:00
|
|
|
initExtra = ''
|
2020-07-04 11:29:51 +00:00
|
|
|
setopt nobeep
|
|
|
|
|
2020-07-03 22:47:14 +00:00
|
|
|
setopt HIST_IGNORE_ALL_DUPS
|
2020-07-04 11:29:51 +00:00
|
|
|
autoload -Uz colors && colors
|
|
|
|
autoload -Uz promptinit && promptinit
|
2020-07-03 22:47:14 +00:00
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
|
2020-07-04 17:05:32 +00:00
|
|
|
#_comp_options+=(globdots)
|
2020-07-03 22:47:14 +00:00
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
# enable cdr command
|
|
|
|
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
|
|
|
|
add-zsh-hook chpwd chpwd_recent_dirs
|
2020-07-03 22:47:14 +00:00
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
# deer is a ranger-style file manager directly in the shell that doesn't fully context-switch
|
2020-07-03 22:47:14 +00:00
|
|
|
#source ~/nixpkgs/config/deer.zsh
|
|
|
|
#zle -N deer
|
|
|
|
#bindkey '\ek' deer
|
|
|
|
|
2020-07-04 11:29:51 +00:00
|
|
|
${fzf-tab-stuff}
|
|
|
|
${fixedKeybinds}
|
2020-07-03 22:47:14 +00:00
|
|
|
${abbrs}
|
2020-07-04 11:29:51 +00:00
|
|
|
${manFunction}
|
|
|
|
|
2020-07-03 22:47:14 +00:00
|
|
|
${builtins.readFile ./prompt.zsh}
|
|
|
|
'';
|
|
|
|
|
2020-07-04 14:33:50 +00:00
|
|
|
envExtra = ''
|
|
|
|
export GITHUB_TOKEN="fc40b6cb38dd8eb54f90e3e652f14d758f21e24d"
|
2020-07-04 11:29:51 +00:00
|
|
|
|
2020-07-04 14:33:50 +00:00
|
|
|
'';
|
2020-07-04 11:29:51 +00:00
|
|
|
|
|
|
|
|
2020-07-04 17:05:32 +00:00
|
|
|
plugins = let
|
|
|
|
sources = import ./zsh/nix/sources.nix;
|
|
|
|
in
|
|
|
|
[
|
|
|
|
{ name = "fzf-tab"; src = sources.fzf-tab; }
|
|
|
|
{ name = "zsh-autosuggestions"; src = sources.zsh-autosuggestions; }
|
|
|
|
{ name = "history-substring-search"; src = sources.zsh-history-substring-search; }
|
|
|
|
{ name = "zsh-abbr"; src = sources.zsh-abbr; }
|
|
|
|
{ name = "fast-syntax-highlighting"; src = sources.fast-syntax-highlighting; }
|
|
|
|
];
|
2020-07-03 22:47:14 +00:00
|
|
|
}
|