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.