Subject: bug#14427: closed (Re: bug#14427: 24.3.50; Highlight symbol at point)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 03 Jun 2013 08:58:02 +0000

Your bug report

#14427: 24.3.50; Highlight symbol at point

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
14427: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14427
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#14427: 24.3.50; Highlight symbol at point
From: Juri Linkov <[email-masked]>
To: Jambunathan K <[email-masked]>
Cc: [email-masked]
Date: Mon, 03 Jun 2013 11:54:05 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

>> If you could commit this change, I can start using it right away.

Thanks for the reminder, this is installed now.

> Small note.  I haven't tested the isearch portions of the patch.

Isearch integration with hi-lock is far from ideal yet.
The limiting factor is that hi-lock is based on font-lock
when font-lock is enabled.  Otherwise, it is plain search-based.

Perhaps we should check in `isearch-highlight-regexp'
whether font-lock is active in the current buffer,
and when font-lock is disabled then let-bind all relevant
search variables like `lax-whitespace', `search-invisible',
filters, etc.  So search-based hi-lock will be able to highlight
correctly the same matches as isearch.

This will provide the correct conversion of the search parameters
to hi-lock (at least partly for the case when font-lock is disabled
and hi-lock is search-based).

Subject: 24.3.50; Highlight symbol at point
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Tue, 21 May 2013 01:54:34 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

This feature request mostly doesn't depend on the outcome of bug#14405.
I don't know why Jambunathan didn't propose this feature earlier, but it
logically follows from his other improvements in hi-lock.el, i.e. the
feature that doesn't ask for a face and automatically uses the next face
from the list of available faces suggests also a command that doesn't ask
for a symbol and automatically uses the symbol at point:

=== modified file 'lisp/hi-lock.el'
--- lisp/hi-lock.el	2013-03-31 13:34:35 +0000
+++ lisp/hi-lock.el	2013-05-20 22:52:54 +0000
@@ -483,6 +461,27 @@ (defun hi-lock-face-phrase-buffer (regex
   (unless hi-lock-mode (hi-lock-mode 1))
   (hi-lock-set-pattern regexp face))
 
+;;;###autoload
+(defalias 'highlight-symbol-at-point 'hi-lock-face-symbol-at-point)
+;;;###autoload
+(defun hi-lock-face-symbol-at-point ()
+  "Set face of each match of the symbol at point.
+Use `find-tag-default-as-symbol-regexp' to retrieve the symbol at point.
+Use non-nil `hi-lock-auto-select-face' to retrieve the next face
+from `hi-lock-face-defaults' automatically.
+
+Use Font lock mode, if enabled, to highlight symbol at point.
+Otherwise, use overlays for highlighting.  If overlays are used,
+the highlighting will not update as you type."
+  (interactive)
+  (let* ((regexp (hi-lock-regexp-okay
+		  (find-tag-default-as-symbol-regexp)))
+	 (hi-lock-auto-select-face t)
+	 (face (hi-lock-read-face-name)))
+    (or (facep face) (setq face 'hi-yellow))
+    (unless hi-lock-mode (hi-lock-mode 1))
+    (hi-lock-set-pattern regexp face)))
+
 (defun hi-lock-keyword->face (keyword)
   (cadr (cadr (cadr keyword))))    ; Keyword looks like (REGEXP (0 'FACE) ...).