summaryrefslogtreecommitdiff
path: root/.zsh
diff options
context:
space:
mode:
Diffstat (limited to '.zsh')
m---------.zsh/alien0
-rw-r--r--.zsh/homelander.zsh4
-rw-r--r--.zsh/omz/README.txt2
-rw-r--r--.zsh/omz/compfix.zsh40
-rw-r--r--.zsh/omz/history.zsh40
-rw-r--r--.zsh/omz/key-bindings.zsh138
-rw-r--r--.zsh/omz/spectrum.zsh35
-rw-r--r--.zsh/omz/termsupport.zsh137
m---------.zsh/zsh-history-substring-search0
m---------.zsh/zsh-syntax-highlighting0
10 files changed, 396 insertions, 0 deletions
diff --git a/.zsh/alien b/.zsh/alien
new file mode 160000
+Subproject 0c94df198a907c410c953a989ced3cd159efe80
diff --git a/.zsh/homelander.zsh b/.zsh/homelander.zsh
new file mode 100644
index 0000000..f2a3dc1
--- /dev/null
+++ b/.zsh/homelander.zsh
@@ -0,0 +1,4 @@
+precmd() {
+ print ">"
+}
+export PROMPT=" "
diff --git a/.zsh/omz/README.txt b/.zsh/omz/README.txt
new file mode 100644
index 0000000..109ffd2
--- /dev/null
+++ b/.zsh/omz/README.txt
@@ -0,0 +1,2 @@
+Library/Plugins from ohmyzsh
+https://github.com/ohmyzsh/ohmyzsh/tree/master/lib
diff --git a/.zsh/omz/compfix.zsh b/.zsh/omz/compfix.zsh
new file mode 100644
index 0000000..290760e
--- /dev/null
+++ b/.zsh/omz/compfix.zsh
@@ -0,0 +1,40 @@
+# Handle completions insecurities (i.e., completion-dependent directories with
+# insecure ownership or permissions) by:
+#
+# * Human-readably notifying the user of these insecurities.
+function handle_completion_insecurities() {
+ # List of the absolute paths of all unique insecure directories, split on
+ # newline from compaudit()'s output resembling:
+ #
+ # There are insecure directories:
+ # /usr/share/zsh/site-functions
+ # /usr/share/zsh/5.0.6/functions
+ # /usr/share/zsh
+ # /usr/share/zsh/5.0.6
+ #
+ # Since the ignorable first line is printed to stderr and thus not captured,
+ # stderr is squelched to prevent this output from leaking to the user.
+ local -aU insecure_dirs
+ insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} )
+
+ # If no such directories exist, get us out of here.
+ [[ -z "${insecure_dirs}" ]] && return
+
+ # List ownership and permissions of all insecure directories.
+ print "[oh-my-zsh] Insecure completion-dependent directories detected:"
+ ls -ld "${(@)insecure_dirs}"
+
+ cat <<EOD
+[omz] For safety, we will not load completions from these directories until
+[omz] you fix their permissions and ownership and restart zsh.
+[omz] See the above list for directories with group or other writability.
+[omz] To fix your permissions you can do so by disabling
+[omz] the write permission of "group" and "others" and making sure that the
+[omz] owner of these directories is either root or your current user.
+[omz] The following command may help:
+[omz] compaudit | xargs chmod g-w,o-w
+[omz] If the above didn't help or you want to skip the verification of
+[omz] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to
+[omz] "true" before oh-my-zsh is sourced in your zshrc file.
+EOD
+}
diff --git a/.zsh/omz/history.zsh b/.zsh/omz/history.zsh
new file mode 100644
index 0000000..7940769
--- /dev/null
+++ b/.zsh/omz/history.zsh
@@ -0,0 +1,40 @@
+## History wrapper
+function omz_history {
+ local clear list
+ zparseopts -E c=clear l=list
+
+ if [[ -n "$clear" ]]; then
+ # if -c provided, clobber the history file
+ echo -n >| "$HISTFILE"
+ fc -p "$HISTFILE"
+ echo >&2 History file deleted.
+ elif [[ -n "$list" ]]; then
+ # if -l provided, run as if calling `fc' directly
+ builtin fc "$@"
+ else
+ # unless a number is provided, show all history events (starting from 1)
+ [[ ${@[-1]-} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1
+ fi
+}
+
+# Timestamp format
+case ${HIST_STAMPS-} in
+ "mm/dd/yyyy") alias history='omz_history -f' ;;
+ "dd.mm.yyyy") alias history='omz_history -E' ;;
+ "yyyy-mm-dd") alias history='omz_history -i' ;;
+ "") alias history='omz_history' ;;
+ *) alias history="omz_history -t '$HIST_STAMPS'" ;;
+esac
+
+## History file configuration
+[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
+[ "$HISTSIZE" -lt 50000 ] && HISTSIZE=50000
+[ "$SAVEHIST" -lt 10000 ] && SAVEHIST=10000
+
+## History command configuration
+setopt extended_history # record timestamp of command in HISTFILE
+setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
+setopt hist_ignore_dups # ignore duplicated commands history list
+setopt hist_ignore_space # ignore commands that start with space
+setopt hist_verify # show command with history expansion to user before running it
+setopt share_history # share command history data
diff --git a/.zsh/omz/key-bindings.zsh b/.zsh/omz/key-bindings.zsh
new file mode 100644
index 0000000..aaa7304
--- /dev/null
+++ b/.zsh/omz/key-bindings.zsh
@@ -0,0 +1,138 @@
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets
+
+# Make sure that the terminal is in application mode when zle is active, since
+# only then values from $terminfo are valid
+if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
+ function zle-line-init() {
+ echoti smkx
+ }
+ function zle-line-finish() {
+ echoti rmkx
+ }
+ zle -N zle-line-init
+ zle -N zle-line-finish
+fi
+
+# Use emacs key bindings
+bindkey -e
+
+# [PageUp] - Up a line of history
+if [[ -n "${terminfo[kpp]}" ]]; then
+ bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
+ bindkey -M viins "${terminfo[kpp]}" up-line-or-history
+ bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
+fi
+# [PageDown] - Down a line of history
+if [[ -n "${terminfo[knp]}" ]]; then
+ bindkey -M emacs "${terminfo[knp]}" down-line-or-history
+ bindkey -M viins "${terminfo[knp]}" down-line-or-history
+ bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
+fi
+
+# Start typing + [Up-Arrow] - fuzzy find history forward
+if [[ -n "${terminfo[kcuu1]}" ]]; then
+ autoload -U up-line-or-beginning-search
+ zle -N up-line-or-beginning-search
+
+ bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search
+ bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search
+ bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search
+fi
+# Start typing + [Down-Arrow] - fuzzy find history backward
+if [[ -n "${terminfo[kcud1]}" ]]; then
+ autoload -U down-line-or-beginning-search
+ zle -N down-line-or-beginning-search
+
+ bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search
+ bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search
+ bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search
+fi
+
+# [Home] - Go to beginning of line
+if [[ -n "${terminfo[khome]}" ]]; then
+ bindkey -M emacs "${terminfo[khome]}" beginning-of-line
+ bindkey -M viins "${terminfo[khome]}" beginning-of-line
+ bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
+fi
+# [End] - Go to end of line
+if [[ -n "${terminfo[kend]}" ]]; then
+ bindkey -M emacs "${terminfo[kend]}" end-of-line
+ bindkey -M viins "${terminfo[kend]}" end-of-line
+ bindkey -M vicmd "${terminfo[kend]}" end-of-line
+fi
+
+# [Shift-Tab] - move through the completion menu backwards
+if [[ -n "${terminfo[kcbt]}" ]]; then
+ bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
+ bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
+ bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
+fi
+
+# [Backspace] - delete backward
+bindkey -M emacs '^?' backward-delete-char
+bindkey -M viins '^?' backward-delete-char
+bindkey -M vicmd '^?' backward-delete-char
+# [Delete] - delete forward
+if [[ -n "${terminfo[kdch1]}" ]]; then
+ bindkey -M emacs "${terminfo[kdch1]}" delete-char
+ bindkey -M viins "${terminfo[kdch1]}" delete-char
+ bindkey -M vicmd "${terminfo[kdch1]}" delete-char
+else
+ bindkey -M emacs "^[[3~" delete-char
+ bindkey -M viins "^[[3~" delete-char
+ bindkey -M vicmd "^[[3~" delete-char
+
+ bindkey -M emacs "^[3;5~" delete-char
+ bindkey -M viins "^[3;5~" delete-char
+ bindkey -M vicmd "^[3;5~" delete-char
+fi
+
+# [Ctrl-Delete] - delete whole forward-word
+bindkey -M emacs '^[[3;5~' kill-word
+bindkey -M viins '^[[3;5~' kill-word
+bindkey -M vicmd '^[[3;5~' kill-word
+
+# [Ctrl-RightArrow] - move forward one word
+bindkey -M emacs '^[[1;5C' forward-word
+bindkey -M viins '^[[1;5C' forward-word
+bindkey -M vicmd '^[[1;5C' forward-word
+# [Ctrl-LeftArrow] - move backward one word
+bindkey -M emacs '^[[1;5D' backward-word
+bindkey -M viins '^[[1;5D' backward-word
+bindkey -M vicmd '^[[1;5D' backward-word
+
+
+bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
+bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
+bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
+bindkey ' ' magic-space # [Space] - don't do history expansion
+
+
+# Edit the current command line in $EDITOR
+autoload -U edit-command-line
+zle -N edit-command-line
+bindkey '\C-x\C-e' edit-command-line
+
+# file rename magick
+bindkey "^[m" copy-prev-shell-word
+
+# consider emacs keybindings:
+
+#bindkey -e ## emacs key bindings
+#
+#bindkey '^[[A' up-line-or-search
+#bindkey '^[[B' down-line-or-search
+#bindkey '^[^[[C' emacs-forward-word
+#bindkey '^[^[[D' emacs-backward-word
+#
+#bindkey -s '^X^Z' '%-^M'
+#bindkey '^[e' expand-cmd-path
+#bindkey '^[^I' reverse-menu-complete
+#bindkey '^X^N' accept-and-infer-next-history
+#bindkey '^W' kill-region
+#bindkey '^I' complete-word
+## Fix weird sequence that rxvt produces
+#bindkey -s '^[[Z' '\t'
+#
diff --git a/.zsh/omz/spectrum.zsh b/.zsh/omz/spectrum.zsh
new file mode 100644
index 0000000..d5c22a8
--- /dev/null
+++ b/.zsh/omz/spectrum.zsh
@@ -0,0 +1,35 @@
+# A script to make using 256 colors in zsh less painful.
+# P.C. Shyamshankar <sykora@lucentbeing.com>
+# Copied from https://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
+
+typeset -AHg FX FG BG
+
+FX=(
+ reset "%{%}"
+ bold "%{%}" no-bold "%{%}"
+ italic "%{%}" no-italic "%{%}"
+ underline "%{%}" no-underline "%{%}"
+ blink "%{%}" no-blink "%{%}"
+ reverse "%{%}" no-reverse "%{%}"
+)
+
+for color in {000..255}; do
+ FG[$color]="%{[38;5;${color}m%}"
+ BG[$color]="%{[48;5;${color}m%}"
+done
+
+# Show all 256 colors with color number
+function spectrum_ls() {
+ local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
+ for code in {000..255}; do
+ print -P -- "$code: $FG[$code]$ZSH_SPECTRUM_TEXT%{$reset_color%}"
+ done
+}
+
+# Show all 256 colors where the background is set to specific color
+function spectrum_bls() {
+ local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
+ for code in {000..255}; do
+ print -P -- "$code: $BG[$code]$ZSH_SPECTRUM_TEXT%{$reset_color%}"
+ done
+}
diff --git a/.zsh/omz/termsupport.zsh b/.zsh/omz/termsupport.zsh
new file mode 100644
index 0000000..ef0d788
--- /dev/null
+++ b/.zsh/omz/termsupport.zsh
@@ -0,0 +1,137 @@
+# Set terminal window and tab/icon title
+#
+# usage: title short_tab_title [long_window_title]
+#
+# See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1
+# Fully supports screen, iterm, and probably most modern xterm and rxvt
+# (In screen, only short_tab_title is used)
+# Limited support for Apple Terminal (Terminal can't set window and tab separately)
+function title {
+ emulate -L zsh
+ setopt prompt_subst
+
+ # Don't set the title if inside emacs, unless using vterm
+ [[ -n "$INSIDE_EMACS" && "$INSIDE_EMACS" != vterm ]] && return
+
+ # if $2 is unset use $1 as default
+ # if it is set and empty, leave it as is
+ : ${2=$1}
+
+ case "$TERM" in
+ cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*)
+ print -Pn "\e]2;${2:q}\a" # set window name
+ print -Pn "\e]1;${1:q}\a" # set tab name
+ ;;
+ screen*|tmux*)
+ print -Pn "\ek${1:q}\e\\" # set screen hardstatus
+ ;;
+ *)
+ if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
+ print -Pn "\e]2;${2:q}\a" # set window name
+ print -Pn "\e]1;${1:q}\a" # set tab name
+ else
+ # Try to use terminfo to set the title if the feature is available
+ if (( ${+terminfo[fsl]} && ${+terminfo[tsl]} )); then
+ print -Pn "${terminfo[tsl]}$1${terminfo[fsl]}"
+ fi
+ fi
+ ;;
+ esac
+}
+
+ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
+ZSH_THEME_TERM_TITLE_IDLE="%n@%m:%~"
+# Avoid duplication of directory in terminals with independent dir display
+if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then
+ ZSH_THEME_TERM_TITLE_IDLE="%n@%m"
+fi
+
+# Runs before showing the prompt
+function omz_termsupport_precmd {
+ [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return
+ title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
+}
+
+# Runs before executing the command
+function omz_termsupport_preexec {
+ [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return
+
+ emulate -L zsh
+ setopt extended_glob
+
+ # split command into array of arguments
+ local -a cmdargs
+ cmdargs=("${(z)2}")
+ # if running fg, extract the command from the job description
+ if [[ "${cmdargs[1]}" = fg ]]; then
+ # get the job id from the first argument passed to the fg command
+ local job_id jobspec="${cmdargs[2]#%}"
+ # logic based on jobs arguments:
+ # http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs
+ # https://www.zsh.org/mla/users/2007/msg00704.html
+ case "$jobspec" in
+ <->) # %number argument:
+ # use the same <number> passed as an argument
+ job_id=${jobspec} ;;
+ ""|%|+) # empty, %% or %+ argument:
+ # use the current job, which appears with a + in $jobstates:
+ # suspended:+:5071=suspended (tty output)
+ job_id=${(k)jobstates[(r)*:+:*]} ;;
+ -) # %- argument:
+ # use the previous job, which appears with a - in $jobstates:
+ # suspended:-:6493=suspended (signal)
+ job_id=${(k)jobstates[(r)*:-:*]} ;;
+ [?]*) # %?string argument:
+ # use $jobtexts to match for a job whose command *contains* <string>
+ job_id=${(k)jobtexts[(r)*${(Q)jobspec}*]} ;;
+ *) # %string argument:
+ # use $jobtexts to match for a job whose command *starts with* <string>
+ job_id=${(k)jobtexts[(r)${(Q)jobspec}*]} ;;
+ esac
+
+ # override preexec function arguments with job command
+ if [[ -n "${jobtexts[$job_id]}" ]]; then
+ 1="${jobtexts[$job_id]}"
+ 2="${jobtexts[$job_id]}"
+ fi
+ fi
+
+ # cmd name only, or if this is sudo or ssh, the next cmd
+ local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}
+ local LINE="${2:gs/%/%%}"
+
+ title '$CMD' '%100>...>$LINE%<<'
+}
+
+autoload -Uz add-zsh-hook
+
+if [[ -z "$INSIDE_EMACS" || "$INSIDE_EMACS" = vterm ]]; then
+ add-zsh-hook precmd omz_termsupport_precmd
+ add-zsh-hook preexec omz_termsupport_preexec
+fi
+
+# Keep Apple Terminal.app's current working directory updated
+# Based on this answer: https://superuser.com/a/315029
+# With extra fixes to handle multibyte chars and non-UTF-8 locales
+
+if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
+ # Emits the control sequence to notify Terminal.app of the cwd
+ # Identifies the directory using a file: URI scheme, including
+ # the host name to disambiguate local vs. remote paths.
+ function update_terminalapp_cwd() {
+ emulate -L zsh
+
+ # Percent-encode the host and path names.
+ local URL_HOST URL_PATH
+ URL_HOST="$(omz_urlencode -P $HOST)" || return 1
+ URL_PATH="$(omz_urlencode -P $PWD)" || return 1
+
+ # Undocumented Terminal.app-specific control sequence
+ printf '\e]7;%s\a' "file://$URL_HOST$URL_PATH"
+ }
+
+ # Use a precmd hook instead of a chpwd hook to avoid contaminating output
+ add-zsh-hook precmd update_terminalapp_cwd
+ # Run once to get initial cwd set
+ update_terminalapp_cwd
+fi
diff --git a/.zsh/zsh-history-substring-search b/.zsh/zsh-history-substring-search
new file mode 160000
+Subproject 4abed97b6e67eb5590b39bcd59080aa23192f25
diff --git a/.zsh/zsh-syntax-highlighting b/.zsh/zsh-syntax-highlighting
new file mode 160000
+Subproject 1a9264bc661b3d52756916bf9ec3f41687d64db