1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-09-25 01:10:46 +00:00
ohmyzsh/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh
Philipp Schmitt 068feca15d
feat(zsh-navigation-tools)!: update to zdharma-continuum fork (#10402)
BREAKING CHANGE: the `zsh-navigation-tools` plugin now bundles the version from the
zdharma-continuum project, which republished the projects that psprint deleted (we
don't yet know yet why). In theory this change doesn't break anything, but be aware
of the change and that the upstream repository now lives somewhere else.

Source: https://github.com/zdharma-continuum/zsh-navigation-tools/commit/67b24e1
2021-12-24 18:09:01 +01:00

76 lines
2.3 KiB
Bash

#!/usr/bin/env zsh
#
# No plugin manager is needed to use this file. All that is needed is adding:
# source {where-znt-is}/zsh-navigation-tools.plugin.zsh
#
# to ~/.zshrc.
#
# According to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
export ZNT_REPO_DIR="${0:h}"
export ZNT_CONFIG_DIR="$HOME/.config/znt"
#
# Update FPATH if:
# 1. Not loading with a plugin manager
# 2. Not having fpath already updated
#
if [[ ${zsh_loaded_plugins[-1]} != */zsh-navigation-tools && -z ${fpath[(r)${0:h}]} ]]
then
fpath+=( "${0:h}" )
fi
#
# Copy configs
#
if [[ ! -d "$HOME/.config" ]]; then
command mkdir "$HOME/.config"
fi
if [[ ! -d "$ZNT_CONFIG_DIR" ]]; then
command mkdir "$ZNT_CONFIG_DIR"
fi
# 9 files
unset __ZNT_CONFIG_FILES
typeset -ga __ZNT_CONFIG_FILES
set +A __ZNT_CONFIG_FILES n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf
# Check for random 2 files if they exist
# This will shift 0 - 7 elements
shift $(( RANDOM % 8 )) __ZNT_CONFIG_FILES
if [[ ! -f "$ZNT_CONFIG_DIR/${__ZNT_CONFIG_FILES[1]}" || ! -f "$ZNT_CONFIG_DIR/${__ZNT_CONFIG_FILES[2]}" ]]; then
# Something changed - examine every file
set +A __ZNT_CONFIG_FILES n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf
unset __ZNT_CONFIG_FILE
typeset -g __ZNT_CONFIG_FILE
for __ZNT_CONFIG_FILE in "${__ZNT_CONFIG_FILES[@]}"; do
if [[ ! -f "$ZNT_CONFIG_DIR/$__ZNT_CONFIG_FILE" ]]; then
command cp "$ZNT_REPO_DIR/.config/znt/$__ZNT_CONFIG_FILE" "$ZNT_CONFIG_DIR"
fi
done
unset __ZNT_CONFIG_FILE
fi
unset __ZNT_CONFIG_FILES
#
# Load functions
#
autoload n-aliases n-cd n-env n-functions n-history n-kill n-list n-list-draw n-list-input n-options n-panelize n-help
autoload znt-usetty-wrapper znt-history-widget znt-cd-widget znt-kill-widget
alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-history
alias nkill=n-kill noptions=n-options npanelize=n-panelize nhelp=n-help
zle -N znt-history-widget
bindkey '^R' znt-history-widget
setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS
zstyle ':completion::complete:n-kill::bits' matcher 'r:|=** l:|=*'