Junio C Hamano <gitster@xxxxxxxxx> writes: > David Kastrup <dak@xxxxxxx> writes: > >> Junio C Hamano <junkio@xxxxxxx> writes: >> >>> Josh Triplett <josh@xxxxxxxxxxxxxxx> writes: >>> >>>> Make git-mergetool prefer meld under GNOME, and kdiff3 under KDE. When >>>> considering emerge and vimdiff, check $VISUAL and $EDITOR to see which the >>>> user might prefer. >>>> >>>> Signed-off-by: Josh Triplett <josh@xxxxxxxxxxxxxxx> >>> >>> The basic idea is sound. However... >>> >>> (1) I wonder if we can get rid of the horribly long if .. elif >>> chain by using shell function and then iterate a list of them; >>> >>> (2) echo "${VISUAL-$EDITOR}" | grep '^emacs'??? >>> >>> Some people may have explicit path (/home/me/bin/emacs), >>> and/or runs a variant of emacs called 'xemacs'. Same for >>> vim. >> >> Actually, a lot of people run as editor a program called "emacsclient" >> or "gnuclient": this one connects to an existing Emacs session and >> passes its arguments to it. And of course, this is what git-mergetool >> should then also do. > > I do that too, but that is covered by the prefix rule Josh has, > so it is Ok. Another note: in my usual Emacs session, EDITOR is set to /usr/local/emacs-22/bin/emacsclient which would not be covered... So that should probably be useemacs=0 for i in ${VISUAL-$EDITOR} do case "`basename $i`" in [xX][eE]macs*|[eE]macs*|gnuclient*) useemacs=1 esac break done This should work even when we are talking about something like EDITOR="C:\My Programs\XEmacs\gnuclient.exe" -n "C:\My Programs\XEmacs\XEmacs" And it does not require starting grep for something which the shell can perfectly well handle on its own. Yes, it does need basename. I don't see a good way to avoid that. -- David Kastrup - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html