File: select-editor

package info (click to toggle)
sensible-utils 0.0.12
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 424 kB
  • sloc: sh: 715; makefile: 142; sed: 88
file content (79 lines) | stat: -rwxr-xr-x 2,448 bytes parent folder | download
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/sh

# To generate localization information, run:
#   xgettext -o - -L Shell select-editor

# if no gettext it will fallback to gettext on /usr/share/sensible-utils/bin
# see #728612
PATH=$PATH:/usr/sbin:/usr/local/share/sensible-utils/bin

# EASIEST editor
EASIEST="/bin/nano"

# Ensure that $HOME/.selected_editor is writeable
touch $HOME/.selected_editor || exit 1

sorted_list_of_editors() {
               update-alternatives --query editor | while read emptyline; do
                       # skip the first entry (header) as well as the rest of processed entries
                       if [ -z "$emptyline" ]; then continue; fi

                       # extract the two interesting fields
                       local ALTERNATIVE=''
                       local PRIORITY=''
                       while read field value; do
                               case "${field}" in
                                       'Alternative:') ALTERNATIVE="${value}";;
                                       'Priority:') PRIORITY="${value}";;
                               esac
                               if [ -n "$ALTERNATIVE" ] && [ -n "$PRIORITY" ]; then break; fi
                       done
                       if [ -z "$ALTERNATIVE" ] || [ -z "$PRIORITY" ]; then continue; fi

                       echo "${PRIORITY}:${ALTERNATIVE}"
               done | sort -n -r | cut -d':' -f 2-
}


editors=`update-alternatives --list editor | wc -l`
if [ $editors -gt 1 ]; then
        # fix simple to 1 see #777168
        simple=1
	echo
	echo "`gettext 'Select an editor.  To change later, run'`" "'select-editor'."
	i=0
	editors=`sorted_list_of_editors`
	for e in $editors; do
		i=`expr $i + 1`
		desc=
		if [ $e = "$EASIEST" ]; then
			desc="        <---- ` gettext 'easiest'`"
			simple=$i
		fi
		echo "  $i. $e$desc"
	done
	echo ""
	selected=x
	while /bin/true; do
		if [ -z "$selected" -a ! -z "$simple" ]; then
			selected="$simple"
		elif ! test $selected -gt 0 2>/dev/null; then
			echo -n "$(gettext 'Choose') 1-$i [$simple]: "
			read -r selected
		elif ! test $selected -le $i 2>/dev/null; then
			echo -n "$(gettext 'Choose') 1-$i [$simple]: "
			read -r selected
		else
			break
		fi
	done
	i=0
	for e in $editors; do
		i=`expr $i + 1`
		if [ $i -eq $selected ]; then
			echo "# Generated by /usr/bin/select-editor" > $HOME/.selected_editor
			echo "SELECTED_EDITOR=\"$e\"" >> $HOME/.selected_editor && exit 0
		fi
	done
fi
exit 1