Mercurial > emacs
annotate lisp/hl-line.el @ 64345:1009f071639a
(etags, sdb): Only require etags when needed.
(gud-speedbar-menu-items): Correct logic for enabling items.
author | Nick Roberts <nickrob@snap.net.nz> |
---|---|
date | Fri, 15 Jul 2005 14:44:33 +0000 |
parents | 6fb026ad601f |
children | 41bb365f41c4 f9a65d7ebd29 |
rev | line source |
---|---|
24961 | 1 ;;; hl-line.el --- highlight the current line |
2 | |
61271
1d02878293f3
(hl-line-mode): Specify :group.
Lute Kamstra <lute@gnu.org>
parents:
59996
diff
changeset
|
3 ;; Copyright (C) 1998, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. |
24961 | 4 |
5 ;; Author: Dave Love <fx@gnu.org> | |
52777 | 6 ;; Maintainer: FSF |
24961 | 7 ;; Created: 1998-09-13 |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
8 ;; Keywords: faces, frames, emulation |
24961 | 9 |
29087 | 10 ;; This file is part of GNU Emacs. |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
24961 | 13 ;; it under the terms of the GNU General Public License as published by |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
29087 | 17 ;; GNU Emacs is distributed in the hope that it will be useful, |
24961 | 18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64091 | 24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
25 ;; Boston, MA 02110-1301, USA. | |
24961 | 26 |
27 ;;; Commentary: | |
28 | |
52496
3570fa254081
Documentation (comments-only) fix.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
29 ;; Provides a local minor mode (toggled by M-x hl-line-mode) and |
3570fa254081
Documentation (comments-only) fix.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
30 ;; a global minor mode (toggled by M-x global-hl-line-mode) to |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
31 ;; highlight, on a suitable terminal, the line on which point is. The |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
32 ;; global mode highlights the current line in the selected window only |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
33 ;; (except when the minibuffer window is selected). This was |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
34 ;; implemented to satisfy a request for a feature of Lesser Editors. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
35 ;; The local mode is sticky: it highlights the line about the buffer's |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
36 ;; point even if the buffer's window is not selected. Caveat: the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
37 ;; buffer's point might be different from the point of a non-selected |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
38 ;; window. Set the variable `hl-line-sticky-flag' to nil to make the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
39 ;; local mode behave like the global mode. |
24961 | 40 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
41 ;; You probably don't really want to use the global mode; if the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
42 ;; cursor is difficult to spot, try changing its colour, relying on |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
43 ;; `blink-cursor-mode' or both. The hookery used might affect |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
44 ;; response noticeably on a slow machine. The local mode may be |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
45 ;; useful in non-editing buffers such as Gnus or PCL-CVS though. |
24961 | 46 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
47 ;; An overlay is used. In the non-sticky cases, this overlay is |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
48 ;; active only on the selected window. A hook is added to |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
49 ;; `post-command-hook' to activate the overlay and move it to the line |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
50 ;; about point. To get the non-sticky behavior, `hl-line-unhighlight' |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
51 ;; is added to `pre-command-hook' as well. This function deactivates |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
52 ;; the overlay unconditionally in case the command changes the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
53 ;; selected window. (It does so rather than keeping track of changes |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
54 ;; in the selected window). |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
55 |
52834
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
56 ;; You could make variable `global-hl-line-mode' buffer-local and set |
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
57 ;; it to nil to avoid highlighting specific buffers, when the global |
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
58 ;; mode is used. |
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
59 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
60 ;; In default whole the line is highlighted. The range of highlighting |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
54399
diff
changeset
|
61 ;; can be changed by defining an appropriate function as the |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
62 ;; buffer-local value of `hl-line-range-function'. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
63 |
24961 | 64 ;;; Code: |
65 | |
66 (defgroup hl-line nil | |
35031 | 67 "Highlight the current line." |
25174 | 68 :version "21.1" |
24961 | 69 :group 'editing) |
70 | |
71 (defcustom hl-line-face 'highlight | |
72 "Face with which to highlight the current line." | |
73 :type 'face | |
74 :group 'hl-line) | |
75 | |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
76 (defcustom hl-line-sticky-flag t |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
77 "*Non-nil means highlight the current line in all windows. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
78 Otherwise Hl-Line mode will highlight only in the selected |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
79 window. Setting this variable takes effect the next time you use |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
80 the command `hl-line-mode' to turn Hl-Line mode on." |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
81 :type 'boolean |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
54399
diff
changeset
|
82 :version "22.1" |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
83 :group 'hl-line) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
84 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
85 (defvar hl-line-range-function nil |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
86 "If non-nil, function to call to return highlight range. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
87 The function of no args should return a cons cell; its car value |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
54399
diff
changeset
|
88 is the beginning position of highlight and its cdr value is the |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
89 end position of highlight in the buffer. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
90 It should return nil if there's no region to be highlighted. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
91 |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
92 This variable is expected to be made buffer-local by modes.") |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
93 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
94 (defvar hl-line-overlay nil |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
95 "Overlay used by Hl-Line mode to highlight the current line.") |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
96 (make-variable-buffer-local 'hl-line-overlay) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
97 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
98 (defvar global-hl-line-overlay nil |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
99 "Overlay used by Global-Hl-Line mode to highlight the current line.") |
24961 | 100 |
25051
64e3159f0c7b
(hl-line-mode): Add autload cookies.
Dave Love <fx@gnu.org>
parents:
24961
diff
changeset
|
101 ;;;###autoload |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
102 (define-minor-mode hl-line-mode |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
103 "Buffer-local minor mode to highlight the line about point. |
24961 | 104 With ARG, turn Hl-Line mode on if ARG is positive, off otherwise. |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
105 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
106 If `hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
107 line about the buffer's point in all windows. Caveat: the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
108 buffer's point might be different from the point of a |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
109 non-selected window. Hl-Line mode uses the function |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
110 `hl-line-highlight' on `post-command-hook' in this case. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
111 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
112 When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
113 line about point in the selected window only. In this case, it |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
114 uses the function `hl-line-unhighlight' on `pre-command-hook' in |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
115 addition to `hl-line-highlight' on `post-command-hook'." |
61271
1d02878293f3
(hl-line-mode): Specify :group.
Lute Kamstra <lute@gnu.org>
parents:
59996
diff
changeset
|
116 :group 'hl-line |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
117 (if hl-line-mode |
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
118 (progn |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
119 ;; In case `kill-all-local-variables' is called. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
120 (add-hook 'change-major-mode-hook #'hl-line-unhighlight nil t) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
121 (if hl-line-sticky-flag |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
122 (remove-hook 'pre-command-hook #'hl-line-unhighlight t) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
123 (add-hook 'pre-command-hook #'hl-line-unhighlight nil t)) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
124 (hl-line-highlight) |
50847
47453bc2423e
Removed an erroneous comment.
Lute Kamstra <lute@gnu.org>
parents:
44172
diff
changeset
|
125 (add-hook 'post-command-hook #'hl-line-highlight nil t)) |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
126 (remove-hook 'post-command-hook #'hl-line-highlight t) |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
127 (hl-line-unhighlight) |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
128 (remove-hook 'change-major-mode-hook #'hl-line-unhighlight t) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
129 (remove-hook 'pre-command-hook #'hl-line-unhighlight t))) |
38937
ff93d7955c3d
(hl-line-mode): Don't be a global mode.
Gerd Moellmann <gerd@gnu.org>
parents:
35031
diff
changeset
|
130 |
43031
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
131 (defun hl-line-highlight () |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
132 "Active the Hl-Line overlay on the current line." |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
133 (if hl-line-mode ; Might be changed outside the mode function. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
134 (progn |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
135 (unless hl-line-overlay |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
136 (setq hl-line-overlay (make-overlay 1 1)) ; to be moved |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
137 (overlay-put hl-line-overlay 'face hl-line-face)) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
138 (overlay-put hl-line-overlay |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
139 'window (unless hl-line-sticky-flag (selected-window))) |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
140 (hl-line-move hl-line-overlay)) |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
141 (hl-line-unhighlight))) |
43031
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
142 |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
143 (defun hl-line-unhighlight () |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
144 "Deactivate the Hl-Line overlay on the current line." |
43031
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
145 (if hl-line-overlay |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
146 (delete-overlay hl-line-overlay))) |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
147 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
148 ;;;###autoload |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
149 (define-minor-mode global-hl-line-mode |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
150 "Global minor mode to highlight the line about point in the current window. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
151 With ARG, turn Global-Hl-Line mode on if ARG is positive, off otherwise. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
152 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
153 Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
154 `global-hl-line-highlight' on `pre-command-hook' and `post-command-hook'." |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
155 :global t |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
156 :group 'hl-line |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
157 (if global-hl-line-mode |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
158 (progn |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
159 (add-hook 'pre-command-hook #'global-hl-line-unhighlight) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
160 (add-hook 'post-command-hook #'global-hl-line-highlight)) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
161 (global-hl-line-unhighlight) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
162 (remove-hook 'pre-command-hook #'global-hl-line-unhighlight) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
163 (remove-hook 'post-command-hook #'global-hl-line-highlight))) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
164 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
165 (defun global-hl-line-highlight () |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
166 "Active the Global-Hl-Line overlay on the current line in the current window." |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
167 (when global-hl-line-mode ; Might be changed outside the mode function. |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
168 (unless (window-minibuffer-p (selected-window)) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
169 (unless global-hl-line-overlay |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
170 (setq global-hl-line-overlay (make-overlay 1 1)) ; to be moved |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
171 (overlay-put global-hl-line-overlay 'face hl-line-face)) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
172 (overlay-put global-hl-line-overlay 'window (selected-window)) |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
173 (hl-line-move global-hl-line-overlay)))) |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
174 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
175 (defun global-hl-line-unhighlight () |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
176 "Deactivate the Global-Hl-Line overlay on the current line." |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
177 (if global-hl-line-overlay |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
178 (delete-overlay global-hl-line-overlay))) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
179 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
180 (defun hl-line-move (overlay) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
181 "Move the hl-line-mode overlay. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
182 If `hl-line-range-function' is non-nil, move the OVERLAY to the position |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
183 where the function returns. If `hl-line-range-function' is nil, fill |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
184 the line including the point by OVERLAY." |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
185 (let (tmp b e) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
186 (if hl-line-range-function |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
187 (setq tmp (funcall hl-line-range-function) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
188 b (car tmp) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
189 e (cdr tmp)) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
190 (setq tmp t |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
191 b (line-beginning-position) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
192 e (line-beginning-position 2))) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
193 (if tmp |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
194 (move-overlay overlay b e) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
195 (move-overlay overlay 1 1)))) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
196 |
24961 | 197 (provide 'hl-line) |
198 | |
52401 | 199 ;;; arch-tag: ac806940-0876-4959-8c89-947563ee2833 |
24961 | 200 ;;; hl-line.el ends here |