From ee7de5f557b9f3ce937affb90ceaeae4255f922f Mon Sep 17 00:00:00 2001
From: PowerUser64 <blakelysnorth@gmail.com>
Date: Sun, 26 Dec 2021 16:15:56 -0800
Subject: [PATCH] zsh: almost all functions are now scripts

---
 .zshrc | 273 +--------------------------------------------------------
 1 file changed, 4 insertions(+), 269 deletions(-)

diff --git a/.zshrc b/.zshrc
index 4fc5b12..512bacb 100644
--- a/.zshrc
+++ b/.zshrc
@@ -13,7 +13,7 @@
       export EDITOR=vi
    fi
 
-   export PATH="$PATH:${XDG_DATA_HOME:-$HOME/.local/bin}"
+   export PATH="$PATH:${XDG_DATA_HOME:-$HOME/.local/bin}:${XDG_CONFIG_HOME:-$HOME/.config/shell/bin}"
    export SYSTEMD_EDITOR="$EDITOR"
 
    export LSCOLORS="Gxfxcxdxbxegedabagacad"
@@ -21,6 +21,9 @@
 
    export ZINIT_HOME_DIR="$HOME/.local/share/zinit"
 
+   # Don't add extra space to the right side of the prompt
+   ZLE_RPROMPT_INDENT=0
+
    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")"
@@ -194,159 +197,6 @@
 # <<<
 ### Functions >>>
 {
-   # cd search: cd to a directory, given part of its name
-   # (also can take arguments for an `fd` commnd)
-   # (also can cd to a file if `-t f` is passed)
-   cds() {
-      if ! [ -z "$1" ];then
-         DIR="$(fd --max-results=1 -t d $@)"
-         if [ -f "$DIR" ];then
-            cd "$(dirname "$DIR")" && pwd
-         else
-            cd "$DIR" && pwd
-         fi
-      else
-         echo "$0: no arguments provided"
-         return 1
-      fi
-   }
-
-   # cd find (interactive): cd to the containing dir of a file, or inside a folder, given part of its name
-   # Basically, an interactive version of what's above
-   # can take an `fd` command
-   # requires that `fzy` is installed
-   cdf() {
-      DIR="$(fd $@ | fzy)"
-      if [ -f "$DIR" ];then
-         cd "$(dirname "$DIR")" && pwd
-      else
-         cd "$DIR" && pwd
-      fi
-   }
-
-   # cd all: opens a new shell in each of the directories below the one you're in, so
-   # you can execute commands in them until you type 'exit'
-   # If I use this enough, I may make something that can do more
-   # Ideas for what it could do in the future:
-   # - somehow record typed commands so they can be automatically repeated like a macro
-   #     - maybe get the length of the histfile before and after, executing the last X number of commands
-   # - Maybe just add an argument that takes a command and executes it in all dirs
-   # (although that wouldn't be as good as recording actions bc it's easy to do
-   # that by just writing a for loop)
-   cda() {
-      for DIR in *; do
-         (cd "$DIR" && zsh)
-      done
-   }
-
-   # edit file: Uses fzy to locate a file, and opens it in your favorite text editor
-   # Takes arguments for `fd`
-   ef() {
-      "$EDITOR" "$(fd $@ | fzy)"
-   }
-
-   # toggles whether a file or group of files is executable
-   chx() {
-      for FILE in "$@";do
-         if [  -x "$FILE" ];then
-            chmod -x "$FILE" &&
-            echo -e "$FILE: -x"
-         elif ! [ -x "$FILE" ];then
-            chmod +x "$FILE" &&
-            echo -e "$FILE: +x"
-         else
-            echo "error: file $FILE does not exist" >&2
-         fi
-      done
-   }
-
-   launch() {
-      $@ > /dev/null 2>&1 &
-      disown
-   }
-
-   # a simple way to manage your todo list
-   # Usage:
-   #  todo                    -- pull latest repo version and edit ~/todo
-   #  todo [any git command]  -- manage todo for easy syncing, assuming ~/todo is
-   #                                a symlink that points to a file in a git repo
-   #
-   # Suggested use: make a git repo for holding your todo list, then make
-   # a symlink called 'todo' that points to your todo list in your home directory
-   #
-   todo() {
-      todo_dir="$(dirname "$(realpath ~/todo)")"
-      todo_file="$(realpath ~/todo)"
-      if [ -z "$@" ];then
-         ( # subshell to protect against directory changes
-         cd "$todo_dir"
-
-         # pull the latest commits
-         git rev-parse &&
-            git pull
-
-         # open the file
-         "$EDITOR" "$todo_file"
-
-         # commit and push the file if it's in a git repo and the file has changed
-         if git rev-parse && ! git diff --exit-code "$todo_file"; then
-            git commit "$todo_file" -m 'todo' &&
-               git push
-         fi
-         )
-
-      elif [ "$@" = "cd" ]; then
-         cd "$todo_dir"
-
-      else
-         git -C "$todo_dir" $@
-
-      fi
-   }
-
-   # Simple extraction script. Taken from manjaro's .bashrc
-   ex() {
-      if [ -f $1 ] ; then
-         case $1 in
-            *.tar.bz2)   tar xjf $1   ;;
-            *.tar.gz)    tar xzf $1   ;;
-            *.bz2)       bunzip2 $1   ;;
-            *.rar)       unrar x $1   ;;
-            *.gz)        gunzip $1    ;;
-            *.tar)       tar xf $1    ;;
-            *.tbz2)      tar xjf $1   ;;
-            *.tgz)       tar xzf $1   ;;
-            *.zip)       unzip $1     ;;
-            *.Z)         uncompress $1;;
-            *.7z)        7z x $1      ;;
-            *)           echo "'$1' cannot be extracted via ex()" ;;
-         esac
-      else
-         echo "'$1' is not a valid file"
-      fi
-   }
-
-   # TODO: encode the url to fix things like spaces using something like https://stackoverflow.com/a/10660730/11162605
-   # usage: sitepath <path to file>
-   # usage: sitepath <file to find>
-   # usage: sitepath
-   # usage: sitepath <fd commands> -- you can search with 'fd' if you put in a command
-   sitepath() {
-      # account for if there is no urlencode command
-      URLENCODE=urlencode
-      if ! command -v urlencode > /dev/null 2>&1;then
-         URLENCODE=cat
-      fi
-      # If there is no input, make the input the current directory
-      [ -z ${1+x} ] && 1="$(pwd)"
-      FILEPATH="$(([ -e "$1" ] && readlink -f "$1") || fd $@ /home/blake/docker/blakenorth.net/site)"
-
-      # change all file paths into urls
-      echo "$FILEPATH" |
-         grep -o 'site.*' |
-         sed 's+^site+https://blakenorth.net+g' |
-         $URLENCODE # if you need this, I am using dead10ck/urlencode (cargo install urlencode)
-   }
 
    # for sending error messages from functions and whatnot
    error() {
@@ -355,96 +205,6 @@
       return $ERROR_CODE
    }
 
-   # prcolors(): Display all colors in a few different ways >>>
-   # TODO: change this to make it not just a few scripts smashed together
-   prcolors() {
-      [ -z "$1" ] && 1=0
-      if [ $1 -eq '1' ];then
-      # Taken from manjaro's bashrc >>>
-      local fgc bgc vals seq0
-
-      printf "Color escapes are %s\n" '\e[${value};...;${value}m'
-      printf "Values 30..37 are \e[33mforeground colors\e[m\n"
-      printf "Values 40..47 are \e[43mbackground colors\e[m\n"
-      printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"
-
-      # foreground colors
-      for fgc in {30..37}; do
-         # background colors
-         for bgc in {40..47}; do
-            fgc=${fgc#37} # white
-            bgc=${bgc#40} # black
-
-            vals="${fgc:+$fgc;}${bgc}"
-            vals=${vals%%;}
-
-            seq0="${vals:+\e[${vals}m}"
-            printf "  %-9s" "${seq0:-(default)}"
-            printf " ${seq0}TEXT\e[m"
-            printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
-         done
-         echo; echo
-      done
-      # <<<
-   elif [ $1 -eq '2' ];then
-      # from base16shell >>>
-      ansi_mappings=(
-         Red               Green
-         Yellow            Blue
-         Magenta           Cyan
-         White             Black
-         Bright_Red        Bright_Green
-         Bright_Yellow     Bright_Blue
-         Bright_Magenta    Bright_Cyan
-         Bright_White      Bright_Black
-      )
-      colors=(
-         base00 base08
-         base0B base0A
-         base0D base0E
-         base0C base05
-         base03 base08
-         base0B base0A
-         base0D base0E
-         base0C base07
-         base09 base0F
-         base01 base02
-         base04 base06
-      )
-      for padded_value in `seq -w 0 21`; do
-         color_variable="color${padded_value}"
-         eval current_color=\$${color_variable}
-         current_color=$(echo ${current_color//\//} | tr '[:lower:]' '[:upper:]') # get rid of slashes, and uppercase
-         non_padded_value=$((10#$padded_value))
-         base16_color_name=${colors[$non_padded_value]}
-         current_color_label=${current_color:-unknown}
-         ansi_label=${ansi_mappings[$non_padded_value]}
-         block=$(printf "\x1b[48;5;${non_padded_value}m___________________________")
-         foreground=$(printf "\x1b[38;5;${non_padded_value}m$color_variable")
-         printf "%s %s %s %-30s %s\x1b[0m\n" $foreground $base16_color_name $current_color_label ${ansi_label:-""} $block
-      done;
-      #if [ $# -eq 1 ]; then
-      #   printf "To restore current theme, source ~/.base16_theme or reopen your terminal\n"
-      #fi
-      # <<<
-   elif [ $1 -eq '3' ];then
-      # Similar to above, but does 256-bit colors. >>>
-      # Taken from this: https://github.com/romkatv/powerlevel10k#set-colors-through-Powerlevel10k-configuration-parameters
-      for i in {0..255}; do
-         print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}
-      done
-      # <<<
-   else
-      cat <<-EOF
-			Usage: prcolors <printing method number>
-			   1: Manjaro bashrc -- for checking text readability
-			   2: base26shell    -- for seeing the 16 set terminal colors
-			   3: 256            -- for testing 256 color output
-		EOF
-      fi
-   }
-   # <<<
-
    # shellcheck disable=SC2016
    mkcd() {
       mkdir -p "$1" || error $LINENO
@@ -462,36 +222,11 @@
       done
    }
 
-   # Git cLONE cD
-   gloned() {
-      git clone "$1" || return $?
-      if ! cd "$(echo "$1" | sed 's/\.git//g' | rev | cut -d '/' -f 1 | rev)";then
-         echo 'Error: Could not `cd` into the repo'
-         return 1
-      fi
-      echo
-      # ls --color=auto
-   }
-
    # believe it or not, zsh makes for a fine calculator
    calc() {
       echo $(($*))
    }
 
-   # Makes a swapfile at /swapfile of a given size (ex: mkswp 4G)
-   mkswp() {
-      sudo fallocate -l "$1" /swapfile &&
-      sudo chmod 600 /swapfile
-      sudo mkswap /swapfile &&
-      sudo swapon /swapfile
-   }
-
-   # Deletes the swapfile created by mkswp()
-   rmswp() {
-      sudo swapoff -v /swapfile
-      sudo rm /swapfile
-   }
-
    # optionally source an external function file
    [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/fnrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/fnrc"
 }