all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Phil Hagelberg <phil@hagelb.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: vc-register complains if a file is already registered in a git repository
Date: Tue, 28 Oct 2008 11:19:04 -0700	[thread overview]
Message-ID: <87ej207fc7.fsf@hagelb.org> (raw)
In-Reply-To: <87od147hzj.fsf@hagelb.org> (Phil Hagelberg's message of "Tue, 28 Oct 2008 10:21:52 -0700")

Phil Hagelberg <phil@hagelb.org> writes:

> I've added the vc-git-register-changes command to vc-git-extra-menu-map
> and will start work on creating extra-keys functionality that works like
> extra-menu.

OK, here's the cumulative patch for both features.

I am not sure I completely understand the use of fset for
vc-prefix-map. I tried converting it to a regular function definition,
but that did not work; it made the prefix command essentially a
no-op. So someone who's familiar with prefix keymaps should review this
patch before it's applied.

-Phil

diff --git a/lisp/vc-git.el b/lisp/vc-git.el
index 51ccc5d..d3ac624 100644
--- a/lisp/vc-git.el
+++ b/lisp/vc-git.el
@@ -622,6 +622,9 @@ or BRANCH^ (where \"^\" can be repeated)."
     (define-key map [git-grep]
       '(menu-item "Git grep..." vc-git-grep
 		  :help "Run the `git grep' command"))
+    (define-key map [git-register-changes]
+      '(menu-item "Register changes" vc-git-register-changes
+                  :help "Register the changes in the current buffer"))
     map))
 
 (defun vc-git-extra-menu () vc-git-extra-menu-map)
@@ -681,6 +684,18 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
 	  (compilation-start command 'grep-mode))
 	(if (eq next-error-last-buffer (current-buffer))
 	    (setq default-directory dir))))))
+
+(defun vc-git-register-changes ()
+  "Register the changes in the current file to the staging area."
+  (interactive)
+  (vc-git-register buffer-file-name)
+  (message "Registered changes to %s... " buffer-file-name))
+
+(defun vc-git-append-extra-keys (original-map)
+  (let ((extra-keys-map (copy-keymap original-map)))
+    (define-key extra-keys-map "e" 'vc-git-register-changes)
+    extra-keys-map))
+
 \f
 ;;; Internal commands
 
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index 97dca35..53e0e31 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -970,7 +970,15 @@ Used in `find-file-not-found-functions'."
     (define-key map "=" 'vc-diff)
     (define-key map "~" 'vc-revision-other-window)
     map))
-(fset 'vc-prefix-map vc-prefix-map)
+
+(fset 'vc-prefix-map
+      (when vc-mode
+        (vc-call-backend
+         (if buffer-file-name
+             (vc-backend buffer-file-name)
+           (vc-responsible-backend default-directory))
+         'append-extra-keys vc-prefix-map)))
+
 (define-key global-map "\C-xv" 'vc-prefix-map)
 
 (defvar vc-menu-map




  reply	other threads:[~2008-10-28 18:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-20 20:29 vc-register complains if a file is already registered in a git repository Phil Hagelberg
2008-10-21 21:43 ` Stefan Monnier
2008-10-21 22:23   ` Phil Hagelberg
2008-10-22  1:37     ` Stefan Monnier
2008-10-28 17:21       ` Phil Hagelberg
2008-10-28 18:19         ` Phil Hagelberg [this message]
2008-10-28 22:24           ` Phil Hagelberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ej207fc7.fsf@hagelb.org \
    --to=phil@hagelb.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.