From dbf6c5a160bd52f5025c45a6babbb7ca33d4bda3 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 10 Mar 2012 16:36:42 +0200 Subject: [PATCH] Allow ^substr, substr=, ~word in mairix searches via the form widget. lisp/net/mairix.el (mairix-replace-invalid-chars): Rename from mairix-replace-illegal-chars; all callers changed. Don't remove ^, ~, and = characters: they are meaningful in mairix search specs. (mairix-widget-create-query): Add usage information about mairix search forms: negating words, searching for substrings, etc. --- lisp/ChangeLog | 9 +++++++++ lisp/net/mairix.el | 22 +++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6371ad619d2..338a8668e56 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2012-03-10 Eli Zaretskii + + * net/mairix.el (mairix-replace-invalid-chars): Rename from + mairix-replace-illegal-chars; all callers changed. Don't remove + ^, ~, and = characters: they are meaningful in mairix search + specs. + (mairix-widget-create-query): Add usage information about mairix + search forms: negating words, searching for substrings, etc. + 2012-03-10 Jae-hyeon Park (tiny change) * international/fontset.el (font-encoding-alist): Add an entry for diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el index 84343b7de00..360b2286b7b 100644 --- a/lisp/net/mairix.el +++ b/lisp/net/mairix.el @@ -570,10 +570,10 @@ whole threads. Function returns t if messages were found." mairix-output-buffer))) (zerop rval))) -(defun mairix-replace-illegal-chars (header) - "Replace illegal characters in HEADER for mairix query." +(defun mairix-replace-invalid-chars (header) + "Replace invalid characters in HEADER for mairix query." (when header - (while (string-match "[^-.@/,& [:alnum:]]" header) + (while (string-match "[^-.@/,^=~& [:alnum:]]" header) (setq header (replace-match "" t t header))) (while (string-match "[& ]" header) (setq header (replace-match "," t t header))) @@ -620,7 +620,7 @@ See %s for details" mairix-output-buffer))) (concat (nth 1 cur) ":" - (mairix-replace-illegal-chars + (mairix-replace-invalid-chars (widget-value (cadr (assoc (concat "e" (car (cddr cur))) widgets))))) query))) @@ -652,9 +652,17 @@ Fill in VALUES if based on an article." (kill-all-local-variables) (erase-buffer) (widget-insert - "Specify your query for Mairix (check boxes for activating fields):\n\n") + "Specify your query for Mairix using check boxes for activating fields.\n\n") (widget-insert - "(Whitespaces will be converted to ',' (i.e. AND). Use '/' for OR.)\n\n") + (concat "Use ~word to match messages " + (propertize "not" 'face 'italic) + " containing the word)\n" + " substring= to match words containing the substring\n" + " substring=N to match words containing the substring, allowing\n" + " up to N errors(mising/extra/different letters)\n" + " ^substring= to match the substring at the beginning of a word.\n")) + (widget-insert + "Whitespace will be converted to ',' (i.e. AND). Use '/' for OR.\n\n") (setq mairix-widgets (mairix-widget-build-editable-fields values)) (when (member 'flags mairix-widget-other) (widget-insert "\nFlags:\n Seen: ") @@ -935,7 +943,7 @@ Use cursor keys or C-n,C-p to select next/previous search.\n\n") (lambda (field) (list (car (cddr field)) (if (car field) - (mairix-replace-illegal-chars + (mairix-replace-invalid-chars (funcall get-mail-header (car field))) nil)))) mairix-widget-fields-list))) -- 2.39.2