Re: [StGit PATCH 4/5] Simplify editor selection logic
On Jan 30, 2008 2:28 AM, Karl Hasselström <kha@treskal.com> wrote:
Show 6 quoted lines
> You could write it kind of like this:
>
> def e(key): return os.environ.get(key, None)
> def c(key): return config.get(key)
> editor = filter(None, [e('GIT_EDITOR'), c('stgit.editor'), c('core.editor'),
> e('VISUAL'), e('EDITOR'), 'vi'])[0]Too clever by half if you ask me. Why not just:
editor = (os.environ.get('GIT_EDITOR') or
config.get('stgit.editor') or
config.get('core.editor') or
os.environ.get('VISUAL') or
os.environ.get('EDITOR') or
'vi')And be done with it?
Show 9 quoted lines
> Of course, if we're going to have code like this in several places
> (you already mentioned the pager), we could build a function like
> this:
>
> editor = get_config(['GIT_EDITOR', 'stgit.editor', 'core.editor',
> 'VISUAL', 'EDITOR'], default = 'vi')
>
> that would differentiate between env variables and conf keys by
> looking for dots in the name or something.
def get_config(keys, default=None):
rv = default
for k in keys:
if '.' in k:
d = config
else:
d = os.environ
if k in d:
rv = d[k]
break
return rvj.