diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6a3447dc01e..255aad43bc4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2007-08-31 Micha,Ak(Bl Cadilhac + * textmodes/flyspell.el (flyspell-mark-duplications-exceptions): + New variable. List of exceptions for the duplicated word rule. + (flyspell-mark-duplications-flag): Mention it. + (flyspell-word): Treat it. + * files.el (create-file-buffer): If the filename sans directory starts with spaces, remove them. diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 0b5dfa4cc54..9d5c7868d13 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -67,11 +67,21 @@ Non-nil means use highlight, nil means use minibuffer messages." (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 @@ Mostly we check word delimiters." (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