From: Jay Soffian Date: Wed, 30 Jan 2008 14:55:18 GMT Subject: Re: [StGit PATCH 4/5] Simplify editor selection logic Message-ID: <76718490801300655r3d1b5b41l2945b4f730faedb2@mail.gmail.com> In-Reply-To: <20080130072828.GA24648@diana.vm.bytemark.co.uk> On Jan 30, 2008 2:28 AM, Karl Hasselström wrote: > 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? > 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 rv j.