Mercurial > emacs
diff lisp/mail/mh-pick.el @ 48595:8aaba207e44b
Upgraded to MH-E version 7.0.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Fri, 29 Nov 2002 18:15:21 +0000 |
parents | 2568d5a27317 |
children | 30c4902b654d |
line wrap: on
line diff
--- a/lisp/mail/mh-pick.el Fri Nov 29 18:02:52 2002 +0000 +++ b/lisp/mail/mh-pick.el Fri Nov 29 18:15:21 2002 +0000 @@ -1,4 +1,4 @@ -;;; mh-pick.el --- make a search pattern and search for a message in mh-e +;;; mh-pick.el --- make a search pattern and search for a message in MH-E ;; Copyright (C) 1993, 1995, 2001 Free Software Foundation, Inc. @@ -26,21 +26,24 @@ ;;; Commentary: -;; Internal support for mh-e package. +;; Internal support for MH-E package. ;;; Change Log: -;; $Id: mh-pick.el,v 1.11 2001/12/29 00:10:41 wohler Exp $ +;; $Id: mh-pick.el,v 1.21 2002/11/05 21:43:16 wohler Exp $ ;;; Code: -(provide 'mh-pick) (require 'mh-e) (require 'easymenu) (require 'gnus-util) -(defvar mh-pick-mode-hook nil - "Invoked in `mh-pick-mode' on a new pattern.") +;;; Hooks + +(defcustom mh-pick-mode-hook nil + "Invoked upon entry to `mh-pick-mode'." + :type 'hook + :group 'mh-hook) ;;; Internal variables: @@ -51,6 +54,7 @@ (defun mh-search-folder (folder) "Search FOLDER for messages matching a pattern. +This function uses the MH command `pick' to do the work. Add the messages found to the sequence named `search'." (interactive (list (mh-prompt-for-folder "Search" mh-current-folder @@ -60,10 +64,13 @@ (not (y-or-n-p "Reuse pattern? "))) (mh-make-pick-template) (message "")) - (setq mh-searching-folder folder)) + (setq mh-searching-folder folder) + (message "%s" (substitute-command-keys + (concat "Type \\[mh-do-pick-search] to search messages, " + "\\[mh-help] for help.")))) (defun mh-make-pick-template () - ;; Initialize the current buffer with a template for a pick pattern. + "Initialize the current buffer with a template for a pick pattern." (erase-buffer) (insert "From: \n" "To: \n" @@ -75,10 +82,35 @@ (goto-char (point-min)) (end-of-line)) +;;; Menu extracted from mh-menubar.el V1.1 (31 July 2001) +(easy-menu-define + mh-pick-menu mh-pick-mode-map "Menu for MH-E pick-mode" + '("Pick" + ["Execute the Search" mh-do-pick-search t])) + + +;;; Help Messages +;;; Group messages logically, more or less. +(defvar mh-pick-mode-help-messages + '((nil + "Search messages: \\[mh-do-pick-search]\n" + "Move to a field by typing C-c C-f C-<field>\n" + "where <field> is the first letter of the desired field.")) + "Key binding cheat sheet. + +This is an associative array which is used to show the most common commands. +The key is a prefix char. The value is one or more strings which are +concatenated together and displayed in the minibuffer if ? is pressed after +the prefix character. The special key nil is used to display the +non-prefixed commands. + +The substitutions described in `substitute-command-keys' are performed as +well.") + (put 'mh-pick-mode 'mode-class 'special) (define-derived-mode mh-pick-mode fundamental-mode "MH-Pick" - "Mode for creating search templates in mh-e.\\<mh-pick-mode-map> + "Mode for creating search templates in MH-E.\\<mh-pick-mode-map> After each field name, enter the pattern to search for. If a field's value does not matter for the search, leave it empty. To search the @@ -87,13 +119,16 @@ To effect a logical \"or\", use \\[mh-search-folder] multiple times. When you have finished, type \\[mh-do-pick-search] to do the search. -This mode runs the hook `mh-pick-mode-hook'. +The value of `mh-pick-mode-hook' is a list of functions to be called, +with no arguments, upon entry to this mode. \\{mh-pick-mode-map}" (make-local-variable 'mh-searching-folder) - (easy-menu-add mh-pick-menu)) - + (easy-menu-add mh-pick-menu) + (make-local-variable 'mh-help-messages) + (setq mh-help-messages mh-pick-mode-help-messages) + (run-hooks 'mh-pick-mode-hook)) (defun mh-do-pick-search () "Find messages that match the qualifications in the current pattern buffer. @@ -104,7 +139,6 @@ (searching-buffer mh-searching-folder) range msgs - (finding-messages t) (pattern nil) (new-buffer nil)) (save-excursion @@ -134,17 +168,16 @@ (mh-add-msgs-to-seq msgs 'search) (delete-other-windows))) - -(defun mh-seq-from-command (folder seq seq-command) - ;; In FOLDER, make a sequence named SEQ by executing COMMAND. - ;; COMMAND is a list. The first element is a program name - ;; and the subsequent elements are its arguments, all strings. +(defun mh-seq-from-command (folder seq command) + "In FOLDER, make a sequence named SEQ by executing COMMAND. +COMMAND is a list. The first element is a program name +and the subsequent elements are its arguments, all strings." (let ((msg) (msgs ()) (case-fold-search t)) (save-excursion (save-window-excursion - (if (eq 0 (apply 'mh-exec-cmd-quiet nil seq-command)) + (if (eq 0 (apply 'mh-exec-cmd-quiet nil command)) ;; "pick" outputs one number per line (while (setq msg (car (mh-read-msg-list))) (setq msgs (cons msg msgs)) @@ -153,17 +186,16 @@ (setq msgs (nreverse msgs)) ;put in ascending order msgs))) - (defun mh-next-pick-field (buffer) - ;; Return the next piece of a pick argument that can be extracted from the - ;; BUFFER. - ;; Return a list like ("--fieldname" "pattern") or ("-search" "bodypat") - ;; or NIL if no pieces remain. + "Return the next piece of a pick argument extracted from BUFFER. +Return a list like (\"--fieldname\" \"pattern\") or (\"-search\" \"bodypat\") +or nil if no pieces remain." (set-buffer buffer) (let ((case-fold-search t)) (cond ((eobp) nil) - ((re-search-forward "^\\([a-z][^: \t\n]*\\):[ \t]*\\([a-z0-9].*\\)$" nil t) + ((re-search-forward "^\\([a-z][^: \t\n]*\\):[ \t]*\\([a-z0-9].*\\)$" + nil t) (let* ((component (format "--%s" (downcase (buffer-substring (match-beginning 1) @@ -180,8 +212,12 @@ (t nil)))) + + ;;; Build the pick-mode keymap: +;;; If this changes, modify mh-pick-mode-help-messages accordingly, above. (gnus-define-keys mh-pick-mode-map + "\C-c?" mh-help "\C-c\C-c" mh-do-pick-search "\C-c\C-f\C-b" mh-to-field "\C-c\C-f\C-c" mh-to-field @@ -198,10 +234,10 @@ "\C-c\C-fs" mh-to-field "\C-c\C-ft" mh-to-field) -;;; Menu extracted from mh-menubar.el V1.1 (31 July 2001) -(easy-menu-define - mh-pick-menu mh-pick-mode-map "Menu for mh-e pick-mode" - '("Pick" - ["Execute the Search" mh-do-pick-search t])) +(provide 'mh-pick) + +;;; Local Variables: +;;; sentence-end-double-space: nil +;;; End: ;;; mh-pick.el ends here