I’ve been using the rather spiffy Lusty Explorer for some time for my buffer and file finding. However it (I thought) had a rather annoying bug where I could never tab directly into some of the repositories I was hacking on. Eventually I figured out that the problem was down to the way I name them.
My naming scheme for any repository is generally to add the version control extension to the directory. This is more for my benefit than emacs as it’s quite capable of working this out for itself in any given repo. However it turns out that Lusty was being a good emacs citizen and using the variable completion-ignored-extensions which included the pattern “.git/” and duly hiding my repo directories from completion. In fact there are a number of patterns in there which should probably be more specific. I wrote this to fix the problem:
(setq completion-ignored-extensions (mapcar '(lambda (ext) (if (string-equal "/" (substring ext -1 nil)) (concat "^" ext) ext)) completion-ignored-extensions))
It still seems a little ugly to me so given the last time I berated elisp’s style gained so many useful suggestions I’d welcome improvements.