diff --git a/zsh/.config/zsh/.zprofile b/zsh-linux/.config/zsh-linux/.zprofile similarity index 100% rename from zsh/.config/zsh/.zprofile rename to zsh-linux/.config/zsh-linux/.zprofile diff --git a/zsh/.config/zsh/.zshenv b/zsh-linux/.config/zsh-linux/.zshenv similarity index 100% rename from zsh/.config/zsh/.zshenv rename to zsh-linux/.config/zsh-linux/.zshenv diff --git a/zsh-linux/.config/zsh-linux/.zshrc b/zsh-linux/.config/zsh-linux/.zshrc new file mode 100755 index 0000000..bc72c77 --- /dev/null +++ b/zsh-linux/.config/zsh-linux/.zshrc @@ -0,0 +1,65 @@ +# User-specific zsh configuration + +# Default umask value +umask 0027 + +# ========== Functions ========== +# Fuzzy-find a file and open it in less +_run_fless() { + fless && zle reset-prompt +} + +zle -N _run_fless +bindkey -M viins '^n' _run_fless + +# Fuzzy find a file and then edit it + +_run_fedit() { + fedit && zle reset-prompt +} + +_run_etcedit() { + fedit --etc && zle reset-prompt +} + +zle -N _run_fedit +bindkey -M viins '^o' _run_fedit + +zle -N _run_etcedit +bindkey -M viins '^e' _run_etcedit + +# Fuzzy cd from anywhere +# Dependencies +# * fzf +# * mlocate + +cf() { + [[ -z "${*}" ]] && return 1 + [[ ! -x $(which fzf) ]] && return 1 + + #dir="$(locate --all --ignore-case --null -- "${@}" | fzf --read0 --select-1 --exit-0)" + #dir="$(locate -0i -- "${@}" | fzf --read0 --select-1 --exit-0)" + dir="$(fd --ignore-file "${XDG_CONFIG_HOME}/fd_ignore" --print0 --type d -- "${@}" | fzf --read0 --select-1 --exit-0)" + + [[ -z "${dir}" ]] && return 1 + + if [[ -f "${dir}" ]]; then + cd "${dir%/*}" + else + cd "${dir}" + fi +} + +autoload -Uz cf + +# Make a directory, then change into it + +mkcd() { + [[ ! -d "${1}" ]] && mkdir --parents -- "${1}" + cd "${1}" || exit +} + +autoload -Uz mkcd + +[ -f "${ZDOTDIR}/conf.d/fzf.zsh" ] && source "${ZDOTDIR}/conf.d/fzf.zsh" +test -e /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh && source /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh || true diff --git a/zsh/.config/zsh/conf.d/00-aliases.zsh b/zsh-linux/.config/zsh-linux/conf.d/00-aliases.zsh similarity index 100% rename from zsh/.config/zsh/conf.d/00-aliases.zsh rename to zsh-linux/.config/zsh-linux/conf.d/00-aliases.zsh diff --git a/zsh/.config/zsh/conf.d/fzf.zsh b/zsh-linux/.config/zsh-linux/conf.d/fzf.zsh similarity index 100% rename from zsh/.config/zsh/conf.d/fzf.zsh rename to zsh-linux/.config/zsh-linux/conf.d/fzf.zsh diff --git a/zsh/.config/zsh/conf.d/path.zsh b/zsh-linux/.config/zsh-linux/conf.d/path.zsh similarity index 100% rename from zsh/.config/zsh/conf.d/path.zsh rename to zsh-linux/.config/zsh-linux/conf.d/path.zsh diff --git a/zsh/.config/zsh/conf.d/ssh-login.zsh b/zsh-linux/.config/zsh-linux/conf.d/ssh-login.zsh similarity index 100% rename from zsh/.config/zsh/conf.d/ssh-login.zsh rename to zsh-linux/.config/zsh-linux/conf.d/ssh-login.zsh diff --git a/zsh/.config/zsh/.zshrc b/zsh/.config/zsh/.zshrc index bc72c77..ff0c4cf 100755 --- a/zsh/.config/zsh/.zshrc +++ b/zsh/.config/zsh/.zshrc @@ -61,5 +61,15 @@ mkcd() { autoload -Uz mkcd -[ -f "${ZDOTDIR}/conf.d/fzf.zsh" ] && source "${ZDOTDIR}/conf.d/fzf.zsh" -test -e /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh && source /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh || true +# Detect OS to autoload uncommon config files +if [[ "$(uname -a)" == "Darwin" ]]; then + for dotfile in "${XDG_CONFIG_HOME}"/zsh-macos/**/*; do + source $dotfile + done + [ -f "${ZDOTDIR}/conf.d/fzf.zsh" ] && source "${ZDOTDIR}/conf.d/fzf.zsh" + test -e /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh && source /Users/etorres/.config/zsh/.iterm2_shell_integration.zsh || true +else + for dotfile in "${XDG_CONFIG_HOME}"/zsh-linux/**/*; do + source $dotfile + done +fi diff --git a/zsh/.config/zsh/conf.d/README b/zsh/.config/zsh/conf.d/README new file mode 100644 index 0000000..515de47 --- /dev/null +++ b/zsh/.config/zsh/conf.d/README @@ -0,0 +1 @@ +This directory (zsh) contains files that are common between all OS installations