changeset 83819:a3c6b2cd98cc

(flyspell-mark-duplications-exceptions): New variable. List of exceptions for the duplicated word rule. (flyspell-mark-duplications-flag): Mention it. (flyspell-word): Treat it.
author Michaël Cadilhac <michael.cadilhac@lrde.org>
date Fri, 31 Aug 2007 13:41:23 +0000
parents 2873d23e35c8
children 97ba59b822d7
files lisp/textmodes/flyspell.el
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/flyspell.el	Fri Aug 31 13:30:02 2007 +0000
+++ b/lisp/textmodes/flyspell.el	Fri Aug 31 13:41:23 2007 +0000
@@ -67,11 +67,21 @@
 
 (defcustom flyspell-mark-duplications-flag t
   "Non-nil means Flyspell reports a repeated word as an error.
+See `flyspell-mark-duplications-exceptions' to add exceptions to this rule.
 Detection of repeated words is not implemented in
 \"large\" regions; see `flyspell-large-region'."
   :group 'flyspell
   :type 'boolean)
 
+(defcustom flyspell-mark-duplications-exceptions
+  '(("francais" . ("nous" "vous")))
+  "A list of exceptions for duplicated words.
+It should be a list of (LANGUAGE . EXCEPTION-LIST).  LANGUAGE is matched
+against the current dictionary and EXCEPTION-LIST is a list of strings.
+The duplicated word is downcased before it is compared with the exceptions."
+  :group 'flyspell
+  :type '(alist :key-type string :value-type (repeat string)))
+
 (defcustom flyspell-sort-corrections nil
   "Non-nil means, sort the corrections alphabetically before popping them."
   :group 'flyspell
@@ -1022,6 +1032,13 @@
 		     (and (> start (point-min))
 			  (not (memq (char-after (1- start)) '(?\} ?\\)))))
 		 flyspell-mark-duplications-flag
+		 (not (catch 'exception
+			(dolist (except flyspell-mark-duplications-exceptions)
+			  (and (string= (or ispell-local-dictionary
+					    ispell-dictionary)
+					(car except))
+			       (member (downcase word) (cdr except))
+			       (throw 'exception t)))))
 		 (save-excursion
 		   (goto-char start)
 		   (let* ((bound