Whitespace changes
Delete unnecessary indentation and convert all spaces to tabs.
This commit is contained in:
@@ -8,177 +8,177 @@
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
# confirmations, etc.) must go above this block; everything else may go below.
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
|
||||
export ZSH_CONF="$ZDOTDIR/plugins"
|
||||
|
||||
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L35
|
||||
comp-conf() {
|
||||
emulate -L zsh
|
||||
[ ! "$1.zwc" -nt "$1" ] && [ -w "${1:h}" ] || return 0
|
||||
zmodload -F zsh/files b:zf_mv b:zf_rm
|
||||
local tmp="$1.tmp.$$.zwc"
|
||||
{
|
||||
zcompile -R -- "$tmp" "$1" && zf_mv -f -- "$tmp" "$1.zwc" || return 1
|
||||
} always {
|
||||
(( ! $? )) || zf_rm -f -- "$tmp"
|
||||
}
|
||||
emulate -L zsh
|
||||
[ ! "$1.zwc" -nt "$1" ] && [ -w "${1:h}" ] || return 0
|
||||
zmodload -F zsh/files b:zf_mv b:zf_rm
|
||||
local tmp="$1.tmp.$$.zwc"
|
||||
{
|
||||
zcompile -R -- "$tmp" "$1" && zf_mv -f -- "$tmp" "$1.zwc" || return 1
|
||||
} always {
|
||||
(( ! $? )) || zf_rm -f -- "$tmp"
|
||||
}
|
||||
}
|
||||
|
||||
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L47
|
||||
comp-source() {
|
||||
emulate -L zsh
|
||||
[ -e "$1" ] && comp-conf "$1" && source -- "$1"
|
||||
emulate -L zsh
|
||||
[ -e "$1" ] && comp-conf "$1" && source -- "$1"
|
||||
}
|
||||
|
||||
## set zshoptions
|
||||
setopt AUTO_CONTINUE # Stopped jobs with 'disown' are automatically sent a CONT signal to make them running.
|
||||
setopt AUTO_LIST # Automatically list choices on an ambiguous completion.
|
||||
setopt AUTO_PARAM_SLASH # Add a trailing slash when completing directories
|
||||
setopt AUTO_PUSHD # Make cd push the old directory onto the directory stack.
|
||||
setopt NO_AUTO_REMOVE_SLASH # Keeps trailing slash for directories when auto completing.
|
||||
# (Beware: commands will act on the target directory not the symlink with the slash)
|
||||
setopt NO_BEEP # Do not beep on error in ZLE.
|
||||
setopt C_BASES # Output hexadecimal numbers in the standard C format ('16#FF' -> '0xFF').
|
||||
setopt CHASE_LINKS # Resolve symbolic links to their true values when changing directory.
|
||||
setopt NO_CLOBBER # '>!' or '>|' must be used to truncate a file, and '>>!' or '>>|' to create a file.
|
||||
setopt COMPLETE_IN_WORD # Complete from the cursor rather than from the end of the word
|
||||
setopt CORRECT # Try to correct the spelling of a command
|
||||
setopt CORRECT_ALL # Try to correct the spelling of all arguments
|
||||
export CORRECT_IGNORE_FILE=".*" # Do not offer hidden files as correction
|
||||
setopt EXTENDED_HISTORY # Save in format : <beginning time>:<elapsed seconds>;<command>
|
||||
setopt EXTENDED_GLOB # Treat the `#', `~' and `^' characters as part of patterns for filename generation, etc.
|
||||
setopt NO_FLOW_CONTROL # Disables output flow control in the shell's editor via start/stop characters (usually ^S/^Q).
|
||||
setopt GLOB_DOTS # Do not require a leading `.' in a filename to be matched explicitly.
|
||||
setopt HIST_IGNORE_DUPS # Do not enter command lines into the history list if they are duplicates of the previous event.
|
||||
setopt HIST_IGNORE_SPACE # History should ignore commands beginning with a space
|
||||
setopt HIST_VERIFY # perform history expansion and reload line in editing buffer instead of executing it directly
|
||||
setopt NO_INC_APPEND_HISTORY # Do not write lines as soon as they are entered (breaks exec time otherwise)
|
||||
setopt INC_APPEND_HISTORY_TIME # Write lines after they are finished
|
||||
setopt INTERACTIVE_COMMENTS # Allow comments even in interactive shells.
|
||||
setopt LIST_AMBIGUOUS # Insert unabmbiguous prefix without completion list (auto_list set)
|
||||
setopt LIST_PACKED # Make completion list smaller by printing matches in columns with different widths.
|
||||
setopt NO_MENU_COMPLETE # Do not autoselect the first entry when completing
|
||||
setopt PUSHD_IGNORE_DUPS # Don't push multiple copies of the same directory onto the directory stack.
|
||||
setopt NO_SHARE_HISTORY # Do not write + read history after every command (messes up exec time otherwise)
|
||||
setopt SH_WORD_SPLIT # Causes field splitting to be performed on unquoted parameter expansions
|
||||
setopt AUTO_CONTINUE # Stopped jobs with 'disown' are automatically sent a CONT signal to make them running.
|
||||
setopt AUTO_LIST # Automatically list choices on an ambiguous completion.
|
||||
setopt AUTO_PARAM_SLASH # Add a trailing slash when completing directories
|
||||
setopt AUTO_PUSHD # Make cd push the old directory onto the directory stack.
|
||||
setopt NO_AUTO_REMOVE_SLASH # Keeps trailing slash for directories when auto completing.
|
||||
# (Beware: commands will act on the target directory not the symlink with the slash)
|
||||
setopt NO_BEEP # Do not beep on error in ZLE.
|
||||
setopt C_BASES # Output hexadecimal numbers in the standard C format ('16#FF' -> '0xFF').
|
||||
setopt CHASE_LINKS # Resolve symbolic links to their true values when changing directory.
|
||||
setopt NO_CLOBBER # '>!' or '>|' must be used to truncate a file, and '>>!' or '>>|' to create a file.
|
||||
setopt COMPLETE_IN_WORD # Complete from the cursor rather than from the end of the word
|
||||
setopt CORRECT # Try to correct the spelling of a command
|
||||
setopt CORRECT_ALL # Try to correct the spelling of all arguments
|
||||
export CORRECT_IGNORE_FILE=".*" # Do not offer hidden files as correction
|
||||
setopt EXTENDED_HISTORY # Save in format : <beginning time>:<elapsed seconds>;<command>
|
||||
setopt EXTENDED_GLOB # Treat the `#', `~' and `^' characters as part of patterns for filename generation, etc.
|
||||
setopt NO_FLOW_CONTROL # Disables output flow control in the shell's editor via start/stop characters (usually ^S/^Q).
|
||||
setopt GLOB_DOTS # Do not require a leading `.' in a filename to be matched explicitly.
|
||||
setopt HIST_IGNORE_DUPS # Do not enter command lines into the history list if they are duplicates of the previous event.
|
||||
setopt HIST_IGNORE_SPACE # History should ignore commands beginning with a space
|
||||
setopt HIST_VERIFY # perform history expansion and reload line in editing buffer instead of executing it directly
|
||||
setopt NO_INC_APPEND_HISTORY # Do not write lines as soon as they are entered (breaks exec time otherwise)
|
||||
setopt INC_APPEND_HISTORY_TIME # Write lines after they are finished
|
||||
setopt INTERACTIVE_COMMENTS # Allow comments even in interactive shells.
|
||||
setopt LIST_AMBIGUOUS # Insert unabmbiguous prefix without completion list (auto_list set)
|
||||
setopt LIST_PACKED # Make completion list smaller by printing matches in columns with different widths.
|
||||
setopt NO_MENU_COMPLETE # Do not autoselect the first entry when completing
|
||||
setopt PUSHD_IGNORE_DUPS # Don't push multiple copies of the same directory onto the directory stack.
|
||||
setopt NO_SHARE_HISTORY # Do not write + read history after every command (messes up exec time otherwise)
|
||||
setopt SH_WORD_SPLIT # Causes field splitting to be performed on unquoted parameter expansions
|
||||
|
||||
autoload -U select-word-style && select-word-style bash
|
||||
autoload -U select-word-style && select-word-style bash
|
||||
|
||||
## Setup the prompt
|
||||
# use bright version of colors when printing bold
|
||||
if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]; then
|
||||
eval "$(dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors")"
|
||||
else
|
||||
eval "$(dircolors -b)"
|
||||
fi
|
||||
# use bright version of colors when printing bold
|
||||
if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]; then
|
||||
eval "$(dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors")"
|
||||
else
|
||||
eval "$(dircolors -b)"
|
||||
fi
|
||||
|
||||
if [ -e "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]; then
|
||||
comp-source "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme"
|
||||
# To customize prompt, run `p10k configure` or edit $ZSH_CONF/p10k.zsh-theme.
|
||||
comp-source "$ZSH_CONF/p10k.zsh-theme"
|
||||
fi
|
||||
if [ -e "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]; then
|
||||
comp-source "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme"
|
||||
# To customize prompt, run `p10k configure` or edit $ZSH_CONF/p10k.zsh-theme.
|
||||
comp-source "$ZSH_CONF/p10k.zsh-theme"
|
||||
fi
|
||||
|
||||
## Setup zsh completion system
|
||||
[ ! -d "$ZSH_CONF/completion" ] || fpath=("$ZSH_CONF/completion" $fpath)
|
||||
[ ! -d "$ZSH_CONF/completion" ] || fpath=("$ZSH_CONF/completion" $fpath)
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit -d "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompdump-$ZSH_VERSION"
|
||||
autoload -Uz compinit
|
||||
compinit -d "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompdump-$ZSH_VERSION"
|
||||
|
||||
zstyle ':completion:*' auto-description 'specify: %d'
|
||||
zstyle ':completion:*' completer _expand _complete _correct _approximate
|
||||
zstyle ':completion:*' format 'Completing %d'
|
||||
zstyle ':completion:*' group-name ''
|
||||
zstyle ':completion:*' menu select=2
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
zstyle ':completion:*' list-colors ''
|
||||
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
|
||||
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
|
||||
zstyle ':completion:*' menu select=long
|
||||
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
|
||||
zstyle ':completion:*' use-compctl false
|
||||
zstyle ':completion:*' verbose true
|
||||
zstyle ':completion:*' auto-description 'specify: %d'
|
||||
zstyle ':completion:*' completer _expand _complete _correct _approximate
|
||||
zstyle ':completion:*' format 'Completing %d'
|
||||
zstyle ':completion:*' group-name ''
|
||||
zstyle ':completion:*' menu select=2
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
zstyle ':completion:*' list-colors ''
|
||||
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
|
||||
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
|
||||
zstyle ':completion:*' menu select=long
|
||||
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
|
||||
zstyle ':completion:*' use-compctl false
|
||||
zstyle ':completion:*' verbose true
|
||||
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
|
||||
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
|
||||
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
|
||||
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*' menu select
|
||||
|
||||
zstyle -e ':completion:*:users' users 'local user; getent passwd | while IFS=: read -rA user; do (( user[3] >= 1000 || user[3] == 0 )) && reply+=($user[1]); done'
|
||||
_comp_options+=(globdots) # Include hidden files
|
||||
# Don't complete the same twice for diff/meld (http://leahneukirchen.org/dotfiles/.zshrc)
|
||||
zstyle ':completion:*:(diff|meld):*' ignore-line yes
|
||||
zstyle -e ':completion:*:users' users 'local user; getent passwd | while IFS=: read -rA user; do (( user[3] >= 1000 || user[3] == 0 )) && reply+=($user[1]); done'
|
||||
_comp_options+=(globdots) # Include hidden files
|
||||
# Don't complete the same twice for diff/meld (http://leahneukirchen.org/dotfiles/.zshrc)
|
||||
zstyle ':completion:*:(diff|meld):*' ignore-line yes
|
||||
|
||||
|
||||
## Load external config files and modules
|
||||
autoload edit-command-line; zle -N edit-command-line
|
||||
autoload zmv
|
||||
! alias run-help >/dev/null 2>&1 || unalias run-help
|
||||
autoload run-help
|
||||
# stderred
|
||||
if [ -e "$ZSH_CONF/stderred/build/libstderred.so" ]; then
|
||||
export LD_PRELOAD="$ZSH_CONF/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
|
||||
export STDERRED_ESC_CODE="$(tput bold && tput setaf 1)"
|
||||
export STDERRED_BLACKLIST="^(git|curl|wget|swipl)$"
|
||||
fi
|
||||
comp-source "$ZSH_CONF/functionsPre.zsh"
|
||||
comp-source "$ZSH_CONF/alias.zsh"
|
||||
comp-source "$ZSH_CONF/functionsPost.zsh"
|
||||
comp-source "$ZSH_CONF/transfer.zsh"
|
||||
comp-source "$ZSH_CONF/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
||||
comp-source "$ZSH_CONF/completion.zsh"
|
||||
# comp-source "$ZSH_CONF/zsh-async/async.zsh"
|
||||
# async_init
|
||||
### syntax-highlight > history-substring > keys
|
||||
# syntax highlighting
|
||||
if [ -e "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting.zsh-theme"
|
||||
fi
|
||||
# history substr search
|
||||
if [ -e "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh" ]; then
|
||||
comp-source "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh"
|
||||
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true
|
||||
HISTORY_SUBSTRING_SEARCH_FUZZY=true
|
||||
fi
|
||||
comp-source "$ZSH_CONF/keys.zsh"
|
||||
autoload edit-command-line; zle -N edit-command-line
|
||||
autoload zmv
|
||||
! alias run-help >/dev/null 2>&1 || unalias run-help
|
||||
autoload run-help
|
||||
# stderred
|
||||
if [ -e "$ZSH_CONF/stderred/build/libstderred.so" ]; then
|
||||
export LD_PRELOAD="$ZSH_CONF/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
|
||||
export STDERRED_ESC_CODE="$(tput bold && tput setaf 1)"
|
||||
export STDERRED_BLACKLIST="^(git|curl|wget|swipl)$"
|
||||
fi
|
||||
comp-source "$ZSH_CONF/functionsPre.zsh"
|
||||
comp-source "$ZSH_CONF/alias.zsh"
|
||||
comp-source "$ZSH_CONF/functionsPost.zsh"
|
||||
comp-source "$ZSH_CONF/transfer.zsh"
|
||||
comp-source "$ZSH_CONF/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
||||
comp-source "$ZSH_CONF/completion.zsh"
|
||||
# comp-source "$ZSH_CONF/zsh-async/async.zsh"
|
||||
# async_init
|
||||
### syntax-highlight > history-substring > keys
|
||||
# syntax highlighting
|
||||
if [ -e "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting.zsh-theme"
|
||||
fi
|
||||
# history substr search
|
||||
if [ -e "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh" ]; then
|
||||
comp-source "$ZSH_CONF/zsh-history-substring-search/zsh-history-substring-search.zsh"
|
||||
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true
|
||||
HISTORY_SUBSTRING_SEARCH_FUZZY=true
|
||||
fi
|
||||
comp-source "$ZSH_CONF/keys.zsh"
|
||||
|
||||
## Env variables that have nothing to do with zsh
|
||||
export EDITOR=nvim
|
||||
export EDITOR=nvim
|
||||
|
||||
# `sudo nano` won't work without this (?)
|
||||
if [ "$TERM" = "xterm-kitty" ]; then
|
||||
export TERM=xterm-256color
|
||||
fi
|
||||
# `sudo nano` won't work without this (?)
|
||||
if [ "$TERM" = "xterm-kitty" ]; then
|
||||
export TERM=xterm-256color
|
||||
fi
|
||||
|
||||
## https://www.tecmint.com/view-colored-man-pages-in-linux/
|
||||
## First seen in Fox Kiesters dotfiles
|
||||
export LESS_TERMCAP_mb=$'\e[1;32m'
|
||||
export LESS_TERMCAP_md=$'\e[1;32m'
|
||||
export LESS_TERMCAP_me=$'\e[0m'
|
||||
export LESS_TERMCAP_se=$'\e[0m'
|
||||
export LESS_TERMCAP_so=$'\E[01;44;33m'
|
||||
export LESS_TERMCAP_ue=$'\e[0m'
|
||||
export LESS_TERMCAP_us=$'\e[1;4;31m'
|
||||
## https://www.tecmint.com/view-colored-man-pages-in-linux/
|
||||
## First seen in Fox Kiesters dotfiles
|
||||
export LESS_TERMCAP_mb=$'\e[1;32m'
|
||||
export LESS_TERMCAP_md=$'\e[1;32m'
|
||||
export LESS_TERMCAP_me=$'\e[0m'
|
||||
export LESS_TERMCAP_se=$'\e[0m'
|
||||
export LESS_TERMCAP_so=$'\E[01;44;33m'
|
||||
export LESS_TERMCAP_ue=$'\e[0m'
|
||||
export LESS_TERMCAP_us=$'\e[1;4;31m'
|
||||
|
||||
## Less clutter in $HOME by enforcing the XDG base directory standard
|
||||
export ATOM_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/atom"
|
||||
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
|
||||
export LESSHISTFILE=-
|
||||
export SQLITE_HISTORY="${XDG_DATA_HOME:-$HOME/.local/share}/sqlite3/sqlite_history"
|
||||
## Less clutter in $HOME by enforcing the XDG base directory standard
|
||||
export ATOM_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/atom"
|
||||
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
|
||||
export LESSHISTFILE=-
|
||||
export SQLITE_HISTORY="${XDG_DATA_HOME:-$HOME/.local/share}/sqlite3/sqlite_history"
|
||||
|
||||
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
|
||||
export VIMINIT='let $MYVIMRC="/home/user/.config/vim/xdg.vim" | source $MYVIMRC'
|
||||
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
|
||||
export VIMINIT='let $MYVIMRC="/home/user/.config/vim/xdg.vim" | source $MYVIMRC'
|
||||
|
||||
## Setup asynchronous jobs
|
||||
# async_start_worker msg_completion
|
||||
# async_job msg_completion tg-completion
|
||||
# async_start_worker msg_completion
|
||||
# async_job msg_completion tg-completion
|
||||
|
||||
## Setup zle
|
||||
zle_highlight=('paste:none')
|
||||
zle_highlight=('paste:none')
|
||||
|
||||
## History
|
||||
HISTSIZE=1000000
|
||||
SAVEHIST=1000000
|
||||
HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/.zsh_history"
|
||||
HISTSIZE=1000000
|
||||
SAVEHIST=1000000
|
||||
HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/.zsh_history"
|
||||
|
||||
@@ -2,106 +2,106 @@
|
||||
## Created: 2019-01-16
|
||||
|
||||
## Add fslint-directory to PATH
|
||||
PATH=$PATH:/usr/share/fslint/fslint
|
||||
PATH=$PATH:/usr/share/fslint/fslint
|
||||
|
||||
|
||||
## Add flags or shorten commands that I cannot remember
|
||||
alias getclip="xclip -selection c -o"
|
||||
alias setclip="perl -pe 'chomp if eof' | xclip -selection c"
|
||||
alias pdfviewer='evince'
|
||||
alias pdf='launch evince'
|
||||
alias darkpdf='launch zathura'
|
||||
alias geeqie='launch qeeqie'
|
||||
alias grep='grep --color'
|
||||
alias igrep='grep -i'
|
||||
alias emacs-game='emacs -batch -l dunnet'
|
||||
alias trash-restore='restore-trash'
|
||||
alias cp='cp -i'
|
||||
alias mv='mv -i' # --backup=t ??
|
||||
alias rm='rm -I'
|
||||
alias less='less -N'
|
||||
alias lsblk='lsblk -f'
|
||||
alias rd='rmdir'
|
||||
alias md='mkdir -p'
|
||||
alias o='xdg-open'
|
||||
alias p='pwd'
|
||||
alias :q='exit'
|
||||
alias :Q=:q
|
||||
alias update='sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y; [ ! -e /var/run/reboot-required ] || printf "\n\nSystem restart required.\n"'
|
||||
alias pdf2text='pdftotext'
|
||||
alias pdf2txt='pdftotext'
|
||||
alias rm='printf "\033[1;031mUse trash!\n\033[0m"; false'
|
||||
alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E "to full|percentage" | tr -d " " | sed "s/:/: /"'
|
||||
alias battery='bat'
|
||||
alias qrdecode='zbarimg'
|
||||
alias pdfmerge='pdfunite'
|
||||
alias loadhist='fc -RI'
|
||||
alias wget='wget --config=${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc --hsts-file="${XDG_DATA_HOME:-$HOME/.local/share}/wget/wget-hsts"'
|
||||
alias -g G='| grep '
|
||||
alias -g no2='2>/dev/null'
|
||||
alias hex=xxd
|
||||
alias bin='xxd -b -c4 | cut -d" " -f2-5'
|
||||
alias vim=nvim
|
||||
alias vi=nvim
|
||||
alias tmux='tmux -f "$HOME/.config/tmux/tmux.conf"'
|
||||
alias resetCursor='echo -ne "\e[5 q"'
|
||||
alias makeThisScratchpad='echo -ne "\033]0;scratchpad-terminal\007"'
|
||||
alias tmsu='tmsu -D "${XDG_DATA_HOME:-$HOME/.local/share}/tmsu/db"'
|
||||
alias grepdate='grep -E "(={8})|([0-9]{4}([: -_][0-9]{2}){5})|([0-9]{8}[ -_][0-9]{6})"'
|
||||
alias feh='feh -.'
|
||||
# 'Temporary' shell in alternate mode that does not mess with the scrollback history
|
||||
alias tmpshell='tput smcup && zsh && tput rmcup'
|
||||
alias getclip="xclip -selection c -o"
|
||||
alias setclip="perl -pe 'chomp if eof' | xclip -selection c"
|
||||
alias pdfviewer='evince'
|
||||
alias pdf='launch evince'
|
||||
alias darkpdf='launch zathura'
|
||||
alias geeqie='launch qeeqie'
|
||||
alias grep='grep --color'
|
||||
alias igrep='grep -i'
|
||||
alias emacs-game='emacs -batch -l dunnet'
|
||||
alias trash-restore='restore-trash'
|
||||
alias cp='cp -i'
|
||||
alias mv='mv -i' # --backup=t ??
|
||||
alias rm='rm -I'
|
||||
alias less='less -N'
|
||||
alias lsblk='lsblk -f'
|
||||
alias rd='rmdir'
|
||||
alias md='mkdir -p'
|
||||
alias o='xdg-open'
|
||||
alias p='pwd'
|
||||
alias :q='exit'
|
||||
alias :Q=:q
|
||||
alias update='sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y; [ ! -e /var/run/reboot-required ] || printf "\n\nSystem restart required.\n"'
|
||||
alias pdf2text='pdftotext'
|
||||
alias pdf2txt='pdftotext'
|
||||
alias rm='printf "\033[1;031mUse trash!\n\033[0m"; false'
|
||||
alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E "to full|percentage" | tr -d " " | sed "s/:/: /"'
|
||||
alias battery='bat'
|
||||
alias qrdecode='zbarimg'
|
||||
alias pdfmerge='pdfunite'
|
||||
alias loadhist='fc -RI'
|
||||
alias wget='wget --config=${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc --hsts-file="${XDG_DATA_HOME:-$HOME/.local/share}/wget/wget-hsts"'
|
||||
alias -g G='| grep '
|
||||
alias -g no2='2>/dev/null'
|
||||
alias hex=xxd
|
||||
alias bin='xxd -b -c4 | cut -d" " -f2-5'
|
||||
alias vim=nvim
|
||||
alias vi=nvim
|
||||
alias tmux='tmux -f "$HOME/.config/tmux/tmux.conf"'
|
||||
alias resetCursor='echo -ne "\e[5 q"'
|
||||
alias makeThisScratchpad='echo -ne "\033]0;scratchpad-terminal\007"'
|
||||
alias tmsu='tmsu -D "${XDG_DATA_HOME:-$HOME/.local/share}/tmsu/db"'
|
||||
alias grepdate='grep -E "(={8})|([0-9]{4}([: -_][0-9]{2}){5})|([0-9]{8}[ -_][0-9]{6})"'
|
||||
alias feh='feh -.'
|
||||
# 'Temporary' shell in alternate mode that does not mess with the scrollback history
|
||||
alias tmpshell='tput smcup && zsh && tput rmcup'
|
||||
|
||||
## functions
|
||||
alias trash=_trash_list_default
|
||||
alias nemo=_nemo_wd_default
|
||||
alias trash=_trash_list_default
|
||||
alias nemo=_nemo_wd_default
|
||||
|
||||
## git
|
||||
alias gs='git status --short' # overrides ghostscript
|
||||
alias gits='gs'
|
||||
alias gstat='gs'
|
||||
alias gitstat='gs'
|
||||
alias ga='git add'
|
||||
alias gaa='git add -A'
|
||||
alias gc='git commit -m'
|
||||
alias gpsh='git push'
|
||||
alias gpush='git push'
|
||||
alias gpll='git pull'
|
||||
alias gpull='git pull'
|
||||
alias gdiff='git diff'
|
||||
alias gd='git diff'
|
||||
alias gs='git status --short' # overrides ghostscript
|
||||
alias gits='gs'
|
||||
alias gstat='gs'
|
||||
alias gitstat='gs'
|
||||
alias ga='git add'
|
||||
alias gaa='git add -A'
|
||||
alias gc='git commit -m'
|
||||
alias gpsh='git push'
|
||||
alias gpush='git push'
|
||||
alias gpll='git pull'
|
||||
alias gpull='git pull'
|
||||
alias gdiff='git diff'
|
||||
alias gd='git diff'
|
||||
|
||||
## Navigation
|
||||
alias ls='_ls_show_hidden --color=auto --group-directories-first -p -v'
|
||||
alias sl='ls'
|
||||
alias la='ls -A'
|
||||
alias l='ls -lh --time-style=long-iso'
|
||||
alias ll='l -A'
|
||||
alias cd..='cd ..'
|
||||
alias cd~='cd ~'
|
||||
alias ls='_ls_show_hidden --color=auto --group-directories-first -p -v'
|
||||
alias sl='ls'
|
||||
alias la='ls -A'
|
||||
alias l='ls -lh --time-style=long-iso'
|
||||
alias ll='l -A'
|
||||
alias cd..='cd ..'
|
||||
alias cd~='cd ~'
|
||||
|
||||
## Hashes for often visited folders
|
||||
hash -d Desktop=$HOME/Desktop/
|
||||
hash -d Documents=$HOME/Documents/
|
||||
hash -d Pictures=$HOME/Pictures/
|
||||
hash -d Downloads=$HOME/Downloads/
|
||||
hash -d Projects=$HOME/Projects/
|
||||
hash -d dot=~Projects/dotfiles/
|
||||
hash -d dots=~dot
|
||||
## Hashes for often visited folders
|
||||
hash -d Desktop=$HOME/Desktop/
|
||||
hash -d Documents=$HOME/Documents/
|
||||
hash -d Pictures=$HOME/Pictures/
|
||||
hash -d Downloads=$HOME/Downloads/
|
||||
hash -d Projects=$HOME/Projects/
|
||||
hash -d dot=~Projects/dotfiles/
|
||||
hash -d dots=~dot
|
||||
|
||||
local UNI="$HOME/Documents/uni"
|
||||
hash -d cheat=$HOME/Documents/Cheat\ Sheet/
|
||||
hash -d uni=$UNI/
|
||||
# hash for current/last wise
|
||||
local YEAR=$(date +"%y")
|
||||
if [ -d "$UNI/$YEAR-WiSe" ]; then
|
||||
hash -d wise="$UNI/$YEAR-WiSe/"
|
||||
elif [ -d "$UNI/$(($YEAR - 1))-WiSe" ]; then
|
||||
hash -d wise="$UNI/$(($YEAR - 1))-WiSe/"
|
||||
fi
|
||||
# hash for current/last sose
|
||||
if [ -d "$UNI/$YEAR-SoSe" ]; then
|
||||
hash -d sose="$UNI/$YEAR-SoSe"/
|
||||
elif [ -d "$UNI/$(($YEAR - 1))-SoSe" ]; then
|
||||
hash -d sose="$UNI/$(($YEAR - 1))-SoSe/"
|
||||
fi
|
||||
local UNI="$HOME/Documents/uni"
|
||||
hash -d cheat=$HOME/Documents/Cheat\ Sheet/
|
||||
hash -d uni=$UNI/
|
||||
# hash for current/last wise
|
||||
local YEAR=$(date +"%y")
|
||||
if [ -d "$UNI/$YEAR-WiSe" ]; then
|
||||
hash -d wise="$UNI/$YEAR-WiSe/"
|
||||
elif [ -d "$UNI/$(($YEAR - 1))-WiSe" ]; then
|
||||
hash -d wise="$UNI/$(($YEAR - 1))-WiSe/"
|
||||
fi
|
||||
# hash for current/last sose
|
||||
if [ -d "$UNI/$YEAR-SoSe" ]; then
|
||||
hash -d sose="$UNI/$YEAR-SoSe"/
|
||||
elif [ -d "$UNI/$(($YEAR - 1))-SoSe" ]; then
|
||||
hash -d sose="$UNI/$(($YEAR - 1))-SoSe/"
|
||||
fi
|
||||
|
||||
@@ -3,149 +3,151 @@
|
||||
|
||||
## change into dir and print accordingly
|
||||
function cl() {
|
||||
cd "$@" && ls
|
||||
cd "$@" && ls
|
||||
}
|
||||
|
||||
## Copy file and append .bkp extension
|
||||
function bkp() {
|
||||
for file in "$@"; do
|
||||
cp -i "$file" "$file.bkp"
|
||||
done
|
||||
for file in "$@"; do
|
||||
cp -i "$file" "$file.bkp"
|
||||
done
|
||||
}
|
||||
|
||||
## Launches program and detaches it from the shell
|
||||
function launch() {
|
||||
# eval "$@" ## does not work with special characters?
|
||||
launch_command="$1"
|
||||
shift
|
||||
$launch_command "$@" &>/dev/null & disown
|
||||
# eval "$@" ## does not work with special characters?
|
||||
launch_command="$1"
|
||||
shift
|
||||
$launch_command "$@" &>/dev/null & disown
|
||||
}
|
||||
|
||||
## Compares two pdfs based on the result of pdftotext
|
||||
function pdfdiff() {
|
||||
if [[ $# -eq 2 && -r "$1" && -r "$2" ]]; then
|
||||
diff <(pdftotext "$1" -) <(pdftotext "$2" -)
|
||||
else
|
||||
echo "something went wrong" 2>&1
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
if [[ $# -eq 2 && -r "$1" && -r "$2" ]]; then
|
||||
diff <(pdftotext "$1" -) <(pdftotext "$2" -)
|
||||
else
|
||||
echo "something went wrong" 2>&1
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
## Gets Passwd from bitwarden and copies it into the clipboard
|
||||
function bwpwd() {
|
||||
if bw "get" "password" "$@" >/dev/null; then
|
||||
bw "get" "password" "$@" | tr -d '\n' | setclip
|
||||
else
|
||||
bw "get" "password" "$@"
|
||||
fi
|
||||
if bw "get" "password" "$@" >/dev/null; then
|
||||
bw "get" "password" "$@" | tr -d '\n' | setclip
|
||||
else
|
||||
bw "get" "password" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## creates directory and changes into it
|
||||
function mkcd () {
|
||||
mkdir "$@" # create directory
|
||||
while [ $# -gt 1 ]; do # shift arguments if mkdir options were used
|
||||
shift
|
||||
done
|
||||
if [ -d "$1" ]; then
|
||||
cd "$1"
|
||||
pwd
|
||||
fi
|
||||
# Create directory
|
||||
mkdir "$@"
|
||||
# shift arguments if mkdir options were used
|
||||
while [ $# -gt 1 ]; do
|
||||
shift
|
||||
done
|
||||
if [ -d "$1" ]; then
|
||||
cd "$1"
|
||||
pwd
|
||||
fi
|
||||
}
|
||||
|
||||
## Send a message over telegram by using the -e flag
|
||||
function msg() {
|
||||
if [ $# -ge 2 ]; then
|
||||
telegram-cli -W -e "msg $*" | grep -E "${${*/ /.*}//_/ }"
|
||||
# | grep -E "$(echo "$*" | sed 's/ /.*/; s/_/ /g')"
|
||||
else
|
||||
printf "\033[1;31mPlease specify a contact and a message.\n\033[0m" >&2
|
||||
fi
|
||||
if [ $# -ge 2 ]; then
|
||||
telegram-cli -W -e "msg $*" | grep -E "${${*/ /.*}//_/ }"
|
||||
# | grep -E "$(echo "$*" | sed 's/ /.*/; s/_/ /g')"
|
||||
else
|
||||
printf "\033[1;31mPlease specify a contact and a message.\n\033[0m" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
## Execute tg -e command but cuts of the uninteresting parts
|
||||
function tg() {
|
||||
tg="telegram-cli"
|
||||
if [ "$1" = "-e" ]; then
|
||||
shift
|
||||
$tg -N -W -e "$@" | tail -n +9 | head -n -2
|
||||
else
|
||||
$tg -N -W "$@"
|
||||
fi
|
||||
tg="telegram-cli"
|
||||
if [ "$1" = "-e" ]; then
|
||||
shift
|
||||
$tg -N -W -e "$@" | tail -n +9 | head -n -2
|
||||
else
|
||||
$tg -N -W "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## Encode and decode qr-codes
|
||||
function qr() {
|
||||
if [[ $# -eq 1 && -r "$1" ]]; then
|
||||
zbarimg "$1"
|
||||
else
|
||||
qrencode "$@"
|
||||
fi
|
||||
if [[ $# -eq 1 && -r "$1" ]]; then
|
||||
zbarimg "$1"
|
||||
else
|
||||
qrencode "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## Edit config file
|
||||
function conf() {
|
||||
# default to vim if no editor is set
|
||||
local CONF_EDITOR=${EDITOR:-vim}
|
||||
local CONF_EDITOR=${EDITOR:-vim}
|
||||
|
||||
# parse otions
|
||||
while getopts "e:" opt 2>/dev/null; do
|
||||
case $opt in
|
||||
e) CONF_EDITOR="$OPTARG";;
|
||||
*) printf "\033[1;31mUsage: $0 [-e <editor>] <program>[/subdirs] [<config_file>]\n\033[0m" >&2
|
||||
return 1 ;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1 ))
|
||||
while getopts "e:" opt 2>/dev/null; do
|
||||
case $opt in
|
||||
e) CONF_EDITOR="$OPTARG";;
|
||||
*) printf "\033[1;31mUsage: $0 [-e <editor>] <program>[/subdirs] [<config_file>]\n\033[0m" >&2
|
||||
return 1 ;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1 ))
|
||||
|
||||
# CONF_EDITOR=( $(resolve -s $CONF_EDITOR) )
|
||||
# CONF_EDITOR=( $(resolve -s $CONF_EDITOR) )
|
||||
|
||||
# conf needs an argument
|
||||
if [ $# -eq 0 ]; then
|
||||
printf "\033[1;31mPlease specify a config.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
if [ $# -eq 0 ]; then
|
||||
printf "\033[1;31mPlease specify a config.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
# search for program name in XDG_CONFIG_HOME and $HOME
|
||||
local CONF_DIR="$(_get_config_dir "$1")"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf "\033[1;31mFalling back to $HOME.\n\033[0m" >&2
|
||||
CONF_DIR="$HOME"
|
||||
fi
|
||||
local CONF_DIR="$(_get_config_dir "$1")"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf "\033[1;31mFalling back to $HOME.\n\033[0m" >&2
|
||||
CONF_DIR="$HOME"
|
||||
fi
|
||||
|
||||
# open file with specified name if
|
||||
if [ $# -gt 1 ]; then
|
||||
if [ -r "$CONF_DIR/$2" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/$2"
|
||||
return 0
|
||||
else
|
||||
printf "\033[1;31mCould not find config file with that name.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ $# -gt 1 ]; then
|
||||
if [ -r "$CONF_DIR/$2" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/$2"
|
||||
return 0
|
||||
else
|
||||
printf "\033[1;31mCould not find config file with that name.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# possible config-file names + same in hidden
|
||||
local -a CONF_PATTERNS
|
||||
CONF_PATTERNS=(
|
||||
"$1.conf"
|
||||
"$1.config"
|
||||
"${1}rc"
|
||||
"config"
|
||||
"conf"
|
||||
"$1.yml"
|
||||
"$1.yaml"
|
||||
"config.ini"
|
||||
"$1"
|
||||
)
|
||||
local -a CONF_PATTERNS
|
||||
CONF_PATTERNS=(
|
||||
"$1.conf"
|
||||
"$1.config"
|
||||
"${1}rc"
|
||||
"config"
|
||||
"conf"
|
||||
"$1.yml"
|
||||
"$1.yaml"
|
||||
"config.ini"
|
||||
"$1"
|
||||
)
|
||||
|
||||
# check if config file exists
|
||||
for config in $CONF_PATTERNS; do
|
||||
if [ -r "$CONF_DIR/$config" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/$config"
|
||||
return 0
|
||||
elif [ -r "$CONF_DIR/.$config" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/.$config"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
for config in $CONF_PATTERNS; do
|
||||
if [ -r "$CONF_DIR/$config" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/$config"
|
||||
return 0
|
||||
elif [ -r "$CONF_DIR/.$config" ]; then
|
||||
$CONF_EDITOR "$CONF_DIR/.$config"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
# if no config was found in a location other than HOME, look again in HOME.
|
||||
# (For cases like default vim with ~/.vim/ and ~/.vimrc)
|
||||
@@ -159,163 +161,163 @@ function conf() {
|
||||
done
|
||||
fi
|
||||
|
||||
printf "\033[1;31mCould not find config file.\n\033[0m" >&2
|
||||
return 1
|
||||
printf "\033[1;31mCould not find config file.\n\033[0m" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
## Change into config dir
|
||||
function c() {
|
||||
CONF_DIR="$(_get_config_dir $*)"
|
||||
if [ $? -eq 0 ]; then
|
||||
cd "$CONF_DIR"
|
||||
else
|
||||
printf "$CONF_DIR" >&2
|
||||
return 1
|
||||
fi
|
||||
CONF_DIR="$(_get_config_dir $*)"
|
||||
if [ $? -eq 0 ]; then
|
||||
cd "$CONF_DIR"
|
||||
else
|
||||
printf "$CONF_DIR" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
## Get config directory
|
||||
function _get_config_dir() {
|
||||
if [ $# -gt 1 ]; then
|
||||
printf "\033[1;31mPlease specify one config.\n\033[0m" >&2
|
||||
return 1
|
||||
elif [ $# -eq 0 ]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
elif [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/$1" ]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}/$1"
|
||||
elif [ -d "$HOME/.$1" ]; then
|
||||
echo "$HOME/.$1"
|
||||
else
|
||||
printf "\033[1;31mCould not find config home.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
if [ $# -gt 1 ]; then
|
||||
printf "\033[1;31mPlease specify one config.\n\033[0m" >&2
|
||||
return 1
|
||||
elif [ $# -eq 0 ]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
elif [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/$1" ]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}/$1"
|
||||
elif [ -d "$HOME/.$1" ]; then
|
||||
echo "$HOME/.$1"
|
||||
else
|
||||
printf "\033[1;31mCould not find config home.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
## Function that resolves a command to the end
|
||||
function resolve() {
|
||||
# TODO: comment!!
|
||||
# In script mode only the result and its arguments are printed
|
||||
# The result can then be used directly by other scripts without further
|
||||
# manipulation
|
||||
typeset SCRIPT_MODE VERBOSE_MODE 1>&2
|
||||
while getopts "sv" opt 2>/dev/null; do
|
||||
case $opt in
|
||||
s) SCRIPT_MODE=1;;
|
||||
v) VERBOSE_MODE=1;;
|
||||
*) echo "Unknown flag!" >&2
|
||||
return 1;;
|
||||
esac
|
||||
done
|
||||
shift $(( $OPTIND - 1 ))
|
||||
# In script mode only the result and its arguments are printed
|
||||
# The result can then be used directly by other scripts without further
|
||||
# manipulation
|
||||
typeset SCRIPT_MODE VERBOSE_MODE 1>&2
|
||||
while getopts "sv" opt 2>/dev/null; do
|
||||
case $opt in
|
||||
s) SCRIPT_MODE=1;;
|
||||
v) VERBOSE_MODE=1;;
|
||||
*) echo "Unknown flag!" >&2
|
||||
return 1;;
|
||||
esac
|
||||
done
|
||||
shift $(( $OPTIND - 1 ))
|
||||
|
||||
if (( $SCRIPT_MODE )) && (( $VERBOSE_MODE )); then
|
||||
echo "Script and verbose mode do no work together." >&2
|
||||
return 1
|
||||
fi
|
||||
if (( $SCRIPT_MODE )) && (( $VERBOSE_MODE )); then
|
||||
echo "Script and verbose mode do no work together." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
typeset THIS THIS_COMMAND THIS_ARGUMENTS 1>&2
|
||||
# When receiving a command with arguments, do not differ between
|
||||
# one and multiple arguments.
|
||||
THIS="$*"
|
||||
THIS_COMMAND="${THIS%% *}"
|
||||
# ${THIS%%* } would result in THIS_COMMAND when no arguements are specified.
|
||||
# We want an empty string in this case.
|
||||
THIS_ARGUMENTS="${THIS#${THIS_COMMAND}}"
|
||||
typeset THIS THIS_COMMAND THIS_ARGUMENTS 1>&2
|
||||
# When receiving a command with arguments, do not differ between
|
||||
# one and multiple arguments.
|
||||
THIS="$*"
|
||||
THIS_COMMAND="${THIS%% *}"
|
||||
# ${THIS%%* } would result in THIS_COMMAND when no arguements are specified.
|
||||
# We want an empty string in this case.
|
||||
THIS_ARGUMENTS="${THIS#${THIS_COMMAND}}"
|
||||
|
||||
# Resolve all aliases
|
||||
while [[ "$(which $THIS_COMMAND | head -n1)" =~ "^${THIS_COMMAND}: aliased to " ]]; do
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo $THIS_COMMAND$THIS_ARGUMENTS
|
||||
fi
|
||||
THIS="$(which "$THIS_COMMAND" | cut -d' ' -f4-)"
|
||||
THIS_COMMAND="${THIS%% *}"
|
||||
THIS_ARGUMENTS="${THIS#${THIS_COMMAND}}$THIS_ARGUMENTS"
|
||||
# Resolve all aliases
|
||||
while [[ "$(which $THIS_COMMAND | head -n1)" =~ "^${THIS_COMMAND}: aliased to " ]]; do
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo $THIS_COMMAND$THIS_ARGUMENTS
|
||||
fi
|
||||
THIS="$(which "$THIS_COMMAND" | cut -d' ' -f4-)"
|
||||
THIS_COMMAND="${THIS%% *}"
|
||||
THIS_ARGUMENTS="${THIS#${THIS_COMMAND}}$THIS_ARGUMENTS"
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
command_type="$(type $THIS_COMMAND)"
|
||||
if [[ "$command_type" =~ "^$THIS_COMMAND is a shell function from " ]]; then
|
||||
if (( $SCRIPT_MODE )); then
|
||||
echo -n "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
return 0
|
||||
elif (( $VERBOSE_MODE )); then
|
||||
echo "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
else
|
||||
echo "$* is resolved to:\n$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
echo -n "${command_type}:"
|
||||
from_file="$(echo $command_type | cut -d' ' -f7-)"
|
||||
# from_file=${command_type##* }
|
||||
grep -En -m1 "(function[ \t]+${THIS_COMMAND}[ \t]*(\(\)|)[ \t]*{|${THIS_COMMAND}[ \t]*\(\)[ \t]*{)" "$from_file" \
|
||||
| cut -d: -f1
|
||||
else
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
THIS_COMMAND="$(which $THIS_COMMAND)"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "${THIS_COMMAND%% *} not found." >&2
|
||||
return 1
|
||||
fi
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo -n "$THIS_COMMAND"
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
while [[ "$(file -bh $THIS_COMMAND)" =~ "^symbolic link to" && "$NEXT_STEP" != "$THIS_COMMAND" ]]; do
|
||||
THIS_COMMAND=$NEXT_STEP
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
command_type="$(type $THIS_COMMAND)"
|
||||
if [[ "$command_type" =~ "^$THIS_COMMAND is a shell function from " ]]; then
|
||||
if (( $SCRIPT_MODE )); then
|
||||
echo -n "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
return 0
|
||||
elif (( $VERBOSE_MODE )); then
|
||||
echo "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
else
|
||||
echo "$* is resolved to:\n$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
echo -n "${command_type}:"
|
||||
from_file="$(echo $command_type | cut -d' ' -f7-)"
|
||||
# from_file=${command_type##* }
|
||||
grep -En -m1 "(function[ \t]+${THIS_COMMAND}[ \t]*(\(\)|)[ \t]*{|${THIS_COMMAND}[ \t]*\(\)[ \t]*{)" "$from_file" \
|
||||
| cut -d: -f1
|
||||
else
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
THIS_COMMAND="$(which $THIS_COMMAND)"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "${THIS_COMMAND%% *} not found." >&2
|
||||
return 1
|
||||
fi
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo -n "$THIS_COMMAND"
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
while [[ "$(file -bh $THIS_COMMAND)" =~ "^symbolic link to" && "$NEXT_STEP" != "$THIS_COMMAND" ]]; do
|
||||
THIS_COMMAND=$NEXT_STEP
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
|
||||
echo -n "\n$THIS_COMMAND"
|
||||
done
|
||||
echo $THIS_ARGUMENTS
|
||||
return 0
|
||||
fi
|
||||
THIS_COMMAND="$(realpath $THIS_COMMAND)"
|
||||
if (( $SCRIPT_MODE )); then
|
||||
echo -n "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
return 0
|
||||
fi
|
||||
echo "$* is resolved to:\n$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
echo -n "\n$THIS_COMMAND"
|
||||
done
|
||||
echo $THIS_ARGUMENTS
|
||||
return 0
|
||||
fi
|
||||
THIS_COMMAND="$(realpath $THIS_COMMAND)"
|
||||
if (( $SCRIPT_MODE )); then
|
||||
echo -n "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
return 0
|
||||
fi
|
||||
echo "$* is resolved to:\n$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
}
|
||||
|
||||
## Grep a keyword at the beginning of a line (ignoring whitespace) in a man page
|
||||
function mangrep() {
|
||||
mangrep_file="$1"
|
||||
mangrep_pattern="$2"
|
||||
shift
|
||||
shift
|
||||
man -P 'less -p "^ *'"${mangrep_pattern}\"" "$@" "${mangrep_file}"
|
||||
unset mangrep_{file,pattern}
|
||||
mangrep_file="$1"
|
||||
mangrep_pattern="$2"
|
||||
shift
|
||||
shift
|
||||
man -P 'less -p "^ *'"${mangrep_pattern}\"" "$@" "${mangrep_file}"
|
||||
unset mangrep_{file,pattern}
|
||||
}
|
||||
|
||||
## Grep in zsh history file
|
||||
function histgrep() {
|
||||
grep "$@" "${HISTFILE:-$HOME/.zsh_history}"
|
||||
grep "$@" "${HISTFILE:-$HOME/.zsh_history}"
|
||||
}
|
||||
|
||||
function format() {
|
||||
# TODO: respect manual changes made in meld
|
||||
CLANG_FORMAT_FILE="$HOME/Projects/C/.clang.format"
|
||||
FORMAT="{$(sed -E '/^\s*$/d' "$CLANG_FORMAT_FILE" | tr '\n' ',' | sed 's/,$//')}"
|
||||
if [ $# -eq 1 ]; then
|
||||
meld <(clang-format -style="$FORMAT" $1) $1
|
||||
fi
|
||||
echo -n "Are you happy? [yn] "
|
||||
read yn
|
||||
if [ $yn = "y" ]; then
|
||||
clang-format -i -style="$FORMAT" $1
|
||||
fi
|
||||
# TODO: respect manual changes made in meld
|
||||
CLANG_FORMAT_FILE="$HOME/Projects/C/.clang.format"
|
||||
FORMAT="{$(sed -E '/^\s*$/d' "$CLANG_FORMAT_FILE" | tr '\n' ',' | sed 's/,$//')}"
|
||||
if [ $# -eq 1 ]; then
|
||||
meld <(clang-format -style="$FORMAT" $1) $1
|
||||
fi
|
||||
echo -n "Are you happy? [yn] "
|
||||
read yn
|
||||
if [ $yn = "y" ]; then
|
||||
clang-format -i -style="$FORMAT" $1
|
||||
fi
|
||||
}
|
||||
|
||||
function urlenc() {
|
||||
python3 -c "from urllib import parse; print(parse.quote('$@'), end='')"
|
||||
python3 -c "from urllib import parse; print(parse.quote('$@'), end='')"
|
||||
}
|
||||
|
||||
function urldec() {
|
||||
python3 -c "from urllib import parse; print(parse.unquote('$@'), end='')"
|
||||
python3 -c "from urllib import parse; print(parse.unquote('$@'), end='')"
|
||||
}
|
||||
|
||||
@@ -3,43 +3,43 @@
|
||||
|
||||
## List items in trash if no argument is specified
|
||||
function _trash_list_default() {
|
||||
if [ $# -eq 0 ]; then
|
||||
trash-list
|
||||
else
|
||||
\trash "$@"
|
||||
fi
|
||||
if [ $# -eq 0 ]; then
|
||||
trash-list
|
||||
else
|
||||
\trash "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## Open nemo in current directory if no argument is specified
|
||||
function _nemo_wd_default() {
|
||||
if [ $# -eq 0 ]; then
|
||||
\nemo ./
|
||||
else
|
||||
\nemo "$@"
|
||||
fi
|
||||
if [ $# -eq 0 ]; then
|
||||
\nemo ./
|
||||
else
|
||||
\nemo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## ls function that prints hidden files when there are no regular files
|
||||
## or if we are in a directory that matches the regex in LS_SHOW_ALL_DIRS
|
||||
function _ls_show_hidden() {
|
||||
# Can be overwritten by settings it before calling
|
||||
local LS_SHOW_ALL_DIRS=${LS_SHOW_ALL_DIRS:-"dotfiles|\.config"}
|
||||
# Can be overwritten by settings it before calling
|
||||
local LS_SHOW_ALL_DIRS=${LS_SHOW_ALL_DIRS:-"dotfiles|\.config"}
|
||||
|
||||
# if a path is given, target will contain the given directory or the directory in which the
|
||||
# given file is located
|
||||
local target
|
||||
for arg in "$@"; do
|
||||
if [ -d "$arg" ]; then
|
||||
target="$arg"
|
||||
break
|
||||
elif [ -d "${arg%/*}" ]; then
|
||||
target="${arg%/*}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ -z "$(command ls "$@")" || "$( (cd "$target"; pwd) )" =~ "${LS_SHOW_ALL_DIRS:-^$}" ]]; then
|
||||
command ls -A "$@"
|
||||
else
|
||||
command ls "$@"
|
||||
fi
|
||||
local target
|
||||
for arg in "$@"; do
|
||||
if [ -d "$arg" ]; then
|
||||
target="$arg"
|
||||
break
|
||||
elif [ -d "${arg%/*}" ]; then
|
||||
target="${arg%/*}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ -z "$(command ls "$@")" || "$( (cd "$target"; pwd) )" =~ "${LS_SHOW_ALL_DIRS:-^$}" ]]; then
|
||||
command ls -A "$@"
|
||||
else
|
||||
command ls "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -2,74 +2,75 @@
|
||||
## Created: 2019-04-17
|
||||
|
||||
## Setup keybindings
|
||||
bindkey -v
|
||||
# no delay when switching into NORMAL
|
||||
export KEYTIMEOUT=1
|
||||
bindkey -v
|
||||
# no delay when switching into NORMAL
|
||||
export KEYTIMEOUT=1
|
||||
|
||||
function zle-line-init zle-keymap-select {
|
||||
# Switch cursor style depending on mode
|
||||
case $KEYMAP in
|
||||
vicmd) echo -ne "\e[1 q";; # block
|
||||
viins|main) echo -ne "\e[5 q";; # beam
|
||||
esac
|
||||
function zle-line-init zle-keymap-select {
|
||||
# Switch cursor style depending on mode
|
||||
case $KEYMAP in
|
||||
vicmd) echo -ne "\e[1 q";; # block
|
||||
viins|main) echo -ne "\e[5 q";; # beam
|
||||
esac
|
||||
|
||||
# Make sure that the terminal is in application mode when zle is active, since
|
||||
# only then values from $terminfo are valid
|
||||
echoti smkx
|
||||
}
|
||||
zle -N zle-line-init
|
||||
zle -N zle-keymap-select
|
||||
# Make sure that the terminal is in application mode when zle is active, since
|
||||
# only then values from $terminfo are valid
|
||||
echoti smkx
|
||||
}
|
||||
zle -N zle-line-init
|
||||
zle -N zle-keymap-select
|
||||
|
||||
# See above (echoti smkx)
|
||||
function zle-line-finish { echoti rmkx; }
|
||||
zle -N zle-line-finish
|
||||
# See above (echoti smkx)
|
||||
function zle-line-finish { echoti rmkx; }
|
||||
zle -N zle-line-finish
|
||||
|
||||
bindkey '^[h' run-help
|
||||
|
||||
bindkey '^[h' run-help
|
||||
## History
|
||||
## Alternatives to check out: {up,down}-line-or-search
|
||||
bindkey '^[[A' history-substring-search-up
|
||||
bindkey "$terminfo[kcuu1]" history-substring-search-up
|
||||
bindkey '^[[B' history-substring-search-down
|
||||
bindkey "$terminfo[kcud1]" history-substring-search-down
|
||||
bindkey '^R' history-incremental-search-backward
|
||||
## Alternatives to check out: {up,down}-line-or-search
|
||||
bindkey '^[[A' history-substring-search-up
|
||||
bindkey "$terminfo[kcuu1]" history-substring-search-up
|
||||
bindkey '^[[B' history-substring-search-down
|
||||
bindkey "$terminfo[kcud1]" history-substring-search-down
|
||||
bindkey '^R' history-incremental-search-backward
|
||||
|
||||
## Navigation
|
||||
bindkey '^[[Z' reverse-menu-complete # shift-tab
|
||||
bindkey '^K' kill-whole-line # ctrl-K
|
||||
bindkey '^Q' push-input # ctrl-Q
|
||||
bindkey '\e[H' beginning-of-line # home
|
||||
bindkey "$terminfo[khome]" beginning-of-line # home
|
||||
bindkey '\e[F' end-of-line # end
|
||||
bindkey "$terminfo[kend]" end-of-line # end
|
||||
bindkey -v '^?' backward-delete-char # normal delete not vim-bac...
|
||||
bindkey '^[[P' delete-char # delete
|
||||
bindkey '^[[3~' delete-char # delete
|
||||
bindkey '^[[1;5D' backward-word # ctrl-left
|
||||
bindkey '^[[1;5C' forward-word # ctrl-right
|
||||
bindkey '^H' backward-kill-word # ctrl-backspace
|
||||
bindkey '^[[3;5~' kill-word # ctrl-delete
|
||||
bindkey "$terminfo[kmous]" kill-word # ctrl-delete
|
||||
bindkey '^[[Z' reverse-menu-complete # shift-tab
|
||||
bindkey '^K' kill-whole-line # ctrl-K
|
||||
bindkey '^Q' push-input # ctrl-Q
|
||||
bindkey '\e[H' beginning-of-line # home
|
||||
bindkey "$terminfo[khome]" beginning-of-line # home
|
||||
bindkey '\e[F' end-of-line # end
|
||||
bindkey "$terminfo[kend]" end-of-line # end
|
||||
bindkey -v '^?' backward-delete-char # normal delete not vim-bac...
|
||||
bindkey '^[[P' delete-char # delete
|
||||
bindkey '^[[3~' delete-char # delete
|
||||
bindkey '^[[1;5D' backward-word # ctrl-left
|
||||
bindkey '^[[1;5C' forward-word # ctrl-right
|
||||
bindkey '^H' backward-kill-word # ctrl-backspace
|
||||
bindkey '^[[3;5~' kill-word # ctrl-delete
|
||||
bindkey "$terminfo[kmous]" kill-word # ctrl-delete
|
||||
|
||||
## From https://github.com/nicoulaj/dotfiles/blob/1c7dd1b621bc8bae895bafc438562482ea245d7e/.config/zsh/functions/widgets/rationalize-dots
|
||||
function _expandDots {
|
||||
#[[ $LBUFFER = *.. ]] && LBUFFER+=/.. || LBUFFER+=.
|
||||
setopt localoptions nonomatch
|
||||
local MATCH dir split
|
||||
split=(${(z)LBUFFER})
|
||||
(( $#split > 1 )) && dir=$split[-1] || dir=$split
|
||||
if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then
|
||||
LBUFFER+=/
|
||||
zle self-insert
|
||||
zle self-insert
|
||||
[[ -e $dir ]] && zle -M ${dir:a:h}
|
||||
elif [[ $LBUFFER[-1] == '.' ]]; then
|
||||
zle self-insert
|
||||
[[ -e $dir ]] && zle -M ${dir:a:h}
|
||||
else
|
||||
zle self-insert
|
||||
fi
|
||||
}
|
||||
#autoload _expandDots
|
||||
zle -N _expandDots
|
||||
bindkey . _expandDots
|
||||
## From https://github.com/nicoulaj/dotfiles/blob/1c7dd1b621bc8bae895bafc438562482ea245d7e/.config/zsh/functions/widgets/rationalize-dots
|
||||
function _expandDots {
|
||||
#[[ $LBUFFER = *.. ]] && LBUFFER+=/.. || LBUFFER+=.
|
||||
setopt localoptions nonomatch
|
||||
local MATCH dir split
|
||||
split=(${(z)LBUFFER})
|
||||
(( $#split > 1 )) && dir=$split[-1] || dir=$split
|
||||
if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then
|
||||
LBUFFER+=/
|
||||
zle self-insert
|
||||
zle self-insert
|
||||
[[ -e $dir ]] && zle -M ${dir:a:h}
|
||||
elif [[ $LBUFFER[-1] == '.' ]]; then
|
||||
zle self-insert
|
||||
[[ -e $dir ]] && zle -M ${dir:a:h}
|
||||
else
|
||||
zle self-insert
|
||||
fi
|
||||
}
|
||||
#autoload _expandDots
|
||||
zle -N _expandDots
|
||||
bindkey . _expandDots
|
||||
|
||||
|
||||
Reference in New Issue
Block a user