+##############
+
+# a late breaking action is to set the editor, if we can.
+# we will fallback to whatever we can find on the host.
+export EDITOR
+# note: the editors for revision control must wait while the document is
+# edited, so gvim and others that launch a separate x window are not
+# going to work well unless they can be prevented from forking the process
+# off.
+if [ -z "$EDITOR" ]; then
+ EDITOR="$(whichable gvim)"
+ if [ ! -z "$EDITOR" ]; then
+ # if we found gvim, then add in the no forking flag.
+ EDITOR+=" --nofork"
+ fi
+fi
+if [ -z "$EDITOR" ]; then
+ EDITOR="$(whichable vim)"
+fi
+if [ -z "$EDITOR" ]; then
+ EDITOR="$(whichable vi)"
+fi
+if [ -z "$EDITOR" ]; then
+ EDITOR="$(whichable emacs)"
+fi
+####
+# out of ideas about editors at this point.
+####
+# set the VISUAL and other variables from EDITOR if we found an editor to use.
+if [ ! -z "$EDITOR" ]; then
+ VISUAL="$EDITOR"
+
+ export GIT_EDITOR="$EDITOR"
+ export SVN_EDITOR="$EDITOR"
+fi
+
+##############
+