;;; hl-line.el --- highlight the current line
-;; Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc.
;; Author: Dave Love <fx@gnu.org>
;; Created: 1998-09-13
;;; Commentary:
-;; Provides a global minor mode (toggled by M-x hl-line-mode) to
-;; highlight, on a suitable terminal, the line in the current window
-;; on which point is (except in a minibuffer window). Done to satisfy
-;; a request for a feature of Lesser Editors.
+;; Provides a minor mode (toggled by M-x hl-line-mode) and a global minor
+;; mode (toggled by M-x global-hl-line-mode) to highlight, on a
+;; suitable terminal, the line in the current window on which point is
+;; (except in a minibuffer window). Done to satisfy a request for a
+;; feature of Lesser Editors.
;; You probably don't really want this; if the cursor is difficult to
;; spot, try changing its colour, relying on `blink-cursor-mode' or
;; both. The hookery used might affect response noticeably on a slow
-;; machine.
+;; machine. It may be useful in "non-text" buffers such as Gnus or
+;; PCL-CVS though.
;; An overlay is used, active only on the selected window. Hooks are
;; added to `pre-command-hook' and `post-command-hook' to activate and
;; across the window width.
;; You could make variable `hl-line-mode' buffer-local to avoid
-;; highlighting specific buffers.
+;; highlighting specific buffers, when the global mode is used.
;;; Code:
(defgroup hl-line nil
- "Highliight the current line."
+ "Highlight the current line."
:version "21.1"
:group 'editing)
(defvar hl-line-overlay nil)
+;;;###autoload
+(define-minor-mode hl-line-mode
+ "Minor mode to highlight the line about point in the current window.
+With ARG, turn Hl-Line mode on if ARG is positive, off otherwise.
+Uses functions `hl-line-unhighlight' and `hl-line-highlight' on
+`pre-command-hook' and `post-command-hook'."
+ nil nil nil
+ (if hl-line-mode
+ (progn
+ (add-hook 'pre-command-hook #'hl-line-unhighlight)
+ (add-hook 'post-command-hook #'hl-line-highlight))
+ (hl-line-unhighlight)
+ (remove-hook 'pre-command-hook #'hl-line-unhighlight)
+ (remove-hook 'post-command-hook #'hl-line-highlight)))
+
+;;;###autoload
+(easy-mmode-define-global-mode
+ global-hl-line-mode hl-line-mode hl-line-mode
+ :group 'hl-line)
+
(defun hl-line-highlight ()
"Active the Hl-Line overlay on the current line in the current window.
\(Unless it's a minibuffer window.)"
(if hl-line-overlay
(delete-overlay hl-line-overlay)))
-;;;###autoload
-(define-minor-mode hl-line-mode
- "Global minor mode to highlight the line about point in the current window.
-With ARG, turn Hl-Line mode on if ARG is positive, off otherwise.
-Uses functions `hl-line-unhighlight' and `hl-line-highlight' on
-`pre-command-hook' and `post-command-hook'."
- :global t
- (if hl-line-mode
- (progn
- (add-hook 'pre-command-hook #'hl-line-unhighlight)
- (add-hook 'post-command-hook #'hl-line-highlight))
- (hl-line-unhighlight)
- (remove-hook 'pre-command-hook #'hl-line-unhighlight)
- (remove-hook 'post-command-hook #'hl-line-highlight)))
-
(provide 'hl-line)
;;; hl-line.el ends here