annotate lisp/textmodes/two-column.el @ 26370:5f52cc1417ab

Use block statements in cases and declare v1 and v2 locally there. Rearrange case statements so that thos most frequently executed come first. Avoid goto's in frequently executed cases.
author Gerd Moellmann <gerd@gnu.org>
date Sun, 07 Nov 1999 13:06:59 +0000
parents 8d2bb5d1416a
children 9f63b158eb6b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; two-column.el --- minor mode for editing of two-column text
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
23869
8d2bb5d1416a Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 22303
diff changeset
5 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
6 ;; Adapted-By: ESR, Daniel Pfeiffer
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
8 ;; Esperanto: English:
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
10 ;; ^Ci dosiero estas ero de GNU Emacs. This file is part of GNU Emacs.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
12 ;; GNU Emacs estas libera programaro; GNU Emacs is free software; you can
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
13 ;; vi povas disdoni ^gin kaj/a^u modifi redistribute it and/or modify it
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
14 ;; ^gin sub la kondi^coj de la GNU under the terms of the GNU General
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
15 ;; ^Generala Publika Licenco kiel pub- Public License as published by the
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
16 ;; likigita far la Liberprogramara Fon- Free Software Foundation; either
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
17 ;; da^jo; a^u eldono 2a, a^u (la^u via version 2, or (at your option) any
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
18 ;; elekto) ajna posta eldono. later version.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
20 ;; GNU Emacs estas disdonata en la GNU Emacs is distributed in the hope
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
21 ;; espero ke ^gi estos utila, sed SEN that it will be useful, but WITHOUT
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
22 ;; IA GARANTIO; sen e^c la implicita ANY WARRANTY; without even the
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
23 ;; garantio de VENDEBLECO a^u PRETECO implied warranty of MERCHANTABILITY
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
24 ;; POR DETERMINITA CELO. Vidu la GNU or FITNESS FOR A PARTICULAR PURPOSE.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
25 ;; ^Generala Publika Licenco por plenaj See the GNU General Public License
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
26 ;; detaloj. for more details.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
27
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
28 ;; Vi devus ricevinti kopion de la GNU You should have received a copy of
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
29 ;; ^Generala Publika Licenco kune kun the GNU General Public License along
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
30 ;; GNU Emacs; vidu la dosieron COPYING. with GNU Emacs; see the file
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
31 ;; Alikaze skribu al la COPYING. If not, write to the
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
33 ;; Free Software Foundation, 59 Temple Place - Suite 330
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
34 ;; Boston, MA 02111-1307, USA.
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
35
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
36
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
37 ;;; Komentario: Commentary:
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
39 ;; Tiu programaro ebligas vin redakti This package gives you the ability
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
40 ;; dukolumnan tekston. to edit text in a two-column format.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
41
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
43 ;; Vi havas tri eblecojn por eki tiun You have three ways to start up this
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
44 ;; mal^cefan modalon. ^Ciu donas al vi minor mode. Each gives you a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
45 ;; horizontale disigatan fenestron, si- horizontally split window similar to
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
46 ;; milan al fina apareco de via teksto: the final outcome of your text:
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
49 ;; f2 2 asocias novan bufron nomatan associates a new buffer called
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
50 ;; C-x 6 2 same, sed kun 2C/ anta^u. the same, but with 2C/
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
51 ;; prepended.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
53 ;; f2 b asocias alian bufron. Vi povas associates another buffer.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
54 ;; C-x 6 b anka^u asocii dataron, se vi This can be used to associate a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
55 ;; ^jus anta^ue faris C-x C-f. file if you just did C-x C-f.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
57 ;; f2 s disigas jam dukolumnan tekston splits a two-column text into
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
58 ;; C-x 6 s en du bufroj ekde la nuna two buffers from the current
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
59 ;; linio, kaj je la nuna kolumno. line and at the current column.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
60 ;; La anta^uaj signoj (ofte The preceding characters (often
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
61 ;; tabeligilo a^u |) estas la tab or |) are the column
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
62 ;; kolumna disiganto. Linioj kiuj separator. Lines that don't
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
63 ;; ne enhavas ilin ne estas have them won't be separated.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
64 ;; disigitaj. Kiel la kvara kaj Like the fourth and fifth line
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
65 ;; la kvina linio se vi disigas if you split this file from
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
66 ;; ^ci dataron ekde la unua angla the first english word.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
67 ;; vorto.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
69 ;; Se vi volas meti longajn liniojn If you include long lines, i.e which
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
70 ;; (ekz. programerojn) en la kunigotan will span both columns (eg. source
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
71 ;; tekston, ili devas esti en la code), they should be in what will
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
72 ;; estonte unua kolumno. La alia devas be the first column, with the
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
73 ;; havi vakajn linion apud ili. associated buffer having empty lines
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
74 ;; next to them.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
75
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
76 ;; Averto: en Emacs kiam vi ^san^gas la Attention: in Emacs when you change
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
77 ;; ^cefan modalon, la mal^cefaj modaloj the major mode, the minor modes are
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
78 ;; estas anka^u elmemorigitaj. Tiu- also purged from memory. In that
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
79 ;; okaze vi devas religi la du bufrojn case you must reassociate the two
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
80 ;; per iu C-x 6-ordono, ekz. C-x 6 b. buffers with any C-x 6-command, e.g.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
81 ;; C-x 6 b.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
82
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
83 ;; Kiam vi estos kontenta de la When you have edited both buffers to
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
84 ;; rezulto, vi kunmetos la du kolumnojn your content, you merge them with
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
85 ;; per C-x 6 1. Se vi poste vidas C-x 6 1. If you then see a problem,
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
86 ;; problemon, vi neniigu la kunmeton you undo the merge with C-x u and
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
87 ;; per C-x u kaj plue modifu la du continue to edit the two buffers.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
88 ;; bufrojn. Kiam vi ne plu volas tajpi When you no longer want to edit in
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
89 ;; dukolumne, vi eliru el la mal^cefa two columns, you turn off the minor
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
90 ;; modalo per C-x 6 d. mode with C-x 6 d.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
91
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
92
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
93 ;; Aldone al dukolumna redaktado, ek- In addition to two-column editing of
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
94 ;; zemple por skribi dulingvan tekston text, for example for writing a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
95 ;; flank-al-flanke kiel ^ci tiu, aliaj bilingual text side-by-side as shown
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
96 ;; interesaj uzoj trovitas por tiu mal- here, other interesting uses have
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
97 ;; ^cefa modalo: been found for this minor mode:
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
98
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
99 ;; Vi povas disigi la kolumnojn per {+} You can separate the columns with
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
100 ;; ajna pla^ca ^ceno starigante {+} any string that pleases you, by
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
101 ;; `2C-separator'. Ekzemple "{+} " {+} setting `2C-separator'. For example
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
102 ;; por amuzi^gi. f2 s a^u C-x 6 s {+} "{+} " if you'd like to have fun.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
103 ;; traktas tiujn kun prefiksa {+} f2 s or C-x 6 s handles these with a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
104 ;; argumento kiu signifas la longon {+} prefix argument that means the
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
105 ;; de tia ^ceno. {+} desired length of such a string.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
106
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
107
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
108 ;; Programistoj eble ^satus la eblecon Programmers might like the ability
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
109 ;; forspliti la komentarian kolumnon de to split off the comment column of a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
110 ;; dosiero kiel la sekvanta. Vi povas file that looks like the following.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
111 ;; rearan^gigi la paragrafon. La pro- You can fill-paragraph the comment.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
112 ;; blemo estas ke koda^jo tuj lar- The problem is, code quickly gets
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
113 ;; ^gi^gas, tiel ke vi bezonas pli rather wide, so you need to use a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
114 ;; mallar^gan komentarian kolumnon. narrower comment column. Code lines
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
115 ;; Koda^jaj linioj tra `comment-column' that reach beyond `comment-column'
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
116 ;; ne problemas, krom ke vi ne vidos are no problem, except that you
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
117 ;; iliajn finojn dum redaktado. won't see their end during editing.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
118
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
119
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
120 ;; BEGIN -- This is just some meaningless
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
121 ;; FOR i IN 1..10 LOOP -- code in Ada, that runs foobar
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
122 ;; foobar( i ); -- once for each argument from one
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
123 ;; END LOOP; -- to ten, and then we're already
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
124 ;; END; -- through with it.
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
125
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
126 ;; Pli bone ankora^u, vi povas pozici- Better yet, you can put the point
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
127 ;; i^gi anta^u "This", tajpi M-3 f2 s before "This", type M-3 f2 s
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
128 ;; kiu igas "-- " la separigilon inter which makes "-- " the separator
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
129 ;; senkomentaria Ada bufro kaj nur- between a no-comments Ada buffer,
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
130 ;; teksta komentaria bufro. Kiam vi and a plain text comment buffer.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
131 ;; denove kuni^gos ilin, ^ciu nevaka When you put them back together,
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
132 ;; linio de l' dua kolumno denove every non-empty line of the 2nd
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
133 ;; anta^uhavos "-- ". column will again be preceded by
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
134 ;; "-- ".
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
135
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
136
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
137 ;;; Code:
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
138
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
139
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
140 ;; Lucid patch
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
141 (or (fboundp 'frame-width)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
142 (fset 'frame-width 'screen-width))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
143
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
144
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
145 ;;;;; Set up keymap ;;;;;
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
146
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
147 (defvar 2C-mode-map
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
148 (let ((map (make-sparse-keymap)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
149 (define-key map "2" '2C-two-columns)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
150 (define-key map [f2] '2C-two-columns)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
151 (define-key map "b" '2C-associate-buffer)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
152 (define-key map "s" '2C-split)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
153 map)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
154 "Keymap for commands for setting up two-column mode.")
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
155
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
156
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
157
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
158 ;;;###autoload (autoload '2C-command "two-column" () t 'keymap)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
159 (fset '2C-command 2C-mode-map)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
160
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
161 ;; This one is for historical reasons and simple keyboards, it is not
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
162 ;; at all mnemonic. All usual sequences containing 2 were used, and
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
163 ;; f2 could not be set up in a standard way under Emacs 18.
22303
d6cc394c34b4 Bind f2 and C-x 6 prefixes
Karl Heuer <kwzh@gnu.org>
parents: 17977
diff changeset
164 ;;;###autoload (global-set-key "\C-x6" '2C-command)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
165
22303
d6cc394c34b4 Bind f2 and C-x 6 prefixes
Karl Heuer <kwzh@gnu.org>
parents: 17977
diff changeset
166 ;;;###autoload (global-set-key [f2] '2C-command)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
167
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
168
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
169 (defvar 2C-minor-mode-map
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
170 (let ((map (make-sparse-keymap)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
171 (define-key map "1" '2C-merge)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
172 (define-key map "d" '2C-dissociate)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
173 (define-key map "o" '2C-associated-buffer)
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
174 (define-key map "\^m" '2C-newline)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
175 (define-key map "|" '2C-toggle-autoscroll)
13388
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
176 (define-key map "{" '2C-shrink-window-horizontally)
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
177 (define-key map "}" '2C-enlarge-window-horizontally)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
178 map)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
179 "Keymap for commands for use in two-column mode.")
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
180
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
181
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
182 (setq minor-mode-map-alist
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
183 (cons (cons '2C-mode
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
184 (let ((map (make-sparse-keymap)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
185 (substitute-key-definition '2C-command 2C-minor-mode-map
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
186 map (current-global-map))
13388
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
187 (substitute-key-definition 'enlarge-window-horizontally
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
188 '2C-enlarge-window-horizontally
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
189 map (current-global-map))
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
190 (substitute-key-definition 'shrink-window-horizontally
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
191 '2C-shrink-window-horizontally
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
192 map (current-global-map))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
193 map))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
194 minor-mode-map-alist))
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
195
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
196 ;;;;; variable declarations ;;;;;
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
197
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
198 (defgroup two-column nil
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
199 "Minor mode for editing of two-column text"
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
200 :prefix "2C-"
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
201 :group 'frames)
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
202
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
203
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
204 ;; Markers seem to be the only buffer-id not affected by renaming a buffer.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
205 ;; This nevertheless loses when a buffer is killed. The variable-name is
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
206 ;; required by `describe-mode'.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
207 (defvar 2C-mode nil
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
208 "Marker to the associated buffer, if non-nil.")
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
209 (make-variable-buffer-local '2C-mode)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
210 (put '2C-mode 'permanent-local t)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
211
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
212
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
213
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
214 (setq minor-mode-alist (cons '(2C-mode " 2C") minor-mode-alist))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
215
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
216
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
217
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
218 ;; rearranged, so that the pertinent info will show in 40 columns
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
219 (defcustom 2C-mode-line-format
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
220 '("-%*- %15b --" (-3 . "%p") "--%[(" mode-name
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
221 minor-mode-alist "%n" mode-line-process ")%]%-")
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
222 "*Value of mode-line-format for a buffer in two-column minor mode."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
223 :type 'sexp
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
224 :group 'two-column)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
225
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
226
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
227 (defcustom 2C-other-buffer-hook 'text-mode
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
228 "*Hook run in new buffer when it is associated with current one."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
229 :type 'function
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
230 :group 'two-column)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
231
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
232
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
233 (defcustom 2C-separator ""
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
234 "*A string inserted between the two columns when merging.
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
235 This gets set locally by \\[2C-split]."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
236 :type 'string
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
237 :group 'two-column)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
238 (put '2C-separator 'permanent-local t)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
239
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
240
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
241
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
242 (defcustom 2C-window-width 40
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
243 "*The width of the first column. (Must be at least `window-min-width')
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
244 This value is local for every buffer that sets it."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
245 :type 'integer
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
246 :group 'two-column)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
247 (make-variable-buffer-local '2C-window-width)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
248 (put '2C-window-width 'permanent-local t)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
249
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
250
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
251
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
252 (defcustom 2C-beyond-fill-column 4
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
253 "*Base for calculating `fill-column' for a buffer in two-column minor mode.
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
254 The value of `fill-column' becomes `2C-window-width' for this buffer
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
255 minus this value."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
256 :type 'integer
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
257 :group 'two-column)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
258
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
259
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
260
17430
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
261 (defcustom 2C-autoscroll t
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
262 "If non-nil, Emacs attempts to keep the two column's buffers aligned."
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
263 :type 'boolean
de68258fef5f Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16421
diff changeset
264 :group 'two-column)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
265
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
266
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
267
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
268 (defvar 2C-autoscroll-start nil)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
269 (make-variable-buffer-local '2C-autoscroll-start)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
270
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
271 ;;;;; base functions ;;;;;
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
272
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
273 ;; The access method for the other buffer. This tries to remedy against
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
274 ;; lost local variables and lost buffers.
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
275 (defun 2C-other (&optional req)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
276 (or (if 2C-mode
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
277 (or (prog1
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
278 (marker-buffer 2C-mode)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
279 (setq mode-line-format 2C-mode-line-format))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
280 ;; The associated buffer somehow got killed.
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
281 (progn
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
282 ;; The other variables may later be useful if the user
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
283 ;; reestablishes the association.
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
284 (kill-local-variable '2C-mode)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
285 (kill-local-variable 'mode-line-format)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
286 nil)))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
287 (if req (error "You must first set two-column minor mode."))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
288
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
289
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
290
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
291 ;; function for setting up two-column minor mode in a buffer associated
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
292 ;; with the buffer pointed to by the marker other.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
293 (defun 2C-mode (other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
294 "Minor mode for independently editing two columns.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
295 This is set up for two associated buffers by the three commands bound
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
296 to \\[2C-two-columns] , \\[2C-associate-buffer] and \\[2C-split].
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
297 Turning on two-column mode calls the value of the variable `2C-mode-hook',
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
298 if that value is non-nil.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
299
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
300 These buffers can be edited separately, for example with `fill-paragraph'.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
301 If you want to disable parallel scrolling temporarily, use \\[2C-toggle-autoscroll] .
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
302
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
303 If you include long lines, i.e which will span both columns (eg.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
304 source code), they should be in what will be the first column, with
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
305 the associated buffer having empty lines next to them.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
306
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
307 Potential uses are writing bilingual texts, or editing the comments of a
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
308 source code. See the file lisp/two-column.el for detailed examples.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
309
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
310 You have the following commands at your disposal:
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
311
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
312 \\[2C-two-columns] Rearrange screen with current buffer first
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
313 \\[2C-associate-buffer] Reassociate buffer after changing major mode
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
314 \\[shrink-window-horizontally], \\[enlarge-window-horizontally] Shrink, enlarge current column
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
315 \\[2C-associated-buffer] Switch to associated buffer at same point
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
316 \\[2C-newline] Insert newline(s) in both buffers at same point
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
317 \\[2C-merge] Merge both buffers
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
318 \\[2C-dissociate] Dissociate the two buffers
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
319
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
320 These keybindings can be customized in your ~/.emacs by `2C-mode-map',
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
321 `2C-minor-mode-map' and by binding `2C-command' to some prefix.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
322
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
323 The appearance of the screen can be customized by the variables
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
324 `2C-window-width', `2C-beyond-fill-column', `2C-mode-line-format' and
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
325 `truncate-partial-width-windows'."
12934
7fd541abf2af (2C-mode): Use make-local-hook and add-hook.
Richard M. Stallman <rms@gnu.org>
parents: 12739
diff changeset
326 (make-local-hook 'post-command-hook)
7fd541abf2af (2C-mode): Use make-local-hook and add-hook.
Richard M. Stallman <rms@gnu.org>
parents: 12739
diff changeset
327 (add-hook 'post-command-hook '2C-autoscroll nil t)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
328 (setq fill-column (- 2C-window-width
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
329 2C-beyond-fill-column)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
330 mode-line-format 2C-mode-line-format
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
331 2C-mode other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
332 (run-hooks '2C-mode-hook))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
333
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
334
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
335
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
336 ;;;###autoload
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
337 (defun 2C-two-columns (&optional buffer)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
338 "Split current window vertically for two-column editing.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
339 When called the first time, associates a buffer with the current
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
340 buffer in two-column minor mode (see \\[describe-mode] ).
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
341 Runs `2C-other-buffer-hook' in the new buffer.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
342 When called again, restores the screen layout with the current buffer
16421
65d4b4b2e954 (2C-two-columns): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 13388
diff changeset
343 first and the associated buffer to its right."
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
344 (interactive "P")
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
345 ;; first go to full width, so that we can certainly split into two windows
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
346 (if (< (window-width) (frame-width))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
347 (enlarge-window 99999 t))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
348 (split-window-horizontally
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
349 (max window-min-width (min 2C-window-width
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
350 (- (frame-width) window-min-width))))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
351 (if (2C-other)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
352 (progn
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
353 (other-window 1)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
354 (switch-to-buffer (2C-other))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
355 (other-window -1)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
356 (if 2C-autoscroll
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
357 (2C-toggle-autoscroll t)))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
358
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
359 (2C-mode (prog1 (point-marker)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
360 (other-window 1)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
361 (switch-to-buffer
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
362 (or buffer
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
363 (generate-new-buffer (concat "2C/" (buffer-name)))))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
364 (or buffer
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
365 (run-hooks '2C-other-buffer-hook))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
366
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
367 (2C-mode (prog1 (point-marker)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
368 (other-window -1)))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
369
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
370
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
371
1904
cca15d76f3e5 * two-column.el: Add autoloads for the functions defined in
Jim Blandy <jimb@redhat.com>
parents: 1245
diff changeset
372 ;;;###autoload
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
373 (defun 2C-associate-buffer ()
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
374 "Associate another buffer with this one in two-column minor mode.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
375 Can also be used to associate a just previously visited file, by
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
376 accepting the proposed default buffer.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
377
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
378 \(See \\[describe-mode] .)"
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
379 (interactive)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
380 (let ((b1 (current-buffer))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
381 (b2 (or (2C-other)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
382 (read-buffer "Associate buffer: " (other-buffer)))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
383 (save-excursion
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
384 (setq 2C-mode nil)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
385 (set-buffer b2)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
386 (and (2C-other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
387 (not (eq b1 (2C-other)))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
388 (error "Buffer already associated with buffer `%s'."
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
389 (buffer-name (2C-other))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
390 (setq b1 (and (assq '2C-window-width (buffer-local-variables))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
391 2C-window-width)))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
392 ; if other buffer has a local width, adjust here too
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
393 (if b1 (setq 2C-window-width (- (frame-width) b1)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
394 (2C-two-columns b2)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
395
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
396
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
397
1904
cca15d76f3e5 * two-column.el: Add autoloads for the functions defined in
Jim Blandy <jimb@redhat.com>
parents: 1245
diff changeset
398 ;;;###autoload
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
399 (defun 2C-split (arg)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
400 "Split a two-column text at point, into two buffers in two-column minor mode.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
401 Point becomes the local value of `2C-window-width'. Only lines that
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
402 have the ARG same preceding characters at that column get split. The
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
403 ARG preceding characters without any leading whitespace become the local
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
404 value for `2C-separator'. This way lines that continue across both
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
405 columns remain untouched in the first buffer.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
406
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
407 This function can be used with a prototype line, to set up things. You
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
408 write the first line of each column and then split that line. E.g.:
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
409
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
410 First column's text sSs Second column's text
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
411 \\___/\\
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
412 / \\
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
413 5 character Separator You type M-5 \\[2C-split] with the point here.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
414
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
415 \(See \\[describe-mode] .)"
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
416 (interactive "*p")
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
417 (and (2C-other)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
418 (if (y-or-n-p (concat "Overwrite associated buffer `"
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
419 (buffer-name (2C-other))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
420 "'? "))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
421 (save-excursion
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
422 (set-buffer (2C-other))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
423 (erase-buffer))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
424 (signal 'quit nil)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
425 (let ((point (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
426 ; make next-line always come back to same column
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
427 (goal-column (current-column))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
428 ; a counter for empty lines in other buffer
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
429 (n (1- (count-lines (point-min) (point))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
430 chars other)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
431 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
432 (backward-char arg)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
433 (setq chars (buffer-substring (point) point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
434 (skip-chars-forward " \t" point)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
435 (make-local-variable '2C-separator)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
436 (setq 2C-separator (buffer-substring (point) point)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
437 2C-window-width (current-column)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
438 (2C-two-columns)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
439 (setq other (2C-other))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
440 ; now we're ready to actually split
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
441 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
442 (while (not (eobp))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
443 (if (not (and (= (current-column) goal-column)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
444 (string= chars
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
445 (buffer-substring (point)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
446 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
447 (backward-char arg)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
448 (point))))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
449 (setq n (1+ n))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
450 (setq point (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
451 (backward-char arg)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
452 (skip-chars-backward " \t")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
453 (delete-region point (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
454 (setq point (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
455 (insert-char ?\n n)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
456 (append-to-buffer other point (progn (end-of-line)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
457 (if (eobp)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
458 (point)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
459 (1+ (point)))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
460 (delete-region point (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
461 (setq n 0))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
462 (next-line 1)))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
463
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
464
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
465
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
466
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
467 (defun 2C-dissociate ()
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
468 "Turn off two-column minor mode in current and associated buffer.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
469 If the associated buffer is unmodified and empty, it is killed."
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
470 (interactive)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
471 (let ((buffer (current-buffer)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
472 (save-excursion
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
473 (and (2C-other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
474 (set-buffer (2C-other))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
475 (or (not (2C-other))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
476 (eq buffer (2C-other)))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
477 (if (and (not (buffer-modified-p))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
478 (eobp) (bobp))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
479 (kill-buffer nil)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
480 (kill-local-variable '2C-mode)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
481 (kill-local-variable '2C-window-width)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
482 (kill-local-variable '2C-separator)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
483 (kill-local-variable 'mode-line-format)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
484 (kill-local-variable 'fill-column))))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
485 (kill-local-variable '2C-mode)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
486 (kill-local-variable '2C-window-width)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
487 (kill-local-variable '2C-separator)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
488 (kill-local-variable 'mode-line-format)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
489 (kill-local-variable 'fill-column)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
490
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
491
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
492
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
493 ;; this doesn't use yank-rectangle, so that the first column can
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
494 ;; contain long lines
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
495 (defun 2C-merge ()
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
496 "Merges the associated buffer with the current buffer.
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
497 They get merged at the column, which is the value of `2C-window-width',
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
498 i.e. usually at the vertical window separator. This separator gets
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
499 replaced with white space. Beyond that the value of `2C-separator' gets
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
500 inserted on merged lines. The two columns are thus pasted side by side,
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
501 in a single text. If the other buffer is not displayed to the left of
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
502 this one, then this one becomes the left column.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
503
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
504 If you want `2C-separator' on empty lines in the second column,
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
505 you should put just one space in them. In the final result, you can strip
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
506 off trailing spaces with \\[beginning-of-buffer] \\[replace-regexp] [ SPC TAB ] + $ RET RET"
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
507 (interactive)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
508 (and (> (car (window-edges)) 0) ; not touching left edge of screen
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
509 (eq (window-buffer (previous-window))
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
510 (2C-other t))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
511 (other-window -1))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
512 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
513 (let ((b1 (current-buffer))
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
514 (b2 (2C-other t))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
515 string)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
516 (goto-char (point-min))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
517 (set-buffer b2)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
518 (goto-char (point-min))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
519 (while (not (eobp))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
520 (setq string (buffer-substring (point)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
521 (progn (end-of-line) (point))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
522 (or (eobp)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
523 (forward-char)) ; next line
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
524 (set-buffer b1)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
525 (if (string= string "")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
526 ()
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
527 (end-of-line)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
528 (indent-to-column 2C-window-width)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
529 (insert 2C-separator string))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
530 (next-line 1) ; add one if necessary
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
531 (set-buffer b2))))
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
532 (if (< (window-width) (frame-width))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
533 (enlarge-window 99999 t)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
534
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
535 ;;;;; utility functions ;;;;;
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
536
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
537 (defun 2C-associated-buffer ()
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
538 "Switch to associated buffer."
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
539 (interactive)
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
540 (let ((line (+ (count-lines (point-min) (point))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
541 (if (bolp) 1 0)))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
542 (col (if (eolp) (if (bolp) 0) (current-column))))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
543 (if (get-buffer-window (2C-other t))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
544 (select-window (get-buffer-window (2C-other)))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
545 (switch-to-buffer (2C-other)))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
546 (newline (goto-line line))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
547 (if col
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
548 (move-to-column col)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
549 (end-of-line 1))))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
550
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
551 (defun 2C-newline (arg)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
552 "Insert ARG newlines in both buffers."
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
553 (interactive "P")
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
554 (save-window-excursion
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
555 (2C-associated-buffer)
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
556 (newline arg))
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
557 (newline arg))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
558
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
559 (defun 2C-toggle-autoscroll (arg)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
560 "Toggle autoscrolling, or set it iff prefix ARG is non-nil and positive.
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
561 When autoscrolling is turned on, this also realigns the two buffers."
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
562 (interactive "P")
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
563 ;(sit-for 0)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
564 (setq 2C-autoscroll-start (window-start))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
565 (if (setq 2C-autoscroll (if arg
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
566 (>= (prefix-numeric-value arg) 0)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
567 (not 2C-autoscroll)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
568 (select-window
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
569 (prog1 (selected-window)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
570 (message "Autoscrolling is on.")
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
571 (setq arg (count-lines (point-min) (window-start)))
12739
ae2e8daffa31 (2C-toggle-autoscroll, 2C-autoscroll):
Karl Heuer <kwzh@gnu.org>
parents: 12506
diff changeset
572 (if (get-buffer-window (2C-other t))
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
573 (progn
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
574 (select-window (get-buffer-window (2C-other)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
575 (setq arg (- arg (count-lines (point-min) (window-start))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
576 ;; make sure that other buffer has enough lines
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
577 (save-excursion
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
578 (insert-char ?\n
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
579 (- arg (count-lines (window-start)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
580 (goto-char (point-max)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
581 -1)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
582 (scroll-up arg)))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
583 (message "Autoscrolling is off.")))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
584
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
585
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
586
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
587 (defun 2C-autoscroll ()
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
588 (if 2C-autoscroll
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
589 ;; catch a mouse scroll on non-selected scrollbar
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
590 (select-window
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
591 (prog1 (selected-window)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
592 (and (consp last-command-char)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
593 (not (eq (selected-window)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
594 (car (car (cdr last-command-char)))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
595 (select-window (car (car (cdr last-command-char)))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
596 ;; In some cases scrolling causes an error, but post-command-hook
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
597 ;; shouldn't, and should always stay in the original window
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
598 (condition-case ()
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
599 (and (or 2C-autoscroll-start (2C-toggle-autoscroll t) nil)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
600 (/= (window-start) 2C-autoscroll-start)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
601 (2C-other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
602 (get-buffer-window (2C-other))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
603 (let ((lines (count-lines (window-start)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
604 2C-autoscroll-start)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
605 (if (< (window-start) 2C-autoscroll-start)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
606 (setq lines (- lines)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
607 (setq 2C-autoscroll-start (window-start))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
608 (select-window (get-buffer-window (2C-other)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
609 ;; make sure that other buffer has enough lines
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
610 (save-excursion
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
611 (insert-char
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
612 ?\n (- lines (count-lines (window-start)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
613 (goto-char (point-max)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
614 -1)))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
615 (scroll-up lines)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
616 (setq 2C-autoscroll-start (window-start))))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
617 (error))))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
618
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
619
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
620
13388
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
621 (defun 2C-enlarge-window-horizontally (arg)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
622 "Make current window ARG columns wider."
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
623 (interactive "p")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
624 (enlarge-window arg t)
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
625 (and (2C-other)
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
626 (setq 2C-window-width (+ 2C-window-width arg))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
627 (set-buffer (2C-other))
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
628 (setq 2C-window-width (- 2C-window-width arg))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
629
13388
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
630 (defun 2C-shrink-window-horizontally (arg)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
631 "Make current window ARG columns narrower."
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
632 (interactive "p")
13388
af2bb7490ca9 (minor-mode-map-alist): Use substitute-key-definition
Karl Heuer <kwzh@gnu.org>
parents: 12934
diff changeset
633 (2C-enlarge-window-horizontally (- arg)))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
634
12506
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
635
5dc02bbeb4be Symbols renamed to be like mode-line indicator.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
636
1245
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
637 (provide 'two-column)
f8a5da3d18e8 Use frame-width instead of screen-width.
Richard M. Stallman <rms@gnu.org>
parents: 923
diff changeset
638
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
639 ;;; two-column.el ends here