annotate src/cmds.c @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents 8971ddf55736
children e038c1a8307c
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.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
2 Copyright (C) 1985, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
3 2003, 2004, 2005, 2006, 2007, 2008
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
4 Free Software Foundation, Inc.
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93545
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93545
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93545
diff changeset
11 (at your option) any later version.
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93545
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4561
diff changeset
22 #include <config.h>
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "lisp.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "commands.h"
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "buffer.h"
88351
aac41b50c875 Include "character.h" instead of "charset.h".
Kenichi Handa <handa@m17n.org>
parents: 41001
diff changeset
26 #include "character.h"
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include "syntax.h"
8755
a6be4973b11f Include window.h.
Richard M. Stallman <rms@gnu.org>
parents: 8649
diff changeset
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"
39748
42b7a798ff79 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31182
diff changeset
30 #include "keymap.h"
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21254
diff changeset
31 #include "dispextern.h"
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 Lisp_Object Qkill_forward_chars, Qkill_backward_chars, Vblink_paren_function;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
35 /* 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
36 Lisp_Object Qoverwrite_mode_binary;
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
37
10729
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
38 /* 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
39 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
40
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
41 /* 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
42 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
43
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
44 extern Lisp_Object Qface;
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
45 extern Lisp_Object Vtranslation_table_for_input;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
47 DEFUN ("forward-point", Fforward_point, Sforward_point, 1, 1, 0,
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
48 doc: /* Return buffer position N characters after (before if N negative) point. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
49 (n)
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
50 Lisp_Object n;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
51 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
52 CHECK_NUMBER (n);
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
53
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
54 return make_number (PT + XINT (n));
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
55 }
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
56
93545
63d60f1f216a (Fforward_char, Fbackward_char, Fforward_line)
Chong Yidong <cyd@stupidchicken.com>
parents: 91327
diff changeset
57 DEFUN ("forward-char", Fforward_char, Sforward_char, 0, 1, "^p",
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
58 doc: /* Move point right N characters (left if N is negative).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
59 On reaching end of buffer, stop and signal error. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
60 (n)
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
61 Lisp_Object n;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 {
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
63 if (NILP (n))
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
64 XSETFASTINT (n, 1);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
66 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
68 /* 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
69 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
70 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
71 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
72 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
73 {
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
74 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
75
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
76 if (new_point < BEGV)
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
77 {
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
78 SET_PT (BEGV);
71971
a0c56d32ce9f (Fforward_char, Fdelete_char): Use xsignal0.
Kim F. Storm <storm@cua.dk>
parents: 68839
diff changeset
79 xsignal0 (Qbeginning_of_buffer);
2777
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 if (new_point > ZV)
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
82 {
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
83 SET_PT (ZV);
71971
a0c56d32ce9f (Fforward_char, Fdelete_char): Use xsignal0.
Kim F. Storm <storm@cua.dk>
parents: 68839
diff changeset
84 xsignal0 (Qend_of_buffer);
2777
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
85 }
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 SET_PT (new_point);
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
88 }
40e00789f1c1 * cmds.c (Fforward_char): Check proposed new position, and then
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
89
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
93545
63d60f1f216a (Fforward_char, Fbackward_char, Fforward_line)
Chong Yidong <cyd@stupidchicken.com>
parents: 91327
diff changeset
93 DEFUN ("backward-char", Fbackward_char, Sbackward_char, 0, 1, "^p",
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
94 doc: /* Move point left N characters (right if N is negative).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
95 On attempt to pass beginning or end of buffer, stop and signal error. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
96 (n)
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
97 Lisp_Object n;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 {
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
99 if (NILP (n))
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
100 XSETFASTINT (n, 1);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
102 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
104 XSETINT (n, - XINT (n));
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
105 return Fforward_char (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107
93545
63d60f1f216a (Fforward_char, Fbackward_char, Fforward_line)
Chong Yidong <cyd@stupidchicken.com>
parents: 91327
diff changeset
108 DEFUN ("forward-line", Fforward_line, Sforward_line, 0, 1, "^p",
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
109 doc: /* Move N lines forward (backward if N is negative).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
110 Precisely, if point is on line I, move to the start of line I + N.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
111 If there isn't room, go as far as possible (no error).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
112 Returns the count of lines left to move. If moving forward,
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
113 that is N - number of lines moved; if backward, N + number moved.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
114 With positive N, a non-empty line at the end counts as one line
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
115 successfully moved (for the return value). */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
116 (n)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 {
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
119 int opoint = PT, opoint_byte = PT_BYTE;
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
120 int pos, pos_byte;
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
121 int count, shortage;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
123 if (NILP (n))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 count = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
127 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 count = XINT (n);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
131 if (count <= 0)
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
132 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
133 else
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
134 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
135
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
136 /* Since scan_newline does TEMP_SET_PT_BOTH,
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
137 and we want to set PT "for real",
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
138 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
139 pos = PT;
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
140 pos_byte = PT_BYTE;
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
141 TEMP_SET_PT_BOTH (opoint, opoint_byte);
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
142 SET_PT_BOTH (pos, pos_byte);
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
143
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 if (shortage > 0
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
145 && (count <= 0
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
146 || (ZV > BEGV
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
147 && PT != opoint
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
148 && (FETCH_BYTE (PT_BYTE - 1) != '\n'))))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 shortage--;
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
150
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
151 return make_number (count <= 0 ? - shortage : shortage);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153
93545
63d60f1f216a (Fforward_char, Fbackward_char, Fforward_line)
Chong Yidong <cyd@stupidchicken.com>
parents: 91327
diff changeset
154 DEFUN ("beginning-of-line", Fbeginning_of_line, Sbeginning_of_line, 0, 1, "^p",
40041
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
155 doc: /* Move point to beginning of current line.
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
156 With argument N not nil or 1, move forward N - 1 lines first.
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
157 If point reaches the beginning or end of buffer, it stops there.
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
158
68393
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
159 This function constrains point to the current field unless this moves
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
160 point to a different line than the original, unconstrained result. If
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
161 N is nil or 1, and a front-sticky field starts at point, the point
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
162 does not move. To ignore field boundaries bind
68391
64fbda7a8666 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 64770
diff changeset
163 `inhibit-field-text-motion' to t, or use the `forward-line' function
64fbda7a8666 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 64770
diff changeset
164 instead. For instance, `(forward-line 0)' does the same thing as
64fbda7a8666 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 64770
diff changeset
165 `(beginning-of-line)', except that it ignores field boundaries. */)
40041
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
166 (n)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
169 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
170 XSETFASTINT (n, 1);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
172 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
25632
82ebdf9967da (Fbeginning_of_line): Don't handle minibuffer prompt here.
Richard M. Stallman <rms@gnu.org>
parents: 25351
diff changeset
174 SET_PT (XINT (Fline_beginning_position (n)));
45618
21c0392ac82a (Fdelete_backward_char, internal_self_insert): Cast
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 44754
diff changeset
175
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178
93545
63d60f1f216a (Fforward_char, Fbackward_char, Fforward_line)
Chong Yidong <cyd@stupidchicken.com>
parents: 91327
diff changeset
179 DEFUN ("end-of-line", Fend_of_line, Send_of_line, 0, 1, "^p",
40041
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
180 doc: /* Move point to end of current line.
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
181 With argument N not nil or 1, move forward N - 1 lines first.
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
182 If point reaches the beginning or end of buffer, it stops there.
54011
b7bf96cb1f23 (Fend_of_line): Doc fix.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
183 To ignore intangibility, bind `inhibit-point-motion-hooks' to t.
40041
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
184
68393
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
185 This function constrains point to the current field unless this moves
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
186 point to a different line than the original, unconstrained result. If
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
187 N is nil or 1, and a rear-sticky field ends at point, the point does
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
188 not move. To ignore field boundaries bind `inhibit-field-text-motion'
b5ff41ef0331 (Fbeginning_of_line, Fend_of_line): Clarify confusing doc string.
Károly Lőrentey <lorentey@elte.hu>
parents: 68391
diff changeset
189 to t. */)
40041
9d6d2c8564b3 (Fbeginning_of_line, Fend_of_line): Clarify interaction with fields and
Miles Bader <miles@gnu.org>
parents: 39748
diff changeset
190 (n)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 Lisp_Object n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 {
44754
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
193 int newpos;
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
194
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
195 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
196 XSETFASTINT (n, 1);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
198 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
44754
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
200 while (1)
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
201 {
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
202 newpos = XINT (Fline_end_position (n));
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
203 SET_PT (newpos);
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
204
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
205 if (PT > newpos
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
206 && FETCH_CHAR (PT - 1) == '\n')
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
207 {
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
208 /* If we skipped over a newline that follows
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
209 an invisible intangible run,
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
210 move back to the last tangible position
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
211 within the line. */
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
212
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
213 SET_PT (PT - 1);
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
214 break;
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
215 }
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
216 else if (PT > newpos && PT < ZV
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
217 && FETCH_CHAR (PT) != '\n')
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
218 /* If we skipped something intangible
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
219 and now we're not really at eol,
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
220 keep going. */
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
221 n = make_number (1);
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
222 else
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
223 break;
628a697e2315 (Fend_of_line): Handle intangible text in mid line.
Richard M. Stallman <rms@gnu.org>
parents: 41001
diff changeset
224 }
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 DEFUN ("delete-char", Fdelete_char, Sdelete_char, 1, 2, "p\nP",
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
230 doc: /* Delete the following N characters (previous if N is negative).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
231 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
232 Interactively, N is the prefix arg, and KILLFLAG is set if
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
233 N was explicitly specified. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
234 (n, killflag)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 Lisp_Object n, killflag;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 {
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
237 int pos;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
238
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
239 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
241 pos = PT + XINT (n);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
242 if (NILP (killflag))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 if (XINT (n) < 0)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 {
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
246 if (pos < BEGV)
71971
a0c56d32ce9f (Fforward_char, Fdelete_char): Use xsignal0.
Kim F. Storm <storm@cua.dk>
parents: 68839
diff changeset
247 xsignal0 (Qbeginning_of_buffer);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 else
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
249 del_range (pos, PT);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 {
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
253 if (pos > ZV)
71971
a0c56d32ce9f (Fforward_char, Fdelete_char): Use xsignal0.
Kim F. Storm <storm@cua.dk>
parents: 68839
diff changeset
254 xsignal0 (Qend_of_buffer);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 else
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
256 del_range (PT, pos);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 else
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 call1 (Qkill_forward_chars, n);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 DEFUN ("delete-backward-char", Fdelete_backward_char, Sdelete_backward_char,
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
267 1, 2, "p\nP",
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
268 doc: /* Delete the previous N characters (following if N is negative).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
269 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
270 Interactively, N is the prefix arg, and KILLFLAG is set if
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
271 N was explicitly specified. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
272 (n, killflag)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 Lisp_Object n, killflag;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 {
14436
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
275 Lisp_Object value;
15875
5ffb83189a1b (Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents: 15262
diff changeset
276 int deleted_special = 0;
20958
806727604be8 (Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents: 20708
diff changeset
277 int pos, pos_byte, i;
14436
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
278
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
279 CHECK_NUMBER (n);
14436
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
280
15875
5ffb83189a1b (Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents: 15262
diff changeset
281 /* 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
282 pos = PT;
806727604be8 (Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents: 20708
diff changeset
283 pos_byte = PT_BYTE;
806727604be8 (Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents: 20708
diff changeset
284 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
285 {
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
286 int c;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
287
20958
806727604be8 (Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents: 20708
diff changeset
288 DEC_BOTH (pos, pos_byte);
806727604be8 (Fdelete_backward_char): Count both bytes and chars.
Karl Heuer <kwzh@gnu.org>
parents: 20708
diff changeset
289 c = FETCH_BYTE (pos_byte);
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
290 if (c == '\t' || c == '\n')
14436
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
291 {
15875
5ffb83189a1b (Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents: 15262
diff changeset
292 deleted_special = 1;
14436
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
293 break;
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
294 }
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
295 }
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
296
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
297 /* 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
298 unless at end of line. */
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
299 if (XINT (n) > 0
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
300 && ! NILP (current_buffer->overwrite_mode)
15875
5ffb83189a1b (Fdelete_backward_char): Fix off-by-one error.
Karl Heuer <kwzh@gnu.org>
parents: 15262
diff changeset
301 && ! deleted_special
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
302 && ! (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
303 {
45618
21c0392ac82a (Fdelete_backward_char, internal_self_insert): Cast
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 44754
diff changeset
304 int column = (int) current_column (); /* iftc */
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
305
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
306 value = Fdelete_char (make_number (-XINT (n)), killflag);
45618
21c0392ac82a (Fdelete_backward_char, internal_self_insert): Cast
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 44754
diff changeset
307 i = column - (int) current_column (); /* iftc */
18748
6897bd6a1c8d (Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents: 18239
diff changeset
308 Finsert_char (make_number (' '), make_number (i), Qnil);
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
309 /* 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
310 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
311 }
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
312 else
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
313 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
314
b56083146a42 (Fdelete_backward_char): In overwrite mode,
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
315 return value;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
318 /* Note that there's code in command_loop_1 which typically avoids
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
319 calling this. */
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 DEFUN ("self-insert-command", Fself_insert_command, Sself_insert_command, 1, 1, "p",
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
321 doc: /* Insert the character you type.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
322 Whichever character you type to run this command is inserted. */)
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
323 (n)
14065
60600bcfe5f1 (Fforward_line, Fbeginning_of_line, Fend_of_line, Fdelete_char,
Erik Naggum <erik@naggum.no>
parents: 13825
diff changeset
324 Lisp_Object n;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40041
diff changeset
326 CHECK_NUMBER (n);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 /* Barf if the key that invoked this was not a character. */
88823
61df12ee934b (Fself_insert_command): Use CHARACTERP.
Dave Love <fx@gnu.org>
parents: 88351
diff changeset
329 if (!CHARACTERP (last_command_char))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 bitch_at_user ();
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
331 {
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
332 int character = translate_char (Vtranslation_table_for_input,
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89057
diff changeset
333 XINT (last_command_char));
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
334 if (XINT (n) >= 2 && NILP (current_buffer->overwrite_mode))
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
335 {
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
336 int modified_char = character;
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
337 /* Add the offset to the character, for Finsert_char.
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
338 We pass internal_self_insert the unmodified character
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
339 because it itself does this offsetting. */
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
340 if (! NILP (current_buffer->enable_multibyte_characters))
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
341 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
342
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
343 XSETFASTINT (n, XFASTINT (n) - 2);
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
344 /* The first one might want to expand an abbrev. */
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
345 internal_self_insert (character, 1);
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
346 /* The bulk of the copies of this char can be inserted simply.
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
347 We don't have to handle a user-specified face specially
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
348 because it will get inherited from the first char inserted. */
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
349 Finsert_char (make_number (modified_char), n, Qt);
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
350 /* The last one might want to auto-fill. */
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
351 internal_self_insert (character, 0);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 }
48228
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
353 else
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
354 while (XINT (n) > 0)
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
355 {
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
356 /* Ok since old and new vals both nonneg */
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
357 XSETFASTINT (n, XFASTINT (n) - 1);
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
358 internal_self_insert (character, XFASTINT (n) != 0);
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
359 }
461d780ae946 (Fself_insert_command): Apply Vtranslation_table_for_input.
Dave Love <fx@gnu.org>
parents: 45618
diff changeset
360 }
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 return Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
365 /* 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
366 even if it is enabled.
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
367
f7e3bac23a06 (internal_self_insert): Ignore value of Fexpand_abbrev;
Richard M. Stallman <rms@gnu.org>
parents: 647
diff changeset
368 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
369 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
370 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
371
51819
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
372 static Lisp_Object Qexpand_abbrev;
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
373
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21254
diff changeset
374 int
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
375 internal_self_insert (c, noautofill)
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
376 int c;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 int noautofill;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 int hairy = 0;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 Lisp_Object tem;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 register enum syntaxcode synt;
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
382 Lisp_Object overwrite, string;
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
383 /* Length of multi-byte form of C. */
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
384 int len;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
385 /* Working buffer and pointer for multi-byte form of C. */
26845
5c3e047bbf23 (internal_self_insert): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents: 26390
diff changeset
386 unsigned char str[MAX_MULTIBYTE_LENGTH];
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
387 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
388 int spaces_to_insert = 0;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389
6496
e1967b6d9a5c (internal_self_insert): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 5754
diff changeset
390 overwrite = current_buffer->overwrite_mode;
29378
141820271eff (internal_self_insert): Don't check
Dave Love <fx@gnu.org>
parents: 27379
diff changeset
391 if (!NILP (Vbefore_change_functions) || !NILP (Vafter_change_functions))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 hairy = 1;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
394 /* At first, get multi-byte form of C in STR. */
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
395 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
396 {
26845
5c3e047bbf23 (internal_self_insert): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents: 26390
diff changeset
397 len = CHAR_STRING (c, str);
23765
1944b3595afd (internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents: 23487
diff changeset
398 if (len == 1)
1944b3595afd (internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents: 23487
diff changeset
399 /* 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
400 one-byte char. */
1944b3595afd (internal_self_insert): If C has modifier bits, insert
Kenichi Handa <handa@m17n.org>
parents: 23487
diff changeset
401 c = *str;
21032
3bf522f06501 (internal_self_insert): Avoid checking enable-multibyte-characters
Kenichi Handa <handa@m17n.org>
parents: 20958
diff changeset
402 }
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
403 else
22926
436499b7a769 (internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
404 {
26845
5c3e047bbf23 (internal_self_insert): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents: 26390
diff changeset
405 str[0] = (SINGLE_BYTE_CHAR_P (c)
5c3e047bbf23 (internal_self_insert): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents: 26390
diff changeset
406 ? c
5c3e047bbf23 (internal_self_insert): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents: 26390
diff changeset
407 : multibyte_char_to_unibyte (c, Qnil));
22926
436499b7a769 (internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
408 len = 1;
436499b7a769 (internal_self_insert): If enable-multibyte-characters is
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
409 }
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
410 if (!NILP (overwrite)
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
411 && PT < ZV)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 {
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
413 /* In overwrite-mode, we substitute a character at point (C2,
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
414 hereafter) by C. For that, we delete C2 in advance. But,
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
415 just substituting C2 by C may move a remaining text in the
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
416 line to the right or to the left, which is not preferable.
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
417 So we insert more spaces or delete more characters in the
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
418 following cases: if C is narrower than C2, after deleting C2,
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
419 we fill columns with spaces, if C is wider than C2, we delete
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
420 C2 and several characters following C2. */
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
421
20615
ddb1eec37783 (internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents: 20541
diff changeset
422 /* This is the character after point. */
ddb1eec37783 (internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents: 20541
diff changeset
423 int c2 = FETCH_CHAR (PT_BYTE);
ddb1eec37783 (internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents: 20541
diff changeset
424
ddb1eec37783 (internal_self_insert): Simplify handling of c2;
Richard M. Stallman <rms@gnu.org>
parents: 20541
diff changeset
425 /* Column the cursor should be placed at after this insertion.
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
426 The correct value should be calculated only when necessary. */
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
427 int target_clm = 0;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
428
19658
063c22255157 (internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents: 18813
diff changeset
429 /* 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
430 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
431 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
432 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
433 or before a tab if it doesn't use the whole width of the tab. */
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
434 if (EQ (overwrite, Qoverwrite_mode_binary)
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
435 || (c != '\n'
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
436 && 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
437 && ! (c2 == '\t'
063c22255157 (internal_self_insert): Only set TARGET_CLM when C2 is tab.
Richard M. Stallman <rms@gnu.org>
parents: 18813
diff changeset
438 && 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
439 && XFASTINT (current_buffer->tab_width) < 20
45618
21c0392ac82a (Fdelete_backward_char, internal_self_insert): Cast
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 44754
diff changeset
440 && (target_clm = ((int) current_column () /* iftc */
24423
230bace6a57a (internal_self_insert): Calculate column properly
Karl Heuer <kwzh@gnu.org>
parents: 23765
diff changeset
441 + 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
442 target_clm % XFASTINT (current_buffer->tab_width)))))
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
443 {
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
444 int pos = PT;
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
445 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
446
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
447 if (target_clm == 0)
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
448 chars_to_delete = 1;
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
449 else
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
450 {
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
451 /* The actual cursor position after the trial of moving
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
452 to column TARGET_CLM. It is greater than TARGET_CLM
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
453 if the TARGET_CLM is middle of multi-column
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
454 character. In that case, the new point is set after
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
455 that character. */
18748
6897bd6a1c8d (Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents: 18239
diff changeset
456 int actual_clm
6897bd6a1c8d (Fdelete_backward_char): Convert Finsert_char argument to
Richard M. Stallman <rms@gnu.org>
parents: 18239
diff changeset
457 = XFASTINT (Fmove_to_column (make_number (target_clm), Qnil));
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
458
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
459 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
460
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
461 if (actual_clm > target_clm)
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
462 {
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
463 /* We will delete too many columns. Let's fill columns
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
464 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
465 spaces_to_insert = actual_clm - target_clm;
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
466 }
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
467 }
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
468 SET_PT_BOTH (pos, pos_byte);
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
469 hairy = 2;
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
470 }
8088
a831980bb12e (internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
471 hairy = 2;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 }
89057
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
473
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
474 if (NILP (current_buffer->enable_multibyte_characters))
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
475 MAKE_CHAR_MULTIBYTE (c);
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
476 synt = SYNTAX (c);
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
477
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
478 if (!NILP (current_buffer->abbrev_mode)
89057
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
479 && synt != Sword
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 239
diff changeset
480 && NILP (current_buffer->read_only)
89057
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
481 && PT > BEGV
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
482 && (!NILP (current_buffer->enable_multibyte_characters)
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
483 ? SYNTAX (XFASTINT (Fprevious_char ())) == Sword
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
484 : (SYNTAX (unibyte_char_to_multibyte (XFASTINT (Fprevious_char ())))
08f4bdc64a89 (internal_self_insert): In a multibyte buffer, insert C
Kenichi Handa <handa@m17n.org>
parents: 88823
diff changeset
485 == Sword)))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 {
1098
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
487 int modiff = MODIFF;
16748
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
488 Lisp_Object sym;
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
489
51819
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
490 sym = call0 (Qexpand_abbrev);
16748
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
491
27379
48cb03c9d1d8 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 26845
diff changeset
492 /* If we expanded an abbrev which has a hook,
16809
c378600f005d (internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents: 16748
diff changeset
493 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
494 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
495 if (! NILP (sym) && ! NILP (XSYMBOL (sym)->function)
c378600f005d (internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents: 16748
diff changeset
496 && 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
497 {
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
498 Lisp_Object prop;
16809
c378600f005d (internal_self_insert): Check the property
Richard M. Stallman <rms@gnu.org>
parents: 16748
diff changeset
499 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
500 if (! NILP (prop))
17376
aef6095be65c (internal_self_insert): Fix return value.
Karl Heuer <kwzh@gnu.org>
parents: 17026
diff changeset
501 return 1;
16748
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
502 }
64f315c0e3f4 (internal_self_insert): If the abbrev has no expansion,
Richard M. Stallman <rms@gnu.org>
parents: 16657
diff changeset
503
1098
79f020f34683 (internal_self_insert): Assume Fexpand_abbrev expanded
Richard M. Stallman <rms@gnu.org>
parents: 1022
diff changeset
504 if (MODIFF != modiff)
8088
a831980bb12e (internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
505 hairy = 2;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 }
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
507
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
508 if (chars_to_delete)
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
509 {
21254
d25a091700e5 (internal_self_insert): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21238
diff changeset
510 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
511 if (spaces_to_insert)
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
512 {
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
513 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
514 make_number (' '));
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
515 string = concat2 (tem, string);
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
516 }
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
517
23062
fec0e9653480 (internal_self_insert): Pass 1 as NOMARKERS to replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 22926
diff changeset
518 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
519 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
520 }
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
521 else
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
522 insert_and_inherit (str, len);
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
523
23487
6bed0cb78b71 (internal_self_insert): Check Vauto_fill_chars.
Kenichi Handa <handa@m17n.org>
parents: 23062
diff changeset
524 if ((CHAR_TABLE_P (Vauto_fill_chars)
6bed0cb78b71 (internal_self_insert): Check Vauto_fill_chars.
Kenichi Handa <handa@m17n.org>
parents: 23062
diff changeset
525 ? !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
526 : (c == ' ' || c == '\n'))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 && !noautofill
10474
caf4440e63e8 (internal_self_insert): Don't test current_column
Richard M. Stallman <rms@gnu.org>
parents: 10425
diff changeset
528 && !NILP (current_buffer->auto_fill_function))
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 {
15262
b455f3f77823 (internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents: 14436
diff changeset
530 Lisp_Object tem;
b455f3f77823 (internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents: 14436
diff changeset
531
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
532 if (c == '\n')
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
533 /* 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
534 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
535 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
536 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
537 tem = call0 (current_buffer->auto_fill_function);
68839
14ada287f3fd (internal_self_insert): Handle weird auto-fill-function.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
538 /* Test PT < ZV in case the auto-fill-function is strange. */
14ada287f3fd (internal_self_insert): Handle weird auto-fill-function.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
539 if (c == '\n' && PT < ZV)
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
540 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
541 if (!NILP (tem))
b455f3f77823 (internal_self_insert): Don't return 2 for auto-fill
Karl Heuer <kwzh@gnu.org>
parents: 14436
diff changeset
542 hairy = 2;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 }
10729
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
544
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
545 /* 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
546 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
547 && 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
548 {
20541
0cd7f6f42138 (forward_point): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 19658
diff changeset
549 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
550 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
551 Vself_insert_face = Qnil;
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
552 }
18813
498c1590b4a8 (internal_self_insert): When overwriting, use replace_range.
Richard M. Stallman <rms@gnu.org>
parents: 18748
diff changeset
553
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 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
555 && !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
556 && !noautofill)
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 call0 (Vblink_paren_function);
8088
a831980bb12e (internal_self_insert): Now can return 2.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
559 hairy = 2;
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 return hairy;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 /* module initialization */
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21254
diff changeset
566 void
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 syms_of_cmds ()
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 Qkill_backward_chars = intern ("kill-backward-chars");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 staticpro (&Qkill_backward_chars);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 Qkill_forward_chars = intern ("kill-forward-chars");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 staticpro (&Qkill_forward_chars);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2159
diff changeset
575 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
576 staticpro (&Qoverwrite_mode_binary);
1948
e7b8107294b7 (syms_of_cmds): New var `overwrite-binary-mode'.
Richard M. Stallman <rms@gnu.org>
parents: 1098
diff changeset
577
51819
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
578 Qexpand_abbrev = intern ("expand-abbrev");
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
579 staticpro (&Qexpand_abbrev);
ff438bca7989 (Qexpand_abbrev): New sym.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48228
diff changeset
580
10729
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
581 DEFVAR_LISP ("self-insert-face", &Vself_insert_face,
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
582 doc: /* If non-nil, set the face of the next self-inserting character to this.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
583 See also `self-insert-face-command'. */);
10729
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
584 Vself_insert_face = Qnil;
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
585
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
586 DEFVAR_LISP ("self-insert-face-command", &Vself_insert_face_command,
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
587 doc: /* This is the command that set up `self-insert-face'.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
588 If `last-command' does not equal this value, we ignore `self-insert-face'. */);
10729
fb4f688fc2cf (Vself_insert_face, Vself_insert_face_command): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 10474
diff changeset
589 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
590
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 DEFVAR_LISP ("blink-paren-function", &Vblink_paren_function,
41001
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
592 doc: /* Function called, if non-nil, whenever a close parenthesis is inserted.
a17c8b15ef1b Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 40656
diff changeset
593 More precisely, a char with closeparen syntax is self-inserted. */);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 Vblink_paren_function = Qnil;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595
17026
4557b42ba1dc Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16809
diff changeset
596 defsubr (&Sforward_point);
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 defsubr (&Sforward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 defsubr (&Sbackward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 defsubr (&Sforward_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 defsubr (&Sbeginning_of_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 defsubr (&Send_of_line);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 defsubr (&Sdelete_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 defsubr (&Sdelete_backward_char);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 defsubr (&Sself_insert_command);
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 }
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21254
diff changeset
609 void
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 keys_of_cmds ()
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 {
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 int n;
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613
10425
f44f048966e8 (Vuse_hard_newlines): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9884
diff changeset
614 initial_define_key (global_map, Ctl ('I'), "self-insert-command");
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615 for (n = 040; n < 0177; n++)
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616 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
617 #ifdef MSDOS
3965bf498738 (keys_of_cmds) [MSDOS]: Chars 0200 to 0237 self-insert.
Richard M. Stallman <rms@gnu.org>
parents: 5054
diff changeset
618 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
619 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
620 #endif
5054
34c280d4e1af (keys_of_cmds): Make 0377 self-inserting.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
621 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
622 initial_define_key (global_map, n, "self-insert-command");
239
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 initial_define_key (global_map, Ctl ('A'), "beginning-of-line");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 initial_define_key (global_map, Ctl ('B'), "backward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 initial_define_key (global_map, Ctl ('D'), "delete-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 initial_define_key (global_map, Ctl ('E'), "end-of-line");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 initial_define_key (global_map, Ctl ('F'), "forward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 initial_define_key (global_map, 0177, "delete-backward-char");
ed9362406f5f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51819
diff changeset
631
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51819
diff changeset
632 /* arch-tag: 022ba3cd-67f9-4978-9c5d-7d2b18d8644e
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51819
diff changeset
633 (do not change this comment) */