I've incorporated Thien-Thi's suggestion, as well as an if to check status for nil (which indicates unregistered). On 04/10/2017 08:07 PM, Dmitry Gutov wrote: > You are right. But we could set it in vc-state-refresh. > On 04/10/2017 07:46 PM, Dmitry Gutov wrote: > > Thanks. I guess the main thing left is to decide whether vc-git-state > should bind default-directory. For example, vc-bzr-state doesn't, > while vc-hg-state does. > > Does this binding affect the command output, in this particular case? The binding affects the output if default-directory is not set inside the file's repository. Since, in principle, the vc functions should be agnostic to the choice of vcs, either a) vc-state documentation should state that default-directory should be set to get generally correct responses or b) it should be set in some function (and I agree that vc-state-refresh makes sense). I think the overhead of setting the directory is rather low. In some admittedly rudimentary benchmarks, there is almost no difference in performance setting default-directory. There's also the question of how to handle default-directory. You cannot simply do (file-name-directory file), because that fails if FILE is given without a directory. I think the correct one is (file-name-directory (expand-file-name file)) (which, surprisingly, is slighly faster than (file-name-directory (concat default-directory file)) ).