[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#7350: 24.0.50; make vc-deduce-backend smarter
From: |
Stefan Monnier |
Subject: |
bug#7350: 24.0.50; make vc-deduce-backend smarter |
Date: |
Mon, 08 Nov 2010 12:47:49 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
>> I notice that vc-root-diff only works if the current buffer is
>> visiting a version-controlled file, and in certain other buffer modes.
>> In particular, it works in dired-mode, where it uses the
>> default-directory, but not in shell-mode, which is not one of the
>> explicit special cases.
> Could you give an example use-case where you'd want vc-deduce-backend to
> be run in a shell-mode buffer?
> I have gotten into the habit of using a shell buffer to disambiguate
> which repo I want to use for general VC commands like vc-root-diff and
> vc-dir.
Hmm... I use a VC-Dir buffer for that ;-)
> Since I bind "shell" to f8, it is often faster to type "f8 C-x
> v d RET" than to supply an explicit pathname to vc-dir. (I'm often in
> the right shell buffer already, having just typed "make test".)
I don't follow: if you're already in the right shell buffer, then f8
won't do anything.
> Since vc-root-diff doesn't take a pathname arg, I have to do something
> explicit to get into the right tree anyway. So it makes sense to me
> that vc-root-diff should work like vc-dir in a non-VC buffer.
> There is already an exception for dired-mode; why not generalize?
It can definitely be generalized, but I'd rather stick to buffers where
there's a clear association with a particular file or directory.
E.g. *Help* buffers aren't good candidates.
shell-mode doesn't sound like a bad candidate, actually. The only
problem I see with it is that a shell buffer's default-directory is
easily out-of-sync with the underlying process's own notion of cwd.
Does the patch below solve your immediate problem?
> In fact, this is something of a regression from Emacs 22.x, where
> "C-u C-x v = . RET RET RET" would do the equivalent of
> (vc-version-diff (expand-file-name ".") nil nil)
> which is nearly vc-root-diff, regardless of buffer mode. This no longer
> works in the brave new world of filesets,
This was the result of a trade-off (get rid of one RET since it's
almost never used). But I guess we could/should prompt the user for
a file/dir rather than signal "File is not under version control" or
some such error.
Stefan
=== modified file 'lisp/vc/vc.el'
--- lisp/vc/vc.el 2010-10-05 18:47:39 +0000
+++ lisp/vc/vc.el 2010-11-08 16:18:04 +0000
@@ -921,7 +921,7 @@
(cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
((derived-mode-p 'log-view-mode) log-view-vc-backend)
((derived-mode-p 'diff-mode) diff-vc-backend)
- ((derived-mode-p 'dired-mode)
+ ((derived-mode-p 'dired-mode 'shell-mode)
(vc-responsible-backend default-directory))
(vc-mode (vc-backend buffer-file-name))))
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/06
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Stefan Monnier, 2010/11/07
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/07
- bug#7350: 24.0.50; make vc-deduce-backend smarter,
Stefan Monnier <=
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/08
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Stefan Monnier, 2010/11/12
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/14
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Stefan Monnier, 2010/11/15
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/16
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Stefan Monnier, 2010/11/18
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/18
- bug#7350: 24.0.50; make vc-deduce-backend smarter, Bob Rogers, 2010/11/20