Mercurial > emacs
annotate lisp/hl-line.el @ 67969:3ca8b2234237
* mh-customize.el: Sync docstrings with manual for faces and sort them
alphabetically.
(mh-faces): Move below mh-hooks. (mh-folder-faces, mh-index-faces,
mh-letter-faces)
(mh-show-faces, mh-speed-faces): Delete. Organize faces like hooks.
(mh-speed-update-interval): Fix group (mh-speedbar, not mh-speed).
(facemenu-unlisted-faces): Might as well ignore all MH-E faces.
(mh-folder-body-face, mh-folder-cur-msg-face)
(mh-folder-cur-msg-number-face, mh-folder-date-face)
(mh-folder-followup-face, mh-folder-msg-number-face)
(mh-folder-deleted-face, mh-folder-refiled-face)
(mh-folder-subject-face, mh-folder-address-face)
(mh-folder-scan-format-face, mh-folder-to-face) (mh-index-folder-face,
mh-show-cc-face, mh-show-date-face) (mh-show-header-face,
mh-show-pgg-good-face) (mh-show-pgg-unknown-face,
mh-show-pgg-bad-face)
(mh-show-to-face, mh-show-from-face, mh-show-subject-face): Delete.
(mh-folder-cur-msg): Unused. Delete.
(mh-folder-address): Use defface; inherit from mh-folder-subject.
(mh-folder-body, mh-folder-cur-msg-number, mh-folder-date): Inherit
from mh-folder-msg-number.
(mh-folder-deleted): Use defface. Inherit from mh-folder-msg-number.
(mh-folder-sent-to-me-hint): New face. Inherit from mh-folder-date.
(mh-folder-sent-to-me-sender): Rename from mh-folder-scan-format. Use
defface. Inherit from mh-folder-followup.
(mh-show-xface): Inherit from mh-show-from and highlight.
(bw-face-generation, bw-toggle-faces)
(bw-new-face-to-old, bw-old-face-to-new): New (tempoarary) variables,
functions for toggling between old and new faces.
* mh-e.el (font-lock-auto-fontify, font-lock-defaults): Hide in
eval-when-compile. We should probably do this throughout.
(mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp)
(mh-scan-refiled-msg-regexp, mh-scan-cur-msg-number-regexp)
(mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp)
(mh-scan-subject-regexp): Sync docstrings with manual
(mh-scan-format-regexp): Rename to mh-scan-sent-to-me-sender-regexp.
Drop date parenthesized expression. Make expression more like the
others (anchored at the beginning of line). Sync docstrings with
manual.
(mh-folder-font-lock-keywords): Use faces directly rather than -face
variables. Use mh-scan-sent-to-me-sender-regexp instead of
mh-scan-format-regexp, and within that expression, use faces
mh-folder-sent-to-me-hint and mh-folder-sent-to-me-sender instead of
mh-folder-date-face and mh-folder-scan-format-face which were
misleading.
* mh-mime.el (mh-mime-security-button-face): Use faces directly rather
than -face variables.
* mh-utils.el (mh-show-font-lock-keywords): Use faces directly rather
than -face variables.
(mh-face-foreground-compat, mh-face-background-compat): New macros.
(mh-face-display-function): Use mh-face-foreground-compat and
mh-face-background-compat to use inherited attributes of mh-show-xface
on Emacs 22 while still working on Emacs 21.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Sun, 01 Jan 2006 18:51:18 +0000 |
parents | 41bb365f41c4 |
children | ea3b2a2d848c 2d92f5c9d6ae |
rev | line source |
---|---|
24961 | 1 ;;; hl-line.el --- highlight the current line |
2 | |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
3 ;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, |
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
4 ;; 2005 Free Software Foundation, Inc. |
24961 | 5 |
6 ;; Author: Dave Love <fx@gnu.org> | |
52777 | 7 ;; Maintainer: FSF |
24961 | 8 ;; Created: 1998-09-13 |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
9 ;; Keywords: faces, frames, emulation |
24961 | 10 |
29087 | 11 ;; This file is part of GNU Emacs. |
12 | |
13 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
24961 | 14 ;; it under the terms of the GNU General Public License as published by |
15 ;; the Free Software Foundation; either version 2, or (at your option) | |
16 ;; any later version. | |
17 | |
29087 | 18 ;; GNU Emacs is distributed in the hope that it will be useful, |
24961 | 19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64091 | 25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
26 ;; Boston, MA 02110-1301, USA. | |
24961 | 27 |
28 ;;; Commentary: | |
29 | |
52496
3570fa254081
Documentation (comments-only) fix.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
30 ;; 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
|
31 ;; 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
|
32 ;; 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
|
33 ;; 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
|
34 ;; (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
|
35 ;; 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
|
36 ;; 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
|
37 ;; 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
|
38 ;; 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
|
39 ;; 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
|
40 ;; local mode behave like the global mode. |
24961 | 41 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
42 ;; 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
|
43 ;; 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
|
44 ;; `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
|
45 ;; 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
|
46 ;; useful in non-editing buffers such as Gnus or PCL-CVS though. |
24961 | 47 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
48 ;; 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
|
49 ;; 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
|
50 ;; `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
|
51 ;; 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
|
52 ;; 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
|
53 ;; 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
|
54 ;; 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
|
55 ;; in the selected window). |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
56 |
52834
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
57 ;; 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
|
58 ;; 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
|
59 ;; mode is used. |
7d40f75d6c53
Revert part of 2003-09-13 change.
Lute Kamstra <lute@gnu.org>
parents:
52777
diff
changeset
|
60 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
61 ;; 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
|
62 ;; 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
|
63 ;; 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
|
64 |
24961 | 65 ;;; Code: |
66 | |
67 (defgroup hl-line nil | |
35031 | 68 "Highlight the current line." |
25174 | 69 :version "21.1" |
24961 | 70 :group 'editing) |
71 | |
72 (defcustom hl-line-face 'highlight | |
73 "Face with which to highlight the current line." | |
74 :type 'face | |
75 :group 'hl-line) | |
76 | |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
77 (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
|
78 "*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
|
79 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
|
80 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
|
81 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
|
82 :type 'boolean |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
54399
diff
changeset
|
83 :version "22.1" |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
84 :group 'hl-line) |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
85 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
86 (defvar hl-line-range-function nil |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
87 "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
|
88 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
|
89 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
|
90 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
|
91 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
|
92 |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
93 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
|
94 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
95 (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
|
96 "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
|
97 (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
|
98 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
99 (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
|
100 "Overlay used by Global-Hl-Line mode to highlight the current line.") |
24961 | 101 |
25051
64e3159f0c7b
(hl-line-mode): Add autload cookies.
Dave Love <fx@gnu.org>
parents:
24961
diff
changeset
|
102 ;;;###autoload |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
103 (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
|
104 "Buffer-local minor mode to highlight the line about point. |
24961 | 105 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
|
106 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
107 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
|
108 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
|
109 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
|
110 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
|
111 `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
|
112 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
113 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
|
114 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
|
115 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
|
116 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
|
117 :group 'hl-line |
29369
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
118 (if hl-line-mode |
48dc52f114f3
Rewritten using define-minor-mode.
Dave Love <fx@gnu.org>
parents:
29087
diff
changeset
|
119 (progn |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
120 ;; 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
|
121 (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
|
122 (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
|
123 (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
|
124 (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
|
125 (hl-line-highlight) |
50847
47453bc2423e
Removed an erroneous comment.
Lute Kamstra <lute@gnu.org>
parents:
44172
diff
changeset
|
126 (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
|
127 (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
|
128 (hl-line-unhighlight) |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
129 (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
|
130 (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
|
131 |
43031
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
132 (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
|
133 "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
|
134 (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
|
135 (progn |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
136 (unless hl-line-overlay |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
137 (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
|
138 (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
|
139 (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
|
140 '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
|
141 (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
|
142 (hl-line-unhighlight))) |
43031
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
143 |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
144 (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
|
145 "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
|
146 (if hl-line-overlay |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
147 (delete-overlay hl-line-overlay))) |
46823e7a2cae
(hl-line-highlight, hl-line-unhighlight):
Richard M. Stallman <rms@gnu.org>
parents:
42842
diff
changeset
|
148 |
51010
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
149 ;;;###autoload |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
150 (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
|
151 "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
|
152 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
|
153 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
154 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
|
155 `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
|
156 :global t |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
157 :group 'hl-line |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
158 (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
|
159 (progn |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
160 (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
|
161 (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
|
162 (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 '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
|
164 (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
|
165 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
166 (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
|
167 "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
|
168 (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
|
169 (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
|
170 (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
|
171 (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
|
172 (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
|
173 (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
|
174 (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
|
175 |
f79532778159
Rewrote the local minor mode so that it can be
Lute Kamstra <lute@gnu.org>
parents:
50847
diff
changeset
|
176 (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
|
177 "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
|
178 (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
|
179 (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
|
180 |
54399
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
181 (defun hl-line-move (overlay) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
182 "Move the hl-line-mode overlay. |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
183 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
|
184 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
|
185 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
|
186 (let (tmp b e) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
187 (if hl-line-range-function |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
188 (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
|
189 b (car tmp) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
190 e (cdr tmp)) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
191 (setq tmp t |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
192 b (line-beginning-position) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
193 e (line-beginning-position 2))) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
194 (if tmp |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
195 (move-overlay overlay b e) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
196 (move-overlay overlay 1 1)))) |
ad02f6299e9a
2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents:
52834
diff
changeset
|
197 |
24961 | 198 (provide 'hl-line) |
199 | |
52401 | 200 ;;; arch-tag: ac806940-0876-4959-8c89-947563ee2833 |
24961 | 201 ;;; hl-line.el ends here |