BIG UPDATE: zsh: moved lots of things out of the zshrc
This commit is contained in:
parent
a96c4215ed
commit
1eae827160
4 changed files with 81 additions and 61 deletions
6
.config/shell/bin/calc
Executable file
6
.config/shell/bin/calc
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/zsh
|
||||
# Note: this is compatible with `sh`, but because
|
||||
# `sh` does not handle floats, I'm choosing `zsh`.
|
||||
|
||||
# Believe it or not, zsh makes for a fine calculator
|
||||
echo $(($*))
|
|
@ -1,7 +1,13 @@
|
|||
#!/bin/sh
|
||||
# Blake's environment variables
|
||||
# This file should be compatible with standard sh
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"${XDG_CONFIG_HOME:-$HOME/.config}/shell"}"
|
||||
if ! [ -d "$SHELL_CONFIG_DIR" ]; then
|
||||
echo "FATAL ERROR: \$SHELL_CONFIG_DIR is not set to a real directory: $SHELL_CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# Intelligently set $EDITOR
|
||||
if command -v nvim > /dev/null;then
|
||||
export EDITOR=nvim
|
||||
|
@ -10,46 +16,60 @@ elif command -v vim > /dev/null;then
|
|||
elif command -v vi > /dev/null;then
|
||||
export EDITOR=vi
|
||||
fi
|
||||
|
||||
export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"${XDG_CONFIG_HOME:-$HOME/.config}/shell"}"
|
||||
export PATH="$PATH:${XDG_DATA_HOME:-$HOME/.local}/bin:$SHELL_CONFIG_DIR/bin"
|
||||
export SYSTEMD_EDITOR="$EDITOR"
|
||||
|
||||
|
||||
export PATH="$PATH:${XDG_DATA_HOME:-$HOME/.local}/bin:$SHELL_CONFIG_DIR/bin"
|
||||
|
||||
|
||||
export LSCOLORS="Gxfxcxdxbxegedabagacad"
|
||||
|
||||
|
||||
export ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/zsh"
|
||||
# Don't add extra space to the right side of the prompt
|
||||
export ZLE_RPROMPT_INDENT=0
|
||||
|
||||
export ZINIT_HOME_DIR="${XDG_DATA_HOME:-$HOME/.local}/share/zinit"
|
||||
|
||||
|
||||
# Set documents directory (auto set to the repo the file ~/todo points to is in)
|
||||
# shellcheck disable=SC2155
|
||||
[ -h ~/todo ] && export DOCS_DIR="$(git -C "$(dirname "$(realpath ~/todo)" 2>&1)" rev-parse --show-toplevel | head -1)"
|
||||
[ -h ~/todo ] && export DOCS_DIR="$(git -C "$(dirname "$(realpath ~/todo)" 2>&1)" rev-parse --show-toplevel | head -1)" || DOCS_DIR="$HOME/Documents/docs/"
|
||||
|
||||
## Working directory save settings (see things at bottom of zshrc)
|
||||
WORKING_DIR_SAVE_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/last-working-dir"
|
||||
# make the dir for the file if needed
|
||||
! test -d "$(dirname "$WORKING_DIR_SAVE_FILE")" && mkdir -p "$(dirname "$WORKING_DIR_SAVE_FILE")"
|
||||
test -d "$(dirname "$WORKING_DIR_SAVE_FILE")" || mkdir -p "$(dirname "$WORKING_DIR_SAVE_FILE")"
|
||||
|
||||
# Plugin setting >>>
|
||||
# ZSH plugin settings >>>
|
||||
# ZSH Vi Mode
|
||||
export ZVM_VI_HIGHLIGHT_FOREGROUND=#BBC2CF
|
||||
export ZVM_VI_HIGHLIGHT_BACKGROUND=#515860
|
||||
# ZVM_VI_HIGHLIGHT_EXTRASTYLE=bold,underline # bold and underline
|
||||
|
||||
# vim-mode cursor
|
||||
# syntax: "[color] [blinking] [style]" see: https://github.com/softmoth/zsh-vim-mode#mode-in-prompt
|
||||
export MODE_CURSOR_VIINS="blinking bar"
|
||||
export MODE_CURSOR_REPLACE="steady bar"
|
||||
export MODE_CURSOR_VICMD="steady block"
|
||||
export MODE_CURSOR_SEARCH="blinking underline"
|
||||
export MODE_CURSOR_VISUAL="steady block"
|
||||
export MODE_CURSOR_VLINE="steady block"
|
||||
|
||||
# OMZ Completion
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
|
||||
# Powerlevel 10k
|
||||
export POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD="${POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD:-true}"
|
||||
export POWERLEVEL9K_INSTANT_PROMPT=quiet
|
||||
export POWERLEVEL9K_INSTANT_PROMPT="${POWERLEVEL9K_INSTANT_PROMPT:-quiet}"
|
||||
# TODO?: maybe add a bit of code to select a random theme if none is detected (make sure to disable instant prompt if this happens)
|
||||
export P10K_CONFIG_LOCATION="$SHELL_CONFIG_DIR/p10k/current"
|
||||
# <<<
|
||||
|
||||
###########################################
|
||||
### Directory and file quick access ###
|
||||
###########################################
|
||||
SCD="$SHELL_CONFIG_DIR"
|
||||
DD="/home/blake/Documents/docs/"
|
||||
S="$SHELL_CONFIG_DIR"
|
||||
DD="$DOCS_DIR"
|
||||
|
||||
# vim:fdm=marker:fmr=>>>,<<<:et:ft=sh:sw=3
|
||||
# vim:fdm=marker:fmr=>>>,<<<:et:ft=sh:sw=3:ts=3
|
||||
|
|
13
.config/shell/functions/mkcd
Normal file
13
.config/shell/functions/mkcd
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
|
||||
# make a directory and cd into it
|
||||
mkcd() {
|
||||
mkdir -p "$1" || error "$0" $LINENO
|
||||
cd "$1" || error "$0" $LINENO
|
||||
}
|
||||
|
||||
error() {
|
||||
ERROR_CODE="$?"
|
||||
>&2 echo "($1) An error occurred on line number $2"
|
||||
return $ERROR_CODE
|
||||
}
|
83
.zshrc
83
.zshrc
|
@ -4,17 +4,20 @@
|
|||
# shellcheck disable=SC1090,SC2296,SC1091,SC2154,SC2015
|
||||
|
||||
# Helper function to source files.
|
||||
# Usage: careful_source "file" \
|
||||
# "Error message" \
|
||||
# $LINENO \
|
||||
# [optional: test to run (-f, -x, -e)] \
|
||||
# ["optional: operation (source, exec, command or nothing)"] \
|
||||
# Usage:
|
||||
# careful_source "file" \
|
||||
# [optional: "Error message"] \
|
||||
# [optional: $LINENO] (use this if you have an error message) \
|
||||
# [optional: test to run] (-f, -x, -e) \
|
||||
# [optional: operation (source, exec, command or nothing)] \
|
||||
careful_source() {
|
||||
if test "${4:--f}" "$1"; then
|
||||
${5:-source} "$1"
|
||||
else
|
||||
echo "$2" >&2
|
||||
echo "Line number: $3" >&2
|
||||
if test -n "${2+foo}"; then
|
||||
echo -e "$2" >&2
|
||||
echo "Line number: $3" >&2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -29,7 +32,7 @@ error() {
|
|||
echo -ne '\e[5 q'
|
||||
|
||||
### <<<
|
||||
### Basic shell configuration >>>
|
||||
### Generic shell configuration >>>
|
||||
### Environment variables >>>
|
||||
|
||||
# This has to go here because otherwise we don't know where the config files are :|
|
||||
|
@ -39,12 +42,16 @@ export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"${XDG_CONFIG_HOME:-$HOME/.config}/
|
|||
${SKIP_ENV:-false} || careful_source "$SHELL_CONFIG_DIR/env" \
|
||||
"Error: could not locate env file. Things could be messed up. Check that \$SHELL_CONFIG_DIR/env exists." $LINENO
|
||||
|
||||
${SKIP_LOCAL_ENV:-false} || careful_source "$SHELL_CONFIG_DIR/local/env" \
|
||||
|
||||
# <<<
|
||||
### Aliases >>>
|
||||
# Source the alias file
|
||||
${SKIP_ALIASES:-false} || careful_source "$SHELL_CONFIG_DIR/aliases" \
|
||||
"Error: could not locate alias file. You may not have any aliases. Check that \$SHELL_CONFIG_DIR points to the right place." $LINENO
|
||||
|
||||
${SKIP_LOCAL_ALIASES:-false} || careful_source "$SHELL_CONFIG_DIR/local/aliases"
|
||||
|
||||
# <<<
|
||||
### Functions >>>
|
||||
# Organization: functions that are really short should be put here, otherwise
|
||||
|
@ -61,37 +68,17 @@ fnupdate() {
|
|||
source "$FN"
|
||||
done
|
||||
}
|
||||
fnupdate
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
mkcd() {
|
||||
mkdir -p "$1" || error $LINENO
|
||||
cd "$1" || error $LINENO
|
||||
}
|
||||
|
||||
# believe it or not, zsh makes for a fine calculator
|
||||
calc() {
|
||||
echo $(($*))
|
||||
}
|
||||
${SKIP_FUNCTIONS:-false} || fnupdate
|
||||
|
||||
# <<<
|
||||
# <<<
|
||||
### Apply breaking changes with the update script >>>
|
||||
${SKIP_UPDATE:-false} || careful_source "$SHELL_CONFIG_DIR/updates" \
|
||||
${SKIP_UPDATES:-false} || careful_source "$SHELL_CONFIG_DIR/updates" \
|
||||
"Error: failed to run update script" $LINENO -x "command"
|
||||
### <<<
|
||||
|
||||
### Plugins >>>
|
||||
{
|
||||
# plugin config >>>
|
||||
# vim-mode cursor
|
||||
# syntax: "[color] [blinking] [style]" see: https://github.com/softmoth/zsh-vim-mode#mode-in-prompt
|
||||
export MODE_CURSOR_VIINS="blinking bar"
|
||||
export MODE_CURSOR_REPLACE="steady bar"
|
||||
export MODE_CURSOR_VICMD="steady block"
|
||||
export MODE_CURSOR_SEARCH="blinking underline"
|
||||
export MODE_CURSOR_VISUAL="steady block"
|
||||
export MODE_CURSOR_VLINE="steady block"
|
||||
# <<<
|
||||
${SKIP_PLUGINS:-false} || {
|
||||
# Load zinit >>>
|
||||
{
|
||||
# Install zinit if not installed
|
||||
|
@ -143,37 +130,32 @@ ${SKIP_UPDATE:-false} || careful_source "$SHELL_CONFIG_DIR/updates" \
|
|||
|
||||
## Theme
|
||||
# terminal colors
|
||||
if [[ -f "$SHELL_CONFIG_DIR/colors.sh" ]];then
|
||||
# custom colors
|
||||
source "$SHELL_CONFIG_DIR/colors.sh"
|
||||
else
|
||||
# onedark shell colors
|
||||
careful_source "$SHELL_CONFIG_DIR/colors.sh" ||
|
||||
zinit snippet 'https://github.com/chriskempson/base16-shell/blob/master/scripts/base16-onedark.sh'
|
||||
fi
|
||||
|
||||
# LS Colors
|
||||
zinit ice atclone"dircolors -b ./src/dir_colors > colors.zsh" \
|
||||
atpull'%atclone' pick"colors.zsh" nocompile'!' \
|
||||
atload'zstyle ":completion:*" list-colors “${(s.:.)LS_COLORS}”'
|
||||
zinit light arcticicestudio/nord-dircolors
|
||||
|
||||
# prompt
|
||||
zinit load "romkatv/powerlevel10k"
|
||||
if [[ -e "$P10K_CONFIG_LOCATION" ]]; then
|
||||
source "$P10K_CONFIG_LOCATION"
|
||||
else
|
||||
>&2 echo "No p10k theme selected. Please use \`p10k configure\` to make one or select an existing one like this:"
|
||||
>&2 echo " ln -s $SHELL_CONFIG_DIR/p10k/colorful-angular.p10k.zsh $SHELL_CONFIG_DIR/p10k/current"
|
||||
fi
|
||||
careful_source "$P10K_CONFIG_LOCATION" \
|
||||
"No p10k theme selected. Please use \`p10k configure\` to make one or select an existing one like this:
|
||||
ln -s $SHELL_CONFIG_DIR/p10k/colorful-angular.p10k.zsh $SHELL_CONFIG_DIR/p10k/current" $LINENO
|
||||
|
||||
|
||||
# clear plugin options set at the start of this block
|
||||
unalias zinit
|
||||
|
||||
# just gonna sneak this in here, too
|
||||
# just gonna sneak this in here too
|
||||
alias zi > /dev/null && unalias zi zpl zini zplg which-command run-help fsh-alias
|
||||
}
|
||||
# <<<
|
||||
}
|
||||
# <<<
|
||||
### General ZSH configuration >>>
|
||||
### ZSH-specific configuration >>>
|
||||
# This section is (mostly) From manjaro's "manjaro-zsh-config" (/usr/share/zsh/manjaro-zsh-config)
|
||||
|
||||
[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
|
||||
|
@ -183,7 +165,7 @@ ${SKIP_UPDATE:-false} || careful_source "$SHELL_CONFIG_DIR/updates" \
|
|||
# setopt correct # Auto correct mistakes
|
||||
setopt extendedglob # Extended globbing. Allows using regular expressions with *
|
||||
[ -z "$TERMUX_VERSION" ] &&
|
||||
setopt nocaseglob # Case insensitive globbing (and fix for termux)
|
||||
setopt nocaseglob # Case insensitive globbing (and fix for termux)
|
||||
setopt rcexpandparam # Array expension with parameters
|
||||
setopt checkjobs # Warn about running processes when exiting
|
||||
setopt numericglobsort # Sort filenames numerically when it makes sense
|
||||
|
@ -225,7 +207,7 @@ ${SKIP_UPDATE:-false} || careful_source "$SHELL_CONFIG_DIR/updates" \
|
|||
WORDCHARS=${WORDCHARS//\/[&.;]} # Don't consider certain characters part of the word
|
||||
}
|
||||
# <<<
|
||||
## Keybindings >>>
|
||||
## Keybinds >>>
|
||||
bindkey -v # Enable Vi mode
|
||||
bindkey '^[[7~' beginning-of-line # Home key
|
||||
bindkey '^[[H' beginning-of-line # Home key
|
||||
|
@ -315,7 +297,6 @@ load_working_dir && cd - > /dev/null || echo -n
|
|||
# <<<
|
||||
|
||||
# Optionally source another zshrc
|
||||
[ -f "$SHELL_CONFIG_DIR/zshrc.local" ] && source "$SHELL_CONFIG_DIR/zshrc.local" || true
|
||||
|
||||
# vim:fdm=marker:fmr=>>>,<<<:et:ft=bash:sw=3
|
||||
${SKIP_LOCAL_ZSHRC:-false} || careful_source "$SHELL_CONFIG_DIR/local/zshrc"
|
||||
|
||||
# vim:fdm=marker:fmr=>>>,<<<:et:ft=bash:sw=3:ts=3
|
||||
|
|
Loading…
Add table
Reference in a new issue