From 052df3346e679576ae01dfb54080a3bdb787dde1 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Wed, 1 Mar 2006 05:33:18 +0000 Subject: [PATCH] * mh-limit.el (mh-narrow-to-cc, mh-narrow-to-from) (mh-narrow-to-subject, mh-narrow-to-to): Fix inability to narrow to subjects with special characters by quoting regular expression characters in pick expression derived from existing subjects and other fields (closes SF #1432548). * mh-utils.el (mh-pick-regexp-chars, mh-quote-pick-expr): New variable and function for quoting pick regular expression characters (closes SF #1432548). --- lisp/mh-e/ChangeLog | 9 +++++++++ lisp/mh-e/mh-limit.el | 12 ++++++++---- lisp/mh-e/mh-utils.el | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index 36a02532455..b94c2522477 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,5 +1,11 @@ 2006-02-28 Bill Wohler + * mh-limit.el (mh-narrow-to-cc, mh-narrow-to-from) + (mh-narrow-to-subject, mh-narrow-to-to): Fix inability to narrow + to subjects with special characters by quoting regular expression + characters in pick expression derived from existing subjects and + other fields (closes SF #1432548). + * mh-utils.el (mh-image-load-path): Rename variable to mh-image-directory. (mh-image-load-path): Access mh-image-directory instead of @@ -9,6 +15,9 @@ the entire filesystem (or infinite loop). Don't append slash to folder. These fixes fix problems observed with the pick search. Thanks to Thomas Baumann for the help (closes SF #1435381). + (mh-pick-regexp-chars, mh-quote-pick-expr): New variable and + function for quoting pick regular expression characters (closes SF + #1432548). 2006-02-27 Bill Wohler diff --git a/lisp/mh-e/mh-limit.el b/lisp/mh-e/mh-limit.el index 7a90b890cad..f2609263b91 100644 --- a/lisp/mh-e/mh-limit.el +++ b/lisp/mh-e/mh-limit.el @@ -89,7 +89,8 @@ With a prefix argument, edit PICK-EXPR. Use \\\\[mh-widen] to undo this command." (interactive - (list (mh-edit-pick-expr (mh-current-message-header-field 'cc)))) + (list (mh-edit-pick-expr + (mh-quote-pick-expr (mh-current-message-header-field 'cc))))) (mh-narrow-to-header-field 'cc pick-expr)) ;;;###mh-autoload @@ -99,7 +100,8 @@ With a prefix argument, edit PICK-EXPR. Use \\\\[mh-widen] to undo this command." (interactive - (list (mh-edit-pick-expr (mh-current-message-header-field 'from)))) + (list (mh-edit-pick-expr + (mh-quote-pick-expr (mh-current-message-header-field 'from))))) (mh-narrow-to-header-field 'from pick-expr)) ;;;###mh-autoload @@ -122,7 +124,8 @@ With a prefix argument, edit PICK-EXPR. Use \\\\[mh-widen] to undo this command." (interactive - (list (mh-edit-pick-expr (mh-current-message-header-field 'subject)))) + (list (mh-edit-pick-expr + (mh-quote-pick-expr (mh-current-message-header-field 'subject))))) (mh-narrow-to-header-field 'subject pick-expr)) ;;;###mh-autoload @@ -132,7 +135,8 @@ With a prefix argument, edit PICK-EXPR. Use \\\\[mh-widen] to undo this command." (interactive - (list (mh-edit-pick-expr (mh-current-message-header-field 'to)))) + (list (mh-edit-pick-expr + (mh-quote-pick-expr (mh-current-message-header-field 'to))))) (mh-narrow-to-header-field 'to pick-expr)) diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index ebd342b6786..6ffaf6d499d 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -159,6 +159,23 @@ See also variable `mh-image-load-path-called-flag'." (funcall function (car list)) (setq list (cdr list)))) +(defvar mh-pick-regexp-chars ".*$[" + "List of special characters in pick regular expressions.") + +;;;###mh-autoload +(defun mh-quote-pick-expr (pick-expr) + "Quote `mh-pick-regexp-chars' in PICK-EXPR. +PICK-EXPR is a list of strings. Return nil if PICK-EXPR is nil." + (let ((quoted-pick-expr)) + (dolist (string pick-expr) + (when (and string + (not (string-equal string ""))) + (loop for i from 0 to (1- (length mh-pick-regexp-chars)) do + (let ((s (string ?\\ (aref mh-pick-regexp-chars i)))) + (setq string (mh-replace-regexp-in-string s s string t t)))) + (setq quoted-pick-expr (append quoted-pick-expr (list string))))) + quoted-pick-expr)) + ;;;###mh-autoload (defun mh-replace-string (old new) "Replace all occurrences of OLD with NEW in the current buffer. -- 2.39.5