annotate lisp/array.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children cc035ccb9275 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 27286
diff changeset
1 ;;; array.el --- array editing commands for GNU Emacs
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 180
diff changeset
2
101093
0d306c032527 Comment (minor header format fixes).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
3 ;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 101093
diff changeset
4 ;; 2008, 2009, 2010 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
5
101093
0d306c032527 Comment (minor header format fixes).
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
6 ;; Author: David M. Brown
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
7 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
8 ;; Keywords: extensions
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79721
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79721
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79721
diff changeset
15 ;; (at your option) any later version.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79721
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
25 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
26
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
27 ;; Commands for editing a buffer interpreted as a rectangular array
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
28 ;; or matrix of whitespace-separated strings. You specify the array
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
29 ;; dimensions and some other parameters at startup time.
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
30
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
31 ;; Written by dmb%morgoth@harvard.harvard.edu (address is old)
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
32 ;; (David M. Brown at Goldberg-Zoino & Associates, Inc.)
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
33 ;; Thanks to cph@kleph.ai.mit.edu for assistance
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
34
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
35 ;; To do:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
36 ;; Smooth initialization process by grokking local variables list
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
37 ;; at end of buffer or parsing buffer using whitespace as delimiters.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
38 ;; Make 'array-copy-column-right faster.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
41 ;;; Code:
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
43 (defvar array-max-column nil "Number of columns in the array.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
44 (defvar array-columns-per-line nil "Number of array columns per line.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
45 (defvar array-buffer-column nil "Current column number of point in the buffer.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
46 (defvar array-line-length nil "Length of a line in the array.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
47 (defvar array-buffer-line nil "Current line number of point in the buffer.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
48 (defvar array-lines-per-row nil "Number of lines per array row.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
49 (defvar array-max-row nil "Number of rows in the array.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
50 (defvar array-field-width nil "Width of a field in the array.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
51 (defvar array-row nil "Current array row location of point.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
52 (defvar array-column nil "Current array column location of point.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
53 (defvar array-rows-numbered nil "Are rows numbered in the buffer?")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
54 (defvar array-copy-string nil "Current field string being copied.")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
55 (defvar array-respect-tabs nil "Should TAB conversion be prevented?")
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
56
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 ;;; Internal information functions.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42704
diff changeset
58
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (defun array-cursor-in-array-range ()
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
60 "Return t if the cursor is in a valid array cell.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 Its ok to be on a row number line."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
62 (let ((columns-last-line (% array-max-column array-columns-per-line)))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
63 ;; Requires array-buffer-line and array-buffer-column to be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (not (or
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 ;; The cursor is too far to the right.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
66 (>= array-buffer-column array-line-length)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 ;; The cursor is below the last row.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
68 (>= array-buffer-line (* array-lines-per-row array-max-row))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 ;; The cursor is on the last line of the row, the line is smaller
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 ;; than the others, and the cursor is after the last array column
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 ;; on the line.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
72 (and (zerop (% (1+ array-buffer-line) array-lines-per-row))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (not (zerop columns-last-line))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
74 (>= array-buffer-column (* columns-last-line array-field-width)))))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (defun array-current-row ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 "Return the array row of the field in which the cursor is located."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
78 ;; Requires array-buffer-line and array-buffer-column to be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (and (array-cursor-in-array-range)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
80 (1+ (floor array-buffer-line array-lines-per-row))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 (defun array-current-column ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 "Return the array column of the field in which the cursor is located."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
84 ;; Requires array-buffer-line and array-buffer-column to be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 (and (array-cursor-in-array-range)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 ;; It's not okay to be on a row number line.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
87 (not (and array-rows-numbered
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
88 (zerop (% array-buffer-line array-lines-per-row))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 (+
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 ;; Array columns due to line differences.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
91 (* array-columns-per-line
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
92 (if array-rows-numbered
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
93 (1- (% array-buffer-line array-lines-per-row))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
94 (% array-buffer-line array-lines-per-row)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 ;; Array columns on the current line.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
96 (1+ (floor array-buffer-column array-field-width)))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (defun array-update-array-position (&optional a-row a-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
99 "Set `array-row' and `array-column' to their current values.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
100 Set them to the optional arguments A-ROW and A-COLUMN if those are supplied."
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
101 ;; Requires that array-buffer-line and array-buffer-column be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (setq array-row (or a-row (array-current-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 array-column (or a-column (array-current-column))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 (defun array-update-buffer-position ()
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
106 "Set `array-buffer-line' and `array-buffer-column' to their current values."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
107 (setq array-buffer-line (current-line)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
108 array-buffer-column (current-column)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 ;;; Information commands.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 (defun array-what-position ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 "Display the row and column in which the cursor is positioned."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 (interactive)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
117 (let ((array-buffer-line (current-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
118 (array-buffer-column (current-column)))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
119 (message "Array row: %s Array column: %s"
14338
0f8f00733165 (array-what-position): Delete format call inside message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
120 (prin1-to-string (array-current-row))
0f8f00733165 (array-what-position): Delete format call inside message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
121 (prin1-to-string (array-current-column)))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 (defun array-display-local-variables ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 "Display the current state of the local variables in the minibuffer."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 (interactive)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 (let ((buf (buffer-name (current-buffer))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 (with-output-to-temp-buffer "*Local Variables*"
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 (buffer-disable-undo standard-output)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 (terpri)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 (princ (format " Buffer: %s\n\n" buf))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 (princ (format " max-row: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
132 (prin1-to-string array-max-row)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 (princ (format " max-column: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
134 (prin1-to-string array-max-column)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 (princ (format " columns-per-line: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
136 (prin1-to-string array-columns-per-line)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 (princ (format " field-width: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
138 (prin1-to-string array-field-width)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 (princ (format " rows-numbered: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
140 (prin1-to-string array-rows-numbered)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (princ (format " lines-per-row: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
142 (prin1-to-string array-lines-per-row)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (princ (format " line-length: %s\n"
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
144 (prin1-to-string array-line-length))))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 ;;; Internal movement functions.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (defun array-beginning-of-field (&optional go-there)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 "Return the column of the beginning of the current field.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 Optional argument GO-THERE, if non-nil, means go there too."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
153 ;; Requires that array-buffer-column be current.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
154 (let ((goal-column (- array-buffer-column (% array-buffer-column array-field-width))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (if go-there
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 (move-to-column-untabify goal-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 goal-column)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (defun array-end-of-field (&optional go-there)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 "Return the column of the end of the current array field.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 If optional argument GO-THERE is non-nil, go there too."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
162 ;; Requires that array-buffer-column be current.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
163 (let ((goal-column (+ (- array-buffer-column (% array-buffer-column array-field-width))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
164 array-field-width)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (if go-there
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 (move-to-column-untabify goal-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 goal-column)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (defun array-move-to-cell (a-row a-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
170 "Move to array row A-ROW and array column A-COLUMN.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 Leave point at the beginning of the field and return the new buffer column."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
172 (let ((goal-line (+ (* array-lines-per-row (1- a-row))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
173 (if array-rows-numbered 1 0)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
174 (floor (1- a-column) array-columns-per-line)))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
175 (goal-column (* array-field-width (% (1- a-column) array-columns-per-line))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (goto-char (point-min))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (forward-line goal-line)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (move-to-column-untabify goal-column)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 (defun array-move-to-row (a-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 "Move to array row A-ROW preserving the current array column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 Leave point at the beginning of the field and return the new array row."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
183 ;; Requires that array-buffer-line and array-buffer-column be current.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
184 (let ((goal-line (+ (* array-lines-per-row (1- a-row))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
185 (% array-buffer-line array-lines-per-row)))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
186 (goal-column (- array-buffer-column (% array-buffer-column array-field-width))))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
187 (forward-line (- goal-line array-buffer-line))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (move-to-column-untabify goal-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 a-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (defun array-move-to-column (a-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 "Move to array column A-COLUMN preserving the current array row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 Leave point at the beginning of the field and return the new array column."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
194 ;; Requires that array-buffer-line and array-buffer-column be current.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
195 (let ((goal-line (+ (- array-buffer-line (% array-buffer-line array-lines-per-row))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
196 (if array-rows-numbered 1 0)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
197 (floor (1- a-column) array-columns-per-line)))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
198 (goal-column (* array-field-width (% (1- a-column) array-columns-per-line))))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
199 (forward-line (- goal-line array-buffer-line))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 (move-to-column-untabify goal-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 a-column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (defun array-move-one-row (sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 "Move one array row in direction SIGN (1 or -1).
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 Leave point at the beginning of the field and return the new array row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 If requested to move beyond the array bounds, signal an error."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
207 ;; Requires that array-buffer-line and array-buffer-column be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (let ((goal-column (array-beginning-of-field))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (array-row (or (array-current-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
210 (error "Cursor is not in a valid array cell"))))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
211 (cond ((and (= array-row array-max-row) (= sign 1))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
212 (error "End of array"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 ((and (= array-row 1) (= sign -1))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
214 (error "Beginning of array"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 (progn
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
217 (forward-line (* sign array-lines-per-row))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (move-to-column-untabify goal-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (+ array-row sign))))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (defun array-move-one-column (sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 "Move one array column in direction SIGN (1 or -1).
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 Leave point at the beginning of the field and return the new array column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 If requested to move beyond the array bounds, signal an error."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
225 ;; Requires that array-buffer-line and array-buffer-column be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (let ((array-column (or (array-current-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
227 (error "Cursor is not in a valid array cell"))))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
228 (cond ((and (= array-column array-max-column) (= sign 1))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
229 (error "End of array"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 ((and (= array-column 1) (= sign -1))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
231 (error "Beginning of array"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 (t
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
233 (cond
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 ;; Going backward from first column on the line.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
235 ((and (= sign -1) (= 1 (% array-column array-columns-per-line)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 (forward-line -1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (move-to-column-untabify
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
238 (* array-field-width (1- array-columns-per-line))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 ;; Going forward from last column on the line.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
240 ((and (= sign 1) (zerop (% array-column array-columns-per-line)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 (forward-line 1))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 ;; Somewhere in the middle of the line.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 (move-to-column-untabify (+ (array-beginning-of-field)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
245 (* array-field-width sign)))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 (+ array-column sign)))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 (defun array-normalize-cursor ()
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
249 "Move the cursor to the first non-whitespace character in the field.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
250 If necessary, scroll horizontally to keep the cursor in view."
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 ;; Assumes point is at the beginning of the field.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
252 (let ((array-buffer-column (current-column)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 (skip-chars-forward " \t"
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 (1- (save-excursion (array-end-of-field t) (point))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 (array-maybe-scroll-horizontally)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 (defun array-maybe-scroll-horizontally ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 "If necessary, scroll horizontally to keep the cursor in view."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 ;; This is only called from array-normalize-cursor so
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
260 ;; array-buffer-column will always be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 (let ((w-hscroll (window-hscroll))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 (w-width (window-width)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 (cond
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
264 ((and (>= array-buffer-column w-hscroll)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
265 (<= array-buffer-column (+ w-hscroll w-width)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 ;; It's already visible. Do nothing.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 nil)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
268 ((> array-buffer-column (+ w-hscroll w-width))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 ;; It's to the right. Scroll left.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
270 (scroll-left (- (- array-buffer-column w-hscroll)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (/ w-width 2))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 ;; It's to the left. Scroll right.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
274 (scroll-right (+ (- w-hscroll array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 (/ w-width 2)))))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 ;;; Movement commands.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 (defun array-next-row (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 "Move down one array row, staying in the current array column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 If optional ARG is given, move down ARG array rows."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 (interactive "p")
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
285 (let ((array-buffer-line (current-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
286 (array-buffer-column (current-column)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 (if (= (abs arg) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 (array-move-one-row arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (array-move-to-row
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 (limit-index (+ (or (array-current-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
291 (error "Cursor is not in an array cell"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 arg)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
293 array-max-row))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (defun array-previous-row (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 "Move up one array row, staying in the current array column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 If optional ARG is given, move up ARG array rows."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (array-next-row (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 (defun array-forward-column (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 "Move forward one field, staying in the current array row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 If optional ARG is given, move forward ARG array columns.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 If necessary, keep the cursor in the window by scrolling right or left."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (interactive "p")
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
307 (let ((array-buffer-line (current-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
308 (array-buffer-column (current-column)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (if (= (abs arg) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (array-move-one-column arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (array-move-to-column
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 (limit-index (+ (or (array-current-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
313 (error "Cursor is not in an array cell"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 arg)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
315 array-max-column))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 (defun array-backward-column (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 "Move backward one field, staying in the current array row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 If optional ARG is given, move backward ARG array columns.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 If necessary, keep the cursor in the window by scrolling right or left."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 (array-forward-column (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 (defun array-goto-cell (a-row a-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 "Go to array row A-ROW and array column A-COLUMN."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 (interactive "nArray row: \nnArray column: ")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 (array-move-to-cell
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
329 (limit-index a-row array-max-row)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
330 (limit-index a-column array-max-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 ;;; Internal copying functions.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 (defun array-field-string ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 "Return the field string at the current cursor location."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
339 ;; Requires that array-buffer-column be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 (buffer-substring
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 (save-excursion (array-beginning-of-field t) (point))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 (save-excursion (array-end-of-field t) (point))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 (defun array-copy-once-vertically (sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 "Copy the current field into one array row in direction SIGN (1 or -1).
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 Leave point at the beginning of the field and return the new array row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 If requested to move beyond the array bounds, signal an error."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
348 ;; Requires that array-buffer-line, array-buffer-column, and array-copy-string be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 (let ((a-row (array-move-one-row sign)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 (delete-region (point) (save-excursion (array-end-of-field t) (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
352 (insert array-copy-string))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
353 (move-to-column array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 a-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 (defun array-copy-once-horizontally (sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 "Copy the current field into one array column in direction SIGN (1 or -1).
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 Leave point at the beginning of the field and return the new array column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 If requested to move beyond the array bounds, signal an error."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
360 ;; Requires that array-buffer-line, array-buffer-column, and array-copy-string be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 (let ((a-column (array-move-one-column sign)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 (delete-region (point) (save-excursion (array-end-of-field t) (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
365 (insert array-copy-string))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
366 (move-to-column array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 a-column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 (defun array-copy-to-row (a-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 "Copy the current field vertically into every cell up to and including A-ROW.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 Leave point at the beginning of the field."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
372 ;; Requires that array-buffer-line, array-buffer-column, array-row, and
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
373 ;; array-copy-string be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 (let* ((num (- a-row array-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 (count (abs num))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 (sign (if (zerop count) () (/ num count))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 (while (> count 0)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 (array-move-one-row sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 (delete-region (point) (save-excursion (array-end-of-field t) (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
382 (insert array-copy-string))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
383 (move-to-column array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 (setq count (1- count)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42704
diff changeset
385
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 (defun array-copy-to-column (a-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
387 "Copy current field horizontally into every cell up to and including A-COLUMN.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
388 Leave point at the beginning of the field."
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
389 ;; Requires that array-buffer-line, array-buffer-column, array-column, and
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
390 ;; array-copy-string be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 (let* ((num (- a-column array-column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 (count (abs num))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 (sign (if (zerop count) () (/ num count))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (while (> count 0)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 (array-move-one-column sign)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 (delete-region (point) (save-excursion (array-end-of-field t) (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
399 (insert array-copy-string))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
400 (move-to-column array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 (setq count (1- count)))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 (defun array-copy-to-cell (a-row a-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 "Copy the current field into the cell at A-ROW, A-COLUMN.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 Leave point at the beginning of the field."
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
406 ;; Requires that array-copy-string be current.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 (array-move-to-cell a-row a-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 (delete-region (point) (save-excursion (array-end-of-field t) (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
410 (insert array-copy-string)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
411 (move-to-column array-buffer-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 ;;; Commands for copying.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 (defun array-copy-down (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 "Copy the current field one array row down.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 If optional ARG is given, copy down through ARG array rows."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 (interactive "p")
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
421 (let* ((array-buffer-line (current-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
422 (array-buffer-column (current-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 (array-row (or (array-current-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
424 (error "Cursor is not in a valid array cell")))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
425 (array-copy-string (array-field-string)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 (if (= (abs arg) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 (array-copy-once-vertically arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 (array-copy-to-row
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
429 (limit-index (+ array-row arg) array-max-row))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 (defun array-copy-up (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 "Copy the current field one array row up.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 If optional ARG is given, copy up through ARG array rows."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 (array-copy-down (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 (defun array-copy-forward (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 "Copy the current field one array column to the right.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 If optional ARG is given, copy through ARG array columns to the right."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 (interactive "p")
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
442 (let* ((array-buffer-line (current-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
443 (array-buffer-column (current-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 (array-column (or (array-current-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
445 (error "Cursor is not in a valid array cell")))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
446 (array-copy-string (array-field-string)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 (if (= (abs arg) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 (array-copy-once-horizontally arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 (array-copy-to-column
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
450 (limit-index (+ array-column arg) array-max-column))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 (defun array-copy-backward (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 "Copy the current field one array column to the left.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 If optional ARG is given, copy through ARG array columns to the left."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 (array-copy-forward (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 (defun array-copy-column-forward (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 "Copy the entire current column in to the column to the right.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 If optional ARG is given, copy through ARG array columns to the right."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 (array-update-array-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 (if (not array-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
466 (error "Cursor is not in a valid array cell"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 (message "Working...")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 (let ((this-row 0))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
469 (while (< this-row array-max-row)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 (setq this-row (1+ this-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 (array-move-to-cell this-row array-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (array-update-buffer-position)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
473 (let ((array-copy-string (array-field-string)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 (if (= (abs arg) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 (array-copy-once-horizontally arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 (array-copy-to-column
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
477 (limit-index (+ array-column arg) array-max-column))))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 (message "Working...done")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 (array-move-to-row array-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 (defun array-copy-column-backward (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 "Copy the entire current column one column to the left.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 If optional ARG is given, copy through ARG columns to the left."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 (array-copy-column-forward (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 (defun array-copy-row-down (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 "Copy the entire current row one row down.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 If optional ARG is given, copy through ARG rows down."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 (array-update-array-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 (if (not array-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
495 (error "Cursor is not in a valid array cell"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 (cond
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 ((and (= array-row 1) (= arg -1))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
498 (error "Beginning of array"))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
499 ((and (= array-row array-max-row) (= arg 1))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
500 (error "End of array"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 (t
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
502 (let* ((array-copy-string
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 (buffer-substring
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 (save-excursion (array-move-to-cell array-row 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 (point))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
506 (save-excursion (array-move-to-cell array-row array-max-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 (forward-line 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 (point))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 (this-row array-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
510 (goal-row (limit-index (+ this-row arg) array-max-row))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 (num (- goal-row this-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 (count (abs num))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 (sign (if (not (zerop count)) (/ num count))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 (while (> count 0)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 (setq this-row (+ this-row sign))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 (array-move-to-cell this-row 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 (delete-region (point)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 (save-excursion
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
520 (array-move-to-cell this-row array-max-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 (forward-line 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
523 (insert array-copy-string))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 (setq count (1- count)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 (array-move-to-cell goal-row (or array-column 1)))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 (array-normalize-cursor))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 (defun array-copy-row-up (&optional arg)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 "Copy the entire current array row into the row above.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 If optional ARG is given, copy through ARG rows up."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 (interactive "p")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 (array-copy-row-down (- arg)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 (defun array-fill-rectangle ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 "Copy the field at mark into every cell between mark and point."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 (interactive)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 ;; Bind arguments.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 (let ((p-row (or (array-current-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
540 (error "Cursor is not in a valid array cell")))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 (p-column (or (array-current-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
542 (error "Cursor is not in a valid array cell")))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 (m-row
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 (exchange-point-and-mark)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 (or (array-current-row)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
548 (error "Mark is not in a valid array cell"))))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
549 (m-column
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 (exchange-point-and-mark)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 (or (array-current-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
554 (error "Mark is not in a valid array cell")))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 (message "Working...")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 (let ((top-row (min m-row p-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 (bottom-row (max m-row p-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 (left-column (min m-column p-column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 (right-column (max m-column p-column)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 ;; Do the first row.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
561 (let ((array-copy-string
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 (array-move-to-cell m-row m-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 (array-field-string))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 (array-copy-to-cell top-row left-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 (array-update-array-position top-row left-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 (array-copy-to-column right-column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 ;; Do the rest of the rows.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 (array-move-to-cell top-row left-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
572 (let ((array-copy-string
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 (buffer-substring
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 (point)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 (array-move-to-cell top-row right-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
577 (setq array-buffer-column (current-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 (array-end-of-field t)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 (point))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 (this-row top-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 (while (/= this-row bottom-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 (setq this-row (1+ this-row))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 (array-move-to-cell this-row left-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 (delete-region
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586 (point)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 (array-move-to-cell this-row right-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
589 (setq array-buffer-column (current-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 (array-end-of-field t)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 (point)))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
592 (insert array-copy-string)))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 (message "Working...done")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 (array-goto-cell p-row p-column)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 ;;; Reconfiguration of the array.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 (defun array-make-template ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 "Create the template of an array."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 (interactive)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
603 ;; If there is a conflict between array-field-width and init-string, resolve it.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 (let ((check t)
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
605 (len)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
606 init-field)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 (while check
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
608 (setq init-field (read-string "Initial field value: "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
609 (setq len (length init-field))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
610 (if (/= len array-field-width)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 (if (y-or-n-p (format "Change field width to %d? " len))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
612 (progn (setq array-field-width len)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 (setq check nil)))
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
614 (setq check nil)))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
615 (goto-char (point-min))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
616 (message "Working...")
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
617 (let ((this-row 1))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
618 ;; Loop through the rows.
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
619 (while (<= this-row array-max-row)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
620 (if array-rows-numbered
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
621 (insert (format "%d:\n" this-row)))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
622 (let ((this-column 1))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
623 ;; Loop through the columns.
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
624 (while (<= this-column array-max-column)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
625 (insert init-field)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
626 (if (and (zerop (% this-column array-columns-per-line))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
627 (/= this-column array-max-column))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
628 (newline))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
629 (setq this-column (1+ this-column))))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
630 (setq this-row (1+ this-row))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
631 (newline)))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
632 (message "Working...done"))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 (array-goto-cell 1 1))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 (defun array-reconfigure-rows (new-columns-per-line new-rows-numbered)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
636 "Reconfigure the state of `array-rows-numbered' and `array-columns-per-line'.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
637 NEW-COLUMNS-PER-LINE is the desired value of `array-columns-per-line' and
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638 NEW-ROWS-NUMBERED (a character, either ?y or ?n) is the desired value
64429
dd1d759e63db (array-mode, array-reconfigure-rows, untabify-backward): Fix typos in
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
639 of `array-rows-numbered'."
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 (interactive "nColumns per line: \ncRows numbered? (y or n) ")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 ;; Check on new-columns-per-line
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 (let ((check t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 (while check
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 (if (and (>= new-columns-per-line 1)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
645 (<= new-columns-per-line array-max-column))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 (setq check nil)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647 (setq new-columns-per-line
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 52401
diff changeset
648 (string-to-number
62458
2c228409c44d Replace `read-input' by `read-string'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62402
diff changeset
649 (read-string
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
650 (format "Columns per line (1 - %d): " array-max-column)))))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 ;; Check on new-rows-numbered. It has to be done this way
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 ;; because interactive does not have y-or-n-p.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 (cond
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 ((eq new-rows-numbered ?y)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 (setq new-rows-numbered t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 ((eq new-rows-numbered ?n)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 (setq new-rows-numbered nil))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 (setq new-rows-numbered (y-or-n-p "Rows numbered? "))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 (message "Working...")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 (array-update-buffer-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 (let* ((main-buffer (buffer-name (current-buffer)))
25428
4caa1d53d0e4 (array-reconfigure-rows): Use generate-new-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 25226
diff changeset
663 (temp-buffer (generate-new-buffer " *Array*"))
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
664 (temp-max-row array-max-row)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
665 (temp-max-column array-max-column)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
666 (old-rows-numbered array-rows-numbered)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
667 (old-columns-per-line array-columns-per-line)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
668 (old-lines-per-row array-lines-per-row)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
669 (old-field-width array-field-width)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
670 (old-line-length array-line-length)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 (this-row 1))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 (array-update-array-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 ;; Do the cutting in a temporary buffer.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674 (copy-to-buffer temp-buffer (point-min) (point-max))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 (set-buffer temp-buffer)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676 (goto-char (point-min))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 (while (<= this-row temp-max-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 ;; Deal with row number.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 (cond
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 ((or (and old-rows-numbered new-rows-numbered)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 (and (not old-rows-numbered) (not new-rows-numbered)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 ;; Nothing is changed.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 ())
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 ((and old-rows-numbered (not new-rows-numbered))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 ;; Delete the row number.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 (kill-line 1))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 ;; Add the row number.
41567
37ca208c68f0 (array-reconfigure-rows): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 38412
diff changeset
689 (insert (format "%d:\n" this-row))))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 ;; Deal with the array columns in this row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 (cond
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 ((= old-columns-per-line new-columns-per-line)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 ;; Nothing is changed. Go to the next row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 (forward-line (- old-lines-per-row (if old-rows-numbered 1 0))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 (t
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 ;; First expand the row. Then cut it up into new pieces.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 (let ((newlines-to-be-removed
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 (floor (1- temp-max-column) old-columns-per-line))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 (newlines-removed 0)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 (newlines-to-be-added
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 (floor (1- temp-max-column) new-columns-per-line))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 (newlines-added 0))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 (while (< newlines-removed newlines-to-be-removed)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 (move-to-column-untabify
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 (* (1+ newlines-removed) old-line-length))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 (kill-line 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 (setq newlines-removed (1+ newlines-removed)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 (beginning-of-line)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 (while (< newlines-added newlines-to-be-added)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 (move-to-column-untabify (* old-field-width new-columns-per-line))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 (newline)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 (setq newlines-added (1+ newlines-added)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 (forward-line 1))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 (setq this-row (1+ this-row)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 (let ((inhibit-quit t))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 (set-buffer main-buffer)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 (erase-buffer)
64429
dd1d759e63db (array-mode, array-reconfigure-rows, untabify-backward): Fix typos in
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
718 (insert-buffer-substring temp-buffer)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 ;; Update local variables.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
720 (setq array-columns-per-line new-columns-per-line)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
721 (setq array-rows-numbered new-rows-numbered)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
722 (setq array-line-length (* old-field-width new-columns-per-line))
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
723 (setq array-lines-per-row
4514
e64f012944e0 (abs, ceiling, floor): Remove, since they now redefine
Paul Eggert <eggert@twinsun.com>
parents: 2307
diff changeset
724 (+ (floor (1- temp-max-column) new-columns-per-line)
e64f012944e0 (abs, ceiling, floor): Remove, since they now redefine
Paul Eggert <eggert@twinsun.com>
parents: 2307
diff changeset
725 (if new-rows-numbered 2 1)))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 (array-goto-cell (or array-row 1) (or array-column 1)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 (kill-buffer temp-buffer))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 (message "Working...done"))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 (defun array-expand-rows ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 "Expand the rows so each fits on one line and remove row numbers."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 (interactive)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
733 (array-reconfigure-rows array-max-column ?n))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 ;;; Utilities.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 (defun limit-index (index limit)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 (cond ((< index 1) 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 ((> index limit) limit)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 (t index)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 (defun xor (pred1 pred2)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
745 "Return the logical exclusive or of predicates PRED1 and PRED2."
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 (and (or pred1 pred2)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 (not (and pred1 pred2))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 (defun current-line ()
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
750 "Return the current buffer line at point. The first line is 0."
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 (beginning-of-line)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 (count-lines (point-min) (point))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 (defun move-to-column-untabify (column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 "Move to COLUMN on the current line, untabifying if necessary.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 Return COLUMN."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 (or (and (= column (move-to-column column))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 ;; There is a tab in the way.
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
761 (if array-respect-tabs
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
762 (error "There is a TAB character in the way")
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 (progn
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 (untabify-backward)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 (move-to-column column)))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 (defun untabify-backward ()
64429
dd1d759e63db (array-mode, array-reconfigure-rows, untabify-backward): Fix typos in
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
768 "Untabify the preceding TAB."
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 (save-excursion
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 (let ((start (point)))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 (backward-char 1)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 (untabify (point) start))))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 ;;; Array mode.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
778 (defvar array-mode-map nil
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 "Keymap used in array mode.")
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 (if array-mode-map
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 (setq array-mode-map (make-keymap))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 ;; Bind keys.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 (define-key array-mode-map "\M-ad" 'array-display-local-variables)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 (define-key array-mode-map "\M-am" 'array-make-template)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 (define-key array-mode-map "\M-ae" 'array-expand-rows)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 (define-key array-mode-map "\M-ar" 'array-reconfigure-rows)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 (define-key array-mode-map "\M-a=" 'array-what-position)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 (define-key array-mode-map "\M-ag" 'array-goto-cell)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 (define-key array-mode-map "\M-af" 'array-fill-rectangle)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 (define-key array-mode-map "\C-n" 'array-next-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 (define-key array-mode-map "\C-p" 'array-previous-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794 (define-key array-mode-map "\C-f" 'array-forward-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795 (define-key array-mode-map "\C-b" 'array-backward-column)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 (define-key array-mode-map "\M-n" 'array-copy-down)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 (define-key array-mode-map "\M-p" 'array-copy-up)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 (define-key array-mode-map "\M-f" 'array-copy-forward)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 (define-key array-mode-map "\M-b" 'array-copy-backward)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 (define-key array-mode-map "\M-\C-n" 'array-copy-row-down)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 (define-key array-mode-map "\M-\C-p" 'array-copy-row-up)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 (define-key array-mode-map "\M-\C-f" 'array-copy-column-forward)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 (define-key array-mode-map "\M-\C-b" 'array-copy-column-backward))
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 (put 'array-mode 'mode-class 'special)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806
21631
e9650ae37732 (array-mode): Add autoload cookie.
Dave Love <fx@gnu.org>
parents: 14338
diff changeset
807 ;;;###autoload
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 (defun array-mode ()
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 "Major mode for editing arrays.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 Array mode is a specialized mode for editing arrays. An array is
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 considered to be a two-dimensional set of strings. The strings are
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 NOT recognized as integers or real numbers.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
815 The array MUST reside at the top of the buffer.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 TABs are not respected, and may be converted into spaces at any time.
64429
dd1d759e63db (array-mode, array-reconfigure-rows, untabify-backward): Fix typos in
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
818 Setting the variable `array-respect-tabs' to non-nil will prevent TAB conversion,
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 but will cause many functions to give errors if they encounter one.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 Upon entering array mode, you will be prompted for the values of
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 several variables. Others will be calculated based on the values you
42704
6d7f6edfdb45 Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 41567
diff changeset
823 supply. These variables are all local to the buffer. Other buffer
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 in array mode may have different values assigned to the variables.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 The variables are:
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 Variables you assign:
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
828 array-max-row: The number of rows in the array.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
829 array-max-column: The number of columns in the array.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
830 array-columns-per-line: The number of columns in the array per line of buffer.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
831 array-field-width: The width of each field, in characters.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
832 array-rows-numbered: A logical variable describing whether to ignore
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 row numbers in the buffer.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 Variables which are calculated:
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
836 array-line-length: The number of characters in a buffer line.
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
837 array-lines-per-row: The number of buffer lines used to display each row.
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 The following commands are available (an asterisk indicates it may
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 take a numeric prefix argument):
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 * \\<array-mode-map>\\[array-forward-column] Move forward one column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 * \\[array-backward-column] Move backward one column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 * \\[array-next-row] Move down one row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 * \\[array-previous-row] Move up one row.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 * \\[array-copy-forward] Copy the current field into the column to the right.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 * \\[array-copy-backward] Copy the current field into the column to the left.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 * \\[array-copy-down] Copy the current field into the row below.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 * \\[array-copy-up] Copy the current field into the row above.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 * \\[array-copy-column-forward] Copy the current column into the column to the right.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 * \\[array-copy-column-backward] Copy the current column into the column to the left.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 * \\[array-copy-row-down] Copy the current row into the row below.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 * \\[array-copy-row-up] Copy the current row into the row above.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 \\[array-fill-rectangle] Copy the field at mark into every cell with row and column
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 between that of point and mark.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 \\[array-what-position] Display the current array row and column.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 \\[array-goto-cell] Go to a particular array cell.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 \\[array-make-template] Make a template for a new array.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 \\[array-reconfigure-rows] Reconfigure the array.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 \\[array-expand-rows] Expand the array (remove row numbers and
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 newlines inside rows)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 \\[array-display-local-variables] Display the current values of local variables.
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 Entering array mode calls the function `array-mode-hook'."
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 (interactive)
62715
d07ea6e0706b (array-mode): Use kill-all-local-variables and run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 62458
diff changeset
873 (kill-all-local-variables)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
874 (make-local-variable 'array-buffer-line)
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
875 (make-local-variable 'array-buffer-column)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 (make-local-variable 'array-row)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 (make-local-variable 'array-column)
27227
10ee0084db53 Assorted cleanups for compiler warnings, doc strings, `array-' prefix
Dave Love <fx@gnu.org>
parents: 25428
diff changeset
878 (make-local-variable 'array-copy-string)
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
879 (set (make-local-variable 'array-respect-tabs) nil)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
880 (set (make-local-variable 'array-max-row)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
881 (read-number "Number of array rows: "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
882 (set (make-local-variable 'array-max-column)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
883 (read-number "Number of array columns: "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
884 (set (make-local-variable 'array-columns-per-line)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
885 (read-number "Array columns per line: "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
886 (set (make-local-variable 'array-field-width)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
887 (read-number "Field width: "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
888 (set (make-local-variable 'array-rows-numbered)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
889 (y-or-n-p "Rows numbered? "))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
890 (set (make-local-variable 'array-line-length)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
891 (* array-field-width array-columns-per-line))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
892 (set (make-local-variable 'array-lines-per-row)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
893 (+ (floor (1- array-max-column) array-columns-per-line)
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
894 (if array-rows-numbered 2 1)))
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
895 (message "")
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 (setq major-mode 'array-mode)
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897 (setq mode-name "Array")
11591
5f3aa9df448e (array-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 4514
diff changeset
898 (force-mode-line-update)
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
899 (set (make-local-variable 'truncate-lines) t)
13603
cb0d1b1782f4 (array-mode): Set overwrite-mode to overwrite-mode-textual.
Richard M. Stallman <rms@gnu.org>
parents: 11591
diff changeset
900 (setq overwrite-mode 'overwrite-mode-textual)
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 (use-local-map array-mode-map)
62715
d07ea6e0706b (array-mode): Use kill-all-local-variables and run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 62458
diff changeset
902 (run-mode-hooks 'array-mode-hook))
180
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904
289ee39b1637 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905
25226
0ff7a16ab8f9 Provide `array'.
Karl Heuer <kwzh@gnu.org>
parents: 21631
diff changeset
906 (provide 'array)
0ff7a16ab8f9 Provide `array'.
Karl Heuer <kwzh@gnu.org>
parents: 21631
diff changeset
907
68249
de87ce42a058 Move defvars out of eval-when-compile.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64762
diff changeset
908 ;; arch-tag: 0086605d-79fe-4a1a-992a-456417261f80
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 180
diff changeset
909 ;;; array.el ends here