Index: flyspell.el =================================================================== RCS file: /sources/emacs/emacs/lisp/textmodes/flyspell.el,v retrieving revision 1.122 diff -b -u -w -r1.122 flyspell.el --- flyspell.el 13 Aug 2007 13:40:48 -0000 1.122 +++ flyspell.el 30 Aug 2007 15:33:39 -0000 @@ -66,12 +66,22 @@ :type 'boolean) (defcustom flyspell-mark-duplications-flag t - "Non-nil means Flyspell reports a repeated word as an error. + "Non-nil means Flyspell treats repeated words as errors. +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 exception 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