unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
Cc: k.stevens@ieee.org, ispell-el-bugs@itcorp.com
Subject: ispell highlighting
Date: Wed, 12 Jan 2005 03:59:09 +0200	[thread overview]
Message-ID: <87wtujuzd3.fsf@jurta.org> (raw)

Ispell is one of the few packages for which it would be natural to
take advantage of isearch lazy highlighting.  Actually, ispell.el
already uses isearch highlighting to highlight spelling errors,
but only for XEmacs in `ispell-highlight-spelling-error-xemacs'.
(BTW, with the recent removal of arguments of `isearch-dehighlight'
in Emacs CVS the byte compiler now started to complain in
this function about missing arguments of `isearch-dehighlight'.
Is it possible to enclose this line in a conditional construct
for its compilation only in XEmacs?)

I don't know what is the best way to get this change installed.
Would maintainers of ispell.el prefer to update it on the Web page
or is it right to simply install it in Emacs CVS?

Anyway, the code below takes care of compatibility with other Emacs
versions and will use lazy highlighting only in the presence of
recently renamed lazy-highlight variables which guarantees that
the code will correctly work (together with another patch I have just
submitted and which I hope will be installed as well).

Index: lisp/textmodes/ispell.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/textmodes/ispell.el,v
retrieving revision 1.151
diff -u -r1.151 ispell.el
--- lisp/textmodes/ispell.el	22 Dec 2004 00:22:58 -0000	1.151
+++ lisp/textmodes/ispell.el	12 Jan 2005 01:01:30 -0000
@@ -237,7 +237,17 @@
   :type '(choice (const block) (const :tag "off" nil) (const :tag "on" t))
   :group 'ispell)
 
-(defcustom ispell-highlight-face 'highlight
+(defcustom ispell-lazy-highlight (boundp 'lazy-highlight-cleanup)
+  "*Controls the lazy-highlighting of spelling errors.
+When non-nil, all text in the buffer matching the current spelling
+error is highlighted lazily using isearch lazy highlighting (see
+`lazy-highlight-initial-delay' and `lazy-highlight-interval')."
+  :type 'boolean
+  :group 'lazy-highlight
+  :group 'ispell
+  :version "21.4")
+
+(defcustom ispell-highlight-face (if ispell-lazy-highlight 'isearch 'highlight)
   "*The face used for Ispell highlighting.  For Emacses with overlays.
 Possible values are `highlight', `modeline', `secondary-selection',
 `region', and `underline'.
@@ -2142,8 +2152,17 @@
   (if highlight
       (progn
 	(setq ispell-overlay (make-overlay start end))
+	(overlay-put ispell-overlay 'priority 1) ;higher than lazy overlays
 	(overlay-put ispell-overlay 'face ispell-highlight-face))
-    (delete-overlay ispell-overlay)))
+    (delete-overlay ispell-overlay))
+  (if (and ispell-lazy-highlight (boundp 'lazy-highlight-cleanup))
+      (if highlight
+	  (let ((isearch-string (buffer-substring-no-properties start end))
+		(isearch-regexp nil)
+		(isearch-case-fold-search nil))
+	    (isearch-lazy-highlight-new-loop))
+	(isearch-lazy-highlight-cleanup lazy-highlight-cleanup)
+	(setq isearch-lazy-highlight-last-string nil))))
 
 
 (defun ispell-highlight-spelling-error (start end &optional highlight refresh)

-- 
Juri Linkov
http://www.jurta.org/emacs/

             reply	other threads:[~2005-01-12  1:59 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-12  1:59 Juri Linkov [this message]
2005-01-13  3:13 ` ispell highlighting Richard Stallman
2005-01-18 10:47 ` Juri Linkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wtujuzd3.fsf@jurta.org \
    --to=juri@jurta.org \
    --cc=ispell-el-bugs@itcorp.com \
    --cc=k.stevens@ieee.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).