changeset 109397:4e6b8160da4b

Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975). * lisp/bookmark.el (bookmark-set): Don't set `bookmark-yank-point' and `bookmark-current-buffer' if they have been already set in another buffer (e.g gnus-art). * lisp/gnus/gnus-sum.el (gnus-summary-bookmark-make-record): Set `bookmark-yank-point' and `bookmark-current-buffer' to allow C-w.
author Karl Fogel <kfogel@red-bean.com>
date Wed, 14 Jul 2010 12:41:40 -0400
parents 8b1192833a1e
children c9970d4bfd62
files lisp/ChangeLog lisp/bookmark.el lisp/gnus/ChangeLog lisp/gnus/gnus-sum.el
diffstat 4 files changed, 46 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Jul 14 12:02:53 2010 -0400
+++ b/lisp/ChangeLog	Wed Jul 14 12:41:40 2010 -0400
@@ -1,3 +1,12 @@
+2010-07-13  Thierry Volpiatto <thierry.volpiatto@gmail.com>
+
+	Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975).
+	Patch applied by Karl Fogel.
+
+	* bookmark.el (bookmark-set): Don't set `bookmark-yank-point'
+	and `bookmark-current-buffer' if they have been already set in
+	another buffer (e.g gnus-art).
+
 2010-07-13  Karl Fogel  <kfogel@red-bean.com>
             Thierry Volpiatto <thierry.volpiatto@gmail.com>
 
--- a/lisp/bookmark.el	Wed Jul 14 12:02:53 2010 -0400
+++ b/lisp/bookmark.el	Wed Jul 14 12:41:40 2010 -0400
@@ -783,27 +783,34 @@
 it removes only the first instance of a bookmark with that name from
 the list of bookmarks.)"
   (interactive (list nil current-prefix-arg))
-  (let* ((record (bookmark-make-record))
-         (default (car record)))
+  (unwind-protect
+       (let* ((record (bookmark-make-record))
+              (default (car record)))
 
-    (bookmark-maybe-load-default-file)
-
-    (setq bookmark-yank-point (point))
-    (setq bookmark-current-buffer (current-buffer))
+         (bookmark-maybe-load-default-file)
+         ;; Don't set `bookmark-yank-point' and `bookmark-current-buffer'
+         ;; if they have been already set in another buffer. (e.g gnus-art).
+         (unless (and bookmark-yank-point
+                      bookmark-current-buffer)
+           (setq bookmark-yank-point (point))
+           (setq bookmark-current-buffer (current-buffer)))
 
-    (let ((str
-           (or name
-               (read-from-minibuffer
-                (format "Set bookmark (%s): " default)
-                nil
-                bookmark-minibuffer-read-name-map
-                nil nil default))))
-      (and (string-equal str "") (setq str default))
-      (bookmark-store str (cdr record) no-overwrite)
+         (let ((str
+                (or name
+                    (read-from-minibuffer
+                     (format "Set bookmark (%s): " default)
+                     nil
+                     bookmark-minibuffer-read-name-map
+                     nil nil default))))
+           (and (string-equal str "") (setq str default))
+           (bookmark-store str (cdr record) no-overwrite)
 
-      ;; Ask for an annotation buffer for this bookmark
-      (when bookmark-use-annotations
-        (bookmark-edit-annotation str)))))
+           ;; Ask for an annotation buffer for this bookmark
+           (when bookmark-use-annotations
+             (bookmark-edit-annotation str))))
+    (setq bookmark-yank-point nil)
+    (setq bookmark-current-buffer nil)))
+
 
 (defun bookmark-kill-line (&optional newline-too)
   "Kill from point to end of line.
--- a/lisp/gnus/ChangeLog	Wed Jul 14 12:02:53 2010 -0400
+++ b/lisp/gnus/ChangeLog	Wed Jul 14 12:41:40 2010 -0400
@@ -1,3 +1,11 @@
+2010-07-13  Thierry Volpiatto <thierry.volpiatto@gmail.com>
+
+	Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975).
+	Patch applied by Karl Fogel.
+
+	* gnus-sum.el (gnus-summary-bookmark-make-record): Set
+	`bookmark-yank-point' and `bookmark-current-buffer' to allow C-w.
+
 2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 
 	Allow bookmarks to be set from Gnus Article buffers (Bug #5975).
--- a/lisp/gnus/gnus-sum.el	Wed Jul 14 12:02:53 2010 -0400
+++ b/lisp/gnus/gnus-sum.el	Wed Jul 14 12:41:40 2010 -0400
@@ -12631,10 +12631,12 @@
   "Make a bookmark entry for a Gnus summary buffer."
   (let (pos buf)
     (unless (and (derived-mode-p 'gnus-summary-mode) gnus-article-current)
-      (save-restriction ; FIXME is it necessary to widen?
+      (save-restriction              ; FIXME is it necessary to widen?
         (widen) (setq pos (point))) ; Set position in gnus-article buffer.
       (setq buf "art") ; We are recording bookmark from article buffer.
-      (gnus-article-show-summary)) ; Go back in summary buffer.
+      (setq bookmark-yank-point (point))
+      (setq bookmark-current-buffer (current-buffer))
+      (gnus-article-show-summary))      ; Go back in summary buffer.
     ;; We are now recording bookmark from summary buffer.
     (unless buf (setq buf "sum"))
     (let* ((subject (elt (gnus-summary-article-header) 1))