#!/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/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