annotate lisp/tabify.el @ 14570:ca1ee2b8394e

(hanoi): Don't show line and column numbers. Compute height and width of the window in the correct way, give the correct error message if the window is too small. Make rings only with numerical characters. Set default number of rings to 7 (was 3 before).
author Karl Heuer <kwzh@gnu.org>
date Fri, 16 Feb 1996 00:12:27 +0000
parents 83f275dcd93a
children dca9b4a8155e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
1 ;;; tabify.el --- tab conversion commands for Emacs
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
2
7304
cccf1cbf8944 Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 5715
diff changeset
3 ;; Copyright (C) 1985, 1994 Free Software Foundation, Inc.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
5 ;; Maintainer: FSF
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
6
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
8
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 775
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 ;; any later version.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
13
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11421
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11421
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11421
diff changeset
22 ;; Boston, MA 02111-1307, USA.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
23
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1497
diff changeset
24 ;;; Commentary:
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1497
diff changeset
25
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1497
diff changeset
26 ;; Commands to optimize spaces to tabs or expand tabs to spaces in a region
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1497
diff changeset
27 ;; (`tabify' and `untabify'). The variable tab-width does the obvious.
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1497
diff changeset
28
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
29 ;;; Code:
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
31 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
32 (defun untabify (start end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33 "Convert all tabs in region to multiple spaces, preserving columns.
1497
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
34 Called non-interactively, the region is specified by arguments
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
35 START and END, rather than by the position of point and mark.
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
36 The variable `tab-width' controls the spacing of tab stops."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
37 (interactive "r")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
38 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
39 (save-restriction
2467
a3bdf5ac2e9d (untabify): Don't really change where restriction starts.
Richard M. Stallman <rms@gnu.org>
parents: 2315
diff changeset
40 (narrow-to-region (point-min) end)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
41 (goto-char start)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
42 (while (search-forward "\t" nil t) ; faster than re-search
5715
a7f72ce7bac4 (tabify): Don't delete back before initial START.
Richard M. Stallman <rms@gnu.org>
parents: 5165
diff changeset
43 (let ((tab-beg (point))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
44 (column (current-column))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
45 (indent-tabs-mode nil))
5715
a7f72ce7bac4 (tabify): Don't delete back before initial START.
Richard M. Stallman <rms@gnu.org>
parents: 5165
diff changeset
46 (skip-chars-backward "\t" start)
a7f72ce7bac4 (tabify): Don't delete back before initial START.
Richard M. Stallman <rms@gnu.org>
parents: 5165
diff changeset
47 (delete-region tab-beg (point))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
48 (indent-to column))))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
49
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
50 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
51 (defun tabify (start end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
52 "Convert multiple spaces in region to tabs when possible.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
53 A group of spaces is partially replaced by tabs
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
54 when this can be done without changing the column they end at.
1497
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
55 Called non-interactively, the region is specified by arguments
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
56 START and END, rather than by the position of point and mark.
7117a3826501 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
57 The variable `tab-width' controls the spacing of tab stops."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
58 (interactive "r")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
59 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
60 (save-restriction
11421
c53961dfba50 (tabify): Include entire first line in narrowing.
Richard M. Stallman <rms@gnu.org>
parents: 7304
diff changeset
61 ;; Include the beginning of the line in the narrowing
c53961dfba50 (tabify): Include entire first line in narrowing.
Richard M. Stallman <rms@gnu.org>
parents: 7304
diff changeset
62 ;; since otherwise it will throw off current-column.
c53961dfba50 (tabify): Include entire first line in narrowing.
Richard M. Stallman <rms@gnu.org>
parents: 7304
diff changeset
63 (goto-char start)
c53961dfba50 (tabify): Include entire first line in narrowing.
Richard M. Stallman <rms@gnu.org>
parents: 7304
diff changeset
64 (beginning-of-line)
c53961dfba50 (tabify): Include entire first line in narrowing.
Richard M. Stallman <rms@gnu.org>
parents: 7304
diff changeset
65 (narrow-to-region (point) end)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66 (goto-char start)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
67 (while (re-search-forward "[ \t][ \t][ \t]*" nil t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
68 (let ((column (current-column))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
69 (indent-tabs-mode t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
70 (delete-region (match-beginning 0) (point))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
71 (indent-to column))))))
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
72
5165
619c0a9ddf86 Add a provide.
Richard M. Stallman <rms@gnu.org>
parents: 2467
diff changeset
73 (provide 'tabify)
619c0a9ddf86 Add a provide.
Richard M. Stallman <rms@gnu.org>
parents: 2467
diff changeset
74
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
75 ;;; tabify.el ends here