Mercurial > emacs
comparison lisp/hl-line.el @ 29369:48dc52f114f3
Rewritten using define-minor-mode.
author | Dave Love <fx@gnu.org> |
---|---|
date | Thu, 01 Jun 2000 18:26:34 +0000 |
parents | d6e90113152f |
children | 846240c6fd38 |
comparison
equal
deleted
inserted
replaced
29368:032bb6ef303e | 29369:48dc52f114f3 |
---|---|
2 | 2 |
3 ;; Copyright (C) 1998, 2000 Free Software Foundation, Inc. | 3 ;; Copyright (C) 1998, 2000 Free Software Foundation, Inc. |
4 | 4 |
5 ;; Author: Dave Love <fx@gnu.org> | 5 ;; Author: Dave Love <fx@gnu.org> |
6 ;; Created: 1998-09-13 | 6 ;; Created: 1998-09-13 |
7 ;; Keywords: faces, frames | 7 ;; Keywords: faces, frames, emulation |
8 | 8 |
9 ;; This file is part of GNU Emacs. | 9 ;; This file is part of GNU Emacs. |
10 | 10 |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | 11 ;; GNU Emacs is free software; you can redistribute it and/or modify |
12 ;; it under the terms of the GNU General Public License as published by | 12 ;; it under the terms of the GNU General Public License as published by |
29 ;; highlight, on a suitable terminal, the line in the current window | 29 ;; highlight, on a suitable terminal, the line in the current window |
30 ;; on which point is (except in a minibuffer window). Done to satisfy | 30 ;; on which point is (except in a minibuffer window). Done to satisfy |
31 ;; a request for a feature of Lesser Editors. | 31 ;; a request for a feature of Lesser Editors. |
32 | 32 |
33 ;; You probably don't really want this; if the cursor is difficult to | 33 ;; You probably don't really want this; if the cursor is difficult to |
34 ;; spot, try changing its colour or relying on `blink-cursor-mode' The | 34 ;; spot, try changing its colour, relying on `blink-cursor-mode' or |
35 ;; hookery involved here might slow Emacs noticeably on a slow | 35 ;; both. The hookery used might affect repsonse noticeably on a slow |
36 ;; machine. | 36 ;; machine. |
37 | 37 |
38 ;; An overlay is used, active only on the selected window. Hooks are | 38 ;; An overlay is used, active only on the selected window. Hooks are |
39 ;; added to `pre-command-hook' and `post-command-hook' to activate and | 39 ;; added to `pre-command-hook' and `post-command-hook' to activate and |
40 ;; deactivate (by deleting) the overlay. `hl-line-unhighlight', on | 40 ;; deactivate (by deleting) the overlay. `hl-line-unhighlight', on |
48 | 48 |
49 (defgroup hl-line nil | 49 (defgroup hl-line nil |
50 "Highliight the current line." | 50 "Highliight the current line." |
51 :version "21.1" | 51 :version "21.1" |
52 :group 'editing) | 52 :group 'editing) |
53 | |
54 ;;;###autoload | |
55 (defcustom hl-line-mode nil | |
56 "Toggle Hl-Line mode. | |
57 Setting this variable directly does not take effect; | |
58 use either \\[customize] or the function `hl-line-mode'." | |
59 :set (lambda (symbol value) | |
60 (hl-line-mode (or value 0))) | |
61 :initialize 'custom-initialize-default | |
62 :type 'boolean | |
63 :group 'hl-line | |
64 :require 'hl-line) | |
65 | 53 |
66 (defcustom hl-line-face 'highlight | 54 (defcustom hl-line-face 'highlight |
67 "Face with which to highlight the current line." | 55 "Face with which to highlight the current line." |
68 :type 'face | 56 :type 'face |
69 :group 'hl-line) | 57 :group 'hl-line) |
86 "Deactivate the Hl-Line overlay on the current line in the current window." | 74 "Deactivate the Hl-Line overlay on the current line in the current window." |
87 (if hl-line-overlay | 75 (if hl-line-overlay |
88 (delete-overlay hl-line-overlay))) | 76 (delete-overlay hl-line-overlay))) |
89 | 77 |
90 ;;;###autoload | 78 ;;;###autoload |
91 (defun hl-line-mode (&optional arg) | 79 (define-minor-mode hl-line-mode |
92 "Global minor mode to highlight the line about point in the current window. | 80 "Global minor mode to highlight the line about point in the current window. |
93 | |
94 With ARG, turn Hl-Line mode on if ARG is positive, off otherwise. | 81 With ARG, turn Hl-Line mode on if ARG is positive, off otherwise. |
95 Uses functions `hl-line-unhighlight' and `hl-line-highlight' on | 82 Uses functions `hl-line-unhighlight' and `hl-line-highlight' on |
96 `pre-command-hook' and `post-command-hook'." | 83 `pre-command-hook' and `post-command-hook'." |
97 (interactive "P") | 84 (global . nil) nil nil |
98 (setq hl-line-mode (if (null arg) | 85 |
99 (not hl-line-mode) | 86 (if hl-line-mode |
100 (> (prefix-numeric-value arg) 0))) | 87 (progn |
101 (cond (hl-line-mode | 88 (add-hook 'pre-command-hook #'hl-line-unhighlight) |
102 (add-hook 'pre-command-hook #'hl-line-unhighlight) | 89 (add-hook 'post-command-hook #'hl-line-highlight)) |
103 (add-hook 'post-command-hook #'hl-line-highlight)) | 90 (hl-line-unhighlight) |
104 (t | 91 (remove-hook 'pre-command-hook #'hl-line-unhighlight) |
105 (hl-line-unhighlight) | 92 (remove-hook 'post-command-hook #'hl-line-highlight))) |
106 (remove-hook 'pre-command-hook #'hl-line-unhighlight) | |
107 (remove-hook 'post-command-hook #'hl-line-highlight))) | |
108 (if (interactive-p) | |
109 (message "Hl-Line mode %sabled" (if hl-line-mode "en" "dis")))) | |
110 | 93 |
111 (provide 'hl-line) | 94 (provide 'hl-line) |
112 | 95 |
113 ;;; hl-line.el ends here | 96 ;;; hl-line.el ends here |