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. Something like... test_xstuff () { test -n "$DISPLAY" && type "$1" >/dev/null 2>&1 test_kdiff3 () { test_xstuff kdiff3 } test_tkdiff () { test_xstuff tkdiff } test_estuff() { type "$1" >/dev/null 2>&1 && case "${VISUAL-$EDITOR}" in *"$1"*) : ;; *) false ;; esac } test_emerge () { test_estuff emacs } test_vimdiff () { test_estuff vim } choose_merge_tool () { for t in "$@" do if test_$t then echo "$t" break fi done } if test -z "$merge_tool" then merge_tool_candidates='kdiff3 tkdiff xxdiff meld opendiff ...' if test -n "$GNOME_DESCTOP_SESSION_ID" then merge_tool_candidates="meld $merge_tool_candidates" elif test -n "$KDE_FULL_SESSION" then merge_tool_candidates="kdiff3 $merge_tool_candidates" elif ... fi merge_tool=$(choose_merge_tool $merge_tool_candidates) fi - 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