annotate lisp/hi-lock.el @ 76022:e892213b9815

(w32_set_scroll_bar_thumb): Don't resize scroll-bar handle while dragging, except when we get close to eob. Fix position and size calculations so we don't scroll backwards just by clicking on the handle.
author Kim F. Storm <storm@cua.dk>
date Mon, 19 Feb 2007 14:45:39 +0000
parents a27300a96e36
children f8ec7356b88a 52a7f3f50b89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36708
diff changeset
1 ;;; hi-lock.el --- minor mode for interactive automatic highlighting
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64117
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
4 ;; 2005, 2006, 2007 Free Software Foundation, Inc.
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: David M. Koppelman, koppel@ee.lsu.edu
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Keywords: faces, minor-mode, matching, display
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; any later version.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 61398
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 61398
diff changeset
24 ;; Boston, MA 02110-1301, USA.
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36708
diff changeset
26 ;;; Commentary:
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48256
diff changeset
27 ;;
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;; With the hi-lock commands text matching interactively entered
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;; regexp's can be highlighted. For example, `M-x highlight-regexp
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;; RET clearly RET RET' will highlight all occurrences of `clearly'
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;; using a yellow background face. New occurrences of `clearly' will
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;; be highlighted as they are typed. `M-x unhighlight-regexp RET'
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 ;; will remove the highlighting. Any existing face can be used for
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 ;; highlighting and a set of appropriate faces is provided. The
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35 ;; regexps can be written into the current buffer in a form that will
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;; be recognized the next time the corresponding file is read.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 ;; Applications:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 ;; In program source code highlight a variable to quickly see all
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 ;; places it is modified or referenced:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 ;; M-x highlight-regexp ground_contact_switches_closed RET RET
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 ;; In a shell or other buffer that is showing lots of program
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 ;; output, highlight the parts of the output you're interested in:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 ;; M-x highlight-regexp Total execution time [0-9]+ RET hi-blue-b RET
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 ;; In buffers displaying tables, highlight the lines you're interested in:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 ;; M-x highlight-lines-matching-regexp January 2000 RET hi-black-b RET
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 ;; When writing text, highlight personal cliches. This can be
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 ;; amusing.
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
53 ;; M-x highlight-phrase as can be seen RET RET
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 ;;
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
55 ;; Setup:
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 ;;
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 ;; Put the following code in your .emacs file. This turns on
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
58 ;; hi-lock mode and adds a "Regexp Highlighting" entry
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 ;; to the edit menu.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 ;;
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
61 ;; (global-hi-lock-mode 1)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48256
diff changeset
62 ;;
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 ;; You might also want to bind the hi-lock commands to more
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 ;; finger-friendly sequences:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 ;; (define-key hi-lock-map "\C-z\C-h" 'highlight-lines-matching-regexp)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 ;; (define-key hi-lock-map "\C-zi" 'hi-lock-find-patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 ;; (define-key hi-lock-map "\C-zh" 'highlight-regexp)
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
69 ;; (define-key hi-lock-map "\C-zp" 'highlight-phrase)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 ;; (define-key hi-lock-map "\C-zr" 'unhighlight-regexp)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 ;; (define-key hi-lock-map "\C-zb" 'hi-lock-write-interactive-patterns))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 ;; See the documentation for hi-lock-mode `C-h f hi-lock-mode' for
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 ;; additional instructions.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 ;; Sample file patterns:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 ; Hi-lock: (("^;;; .*" (0 (quote hi-black-hb) t)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 ; Hi-lock: ( ("make-variable-buffer-\\(local\\)" (0 font-lock-keyword-face)(1 'italic append)))))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 ; Hi-lock: end
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 ;;; Code:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83
30584
b823f1c83a00 (toplevel): Require font-lock.
Eli Zaretskii <eliz@gnu.org>
parents: 30565
diff changeset
84 (eval-and-compile
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 (require 'font-lock))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86
66960
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
87 (defgroup hi-lock nil
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 "Interactively add and remove font-lock patterns for highlighting text."
66960
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
89 :link '(custom-manual "(emacs)Highlight Interactively")
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
90 :group 'font-lock)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 (defcustom hi-lock-file-patterns-range 10000
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 "Limit of search in a buffer for hi-lock patterns.
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
94 When a file is visited and hi-lock mode is on, patterns starting
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 up to this limit are added to font-lock's patterns. See documentation
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 of functions `hi-lock-mode' and `hi-lock-find-patterns'."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 :type 'integer
66960
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
98 :group 'hi-lock)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99
67765
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
100 (defcustom hi-lock-highlight-range 200000
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
101 "Size of area highlighted by hi-lock when font-lock not active.
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
102 Font-lock is not active in buffers that do their own highlighting,
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
103 such as the buffer created by `list-colors-display'. In those buffers
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
104 hi-lock patterns will only be applied over a range of
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
105 `hi-lock-highlight-range' characters. If font-lock is active then
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
106 highlighting will be applied throughout the buffer."
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
107 :type 'integer
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
108 :group 'hi-lock)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
109
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 (defcustom hi-lock-exclude-modes
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 '(rmail-mode mime/viewer-mode gnus-article-mode)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 "List of major modes in which hi-lock will not run.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 For security reasons since font lock patterns can specify function
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 calls."
35215
2be11f207ca8 (hi-lock-exclude-modes): Fix :type.
Dave Love <fx@gnu.org>
parents: 33974
diff changeset
115 :type '(repeat symbol)
66960
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
116 :group 'hi-lock)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 (defgroup hi-lock-faces nil
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 "Faces for hi-lock."
66960
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
121 :group 'hi-lock
29560f2ff8ed (hi-lock): Rename this defgroup from
Juri Linkov <juri@jurta.org>
parents: 66833
diff changeset
122 :group 'faces)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 (defface hi-yellow
61398
499e1a6b0822 (hi-green): Fix face spec.
Kim F. Storm <storm@cua.dk>
parents: 61394
diff changeset
125 '((((min-colors 88) (background dark))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
126 (:background "yellow1" :foreground "black"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
127 (((background dark)) (:background "yellow" :foreground "black"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
128 (((min-colors 88)) (:background "yellow1"))
30896
ca514eff4924 (hi-yellow, hi-pink, hi-green, hi-blue): Force the foreground color to
Miles Bader <miles@gnu.org>
parents: 30590
diff changeset
129 (t (:background "yellow")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 "Default face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 (defface hi-pink
33780
00803fb0f58e (hi-lock-refontify): Don't call non-existent
Gerd Moellmann <gerd@gnu.org>
parents: 31745
diff changeset
134 '((((background dark)) (:background "pink" :foreground "black"))
30896
ca514eff4924 (hi-yellow, hi-pink, hi-green, hi-blue): Force the foreground color to
Miles Bader <miles@gnu.org>
parents: 30590
diff changeset
135 (t (:background "pink")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 (defface hi-green
61398
499e1a6b0822 (hi-green): Fix face spec.
Kim F. Storm <storm@cua.dk>
parents: 61394
diff changeset
140 '((((min-colors 88) (background dark))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
141 (:background "green1" :foreground "black"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
142 (((background dark)) (:background "green" :foreground "black"))
61398
499e1a6b0822 (hi-green): Fix face spec.
Kim F. Storm <storm@cua.dk>
parents: 61394
diff changeset
143 (((min-colors 88)) (:background "green1"))
30896
ca514eff4924 (hi-yellow, hi-pink, hi-green, hi-blue): Force the foreground color to
Miles Bader <miles@gnu.org>
parents: 30590
diff changeset
144 (t (:background "green")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (defface hi-blue
33780
00803fb0f58e (hi-lock-refontify): Don't call non-existent
Gerd Moellmann <gerd@gnu.org>
parents: 31745
diff changeset
149 '((((background dark)) (:background "light blue" :foreground "black"))
30896
ca514eff4924 (hi-yellow, hi-pink, hi-green, hi-blue): Force the foreground color to
Miles Bader <miles@gnu.org>
parents: 30590
diff changeset
150 (t (:background "light blue")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154 (defface hi-black-b
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 '((t (:weight bold)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159 (defface hi-blue-b
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
160 '((((min-colors 88)) (:weight bold :foreground "blue1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
161 (t (:weight bold :foreground "blue")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165 (defface hi-green-b
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
166 '((((min-colors 88)) (:weight bold :foreground "green1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
167 (t (:weight bold :foreground "green")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 (defface hi-red-b
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
172 '((((min-colors 88)) (:weight bold :foreground "red1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 60902
diff changeset
173 (t (:weight bold :foreground "red")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 (defface hi-black-hb
31745
d311d1655d29 (hi-black-hb):
Miles Bader <miles@gnu.org>
parents: 30896
diff changeset
178 '((t (:weight bold :height 1.67 :inherit variable-pitch)))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 "Face for hi-lock mode."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 :group 'hi-lock-faces)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 (defvar hi-lock-file-patterns nil
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 "Patterns found in file for hi-lock. Should not be changed.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 (defvar hi-lock-interactive-patterns nil
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 "Patterns provided to hi-lock by user. Should not be changed.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 (defvar hi-lock-face-history
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 (list "hi-yellow" "hi-pink" "hi-green" "hi-blue" "hi-black-b"
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 "hi-blue-b" "hi-red-b" "hi-green-b" "hi-black-hb")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 "History list of faces for hi-lock interactive functions.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 ;(dolist (f hi-lock-face-history) (unless (facep f) (error "%s not a face" f)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 (defvar hi-lock-regexp-history nil
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 "History of regexps used for interactive fontification.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 (defvar hi-lock-file-patterns-prefix "Hi-lock"
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 "Regexp for finding hi-lock patterns at top of file.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
201 (defvar hi-lock-archaic-interface-message-used nil
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
202 "True if user alerted that `global-hi-lock-mode' is now the global switch.
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
203 Earlier versions of hi-lock used `hi-lock-mode' as the global switch;
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
204 the message is issued if it appears that `hi-lock-mode' is used assuming
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
205 that older functionality. This variable avoids multiple reminders.")
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
206
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
207 (defvar hi-lock-archaic-interface-deduce nil
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
208 "If non-nil, sometimes assume that `hi-lock-mode' means `global-hi-lock-mode'.
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
209 Assumption is made if `hi-lock-mode' used in the *scratch* buffer while
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
210 a library is being loaded.")
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
211
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (make-variable-buffer-local 'hi-lock-interactive-patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (put 'hi-lock-interactive-patterns 'permanent-local t)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 (make-variable-buffer-local 'hi-lock-regexp-history)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 (put 'hi-lock-regexp-history 'permanent-local t)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 (make-variable-buffer-local 'hi-lock-file-patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (put 'hi-lock-file-patterns 'permanent-local t)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 (defvar hi-lock-menu (make-sparse-keymap "Hi Lock")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 "Menu for hi-lock mode.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 (define-key-after hi-lock-menu [highlight-regexp]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223 '(menu-item "Highlight Regexp..." highlight-regexp
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 :help "Highlight text matching PATTERN (a regexp)."))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
226 (define-key-after hi-lock-menu [highlight-phrase]
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
227 '(menu-item "Highlight Phrase..." highlight-phrase
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
228 :help "Highlight text matching PATTERN (a regexp processed to match phrases)."))
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
229
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230 (define-key-after hi-lock-menu [highlight-lines-matching-regexp]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231 '(menu-item "Highlight Lines..." highlight-lines-matching-regexp
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 :help "Highlight lines containing match of PATTERN (a regexp).."))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 (define-key-after hi-lock-menu [unhighlight-regexp]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 '(menu-item "Remove Highlighting..." unhighlight-regexp
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236 :help "Remove previously entered highlighting pattern."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 :enable hi-lock-interactive-patterns))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 (define-key-after hi-lock-menu [hi-lock-write-interactive-patterns]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 '(menu-item "Patterns to Buffer" hi-lock-write-interactive-patterns
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241 :help "Insert interactively added REGEXPs into buffer at point."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 :enable hi-lock-interactive-patterns))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 (define-key-after hi-lock-menu [hi-lock-find-patterns]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245 '(menu-item "Patterns from Buffer" hi-lock-find-patterns
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 :help "Use patterns (if any) near top of buffer."))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 (defvar hi-lock-map (make-sparse-keymap "Hi Lock")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 "Key map for hi-lock.")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 (define-key hi-lock-map "\C-xwi" 'hi-lock-find-patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 (define-key hi-lock-map "\C-xwl" 'highlight-lines-matching-regexp)
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
253 (define-key hi-lock-map "\C-xwp" 'highlight-phrase)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 (define-key hi-lock-map "\C-xwh" 'highlight-regexp)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (define-key hi-lock-map "\C-xwr" 'unhighlight-regexp)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 (define-key hi-lock-map "\C-xwb" 'hi-lock-write-interactive-patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 ;; Visible Functions
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 ;;;###autoload
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
261 (define-minor-mode hi-lock-mode
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 "Toggle minor mode for interactively adding font-lock highlighting patterns.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
264 If ARG positive, turn hi-lock on. Issuing a hi-lock command will also
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
265 turn hi-lock on. To turn hi-lock on in all buffers use
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
266 `global-hi-lock-mode' or in your .emacs file (global-hi-lock-mode 1).
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
267 When hi-lock is turned on, a \"Regexp Highlighting\" submenu is added
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
268 to the \"Edit\" menu. The commands in the submenu, which can be
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
269 called interactively, are:
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 \\[highlight-regexp] REGEXP FACE
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 Highlight matches of pattern REGEXP in current buffer with FACE.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
274 \\[highlight-phrase] PHRASE FACE
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
275 Highlight matches of phrase PHRASE in current buffer with FACE.
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
276 (PHRASE can be any REGEXP, but spaces will be replaced by matches
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
277 to whitespace and initial lower-case letters will become case insensitive.)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48256
diff changeset
278
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 \\[highlight-lines-matching-regexp] REGEXP FACE
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 Highlight lines containing matches of REGEXP in current buffer with FACE.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 \\[unhighlight-regexp] REGEXP
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 Remove highlighting on matches of REGEXP in current buffer.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285 \\[hi-lock-write-interactive-patterns]
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
286 Write active REGEXPs into buffer as comments (if possible). They will
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 be read the next time file is loaded or when the \\[hi-lock-find-patterns] command
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 is issued. The inserted regexps are in the form of font lock keywords.
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
289 (See `font-lock-keywords'.) They may be edited and re-loaded with \\[hi-lock-find-patterns],
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 any valid `font-lock-keywords' form is acceptable.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 \\[hi-lock-find-patterns]
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 Re-read patterns stored in buffer (in the format produced by \\[hi-lock-write-interactive-patterns]).
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 When hi-lock is started and if the mode is not excluded, the
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 beginning of the buffer is searched for lines of the form:
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 Hi-lock: FOO
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
298 where FOO is a list of patterns. These are added to the font lock
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
299 keywords already present. The patterns must start before position
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
300 \(number of characters into buffer) `hi-lock-file-patterns-range'.
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
301 Patterns will be read until
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 Hi-lock: end
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
303 is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'."
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
304 :group 'hi-lock
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
305 :lighter (:eval (if (or hi-lock-interactive-patterns
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
306 hi-lock-file-patterns)
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
307 " Hi" ""))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
308 :global nil
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
309 :keymap hi-lock-map
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
310 (when (and (equal (buffer-name) "*scratch*")
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
311 load-in-progress
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
312 (not (interactive-p))
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
313 (not hi-lock-archaic-interface-message-used))
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
314 (setq hi-lock-archaic-interface-message-used t)
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
315 (if hi-lock-archaic-interface-deduce
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
316 (global-hi-lock-mode hi-lock-mode)
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
317 (warn
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
318 "Possible archaic use of (hi-lock-mode).
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
319 Use (global-hi-lock-mode 1) in .emacs to enable hi-lock for all buffers,
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
320 use (hi-lock-mode 1) for individual buffers. For compatibility with Emacs
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
321 versions before 22 use the following in your .emacs file:
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
322
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
323 (if (functionp 'global-hi-lock-mode)
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
324 (global-hi-lock-mode 1)
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
325 (hi-lock-mode 1))
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
326 ")))
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
327 (if hi-lock-mode
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
328 ;; Turned on.
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
329 (progn
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
330 (unless font-lock-mode (font-lock-mode 1))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
331 (define-key-after menu-bar-edit-menu [hi-lock]
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
332 (cons "Regexp Highlighting" hi-lock-menu))
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
333 (hi-lock-find-patterns)
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
334 (add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook nil t))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 ;; Turned off.
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
336 (when (or hi-lock-interactive-patterns
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
337 hi-lock-file-patterns)
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
338 (when hi-lock-interactive-patterns
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
339 (font-lock-remove-keywords nil hi-lock-interactive-patterns)
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
340 (setq hi-lock-interactive-patterns nil))
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
341 (when hi-lock-file-patterns
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
342 (font-lock-remove-keywords nil hi-lock-file-patterns)
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
343 (setq hi-lock-file-patterns nil))
67765
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
344 (remove-overlays nil nil 'hi-lock-overlay t)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
345 (when font-lock-fontified (font-lock-fontify-buffer)))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
346 (define-key-after menu-bar-edit-menu [hi-lock] nil)
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
347 (remove-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook t)))
66833
efab878cd2e1 * hi-lock.el (hi-lock-mode): Set the default value of
Chong Yidong <cyd@stupidchicken.com>
parents: 65582
diff changeset
348
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
349 ;;;###autoload
75642
a27300a96e36 (global-hi-lock-mode): define-global-minor-mode changed to
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
350 (define-globalized-minor-mode global-hi-lock-mode
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
351 hi-lock-mode turn-on-hi-lock-if-enabled
67114
440072194b4b Fix typo.
Chong Yidong <cyd@stupidchicken.com>
parents: 67113
diff changeset
352 :group 'hi-lock)
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
353
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
354 (defun turn-on-hi-lock-if-enabled ()
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
355 (setq hi-lock-archaic-interface-message-used t)
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
356 (unless (memq major-mode hi-lock-exclude-modes)
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
357 (hi-lock-mode 1)))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
360 (defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
362 (defun hi-lock-line-face-buffer (regexp &optional face)
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
363 "Set face of all lines containing a match of REGEXP to FACE.
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
364
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
365 Interactively, prompt for REGEXP then FACE. Buffer-local history
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366 list maintained for regexps, global history maintained for faces.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
367 \\<minibuffer-local-map>Use \\[next-history-element] and \\[previous-history-element] to retrieve next or previous history item.
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
368 \(See info node `Minibuffer History'.)"
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 (interactive
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 (list
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 (hi-lock-regexp-okay
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
372 (read-from-minibuffer "Regexp to highlight line: "
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
373 (cons (or (car hi-lock-regexp-history) "") 1 )
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
374 nil nil 'hi-lock-regexp-history))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
375 (hi-lock-read-face-name)))
67208
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
376 (or (facep face) (setq face 'hi-yellow))
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
377 (unless hi-lock-mode (hi-lock-mode 1))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 (hi-lock-set-pattern
36708
0e09b49d21b8 (hi-lock-line-face-buffer): Wrap the regexp in a group
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36357
diff changeset
379 ;; The \\(?:...\\) grouping construct ensures that a leading ^, +, * or ?
0e09b49d21b8 (hi-lock-line-face-buffer): Wrap the regexp in a group
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36357
diff changeset
380 ;; or a trailing $ in REGEXP will be interpreted correctly.
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
381 (concat "^.*\\(?:" regexp "\\).*$") face))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
383
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 (defalias 'highlight-regexp 'hi-lock-face-buffer)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
386 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 (defun hi-lock-face-buffer (regexp &optional face)
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
388 "Set face of each match of REGEXP to FACE.
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 Interactively, prompt for REGEXP then FACE. Buffer-local history
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 list maintained for regexps, global history maintained for faces.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 \\<minibuffer-local-map>Use \\[next-history-element] and \\[previous-history-element] to retrieve next or previous history item.
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
393 \(See info node `Minibuffer History'.)"
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394 (interactive
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395 (list
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 (hi-lock-regexp-okay
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397 (read-from-minibuffer "Regexp to highlight: "
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
398 (cons (or (car hi-lock-regexp-history) "") 1 )
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
399 nil nil 'hi-lock-regexp-history))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
400 (hi-lock-read-face-name)))
67208
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
401 (or (facep face) (setq face 'hi-yellow))
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
402 (unless hi-lock-mode (hi-lock-mode 1))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
403 (hi-lock-set-pattern regexp face))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 ;;;###autoload
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
406 (defalias 'highlight-phrase 'hi-lock-face-phrase-buffer)
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
407 ;;;###autoload
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
408 (defun hi-lock-face-phrase-buffer (regexp &optional face)
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
409 "Set face of each match of phrase REGEXP to FACE.
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
410
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
411 Whitespace in REGEXP converted to arbitrary whitespace and initial
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
412 lower-case letters made case insensitive."
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
413 (interactive
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
414 (list
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
415 (hi-lock-regexp-okay
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
416 (hi-lock-process-phrase
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
417 (read-from-minibuffer "Phrase to highlight: "
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
418 (cons (or (car hi-lock-regexp-history) "") 1 )
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
419 nil nil 'hi-lock-regexp-history)))
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
420 (hi-lock-read-face-name)))
67208
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
421 (or (facep face) (setq face 'hi-yellow))
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
422 (unless hi-lock-mode (hi-lock-mode 1))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
423 (hi-lock-set-pattern regexp face))
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
424
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
425 ;;;###autoload
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
426 (defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
427 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
428 (defun hi-lock-unface-buffer (regexp)
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
429 "Remove highlighting of each match to REGEXP set by hi-lock.
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
430
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
431 Interactively, prompt for REGEXP. Buffer-local history of inserted
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
432 regexp's maintained. Will accept only regexps inserted by hi-lock
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
433 interactive functions. \(See `hi-lock-interactive-patterns'.\)
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
434 \\<minibuffer-local-must-match-map>Use \\[minibuffer-complete] to complete a partially typed regexp.
30590
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
435 \(See info node `Minibuffer History'.\)"
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
436 (interactive
39065
2428aa3cec41 Don't call x-popup-menu if display-popup-menus-p returns nil.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
437 (if (and (display-popup-menus-p) (vectorp (this-command-keys)))
30590
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
438 (catch 'snafu
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
439 (or
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
440 (x-popup-menu
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
441 t
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
442 (cons
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
443 `keymap
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
444 (cons "Select Pattern to Unhighlight"
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
445 (mapcar (lambda (pattern)
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
446 (list (car pattern)
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
447 (format
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
448 "%s (%s)" (car pattern)
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
449 (symbol-name
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
450 (car
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
451 (cdr (car (cdr (car (cdr pattern))))))))
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
452 (cons nil nil)
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
453 (car pattern)))
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
454 hi-lock-interactive-patterns))))
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
455 ;; If the user clicks outside the menu, meaning that they
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
456 ;; change their mind, x-popup-menu returns nil, and
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
457 ;; interactive signals a wrong number of arguments error.
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
458 ;; To prevent that, we return an empty string, which will
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
459 ;; effectively disable the rest of the function.
63a24eff41fe (hi-lock-unface-buffer): If a menu of regexps is
Eli Zaretskii <eliz@gnu.org>
parents: 30584
diff changeset
460 (throw 'snafu '(""))))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
461 (let ((history-list (mapcar (lambda (p) (car p))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
462 hi-lock-interactive-patterns)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
463 (unless hi-lock-interactive-patterns
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
464 (error "No highlighting to remove"))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
465 (list
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
466 (completing-read "Regexp to unhighlight: "
36357
06ff4f3266f8 (hi-lock-unface-buffer): Use nil rather than t for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36062
diff changeset
467 hi-lock-interactive-patterns nil t
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
468 (car (car hi-lock-interactive-patterns))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
469 (cons 'history-list 1))))))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
470 (let ((keyword (assoc regexp hi-lock-interactive-patterns)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
471 (when keyword
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
472 (font-lock-remove-keywords nil (list keyword))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
473 (setq hi-lock-interactive-patterns
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
474 (delq keyword hi-lock-interactive-patterns))
67765
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
475 (remove-overlays
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
476 nil nil 'hi-lock-overlay-regexp (hi-lock-string-serialize regexp))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
477 (when font-lock-fontified (font-lock-fontify-buffer)))))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
478
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
479 ;;;###autoload
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
480 (defun hi-lock-write-interactive-patterns ()
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
481 "Write interactively added patterns, if any, into buffer at point.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
482
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483 Interactively added patterns are those normally specified using
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
484 `highlight-regexp' and `highlight-lines-matching-regexp'; they can
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
485 be found in variable `hi-lock-interactive-patterns'."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
486 (interactive)
67208
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
487 (if (null hi-lock-interactive-patterns)
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
488 (error "There are no interactive patterns"))
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
489 (let ((beg (point)))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
490 (mapcar
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
491 (lambda (pattern)
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
492 (insert (format "%s: (%s)\n"
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
493 hi-lock-file-patterns-prefix
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
494 (prin1-to-string pattern))))
67208
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
495 hi-lock-interactive-patterns)
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
496 (comment-region beg (point)))
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
497 (when (> (point) hi-lock-file-patterns-range)
af4b92018fde * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
Chong Yidong <cyd@stupidchicken.com>
parents: 67115
diff changeset
498 (warn "Inserted keywords not close enough to top of file")))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
499
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
500 ;; Implementation Functions
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
501
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
502 (defun hi-lock-process-phrase (phrase)
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
503 "Convert regexp PHRASE to a regexp that matches phrases.
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
504
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
505 Blanks in PHRASE replaced by regexp that matches arbitrary whitespace
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
506 and initial lower-case letters made case insensitive."
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
507 (let ((mod-phrase nil))
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
508 (setq mod-phrase
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
509 (replace-regexp-in-string
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
510 "\\<[a-z]" (lambda (m) (format "[%s%s]" (upcase m) m)) phrase))
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
511 (setq mod-phrase
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
512 (replace-regexp-in-string
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
513 "\\s-+" "[ \t\n]+" mod-phrase nil t))))
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
514
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
515 (defun hi-lock-regexp-okay (regexp)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
516 "Return REGEXP if it appears suitable for a font-lock pattern.
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
517
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
518 Otherwise signal an error. A pattern that matches the null string is
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
519 not suitable."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
520 (if (string-match regexp "")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
521 (error "Regexp cannot match an empty string")
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
522 regexp))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
523
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
524 (defun hi-lock-read-face-name ()
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
525 "Read face name from minibuffer with completion and history."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
526 (intern (completing-read
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
527 "Highlight using face: "
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
528 obarray 'facep t
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
529 (cons (car hi-lock-face-history)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
530 (let ((prefix
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
531 (try-completion
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
532 (substring (car hi-lock-face-history) 0 1)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
533 (mapcar (lambda (f) (cons f f))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
534 hi-lock-face-history))))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
535 (if (and (stringp prefix)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
536 (not (equal prefix (car hi-lock-face-history))))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
537 (length prefix) 0)))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
538 '(hi-lock-face-history . 0))))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
539
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
540 (defun hi-lock-set-pattern (regexp face)
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
541 "Highlight REGEXP with face FACE."
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
542 (let ((pattern (list regexp (list 0 (list 'quote face) t))))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
543 (unless (member pattern hi-lock-interactive-patterns)
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
544 (font-lock-add-keywords nil (list pattern) t)
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
545 (push pattern hi-lock-interactive-patterns)
67765
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
546 (if font-lock-fontified
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
547 (font-lock-fontify-buffer)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
548 (let* ((serial (hi-lock-string-serialize regexp))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
549 (range-min (- (point) (/ hi-lock-highlight-range 2)))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
550 (range-max (+ (point) (/ hi-lock-highlight-range 2)))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
551 (search-start
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
552 (max (point-min)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
553 (- range-min (max 0 (- range-max (point-max))))))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
554 (search-end
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
555 (min (point-max)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
556 (+ range-max (max 0 (- (point-min) range-min))))))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
557 (save-excursion
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
558 (goto-char search-start)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
559 (while (re-search-forward regexp search-end t)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
560 (let ((overlay (make-overlay (match-beginning 0) (match-end 0))))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
561 (overlay-put overlay 'hi-lock-overlay t)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
562 (overlay-put overlay 'hi-lock-overlay-regexp serial)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
563 (overlay-put overlay 'face face))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
564 (goto-char (match-end 0)))))))))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
566 (defun hi-lock-set-file-patterns (patterns)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
567 "Replace file patterns list with PATTERNS and refontify."
35926
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
568 (when (or hi-lock-file-patterns patterns)
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
569 (font-lock-remove-keywords nil hi-lock-file-patterns)
d2997845573f (hi-lock-mode): Toggling hi-lock-mode now affects all
Gerd Moellmann <gerd@gnu.org>
parents: 35779
diff changeset
570 (setq hi-lock-file-patterns patterns)
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
571 (font-lock-add-keywords nil hi-lock-file-patterns t)
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
572 (font-lock-fontify-buffer)))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
573
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
574 (defun hi-lock-find-patterns ()
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
575 "Find patterns in current buffer for hi-lock."
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
576 (interactive)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
577 (unless (memq major-mode hi-lock-exclude-modes)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
578 (let ((all-patterns nil)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
579 (target-regexp (concat "\\<" hi-lock-file-patterns-prefix ":")))
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
580 (save-excursion
43052
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
581 (save-restriction
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
582 (widen)
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
583 (goto-char (point-min))
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
584 (re-search-forward target-regexp
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
585 (+ (point) hi-lock-file-patterns-range) t)
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
586 (beginning-of-line)
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
587 (while (and (re-search-forward target-regexp (+ (point) 100) t)
4037178317df *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39065
diff changeset
588 (not (looking-at "\\s-*end")))
64117
8ad318b132eb (hi-lock-find-patterns): Protect also against invalid values for the pattern
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
589 (condition-case nil
8ad318b132eb (hi-lock-find-patterns): Protect also against invalid values for the pattern
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
590 (setq all-patterns (append (read (current-buffer)) all-patterns))
8ad318b132eb (hi-lock-find-patterns): Protect also against invalid values for the pattern
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
591 (error (message "Invalid pattern list expression at %d"
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66960
diff changeset
592 (line-number-at-pos)))))))
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
593 (when hi-lock-mode (hi-lock-set-file-patterns all-patterns))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
594 (if (interactive-p)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 64762
diff changeset
595 (message "Hi-lock added %d patterns." (length all-patterns))))))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
596
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
597 (defun hi-lock-font-lock-hook ()
68559
695ee8cc49c1 (hi-lock-mode, hi-lock-line-face-buffer, hi-lock-face-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 67768
diff changeset
598 "Add hi-lock patterns to font-lock's."
67115
152403ad207b * hi-lock.el (hi-lock-buffer-mode): Turn on font-lock.
Chong Yidong <cyd@stupidchicken.com>
parents: 67114
diff changeset
599 (if font-lock-mode
67768
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
600 (progn
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
601 (font-lock-add-keywords nil hi-lock-file-patterns t)
edd5b99fd103 (hi-lock-archaic-interface-message-used)
Juri Linkov <juri@jurta.org>
parents: 67765
diff changeset
602 (font-lock-add-keywords nil hi-lock-interactive-patterns t))
67474
a75f6e2ee182 (hi-lock-mode) Renamed from hi-lock-buffer-mode; react if global-hi-lock-mode
Eli Zaretskii <eliz@gnu.org>
parents: 67208
diff changeset
603 (hi-lock-mode -1)))
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
604
67765
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
605 (defvar hi-lock-string-serialize-hash
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
606 (make-hash-table :test 'equal)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
607 "Hash table used to assign unique numbers to strings.")
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
608
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
609 (defvar hi-lock-string-serialize-serial 1
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
610 "Number assigned to last new string in call to `hi-lock-string-serialize'.
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
611 A string is considered new if it had not previously been used in a call to
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
612 `hi-lock-string-serialize'.")
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
613
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
614 (defun hi-lock-string-serialize (string)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
615 "Return unique serial number for STRING."
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
616 (interactive)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
617 (let ((val (gethash string hi-lock-string-serialize-hash)))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
618 (if val val
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
619 (puthash string
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
620 (setq hi-lock-string-serialize-serial
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
621 (1+ hi-lock-string-serialize-serial))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
622 hi-lock-string-serialize-hash)
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
623 hi-lock-string-serialize-serial)))
fd7c898ab005 (hi-lock-highlight-range): New variable.
Juri Linkov <juri@jurta.org>
parents: 67474
diff changeset
624
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
625 (provide 'hi-lock)
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
626
60902
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59873
diff changeset
627 ;; arch-tag: d2e8fd07-4cc9-4c6f-a200-1e729bc54066
30565
338238ca63ce *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
628 ;;; hi-lock.el ends here