annotate src/cmds.c @ 3779:e9961fa24193

*solar.el (solar-setup, solar-ephemeris-time, sunrise-sunset): Change Universal Time (UT) to Coordinated Universal Time (UTC). (solar-time-string): Use calendar-daylight-time-offset instead of 1 hr, and use calendar-daylight-savings-switchover-time instead of midnight. Add an optional parameter to allow forcing the use of standard or daylight savings time. Fix code so it works in southern hemisphere (start of dst precedes end of dst in a calendar year) and when dst either starts or ends in a calendar year, but not both.
author Jim Blandy <jimb@redhat.com>
date Wed, 16 Jun 1993 23:12:21 +0000
parents 507f64624555
children 189b84c7dbc5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Simple built-in editing commands.
2961
e94a593c3952 Updated copyright years.
Jim Blandy <jimb@redhat.com>
parents: 2777
diff changeset
2 Copyright (C) 1985, 1993 Free Software Foundation, Inc.
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 #include "config.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include "lisp.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "commands.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "buffer.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "syntax.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 Lisp_Object Qkill_forward_chars, Qkill_backward_chars, Vblink_paren_function;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
29 /* A possible value for a buffer's overwrite-mode variable. */
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
30 Lisp_Object Qoverwrite_mode_binary;
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
31
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 DEFUN ("forward-char", Fforward_char, Sforward_char, 0, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 "Move point right ARG characters (left if ARG negative).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 On reaching end of buffer, stop and signal error.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 (n)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
39 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 XFASTINT (n) = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
2777
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
44 /* This used to just set point to point + XINT (n), and then check
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
45 to see if it was within boundaries. But now that SET_PT can
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
46 potentially do a lot of stuff (calling entering and exiting
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
47 hooks, etcetera), that's not a good approach. So we validate the
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
48 proposed position, then set point. */
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
49 {
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
50 int new_point = point + XINT (n);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
51
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
52 if (new_point < BEGV)
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
53 {
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
54 SET_PT (BEGV);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
55 Fsignal (Qbeginning_of_buffer, Qnil);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
56 }
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
57 if (new_point > ZV)
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
58 {
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
59 SET_PT (ZV);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
60 Fsignal (Qend_of_buffer, Qnil);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
61 }
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
62
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
63 SET_PT (new_point);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
64 }
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
65
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 DEFUN ("backward-char", Fbackward_char, Sbackward_char, 0, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 "Move point left ARG characters (right if ARG negative).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 On attempt to pass beginning or end of buffer, stop and signal error.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (n)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
75 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 XFASTINT (n) = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 XSETINT (n, - XINT (n));
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 return Fforward_char (n);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 DEFUN ("forward-line", Fforward_line, Sforward_line, 0, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 "Move ARG lines forward (backward if ARG is negative).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 Precisely, if point is on line I, move to the start of line I + ARG.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 If there isn't room, go as far as possible (no error).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 Returns the count of lines left to move. If moving forward,\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 that is ARG - number of lines moved; if backward, ARG + number moved.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 With positive ARG, a non-empty line at the end counts as one line\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 successfully moved (for the return value).")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (n)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 int pos2 = point;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 int pos;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 int count, shortage, negp;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
99 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 count = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 count = XINT (n);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 negp = count <= 0;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 pos = scan_buffer ('\n', pos2, count - negp, &shortage);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 if (shortage > 0
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 && (negp
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
111 || (ZV > BEGV
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
112 && pos != pos2
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 && FETCH_CHAR (pos - 1) != '\n')))
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 shortage--;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 SET_PT (pos);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 return make_number (negp ? - shortage : shortage);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 DEFUN ("beginning-of-line", Fbeginning_of_line, Sbeginning_of_line,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 0, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 "Move point to beginning of current line.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 With argument ARG not nil or 1, move forward ARG - 1 lines first.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 If scan reaches end of buffer, stop there without error.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 (n)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
127 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 XFASTINT (n) = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 Fforward_line (make_number (XINT (n) - 1));
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 DEFUN ("end-of-line", Fend_of_line, Send_of_line,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 0, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 "Move point to end of current line.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 With argument ARG not nil or 1, move forward ARG - 1 lines first.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 If scan reaches end of buffer, stop there without error.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (n)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 register int pos;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 register int stop;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
147 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 XFASTINT (n) = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 if (XINT (n) != 1)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 Fforward_line (make_number (XINT (n) - 1));
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 pos = point;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 stop = ZV;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 while (pos < stop && FETCH_CHAR (pos) != '\n') pos++;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 SET_PT (pos);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 DEFUN ("delete-char", Fdelete_char, Sdelete_char, 1, 2, "p\nP",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 "Delete the following ARG characters (previous, with negative arg).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 Interactively, ARG is the prefix arg, and KILLFLAG is set if\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 ARG was explicitly specified.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (n, killflag)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 Lisp_Object n, killflag;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
173 if (NILP (killflag))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 if (XINT (n) < 0)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 if (point + XINT (n) < BEGV)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 Fsignal (Qbeginning_of_buffer, Qnil);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 del_range (point + XINT (n), point);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 if (point + XINT (n) > ZV)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 Fsignal (Qend_of_buffer, Qnil);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 del_range (point, point + XINT (n));
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 call1 (Qkill_forward_chars, n);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 DEFUN ("delete-backward-char", Fdelete_backward_char, Sdelete_backward_char,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 1, 2, "p\nP",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 "Delete the previous ARG characters (following, with negative ARG).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 Interactively, ARG is the prefix arg, and KILLFLAG is set if\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 ARG was explicitly specified.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (n, killflag)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 Lisp_Object n, killflag;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 CHECK_NUMBER (n, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 return Fdelete_char (make_number (-XINT (n)), killflag);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 DEFUN ("self-insert-command", Fself_insert_command, Sself_insert_command, 1, 1, "p",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 "Insert the character you type.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 Whichever character you type to run this command is inserted.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (arg)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 Lisp_Object arg;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 CHECK_NUMBER (arg, 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 /* Barf if the key that invoked this was not a character. */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 if (XTYPE (last_command_char) != Lisp_Int)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 bitch_at_user ();
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 while (XINT (arg) > 0)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 XFASTINT (arg)--; /* Ok since old and new vals both nonneg */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 internal_self_insert (XINT (last_command_char), XFASTINT (arg) != 0);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 DEFUN ("newline", Fnewline, Snewline, 0, 1, "P",
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 "Insert a newline. With arg, insert that many newlines.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 In Auto Fill mode, if no numeric arg, break the preceding line if it's long.")
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 (arg1)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 Lisp_Object arg1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 int flag;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 Lisp_Object arg;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 char c1 = '\n';
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 arg = Fprefix_numeric_value (arg1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
243 if (!NILP (current_buffer->read_only))
3480
9784ebc37245 (Fnewline): Use Fbarf_if_buffer_read_only.
Richard M. Stallman <rms@gnu.org>
parents: 3223
diff changeset
244 Fbarf_if_buffer_read_only ();
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245
1986
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
246 /* Inserting a newline at the end of a line produces better
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3480
diff changeset
247 redisplay in try_window_id than inserting at the beginning of a
1986
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
248 line, and the textual result is the same. So, if we're at
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
249 beginning of line, pretend to be at the end of the previous line.
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
250
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
251 We can't use internal_self_insert in that case since it won't do
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
252 the insertion correctly. Luckily, internal_self_insert's special
b1bc0b15ca7f * cmds.c (Fnewline): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1969
diff changeset
253 features all do nothing in that case. */
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 flag = point > BEGV && FETCH_CHAR (point - 1) == '\n';
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 if (flag)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 SET_PT (point - 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 while (XINT (arg) > 0)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 if (flag)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 insert (&c1, 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 else
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
264 internal_self_insert ('\n', !NILP (arg1));
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 XFASTINT (arg)--; /* Ok since old and new vals both nonneg */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 if (flag)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 SET_PT (point + 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273
1022
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
274 /* Insert character C1. If NOAUTOFILL is nonzero, don't do autofill
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
275 even if it is enabled.
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
276
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
277 If this insertion is suitable for direct output (completely simple),
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
278 return 0. A value of 1 indicates this *might* not have been simple. */
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
279
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 internal_self_insert (c1, noautofill)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 char c1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 int noautofill;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 extern Lisp_Object Fexpand_abbrev ();
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 int hairy = 0;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 Lisp_Object tem;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 register enum syntaxcode synt;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 register int c = c1;
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
289 Lisp_Object overwrite = current_buffer->overwrite_mode;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
291 if (!NILP (Vbefore_change_function) || !NILP (Vafter_change_function))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
294 if (!NILP (overwrite)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 && point < ZV
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
296 && (EQ (overwrite, Qoverwrite_mode_binary)
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
297 || (c != '\n' && FETCH_CHAR (point) != '\n'))
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
298 && (EQ (overwrite, Qoverwrite_mode_binary)
1948
e7b8107294b7 (syms_of_cmds): New var `overwrite-binary-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 1098
diff changeset
299 || FETCH_CHAR (point) != '\t'
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 || XINT (current_buffer->tab_width) <= 0
2159
6a082f5ce7e6 (internal_self_insert): Check that tab_width does not
Richard M. Stallman <rms@gnu.org>
parents: 1986
diff changeset
301 || XFASTINT (current_buffer->tab_width) > 20
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 || !((current_column () + 1) % XFASTINT (current_buffer->tab_width))))
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 del_range (point, point + 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 }
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
307 if (!NILP (current_buffer->abbrev_mode)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 && SYNTAX (c) != Sword
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
309 && NILP (current_buffer->read_only)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 && point > BEGV && SYNTAX (FETCH_CHAR (point - 1)) == Sword)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 {
1098
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
312 int modiff = MODIFF;
1022
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
313 Fexpand_abbrev ();
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
314 /* We can't trust the value of Fexpand_abbrev,
1098
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
315 but if Fexpand_abbrev changed the buffer,
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
316 assume it expanded something. */
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
317 if (MODIFF != modiff)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 if ((c == ' ' || c == '\n')
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 && !noautofill
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
322 && !NILP (current_buffer->auto_fill_function)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 && current_column () > XFASTINT (current_buffer->fill_column))
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 if (c1 != '\n')
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 insert (&c1, 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 call0 (current_buffer->auto_fill_function);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 if (c1 == '\n')
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 insert (&c1, 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 insert (&c1, 1);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 synt = SYNTAX (c);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 if ((synt == Sclose || synt == Smath)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
336 && !NILP (Vblink_paren_function) && INTERACTIVE)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 call0 (Vblink_paren_function);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 return hairy;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 /* module initialization */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 syms_of_cmds ()
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 Qkill_backward_chars = intern ("kill-backward-chars");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 staticpro (&Qkill_backward_chars);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 Qkill_forward_chars = intern ("kill-forward-chars");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 staticpro (&Qkill_forward_chars);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
354 Qoverwrite_mode_binary = intern ("overwrite-mode-binary");
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
355 staticpro (&Qoverwrite_mode_binary);
1948
e7b8107294b7 (syms_of_cmds): New var `overwrite-binary-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 1098
diff changeset
356
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 DEFVAR_LISP ("blink-paren-function", &Vblink_paren_function,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 "Function called, if non-nil, whenever a close parenthesis is inserted.\n\
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 More precisely, a char with closeparen syntax is self-inserted.");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 Vblink_paren_function = Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 defsubr (&Sforward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 defsubr (&Sbackward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 defsubr (&Sforward_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 defsubr (&Sbeginning_of_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 defsubr (&Send_of_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 defsubr (&Sdelete_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 defsubr (&Sdelete_backward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 defsubr (&Sself_insert_command);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 defsubr (&Snewline);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 keys_of_cmds ()
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 int n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 initial_define_key (global_map, Ctl('M'), "newline");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 initial_define_key (global_map, Ctl('I'), "self-insert-command");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 for (n = 040; n < 0177; n++)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 initial_define_key (global_map, n, "self-insert-command");
3223
28a9541901d7 (keys_of_cmds): Predefined 0240-0376 as self-insert.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
383 for (n = 0240; n < 0377; n++)
28a9541901d7 (keys_of_cmds): Predefined 0240-0376 as self-insert.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
384 initial_define_key (global_map, n, "self-insert-command");
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 initial_define_key (global_map, Ctl ('A'), "beginning-of-line");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 initial_define_key (global_map, Ctl ('B'), "backward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 initial_define_key (global_map, Ctl ('D'), "delete-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 initial_define_key (global_map, Ctl ('E'), "end-of-line");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 initial_define_key (global_map, Ctl ('F'), "forward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 initial_define_key (global_map, 0177, "delete-backward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 }