From 04ea8e9a89af02b9a37c822ca89fd3cc6f823b61 Mon Sep 17 00:00:00 2001 From: druckdev <63563978+druckdev@users.noreply.github.com> Date: Wed, 23 Sep 2020 02:36:11 +0200 Subject: [PATCH] zsh: Cleanup conf() a bit Add more editor fallback values. Cleanup comments and fix indentation. Do not check for existence of specified config file. (Since the config file can now be created that way) "Downgrade" all file checks for readability to checks for existence, since this should be handled on the editor layer. --- .config/zsh/plugins/functionsPost.zsh | 47 ++++++++++++++------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/.config/zsh/plugins/functionsPost.zsh b/.config/zsh/plugins/functionsPost.zsh index 49e6d73..d1e2d47 100644 --- a/.config/zsh/plugins/functionsPost.zsh +++ b/.config/zsh/plugins/functionsPost.zsh @@ -92,10 +92,18 @@ function qr() { ## Edit config file function conf() { - # default to vim if no editor is set - local CONF_EDITOR=${EDITOR:-vim} + local CONF_EDITOR + if [ -n "$EDITOR" ]; then + CONF_EDITOR="$EDITOR" + elif command -v vim &>/dev/null; then + CONF_EDITOR=vim + elif command -v nano &>/dev/null; then + CONF_EDITOR=nano + else + CONF_EDITOR=cat + fi - # parse otions + # Parse otions while getopts "e:" opt 2>/dev/null; do case $opt in e) CONF_EDITOR="$OPTARG";; @@ -103,9 +111,7 @@ function conf() { return 1 ;; esac done - shift $(($OPTIND - 1 )) - - # CONF_EDITOR=( $(resolve -s $CONF_EDITOR) ) + shift $(( $OPTIND - 1 )) # conf needs an argument if [ $# -eq 0 ]; then @@ -114,23 +120,18 @@ function conf() { fi # search for program name in XDG_CONFIG_HOME and $HOME local CONF_DIR="$(_get_config_dir "$1")" - if [ $? -ne 0 ]; then + if (( $? )); then printf "\033[1;31mFalling back to $HOME.\n\033[0m" >&2 CONF_DIR="$HOME" fi - # open file with specified name if + # If specific name is given, open file. if [ $# -gt 1 ]; then - if [ -r "$CONF_DIR/$2" ]; then - $CONF_EDITOR "$CONF_DIR/$2" - return 0 - else - printf "\033[1;31mCould not find config file with that name.\n\033[0m" >&2 - return 1 - fi + "$CONF_EDITOR" "$CONF_DIR/$2" + return fi - # possible config-file names + same in hidden + # possible config-file names + same but hidden local -a CONF_PATTERNS CONF_PATTERNS=( "$1.conf" @@ -146,10 +147,10 @@ function conf() { # check if config file exists for config in $CONF_PATTERNS; do - if [ -r "$CONF_DIR/$config" ]; then + if [ -e "$CONF_DIR/$config" ]; then $CONF_EDITOR "$CONF_DIR/$config" return 0 - elif [ -r "$CONF_DIR/.$config" ]; then + elif [ -e "$CONF_DIR/.$config" ]; then $CONF_EDITOR "$CONF_DIR/.$config" return 0 fi @@ -159,11 +160,11 @@ function conf() { # (For cases like default vim with ~/.vim/ and ~/.vimrc) if [ "$CONF_DIR" != "$HOME" ];then for config in $CONF_PATTERNS; do - # Only look for hidden files - if [ -r "$HOME/.$config" ]; then - $CONF_EDITOR "$HOME/.$config" - return 0 - fi + # Only look for hidden files + if [ -e "$HOME/.$config" ]; then + $CONF_EDITOR "$HOME/.$config" + return 0 + fi done fi