Mercurial > emacs
annotate lisp/delim-col.el @ 58195:c12b583f54b9
Fixed these problems:
** Clicking on partially visible lines fails
From: David Kastrup <dak@gnu.org>
Date: 27 Apr 2004 16:42:58 +0200
I had gnus display a mouse-highlighted line (a URL from browse-url)
partially at the bottom of its window. If I click with middle mouse
key on it, the window gets recentered while I hold the mouse key
pressed. If I release it, the window returns into its old position
(cursor in top row) and nothing happens, presumably because the click
was not registered on the line itself, but on the magically
recentered version.
That is a nuisance. Recentering of even partially visible click
targets should only happen if window-point moves there, but not at
the time of the click. From the moment I hold down a key until it
gets released, the displayed window portion should not change, with
the sole exception of scrolling when dragging at the edge of the
screen.
(progn
(setq line-spacing 4)
(dotimes (i (window-height))
(insert "\n" (int-to-string i)))
(forward-line -2)
(recenter -1))
** Can't drag modeline when mouse-autoselect-window is set
From: Klaus Zeitler <kzeitler@lucent.com>
Date: Mon, 11 Oct 2004 11:14:49 +0200
1. start emacs -q --no-site-file
2. set variable mouse-autoselect-window to t
3. split-window-vertically
now I can drag the modeline only upwards but not downwards
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Sat, 13 Nov 2004 01:40:36 +0000 |
parents | 814ffa309985 |
children | bf6ae7cf12eb |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
33092
diff
changeset
|
1 ;;; delim-col.el --- prettify all columns in a region or rectangle |
25761 | 2 |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
3 ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. |
25761 | 4 |
54326 | 5 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> |
6 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> | |
7 ;; Time-stamp: <2004/03/09 21:32:06 vinicius> | |
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
33092
diff
changeset
|
8 ;; Version: 2.1 |
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
33092
diff
changeset
|
9 ;; Keywords: internal |
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
33092
diff
changeset
|
10 ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ |
25761 | 11 |
12 ;; This file is part of GNU Emacs. | |
13 | |
26040 | 14 ;; GNU Emacs is free software; you can redistribute it and/or modify |
15 ;; it under the terms of the GNU General Public License as published by | |
16 ;; the Free Software Foundation; either version 2, or (at your option) | |
17 ;; any later version. | |
25761 | 18 |
26040 | 19 ;; GNU Emacs is distributed in the hope that it will be useful, |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
25761 | 23 |
26040 | 24 ;; You should have received a copy of the GNU General Public License |
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
26 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
27 ;; Boston, MA 02111-1307, USA. | |
25761 | 28 |
29 ;;; Commentary: | |
30 | |
31 ;; delim-col helps to prettify columns in a text region or rectangle. | |
32 ;; | |
33 ;; To use it, make sure that this file is in load-path and insert in your | |
34 ;; .emacs: | |
35 ;; | |
36 ;; (require 'delim-col) | |
37 ;; | |
38 ;; If you have, for example, the following columns: | |
39 ;; | |
40 ;; a b c d | |
41 ;; aaaa bb ccc ddddd | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
42 ;; aaa bbb cccc dddd |
25761 | 43 ;; aa bb ccccccc ddd |
44 ;; | |
45 ;; And the following settings: | |
46 ;; | |
47 ;; (setq delimit-columns-str-before "[ ") | |
48 ;; (setq delimit-columns-str-after " ]") | |
49 ;; (setq delimit-columns-str-separator ", ") | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
50 ;; (setq delimit-columns-before "") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
51 ;; (setq delimit-columns-after "") |
25761 | 52 ;; (setq delimit-columns-separator "\t") |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
53 ;; (setq delimit-columns-format 'separator) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
54 ;; (setq delimit-columns-extra t) |
25761 | 55 ;; |
56 ;; If you select the lines above and type: | |
57 ;; | |
58 ;; M-x delimit-columns-region RET | |
59 ;; | |
60 ;; You obtain the following result: | |
61 ;; | |
62 ;; [ a , b , c , d ] | |
63 ;; [ aaaa, bb , ccc , ddddd ] | |
64 ;; [ aaa , bbb, cccc , dddd ] | |
65 ;; [ aa , bb , ccccccc, ddd ] | |
66 ;; | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
67 ;; But if you select start from the very first b to the very last c and type: |
25761 | 68 ;; |
69 ;; M-x delimit-columns-rectangle RET | |
70 ;; | |
71 ;; You obtain the following result: | |
72 ;; | |
73 ;; a [ b , c ] d | |
74 ;; aaaa [ bb , ccc ] ddddd | |
75 ;; aaa [ bbb, cccc ] dddd | |
76 ;; aa [ bb , ccccccc ] ddd | |
77 ;; | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
78 ;; Now, if we change settings to: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
79 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
80 ;; (setq delimit-columns-before "<") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
81 ;; (setq delimit-columns-after ">") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
82 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
83 ;; For the `delimit-columns-region' example above, the result is: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
84 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
85 ;; [ <a> , <b> , <c> , <d> ] |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
86 ;; [ <aaaa>, <bb> , <ccc> , <ddddd> ] |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
87 ;; [ <aaa> , <bbb>, <cccc> , <dddd> ] |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
88 ;; [ <aa> , <bb> , <ccccccc>, <ddd> ] |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
89 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
90 ;; And for the `delimit-columns-rectangle' example above, the result is: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
91 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
92 ;; a [ <b> , <c> ] d |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
93 ;; aaaa [ <bb> , <ccc> ] ddddd |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
94 ;; aaa [ <bbb>, <cccc> ] dddd |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
95 ;; aa [ <bb> , <ccccccc> ] ddd |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
96 ;; |
25761 | 97 ;; Note that `delimit-columns-region' operates over all text region |
98 ;; selected, extending the region start to the beginning of line and the | |
99 ;; region end to the end of line. While `delimit-columns-rectangle' | |
100 ;; operates over the text rectangle selected which rectangle diagonal is | |
101 ;; given by the region start and end. | |
102 ;; | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
103 ;; See `delimit-columns-format' variable documentation for column formating. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
104 ;; |
25761 | 105 ;; `delimit-columns-region' is useful when you have columns of text that |
106 ;; are not well aligned, like: | |
107 ;; | |
108 ;; horse apple bus | |
109 ;; dog pineapple car | |
110 ;; porcupine strawberry airplane | |
111 ;; | |
112 ;; `delimit-columns-region' and `delimit-columns-rectangle' handle lines | |
113 ;; with different number of columns, like: | |
114 ;; | |
115 ;; horse apple bus | |
116 ;; dog pineapple car EXTRA | |
117 ;; porcupine strawberry airplane | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
118 ;; |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
119 ;; Use `delimit-columns-customize' to customize delim-col package variables. |
25761 | 120 |
121 ;;; Code: | |
122 | |
123 | |
124 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
125 ;; User Options: | |
126 | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
127 (defgroup columns nil |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
128 "Prettify columns" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
129 :link '(emacs-library-link :tag "Source Lisp File" "delim-col.el") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
130 :prefix "delimit-columns-" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
131 :group 'internal) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
132 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
133 (defcustom delimit-columns-str-before "" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
134 "*Specify a string to be inserted before all columns." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
135 :type '(string :tag "Before All Columns") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
136 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
137 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
138 (defcustom delimit-columns-str-separator ", " |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
139 "*Specify a string to be inserted between each column." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
140 :type '(string :tag "Between Each Column") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
141 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
142 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
143 (defcustom delimit-columns-str-after "" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
144 "*Specify a string to be inserted after all columns." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
145 :type '(string :tag "After All Columns") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
146 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
147 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
148 (defcustom delimit-columns-before "" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
149 "*Specify a string to be inserted before each column." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
150 :type '(string :tag "Before Each Column") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
151 :group 'columns) |
25761 | 152 |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
153 (defcustom delimit-columns-after "" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
154 "*Specify a string to be inserted after each column." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
155 :type '(string :tag "After Each Column") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
156 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
157 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
158 (defcustom delimit-columns-separator "\t" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
159 "*Specify a regexp which separates each column." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
160 :type '(regexp :tag "Column Separator") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
161 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
162 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
163 (defcustom delimit-columns-format t |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
164 "*Specify how to format columns. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
165 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
166 For examples below, consider: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
167 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
168 + columns `ccc' and `dddd', |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
169 + the maximum column length for each column is 6, |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
170 + and the following settings: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
171 (setq delimit-columns-before \"<\") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
172 (setq delimit-columns-after \">\") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
173 (setq delimit-columns-separator \":\") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
174 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
175 Valid values are: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
176 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
177 nil no formating. That is, `delimit-columns-after' is followed by |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
178 `delimit-columns-separator'. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
179 For example, the result is: \"<ccc>:<dddd>:\" |
25761 | 180 |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
181 t align columns. That is, `delimit-columns-after' is followed by |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
182 `delimit-columns-separator' and then followed by spaces. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
183 For example, the result is: \"<ccc>: <dddd>: \" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
184 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
185 'separator align separators. That is, `delimit-columns-after' is followed |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
186 by spaces and then followed by `delimit-columns-separator'. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
187 For example, the result is: \"<ccc> :<dddd> :\" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
188 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
189 'padding format column by filling with spaces before |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
190 `delimit-columns-after'. That is, spaces are followed by |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
191 `delimit-columns-after' and then followed by |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
192 `delimit-columns-separator'. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
193 For example, the result is: \"<ccc >:<dddd >:\" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
194 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
195 Any other value is treated as t." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
196 :type '(choice :menu-tag "Column Formating" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
197 :tag "Column Formating" |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
198 (const :tag "No Formating" nil) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
199 (const :tag "Column Alignment" t) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
200 (const :tag "Separator Aligment" separator) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
201 (const :tag "Column Padding" padding)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
202 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
203 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
204 (defcustom delimit-columns-extra t |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
205 "*Non-nil means that lines will have the same number of columns. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
206 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
207 This has effect only when there are lines with different number of columns." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
208 :type '(boolean :tag "Lines With Same Number Of Column") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
209 :group 'columns) |
25761 | 210 |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
211 (defcustom delimit-columns-start 0 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
212 "*Specify column number to start prettifing. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
213 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
214 See also `delimit-columns-end' for documentation. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
215 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
216 The following relation must hold: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
217 0 <= delimit-columns-start <= delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
218 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
219 The column number start from 0 and it's relative to the beginning of selected |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
220 region. So if you selected a text region, the first column (column 0) is |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
221 located at beginning of line. If you selected a text rectangle, the first |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
222 column (column 0) is located at left corner." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
223 :type '(integer :tag "Column Start") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
224 :group 'columns) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
225 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
226 (defcustom delimit-columns-end 1000000 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
227 "*Specify column number to end prettifing. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
228 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
229 See also `delimit-columns-start' for documentation. |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
230 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
231 The following relation must hold: |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
232 0 <= delimit-columns-start <= delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
233 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
234 The column number start from 0 and it's relative to the beginning of selected |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
235 region. So if you selected a text region, the first column (column 0) is |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
236 located at beginning of line. If you selected a text rectangle, the first |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
237 column (column 0) is located at left corner." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
238 :type '(integer :tag "Column End") |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
239 :group 'columns) |
25761 | 240 |
241 | |
242 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
243 ;; User Commands: | |
244 | |
245 | |
246 ;;;###autoload | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
247 (defun delimit-columns-customize () |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
248 "Customization of `columns' group." |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
249 (interactive) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
250 (customize-group 'columns)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
251 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
252 |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
253 (defmacro delimit-columns-str (str) |
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
254 `(if (stringp ,str) ,str "")) |
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
255 |
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
256 |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
257 ;;;###autoload |
25761 | 258 (defun delimit-columns-region (start end) |
259 "Prettify all columns in a text region. | |
260 | |
261 START and END delimits the text region." | |
262 (interactive "*r") | |
263 (let ((delimit-columns-str-before | |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
264 (delimit-columns-str delimit-columns-str-before)) |
25761 | 265 (delimit-columns-str-separator |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
266 (delimit-columns-str delimit-columns-str-separator)) |
25761 | 267 (delimit-columns-str-after |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
268 (delimit-columns-str delimit-columns-str-after)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
269 (delimit-columns-before |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
270 (delimit-columns-str delimit-columns-before)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
271 (delimit-columns-after |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
272 (delimit-columns-str delimit-columns-after)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
273 (delimit-columns-start |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
274 (if (and (integerp delimit-columns-start) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
275 (>= delimit-columns-start 0)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
276 delimit-columns-start |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
277 0)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
278 (delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
279 (if (integerp delimit-columns-end) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
280 delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
281 1000000)) |
25761 | 282 (delimit-columns-limit (make-marker)) |
283 (the-end (copy-marker end)) | |
284 delimit-columns-max) | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
285 (when (<= delimit-columns-start delimit-columns-end) |
25761 | 286 (save-excursion |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
287 (goto-char start) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
288 (beginning-of-line) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
289 ;; get maximum length for each column |
33056
6566390db905
Little fix: replace delimit-columns-align-columns by
Gerd Moellmann <gerd@gnu.org>
parents:
32835
diff
changeset
|
290 (and delimit-columns-format |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
291 (save-excursion |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
292 (while (< (point) the-end) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
293 (delimit-columns-rectangle-max |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
294 (prog1 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
295 (point) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
296 (end-of-line))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
297 (forward-char 1)))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
298 ;; prettify columns |
25761 | 299 (while (< (point) the-end) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
300 (delimit-columns-rectangle-line |
25761 | 301 (prog1 |
302 (point) | |
303 (end-of-line))) | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
304 (forward-char 1)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
305 ;; nullify markers |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
306 (set-marker delimit-columns-limit nil) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
307 (set-marker the-end nil))))) |
25761 | 308 |
309 | |
310 (require 'rect) | |
311 | |
312 | |
313 ;;;###autoload | |
314 (defun delimit-columns-rectangle (start end) | |
315 "Prettify all columns in a text rectangle. | |
316 | |
317 START and END delimits the corners of text rectangle." | |
318 (interactive "*r") | |
319 (let ((delimit-columns-str-before | |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
320 (delimit-columns-str delimit-columns-str-before)) |
25761 | 321 (delimit-columns-str-separator |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
322 (delimit-columns-str delimit-columns-str-separator)) |
25761 | 323 (delimit-columns-str-after |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
324 (delimit-columns-str delimit-columns-str-after)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
325 (delimit-columns-before |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
326 (delimit-columns-str delimit-columns-before)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
327 (delimit-columns-after |
33092
181e948ec3ac
Little programming improvement.
Gerd Moellmann <gerd@gnu.org>
parents:
33056
diff
changeset
|
328 (delimit-columns-str delimit-columns-after)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
329 (delimit-columns-start |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
330 (if (and (integerp delimit-columns-start) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
331 (>= delimit-columns-start 0)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
332 delimit-columns-start |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
333 0)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
334 (delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
335 (if (integerp delimit-columns-end) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
336 delimit-columns-end |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
337 1000000)) |
25761 | 338 (delimit-columns-limit (make-marker)) |
339 (the-end (copy-marker end)) | |
340 delimit-columns-max) | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
341 (when (<= delimit-columns-start delimit-columns-end) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
342 ;; get maximum length for each column |
33056
6566390db905
Little fix: replace delimit-columns-align-columns by
Gerd Moellmann <gerd@gnu.org>
parents:
32835
diff
changeset
|
343 (and delimit-columns-format |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
344 (save-excursion |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
345 (operate-on-rectangle 'delimit-columns-rectangle-max |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
346 start the-end nil))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
347 ;; prettify columns |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
348 (save-excursion |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
349 (operate-on-rectangle 'delimit-columns-rectangle-line |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
350 start the-end nil)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
351 ;; nullify markers |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
352 (set-marker delimit-columns-limit nil) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
353 (set-marker the-end nil)))) |
25761 | 354 |
355 | |
356 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
357 ;; Internal Variables and Functions: | |
358 | |
359 | |
360 ;; to avoid compilation gripes | |
361 (defvar delimit-columns-max nil) | |
362 (defvar delimit-columns-limit nil) | |
363 | |
364 | |
39867
e4e8b9d662e2
(delimit-columns-rectangle-max): Do not double variables in the lambda-list.
Pavel Janík <Pavel@Janik.cz>
parents:
38436
diff
changeset
|
365 (defun delimit-columns-rectangle-max (startpos &optional ignore1 ignore2) |
25761 | 366 (set-marker delimit-columns-limit (point)) |
367 (goto-char startpos) | |
368 (let ((ncol 1) | |
369 origin values) | |
370 ;; get current column length | |
371 (while (progn | |
372 (setq origin (current-column)) | |
373 (re-search-forward delimit-columns-separator | |
374 delimit-columns-limit 'move)) | |
375 (save-excursion | |
376 (goto-char (match-beginning 0)) | |
377 (setq values (cons (- (current-column) origin) | |
378 values))) | |
379 (setq ncol (1+ ncol))) | |
380 (setq values (cons (- (current-column) origin) | |
381 values)) | |
382 ;; extend delimit-columns-max, if needed | |
383 (let ((index (length delimit-columns-max))) | |
384 (and (> ncol index) | |
385 (let ((extend (make-vector ncol 0))) | |
386 (while (> index 0) | |
387 (setq index (1- index)) | |
388 (aset extend index (aref delimit-columns-max index))) | |
389 (setq delimit-columns-max extend)))) | |
390 ;; get maximum column length | |
391 (while values | |
392 (setq ncol (1- ncol)) | |
393 (aset delimit-columns-max ncol (max (aref delimit-columns-max ncol) | |
394 (car values))) | |
395 (setq values (cdr values))))) | |
396 | |
397 | |
39867
e4e8b9d662e2
(delimit-columns-rectangle-max): Do not double variables in the lambda-list.
Pavel Janík <Pavel@Janik.cz>
parents:
38436
diff
changeset
|
398 (defun delimit-columns-rectangle-line (startpos &optional ignore1 ignore2) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
399 (let ((len (length delimit-columns-max)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
400 (ncol 0) |
25761 | 401 origin) |
402 (set-marker delimit-columns-limit (point)) | |
403 (goto-char startpos) | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
404 ;; skip initial columns |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
405 (while (and (< ncol delimit-columns-start) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
406 (< (point) delimit-columns-limit) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
407 (re-search-forward delimit-columns-separator |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
408 delimit-columns-limit 'move)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
409 (setq ncol (1+ ncol))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
410 ;; insert first formating |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
411 (insert delimit-columns-str-before delimit-columns-before) |
25761 | 412 ;; Adjust all columns but last one |
413 (while (progn | |
414 (setq origin (current-column)) | |
415 (and (< (point) delimit-columns-limit) | |
416 (re-search-forward delimit-columns-separator | |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
417 delimit-columns-limit 'move) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
418 (or (< ncol delimit-columns-end) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
419 (progn |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
420 (goto-char (match-beginning 0)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
421 nil)))) |
25761 | 422 (delete-region (match-beginning 0) (point)) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
423 (delimit-columns-format |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
424 (and delimit-columns-format |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
425 (make-string (- (aref delimit-columns-max ncol) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
426 (- (current-column) origin)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
427 ?\ ))) |
25761 | 428 (setq ncol (1+ ncol))) |
32835
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
429 ;; Prepare last column spaces |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
430 (let ((spaces (and delimit-columns-format |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
431 (make-string (- (aref delimit-columns-max ncol) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
432 (- (current-column) origin)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
433 ?\ )))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
434 ;; Adjust extra columns, if needed |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
435 (and delimit-columns-extra |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
436 (while (and (< (setq ncol (1+ ncol)) len) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
437 (<= ncol delimit-columns-end)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
438 (delimit-columns-format spaces) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
439 (setq spaces (and delimit-columns-format |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
440 (make-string (aref delimit-columns-max ncol) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
441 ?\ ))))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
442 ;; insert last formating |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
443 (cond ((null delimit-columns-format) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
444 (insert delimit-columns-after delimit-columns-str-after)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
445 ((eq delimit-columns-format 'padding) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
446 (insert spaces delimit-columns-after delimit-columns-str-after)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
447 (t |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
448 (insert delimit-columns-after spaces delimit-columns-str-after)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
449 )) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
450 (goto-char (max (point) delimit-columns-limit)))) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
451 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
452 |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
453 (defun delimit-columns-format (spaces) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
454 (cond ((null delimit-columns-format) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
455 (insert delimit-columns-after |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
456 delimit-columns-str-separator |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
457 delimit-columns-before)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
458 ((eq delimit-columns-format 'separator) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
459 (insert delimit-columns-after |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
460 spaces |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
461 delimit-columns-str-separator |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
462 delimit-columns-before)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
463 ((eq delimit-columns-format 'padding) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
464 (insert spaces |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
465 delimit-columns-after |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
466 delimit-columns-str-separator |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
467 delimit-columns-before)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
468 (t |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
469 (insert delimit-columns-after |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
470 delimit-columns-str-separator |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
471 spaces |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
472 delimit-columns-before)) |
001414add3a5
Now there is a column formatting mechanism.
Gerd Moellmann <gerd@gnu.org>
parents:
26040
diff
changeset
|
473 )) |
25761 | 474 |
475 | |
476 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
477 | |
478 | |
479 (provide 'delim-col) | |
480 | |
481 | |
52401 | 482 ;;; arch-tag: 1cc0c5c5-1b2a-43e4-9ba5-bf9441cfd1a9 |
25761 | 483 ;;; delim-col.el ends here |