80 lines
2.4 KiB
Bash
80 lines
2.4 KiB
Bash
#!/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:@binpkgdatadir@
|
|
|
|
# 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
|