annotate lisp/align.el @ 66573:e65b759c6906

Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-630 Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 149-151) - Merge from emacs--cvs-trunk--0 - Update from CVS 2005-10-27 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/flow-fill.el (fill-flowed-encode-tests): Restore trailing whitespace removed in revision 7.8. Use concatenated string to protect trailing whitespace. 2005-10-27 Jouni K Seppanen <jks@iki.fi> (tiny change) * lisp/gnus/nnimap.el (nnimap-search-uids-not-since-is-evil): Add variable. (nnimap-request-expire-articles): Use it to avoid sending 'UID SEARCH UID ... NOT SINCE' queries, for inefficient servers like Courier IMAP ("some version from 2004"). Mostly based on similar code in the same function. 2005-10-26 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/message.el (message-display-completion-list): New function. (message-expand-group): Use it; make sure the Completions buffer is modifiable.
author Miles Bader <miles@gnu.org>
date Mon, 31 Oct 2005 07:07:28 +0000
parents bc16d0987bb1
children b34c1d612bd4 2d92f5c9d6ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 32451
diff changeset
1 ;;; align.el --- align text to a specific column, by regexp
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
4 ;; 2005 Free Software Foundation, Inc.
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: John Wiegley <johnw@gnu.org>
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Keywords: convenience languages lisp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; any later version.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
24 ;; Boston, MA 02110-1301, USA.
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;; This mode allows you to align regions in a context-sensitive fashion.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;; The classic use is to align assignments:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;; int a = 1;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;; short foo = 2;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 ;; double blah = 4;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35 ;; becomes
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37 ;; int a = 1;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 ;; short foo = 2;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 ;; double blah = 4;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 ;;; Usage:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 ;; There are several variables which define how certain "categories"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 ;; of syntax are to be treated. These variables go by the name
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 ;; `align-CATEGORY-modes'. For example, "c++" is such a category.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 ;; There are several rules which apply to c++, but since several other
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 ;; languages have a syntax similar to c++ (e.g., c, java, etc), these
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48 ;; modes are treated as belonging to the same category.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 ;; If you want to add a new mode under a certain category, just
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 ;; customize that list, or add the new mode manually. For example, to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 ;; make jde-mode a c++ category mode, use this code in your .emacs
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 ;; file:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 ;; (setq align-c++-modes (cons 'jde-mode align-c++-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 ;; In some programming modes, it's useful to have the aligner run only
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 ;; after indentation is performed. To achieve this, customize or set
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 ;; the variable `align-indent-before-aligning' to t.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 ;;; Module Authors:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 ;; In order to incorporate align's functionality into your own
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 ;; modules, there are only a few steps you have to follow.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 ;; 1. Require or load in the align.el library.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 ;; 2. Define your alignment and exclusion rules lists, either
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 ;; customizable or not.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 ;; 3. In your mode function, set the variables
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 ;; `align-mode-rules-list' and `align-mode-exclude-rules-list'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 ;; to your own rules lists.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 ;; If there is any need to add your mode name to one of the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 ;; align-?-modes variables (for example, `align-dq-string-modes'), use
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 ;; `add-to-list', or some similar function which checks first to see
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 ;; if the value is already there. Since the user may customize that
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 ;; mode list, and then write your mode name into their .emacs file,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 ;; causing the symbol already to be present the next time they load
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 ;; your package.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 ;; Example:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85 ;; (require 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87 ;; (defcustom my-align-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 ;; '((my-rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 ;; (regexp . "Sample")))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 ;; :type align-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91 ;; :group 'my-package)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 ;; (put 'my-align-rules-list 'risky-local-variable t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 ;; (add-to-list 'align-dq-string-modes 'my-package-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 ;; (add-to-list 'align-open-comment-modes 'my-package-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 ;; (defun my-mode ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 ;; ...
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 ;; (setq align-mode-rules-list my-align-rules-list))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 ;;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 ;; Note that if you need to install your own exclusion rules, then you
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 ;; will also need to reproduce any double-quoted string, or open
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 ;; comment exclusion rules that are defined in the standard
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 ;; `align-exclude-rules-list'. At the moment there is no convenient
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106 ;; way to mix both mode-local and global rules lists.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 ;;; History:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
109
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 ;; Version 1.0 was created in the earlier part of 1996, using a very
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 ;; simple algorithm that understand only basic regular expressions.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 ;; Parts of the code were broken up and included in vhdl-mode.el
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 ;; around this time. After several comments from users, and a need to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 ;; find a more robust, performant algorithm, 2.0 was born in late
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 ;; 1998. Many different approaches were taken (mostly due to the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116 ;; complexity of TeX tables), but finally a scheme was discovered
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 ;; which worked fairly well for most common usage cases. Development
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 ;; beyond version 2.8 is not planned, except for problems that users
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 ;; might encounter.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 ;;; Code:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
122
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123 (defgroup align nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 "Align text to a specific column, by regexp."
30890
7bd10623068c (align) <defgroup>: Add :version.
Dave Love <fx@gnu.org>
parents: 30254
diff changeset
125 :version "21.1"
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 :group 'fill)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 ;;; User Variables:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 (defcustom align-load-hook nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 "*Hook that gets run after the aligner has been loaded."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 :type 'hook
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 (defcustom align-indent-before-aligning nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 "*If non-nil, indent the marked region before aligning it."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 :type 'boolean
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 (defcustom align-default-spacing 1
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 "*An integer that represents the default amount of padding to use.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 If `align-to-tab-stop' is non-nil, this will represent the number of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 tab stops to use for alignment, rather than the number of spaces.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 Each alignment rule can optionally override both this variable. See
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 `align-mode-alist'."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 :type 'integer
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 (defcustom align-to-tab-stop 'indent-tabs-mode
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 "*If non-nil, alignments will always fall on a tab boundary.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 It may also be a symbol, whose value will be taken."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152 :type '(choice (const nil) symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 (defcustom align-region-heuristic 500
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 "*If non-nil, used as a heuristic by `align-current'.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 Since each alignment rule can possibly have its own set of alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 sections (whenever `align-region-separate' is non-nil, and not a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159 string), this heuristic is used to determine how far before and after
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 point we should search in looking for a region separator. Larger
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 values can mean slower perform in large files, although smaller values
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 may cause unexpected behavior at times."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 :type 'integer
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166 (defcustom align-highlight-change-face 'highlight
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167 "*The face to highlight with if changes are necessary."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 :type 'face
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 (defcustom align-highlight-nochange-face 'secondary-selection
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 "*The face to highlight with if no changes are necessary."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 :type 'face
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 (defcustom align-large-region 10000
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 "*If an integer, defines what constitutes a \"large\" region.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 If nil,then no messages will ever be printed to the minibuffer."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 :type 'integer
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 (defcustom align-c++-modes '(c++-mode c-mode java-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 "*A list of modes whose syntax resembles C/C++."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 (defcustom align-perl-modes '(perl-mode cperl-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 "*A list of modes where perl syntax is to be seen."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192 (defcustom align-lisp-modes
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 '(emacs-lisp-mode lisp-interaction-mode lisp-mode scheme-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 "*A list of modes whose syntax resembles Lisp."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 (defcustom align-tex-modes
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 '(tex-mode plain-tex-mode latex-mode slitex-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 "*A list of modes whose syntax resembles TeX (and family)."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
201 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204 (defcustom align-text-modes '(text-mode outline-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205 "*A list of modes whose content is plain text."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
209 (defcustom align-dq-string-modes
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
210 (append align-lisp-modes align-c++-modes align-perl-modes
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
211 '(python-mode))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 "*A list of modes where double quoted strings should be excluded."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
216 (defcustom align-sq-string-modes
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
217 (append align-perl-modes '(python-mode))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 "*A list of modes where single quoted strings should be excluded."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
222 (defcustom align-open-comment-modes
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
223 (append align-lisp-modes align-c++-modes align-perl-modes
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
224 '(python-mode makefile-mode))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 "*A list of modes with a single-line comment syntax.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 These are comments as in Lisp, which have a beginning but, end with
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
227 the line (i.e., `comment-end' is an empty string)."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
228 :type '(repeat symbol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231 (defcustom align-region-separate "^\\s-*[{}]?\\s-*$"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 "*Select the method by which alignment sections will be separated.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 If this is a symbol, that symbol's value will be used.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 For the sake of clarification, consider the following example, which
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236 will be referred to in the descriptions below.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238 int alpha = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 double beta = 2.0;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 long gamma; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 unsigned int delta = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 long double epsilon = 3.0;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 long long omega; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 The possible settings for `align-region-separate' are:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 `entire' The entire region being aligned will be considered as a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 single alignment section. Assuming that comments were not
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 being aligned to a particular column, the example would
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 become:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 int alpha = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 double beta = 2.0;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 long gamma; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 unsigned int delta = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 long double epsilon;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259 long long chi = 10; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 `group' Each contiguous set of lines where a specific alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 occurs is considered a section for that alignment rule.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 Note that each rule will may have any entirely different
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 set of section divisions than another.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 int alpha = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 double beta = 2.0;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 long gamma; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270 unsigned int delta = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271 long double epsilon;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 long long chi = 10; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 `largest' When contiguous rule sets overlap, the largest section
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 described will be taken as the alignment section for each
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
276 rule touched by that section.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 int alpha = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 double beta = 2.0;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 long gamma; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 unsigned int delta = 1; /* one */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 long double epsilon;
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 long long chi = 10; /* ten */
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 NOTE: This option is not supported yet, due to algorithmic
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 issues which haven't been satisfactorily resolved. There
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 are ways to do it, but they're both ugly and resource
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 consumptive.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291 regexp A regular expression string which defines the section
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 divider. If the mode you're in has a consistent divider
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 between sections, the behavior will be very similar to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 `largest', and faster. But if the mode does not use clear
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 separators (for example, if you collapse your braces onto
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 the preceding statement in C or perl), `largest' is
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 probably the better alternative.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 function A function that will be passed the beginning and ending
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 locations of the region in which to look for the section
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 separator. At the very beginning of the attempt to align,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 both of these parameters will be nil, in which case the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303 function should return non-nil if it wants each rule to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304 define its own section, or nil if it wants the largest
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 section found to be used as the common section for all rules
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 that occur there.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 list A list of markers within the buffer that represent where
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 the section dividers lie. Be certain to use markers! For
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 when the aligning begins, the ensuing contract/expanding of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311 whitespace will throw off any non-marker positions.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313 This method is intended for use in Lisp programs, and not
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 by the user."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 :type '(choice
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 (const :tag "Entire region is one section" entire)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
317 (const :tag "Align by contiguous groups" group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318 ; (const largest)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 (regexp :tag "Regexp defines section boundaries")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 (function :tag "Function defines section boundaries"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323 (put 'align-region-separate 'risky-local-variable t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
325 (defvar align-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326 '(repeat
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 (cons
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
328 :tag "Alignment rule"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
329 (symbol :tag "Title")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
330 (cons :tag "Required attributes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
331 (cons :tag "Regexp"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332 (const :tag "(Regular expression to match)" regexp)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333 (choice :value "\\(\\s-+\\)" regexp function))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 (repeat
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 :tag "Optional attributes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 (choice
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 (cons :tag "Repeat"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 (const :tag "(Repeat this rule throughout line)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 repeat)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 (boolean :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 (cons :tag "Paren group"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342 (const :tag "(Parenthesis group to use)" group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 (choice :value 2
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 integer (repeat integer)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 (cons :tag "Modes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 (const :tag "(Modes where this rule applies)" modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 (sexp :value (text-mode)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348 (cons :tag "Case-fold"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 (const :tag "(Should case be ignored for this rule)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 case-fold)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351 (boolean :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352 (cons :tag "To Tab Stop"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353 (const :tag "(Should rule align to tab stops)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355 (boolean :value nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356 (cons :tag "Valid"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 (const :tag "(Return non-nil if rule is valid)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358 valid)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359 (function :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
360 (cons :tag "Run If"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 (const :tag "(Return non-nil if rule should run)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
362 run-if)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
363 (function :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
364 (cons :tag "Column"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
365 (const :tag "(Column to fix alignment at)" column)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366 (choice :value comment-column
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
367 integer symbol))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
368 (cons :tag "Spacing"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 (const :tag "(Amount of spacing to use)" spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 (integer :value 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 (cons :tag "Justify"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
372 (const :tag "(Should text be right justified)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
373 justify)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
374 (boolean :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
375 ;; make sure this stays up-to-date with any changes
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
376 ;; in `align-region-separate'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 (cons :tag "Separate"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 (const :tag "(Separation to use for this rule)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
379 separate)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
380 (choice :value "^\\s-*$"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381 (const entire)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382 (const group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
383 ; (const largest)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 regexp function)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 "The `type' form for any `align-rules-list' variable.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
386
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 (defcustom align-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
388 `((lisp-second-arg
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 (regexp . "\\(^\\s-+[^( \t\n]\\|(\\(\\S-+\\)\\s-+\\)\\S-+\\(\\s-+\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 (group . 3)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 (modes . align-lisp-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 (run-if . ,(function (lambda () current-prefix-arg))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
393
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394 (lisp-alist-dot
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395 (regexp . "\\(\\s-*\\)\\.\\(\\s-*\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397 (modes . align-lisp-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
398
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
399 (open-comment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
400 (regexp . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
401 (lambda (end reverse)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
402 (funcall (if reverse 're-search-backward
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
403 're-search-forward)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404 (concat "[^ \t\n\\\\]"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 (regexp-quote comment-start)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406 "\\(.+\\)$") end t))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
407 (modes . align-open-comment-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
408
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
409 (c-macro-definition
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
410 (regexp . "^\\s-*#\\s-*define\\s-+\\S-+\\(\\s-+\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
411 (modes . align-c++-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
412
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
413 (c-variable-declaration
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
414 (regexp . ,(concat "[*&0-9A-Za-z_]>?[&*]*\\(\\s-+[*&]*\\)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
415 "[A-Za-z_][0-9A-Za-z:_]*\\s-*\\(\\()\\|"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
416 "=[^=\n].*\\|(.*)\\|\\(\\[.*\\]\\)*\\)?"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
417 "\\s-*[;,]\\|)\\s-*$\\)"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
418 (group . 1)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
419 (modes . align-c++-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
420 (justify . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
421 (valid
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
422 . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
423 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
424 (not (or (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
425 (goto-char (match-beginning 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
426 (backward-word 1)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
427 (looking-at
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
428 "\\(goto\\|return\\|new\\|delete\\|throw\\)"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
429 (if (and (boundp 'font-lock-mode) font-lock-mode)
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
430 (eq (get-text-property (point) 'face)
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
431 'font-lock-comment-face)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
432 (eq (caar (c-guess-basic-syntax)) 'c))))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
433
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
434 (c-assignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
435 (regexp . ,(concat "[^-=!^&*+<>/| \t\n]\\(\\s-*[-=!^&*+<>/|]*\\)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
436 "=\\(\\s-*\\)\\([^= \t\n]\\|$\\)"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
437 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
438 (modes . align-c++-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
439 (justify . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
440 (tab-stop . nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
441
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
442 (perl-assignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
443 (regexp . ,(concat "[^=!^&*-+<>/| \t\n]\\(\\s-*\\)=[~>]?"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
444 "\\(\\s-*\\)\\([^>= \t\n]\\|$\\)"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
445 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
446 (modes . align-perl-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
447 (tab-stop . nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
448
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
449 (python-assignment
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
450 (regexp . ,(concat "[^=!<> \t\n]\\(\\s-*\\)="
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
451 "\\(\\s-*\\)\\([^>= \t\n]\\|$\\)"))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
452 (group . (1 2))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
453 (modes . '(python-mode))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
454 (tab-stop . nil))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
455
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
456 (make-assignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
457 (regexp . "^\\s-*\\w+\\(\\s-*\\):?=\\(\\s-*\\)\\([^\t\n \\\\]\\|$\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
458 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
459 (modes . '(makefile-mode))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
460 (tab-stop . nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
461
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
462 (c-comma-delimiter
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
463 (regexp . ",\\(\\s-*\\)[^/ \t\n]")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
464 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
465 (modes . align-c++-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
466 (run-if . ,(function (lambda () current-prefix-arg))))
60505
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
467 ; (valid
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
468 ; . ,(function
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
469 ; (lambda ()
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
470 ; (memq (caar (c-guess-basic-syntax))
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
471 ; '(brace-list-intro
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
472 ; brace-list-entry
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
473 ; brace-entry-open))))))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
474
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
475 ;; With a prefix argument, comma delimiter will be aligned. Since
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
476 ;; perl-mode doesn't give us enough syntactic information (and we
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
477 ;; don't do our own parsing yet), this rule is too destructive to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
478 ;; run normally.
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
479 (basic-comma-delimiter
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
480 (regexp . ",\\(\\s-*\\)[^# \t\n]")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
481 (repeat . t)
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
482 (modes . (append align-perl-modes '(python-mode)))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483 (run-if . ,(function (lambda () current-prefix-arg))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
484
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
485 (c++-comment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
486 (regexp . "\\(\\s-*\\)\\(//.*\\|/\\*.*\\*/\\s-*\\)$")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
487 (modes . align-c++-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
488 (column . comment-column)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
489 (valid . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
490 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
491 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
492 (goto-char (match-beginning 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
493 (not (bolp)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
494
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
495 (c-chain-logic
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
496 (regexp . "\\(\\s-*\\)\\(&&\\|||\\|\\<and\\>\\|\\<or\\>\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
497 (modes . align-c++-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
498 (valid . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
499 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
500 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
501 (goto-char (match-end 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
502 (looking-at "\\s-*\\(/[*/]\\|$\\)"))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
503
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
504 (perl-chain-logic
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
505 (regexp . "\\(\\s-*\\)\\(&&\\|||\\|\\<and\\>\\|\\<or\\>\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
506 (modes . align-perl-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
507 (valid . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
508 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
509 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
510 (goto-char (match-end 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
511 (looking-at "\\s-*\\(#\\|$\\)"))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
512
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
513 (python-chain-logic
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
514 (regexp . "\\(\\s-*\\)\\(\\<and\\>\\|\\<or\\>\\)")
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
515 (modes . '(python-mode))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
516 (valid . ,(function
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
517 (lambda ()
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
518 (save-excursion
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
519 (goto-char (match-end 2))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
520 (looking-at "\\s-*\\(#\\|$\\|\\\\\\)"))))))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
521
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
522 (c-macro-line-continuation
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
523 (regexp . "\\(\\s-*\\)\\\\$")
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
524 (modes . align-c++-modes)
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
525 (column . c-backslash-column))
60505
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
526 ; (valid
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
527 ; . ,(function
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
528 ; (lambda ()
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
529 ; (memq (caar (c-guess-basic-syntax))
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
530 ; '(cpp-macro cpp-macro-cont))))))
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
531
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
532 (basic-line-continuation
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
533 (regexp . "\\(\\s-*\\)\\\\$")
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
534 (modes . '(python-mode makefile-mode)))
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
535
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
536 (tex-record-separator
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
537 (regexp . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
538 (lambda (end reverse)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
539 (align-match-tex-pattern "&" end reverse))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
540 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
541 (modes . align-tex-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
542 (repeat . t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
543
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
544 (tex-tabbing-separator
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
545 (regexp . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
546 (lambda (end reverse)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
547 (align-match-tex-pattern "\\\\[=>]" end reverse))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
548 (group . (1 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
549 (modes . align-tex-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
550 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
551 (run-if . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
552 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
553 (eq major-mode 'latex-mode)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
554
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
555 (tex-record-break
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
556 (regexp . "\\(\\s-*\\)\\\\\\\\")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
557 (modes . align-tex-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
558
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
559 ;; With a numeric prefix argument, or C-u, space delimited text
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
560 ;; tables will be aligned.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
561 (text-column
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
562 (regexp . "\\(^\\|\\S-\\)\\(\\s-+\\)\\(\\S-\\|$\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
563 (group . 2)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
564 (modes . align-text-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
565 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
566 (run-if . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
567 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
568 (and current-prefix-arg
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
569 (not (eq '- current-prefix-arg)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
570
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
571 ;; With a negative prefix argument, lists of dollar figures will
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
572 ;; be aligned.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
573 (text-dollar-figure
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
574 (regexp . "\\$?\\(\\s-+[0-9]+\\)\\.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
575 (modes . align-text-modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
576 (justify . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
577 (run-if . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
578 (lambda ()
60505
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
579 (eq '- current-prefix-arg)))))
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
580
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
581 (css-declaration
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
582 (regexp . "^\\s-*\\w+:\\(\\s-*\\).*;")
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
583 (group . (1))
c919a3aa031f 2005-03-07 Karl Chen <quarl@cs.berkeley.edu>
John Wiegley <johnw@newartisans.com>
parents: 57972
diff changeset
584 (modes . '(css-mode html-mode))))
47920
839ee0b81fe0 (align-rules-list, align-exclude-rules-list): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 45052
diff changeset
585 "*A list describing all of the available alignment rules.
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
586 The format is:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
587
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
588 ((TITLE
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
589 (ATTRIBUTE . VALUE) ...)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
590 ...)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
591
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
592 The following attributes are meaningful:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
593
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
594 `regexp' This required attribute must be either a string describing
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
595 a regular expression, or a function (described below).
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
596 For every line within the section that this regular
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
597 expression matches, the given rule will be applied to that
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
598 line. The exclusion rules denote which part(s) of the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
599 line should not be modified; the alignment rules cause the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
600 identified whitespace group to be contracted/expanded such
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
601 that the \"alignment character\" (the character
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
602 immediately following the identified parenthesis group),
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
603 occurs in the same column for every line within the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
604 alignment section (see `align-region-separate' for a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
605 description of how the region is broken up into alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
606 sections).
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
607
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
608 The `regexp' attribute describes how the text should be
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
609 treated. Within this regexp, there must be at least one
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
610 group of characters (typically whitespace) identified by
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
611 the special opening and closing parens used in regexp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
612 expressions (`\\\\(' and `\\\\)') (see the Emacs manual on
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
613 the syntax of regular expressions for more info).
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
614
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
615 If `regexp' is a function, it will be called as a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
616 replacement for `re-search-forward'. This means that it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
617 should return nil if nothing is found to match the rule,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
618 or it should set the match data appropriately, move point
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
619 to the end of the match, and return the value of point.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
620
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
621 `group' For exclusion rules, the group identifies the range of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
622 characters that should be ignored. For alignment rules,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
623 these are the characters that will be deleted/expanded for
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
624 the purposes of alignment. The \"alignment character\" is
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
625 always the first character immediately following this
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
626 parenthesis group. This attribute may also be a list of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
627 integer, in which case multiple alignment characters will
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
628 be aligned, with the list of integer identifying the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
629 whitespace groups which precede them. The default for
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
630 this attribute is 1.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
631
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
632 `modes' The `modes' attribute, if set, should name a list of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
633 major modes -- or evaluate to such a value -- in which the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
634 rule is valid. If not set, the rule will apply to all
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
635 modes.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
636
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
637 `case-fold' If `regexp' is an ordinary regular expression string
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
638 containing alphabetic character, sometimes you may want
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
639 the search to proceed case-insensitively (for languages
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
640 that ignore case, such as pascal for example). In that
51264
ca3933891346 (align-rules-list): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 47920
diff changeset
641 case, set `case-fold' to a non-nil value, and the regular
ca3933891346 (align-rules-list): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 47920
diff changeset
642 expression search will ignore case. If `regexp' is set to
ca3933891346 (align-rules-list): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 47920
diff changeset
643 a function, that function must handle the job of ignoring
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
644 case by itself.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
645
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646 `tab-stop' If the `tab-stop' attribute is set, and non-nil, the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
647 alignment character will always fall on a tab stop
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
648 (whether it uses tabs to get there or not depends on the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
649 value of `indent-tabs-mode'). If the `tab-stop' attribute
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
650 is set to nil, tab stops will never be used. Otherwise,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
651 the value of `align-to-tab-stop' determines whether or not
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
652 to align to a tab stop. The `tab-stop' attribute may also
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
653 be a list of t or nil values, corresponding to the number
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
654 of parenthesis groups specified by the `group' attribute.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
655
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
656 `repeat' If the `repeat' attribute is present, and non-nil, the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
657 rule will be applied to the line continuously until no
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
658 further matches are found.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
659
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
660 `valid' If the `valid' attribute is set, it will be used to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
661 determine whether the rule should be invoked. This form
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
662 is evaluated after the regular expression match has been
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
663 performed, so that it is possible to use the results of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
664 that match to determine whether the alignment should be
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
665 performed. The buffer should not be modified during the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
666 evaluation of this form.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
667
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
668 `run-if' Like `valid', the `run-if' attribute tests whether the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
669 rule should be run at all -- even before any searches are
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
670 done to determine if the rule applies to the alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
671 region. This can save time, since `run-if' will only be
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
672 run once for each rule. If it returns nil, the rule will
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
673 not be attempted.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
674
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
675 `column' For alignment rules, if the `column' attribute is set --
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
676 which must be an integer, or a symbol whose value is an
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
677 integer -- it will be used as the column in which to align
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
678 the alignment character. If the text on a particular line
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
679 happens to overrun that column, a single space character,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
680 or tab stop (see `align-to-tab-stop') will be added
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
681 between the last text character and the alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
682 character.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
683
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
684 `spacing' Alignment rules may also override the amount of spacing
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
685 that would normally be used by providing a `spacing'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
686 attribute. This must be an integer, or a list of integers
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
687 corresponding to the number of parenthesis groups matched
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
688 by the `group' attribute. If a list of value is used, and
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
689 any of those values is nil, `align-default-spacing' will
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
690 be used for that subgroup. See `align-default-spacing'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
691 for more details on spacing, tab stops, and how to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
692 indicate how much spacing should be used. If TAB-STOP is
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
693 present, it will override the value of `align-to-tab-stop'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
694 for that rule.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
695
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
696 `justify' It is possible with `regexp' and `group' to identify a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
697 character group that contains more than just whitespace
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
698 characters. By default, any non-whitespace characters in
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
699 that group will also be deleted while aligning the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
700 alignment character. However, if the `justify' attribute
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
701 is set to a non-nil value, only the initial whitespace
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
702 characters within that group will be deleted. This has
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
703 the effect of right-justifying the characters that remain,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
704 and can be used for outdenting or just plain old right-
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
705 justification.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
706
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
707 `separate' Each rule can define its own section separator, which
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
708 describes how to identify the separation of \"sections\"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
709 within the region to be aligned. Setting the `separate'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
710 attribute overrides the value of `align-region-separate'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
711 (see the documentation of that variable for possible
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
712 values), and any separation argument passed to `align'."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
713 :type align-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
714 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
715
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
716 (put 'align-rules-list 'risky-local-variable t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
717
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
718 (defvar align-exclude-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
719 '(repeat
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
720 (cons
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
721 :tag "Exclusion rule"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
722 (symbol :tag "Title")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
723 (cons :tag "Required attributes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
724 (cons :tag "Regexp"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
725 (const :tag "(Regular expression to match)" regexp)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
726 (choice :value "\\(\\s-+\\)" regexp function))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
727 (repeat
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
728 :tag "Optional attributes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
729 (choice
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
730 (cons :tag "Repeat"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
731 (const :tag "(Repeat this rule throughout line)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
732 repeat)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
733 (boolean :value t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
734 (cons :tag "Paren group"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
735 (const :tag "(Parenthesis group to use)" group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
736 (choice :value 2
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
737 integer (repeat integer)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
738 (cons :tag "Modes"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
739 (const :tag "(Modes where this rule applies)" modes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
740 (sexp :value (text-mode)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
741 (cons :tag "Case-fold"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
742 (const :tag "(Should case be ignored for this rule)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
743 case-fold)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
744 (boolean :value t)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
745 "The `type' form for any `align-exclude-rules-list' variable.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
746
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
747 (defcustom align-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
748 `((exc-dq-string
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
749 (regexp . "\"\\([^\"\n]+\\)\"")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
750 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
751 (modes . align-dq-string-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
752
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
753 (exc-sq-string
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
754 (regexp . "'\\([^'\n]+\\)'")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
755 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
756 (modes . align-sq-string-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
757
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
758 (exc-open-comment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
759 (regexp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
760 . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
761 (lambda (end reverse)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
762 (funcall (if reverse 're-search-backward
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
763 're-search-forward)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
764 (concat "[^ \t\n\\\\]"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
765 (regexp-quote comment-start)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
766 "\\(.+\\)$") end t))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
767 (modes . align-open-comment-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
768
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
769 (exc-c-comment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
770 (regexp . "/\\*\\(.+\\)\\*/")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
771 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
772 (modes . align-c++-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
773
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
774 (exc-c-func-params
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
775 (regexp . "(\\([^)\n]+\\))")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
776 (repeat . t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
777 (modes . align-c++-modes))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
778
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
779 (exc-c-macro
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
780 (regexp . "^\\s-*#\\s-*\\(if\\w*\\|endif\\)\\(.*\\)$")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
781 (group . 2)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
782 (modes . align-c++-modes)))
47920
839ee0b81fe0 (align-rules-list, align-exclude-rules-list): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 45052
diff changeset
783 "*A list describing text that should be excluded from alignment.
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
784 See the documentation for `align-rules-list' for more info."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
785 :type align-exclude-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
786 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
787
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
788 (put 'align-exclude-rules-list 'risky-local-variable t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
789
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
790 ;;; Internal Variables:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
791
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
792 (defvar align-mode-rules-list nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
793 "Alignment rules specific to the current major mode.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
794 See the variable `align-rules-list' for more details.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
795
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
796 (make-variable-buffer-local 'align-mode-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
797
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
798 (defvar align-mode-exclude-rules-list nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
799 "Alignment exclusion rules specific to the current major mode.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
800 See the variable `align-exclude-rules-list' for more details.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
801
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
802 (make-variable-buffer-local 'align-mode-exclude-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
803
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
804 (defvar align-highlight-overlays nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
805 "The current overlays highlighting the text matched by a rule.")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
806
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
807 ;; Sample extension rule set, for vhdl-mode. This should properly be
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
808 ;; in vhdl-mode.el itself.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
809
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
810 (defcustom align-vhdl-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
811 `((vhdl-declaration
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
812 (regexp . "\\(signal\\|variable\\|constant\\)\\(\\s-+\\)\\S-")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
813 (group . 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
814
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
815 (vhdl-case
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
816 (regexp . "\\(others\\|[^ \t\n=<]\\)\\(\\s-*\\)=>\\(\\s-*\\)\\S-")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
817 (group . (2 3))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
818 (valid
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
819 . ,(function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
820 (lambda ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
821 (not (string= (downcase (match-string 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
822 "others"))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
823
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
824 (vhdl-colon
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
825 (regexp . "[^ \t\n:]\\(\\s-*\\):\\(\\s-*\\)[^=\n]")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
826 (group . (1 2)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
827
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
828 (direction
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
829 (regexp . ":\\s-*\\(in\\|out\\|inout\\|buffer\\)\\(\\s-*\\)")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
830 (group . 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
831
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
832 (sig-assign
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
833 (regexp . "[^ \t\n=<]\\(\\s-*\\)<=\\(\\s-*\\)\\S-")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
834 (group . (1 2)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
835
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
836 (var-assign
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
837 (regexp . "[^ \t\n:]\\(\\s-*\\):="))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
838
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
839 (use-entity
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
840 (regexp . "\\(\\s-+\\)use\\s-+entity")))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
841 "*Alignment rules for `vhdl-mode'. See `align-rules-list' for more info."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
842 :type align-rules-list-type
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
843 :group 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
844
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
845 (put 'align-vhdl-rules-list 'risky-local-variable t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
846
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
847 (defun align-set-vhdl-rules ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
848 "Setup the `align-mode-rules-list' variable for `vhdl-mode'."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
849 (setq align-mode-rules-list align-vhdl-rules-list))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
850
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
851 (add-hook 'vhdl-mode-hook 'align-set-vhdl-rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
852
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
853 (add-to-list 'align-dq-string-modes 'vhdl-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
854 (add-to-list 'align-open-comment-modes 'vhdl-mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
855
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
856 ;;; User Functions:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
857
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
858 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
859 (defun align (beg end &optional separate rules exclude-rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
860 "Attempt to align a region based on a set of alignment rules.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
861 BEG and END mark the region. If BEG and END are specifically set to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
862 nil (this can only be done programmatically), the beginning and end of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
863 the current alignment section will be calculated based on the location
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
864 of point, and the value of `align-region-separate' (or possibly each
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
865 rule's `separate' attribute).
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
866
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
867 If SEPARATE is non-nil, it overrides the value of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
868 `align-region-separate' for all rules, except those that have their
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
869 `separate' attribute set.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
870
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
871 RULES and EXCLUDE-RULES, if either is non-nil, will replace the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
872 default rule lists defined in `align-rules-list' and
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
873 `align-exclude-rules-list'. See `align-rules-list' for more details
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
874 on the format of these lists."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
875 (interactive "r")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
876 (let ((separator
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
877 (or separate
31241
3099993cba0f See ChangeLog
John Wiegley <johnw@newartisans.com>
parents: 30890
diff changeset
878 (if (and (symbolp align-region-separate)
3099993cba0f See ChangeLog
John Wiegley <johnw@newartisans.com>
parents: 30890
diff changeset
879 (boundp align-region-separate))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
880 (symbol-value align-region-separate)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
881 align-region-separate)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
882 'entire)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
883 (if (not (or ;(eq separator 'largest)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
884 (and (functionp separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
885 (not (funcall separator nil nil)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
886 (align-region beg end separator
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
887 (or rules align-mode-rules-list align-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
888 (or exclude-rules align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
889 align-exclude-rules-list))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
890 (let ((sec-first end)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
891 (sec-last beg))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
892 (align-region beg end
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
893 (or exclude-rules
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
894 align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
895 align-exclude-rules-list) nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
896 separator
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
897 (function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
898 (lambda (b e mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
899 (when (and mode (listp mode))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
900 (setq sec-first (min sec-first b)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
901 sec-last (max sec-last e))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
902 (if (< sec-first sec-last)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
903 (align-region sec-first sec-last 'entire
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
904 (or rules align-mode-rules-list align-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
905 (or exclude-rules align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
906 align-exclude-rules-list)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
907
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
908 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
909 (defun align-regexp (beg end regexp &optional group spacing repeat)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
910 "Align the current region using an ad-hoc rule read from the minibuffer.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
911 BEG and END mark the limits of the region. This function will prompt
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
912 for the REGEXP to align with. If no prefix arg was specified, you
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
913 only need to supply the characters to be lined up and any preceding
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
914 whitespace is replaced. If a prefix arg was specified, the full
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
915 regexp with parenthesized whitespace should be supplied; it will also
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
916 prompt for which parenthesis GROUP within REGEXP to modify, the amount
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
917 of SPACING to use, and whether or not to REPEAT the rule throughout
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
918 the line. See `align-rules-list' for more information about these
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
919 options.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
920
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
921 For example, let's say you had a list of phone numbers, and wanted to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
922 align them so that the opening parentheses would line up:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
923
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
924 Fred (123) 456-7890
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
925 Alice (123) 456-7890
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
926 Mary-Anne (123) 456-7890
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
927 Joe (123) 456-7890
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
928
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
929 There is no predefined rule to handle this, but you could easily do it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
930 using a REGEXP like \"(\". All you would have to do is to mark the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
931 region, call `align-regexp' and type in that regular expression."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
932 (interactive
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
933 (append
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
934 (list (min (point) (mark))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
935 (max (point) (mark)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
936 (if current-prefix-arg
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
937 (list (read-string "Complex align using regexp: "
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
938 "\\(\\s-*\\)")
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 60505
diff changeset
939 (string-to-number
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
940 (read-string
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
941 "Parenthesis group to modify (justify if negative): " "1"))
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 60505
diff changeset
942 (string-to-number
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
943 (read-string "Amount of spacing (or column if negative): "
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
944 (number-to-string align-default-spacing)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
945 (y-or-n-p "Repeat throughout line? "))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
946 (list (concat "\\(\\s-*\\)"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
947 (read-string "Align regexp: "))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
948 1 align-default-spacing nil))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
949 (let ((rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
950 (list (list nil (cons 'regexp regexp)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
951 (cons 'group (abs group))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
952 (if (< group 0)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
953 (cons 'justify t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
954 (cons 'bogus nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
955 (if (>= spacing 0)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
956 (cons 'spacing spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
957 (cons 'column (abs spacing)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
958 (cons 'repeat repeat)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
959 (align-region beg end 'entire rule nil nil)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
960
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
961 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
962 (defun align-entire (beg end &optional rules exclude-rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
963 "Align the selected region as if it were one alignment section.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
964 BEG and END mark the extent of the region. If RULES or EXCLUDE-RULES
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
965 is set to a list of rules (see `align-rules-list'), it can be used to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
966 override the default alignment rules that would have been used to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
967 align that section."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
968 (interactive "r")
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
969 (align beg end 'entire rules exclude-rules))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
970
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
971 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
972 (defun align-current (&optional rules exclude-rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
973 "Call `align' on the current alignment section.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
974 This function assumes you want to align only the current section, and
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
975 so saves you from having to specify the region. If RULES or
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
976 EXCLUDE-RULES is set to a list of rules (see `align-rules-list'), it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
977 can be used to override the default alignment rules that would have
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
978 been used to align that section."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
979 (interactive)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
980 (align nil nil nil rules exclude-rules))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
981
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
982 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
983 (defun align-highlight-rule (beg end title &optional rules exclude-rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
984 "Highlight the whitespace which a given rule would have modified.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
985 BEG and END mark the extent of the region. TITLE identifies the rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
986 that should be highlighted. If RULES or EXCLUDE-RULES is set to a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
987 list of rules (see `align-rules-list'), it can be used to override the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
988 default alignment rules that would have been used to identify the text
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
989 to be colored."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
990 (interactive
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
991 (list (min (mark) (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
992 (max (mark) (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
993 (completing-read
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
994 "Title of rule to highlight: "
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
995 (mapcar
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
996 (function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
997 (lambda (rule)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
998 (list (symbol-name (car rule)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
999 (append (or align-mode-rules-list align-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1000 (or align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1001 align-exclude-rules-list))) nil t)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1002 (let ((ex-rule (assq (intern title)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1003 (or align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1004 align-exclude-rules-list)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1005 face)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1006 (align-unhighlight-rule)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1007 (align-region
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1008 beg end 'entire
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1009 (or rules (if ex-rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1010 (or exclude-rules align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1011 align-exclude-rules-list)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1012 (or align-mode-rules-list align-rules-list)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1013 (unless ex-rule (or exclude-rules align-mode-exclude-rules-list
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1014 align-exclude-rules-list))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1015 (function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1016 (lambda (b e mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1017 (if (and mode (listp mode))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1018 (if (equal (symbol-name (car mode)) title)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1019 (setq face (cons align-highlight-change-face
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1020 align-highlight-nochange-face))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1021 (setq face nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1022 (when face
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1023 (let ((overlay (make-overlay b e)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1024 (setq align-highlight-overlays
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1025 (cons overlay align-highlight-overlays))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1026 (overlay-put overlay 'face
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1027 (if mode
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1028 (car face)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1029 (cdr face)))))))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1030
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1031 ;;;###autoload
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1032 (defun align-unhighlight-rule ()
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1033 "Remove any highlighting that was added by `align-highlight-rule'."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1034 (interactive)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1035 (while align-highlight-overlays
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1036 (delete-overlay (car align-highlight-overlays))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1037 (setq align-highlight-overlays
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1038 (cdr align-highlight-overlays))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1039
30254
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1040 ;;;###autoload
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1041 (defun align-newline-and-indent ()
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1042 "A replacement function for `newline-and-indent', aligning as it goes."
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1043 (interactive)
31241
3099993cba0f See ChangeLog
John Wiegley <johnw@newartisans.com>
parents: 30890
diff changeset
1044 (let ((separate (or (if (and (symbolp align-region-separate)
3099993cba0f See ChangeLog
John Wiegley <johnw@newartisans.com>
parents: 30890
diff changeset
1045 (boundp align-region-separate))
30254
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1046 (symbol-value align-region-separate)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1047 align-region-separate)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1048 'entire))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1049 (end (point)))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1050 (call-interactively 'newline-and-indent)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1051 (save-excursion
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1052 (forward-line -1)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1053 (while (not (or (bobp)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1054 (align-new-section-p (point) end separate)))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1055 (forward-line -1))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1056 (align (point) end))))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1057
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1058 ;;; Internal Functions:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1059
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1060 (defun align-match-tex-pattern (regexp end &optional reverse)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1061 "Match REGEXP in TeX mode, counting backslashes appropriately.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1062 END denotes the end of the region to be searched, while REVERSE, if
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1063 non-nil, indicates that the search should proceed backward from the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1064 current position."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1065 (let (result)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1066 (while
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1067 (and (setq result
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1068 (funcall
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1069 (if reverse 're-search-backward
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1070 're-search-forward)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1071 (concat "\\(\\s-*\\)" regexp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1072 "\\(\\s-*\\)") end t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1073 (let ((pos (match-end 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1074 (count 0))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1075 (while (and (> pos (point-min))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1076 (eq (char-before pos) ?\\))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1077 (setq count (1+ count) pos (1- pos)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1078 (eq (mod count 2) 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1079 (goto-char (match-beginning 2))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1080 result))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1081
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1082 (defun align-new-section-p (beg end separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1083 "Is there a section divider between BEG and END?
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1084 SEPARATOR specifies how to look for the section divider. See the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1085 documentation for `align-region-separate' for more details."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1086 (cond ((or (not separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1087 (eq separator 'entire))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1088 nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1089 ((eq separator 'group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1090 (let ((amount 2))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1091 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1092 (goto-char end)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1093 (if (bolp)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1094 (setq amount 1)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1095 (> (count-lines beg end) amount)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1096 ((stringp separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1097 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1098 (goto-char beg)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1099 (re-search-forward separator end t)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1100 ((functionp separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1101 (funcall separator beg end))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1102 ((listp separator)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1103 (let ((seps separator) yes)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1104 (while seps
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1105 (if (and (>= (car seps) beg)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1106 (<= (car seps) end))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1107 (setq yes t seps nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1108 (setq seps (cdr seps))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1109 yes))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1110
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1111 (defun align-adjust-col-for-rule (column rule spacing tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1112 "Adjust COLUMN according to the given RULE.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1113 SPACING specifies how much spacing to use.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1114 TAB-STOP specifies whether SPACING refers to tab-stop boundaries."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1115 (unless spacing
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1116 (setq spacing align-default-spacing))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1117 (if (<= spacing 0)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1118 column
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1119 (if (not tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1120 (+ column spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1121 (let ((stops tab-stop-list))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1122 (while stops
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1123 (if (and (> (car stops) column)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1124 (= (setq spacing (1- spacing)) 0))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1125 (setq column (car stops)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1126 stops nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1127 (setq stops (cdr stops)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1128 column)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1129
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1130 (defsubst align-column (pos)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1131 "Given a position in the buffer, state what column it's in.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1132 POS is the position whose column will be taken. Note that this
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1133 function will change the location of point."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1134 (goto-char pos)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1135 (current-column))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1136
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1137 (defsubst align-regions (regions props rule func)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1138 "Align the regions specified in REGIONS, a list of cons cells.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1139 PROPS describes formatting features specific to the given regions.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1140 RULE specifies exactly how to perform the alignments.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1141 If FUNC is specified, it will be called with each region that would
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1142 have been aligned, rather than modifying the text."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1143 (while regions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1144 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1145 (align-areas (car regions) (car props) rule func))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1146 (setq regions (cdr regions)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1147 props (cdr props))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1148
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1149 (defun align-areas (areas props rule func)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1150 "Given a list of AREAS and formatting PROPS, align according to RULE.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1151 AREAS should be a list of cons cells containing beginning and ending
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1152 markers. This function sweeps through all of the beginning markers,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1153 finds out which one starts in the furthermost column, and then deletes
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1154 and inserts text such that all of the ending markers occur in the same
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1155 column.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1156
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1157 If FUNC is non-nil, it will be called for each text region that would
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1158 have been aligned. No changes will be made to the buffer."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1159 (let* ((column (cdr (assq 'column rule)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1160 (fixed (if (symbolp column)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1161 (symbol-value column)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1162 column))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1163 (justify (cdr (assq 'justify rule)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1164 (col (or fixed 0))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1165 (width 0)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1166 ecol change look)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1167
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1168 ;; Determine the alignment column.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1169 (let ((a areas))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1170 (while a
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1171 (unless fixed
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1172 (setq col (max col (align-column (caar a)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1173 (unless change
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1174 (goto-char (cdar a))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1175 (if ecol
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
1176 (if (/= ecol (current-column))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1177 (setq change t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1178 (setq ecol (current-column))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1179 (when justify
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1180 (goto-char (caar a))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1181 (if (and (re-search-forward "\\s-*" (cdar a) t)
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
1182 (/= (point) (cdar a)))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1183 (let ((bcol (current-column)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1184 (setcdr (car a) (cons (point-marker) (cdar a)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1185 (goto-char (cdr (cdar a)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1186 (setq width (max width (- (current-column) bcol))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1187 (setq a (cdr a))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1188
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1189 (unless fixed
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1190 (setq col (+ (align-adjust-col-for-rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1191 col rule (car props) (cdr props)) width)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1192
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1193 ;; Make all ending positions to occur in the goal column. Since
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1194 ;; the whitespace to be modified was already deleted by
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1195 ;; `align-region', all we have to do here is indent.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1196
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1197 (unless change
29493
0345c6ffb8b4 Update from author.
Gerd Moellmann <gerd@gnu.org>
parents: 27327
diff changeset
1198 (setq change (and ecol (/= col ecol))))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1199
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1200 (when (or func change)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1201 (while areas
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1202 (let ((area (car areas))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1203 (gocol col) cur)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1204 (when area
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1205 (if func
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1206 (funcall func (car area) (cdr area) change)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1207 (if (not (and justify
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1208 (consp (cdr area))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1209 (goto-char (cdr area))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1210 (goto-char (cddr area))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1211 (let ((ecol (current-column)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1212 (goto-char (cadr area))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1213 (setq gocol (- col (- ecol (current-column))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1214 (setq cur (current-column))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1215 (cond ((< gocol 0) t) ; don't do anything
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1216 ((= cur gocol) t) ; don't need to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1217 ((< cur gocol) ; just add space
57972
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1218 ;; FIXME: It is stated above that "...the
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1219 ;; whitespace to be modified was already
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1220 ;; deleted by `align-region', all we have
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1221 ;; to do here is indent." However, this
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1222 ;; doesn't seem to be true, so we first
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1223 ;; delete the whitespace to avoid tabs
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1224 ;; after spaces.
fc790bd5db8f (align-areas): Delete whitespace before reindenting, so
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
1225 (delete-horizontal-space t)
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1226 (indent-to gocol))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1227 (t
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1228 ;; This code works around an oddity in the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1229 ;; FORCE argument of `move-to-column', which
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1230 ;; tends to screw up markers if there is any
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1231 ;; tabbing.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1232 (let ((endcol (align-column
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1233 (if (and justify
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1234 (consp (cdr area)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1235 (cadr area)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1236 (cdr area))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1237 (abuts (<= gocol
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1238 (align-column (car area)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1239 (if abuts
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1240 (goto-char (car area))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1241 (move-to-column gocol t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1242 (let ((here (point)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1243 (move-to-column endcol t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1244 (delete-region here (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1245 (if abuts
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1246 (indent-to (align-adjust-col-for-rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1247 (current-column) rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1248 (car props) (cdr props)))))))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1249 (setq areas (cdr areas))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1250
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1251 (defun align-region (beg end separate rules exclude-rules
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1252 &optional func)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1253 "Align a region based on a given set of alignment rules.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1254 BEG and END specify the region to be aligned. Either may be nil, in
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1255 which case the range will stop at the nearest section division (see
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1256 `align-region-separate', and `align-region-heuristic' for more
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1257 information').
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1258
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1259 The region will be divided into separate alignment sections based on
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1260 the value of SEPARATE.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1261
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1262 RULES and EXCLUDE-RULES are a pair of lists describing how to align
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1263 the region, and which text areas within it should be excluded from
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1264 alignment. See the `align-rules-list' for more information on the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1265 required format of these two lists.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1266
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1267 If FUNC is specified, no text will be modified. What `align-region'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1268 will do with the rules is to search for the alignment areas, as it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1269 regularly would, taking account for exclusions, and then call FUNC,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1270 first with the beginning and ending of the region to be aligned
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1271 according to that rule (this can be different for each rule, if BEG
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1272 and END were nil), and then with the beginning and ending of each
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1273 text region that the rule would have applied to.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1274
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1275 The signature of FUNC should thus be:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1276
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1277 (defun my-align-function (beg end mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1278 \"If MODE is a rule (a list), return t if BEG to END are to be searched.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1279 Otherwise BEG to END will be a region of text that matches the rule's
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1280 definition, and MODE will be non-nil if any changes are necessary.\"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1281 (unless (and mode (listp mode))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1282 (message \"Would have aligned from %d to %d...\" beg end)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1283
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1284 This feature (of passing a FUNC) is used internally to locate the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1285 position of exclusion areas, but could also be used for any other
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1286 purpose where you might want to know where the regions that the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1287 aligner would have dealt with are."
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1288 (let ((end-mark (and end (copy-marker end t)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1289 (real-beg beg)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1290 (real-end end)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1291 (report (and (not func) align-large-region beg end
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1292 (>= (- end beg) align-large-region)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1293 (rule-index 1)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1294 (rule-count (length rules)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1295 (if (and align-indent-before-aligning real-beg end-mark)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1296 (indent-region real-beg end-mark nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1297 (while rules
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1298 (let* ((rule (car rules))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1299 (run-if (assq 'run-if rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1300 (modes (assq 'modes rule)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1301 ;; unless the `run-if' form tells us not to, look for the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1302 ;; rule..
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1303 (unless (or (and modes (not (memq major-mode
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1304 (eval (cdr modes)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1305 (and run-if (not (funcall (cdr run-if)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1306 (let* ((current-case-fold case-fold-search)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1307 (case-fold (assq 'case-fold rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1308 (regexp (cdr (assq 'regexp rule)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1309 (regfunc (and (functionp regexp) regexp))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1310 (rulesep (assq 'separate rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1311 (thissep (if rulesep (cdr rulesep) separate))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1312 same (eol 0)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1313 group group-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1314 spacing spacing-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1315 tab-stop tab-stop-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1316 repeat repeat-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1317 valid valid-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1318 pos-list first
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1319 regions index
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1320 last-point b e
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1321 save-match-data
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1322 exclude-p
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1323 align-props)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1324 (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1325 ;; if beg and end were not given, figure out what the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1326 ;; current alignment region should be. Depending on the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1327 ;; value of `align-region-separate' it's possible for
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1328 ;; each rule to have its own definition of what that
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1329 ;; current alignment section is.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1330 (if real-beg
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1331 (goto-char beg)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1332 (if (or (not thissep) (eq thissep 'entire))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1333 (error "Cannot determine alignment region for '%s'"
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1334 (symbol-name (cdr (assq 'title rule)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1335 (beginning-of-line)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1336 (while (and (not (eobp))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1337 (looking-at "^\\s-*$"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1338 (forward-line))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1339 (let* ((here (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1340 (start here))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1341 (while (and here
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1342 (let ((terminus
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1343 (and align-region-heuristic
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1344 (- (point)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1345 align-region-heuristic))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1346 (if regfunc
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1347 (funcall regfunc terminus t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1348 (re-search-backward regexp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1349 terminus t))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1350 (if (align-new-section-p (point) here thissep)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1351 (setq beg here
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1352 here nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1353 (setq here (point))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1354 (if (not here)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1355 (goto-char beg))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1356 (beginning-of-line)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1357 (setq beg (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1358 (goto-char start)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1359 (setq here (point))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1360 (while (and here
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1361 (let ((terminus
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1362 (and align-region-heuristic
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1363 (+ (point)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1364 align-region-heuristic))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1365 (if regfunc
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1366 (funcall regfunc terminus nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1367 (re-search-forward regexp terminus t))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1368 (if (align-new-section-p here (point) thissep)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1369 (setq end here
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1370 here nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1371 (setq here (point))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1372 (if (not here)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1373 (goto-char end))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1374 (forward-line)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1375 (setq end (point)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1376 end-mark (copy-marker end t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1377 (goto-char beg)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1378
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1379 ;; If we have a region to align, and `func' is set and
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1380 ;; reports back that the region is ok, then align it.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1381 (when (or (not func)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1382 (funcall func beg end rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1383 (unwind-protect
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1384 (let (exclude-areas)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1385 ;; determine first of all where the exclusions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1386 ;; lie in this region
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1387 (when exclude-rules
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1388 ;; guard against a problem with recursion and
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1389 ;; dynamic binding vs. lexical binding, since
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1390 ;; the call to `align-region' below will
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1391 ;; re-enter this function, and rebind
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1392 ;; `exclude-areas'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1393 (set (setq exclude-areas
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1394 (make-symbol "align-exclude-areas"))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1395 nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1396 (align-region
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1397 beg end 'entire
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1398 exclude-rules nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1399 `(lambda (b e mode)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1400 (or (and mode (listp mode))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1401 (set (quote ,exclude-areas)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1402 (cons (cons b e)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1403 ,exclude-areas)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1404 (setq exclude-areas
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1405 (sort (symbol-value exclude-areas)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1406 (function
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1407 (lambda (l r)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1408 (>= (car l) (car r)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1409
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1410 ;; set `case-fold-search' according to the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1411 ;; (optional) `case-fold' property
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1412 (and case-fold
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1413 (setq case-fold-search (cdr case-fold)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1414
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1415 ;; while we can find the rule in the alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1416 ;; region..
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1417 (while (and (< (point) end-mark)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1418 (if regfunc
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1419 (funcall regfunc end-mark nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1420 (re-search-forward regexp
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1421 end-mark t)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1422
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1423 ;; give the user some indication of where we
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1424 ;; are, if it's a very large region being
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1425 ;; aligned
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1426 (if report
45029
18577b549577 (align-region): Fix call to `message'.
Richard M. Stallman <rms@gnu.org>
parents: 43115
diff changeset
1427 (let ((symbol (car rule)))
18577b549577 (align-region): Fix call to `message'.
Richard M. Stallman <rms@gnu.org>
parents: 43115
diff changeset
1428 (if (and symbol (symbolp symbol))
30254
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1429 (message
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1430 "Aligning `%s' (rule %d of %d) %d%%..."
45052
8357077d84d7 (align-region): Fixed the fix to align-region, because the "name"
John Wiegley <johnw@newartisans.com>
parents: 45029
diff changeset
1431 (symbol-name symbol) rule-index rule-count
30254
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1432 (/ (* (- (point) real-beg) 100)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1433 (- end-mark real-beg)))
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1434 (message
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1435 "Aligning %d%%..."
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1436 (/ (* (- (point) real-beg) 100)
857a458d569d Added a new feature to align.el
John Wiegley <johnw@newartisans.com>
parents: 29493
diff changeset
1437 (- end-mark real-beg))))))
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1438
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1439 ;; if the search ended us on the beginning of
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1440 ;; the next line, move back to the end of the
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1441 ;; previous line.
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1442 (if (bolp)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1443 (forward-char -1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1444
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1445 ;; lookup the `group' attribute the first time
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1446 ;; that we need it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1447 (unless group-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1448 (setq group (or (cdr (assq 'group rule)) 1))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1449 (if (listp group)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1450 (setq first (car group))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1451 (setq first group group (list group)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1452 (setq group-c t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1453
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1454 (unless spacing-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1455 (setq spacing (cdr (assq 'spacing rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1456 spacing-c t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1457
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1458 (unless tab-stop-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1459 (setq tab-stop
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1460 (let ((rule-ts (assq 'tab-stop rule)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1461 (if rule-ts
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1462 (cdr rule-ts)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1463 (if (symbolp align-to-tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1464 (symbol-value align-to-tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1465 align-to-tab-stop)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1466 tab-stop-c t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1467
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1468 ;; test whether we have found a match on the same
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1469 ;; line as a previous match
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1470 (if (> (point) eol)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1471 (setq same nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1472 eol (save-excursion
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1473 (end-of-line)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1474 (point-marker))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1475
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1476 ;; lookup the `repeat' attribute the first time
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1477 (or repeat-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1478 (setq repeat (cdr (assq 'repeat rule))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1479 repeat-c t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1480
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1481 ;; lookup the `valid' attribute the first time
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1482 (or valid-c
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1483 (setq valid (assq 'valid rule)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1484 valid-c t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1485
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1486 ;; remember the beginning position of this rule
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1487 ;; match, and save the match-data, since either
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1488 ;; the `valid' form, or the code that searches for
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1489 ;; section separation, might alter it
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1490 (setq b (match-beginning first)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1491 save-match-data (match-data))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1492
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1493 ;; unless the `valid' attribute is set, and tells
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1494 ;; us that the rule is not valid at this point in
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1495 ;; the code..
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1496 (unless (and valid (not (funcall (cdr valid))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1497
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1498 ;; look to see if this match begins a new
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1499 ;; section. If so, we should align what we've
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1500 ;; collected so far, and then begin collecting
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1501 ;; anew for the next alignment section
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1502 (if (and last-point
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1503 (align-new-section-p last-point b
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1504 thissep))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1505 (progn
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1506 (align-regions regions align-props
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1507 rule func)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1508 (setq last-point (copy-marker b t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1509 regions nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1510 align-props nil))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1511 (setq last-point (copy-marker b t)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1512
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1513 ;; restore the match data
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1514 (set-match-data save-match-data)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1515
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1516 ;; check whether the region to be aligned
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1517 ;; straddles an exclusion area
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1518 (let ((excls exclude-areas))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1519 (setq exclude-p nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1520 (while excls
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1521 (if (and (< (match-beginning (car group))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1522 (cdar excls))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1523 (> (match-end (car (last group)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1524 (caar excls)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1525 (setq exclude-p t
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1526 excls nil)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1527 (setq excls (cdr excls)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1528
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1529 ;; go through the list of parenthesis groups
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1530 ;; matching whitespace text to be
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1531 ;; contracted/expanded (or possibly
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1532 ;; justified, if the `justify' attribute was
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1533 ;; set)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1534 (unless exclude-p
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1535 (let ((g group))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1536 (while g
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1537
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1538 ;; we have to use markers, since
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1539 ;; `align-areas' may modify the buffer
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1540 (setq b (copy-marker
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1541 (match-beginning (car g)) t)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1542 e (copy-marker (match-end (car g)) t))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1543
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1544 ;; record this text region for alignment
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1545 (setq index (if same (1+ index) 0))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1546 (let ((region (cons b e))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1547 (props (cons
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1548 (if (listp spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1549 (car spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1550 spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1551 (if (listp tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1552 (car tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1553 tab-stop))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1554 (if (nth index regions)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1555 (setcar (nthcdr index regions)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1556 (cons region
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1557 (nth index regions)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1558 (if regions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1559 (progn
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1560 (nconc regions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1561 (list (list region)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1562 (nconc align-props (list props)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1563 (setq regions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1564 (list (list region)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1565 (setq align-props (list props)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1566
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1567 ;; if any further rule matches are
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1568 ;; found before `eol', then they are
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1569 ;; on the same line as this one; this
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1570 ;; can only happen if the `repeat'
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1571 ;; attribute is non-nil
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1572 (if (listp spacing)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1573 (setq spacing (cdr spacing)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1574 (if (listp tab-stop)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1575 (setq tab-stop (cdr tab-stop)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1576 (setq same t g (cdr g))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1577
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1578 ;; if `repeat' has not been set, move to
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1579 ;; the next line; don't bother searching
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1580 ;; anymore on this one
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1581 (if (and (not repeat) (not (bolp)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1582 (forward-line)))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1583
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1584 ;; when they are no more matches for this rule,
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1585 ;; align whatever was left over
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1586 (if regions
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1587 (align-regions regions align-props rule func)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1588
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1589 (setq case-fold-search current-case-fold)))))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1590 (setq rules (cdr rules)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1591 rule-index (1+ rule-index)))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1592
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1593 (if report
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1594 (message "Aligning...done"))))
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1595
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1596 ;; Provide:
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1597
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1598 (provide 'align)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1599
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1600 (run-hooks 'align-load-hook)
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1601
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51264
diff changeset
1602 ;;; arch-tag: ef79cccf-1db8-4888-a8a1-d7ce2d1532f7
27327
c7597f93c50d *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1603 ;;; align.el ends here