Mercurial > emacs
comparison lisp/ruler-mode.el @ 90195:a1b34dec1104
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-63
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 358-423)
- Update from CVS
- Remove "-face" suffix from widget faces
- Remove "-face" suffix from custom faces
- Remove "-face" suffix from change-log faces
- Remove "-face" suffix from compilation faces
- Remove "-face" suffix from diff-mode faces
- lisp/longlines.el (longlines-visible-face): Face removed
- Remove "-face" suffix from woman faces
- Remove "-face" suffix from whitespace-highlight face
- Remove "-face" suffix from ruler-mode faces
- Remove "-face" suffix from show-paren faces
- Remove "-face" suffix from log-view faces
- Remove "-face" suffix from smerge faces
- Remove "-face" suffix from show-tabs faces
- Remove "-face" suffix from highlight-changes faces
- Remove "-face" suffix from and downcase info faces
- Remove "-face" suffix from pcvs faces
- Update uses of renamed pcvs faces
- Tweak ChangeLog
- Remove "-face" suffix from strokes-char face
- Remove "-face" suffix from compare-windows face
- Remove "-face" suffix from calendar faces
- Remove "-face" suffix from diary-button face
- Remove "-face" suffix from testcover faces
- Remove "-face" suffix from viper faces
- Remove "-face" suffix from org faces
- Remove "-face" suffix from sgml-namespace face
- Remove "-face" suffix from table-cell face
- Remove "-face" suffix from tex-mode faces
- Remove "-face" suffix from texinfo-heading face
- Remove "-face" suffix from flyspell faces
- Remove "-face" suffix from gomoku faces
- Remove "-face" suffix from mpuz faces
- Merge from gnus--rel--5.10
- Remove "-face" suffix from Buffer-menu-buffer face
- Remove "-face" suffix from antlr-mode faces
- Remove "-face" suffix from ebrowse faces
- Remove "-face" suffix from flymake faces
- Remove "-face" suffix from idlwave faces
- Remove "-face" suffix from sh-script faces
- Remove "-face" suffix from vhdl-mode faces
- Remove "-face" suffix from which-func face
- Remove "-face" suffix from cperl-mode faces
- Remove "-face" suffix from ld-script faces
- Fix cperl-mode font-lock problem
- Tweak which-func face
* gnus--rel--5.10 (patch 80-82)
- Merge from emacs--cvs-trunk--0
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Wed, 15 Jun 2005 23:32:15 +0000 |
parents | 5b029ff3b08d c1af317747bc |
children | f9a65d7ebd29 |
comparison
equal
deleted
inserted
replaced
90194:d940db5a66b9 | 90195:a1b34dec1104 |
---|---|
1 ;;; ruler-mode.el --- display a ruler in the header line | 1 ;;; ruler-mode.el --- display a ruler in the header line |
2 | 2 |
3 ;; Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. | 3 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
4 | 4 |
5 ;; Author: David Ponce <david@dponce.com> | 5 ;; Author: David Ponce <david@dponce.com> |
6 ;; Maintainer: David Ponce <david@dponce.com> | 6 ;; Maintainer: David Ponce <david@dponce.com> |
7 ;; Created: 24 Mar 2001 | 7 ;; Created: 24 Mar 2001 |
8 ;; Version: 1.6 | 8 ;; Version: 1.6 |
68 ;; - `ruler-mode-inter-graduation-char' character used for | 68 ;; - `ruler-mode-inter-graduation-char' character used for |
69 ;; intermediate graduations ('!' by default). | 69 ;; intermediate graduations ('!' by default). |
70 ;; | 70 ;; |
71 ;; The following faces are customizable: | 71 ;; The following faces are customizable: |
72 ;; | 72 ;; |
73 ;; - `ruler-mode-default-face' the ruler default face. | 73 ;; - `ruler-mode-default' the ruler default face. |
74 ;; - `ruler-mode-fill-column-face' the face used to highlight the | 74 ;; - `ruler-mode-fill-column' the face used to highlight the |
75 ;; `fill-column' character. | 75 ;; `fill-column' character. |
76 ;; - `ruler-mode-comment-column-face' the face used to highlight the | 76 ;; - `ruler-mode-comment-column' the face used to highlight the |
77 ;; `comment-column' character. | 77 ;; `comment-column' character. |
78 ;; - `ruler-mode-goal-column-face' the face used to highlight the | 78 ;; - `ruler-mode-goal-column' the face used to highlight the |
79 ;; `goal-column' character. | 79 ;; `goal-column' character. |
80 ;; - `ruler-mode-current-column-face' the face used to highlight the | 80 ;; - `ruler-mode-current-column' the face used to highlight the |
81 ;; `current-column' character. | 81 ;; `current-column' character. |
82 ;; - `ruler-mode-tab-stop-face' the face used to highlight tab stop | 82 ;; - `ruler-mode-tab-stop' the face used to highlight tab stop |
83 ;; characters. | 83 ;; characters. |
84 ;; - `ruler-mode-margins-face' the face used to highlight graduations | 84 ;; - `ruler-mode-margins' the face used to highlight graduations |
85 ;; in the `window-margins' areas. | 85 ;; in the `window-margins' areas. |
86 ;; - `ruler-mode-fringes-face' the face used to highlight graduations | 86 ;; - `ruler-mode-fringes' the face used to highlight graduations |
87 ;; in the `window-fringes' areas. | 87 ;; in the `window-fringes' areas. |
88 ;; - `ruler-mode-column-number-face' the face used to highlight the | 88 ;; - `ruler-mode-column-number' the face used to highlight the |
89 ;; numbered graduations. | 89 ;; numbered graduations. |
90 ;; | 90 ;; |
91 ;; `ruler-mode-default-face' inherits from the built-in `default' face. | 91 ;; `ruler-mode-default' inherits from the built-in `default' face. |
92 ;; All `ruler-mode' faces inherit from `ruler-mode-default-face'. | 92 ;; All `ruler-mode' faces inherit from `ruler-mode-default'. |
93 ;; | 93 ;; |
94 ;; WARNING: To keep ruler graduations aligned on text columns it is | 94 ;; WARNING: To keep ruler graduations aligned on text columns it is |
95 ;; important to use the same font family and size for ruler and text | 95 ;; important to use the same font family and size for ruler and text |
96 ;; areas. | 96 ;; areas. |
97 ;; | 97 ;; |
202 (defcustom ruler-mode-set-goal-column-ding-flag t | 202 (defcustom ruler-mode-set-goal-column-ding-flag t |
203 "*Non-nil means do `ding' when `goal-column' is set." | 203 "*Non-nil means do `ding' when `goal-column' is set." |
204 :group 'ruler-mode | 204 :group 'ruler-mode |
205 :type 'boolean) | 205 :type 'boolean) |
206 | 206 |
207 (defface ruler-mode-default-face | 207 (defface ruler-mode-default |
208 '((((type tty)) | 208 '((((type tty)) |
209 (:inherit default | 209 (:inherit default |
210 :background "grey64" | 210 :background "grey64" |
211 :foreground "grey50" | 211 :foreground "grey50" |
212 )) | 212 )) |
218 :line-width 1 | 218 :line-width 1 |
219 :style released-button) | 219 :style released-button) |
220 ))) | 220 ))) |
221 "Default face used by the ruler." | 221 "Default face used by the ruler." |
222 :group 'ruler-mode) | 222 :group 'ruler-mode) |
223 | 223 ;; backward-compatibility alias |
224 (defface ruler-mode-pad-face | 224 (put 'ruler-mode-default-face 'face-alias 'ruler-mode-default) |
225 | |
226 (defface ruler-mode-pad | |
225 '((((type tty)) | 227 '((((type tty)) |
226 (:inherit ruler-mode-default-face | 228 (:inherit ruler-mode-default |
227 :background "grey50" | 229 :background "grey50" |
228 )) | 230 )) |
229 (t | 231 (t |
230 (:inherit ruler-mode-default-face | 232 (:inherit ruler-mode-default |
231 :background "grey64" | 233 :background "grey64" |
232 ))) | 234 ))) |
233 "Face used to pad inactive ruler areas." | 235 "Face used to pad inactive ruler areas." |
234 :group 'ruler-mode) | 236 :group 'ruler-mode) |
235 | 237 ;; backward-compatibility alias |
236 (defface ruler-mode-margins-face | 238 (put 'ruler-mode-pad-face 'face-alias 'ruler-mode-pad) |
239 | |
240 (defface ruler-mode-margins | |
237 '((t | 241 '((t |
238 (:inherit ruler-mode-default-face | 242 (:inherit ruler-mode-default |
239 :foreground "white" | 243 :foreground "white" |
240 ))) | 244 ))) |
241 "Face used to highlight margin areas." | 245 "Face used to highlight margin areas." |
242 :group 'ruler-mode) | 246 :group 'ruler-mode) |
243 | 247 ;; backward-compatibility alias |
244 (defface ruler-mode-fringes-face | 248 (put 'ruler-mode-margins-face 'face-alias 'ruler-mode-margins) |
249 | |
250 (defface ruler-mode-fringes | |
245 '((t | 251 '((t |
246 (:inherit ruler-mode-default-face | 252 (:inherit ruler-mode-default |
247 :foreground "green" | 253 :foreground "green" |
248 ))) | 254 ))) |
249 "Face used to highlight fringes areas." | 255 "Face used to highlight fringes areas." |
250 :group 'ruler-mode) | 256 :group 'ruler-mode) |
251 | 257 ;; backward-compatibility alias |
252 (defface ruler-mode-column-number-face | 258 (put 'ruler-mode-fringes-face 'face-alias 'ruler-mode-fringes) |
259 | |
260 (defface ruler-mode-column-number | |
253 '((t | 261 '((t |
254 (:inherit ruler-mode-default-face | 262 (:inherit ruler-mode-default |
255 :foreground "black" | 263 :foreground "black" |
256 ))) | 264 ))) |
257 "Face used to highlight number graduations." | 265 "Face used to highlight number graduations." |
258 :group 'ruler-mode) | 266 :group 'ruler-mode) |
259 | 267 ;; backward-compatibility alias |
260 (defface ruler-mode-fill-column-face | 268 (put 'ruler-mode-column-number-face 'face-alias 'ruler-mode-column-number) |
269 | |
270 (defface ruler-mode-fill-column | |
261 '((t | 271 '((t |
262 (:inherit ruler-mode-default-face | 272 (:inherit ruler-mode-default |
263 :foreground "red" | 273 :foreground "red" |
264 ))) | 274 ))) |
265 "Face used to highlight the fill column character." | 275 "Face used to highlight the fill column character." |
266 :group 'ruler-mode) | 276 :group 'ruler-mode) |
267 | 277 ;; backward-compatibility alias |
268 (defface ruler-mode-comment-column-face | 278 (put 'ruler-mode-fill-column-face 'face-alias 'ruler-mode-fill-column) |
279 | |
280 (defface ruler-mode-comment-column | |
269 '((t | 281 '((t |
270 (:inherit ruler-mode-default-face | 282 (:inherit ruler-mode-default |
271 :foreground "red" | 283 :foreground "red" |
272 ))) | 284 ))) |
273 "Face used to highlight the comment column character." | 285 "Face used to highlight the comment column character." |
274 :group 'ruler-mode) | 286 :group 'ruler-mode) |
275 | 287 ;; backward-compatibility alias |
276 (defface ruler-mode-goal-column-face | 288 (put 'ruler-mode-comment-column-face 'face-alias 'ruler-mode-comment-column) |
289 | |
290 (defface ruler-mode-goal-column | |
277 '((t | 291 '((t |
278 (:inherit ruler-mode-default-face | 292 (:inherit ruler-mode-default |
279 :foreground "red" | 293 :foreground "red" |
280 ))) | 294 ))) |
281 "Face used to highlight the goal column character." | 295 "Face used to highlight the goal column character." |
282 :group 'ruler-mode) | 296 :group 'ruler-mode) |
283 | 297 ;; backward-compatibility alias |
284 (defface ruler-mode-tab-stop-face | 298 (put 'ruler-mode-goal-column-face 'face-alias 'ruler-mode-goal-column) |
299 | |
300 (defface ruler-mode-tab-stop | |
285 '((t | 301 '((t |
286 (:inherit ruler-mode-default-face | 302 (:inherit ruler-mode-default |
287 :foreground "steelblue" | 303 :foreground "steelblue" |
288 ))) | 304 ))) |
289 "Face used to highlight tab stop characters." | 305 "Face used to highlight tab stop characters." |
290 :group 'ruler-mode) | 306 :group 'ruler-mode) |
291 | 307 ;; backward-compatibility alias |
292 (defface ruler-mode-current-column-face | 308 (put 'ruler-mode-tab-stop-face 'face-alias 'ruler-mode-tab-stop) |
309 | |
310 (defface ruler-mode-current-column | |
293 '((t | 311 '((t |
294 (:inherit ruler-mode-default-face | 312 (:inherit ruler-mode-default |
295 :weight bold | 313 :weight bold |
296 :foreground "yellow" | 314 :foreground "yellow" |
297 ))) | 315 ))) |
298 "Face used to highlight the `current-column' character." | 316 "Face used to highlight the `current-column' character." |
299 :group 'ruler-mode) | 317 :group 'ruler-mode) |
318 ;; backward-compatibility alias | |
319 (put 'ruler-mode-current-column-face 'face-alias 'ruler-mode-current-column) | |
300 | 320 |
301 | 321 |
302 (defsubst ruler-mode-full-window-width () | 322 (defsubst ruler-mode-full-window-width () |
303 "Return the full width of the selected window." | 323 "Return the full width of the selected window." |
304 (let ((edges (window-edges))) | 324 (let ((edges (window-edges))) |
416 (when ruler-mode-set-goal-column-ding-flag | 436 (when ruler-mode-set-goal-column-ding-flag |
417 (ding)) | 437 (ding)) |
418 (message "Goal column set to %d (click on %s again to unset it)" | 438 (message "Goal column set to %d (click on %s again to unset it)" |
419 newc | 439 newc |
420 (propertize (char-to-string ruler-mode-goal-column-char) | 440 (propertize (char-to-string ruler-mode-goal-column-char) |
421 'face 'ruler-mode-goal-column-face)) | 441 'face 'ruler-mode-goal-column)) |
422 nil) ;; Don't start dragging. | 442 nil) ;; Don't start dragging. |
423 ) | 443 ) |
424 (if (eq 'click (ruler-mode-mouse-drag-any-column-iteration | 444 (if (eq 'click (ruler-mode-mouse-drag-any-column-iteration |
425 (posn-window start))) | 445 (posn-window start))) |
426 (when (eq 'goal-column ruler-mode-dragged-symbol) | 446 (when (eq 'goal-column ruler-mode-dragged-symbol) |
626 (i 0) | 646 (i 0) |
627 (j (window-hscroll)) | 647 (j (window-hscroll)) |
628 ;; Setup the scrollbar, fringes, and margins areas. | 648 ;; Setup the scrollbar, fringes, and margins areas. |
629 (lf (ruler-mode-space | 649 (lf (ruler-mode-space |
630 'left-fringe | 650 'left-fringe |
631 'face 'ruler-mode-fringes-face | 651 'face 'ruler-mode-fringes |
632 'help-echo (format ruler-mode-fringe-help-echo | 652 'help-echo (format ruler-mode-fringe-help-echo |
633 "Left" (or (car f) 0)))) | 653 "Left" (or (car f) 0)))) |
634 (rf (ruler-mode-space | 654 (rf (ruler-mode-space |
635 'right-fringe | 655 'right-fringe |
636 'face 'ruler-mode-fringes-face | 656 'face 'ruler-mode-fringes |
637 'help-echo (format ruler-mode-fringe-help-echo | 657 'help-echo (format ruler-mode-fringe-help-echo |
638 "Right" (or (cadr f) 0)))) | 658 "Right" (or (cadr f) 0)))) |
639 (lm (ruler-mode-space | 659 (lm (ruler-mode-space |
640 'left-margin | 660 'left-margin |
641 'face 'ruler-mode-margins-face | 661 'face 'ruler-mode-margins |
642 'help-echo (format ruler-mode-margin-help-echo | 662 'help-echo (format ruler-mode-margin-help-echo |
643 "Left" (or (car m) 0)))) | 663 "Left" (or (car m) 0)))) |
644 (rm (ruler-mode-space | 664 (rm (ruler-mode-space |
645 'right-margin | 665 'right-margin |
646 'face 'ruler-mode-margins-face | 666 'face 'ruler-mode-margins |
647 'help-echo (format ruler-mode-margin-help-echo | 667 'help-echo (format ruler-mode-margin-help-echo |
648 "Right" (or (cdr m) 0)))) | 668 "Right" (or (cdr m) 0)))) |
649 (sb (ruler-mode-space | 669 (sb (ruler-mode-space |
650 'scroll-bar | 670 'scroll-bar |
651 'face 'ruler-mode-pad-face)) | 671 'face 'ruler-mode-pad)) |
652 ;; Remember the scrollbar vertical type. | 672 ;; Remember the scrollbar vertical type. |
653 (sbvt (car (window-current-scroll-bars))) | 673 (sbvt (car (window-current-scroll-bars))) |
654 ;; Create an "clean" ruler. | 674 ;; Create an "clean" ruler. |
655 (ruler | 675 (ruler |
656 (propertize | 676 (propertize |
657 (make-string w ruler-mode-basic-graduation-char) | 677 (make-string w ruler-mode-basic-graduation-char) |
658 'face 'ruler-mode-default-face | 678 'face 'ruler-mode-default |
659 'local-map ruler-mode-map | 679 'local-map ruler-mode-map |
660 'help-echo (cond | 680 'help-echo (cond |
661 (ruler-mode-show-tab-stops | 681 (ruler-mode-show-tab-stops |
662 ruler-mode-ruler-help-echo-when-tab-stops) | 682 ruler-mode-ruler-help-echo-when-tab-stops) |
663 (goal-column | 683 (goal-column |
672 ((= (mod j 10) 0) | 692 ((= (mod j 10) 0) |
673 (setq c (number-to-string (/ j 10)) | 693 (setq c (number-to-string (/ j 10)) |
674 m (length c) | 694 m (length c) |
675 k i) | 695 k i) |
676 (put-text-property | 696 (put-text-property |
677 i (1+ i) 'face 'ruler-mode-column-number-face | 697 i (1+ i) 'face 'ruler-mode-column-number |
678 ruler) | 698 ruler) |
679 (while (and (> m 0) (>= k 0)) | 699 (while (and (> m 0) (>= k 0)) |
680 (aset ruler k (aref c (setq m (1- m)))) | 700 (aset ruler k (aref c (setq m (1- m)))) |
681 (setq k (1- k)))) | 701 (setq k (1- k)))) |
682 ;; Show an intermediate graduation. | 702 ;; Show an intermediate graduation. |
686 (cond | 706 (cond |
687 ;; Show the `current-column' marker. | 707 ;; Show the `current-column' marker. |
688 ((= j (current-column)) | 708 ((= j (current-column)) |
689 (aset ruler i ruler-mode-current-column-char) | 709 (aset ruler i ruler-mode-current-column-char) |
690 (put-text-property | 710 (put-text-property |
691 i (1+ i) 'face 'ruler-mode-current-column-face | 711 i (1+ i) 'face 'ruler-mode-current-column |
692 ruler)) | 712 ruler)) |
693 ;; Show the `goal-column' marker. | 713 ;; Show the `goal-column' marker. |
694 ((and goal-column (= j goal-column)) | 714 ((and goal-column (= j goal-column)) |
695 (aset ruler i ruler-mode-goal-column-char) | 715 (aset ruler i ruler-mode-goal-column-char) |
696 (put-text-property | 716 (put-text-property |
697 i (1+ i) 'face 'ruler-mode-goal-column-face | 717 i (1+ i) 'face 'ruler-mode-goal-column |
698 ruler) | 718 ruler) |
699 (put-text-property | 719 (put-text-property |
700 i (1+ i) 'mouse-face 'mode-line-highlight | 720 i (1+ i) 'mouse-face 'mode-line-highlight |
701 ruler) | 721 ruler) |
702 (put-text-property | 722 (put-text-property |
704 ruler)) | 724 ruler)) |
705 ;; Show the `comment-column' marker. | 725 ;; Show the `comment-column' marker. |
706 ((= j comment-column) | 726 ((= j comment-column) |
707 (aset ruler i ruler-mode-comment-column-char) | 727 (aset ruler i ruler-mode-comment-column-char) |
708 (put-text-property | 728 (put-text-property |
709 i (1+ i) 'face 'ruler-mode-comment-column-face | 729 i (1+ i) 'face 'ruler-mode-comment-column |
710 ruler) | 730 ruler) |
711 (put-text-property | 731 (put-text-property |
712 i (1+ i) 'mouse-face 'mode-line-highlight | 732 i (1+ i) 'mouse-face 'mode-line-highlight |
713 ruler) | 733 ruler) |
714 (put-text-property | 734 (put-text-property |
716 ruler)) | 736 ruler)) |
717 ;; Show the `fill-column' marker. | 737 ;; Show the `fill-column' marker. |
718 ((= j fill-column) | 738 ((= j fill-column) |
719 (aset ruler i ruler-mode-fill-column-char) | 739 (aset ruler i ruler-mode-fill-column-char) |
720 (put-text-property | 740 (put-text-property |
721 i (1+ i) 'face 'ruler-mode-fill-column-face | 741 i (1+ i) 'face 'ruler-mode-fill-column |
722 ruler) | 742 ruler) |
723 (put-text-property | 743 (put-text-property |
724 i (1+ i) 'mouse-face 'mode-line-highlight | 744 i (1+ i) 'mouse-face 'mode-line-highlight |
725 ruler) | 745 ruler) |
726 (put-text-property | 746 (put-text-property |
728 ruler)) | 748 ruler)) |
729 ;; Show the `tab-stop-list' markers. | 749 ;; Show the `tab-stop-list' markers. |
730 ((and ruler-mode-show-tab-stops (member j tab-stop-list)) | 750 ((and ruler-mode-show-tab-stops (member j tab-stop-list)) |
731 (aset ruler i ruler-mode-tab-stop-char) | 751 (aset ruler i ruler-mode-tab-stop-char) |
732 (put-text-property | 752 (put-text-property |
733 i (1+ i) 'face 'ruler-mode-tab-stop-face | 753 i (1+ i) 'face 'ruler-mode-tab-stop |
734 ruler))) | 754 ruler))) |
735 (setq i (1+ i) | 755 (setq i (1+ i) |
736 j (1+ j))) | 756 j (1+ j))) |
737 ;; Return the ruler propertized string. Using list here, | 757 ;; Return the ruler propertized string. Using list here, |
738 ;; instead of concat visually separate the different areas. | 758 ;; instead of concat visually separate the different areas. |