blob: 3c0d8f45cd9f9b93c3f35ab923cb22dca2dbb2f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#!/bin/sh
interactiveopt() {
# Usage: interactiveopt "options" "prompt" "maxopts (if unset than equal to inf)" "col"
# Purpose: give the user a numbered list of options. User can specify multiple choices. User can specify either the number or the name of the option.
# Output: saved in variable "opt"
unset opt # This won't be set if using recursion, do it in a while loop instead
while [ -z $opt ] 2>/dev/null; do
# Column option
[ -n "$4" ] && [ "$4" = "col" ] \
&& echo "$1" | nl -s': ' | column \
|| echo "$1" | nl -s': '
# Parse user input
read -p "$2" choices \
&& choices="$(echo $choices | cut -d' ' -f1-$3)"
for choice in $choices; do
case "$choice" in
[0-9]*) opt="$(echo "$1" | head -"$(echo $choice | tr -cd '[:digit:]')" | tail -1) $opt" ;;
*) opt="$(echo "$1" | grep "^$choice$" 2>/dev/null) $opt" ;;
esac || ( echo "Invalid option \"$choice\"" && undet opt && break ) # Why wont this unset opt or break???????
done
done
}
listfiles() {
pids=$(xdotool search --class "Vim")
for pid in $pids; do
names="$(xdotool getwindowname $pid | grep '\.tex')\n$names"
#$openfiles="$(echo "$name" | cut -d' ' -f1)\n$openfiles"
#$openfilepaths="$(echo "$name" | awk -F'[()]' '{ print $2 }')\n$openfiles"
done
#file="$(echo $openfiles | grep "^$1")"
[ -z "$file" ] \
&& interactiveopt "$(echo $openfiles | sort -bu | tail +2)" "Which file to autocompile? " 1 \
&& file="$opt"
}
[ -e "$1" ] && file="$1" || listfiles
echo "$file" | entr pdflatex "$file" || echo "entr or LaTeX is not installed!"
|