(defgroup reftex): Update home page url-link.
[bpt/emacs.git] / lisp / hl-line.el
index 5ed334f..757a398 100644 (file)
@@ -1,6 +1,7 @@
 ;;; hl-line.el --- highlight the current line
 
-;; Copyright (C) 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author:  Dave Love <fx@gnu.org>
 ;; Maintainer: FSF
@@ -21,8 +22,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 ;; it to nil to avoid highlighting specific buffers, when the global
 ;; mode is used.
 
-;; In default whole the line is highlighted. The range of highlighting
-;; can be changed by defining an appropriate function as the 
+;; By default the whole line is highlighted.  The range of highlighting
+;; can be changed by defining an appropriate function as the
 ;; buffer-local value of `hl-line-range-function'.
 
 ;;; Code:
 
+(defvar hl-line-overlay nil
+  "Overlay used by Hl-Line mode to highlight the current line.")
+(make-variable-buffer-local 'hl-line-overlay)
+
+(defvar global-hl-line-overlay nil
+  "Overlay used by Global-Hl-Line mode to highlight the current line.")
+
 (defgroup hl-line nil
   "Highlight the current line."
   :version "21.1"
   :group 'editing)
 
-(defcustom hl-line-face 'highlight
-  "Face with which to highlight the current line."
-  :type 'face
+(defface hl-line
+  '((t :inherit highlight))
+  "Default face for highlighting the current line in Hl-Line mode."
+  :version "22.1"
   :group 'hl-line)
 
+(defcustom hl-line-face 'hl-line
+  "Face with which to highlight the current line in Hl-Line mode."
+  :type 'face
+  :group 'hl-line
+  :set (lambda (symbol value)
+        (set symbol value)
+        (dolist (buffer (buffer-list))
+          (with-current-buffer buffer
+            (when hl-line-overlay
+              (overlay-put hl-line-overlay 'face hl-line-face))))
+        (when global-hl-line-overlay
+          (overlay-put global-hl-line-overlay 'face hl-line-face))))
+
 (defcustom hl-line-sticky-flag t
   "*Non-nil means highlight the current line in all windows.
 Otherwise Hl-Line mode will highlight only in the selected
 window.  Setting this variable takes effect the next time you use
 the command `hl-line-mode' to turn Hl-Line mode on."
   :type 'boolean
-  :version "21.4"
+  :version "22.1"
   :group 'hl-line)
 
 (defvar hl-line-range-function nil
   "If non-nil, function to call to return highlight range.
 The function of no args should return a cons cell; its car value
-is the beginning position of highlight and its cdr value is the 
+is the beginning position of highlight and its cdr value is the
 end position of highlight in the buffer.
 It should return nil if there's no region to be highlighted.
 
 This variable is expected to be made buffer-local by modes.")
 
-(defvar hl-line-overlay nil
-  "Overlay used by Hl-Line mode to highlight the current line.")
-(make-variable-buffer-local 'hl-line-overlay)
-
-(defvar global-hl-line-overlay nil
-  "Overlay used by Global-Hl-Line mode to highlight the current line.")
-
 ;;;###autoload
 (define-minor-mode hl-line-mode
   "Buffer-local minor mode to highlight the line about point.
@@ -113,7 +128,7 @@ When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the
 line about point in the selected window only.  In this case, it
 uses the function `hl-line-unhighlight' on `pre-command-hook' in
 addition to `hl-line-highlight' on `post-command-hook'."
-  nil nil nil
+  :group 'hl-line
   (if hl-line-mode
       (progn
         ;; In case `kill-all-local-variables' is called.
@@ -129,7 +144,7 @@ addition to `hl-line-highlight' on `post-command-hook'."
     (remove-hook 'pre-command-hook #'hl-line-unhighlight t)))
 
 (defun hl-line-highlight ()
-  "Active the Hl-Line overlay on the current line."
+  "Activate the Hl-Line overlay on the current line."
   (if hl-line-mode     ; Might be changed outside the mode function.
       (progn
         (unless hl-line-overlay
@@ -178,9 +193,9 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
       (delete-overlay global-hl-line-overlay)))
 
 (defun hl-line-move (overlay)
-  "Move the hl-line-mode overlay.
+  "Move the Hl-Line overlay.
 If `hl-line-range-function' is non-nil, move the OVERLAY to the position
-where the function returns. If `hl-line-range-function' is nil, fill
+where the function returns.  If `hl-line-range-function' is nil, fill
 the line including the point by OVERLAY."
   (let (tmp b e)
     (if hl-line-range-function