add support for removal of entries
This commit is contained in:
parent
49ed06ca7c
commit
a776b419ff
|
@ -1,8 +1,9 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# speedwm-sxp
|
# speedwm-sxp
|
||||||
|
|
||||||
# function which returns history
|
# some functions we can use on demand
|
||||||
MENU_DATA() { cat "$CUSTOM_HISTFILE"; printf "%s\nClear\nExit\n" "------"; }
|
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
|
||||||
|
|
||||||
# basic variables
|
# basic variables
|
||||||
[ -z "$CUSTOM_HISTFILE" ] && CUSTOM_HISTFILE="$HOME/.config/speedwm/.custom_history"
|
[ -z "$CUSTOM_HISTFILE" ] && CUSTOM_HISTFILE="$HOME/.config/speedwm/.custom_history"
|
||||||
|
@ -11,20 +12,43 @@ MENU_DATA() { cat "$CUSTOM_HISTFILE"; printf "%s\nClear\nExit\n" "------"; }
|
||||||
# make sure $CUSTOM_HISTFILE exists
|
# make sure $CUSTOM_HISTFILE exists
|
||||||
mkdir -p "$(dirname "$CUSTOM_HISTFILE")"; touch "$CUSTOM_HISTFILE"
|
mkdir -p "$(dirname "$CUSTOM_HISTFILE")"; touch "$CUSTOM_HISTFILE"
|
||||||
|
|
||||||
# prompt the user
|
|
||||||
OP="$(MENU_DATA | "$RUNLAUNCHER" -g 1 -l 40 -p 'Enter an S expression:')"
|
|
||||||
|
|
||||||
# parse current expression
|
# parse current expression
|
||||||
|
parse() {
|
||||||
|
print "$@"
|
||||||
[ "$OP" = "Clear" ] && printf "" > "$CUSTOM_HISTFILE" && exit
|
[ "$OP" = "Clear" ] && printf "" > "$CUSTOM_HISTFILE" && exit
|
||||||
[ "$OP" = "Exit" ] && exit 0
|
[ "$OP" = "Exit" ] && exit 0
|
||||||
[ "$OP" = "------" ] && exit 0
|
[ "$OP" = "------" ] && exit 0
|
||||||
[ -z "$OP" ] && exit 0
|
[ -z "$OP" ] && exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
parse "Enter an S expression:"
|
||||||
|
[ "$OP" = "Remove" ] && \
|
||||||
|
remove_entry "$@" || \
|
||||||
|
add_entry "$@"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# write expression
|
# write expression
|
||||||
|
add_entry() {
|
||||||
FILE_CONTENTS="$(grep -v "$OP" "$CUSTOM_HISTFILE")"
|
FILE_CONTENTS="$(grep -v "$OP" "$CUSTOM_HISTFILE")"
|
||||||
printf "%s\n" "$FILE_CONTENTS" > "$CUSTOM_HISTFILE" # prevent duplicates
|
printf "%s\n" "$FILE_CONTENTS" > "$CUSTOM_HISTFILE" # prevent duplicates
|
||||||
|
|
||||||
# add entry
|
# add entry
|
||||||
printf "%s\n" "$OP" >> "$CUSTOM_HISTFILE"
|
printf "%s\n" "$OP" >> "$CUSTOM_HISTFILE"
|
||||||
printf "%s\n" "$OP"
|
printf "%s\n" "$OP"
|
||||||
|
}
|
||||||
|
|
||||||
|
# write expression
|
||||||
|
remove_entry() {
|
||||||
|
# print menu again so we can choose an entry to remove
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
|
|
Loading…
Reference in a new issue