diff lisp/gnus/gnus-art.el @ 34727:4b9a7a10deaa

* gnus-util.el (gnus-add-text-properties-when): New function. (gnus-remove-text-properties-when): Ditto. * gnus-cite.el (gnus-article-hide-citation): Use them. (gnus-article-toggle-cited-text): Use them. * gnus-art.el (gnus-signature-toggle): Use them. (gnus-article-show-hidden-text): Ditto. (gnus-article-hide-text): Ditto. * gnus-art.el (gnus-article-describe-key): Use prompt. (gnus-article-describe-key-briefly): Ditto.
author ShengHuo ZHU <zsh@cs.rochester.edu>
date Wed, 20 Dec 2000 06:13:15 +0000
parents 936c632692fd
children 2c66e24f2398
line wrap: on
line diff
--- a/lisp/gnus/gnus-art.el	Wed Dec 20 06:06:28 2000 +0000
+++ b/lisp/gnus/gnus-art.el	Wed Dec 20 06:13:15 2000 +0000
@@ -1053,11 +1053,12 @@
 
 (defsubst gnus-article-hide-text (b e props)
   "Set text PROPS on the B to E region, extending `intangible' 1 past B."
-  (add-text-properties b e props)
+  (gnus-add-text-properties-when 'article-type nil b e props)
   (when (memq 'intangible props)
     (put-text-property
      (max (1- b) (point-min))
      b 'intangible (cddr (memq 'intangible props)))))
+
 (defsubst gnus-article-unhide-text (b e)
   "Remove hidden text properties from region between B and E."
   (remove-text-properties b e gnus-hidden-properties)
@@ -1976,24 +1977,16 @@
 	'hidden
       nil)))
 
-(defun gnus-article-show-hidden-text (type &optional hide)
+(defun gnus-article-show-hidden-text (type &optional dummy)
   "Show all hidden text of type TYPE.
-If HIDE, hide the text instead."
-  (save-excursion
-    (let ((buffer-read-only nil)
-	  (inhibit-point-motion-hooks t)
-	  (end (point-min))
-	  beg)
-      (while (setq beg (text-property-any end (point-max) 'article-type type))
-	(goto-char beg)
-	(setq end (or
-		   (text-property-not-all beg (point-max) 'article-type type)
-		   (point-max)))
-	(if hide
-	    (gnus-article-hide-text beg end gnus-hidden-properties)
-	  (gnus-article-unhide-text beg end))
-	(goto-char end))
-      t)))
+Originally it is hide instead of DUMMY."
+  (let ((buffer-read-only nil)
+	(inhibit-point-motion-hooks t))
+    (gnus-remove-text-properties-when 
+     'article-type type
+     (point-min) (point-max) 
+     (cons 'article-type (cons type
+			       gnus-hidden-properties)))))
 
 (defconst article-time-units
   `((year . ,(* 365.25 24 60 60))
@@ -2639,6 +2632,8 @@
   ">" end-of-buffer
   "\C-c\C-i" gnus-info-find-node
   "\C-c\C-b" gnus-bug
+  "\C-hk" gnus-article-describe-key
+  "\C-hc" gnus-article-describe-key-briefly
 
   "\C-d" gnus-article-read-summary-keys
   "\M-*" gnus-article-read-summary-keys
@@ -3836,26 +3831,58 @@
           (switch-to-buffer summary 'norecord))
         (setq in-buffer (current-buffer))
         ;; We disable the pick minor mode commands.
-        (if (setq func (let (gnus-pick-mode)
-                         (lookup-key (current-local-map) keys)))
+        (if (and (setq func (let (gnus-pick-mode)
+			      (lookup-key (current-local-map) keys)))
+		 (functionp func))
             (progn
               (call-interactively func)
-              (setq new-sum-point (point)))
-          (ding))
-        (when (eq in-buffer (current-buffer))
-          (setq selected (gnus-summary-select-article))
-          (set-buffer obuf)
-          (unless not-restore-window
-            (set-window-configuration owin))
-          (when (eq selected 'old)
-	    (article-goto-body)
-            (set-window-start (get-buffer-window (current-buffer))
-                              1)
-            (set-window-point (get-buffer-window (current-buffer))
-                              (point)))
-          (let ((win (get-buffer-window gnus-article-current-summary)))
-            (when win
-              (set-window-point win new-sum-point))))))))
+              (setq new-sum-point (point))
+	      (when (eq in-buffer (current-buffer))
+		(setq selected (gnus-summary-select-article))
+		(set-buffer obuf)
+		(unless not-restore-window
+		  (set-window-configuration owin))
+		(when (eq selected 'old)
+		  (article-goto-body)
+		  (set-window-start (get-buffer-window (current-buffer))
+				    1)
+		  (set-window-point (get-buffer-window (current-buffer))
+				    (point)))
+		(let ((win (get-buffer-window gnus-article-current-summary)))
+		  (when win
+		    (set-window-point win new-sum-point))))    )
+	  (switch-to-buffer gnus-article-buffer)
+          (ding))))))
+
+(defun gnus-article-describe-key (key)
+  "Display documentation of the function invoked by KEY.  KEY is a string."
+  (interactive "kDescribe key: ")
+  (gnus-article-check-buffer)
+  (if (eq (key-binding key) 'gnus-article-read-summary-keys)
+      (save-excursion
+	(set-buffer gnus-article-current-summary)
+	(let (gnus-pick-mode)
+	  (push (elt key 0) unread-command-events)
+	  (setq key (if (featurep 'xemacs)
+			(events-to-keys (read-key-sequence "Describe key: "))
+		      (read-key-sequence "Describe key: "))))
+	(describe-key key))
+    (describe-key key)))
+
+(defun gnus-article-describe-key-briefly (key &optional insert)
+  "Display documentation of the function invoked by KEY.  KEY is a string."
+  (interactive "kDescribe key: \nP")
+  (gnus-article-check-buffer)
+  (if (eq (key-binding key) 'gnus-article-read-summary-keys)
+      (save-excursion
+	(set-buffer gnus-article-current-summary)
+	(let (gnus-pick-mode)
+	  (push (elt key 0) unread-command-events)
+	  (setq key (if (featurep 'xemacs)
+			(events-to-keys (read-key-sequence "Describe key: "))
+		      (read-key-sequence "Describe key: "))))
+	(describe-key-briefly key insert))
+    (describe-key-briefly key insert)))
 
 (defun gnus-article-hide (&optional arg force)
   "Hide all the gruft in the current article.
@@ -4509,9 +4536,15 @@
     (set-buffer gnus-article-buffer)
     (let ((buffer-read-only nil)
 	  (inhibit-point-motion-hooks t))
-      (if (get-text-property end 'invisible)
-	  (gnus-article-unhide-text end (point-max))
-	(gnus-article-hide-text end (point-max) gnus-hidden-properties)))))
+      (if (text-property-any end (point-max) 'article-type 'signature)
+	  (gnus-remove-text-properties-when
+	   'article-type 'signature end (point-max)
+	   (cons 'article-type (cons 'signature
+				     gnus-hidden-properties)))
+	(gnus-add-text-properties-when
+	 'article-type nil end (point-max)
+	 (cons 'article-type (cons 'signature
+				   gnus-hidden-properties)))))))
 
 (defun gnus-button-entry ()
   ;; Return the first entry in `gnus-button-alist' matching this place.