Re: [PATCH] git-mergetool: Make default smarter by considering user's desktop environment and editor
- From
David Kastrup <dak@gnu.org>
- Date
- Jun 6, 2007, 09:40 UTC
- Message-ID
- <86lkexjua3.fsf@lola.quinscape.zz>
- In-Reply-To
- <7vabvd5u7t.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <gitster@pobox.com> writes:
Show 30 quoted lines
> David Kastrup <dak@gnu.org> writes:
>
>> Junio C Hamano <junkio@cox.net> writes:
>>
>>> Josh Triplett <josh@freedesktop.org> 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@freedesktop.org>
>>>
>>> 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
doneThis 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