emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/erc/erc-spelling.el


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/erc/erc-spelling.el
Date: Sun, 05 Feb 2006 12:42:54 +0000

Index: emacs/lisp/erc/erc-spelling.el
diff -u emacs/lisp/erc/erc-spelling.el:1.1 emacs/lisp/erc/erc-spelling.el:1.2
--- emacs/lisp/erc/erc-spelling.el:1.1  Sun Jan 29 13:08:57 2006
+++ emacs/lisp/erc/erc-spelling.el      Sun Feb  5 12:42:51 2006
@@ -64,28 +64,51 @@
   "Enable flyspell mode in an ERC buffer."
   (let ((name (downcase (buffer-name)))
         (dicts erc-spelling-dictionaries))
-    (while (and dicts
-                (not (string= name (downcase (caar dicts)))))
-      (setq dicts (cdr dicts)))
-    (setq ispell-local-dictionary
-          (if dicts
-              (cadr (car dicts))
-            (let ((server (erc-server-buffer)))
-              (if server
-                  (with-current-buffer server
-                    ispell-local-dictionary)
-                nil)))))
+    (when dicts
+      (while (and dicts
+                  (not (string= name (downcase (caar dicts)))))
+        (setq dicts (cdr dicts)))
+      (setq ispell-local-dictionary
+            (if dicts
+                (cadr (car dicts))
+              (let ((server (erc-server-buffer)))
+                (if server
+                    (with-current-buffer server
+                      ispell-local-dictionary)
+                  nil))))))
   (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
   (flyspell-mode 1))
 
-(put 'erc-mode
-     'flyspell-mode-predicate
-     'erc-spelling-flyspell-verify)
+(defun erc-spelling-unhighlight-word (word)
+  "Unhighlight the given WORD.
+The cadr is the beginning and the caddr is the end."
+  (let ((beg (nth 1 word))
+        (end (nth 2 word)))
+    (flyspell-unhighlight-at beg)
+    (when (> end beg)
+      (flyspell-unhighlight-at (1- end)))))
 
 (defun erc-spelling-flyspell-verify ()
   "Flyspell only the input line, nothing else."
-  (> (point)
-     erc-input-marker))
+  (let ((word-data (and (boundp 'flyspell-word)
+                        flyspell-word)))
+    (when word-data
+      (cond ((< (point) erc-input-marker)
+             nil)
+            ;; don't spell-check names of users
+            ((and erc-channel-users
+                  (erc-get-channel-user (car word-data)))
+             (erc-spelling-unhighlight-word word-data)
+             nil)
+            ;; if '/' occurs before the word, don't spell-check it
+            ((eq (char-before (nth 1 word-data)) ?/)
+             (erc-spelling-unhighlight-word word-data)
+             nil)
+            (t t)))))
+
+(put 'erc-mode
+     'flyspell-mode-predicate
+     'erc-spelling-flyspell-verify)
 
 (provide 'erc-spelling)
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]