annotate lisp/ruler-mode.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 4de0b34e2c2e
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42836
c6bcb27e426f (ruler-mode): New keyword. Fix :version.
Pavel Janík <Pavel@Janik.cz>
parents: 42706
diff changeset
1 ;;; ruler-mode.el --- display a ruler in the header line
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
3 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
4 ;; 2008, 2009, 2010 Free Software Foundation, Inc.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: David Ponce <david@dponce.com>
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Maintainer: David Ponce <david@dponce.com>
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; Created: 24 Mar 2001
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
9 ;; Version: 1.6
47183
865837df3fe7 (defgroup ruler-mode): Use `convenience' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 45255
diff changeset
10 ;; Keywords: convenience
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13
94693
9276b559433c Standardize permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
17 ;; (at your option) any later version.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18
94693
9276b559433c Standardize permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
22 ;; GNU General Public License for more details.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
94693
9276b559433c Standardize permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;; This library provides a minor mode to display a ruler in the header
78041
5872a3a471bd (ruler-mode): Prevent clobbering the original `header-line-format'
Juanma Barranquero <lekktu@gmail.com>
parents: 75229
diff changeset
30 ;; line. It works from Emacs 21 onwards.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;;
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
32 ;; You can use the mouse to change the `fill-column' `comment-column',
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
33 ;; `goal-column', `window-margins' and `tab-stop-list' settings:
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 ;;
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
35 ;; [header-line (shift down-mouse-1)] set left margin end to the ruler
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;; graduation where the mouse pointer is on.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37 ;;
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
38 ;; [header-line (shift down-mouse-3)] set right margin beginning to
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
39 ;; the ruler graduation where the mouse pointer is on.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 ;;
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
41 ;; [header-line down-mouse-2] Drag the `fill-column', `comment-column'
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
42 ;; or `goal-column' to a ruler graduation.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 ;; [header-line (control down-mouse-1)] add a tab stop to the ruler
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 ;; graduation where the mouse pointer is on.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 ;; [header-line (control down-mouse-3)] remove the tab stop at the
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 ;; ruler graduation where the mouse pointer is on.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 ;; [header-line (control down-mouse-2)] or M-x
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 ;; `ruler-mode-toggle-show-tab-stops' toggle showing and visually
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 ;; editing `tab-stop-list' setting. The `ruler-mode-show-tab-stops'
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 ;; option controls if the ruler shows tab stops by default.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 ;; In the ruler the character `ruler-mode-current-column-char' shows
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 ;; the `current-column' location, `ruler-mode-fill-column-char' shows
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
57 ;; the `fill-column' location, `ruler-mode-comment-column-char' shows
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
58 ;; the `comment-column' location, `ruler-mode-goal-column-char' shows
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
59 ;; the `goal-column' and `ruler-mode-tab-stop-char' shows tab stop
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
60 ;; locations. Graduations in `window-margins' and `window-fringes'
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
61 ;; areas are shown with a different foreground color.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 ;; It is also possible to customize the following characters:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 ;; - `ruler-mode-basic-graduation-char' character used for basic
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 ;; graduations ('.' by default).
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 ;; - `ruler-mode-inter-graduation-char' character used for
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 ;; intermediate graduations ('!' by default).
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 ;; The following faces are customizable:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 ;;
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
72 ;; - `ruler-mode-default' the ruler default face.
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
73 ;; - `ruler-mode-fill-column' the face used to highlight the
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 ;; `fill-column' character.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
75 ;; - `ruler-mode-comment-column' the face used to highlight the
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
76 ;; `comment-column' character.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
77 ;; - `ruler-mode-goal-column' the face used to highlight the
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
78 ;; `goal-column' character.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
79 ;; - `ruler-mode-current-column' the face used to highlight the
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 ;; `current-column' character.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
81 ;; - `ruler-mode-tab-stop' the face used to highlight tab stop
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 ;; characters.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
83 ;; - `ruler-mode-margins' the face used to highlight graduations
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
84 ;; in the `window-margins' areas.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
85 ;; - `ruler-mode-fringes' the face used to highlight graduations
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
86 ;; in the `window-fringes' areas.
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
87 ;; - `ruler-mode-column-number' the face used to highlight the
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
88 ;; numbered graduations.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 ;;
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
90 ;; `ruler-mode-default' inherits from the built-in `default' face.
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
91 ;; All `ruler-mode' faces inherit from `ruler-mode-default'.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 ;; WARNING: To keep ruler graduations aligned on text columns it is
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 ;; important to use the same font family and size for ruler and text
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 ;; areas.
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
96 ;;
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
97 ;; You can override the ruler format by defining an appropriate
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
98 ;; function as the buffer-local value of `ruler-mode-ruler-function'.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 ;; Installation
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 ;; To automatically display the ruler in specific major modes use:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 ;; (add-hook '<major-mode>-hook 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 ;;
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107 ;;; History:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 ;;
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
109
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 ;;; Code:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 (eval-when-compile
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 (require 'wid-edit))
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
113 (require 'scroll-bar)
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
114 (require 'fringe)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116 (defgroup ruler-mode nil
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 "Display a ruler in the header line."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54440
diff changeset
118 :version "22.1"
47183
865837df3fe7 (defgroup ruler-mode): Use `convenience' as parent.
Richard M. Stallman <rms@gnu.org>
parents: 45255
diff changeset
119 :group 'convenience)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 (defcustom ruler-mode-show-tab-stops nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
122 "If non-nil the ruler shows tab stop positions.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123 Also allowing to visually change `tab-stop-list' setting using
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 <C-down-mouse-1> and <C-down-mouse-3> on the ruler to respectively add
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 <C-down-mouse-2> on the ruler toggles showing/editing of tab stops."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 :type 'boolean)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 ;; IMPORTANT: This function must be defined before the following
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 ;; defcustoms because it is used in their :validate clause.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 (defun ruler-mode-character-validate (widget)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 "Ensure WIDGET value is a valid character value."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 (save-excursion
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 (let ((value (widget-value widget)))
88997
71bcf52caa3b (ruler-mode-character-validate): Use characterp.
Dave Love <fx@gnu.org>
parents: 42836
diff changeset
136 (unless (characterp value)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 (widget-put widget :error
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 (format "Invalid character value: %S" value))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 widget))))
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
140
52430
8ab45ba34207 (ruler-mode-fill-column-char)
Dave Love <fx@gnu.org>
parents: 52401
diff changeset
141 (defcustom ruler-mode-fill-column-char (if (char-displayable-p ?¶)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 ?\¶
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 ?\|)
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
144 "Character used at the `fill-column' location."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 :type '(choice
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 (character :tag "Character")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (integer :tag "Integer char value"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 :validate ruler-mode-character-validate)))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
151 (defcustom ruler-mode-comment-column-char ?\#
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
152 "Character used at the `comment-column' location."
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
153 :group 'ruler-mode
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
154 :type '(choice
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
155 (character :tag "Character")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
156 (integer :tag "Integer char value"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
157 :validate ruler-mode-character-validate)))
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
158
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
159 (defcustom ruler-mode-goal-column-char ?G
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
160 "Character used at the `goal-column' location."
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
161 :group 'ruler-mode
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
162 :type '(choice
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
163 (character :tag "Character")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
164 (integer :tag "Integer char value"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
165 :validate ruler-mode-character-validate)))
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
166
52430
8ab45ba34207 (ruler-mode-fill-column-char)
Dave Love <fx@gnu.org>
parents: 52401
diff changeset
167 (defcustom ruler-mode-current-column-char (if (char-displayable-p ?¦)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 ?\¦
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 ?\@)
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
170 "Character used at the `current-column' location."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 :type '(choice
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (character :tag "Character")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 (integer :tag "Integer char value"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 :validate ruler-mode-character-validate)))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 (defcustom ruler-mode-tab-stop-char ?\T
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
178 "Character used at `tab-stop-list' locations."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 :type '(choice
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 (character :tag "Character")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 (integer :tag "Integer char value"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 :validate ruler-mode-character-validate)))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 (defcustom ruler-mode-basic-graduation-char ?\.
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
186 "Character used for basic graduations."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 :type '(choice
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 (character :tag "Character")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 (integer :tag "Integer char value"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 :validate ruler-mode-character-validate)))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (defcustom ruler-mode-inter-graduation-char ?\!
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
194 "Character used for intermediate graduations."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 :group 'ruler-mode
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 :type '(choice
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 (character :tag "Character")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 (integer :tag "Integer char value"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 :validate ruler-mode-character-validate)))
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
200
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
201 (defcustom ruler-mode-set-goal-column-ding-flag t
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
202 "Non-nil means do `ding' when `goal-column' is set."
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
203 :group 'ruler-mode
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
204 :type 'boolean)
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
205
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
206 (defface ruler-mode-default
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 '((((type tty))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 (:inherit default
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 :background "grey64"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 :foreground "grey50"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 ))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (t
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (:inherit default
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 :background "grey76"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 :foreground "grey64"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 :box (:color "grey76"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 :line-width 1
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 :style released-button)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 )))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 "Default face used by the ruler."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 :group 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
223 (defface ruler-mode-pad
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
224 '((((type tty))
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
225 (:inherit ruler-mode-default
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
226 :background "grey50"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
227 ))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
228 (t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
229 (:inherit ruler-mode-default
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
230 :background "grey64"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
231 )))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
232 "Face used to pad inactive ruler areas."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
233 :group 'ruler-mode)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
234
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
235 (defface ruler-mode-margins
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
236 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
237 (:inherit ruler-mode-default
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
238 :foreground "white"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
239 )))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
240 "Face used to highlight margin areas."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
241 :group 'ruler-mode)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
242
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
243 (defface ruler-mode-fringes
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
244 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
245 (:inherit ruler-mode-default
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
246 :foreground "green"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
247 )))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
248 "Face used to highlight fringes areas."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
249 :group 'ruler-mode)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
250
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
251 (defface ruler-mode-column-number
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
253 (:inherit ruler-mode-default
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 :foreground "black"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 )))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 "Face used to highlight number graduations."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 :group 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
259 (defface ruler-mode-fill-column
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
261 (:inherit ruler-mode-default
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 :foreground "red"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 )))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 "Face used to highlight the fill column character."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265 :group 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
267 (defface ruler-mode-comment-column
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
268 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
269 (:inherit ruler-mode-default
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
270 :foreground "red"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
271 )))
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
272 "Face used to highlight the comment column character."
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
273 :group 'ruler-mode)
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
274
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
275 (defface ruler-mode-goal-column
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
276 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
277 (:inherit ruler-mode-default
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
278 :foreground "red"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
279 )))
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
280 "Face used to highlight the goal column character."
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
281 :group 'ruler-mode)
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
282
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
283 (defface ruler-mode-tab-stop
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
285 (:inherit ruler-mode-default
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 :foreground "steelblue"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 )))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 "Face used to highlight tab stop characters."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 :group 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
291 (defface ruler-mode-current-column
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 '((t
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
293 (:inherit ruler-mode-default
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 :weight bold
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 :foreground "yellow"
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 )))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 "Face used to highlight the `current-column' character."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298 :group 'ruler-mode)
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
299
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
300
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
301 (defsubst ruler-mode-full-window-width ()
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
302 "Return the full width of the selected window."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
303 (let ((edges (window-edges)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
304 (- (nth 2 edges) (nth 0 edges))))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
305
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
306 (defsubst ruler-mode-window-col (n)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
307 "Return a column number relative to the selected window.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
308 N is a column number relative to selected frame."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
309 (- n
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
310 (car (window-edges))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
311 (or (car (window-margins)) 0)
54401
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
312 (fringe-columns 'left)
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
313 (scroll-bar-columns 'left)))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
314
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 (defun ruler-mode-mouse-set-left-margin (start-event)
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
316 "Set left margin end to the graduation where the mouse pointer is on.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
317 START-EVENT is the mouse click event."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318 (interactive "e")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 (let* ((start (event-start start-event))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 (end (event-end start-event))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
321 col w lm rm)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
322 (when (eq start end) ;; mouse click
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
323 (save-selected-window
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
324 (select-window (posn-window start))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
325 (setq col (- (car (posn-col-row start)) (car (window-edges))
54401
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
326 (scroll-bar-columns 'left))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
327 w (- (ruler-mode-full-window-width)
54401
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
328 (scroll-bar-columns 'left)
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
329 (scroll-bar-columns 'right)))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
330 (when (and (>= col 0) (< col w))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
331 (setq lm (window-margins)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
332 rm (or (cdr lm) 0)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
333 lm (or (car lm) 0))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
334 (message "Left margin set to %d (was %d)" col lm)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
335 (set-window-margins nil col rm))))))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 (defun ruler-mode-mouse-set-right-margin (start-event)
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
338 "Set right margin beginning to the graduation where the mouse pointer is on.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 START-EVENT is the mouse click event."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 (interactive "e")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 (let* ((start (event-start start-event))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 (end (event-end start-event))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
343 col w lm rm)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
344 (when (eq start end) ;; mouse click
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
345 (save-selected-window
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
346 (select-window (posn-window start))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
347 (setq col (- (car (posn-col-row start)) (car (window-edges))
54401
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
348 (scroll-bar-columns 'left))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
349 w (- (ruler-mode-full-window-width)
54401
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
350 (scroll-bar-columns 'left)
7f6dab15e141 2004-03-15 David Ponce <david@dponce.com>
Masatake YAMATO <jet@gyve.org>
parents: 54399
diff changeset
351 (scroll-bar-columns 'right)))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
352 (when (and (>= col 0) (< col w))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
353 (setq lm (window-margins)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
354 rm (or (cdr lm) 0)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
355 lm (or (car lm) 0)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
356 col (- w col 1))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
357 (message "Right margin set to %d (was %d)" col rm)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
358 (set-window-margins nil lm col))))))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
360 (defvar ruler-mode-dragged-symbol nil
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
361 "Column symbol dragged in the ruler.
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
362 That is `fill-column', `comment-column', `goal-column', or nil when
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
363 nothing is dragged.")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
364
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
365 (defun ruler-mode-mouse-grab-any-column (start-event)
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
366 "Drag a column symbol on the ruler.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
367 Start dragging on mouse down event START-EVENT, and update the column
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
368 symbol value with the current value of the ruler graduation while
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
369 dragging. See also the variable `ruler-mode-dragged-symbol'."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 (interactive "e")
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
371 (setq ruler-mode-dragged-symbol nil)
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
372 (let* ((start (event-start start-event))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
373 col newc oldc)
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
374 (save-selected-window
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
375 (select-window (posn-window start))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
376 (setq col (ruler-mode-window-col (car (posn-col-row start)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
377 newc (+ col (window-hscroll)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
378 (and
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
379 (>= col 0) (< col (window-width))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
380 (cond
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
381
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
382 ;; Handle the fill column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
383 ((eq newc fill-column)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
384 (setq oldc fill-column
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
385 ruler-mode-dragged-symbol 'fill-column)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
386 t) ;; Start dragging
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
387
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
388 ;; Handle the comment column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
389 ((eq newc comment-column)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
390 (setq oldc comment-column
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
391 ruler-mode-dragged-symbol 'comment-column)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
392 t) ;; Start dragging
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
393
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
394 ;; Handle the goal column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
395 ;; A. On mouse down on the goal column character on the ruler,
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
396 ;; update the `goal-column' value while dragging.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
397 ;; B. If `goal-column' is nil, set the goal column where the
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
398 ;; mouse is clicked.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
399 ;; C. On mouse click on the goal column character on the
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
400 ;; ruler, unset the goal column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
401 ((eq newc goal-column) ; A. Drag the goal column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
402 (setq oldc goal-column
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
403 ruler-mode-dragged-symbol 'goal-column)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
404 t) ;; Start dragging
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
405
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
406 ((null goal-column) ; B. Set the goal column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
407 (setq oldc goal-column
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
408 goal-column newc)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
409 ;; mouse-2 coming AFTER drag-mouse-2 invokes `ding'. This
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
410 ;; `ding' flushes the next messages about setting goal
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
411 ;; column. So here I force fetch the event(mouse-2) and
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
412 ;; throw away.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
413 (read-event)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
414 ;; Ding BEFORE `message' is OK.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
415 (when ruler-mode-set-goal-column-ding-flag
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
416 (ding))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
417 (message "Goal column set to %d (click on %s again to unset it)"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
418 newc
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
419 (propertize (char-to-string ruler-mode-goal-column-char)
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
420 'face 'ruler-mode-goal-column))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
421 nil) ;; Don't start dragging.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
422 )
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
423 (if (eq 'click (ruler-mode-mouse-drag-any-column-iteration
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
424 (posn-window start)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
425 (when (eq 'goal-column ruler-mode-dragged-symbol)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
426 ;; C. Unset the goal column.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
427 (set-goal-column t))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
428 ;; At end of dragging, report the updated column symbol.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
429 (message "%s is set to %d (was %d)"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
430 ruler-mode-dragged-symbol
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
431 (symbol-value ruler-mode-dragged-symbol)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
432 oldc))))))
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
433
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
434 (defun ruler-mode-mouse-drag-any-column-iteration (window)
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
435 "Update the ruler while dragging the mouse.
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
436 WINDOW is the window where occurred the last down-mouse event.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
437 Return the symbol `drag' if the mouse has been dragged, or `click' if
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
438 the mouse has been clicked."
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
439 (let ((drags 0)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
440 event)
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
441 (track-mouse
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
442 (while (mouse-movement-p (setq event (read-event)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
443 (setq drags (1+ drags))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
444 (when (eq window (posn-window (event-end event)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
445 (ruler-mode-mouse-drag-any-column event)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
446 (force-mode-line-update))))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
447 (if (and (zerop drags) (eq 'click (car (event-modifiers event))))
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
448 'click
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
449 'drag)))
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
450
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
451 (defun ruler-mode-mouse-drag-any-column (start-event)
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
452 "Update the value of the symbol dragged on the ruler.
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
453 Called on each mouse motion event START-EVENT."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
454 (let* ((start (event-start start-event))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
455 (end (event-end start-event))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
456 col newc)
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
457 (save-selected-window
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
458 (select-window (posn-window start))
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
459 (setq col (ruler-mode-window-col (car (posn-col-row end)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
460 newc (+ col (window-hscroll)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
461 (when (and (>= col 0) (< col (window-width)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
462 (set ruler-mode-dragged-symbol newc)))))
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
463
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
464 (defun ruler-mode-mouse-add-tab-stop (start-event)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
465 "Add a tab stop to the graduation where the mouse pointer is on.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
466 START-EVENT is the mouse click event."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
467 (interactive "e")
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
468 (when ruler-mode-show-tab-stops
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
469 (let* ((start (event-start start-event))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
470 (end (event-end start-event))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
471 col ts)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
472 (when (eq start end) ;; mouse click
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
473 (save-selected-window
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
474 (select-window (posn-window start))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
475 (setq col (ruler-mode-window-col (car (posn-col-row start)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
476 ts (+ col (window-hscroll)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
477 (and (>= col 0) (< col (window-width))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
478 (not (member ts tab-stop-list))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
479 (progn
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
480 (message "Tab stop set to %d" ts)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
481 (setq tab-stop-list (sort (cons ts tab-stop-list)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
482 #'<)))))))))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
484 (defun ruler-mode-mouse-del-tab-stop (start-event)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
485 "Delete tab stop at the graduation where the mouse pointer is on.
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
486 START-EVENT is the mouse click event."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
487 (interactive "e")
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
488 (when ruler-mode-show-tab-stops
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
489 (let* ((start (event-start start-event))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
490 (end (event-end start-event))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
491 col ts)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
492 (when (eq start end) ;; mouse click
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
493 (save-selected-window
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
494 (select-window (posn-window start))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
495 (setq col (ruler-mode-window-col (car (posn-col-row start)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
496 ts (+ col (window-hscroll)))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
497 (and (>= col 0) (< col (window-width))
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
498 (member ts tab-stop-list)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
499 (progn
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
500 (message "Tab stop at %d deleted" ts)
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
501 (setq tab-stop-list (delete ts tab-stop-list)))))))))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
502
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
503 (defun ruler-mode-toggle-show-tab-stops ()
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
504 "Toggle showing of tab stops on the ruler."
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
505 (interactive)
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
506 (setq ruler-mode-show-tab-stops (not ruler-mode-show-tab-stops))
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
507 (force-mode-line-update))
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
508
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
509 (defvar ruler-mode-map
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
510 (let ((km (make-sparse-keymap)))
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
511 (define-key km [header-line down-mouse-1]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
512 #'ignore)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
513 (define-key km [header-line down-mouse-3]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
514 #'ignore)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
515 (define-key km [header-line down-mouse-2]
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
516 #'ruler-mode-mouse-grab-any-column)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
517 (define-key km [header-line (shift down-mouse-1)]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
518 #'ruler-mode-mouse-set-left-margin)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
519 (define-key km [header-line (shift down-mouse-3)]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
520 #'ruler-mode-mouse-set-right-margin)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
521 (define-key km [header-line (control down-mouse-1)]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
522 #'ruler-mode-mouse-add-tab-stop)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
523 (define-key km [header-line (control down-mouse-3)]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
524 #'ruler-mode-mouse-del-tab-stop)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
525 (define-key km [header-line (control down-mouse-2)]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
526 #'ruler-mode-toggle-show-tab-stops)
73777
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
527 (define-key km [header-line (shift mouse-1)]
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
528 'ignore)
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
529 (define-key km [header-line (shift mouse-3)]
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
530 'ignore)
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
531 (define-key km [header-line (control mouse-1)]
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
532 'ignore)
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
533 (define-key km [header-line (control mouse-3)]
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
534 'ignore)
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
535 (define-key km [header-line (control mouse-2)]
461d1ed79b75 (ruler-mode-map): Add bindings for up-events so that they aren't undefined.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
536 'ignore)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
537 km)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
538 "Keymap for ruler minor mode.")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
539
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
540 (defvar ruler-mode-header-line-format-old nil
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
541 "Hold previous value of `header-line-format'.")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
542
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
543 (defvar ruler-mode-ruler-function 'ruler-mode-ruler
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
544 "Function to call to return ruler header line format.
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
545 This variable is expected to be made buffer-local by modes.")
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
546
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
547 (defconst ruler-mode-header-line-format
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
548 '(:eval (funcall ruler-mode-ruler-function))
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 52889
diff changeset
549 "`header-line-format' used in ruler mode.
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
550 Call `ruler-mode-ruler-function' to compute the ruler value.")
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
551
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
552 ;;;###autoload
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
553 (defvar ruler-mode nil
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
554 "Non-nil if Ruler mode is enabled.
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
555 Use the command `ruler-mode' to change this variable.")
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
556 (make-variable-buffer-local 'ruler-mode)
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
557
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
558 (defun ruler--save-header-line-format ()
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
559 "Install the header line format for Ruler mode.
109090
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
560 Unless Ruler mode is already enabled, save the old header line
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
561 format first."
109090
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
562 (when (and (not ruler-mode)
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
563 (local-variable-p 'header-line-format)
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
564 (not (local-variable-p 'ruler-mode-header-line-format-old)))
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
565 (set (make-local-variable 'ruler-mode-header-line-format-old)
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
566 header-line-format))
4de0b34e2c2e * ruler-mode.el (ruler--save-header-line-format): Fix typos.
Chong Yidong <cyd@stupidchicken.com>
parents: 109084
diff changeset
567 (setq header-line-format ruler-mode-header-line-format))
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
568
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
569 ;;;###autoload
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
570 (define-minor-mode ruler-mode
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
571 "Toggle Ruler mode.
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
572 In Ruler mode, Emacs displays a ruler in the header line."
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
573 nil nil
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
574 ruler-mode-map
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
575 :group 'ruler-mode
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
576 :variable (ruler-mode
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
577 . (lambda (enable)
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
578 (when enable
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
579 (ruler--save-header-line-format))
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
580 (setq ruler-mode enable)))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
581 (if ruler-mode
109084
9e474f641740 Don't always set ruler-mode-header-line-format-old (Bug#5370).
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
582 (add-hook 'post-command-hook 'force-mode-line-update nil t)
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
583 ;; When `ruler-mode' is off restore previous header line format if
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
584 ;; the current one is the ruler header line format.
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
585 (when (eq header-line-format ruler-mode-header-line-format)
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
586 (kill-local-variable 'header-line-format)
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
587 (when (local-variable-p 'ruler-mode-header-line-format-old)
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
588 (setq header-line-format ruler-mode-header-line-format-old)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
589 (kill-local-variable 'ruler-mode-header-line-format-old)))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
590 (remove-hook 'post-command-hook 'force-mode-line-update t)))
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
591
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 42020
diff changeset
592 ;; Add ruler-mode to the minor mode menu in the mode line
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
593 (define-key mode-line-mode-menu [ruler-mode]
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
594 `(menu-item "Ruler" ruler-mode
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
595 :button (:toggle . ruler-mode)))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
596
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
597 (defconst ruler-mode-ruler-help-echo
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
598 "\
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
599 S-mouse-1/3: set L/R margin, \
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
600 mouse-2: set goal column, \
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
601 C-mouse-2: show tabs"
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
602 "Help string shown when mouse is over the ruler.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
603 `ruler-mode-show-tab-stops' is nil.")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
604
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
605 (defconst ruler-mode-ruler-help-echo-when-goal-column
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
606 "\
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
607 S-mouse-1/3: set L/R margin, \
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
608 C-mouse-2: show tabs"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
609 "Help string shown when mouse is over the ruler.
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
610 `goal-column' is set and `ruler-mode-show-tab-stops' is nil.")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
611
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
612 (defconst ruler-mode-ruler-help-echo-when-tab-stops
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
613 "\
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
614 C-mouse1/3: set/unset tab, \
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
615 C-mouse-2: hide tabs"
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
616 "Help string shown when mouse is over the ruler.
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
617 `ruler-mode-show-tab-stops' is non-nil.")
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
618
49195
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
619 (defconst ruler-mode-fill-column-help-echo
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
620 "drag-mouse-2: set fill column"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
621 "Help string shown when mouse is on the fill column character.")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
622
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
623 (defconst ruler-mode-comment-column-help-echo
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
624 "drag-mouse-2: set comment column"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
625 "Help string shown when mouse is on the comment column character.")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
626
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
627 (defconst ruler-mode-goal-column-help-echo
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
628 "\
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
629 drag-mouse-2: set goal column, \
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
630 mouse-2: unset goal column"
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
631 "Help string shown when mouse is on the goal column character.")
c297d31ef382 (ruler-mode-comment-column-char, ruler-mode-goal-column-char)
Juanma Barranquero <lekktu@gmail.com>
parents: 47425
diff changeset
632
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
633 (defconst ruler-mode-margin-help-echo
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
634 "%s margin %S"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
635 "Help string shown when mouse is over a margin area.")
42020
6e891121e1cc (ruler-mode-extra-left-cols): Removed.
Richard M. Stallman <rms@gnu.org>
parents: 42003
diff changeset
636
51389
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
637 (defconst ruler-mode-fringe-help-echo
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
638 "%s fringe %S"
a8b686f386db Version 1.6
Juanma Barranquero <lekktu@gmail.com>
parents: 49769
diff changeset
639 "Help string shown when mouse is over a fringe area.")
52889
615ebe291578 (ruler-mode-left-fringe-cols): Add new optional
Richard M. Stallman <rms@gnu.org>
parents: 52430
diff changeset
640
615ebe291578 (ruler-mode-left-fringe-cols): Add new optional
Richard M. Stallman <rms@gnu.org>
parents: 52430
diff changeset
641 (defsubst ruler-mode-space (width &rest props)
615ebe291578 (ruler-mode-left-fringe-cols): Add new optional
Richard M. Stallman <rms@gnu.org>
parents: 52430
diff changeset
642 "Return a single space string of WIDTH times the normal character width.
615ebe291578 (ruler-mode-left-fringe-cols): Add new optional
Richard M. Stallman <rms@gnu.org>
parents: 52430
diff changeset
643 Optional argument PROPS specifies other text properties to apply."
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
644 (apply 'propertize " " 'display (list 'space :width width) props))
41461
5507024cc13c Add pagination.
Richard M. Stallman <rms@gnu.org>
parents: 39731
diff changeset
645
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646 (defun ruler-mode-ruler ()
75229
26181d6e6a87 (ruler-mode-ruler): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 73777
diff changeset
647 "Compute and return a header line ruler."
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
648 (let* ((w (window-width))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
649 (m (window-margins))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
650 (f (window-fringes))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
651 (i 0)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
652 (j (window-hscroll))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
653 ;; Setup the scrollbar, fringes, and margins areas.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
654 (lf (ruler-mode-space
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
655 'left-fringe
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
656 'face 'ruler-mode-fringes
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
657 'help-echo (format ruler-mode-fringe-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
658 "Left" (or (car f) 0))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
659 (rf (ruler-mode-space
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
660 'right-fringe
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
661 'face 'ruler-mode-fringes
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
662 'help-echo (format ruler-mode-fringe-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
663 "Right" (or (cadr f) 0))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
664 (lm (ruler-mode-space
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
665 'left-margin
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
666 'face 'ruler-mode-margins
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
667 'help-echo (format ruler-mode-margin-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
668 "Left" (or (car m) 0))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
669 (rm (ruler-mode-space
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
670 'right-margin
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
671 'face 'ruler-mode-margins
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
672 'help-echo (format ruler-mode-margin-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
673 "Right" (or (cdr m) 0))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
674 (sb (ruler-mode-space
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
675 'scroll-bar
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
676 'face 'ruler-mode-pad))
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
677 ;; Remember the scrollbar vertical type.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
678 (sbvt (car (window-current-scroll-bars)))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
679 ;; Create an "clean" ruler.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
680 (ruler
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
681 (propertize
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94693
diff changeset
682 (string-to-multibyte
90660
242b6dccacc1 (ruler-mode-ruler): Make the string `ruler'
Kenichi Handa <handa@m17n.org>
parents: 90650
diff changeset
683 (make-string w ruler-mode-basic-graduation-char))
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
684 'face 'ruler-mode-default
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
685 'local-map ruler-mode-map
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
686 'help-echo (cond
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
687 (ruler-mode-show-tab-stops
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
688 ruler-mode-ruler-help-echo-when-tab-stops)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
689 (goal-column
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
690 ruler-mode-ruler-help-echo-when-goal-column)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
691 (ruler-mode-ruler-help-echo))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
692 k c)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
693 ;; Setup the active area.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
694 (while (< i w)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
695 ;; Graduations.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
696 (cond
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
697 ;; Show a number graduation.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
698 ((= (mod j 10) 0)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
699 (setq c (number-to-string (/ j 10))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
700 m (length c)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
701 k i)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
702 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
703 i (1+ i) 'face 'ruler-mode-column-number
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
704 ruler)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
705 (while (and (> m 0) (>= k 0))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
706 (aset ruler k (aref c (setq m (1- m))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
707 (setq k (1- k))))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
708 ;; Show an intermediate graduation.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
709 ((= (mod j 5) 0)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
710 (aset ruler i ruler-mode-inter-graduation-char)))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
711 ;; Special columns.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
712 (cond
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
713 ;; Show the `current-column' marker.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
714 ((= j (current-column))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
715 (aset ruler i ruler-mode-current-column-char)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
716 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
717 i (1+ i) 'face 'ruler-mode-current-column
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
718 ruler))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
719 ;; Show the `goal-column' marker.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
720 ((and goal-column (= j goal-column))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
721 (aset ruler i ruler-mode-goal-column-char)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
722 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
723 i (1+ i) 'face 'ruler-mode-goal-column
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
724 ruler)
62651
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
725 (put-text-property
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
726 i (1+ i) 'mouse-face 'mode-line-highlight
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
727 ruler)
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
728 (put-text-property
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
729 i (1+ i) 'help-echo ruler-mode-goal-column-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
730 ruler))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
731 ;; Show the `comment-column' marker.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
732 ((= j comment-column)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
733 (aset ruler i ruler-mode-comment-column-char)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
734 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
735 i (1+ i) 'face 'ruler-mode-comment-column
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
736 ruler)
62651
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
737 (put-text-property
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
738 i (1+ i) 'mouse-face 'mode-line-highlight
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
739 ruler)
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
740 (put-text-property
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
741 i (1+ i) 'help-echo ruler-mode-comment-column-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
742 ruler))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
743 ;; Show the `fill-column' marker.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
744 ((= j fill-column)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
745 (aset ruler i ruler-mode-fill-column-char)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
746 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
747 i (1+ i) 'face 'ruler-mode-fill-column
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
748 ruler)
62651
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
749 (put-text-property
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
750 i (1+ i) 'mouse-face 'mode-line-highlight
8d965863dd8c Supprot mouse-face on mode-line.
Masatake YAMATO <jet@gyve.org>
parents: 59996
diff changeset
751 ruler)
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
752 (put-text-property
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
753 i (1+ i) 'help-echo ruler-mode-fill-column-help-echo
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
754 ruler))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
755 ;; Show the `tab-stop-list' markers.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
756 ((and ruler-mode-show-tab-stops (member j tab-stop-list))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
757 (aset ruler i ruler-mode-tab-stop-char)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
758 (put-text-property
63201
c1af317747bc Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents: 62651
diff changeset
759 i (1+ i) 'face 'ruler-mode-tab-stop
54440
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
760 ruler)))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
761 (setq i (1+ i)
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
762 j (1+ j)))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
763 ;; Return the ruler propertized string. Using list here,
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
764 ;; instead of concat visually separate the different areas.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
765 (if (nth 2 (window-fringes))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
766 ;; fringes outside margins.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
767 (list "" (and (eq 'left sbvt) sb) lf lm
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
768 ruler rm rf (and (eq 'right sbvt) sb))
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
769 ;; fringes inside margins.
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
770 (list "" (and (eq 'left sbvt) sb) lm lf
aabf30299e6c From David Ponce <david@dponce.com>
Kim F. Storm <storm@cua.dk>
parents: 54401
diff changeset
771 ruler rf rm (and (eq 'right sbvt) sb)))))
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
772
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
773 (provide 'ruler-mode)
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
774
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
775 ;; Local Variables:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
776 ;; coding: iso-latin-1
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
777 ;; End:
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
778
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
779 ;; arch-tag: b2f24546-5605-44c4-b67b-c9a4eeba3ee8
39731
0fbd04880396 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
780 ;;; ruler-mode.el ends here