Re: [PATCH] git-mergetool: Make default smarter by considering user's desktop environment and editor
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:14
Josh Triplett [off-list ref] 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 <redacted>
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