diff --git a/scripts/speedwm-sxp b/scripts/speedwm-sxp index 39b6e2b..59931b8 100755 --- a/scripts/speedwm-sxp +++ b/scripts/speedwm-sxp @@ -2,8 +2,8 @@ # speedwm-sxp # some functions we can use on demand -print_text() { printf "%s\n%s\nClear\nRemove\nExit\n" "$(cat "$CUSTOM_HISTFILE")" "------"; } # function which returns history -print() { OP="$(print_text | "$RUNLAUNCHER" -g 1 -l 40 -p "$*")"; } # function which prints the menu +print_text() { printf "%s\n%s\nClear\nRemove\nExit" "$(grep -ve '^$' $CUSTOM_HISTFILE)" "------"; } # function which returns history +print_menu() { OP="$(print_text | "$RUNLAUNCHER" -g 1 -l 40 -p "$*")"; } # function which prints the menu # basic variables [ -z "$CUSTOM_HISTFILE" ] && CUSTOM_HISTFILE="$HOME/.config/speedwm/.custom_history" @@ -14,26 +14,28 @@ mkdir -p "$(dirname "$CUSTOM_HISTFILE")"; touch "$CUSTOM_HISTFILE" # parse current expression parse() { - print "$@" - [ "$OP" = "Clear" ] && printf "" > "$CUSTOM_HISTFILE" && exit - [ "$OP" = "Exit" ] && exit 0 - [ "$OP" = "------" ] && exit 0 - [ -z "$OP" ] && exit 0 + print_menu "$@" + case "$OP" in + "Clear") rm -f "$CUSTOM_HISTFILE"; mkdir -p "$(dirname "$CUSTOM_HISTFILE")"; touch "$CUSTOM_HISTFILE"; main "$@" ;; + "Exit") exit 0 ;; + "------") exit 0 ;; + "") exit 0 ;; + esac } main() { parse "Enter an S expression:" [ "$OP" = "Remove" ] && \ remove_entry "$@" || \ - add_entry "$@" + perf_entry "$@" return 0 } # write expression -add_entry() { - FILE_CONTENTS="$(grep -v "$OP" "$CUSTOM_HISTFILE")" - printf "%s\n" "$FILE_CONTENTS" > "$CUSTOM_HISTFILE" # prevent duplicates +perf_entry() { + file_contents="$(grep -v "$OP" "$CUSTOM_HISTFILE")" + printf "%s\n" "$file_contents" > "$CUSTOM_HISTFILE" # prevent duplicates # add entry printf "%s\n" "$OP" >> "$CUSTOM_HISTFILE" @@ -46,9 +48,9 @@ remove_entry() { parse "Remove:" [ "$OP" = "Remove" ] && remove_entry "$@" - # add everything except the entry to $FILE_CONTENTS and write that back to the file - FILE_CONTENTS="$(grep -v "$OP" "$CUSTOM_HISTFILE")" || return 1 - printf "%s\n" "$FILE_CONTENTS" > "$CUSTOM_HISTFILE" || return 1 + # add everything except the entry to $file_contents and write that back to the file + file_contents="$(grep -v "$OP" "$CUSTOM_HISTFILE")" || return 1 + printf "%s\n" "$file_contents" > "$CUSTOM_HISTFILE" || return 1 } main "$@"