Mercurial > emacs
annotate src/cmds.c @ 25427:dde5fcbfa2af
(Info-tagify): Don't insert more than one newline before the tag table.
(Info-tagify): Start by widening.
Match node headers that don't list the file name,
and more kinds of page separations.
Strip properties during tagification.
Use start of node header line as tag's position.
Fix the "done" message.
(Info-validate): Save and restore match data around narrowing down.
| author | Richard M. Stallman <rms@gnu.org> |
|---|---|
| date | Sun, 29 Aug 1999 19:19:00 +0000 |
| parents | c7247eabc834 |
| children | 82ebdf9967da |
| rev | line source |
|---|---|
| 239 | 1 /* Simple built-in editing commands. |
| 20708 | 2 Copyright (C) 1985, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. |
| 239 | 3 |
| 4 This file is part of GNU Emacs. | |
| 5 | |
| 6 GNU Emacs is free software; you can redistribute it and/or modify | |
| 7 it under the terms of the GNU General Public License as published by | |
| 647 | 8 the Free Software Foundation; either version 2, or (at your option) |
| 239 | 9 any later version. |
| 10 | |
| 11 GNU Emacs is distributed in the hope that it will be useful, | |
| 12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 GNU General Public License for more details. | |
| 15 | |
| 16 You should have received a copy of the GNU General Public License | |
| 17 along with GNU Emacs; see the file COPYING. If not, write to | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14065
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14065
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
| 239 | 20 |
| 21 | |
|
4696
1fc792473491
Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents:
4561
diff
changeset
|
22 #include <config.h> |
| 239 | 23 #include "lisp.h" |
| 24 #include "commands.h" | |
| 25 #include "buffer.h" | |
| 17026 | 26 #include "charset.h" |
| 239 | 27 #include "syntax.h" |
| 8755 | 28 #include "window.h" |
|
12163
4a83c7459b52
(internal_self_insert): Make last_command be kboard-local.
Karl Heuer <kwzh@gnu.org>
parents:
11235
diff
changeset
|
29 #include "keyboard.h" |
| 21514 | 30 #include "dispextern.h" |
| 239 | 31 |
| 32 Lisp_Object Qkill_forward_chars, Qkill_backward_chars, Vblink_paren_function; | |
| 33 | |
|
2214
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2159
diff
changeset
|
34 /* 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
|
35 Lisp_Object Qoverwrite_mode_binary; |
|
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2159
diff
changeset
|
36 |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
37 /* Non-nil means put this face on the next self-inserting character. */ |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
38 Lisp_Object Vself_insert_face; |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
39 |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
40 /* This is the command that set up Vself_insert_face. */ |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
41 Lisp_Object Vself_insert_face_command; |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
42 |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
43 extern Lisp_Object Qface; |
| 239 | 44 |
| 17026 | 45 DEFUN ("forward-point", Fforward_point, Sforward_point, 1, 1, 0, |
| 46 "Return buffer position N characters after (before if N negative) point.") | |
| 47 (n) | |
| 48 Lisp_Object n; | |
| 49 { | |
| 50 CHECK_NUMBER (n, 0); | |
| 51 | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
52 return make_number (PT + XINT (n)); |
| 17026 | 53 } |
| 54 | |
| 239 | 55 DEFUN ("forward-char", Fforward_char, Sforward_char, 0, 1, "p", |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
56 "Move point right N characters (left if N is negative).\n\ |
| 239 | 57 On reaching end of buffer, stop and signal error.") |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
58 (n) |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
59 Lisp_Object n; |
| 239 | 60 { |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
61 if (NILP (n)) |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
62 XSETFASTINT (n, 1); |
| 239 | 63 else |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
64 CHECK_NUMBER (n, 0); |
| 239 | 65 |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
66 /* This used to just set point to point + XINT (n), and then check |
|
2777
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
67 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
|
68 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
|
69 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
|
70 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
|
71 { |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
72 int new_point = PT + XINT (n); |
|
2777
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
73 |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
74 if (new_point < BEGV) |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
75 { |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
76 SET_PT (BEGV); |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
77 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
|
78 } |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
79 if (new_point > ZV) |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
80 { |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
81 SET_PT (ZV); |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
82 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
|
83 } |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
84 |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
85 SET_PT (new_point); |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
86 } |
|
40e00789f1c1
* cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents:
2214
diff
changeset
|
87 |
| 239 | 88 return Qnil; |
| 89 } | |
| 90 | |
| 91 DEFUN ("backward-char", Fbackward_char, Sbackward_char, 0, 1, "p", | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
92 "Move point left N characters (right if N is negative).\n\ |
| 239 | 93 On attempt to pass beginning or end of buffer, stop and signal error.") |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
94 (n) |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
95 Lisp_Object n; |
| 239 | 96 { |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
97 if (NILP (n)) |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
98 XSETFASTINT (n, 1); |
| 239 | 99 else |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
100 CHECK_NUMBER (n, 0); |
| 239 | 101 |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
102 XSETINT (n, - XINT (n)); |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
103 return Fforward_char (n); |
| 239 | 104 } |
| 105 | |
| 106 DEFUN ("forward-line", Fforward_line, Sforward_line, 0, 1, "p", | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
107 "Move N lines forward (backward if N is negative).\n\ |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
108 Precisely, if point is on line I, move to the start of line I + N.\n\ |
| 239 | 109 If there isn't room, go as far as possible (no error).\n\ |
| 110 Returns the count of lines left to move. If moving forward,\n\ | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
111 that is N - number of lines moved; if backward, N + number moved.\n\ |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
112 With positive N, a non-empty line at the end counts as one line\n\ |
| 239 | 113 successfully moved (for the return value).") |
| 114 (n) | |
| 115 Lisp_Object n; | |
| 116 { | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
117 int opoint = PT, opoint_byte = PT_BYTE; |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
118 int pos, pos_byte; |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
119 int count, shortage; |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
120 int temp; |
| 239 | 121 |
| 485 | 122 if (NILP (n)) |
| 239 | 123 count = 1; |
| 124 else | |
| 125 { | |
| 126 CHECK_NUMBER (n, 0); | |
| 127 count = XINT (n); | |
| 128 } | |
| 129 | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
130 if (count <= 0) |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
131 shortage = scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, count - 1, 1); |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
132 else |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
133 shortage = scan_newline (PT, PT_BYTE, ZV, ZV_BYTE, count, 1); |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
134 |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
135 /* Since scan_newline does TEMP_SET_PT_BOTH, |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
136 and we want to set PT "for real", |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
137 go back to the old point and then come back here. */ |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
138 pos = PT; |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
139 pos_byte = PT_BYTE; |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
140 TEMP_SET_PT_BOTH (opoint, opoint_byte); |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
141 SET_PT_BOTH (pos, pos_byte); |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
142 |
| 239 | 143 if (shortage > 0 |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
144 && (count <= 0 |
| 647 | 145 || (ZV > BEGV |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
146 && PT != opoint |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
147 && (FETCH_BYTE (PT_BYTE - 1) != '\n')))) |
| 239 | 148 shortage--; |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
149 |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
150 return make_number (count <= 0 ? - shortage : shortage); |
| 239 | 151 } |
| 152 | |
| 153 DEFUN ("beginning-of-line", Fbeginning_of_line, Sbeginning_of_line, | |
| 154 0, 1, "p", | |
| 155 "Move point to beginning of current line.\n\ | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
156 With argument N not nil or 1, move forward N - 1 lines first.\n\ |
| 239 | 157 If scan reaches end of buffer, stop there without error.") |
| 158 (n) | |
| 159 Lisp_Object n; | |
| 160 { | |
| 485 | 161 if (NILP (n)) |
|
9300
84822d6ed3be
(Fforward_char, Fbackward_char, Fbeginning_of_line, Fend_of_line): Don't use
Karl Heuer <kwzh@gnu.org>
parents:
9135
diff
changeset
|
162 XSETFASTINT (n, 1); |
| 239 | 163 else |
| 164 CHECK_NUMBER (n, 0); | |
| 165 | |
|
25015
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
166 { |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
167 int pos = XFASTINT (Fline_beginning_position (n)); |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
168 if (INTEGERP (current_buffer->minibuffer_prompt_length) |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
169 && pos < XFASTINT (current_buffer->minibuffer_prompt_length)) |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
170 pos = XFASTINT (current_buffer->minibuffer_prompt_length); |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
171 SET_PT (pos); |
|
7730c6f39ef5
(Fbeginning_of_line) [PROMPT_IN_BUFFER]: Set point to
Gerd Moellmann <gerd@gnu.org>
parents:
24423
diff
changeset
|
172 } |
|
25351
c7247eabc834
Remove conditional compilation on NO_PROMPT_IN_BUFFER.
Gerd Moellmann <gerd@gnu.org>
parents:
25015
diff
changeset
|
173 |
| 239 | 174 return Qnil; |
| 175 } | |
| 176 | |
| 177 DEFUN ("end-of-line", Fend_of_line, Send_of_line, | |
| 178 0, 1, "p", | |
| 179 "Move point to end of current line.\n\ | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
180 With argument N not nil or 1, move forward N - 1 lines first.\n\ |
| 239 | 181 If scan reaches end of buffer, stop there without error.") |
| 182 (n) | |
| 183 Lisp_Object n; | |
| 184 { | |
| 185 register int pos; | |
| 186 register int stop; | |
| 187 | |
| 485 | 188 if (NILP (n)) |
|
9300
84822d6ed3be
(Fforward_char, Fbackward_char, Fbeginning_of_line, Fend_of_line): Don't use
Karl Heuer <kwzh@gnu.org>
parents:
9135
diff
changeset
|
189 XSETFASTINT (n, 1); |
| 239 | 190 else |
| 191 CHECK_NUMBER (n, 0); | |
| 192 | |
|
16657
f31cab608aa9
(Fend_of_line, Fbeginning_of_line):
Richard M. Stallman <rms@gnu.org>
parents:
16039
diff
changeset
|
193 SET_PT (XINT (Fline_end_position (n))); |
| 239 | 194 |
| 195 return Qnil; | |
| 196 } | |
| 197 | |
| 198 DEFUN ("delete-char", Fdelete_char, Sdelete_char, 1, 2, "p\nP", | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
199 "Delete the following N characters (previous if N is negative).\n\ |
| 239 | 200 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).\n\ |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
201 Interactively, N is the prefix arg, and KILLFLAG is set if\n\ |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
202 N was explicitly specified.") |
| 239 | 203 (n, killflag) |
| 204 Lisp_Object n, killflag; | |
| 205 { | |
| 17026 | 206 int pos; |
| 207 | |
| 239 | 208 CHECK_NUMBER (n, 0); |
| 209 | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
210 pos = PT + XINT (n); |
| 485 | 211 if (NILP (killflag)) |
| 239 | 212 { |
| 213 if (XINT (n) < 0) | |
| 214 { | |
| 17026 | 215 if (pos < BEGV) |
| 239 | 216 Fsignal (Qbeginning_of_buffer, Qnil); |
| 217 else | |
| 17026 | 218 del_range (pos, PT); |
| 239 | 219 } |
| 220 else | |
| 221 { | |
| 17026 | 222 if (pos > ZV) |
| 239 | 223 Fsignal (Qend_of_buffer, Qnil); |
| 224 else | |
| 17026 | 225 del_range (PT, pos); |
| 239 | 226 } |
| 227 } | |
| 228 else | |
| 229 { | |
| 230 call1 (Qkill_forward_chars, n); | |
| 231 } | |
| 232 return Qnil; | |
| 233 } | |
| 234 | |
| 235 DEFUN ("delete-backward-char", Fdelete_backward_char, Sdelete_backward_char, | |
| 236 1, 2, "p\nP", | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
237 "Delete the previous N characters (following if N is negative).\n\ |
| 239 | 238 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).\n\ |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
239 Interactively, N is the prefix arg, and KILLFLAG is set if\n\ |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
240 N was explicitly specified.") |
| 239 | 241 (n, killflag) |
| 242 Lisp_Object n, killflag; | |
| 243 { | |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
244 Lisp_Object value; |
|
15875
5ffb83189a1b
(Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents:
15262
diff
changeset
|
245 int deleted_special = 0; |
|
20958
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
246 int pos, pos_byte, i; |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
247 |
| 239 | 248 CHECK_NUMBER (n, 0); |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
249 |
|
15875
5ffb83189a1b
(Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents:
15262
diff
changeset
|
250 /* See if we are about to delete a tab or newline backwards. */ |
|
20958
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
251 pos = PT; |
|
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
252 pos_byte = PT_BYTE; |
|
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
253 for (i = 0; i < XINT (n) && pos_byte > BEGV_BYTE; i++) |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
254 { |
| 17026 | 255 int c; |
| 256 | |
|
20958
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
257 DEC_BOTH (pos, pos_byte); |
|
806727604be8
(Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents:
20708
diff
changeset
|
258 c = FETCH_BYTE (pos_byte); |
| 17026 | 259 if (c == '\t' || c == '\n') |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
260 { |
|
15875
5ffb83189a1b
(Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents:
15262
diff
changeset
|
261 deleted_special = 1; |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
262 break; |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
263 } |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
264 } |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
265 |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
266 /* In overwrite mode, back over columns while clearing them out, |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
267 unless at end of line. */ |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
268 if (XINT (n) > 0 |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
269 && ! NILP (current_buffer->overwrite_mode) |
|
15875
5ffb83189a1b
(Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents:
15262
diff
changeset
|
270 && ! deleted_special |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
271 && ! (PT == ZV || FETCH_BYTE (PT_BYTE) == '\n')) |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
272 { |
| 17026 | 273 int column = current_column (); |
| 274 | |
| 275 value = Fdelete_char (make_number (-XINT (n)), killflag); | |
| 276 i = column - current_column (); | |
|
18748
6897bd6a1c8d
(Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents:
18239
diff
changeset
|
277 Finsert_char (make_number (' '), make_number (i), Qnil); |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
278 /* Whitespace chars are ASCII chars, so we can simply subtract. */ |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
279 SET_PT_BOTH (PT - i, PT_BYTE - i); |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
280 } |
| 17026 | 281 else |
| 282 value = Fdelete_char (make_number (-XINT (n)), killflag); | |
|
14436
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
283 |
|
b56083146a42
(Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
284 return value; |
| 239 | 285 } |
| 286 | |
| 287 DEFUN ("self-insert-command", Fself_insert_command, Sself_insert_command, 1, 1, "p", | |
| 288 "Insert the character you type.\n\ | |
| 289 Whichever character you type to run this command is inserted.") | |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
290 (n) |
|
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
291 Lisp_Object n; |
| 239 | 292 { |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
293 int character = XINT (last_command_char); |
|
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
294 |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
295 CHECK_NUMBER (n, 0); |
| 239 | 296 |
| 297 /* Barf if the key that invoked this was not a character. */ | |
|
9135
551c9e4fa12a
(Fself_insert_command): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents:
8755
diff
changeset
|
298 if (!INTEGERP (last_command_char)) |
| 239 | 299 bitch_at_user (); |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
300 else if (XINT (n) >= 2 && NILP (current_buffer->overwrite_mode)) |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
301 { |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
302 int modified_char = character; |
|
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
303 /* Add the offset to the character, for Finsert_char. |
|
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
304 We pass internal_self_insert the unmodified character |
|
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
305 because it itself does this offsetting. */ |
|
20701
59ffd6ac16ec
(internal_self_insert, Fself_insert_command):
Richard M. Stallman <rms@gnu.org>
parents:
20615
diff
changeset
|
306 if (! NILP (current_buffer->enable_multibyte_characters)) |
|
59ffd6ac16ec
(internal_self_insert, Fself_insert_command):
Richard M. Stallman <rms@gnu.org>
parents:
20615
diff
changeset
|
307 modified_char = unibyte_char_to_multibyte (modified_char); |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
308 |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
309 XSETFASTINT (n, XFASTINT (n) - 2); |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
310 /* The first one might want to expand an abbrev. */ |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
311 internal_self_insert (character, 1); |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
312 /* The bulk of the copies of this char can be inserted simply. |
|
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
313 We don't have to handle a user-specified face specially |
|
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
314 because it will get inherited from the first char inserted. */ |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
315 Finsert_char (make_number (modified_char), n, Qt); |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
316 /* The last one might want to auto-fill. */ |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
317 internal_self_insert (character, 0); |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
318 } |
| 239 | 319 else |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
320 while (XINT (n) > 0) |
| 239 | 321 { |
|
9332
1ff5359ac932
(Fself_insert_command, Fnewline): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents:
9300
diff
changeset
|
322 /* Ok since old and new vals both nonneg */ |
|
14065
60600bcfe5f1
(Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents:
13825
diff
changeset
|
323 XSETFASTINT (n, XFASTINT (n) - 1); |
|
17849
a6442e20f768
(nonascii_insert_offset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17376
diff
changeset
|
324 internal_self_insert (character, XFASTINT (n) != 0); |
| 239 | 325 } |
| 326 | |
| 327 return Qnil; | |
| 328 } | |
| 329 | |
| 17026 | 330 /* Insert character C. If NOAUTOFILL is nonzero, don't do autofill |
|
1022
f7e3bac23a06
(internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents:
647
diff
changeset
|
331 even if it is enabled. |
|
f7e3bac23a06
(internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents:
647
diff
changeset
|
332 |
|
f7e3bac23a06
(internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents:
647
diff
changeset
|
333 If this insertion is suitable for direct output (completely simple), |
|
8088
a831980bb12e
(internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
334 return 0. A value of 1 indicates this *might* not have been simple. |
|
a831980bb12e
(internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
335 A value of 2 means this did things that call for an undo boundary. */ |
|
1022
f7e3bac23a06
(internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents:
647
diff
changeset
|
336 |
| 21514 | 337 int |
| 17026 | 338 internal_self_insert (c, noautofill) |
| 339 int c; | |
| 239 | 340 int noautofill; |
| 341 { | |
| 342 extern Lisp_Object Fexpand_abbrev (); | |
| 343 int hairy = 0; | |
| 344 Lisp_Object tem; | |
| 345 register enum syntaxcode synt; | |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
346 Lisp_Object overwrite, string; |
| 17026 | 347 /* Length of multi-byte form of C. */ |
| 348 int len; | |
| 349 /* Working buffer and pointer for multi-byte form of C. */ | |
| 350 unsigned char workbuf[4], *str; | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
351 int chars_to_delete = 0; |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
352 int spaces_to_insert = 0; |
| 239 | 353 |
|
6496
e1967b6d9a5c
(internal_self_insert): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
5754
diff
changeset
|
354 overwrite = current_buffer->overwrite_mode; |
|
6788
4c912c5779f5
(internal_self_insert): Test Vafter_change_functions,
Richard M. Stallman <rms@gnu.org>
parents:
6496
diff
changeset
|
355 if (!NILP (Vbefore_change_function) || !NILP (Vafter_change_function) |
|
4c912c5779f5
(internal_self_insert): Test Vafter_change_functions,
Richard M. Stallman <rms@gnu.org>
parents:
6496
diff
changeset
|
356 || !NILP (Vbefore_change_functions) || !NILP (Vafter_change_functions)) |
| 239 | 357 hairy = 1; |
| 358 | |
| 17026 | 359 /* At first, get multi-byte form of C in STR. */ |
| 360 if (!NILP (current_buffer->enable_multibyte_characters)) | |
|
21032
3bf522f06501
(internal_self_insert): Avoid checking enable-multibyte-characters
Kenichi Handa <handa@m17n.org>
parents:
20958
diff
changeset
|
361 { |
|
3bf522f06501
(internal_self_insert): Avoid checking enable-multibyte-characters
Kenichi Handa <handa@m17n.org>
parents:
20958
diff
changeset
|
362 c = unibyte_char_to_multibyte (c); |
|
3bf522f06501
(internal_self_insert): Avoid checking enable-multibyte-characters
Kenichi Handa <handa@m17n.org>
parents:
20958
diff
changeset
|
363 len = CHAR_STRING (c, workbuf, str); |
|
23765
1944b3595afd
(internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents:
23487
diff
changeset
|
364 if (len == 1) |
|
1944b3595afd
(internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents:
23487
diff
changeset
|
365 /* If C has modifier bits, this makes C an appropriate |
|
1944b3595afd
(internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents:
23487
diff
changeset
|
366 one-byte char. */ |
|
1944b3595afd
(internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents:
23487
diff
changeset
|
367 c = *str; |
|
21032
3bf522f06501
(internal_self_insert): Avoid checking enable-multibyte-characters
Kenichi Handa <handa@m17n.org>
parents:
20958
diff
changeset
|
368 } |
| 17026 | 369 else |
|
22926
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
370 { |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
371 workbuf[0] = (SINGLE_BYTE_CHAR_P (c) |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
372 ? c |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
373 : multibyte_char_to_unibyte (c, Qnil)); |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
374 str = workbuf; |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
375 len = 1; |
|
436499b7a769
(internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
376 } |
|
2214
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2159
diff
changeset
|
377 if (!NILP (overwrite) |
| 17026 | 378 && PT < ZV) |
| 239 | 379 { |
| 17026 | 380 /* In overwrite-mode, we substitute a character at point (C2, |
| 381 hereafter) by C. For that, we delete C2 in advance. But, | |
| 382 just substituting C2 by C may move a remaining text in the | |
| 383 line to the right or to the left, which is not preferable. | |
| 384 So we insert more spaces or delete more characters in the | |
| 385 following cases: if C is narrower than C2, after deleting C2, | |
| 386 we fill columns with spaces, if C is wider than C2, we delete | |
| 387 C2 and several characters following C2. */ | |
| 388 | |
|
20615
ddb1eec37783
(internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents:
20541
diff
changeset
|
389 /* This is the character after point. */ |
|
ddb1eec37783
(internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents:
20541
diff
changeset
|
390 int c2 = FETCH_CHAR (PT_BYTE); |
|
ddb1eec37783
(internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents:
20541
diff
changeset
|
391 |
|
ddb1eec37783
(internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents:
20541
diff
changeset
|
392 /* Column the cursor should be placed at after this insertion. |
| 17026 | 393 The correct value should be calculated only when necessary. */ |
| 394 int target_clm = 0; | |
| 395 | |
|
19658
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
396 /* Overwriting in binary-mode always replaces C2 by C. |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
397 Overwriting in textual-mode doesn't always do that. |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
398 It inserts newlines in the usual way, |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
399 and inserts any character at end of line |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
400 or before a tab if it doesn't use the whole width of the tab. */ |
| 17026 | 401 if (EQ (overwrite, Qoverwrite_mode_binary) |
| 402 || (c != '\n' | |
| 403 && c2 != '\n' | |
|
19658
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
404 && ! (c2 == '\t' |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
405 && XINT (current_buffer->tab_width) > 0 |
|
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
406 && XFASTINT (current_buffer->tab_width) < 20 |
|
20615
ddb1eec37783
(internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents:
20541
diff
changeset
|
407 && (target_clm = (current_column () |
|
24423
230bace6a57a
(internal_self_insert): Calculate column properly
Karl Heuer <kwzh@gnu.org>
parents:
23765
diff
changeset
|
408 + XINT (Fchar_width (make_number (c)))), |
|
19658
063c22255157
(internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents:
18813
diff
changeset
|
409 target_clm % XFASTINT (current_buffer->tab_width))))) |
| 17026 | 410 { |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
411 int pos = PT; |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
412 int pos_byte = PT_BYTE; |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
413 |
| 17026 | 414 if (target_clm == 0) |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
415 chars_to_delete = 1; |
| 17026 | 416 else |
| 417 { | |
| 418 /* The actual cursor position after the trial of moving | |
| 419 to column TARGET_CLM. It is greater than TARGET_CLM | |
| 420 if the TARGET_CLM is middle of multi-column | |
| 421 character. In that case, the new point is set after | |
| 422 that character. */ | |
|
18748
6897bd6a1c8d
(Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents:
18239
diff
changeset
|
423 int actual_clm |
|
6897bd6a1c8d
(Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents:
18239
diff
changeset
|
424 = XFASTINT (Fmove_to_column (make_number (target_clm), Qnil)); |
| 17026 | 425 |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
426 chars_to_delete = PT - pos; |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
427 |
| 17026 | 428 if (actual_clm > target_clm) |
| 429 { | |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
430 /* We will delete too many columns. Let's fill columns |
| 17026 | 431 by spaces so that the remaining text won't move. */ |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
432 spaces_to_insert = actual_clm - target_clm; |
| 17026 | 433 } |
| 434 } | |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
435 SET_PT_BOTH (pos, pos_byte); |
| 17026 | 436 hairy = 2; |
| 437 } | |
|
8088
a831980bb12e
(internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
438 hairy = 2; |
| 239 | 439 } |
| 485 | 440 if (!NILP (current_buffer->abbrev_mode) |
| 239 | 441 && SYNTAX (c) != Sword |
| 485 | 442 && NILP (current_buffer->read_only) |
| 17026 | 443 && PT > BEGV && SYNTAX (XFASTINT (Fprevious_char ())) == Sword) |
| 239 | 444 { |
|
1098
79f020f34683
(internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents:
1022
diff
changeset
|
445 int modiff = MODIFF; |
|
16748
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
446 Lisp_Object sym; |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
447 |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
448 sym = Fexpand_abbrev (); |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
449 |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
450 /* If we expanded an abbrev which has only a hook, |
|
16809
c378600f005d
(internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents:
16748
diff
changeset
|
451 and the hook has a non-nil `no-self-insert' property, |
|
16748
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
452 return right away--don't really self-insert. */ |
|
16809
c378600f005d
(internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents:
16748
diff
changeset
|
453 if (! NILP (sym) && ! NILP (XSYMBOL (sym)->function) |
|
c378600f005d
(internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents:
16748
diff
changeset
|
454 && SYMBOLP (XSYMBOL (sym)->function)) |
|
16748
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
455 { |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
456 Lisp_Object prop; |
|
16809
c378600f005d
(internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents:
16748
diff
changeset
|
457 prop = Fget (XSYMBOL (sym)->function, intern ("no-self-insert")); |
|
16748
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
458 if (! NILP (prop)) |
|
17376
aef6095be65c
(internal_self_insert): Fix return value.
Karl Heuer <kwzh@gnu.org>
parents:
17026
diff
changeset
|
459 return 1; |
|
16748
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
460 } |
|
64f315c0e3f4
(internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents:
16657
diff
changeset
|
461 |
|
1098
79f020f34683
(internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents:
1022
diff
changeset
|
462 if (MODIFF != modiff) |
|
8088
a831980bb12e
(internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
463 hairy = 2; |
| 239 | 464 } |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
465 |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
466 if (chars_to_delete) |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
467 { |
|
21254
d25a091700e5
(internal_self_insert): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents:
21238
diff
changeset
|
468 string = make_string_from_bytes (str, 1, len); |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
469 if (spaces_to_insert) |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
470 { |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
471 tem = Fmake_string (make_number (spaces_to_insert), |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
472 make_number (' ')); |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
473 string = concat2 (tem, string); |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
474 } |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
475 |
|
23062
fec0e9653480
(internal_self_insert): Pass 1 as NOMARKERS to replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
22926
diff
changeset
|
476 replace_range (PT, PT + chars_to_delete, string, 1, 1, 1); |
|
21149
43ed5912d7e0
(internal_self_insert): Call Fforward_buffer to advance
Richard M. Stallman <rms@gnu.org>
parents:
21032
diff
changeset
|
477 Fforward_char (make_number (1 + spaces_to_insert)); |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
478 } |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
479 else |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
480 insert_and_inherit (str, len); |
|
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
481 |
|
23487
6bed0cb78b71
(internal_self_insert): Check Vauto_fill_chars.
Kenichi Handa <handa@m17n.org>
parents:
23062
diff
changeset
|
482 if ((CHAR_TABLE_P (Vauto_fill_chars) |
|
6bed0cb78b71
(internal_self_insert): Check Vauto_fill_chars.
Kenichi Handa <handa@m17n.org>
parents:
23062
diff
changeset
|
483 ? !NILP (CHAR_TABLE_REF (Vauto_fill_chars, c)) |
|
6bed0cb78b71
(internal_self_insert): Check Vauto_fill_chars.
Kenichi Handa <handa@m17n.org>
parents:
23062
diff
changeset
|
484 : (c == ' ' || c == '\n')) |
| 239 | 485 && !noautofill |
|
10474
caf4440e63e8
(internal_self_insert): Don't test current_column
Richard M. Stallman <rms@gnu.org>
parents:
10425
diff
changeset
|
486 && !NILP (current_buffer->auto_fill_function)) |
| 239 | 487 { |
|
15262
b455f3f77823
(internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents:
14436
diff
changeset
|
488 Lisp_Object tem; |
|
b455f3f77823
(internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents:
14436
diff
changeset
|
489 |
| 17026 | 490 if (c == '\n') |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
491 /* After inserting a newline, move to previous line and fill |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
492 that. Must have the newline in place already so filling and |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
493 justification, if any, know where the end is going to be. */ |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
494 SET_PT_BOTH (PT - 1, PT_BYTE - 1); |
|
15262
b455f3f77823
(internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents:
14436
diff
changeset
|
495 tem = call0 (current_buffer->auto_fill_function); |
| 17026 | 496 if (c == '\n') |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
497 SET_PT_BOTH (PT + 1, PT_BYTE + 1); |
|
15262
b455f3f77823
(internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents:
14436
diff
changeset
|
498 if (!NILP (tem)) |
|
b455f3f77823
(internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents:
14436
diff
changeset
|
499 hairy = 2; |
| 239 | 500 } |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
501 |
|
11024
636d0fa5a920
(internal_self_insert): Do face code only if HAVE_FACES.
Karl Heuer <kwzh@gnu.org>
parents:
10865
diff
changeset
|
502 #ifdef HAVE_FACES |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
503 /* If previous command specified a face to use, use it. */ |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
504 if (!NILP (Vself_insert_face) |
|
12163
4a83c7459b52
(internal_self_insert): Make last_command be kboard-local.
Karl Heuer <kwzh@gnu.org>
parents:
11235
diff
changeset
|
505 && EQ (current_kboard->Vlast_command, Vself_insert_face_command)) |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
506 { |
|
20541
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
507 Fput_text_property (make_number (PT - 1), make_number (PT), |
|
0cd7f6f42138
(forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
19658
diff
changeset
|
508 Qface, Vself_insert_face, Qnil); |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
509 Vself_insert_face = Qnil; |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
510 } |
|
11024
636d0fa5a920
(internal_self_insert): Do face code only if HAVE_FACES.
Karl Heuer <kwzh@gnu.org>
parents:
10865
diff
changeset
|
511 #endif |
|
18813
498c1590b4a8
(internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents:
18748
diff
changeset
|
512 |
| 239 | 513 synt = SYNTAX (c); |
| 514 if ((synt == Sclose || synt == Smath) | |
|
12869
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
515 && !NILP (Vblink_paren_function) && INTERACTIVE |
|
2304fcfade47
(Fself_insert_command): Optimize the case with arg > 2
Richard M. Stallman <rms@gnu.org>
parents:
12163
diff
changeset
|
516 && !noautofill) |
| 239 | 517 { |
| 518 call0 (Vblink_paren_function); | |
|
8088
a831980bb12e
(internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
519 hairy = 2; |
| 239 | 520 } |
| 521 return hairy; | |
| 522 } | |
| 523 | |
| 524 /* module initialization */ | |
| 525 | |
| 21514 | 526 void |
| 239 | 527 syms_of_cmds () |
| 528 { | |
| 529 Qkill_backward_chars = intern ("kill-backward-chars"); | |
| 530 staticpro (&Qkill_backward_chars); | |
| 531 | |
| 532 Qkill_forward_chars = intern ("kill-forward-chars"); | |
| 533 staticpro (&Qkill_forward_chars); | |
| 534 | |
|
2214
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2159
diff
changeset
|
535 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
|
536 staticpro (&Qoverwrite_mode_binary); |
|
1948
e7b8107294b7
(syms_of_cmds): New var `overwrite-binary-mode'.
Richard M. Stallman <rms@gnu.org>
parents:
1098
diff
changeset
|
537 |
|
10729
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
538 DEFVAR_LISP ("self-insert-face", &Vself_insert_face, |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
539 "If non-nil, set the face of the next self-inserting character to this.\n\ |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
540 See also `self-insert-face-command'."); |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
541 Vself_insert_face = Qnil; |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
542 |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
543 DEFVAR_LISP ("self-insert-face-command", &Vself_insert_face_command, |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
544 "This is the command that set up `self-insert-face'.\n\ |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
545 If `last-command' does not equal this value, we ignore `self-insert-face'."); |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
546 Vself_insert_face_command = Qnil; |
|
fb4f688fc2cf
(Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
10474
diff
changeset
|
547 |
| 239 | 548 DEFVAR_LISP ("blink-paren-function", &Vblink_paren_function, |
| 549 "Function called, if non-nil, whenever a close parenthesis is inserted.\n\ | |
| 550 More precisely, a char with closeparen syntax is self-inserted."); | |
| 551 Vblink_paren_function = Qnil; | |
| 552 | |
| 17026 | 553 defsubr (&Sforward_point); |
| 239 | 554 defsubr (&Sforward_char); |
| 555 defsubr (&Sbackward_char); | |
| 556 defsubr (&Sforward_line); | |
| 557 defsubr (&Sbeginning_of_line); | |
| 558 defsubr (&Send_of_line); | |
| 559 | |
| 560 defsubr (&Sdelete_char); | |
| 561 defsubr (&Sdelete_backward_char); | |
| 562 | |
| 563 defsubr (&Sself_insert_command); | |
| 564 } | |
| 565 | |
| 21514 | 566 void |
| 239 | 567 keys_of_cmds () |
| 568 { | |
| 569 int n; | |
| 570 | |
|
10425
f44f048966e8
(Vuse_hard_newlines): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9884
diff
changeset
|
571 initial_define_key (global_map, Ctl ('I'), "self-insert-command"); |
| 239 | 572 for (n = 040; n < 0177; n++) |
| 573 initial_define_key (global_map, n, "self-insert-command"); | |
|
5491
3965bf498738
(keys_of_cmds) [MSDOS]: Chars 0200 to 0237 self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
5054
diff
changeset
|
574 #ifdef MSDOS |
|
3965bf498738
(keys_of_cmds) [MSDOS]: Chars 0200 to 0237 self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
5054
diff
changeset
|
575 for (n = 0200; n < 0240; n++) |
|
3965bf498738
(keys_of_cmds) [MSDOS]: Chars 0200 to 0237 self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
5054
diff
changeset
|
576 initial_define_key (global_map, n, "self-insert-command"); |
|
3965bf498738
(keys_of_cmds) [MSDOS]: Chars 0200 to 0237 self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
5054
diff
changeset
|
577 #endif |
|
5054
34c280d4e1af
(keys_of_cmds): Make 0377 self-inserting.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
578 for (n = 0240; n < 0400; n++) |
|
3223
28a9541901d7
(keys_of_cmds): Predefined 0240-0376 as self-insert.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
579 initial_define_key (global_map, n, "self-insert-command"); |
| 239 | 580 |
| 581 initial_define_key (global_map, Ctl ('A'), "beginning-of-line"); | |
| 582 initial_define_key (global_map, Ctl ('B'), "backward-char"); | |
| 583 initial_define_key (global_map, Ctl ('D'), "delete-char"); | |
| 584 initial_define_key (global_map, Ctl ('E'), "end-of-line"); | |
| 585 initial_define_key (global_map, Ctl ('F'), "forward-char"); | |
| 586 initial_define_key (global_map, 0177, "delete-backward-char"); | |
| 587 } |
