Mercurial > emacs
annotate src/data.c @ 52522:eb10e3fe4d13
*** empty log message ***
author | Dave Love <fx@gnu.org> |
---|---|
date | Wed, 17 Sep 2003 13:30:23 +0000 |
parents | 695cf19ef79e |
children | ab6a470dc45f 375f2633d815 |
rev | line source |
---|---|
298 | 1 /* Primitive operations on Lisp data types for GNU Emacs Lisp interpreter. |
50109
d23ab2416c49
(long_to_cons): Fix type of top.
Andreas Schwab <schwab@suse.de>
parents:
48996
diff
changeset
|
2 Copyright (C) 1985,86,88,93,94,95,97,98,99, 2000, 2001, 2003 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
3 Free Software Foundation, Inc. |
298 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
7 GNU Emacs is free software; you can redistribute it and/or modify | |
8 it under the terms of the GNU General Public License as published by | |
12244 | 9 the Free Software Foundation; either version 2, or (at your option) |
298 | 10 any later version. |
11 | |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14096
diff
changeset
|
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14096
diff
changeset
|
20 Boston, MA 02111-1307, USA. */ |
298 | 21 |
22 | |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25780
diff
changeset
|
23 #include <config.h> |
298 | 24 #include <signal.h> |
25780
18cf58ed9400
(find_symbol_value): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25665
diff
changeset
|
25 #include <stdio.h> |
298 | 26 #include "lisp.h" |
336 | 27 #include "puresize.h" |
17027 | 28 #include "charset.h" |
298 | 29 #include "buffer.h" |
11341 | 30 #include "keyboard.h" |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
31 #include "frame.h" |
552 | 32 #include "syssignal.h" |
348 | 33 |
2781
fde05936aebb
* lread.c, data.c: If STDC_HEADERS is #defined, include <stdlib.h>
Jim Blandy <jimb@redhat.com>
parents:
2647
diff
changeset
|
34 #ifdef STDC_HEADERS |
20122
923e1f635ace
No need to include <float.h> before "lisp.h",
Paul Eggert <eggert@twinsun.com>
parents:
20055
diff
changeset
|
35 #include <float.h> |
2781
fde05936aebb
* lread.c, data.c: If STDC_HEADERS is #defined, include <stdlib.h>
Jim Blandy <jimb@redhat.com>
parents:
2647
diff
changeset
|
36 #endif |
4860
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
37 |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
38 /* If IEEE_FLOATING_POINT isn't defined, default it from FLT_*. */ |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
39 #ifndef IEEE_FLOATING_POINT |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
40 #if (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \ |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
41 && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128) |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
42 #define IEEE_FLOATING_POINT 1 |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
43 #else |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
44 #define IEEE_FLOATING_POINT 0 |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
45 #endif |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
46 #endif |
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
47 |
4860
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
48 /* Work around a problem that happens because math.h on hpux 7 |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
49 defines two static variables--which, in Emacs, are not really static, |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
50 because `static' is defined as nothing. The problem is that they are |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
51 here, in floatfns.c, and in lread.c. |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
52 These macros prevent the name conflict. */ |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
53 #if defined (HPUX) && !defined (HPUX8) |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
54 #define _MAXLDBL data_c_maxldbl |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
55 #define _NMAXLDBL data_c_nmaxldbl |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
56 #endif |
ff23fe23f58c
[hpux 7] (_MAXLDBL, _NMAXLDBL): New macro definitions.
Richard M. Stallman <rms@gnu.org>
parents:
4780
diff
changeset
|
57 |
298 | 58 #include <math.h> |
59 | |
4780
64cdff1c8ad1
Add declaration for atof if not predefined.
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
60 #if !defined (atof) |
64cdff1c8ad1
Add declaration for atof if not predefined.
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
61 extern double atof (); |
64cdff1c8ad1
Add declaration for atof if not predefined.
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
62 #endif /* !atof */ |
64cdff1c8ad1
Add declaration for atof if not predefined.
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
63 |
298 | 64 Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound; |
65 Lisp_Object Qerror_conditions, Qerror_message, Qtop_level; | |
66 Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range; | |
648 | 67 Lisp_Object Qvoid_variable, Qvoid_function, Qcyclic_function_indirection; |
39767
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
68 Lisp_Object Qcyclic_variable_indirection, Qcircular_list; |
298 | 69 Lisp_Object Qsetting_constant, Qinvalid_read_syntax; |
70 Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch; | |
4036 | 71 Lisp_Object Qend_of_file, Qarith_error, Qmark_inactive; |
298 | 72 Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
73 Lisp_Object Qtext_read_only; |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
74 Lisp_Object Qintegerp, Qnatnump, Qwholenump, Qsymbolp, Qlistp, Qconsp; |
298 | 75 Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; |
76 Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; | |
26931 | 77 Lisp_Object Qbuffer_or_string_p, Qkeywordp; |
298 | 78 Lisp_Object Qboundp, Qfboundp; |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
79 Lisp_Object Qchar_table_p, Qvector_or_char_table_p; |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
80 |
298 | 81 Lisp_Object Qcdr; |
26205
65a0abaeed68
(Qad_activate_internal): Renamed from Qad_activate.
Gerd Moellmann <gerd@gnu.org>
parents:
26185
diff
changeset
|
82 Lisp_Object Qad_advice_info, Qad_activate_internal; |
298 | 83 |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
84 Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error; |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
85 Lisp_Object Qoverflow_error, Qunderflow_error; |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
86 |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
87 Lisp_Object Qfloatp; |
298 | 88 Lisp_Object Qnumberp, Qnumber_or_marker_p; |
89 | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
90 static Lisp_Object Qinteger, Qsymbol, Qstring, Qcons, Qmarker, Qoverlay; |
17027 | 91 static Lisp_Object Qfloat, Qwindow_configuration, Qwindow; |
92 Lisp_Object Qprocess; | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
93 static Lisp_Object Qcompiled_function, Qbuffer, Qframe, Qvector; |
26185 | 94 static Lisp_Object Qchar_table, Qbool_vector, Qhash_table; |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
95 static Lisp_Object Qsubrp, Qmany, Qunevalled; |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
96 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
97 static Lisp_Object swap_in_symval_forwarding P_ ((Lisp_Object, Lisp_Object)); |
17830
3cf4a044aaad
Declare set_internal as Lisp_Object in advance to avoid
Kenichi Handa <handa@m17n.org>
parents:
17780
diff
changeset
|
98 |
41865
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
99 Lisp_Object Vmost_positive_fixnum, Vmost_negative_fixnum; |
39632
8cd74f2aa6e2
(most_positive_fixnum, most_negative_fixnum): New
Gerd Moellmann <gerd@gnu.org>
parents:
39575
diff
changeset
|
100 |
39767
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
101 |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
102 void |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
103 circular_list_error (list) |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
104 Lisp_Object list; |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
105 { |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
106 Fsignal (Qcircular_list, list); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
107 } |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
108 |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
109 |
298 | 110 Lisp_Object |
111 wrong_type_argument (predicate, value) | |
112 register Lisp_Object predicate, value; | |
113 { | |
114 register Lisp_Object tem; | |
115 do | |
116 { | |
10245
f0637b2f1671
(wrong_type_argument): Abort if VALUE is invalid Lisp object.
Richard M. Stallman <rms@gnu.org>
parents:
9966
diff
changeset
|
117 /* If VALUE is not even a valid Lisp object, abort here |
f0637b2f1671
(wrong_type_argument): Abort if VALUE is invalid Lisp object.
Richard M. Stallman <rms@gnu.org>
parents:
9966
diff
changeset
|
118 where we can get a backtrace showing where it came from. */ |
10248
8b95a9a6d466
(wrong_type_argument): Use Lisp_Type_Limit.
Richard M. Stallman <rms@gnu.org>
parents:
10245
diff
changeset
|
119 if ((unsigned int) XGCTYPE (value) >= Lisp_Type_Limit) |
10245
f0637b2f1671
(wrong_type_argument): Abort if VALUE is invalid Lisp object.
Richard M. Stallman <rms@gnu.org>
parents:
9966
diff
changeset
|
120 abort (); |
f0637b2f1671
(wrong_type_argument): Abort if VALUE is invalid Lisp object.
Richard M. Stallman <rms@gnu.org>
parents:
9966
diff
changeset
|
121 |
298 | 122 value = Fsignal (Qwrong_type_argument, Fcons (predicate, Fcons (value, Qnil))); |
123 tem = call1 (predicate, value); | |
124 } | |
490 | 125 while (NILP (tem)); |
298 | 126 return value; |
127 } | |
128 | |
21514 | 129 void |
298 | 130 pure_write_error () |
131 { | |
132 error ("Attempt to modify read-only object"); | |
133 } | |
134 | |
135 void | |
136 args_out_of_range (a1, a2) | |
137 Lisp_Object a1, a2; | |
138 { | |
139 while (1) | |
140 Fsignal (Qargs_out_of_range, Fcons (a1, Fcons (a2, Qnil))); | |
141 } | |
142 | |
143 void | |
144 args_out_of_range_3 (a1, a2, a3) | |
145 Lisp_Object a1, a2, a3; | |
146 { | |
147 while (1) | |
148 Fsignal (Qargs_out_of_range, Fcons (a1, Fcons (a2, Fcons (a3, Qnil)))); | |
149 } | |
150 | |
151 /* On some machines, XINT needs a temporary location. | |
152 Here it is, in case it is needed. */ | |
153 | |
154 int sign_extend_temp; | |
155 | |
156 /* On a few machines, XINT can only be done by calling this. */ | |
157 | |
158 int | |
159 sign_extend_lisp_int (num) | |
8820
f68749766ed1
(sign_extend_lisp_int): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents:
8798
diff
changeset
|
160 EMACS_INT num; |
298 | 161 { |
8820
f68749766ed1
(sign_extend_lisp_int): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents:
8798
diff
changeset
|
162 if (num & (((EMACS_INT) 1) << (VALBITS - 1))) |
f68749766ed1
(sign_extend_lisp_int): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents:
8798
diff
changeset
|
163 return num | (((EMACS_INT) (-1)) << VALBITS); |
298 | 164 else |
8820
f68749766ed1
(sign_extend_lisp_int): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents:
8798
diff
changeset
|
165 return num & ((((EMACS_INT) 1) << VALBITS) - 1); |
298 | 166 } |
167 | |
168 /* Data type predicates */ | |
169 | |
170 DEFUN ("eq", Feq, Seq, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
171 doc: /* Return t if the two args are the same Lisp object. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
172 (obj1, obj2) |
298 | 173 Lisp_Object obj1, obj2; |
174 { | |
175 if (EQ (obj1, obj2)) | |
176 return Qt; | |
177 return Qnil; | |
178 } | |
179 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
180 DEFUN ("null", Fnull, Snull, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
181 doc: /* Return t if OBJECT is nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
182 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
183 Lisp_Object object; |
298 | 184 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
185 if (NILP (object)) |
298 | 186 return Qt; |
187 return Qnil; | |
188 } | |
189 | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
190 DEFUN ("type-of", Ftype_of, Stype_of, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
191 doc: /* Return a symbol representing the type of OBJECT. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
192 The symbol returned names the object's basic type; |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
193 for example, (type-of 1) returns `integer'. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
194 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
195 Lisp_Object object; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
196 { |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
197 switch (XGCTYPE (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
198 { |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
199 case Lisp_Int: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
200 return Qinteger; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
201 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
202 case Lisp_Symbol: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
203 return Qsymbol; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
204 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
205 case Lisp_String: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
206 return Qstring; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
207 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
208 case Lisp_Cons: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
209 return Qcons; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
210 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
211 case Lisp_Misc: |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
212 switch (XMISCTYPE (object)) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
213 { |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
214 case Lisp_Misc_Marker: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
215 return Qmarker; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
216 case Lisp_Misc_Overlay: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
217 return Qoverlay; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
218 case Lisp_Misc_Float: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
219 return Qfloat; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
220 } |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
221 abort (); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
222 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
223 case Lisp_Vectorlike: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
224 if (GC_WINDOW_CONFIGURATIONP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
225 return Qwindow_configuration; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
226 if (GC_PROCESSP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
227 return Qprocess; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
228 if (GC_WINDOWP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
229 return Qwindow; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
230 if (GC_SUBRP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
231 return Qsubr; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
232 if (GC_COMPILEDP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
233 return Qcompiled_function; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
234 if (GC_BUFFERP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
235 return Qbuffer; |
13715
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
236 if (GC_CHAR_TABLE_P (object)) |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
237 return Qchar_table; |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
238 if (GC_BOOL_VECTOR_P (object)) |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
239 return Qbool_vector; |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
240 if (GC_FRAMEP (object)) |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
241 return Qframe; |
26185 | 242 if (GC_HASH_TABLE_P (object)) |
243 return Qhash_table; | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
244 return Qvector; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
245 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
246 case Lisp_Float: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
247 return Qfloat; |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
248 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
249 default: |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
250 abort (); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
251 } |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
252 } |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
253 |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
254 DEFUN ("consp", Fconsp, Sconsp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
255 doc: /* Return t if OBJECT is a cons cell. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
256 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
257 Lisp_Object object; |
298 | 258 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
259 if (CONSP (object)) |
298 | 260 return Qt; |
261 return Qnil; | |
262 } | |
263 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
264 DEFUN ("atom", Fatom, Satom, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
265 doc: /* Return t if OBJECT is not a cons cell. This includes nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
266 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
267 Lisp_Object object; |
298 | 268 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
269 if (CONSP (object)) |
298 | 270 return Qnil; |
271 return Qt; | |
272 } | |
273 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
274 DEFUN ("listp", Flistp, Slistp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
275 doc: /* Return t if OBJECT is a list. This includes nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
276 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
277 Lisp_Object object; |
298 | 278 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
279 if (CONSP (object) || NILP (object)) |
298 | 280 return Qt; |
281 return Qnil; | |
282 } | |
283 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
284 DEFUN ("nlistp", Fnlistp, Snlistp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
285 doc: /* Return t if OBJECT is not a list. Lists include nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
286 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
287 Lisp_Object object; |
298 | 288 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
289 if (CONSP (object) || NILP (object)) |
298 | 290 return Qnil; |
291 return Qt; | |
292 } | |
293 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
294 DEFUN ("symbolp", Fsymbolp, Ssymbolp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
295 doc: /* Return t if OBJECT is a symbol. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
296 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
297 Lisp_Object object; |
298 | 298 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
299 if (SYMBOLP (object)) |
298 | 300 return Qt; |
301 return Qnil; | |
302 } | |
303 | |
26931 | 304 /* Define this in C to avoid unnecessarily consing up the symbol |
305 name. */ | |
306 DEFUN ("keywordp", Fkeywordp, Skeywordp, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
307 doc: /* Return t if OBJECT is a keyword. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
308 This means that it is a symbol with a print name beginning with `:' |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
309 interned in the initial obarray. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
310 (object) |
26931 | 311 Lisp_Object object; |
312 { | |
313 if (SYMBOLP (object) | |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
314 && SREF (SYMBOL_NAME (object), 0) == ':' |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
315 && SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (object)) |
26931 | 316 return Qt; |
317 return Qnil; | |
318 } | |
319 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
320 DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
321 doc: /* Return t if OBJECT is a vector. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
322 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
323 Lisp_Object object; |
298 | 324 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
325 if (VECTORP (object)) |
298 | 326 return Qt; |
327 return Qnil; | |
328 } | |
329 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
330 DEFUN ("stringp", Fstringp, Sstringp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
331 doc: /* Return t if OBJECT is a string. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
332 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
333 Lisp_Object object; |
298 | 334 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
335 if (STRINGP (object)) |
298 | 336 return Qt; |
337 return Qnil; | |
338 } | |
339 | |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
340 DEFUN ("multibyte-string-p", Fmultibyte_string_p, Smultibyte_string_p, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
341 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
342 doc: /* Return t if OBJECT is a multibyte string. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
343 (object) |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
344 Lisp_Object object; |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
345 { |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
346 if (STRINGP (object) && STRING_MULTIBYTE (object)) |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
347 return Qt; |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
348 return Qnil; |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
349 } |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
350 |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
351 DEFUN ("char-table-p", Fchar_table_p, Schar_table_p, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
352 doc: /* Return t if OBJECT is a char-table. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
353 (object) |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
354 Lisp_Object object; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
355 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
356 if (CHAR_TABLE_P (object)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
357 return Qt; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
358 return Qnil; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
359 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
360 |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
361 DEFUN ("vector-or-char-table-p", Fvector_or_char_table_p, |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
362 Svector_or_char_table_p, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
363 doc: /* Return t if OBJECT is a char-table or vector. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
364 (object) |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
365 Lisp_Object object; |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
366 { |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
367 if (VECTORP (object) || CHAR_TABLE_P (object)) |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
368 return Qt; |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
369 return Qnil; |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
370 } |
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
371 |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
372 DEFUN ("bool-vector-p", Fbool_vector_p, Sbool_vector_p, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
373 doc: /* Return t if OBJECT is a bool-vector. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
374 (object) |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
375 Lisp_Object object; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
376 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
377 if (BOOL_VECTOR_P (object)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
378 return Qt; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
379 return Qnil; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
380 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
381 |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
382 DEFUN ("arrayp", Farrayp, Sarrayp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
383 doc: /* Return t if OBJECT is an array (string or vector). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
384 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
385 Lisp_Object object; |
298 | 386 { |
18045
a2029aaffb4f
(Farrayp): Accept bool-vectors and char-tables.
Richard M. Stallman <rms@gnu.org>
parents:
18011
diff
changeset
|
387 if (VECTORP (object) || STRINGP (object) |
a2029aaffb4f
(Farrayp): Accept bool-vectors and char-tables.
Richard M. Stallman <rms@gnu.org>
parents:
18011
diff
changeset
|
388 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) |
298 | 389 return Qt; |
390 return Qnil; | |
391 } | |
392 | |
393 DEFUN ("sequencep", Fsequencep, Ssequencep, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
394 doc: /* Return t if OBJECT is a sequence (list or array). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
395 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
396 register Lisp_Object object; |
298 | 397 { |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
398 if (CONSP (object) || NILP (object) || VECTORP (object) || STRINGP (object) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
399 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) |
298 | 400 return Qt; |
401 return Qnil; | |
402 } | |
403 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
404 DEFUN ("bufferp", Fbufferp, Sbufferp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
405 doc: /* Return t if OBJECT is an editor buffer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
406 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
407 Lisp_Object object; |
298 | 408 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
409 if (BUFFERP (object)) |
298 | 410 return Qt; |
411 return Qnil; | |
412 } | |
413 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
414 DEFUN ("markerp", Fmarkerp, Smarkerp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
415 doc: /* Return t if OBJECT is a marker (editor pointer). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
416 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
417 Lisp_Object object; |
298 | 418 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
419 if (MARKERP (object)) |
298 | 420 return Qt; |
421 return Qnil; | |
422 } | |
423 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
424 DEFUN ("subrp", Fsubrp, Ssubrp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
425 doc: /* Return t if OBJECT is a built-in function. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
426 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
427 Lisp_Object object; |
298 | 428 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
429 if (SUBRP (object)) |
298 | 430 return Qt; |
431 return Qnil; | |
432 } | |
433 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1648
diff
changeset
|
434 DEFUN ("byte-code-function-p", Fbyte_code_function_p, Sbyte_code_function_p, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
435 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
436 doc: /* Return t if OBJECT is a byte-compiled function object. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
437 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
438 Lisp_Object object; |
298 | 439 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
440 if (COMPILEDP (object)) |
298 | 441 return Qt; |
442 return Qnil; | |
443 } | |
444 | |
6385
e81e7c424e8a
(Fchar_or_string_p, Fintegerp, Fnatnump): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
6201
diff
changeset
|
445 DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
446 doc: /* Return t if OBJECT is a character (an integer) or a string. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
447 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
448 register Lisp_Object object; |
298 | 449 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
450 if (INTEGERP (object) || STRINGP (object)) |
298 | 451 return Qt; |
452 return Qnil; | |
453 } | |
454 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
455 DEFUN ("integerp", Fintegerp, Sintegerp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
456 doc: /* Return t if OBJECT is an integer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
457 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
458 Lisp_Object object; |
298 | 459 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
460 if (INTEGERP (object)) |
298 | 461 return Qt; |
462 return Qnil; | |
463 } | |
464 | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
465 DEFUN ("integer-or-marker-p", Finteger_or_marker_p, Sinteger_or_marker_p, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
466 doc: /* Return t if OBJECT is an integer or a marker (editor pointer). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
467 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
468 register Lisp_Object object; |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
469 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
470 if (MARKERP (object) || INTEGERP (object)) |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
471 return Qt; |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
472 return Qnil; |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
473 } |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
474 |
6385
e81e7c424e8a
(Fchar_or_string_p, Fintegerp, Fnatnump): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
6201
diff
changeset
|
475 DEFUN ("natnump", Fnatnump, Snatnump, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
476 doc: /* Return t if OBJECT is a nonnegative integer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
477 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
478 Lisp_Object object; |
298 | 479 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
480 if (NATNUMP (object)) |
298 | 481 return Qt; |
482 return Qnil; | |
483 } | |
484 | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
485 DEFUN ("numberp", Fnumberp, Snumberp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
486 doc: /* Return t if OBJECT is a number (floating point or integer). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
487 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
488 Lisp_Object object; |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
489 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
490 if (NUMBERP (object)) |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
491 return Qt; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1648
diff
changeset
|
492 else |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1648
diff
changeset
|
493 return Qnil; |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
494 } |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
495 |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
496 DEFUN ("number-or-marker-p", Fnumber_or_marker_p, |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
497 Snumber_or_marker_p, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
498 doc: /* Return t if OBJECT is a number or a marker. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
499 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
500 Lisp_Object object; |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
501 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
502 if (NUMBERP (object) || MARKERP (object)) |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
503 return Qt; |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
504 return Qnil; |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
505 } |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
506 |
298 | 507 DEFUN ("floatp", Ffloatp, Sfloatp, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
508 doc: /* Return t if OBJECT is a floating point number. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
509 (object) |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
510 Lisp_Object object; |
298 | 511 { |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
512 if (FLOATP (object)) |
298 | 513 return Qt; |
514 return Qnil; | |
515 } | |
27727
9400865ec7cf
Remove `LISP_FLOAT_TYPE' and `standalone'.
Gerd Moellmann <gerd@gnu.org>
parents:
27703
diff
changeset
|
516 |
298 | 517 |
518 /* Extract and set components of lists */ | |
519 | |
520 DEFUN ("car", Fcar, Scar, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
521 doc: /* Return the car of LIST. If arg is nil, return nil. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
522 Error if arg is not nil and not a cons cell. See also `car-safe'. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
523 (list) |
298 | 524 register Lisp_Object list; |
525 { | |
526 while (1) | |
527 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
528 if (CONSP (list)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
529 return XCAR (list); |
298 | 530 else if (EQ (list, Qnil)) |
531 return Qnil; | |
532 else | |
533 list = wrong_type_argument (Qlistp, list); | |
534 } | |
535 } | |
536 | |
537 DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
538 doc: /* Return the car of OBJECT if it is a cons cell, or else nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
539 (object) |
298 | 540 Lisp_Object object; |
541 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
542 if (CONSP (object)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
543 return XCAR (object); |
298 | 544 else |
545 return Qnil; | |
546 } | |
547 | |
548 DEFUN ("cdr", Fcdr, Scdr, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
549 doc: /* Return the cdr of LIST. If arg is nil, return nil. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
550 Error if arg is not nil and not a cons cell. See also `cdr-safe'. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
551 (list) |
298 | 552 register Lisp_Object list; |
553 { | |
554 while (1) | |
555 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
556 if (CONSP (list)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
557 return XCDR (list); |
298 | 558 else if (EQ (list, Qnil)) |
559 return Qnil; | |
560 else | |
561 list = wrong_type_argument (Qlistp, list); | |
562 } | |
563 } | |
564 | |
565 DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
566 doc: /* Return the cdr of OBJECT if it is a cons cell, or else nil. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
567 (object) |
298 | 568 Lisp_Object object; |
569 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
570 if (CONSP (object)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
571 return XCDR (object); |
298 | 572 else |
573 return Qnil; | |
574 } | |
575 | |
576 DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
577 doc: /* Set the car of CELL to be NEWCAR. Returns NEWCAR. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
578 (cell, newcar) |
298 | 579 register Lisp_Object cell, newcar; |
580 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
581 if (!CONSP (cell)) |
298 | 582 cell = wrong_type_argument (Qconsp, cell); |
583 | |
584 CHECK_IMPURE (cell); | |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
585 XSETCAR (cell, newcar); |
298 | 586 return newcar; |
587 } | |
588 | |
589 DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
590 doc: /* Set the cdr of CELL to be NEWCDR. Returns NEWCDR. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
591 (cell, newcdr) |
298 | 592 register Lisp_Object cell, newcdr; |
593 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
594 if (!CONSP (cell)) |
298 | 595 cell = wrong_type_argument (Qconsp, cell); |
596 | |
597 CHECK_IMPURE (cell); | |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
598 XSETCDR (cell, newcdr); |
298 | 599 return newcdr; |
600 } | |
601 | |
602 /* Extract and set components of symbols */ | |
603 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
604 DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
605 doc: /* Return t if SYMBOL's value is not void. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
606 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
607 register Lisp_Object symbol; |
298 | 608 { |
609 Lisp_Object valcontents; | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
610 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
611 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
612 valcontents = SYMBOL_VALUE (symbol); |
298 | 613 |
9889 | 614 if (BUFFER_LOCAL_VALUEP (valcontents) |
615 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
616 valcontents = swap_in_symval_forwarding (symbol, valcontents); |
298 | 617 |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
618 return (EQ (valcontents, Qunbound) ? Qnil : Qt); |
298 | 619 } |
620 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
621 DEFUN ("fboundp", Ffboundp, Sfboundp, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
622 doc: /* Return t if SYMBOL's function definition is not void. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
623 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
624 register Lisp_Object symbol; |
298 | 625 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
626 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
627 return (EQ (XSYMBOL (symbol)->function, Qunbound) ? Qnil : Qt); |
298 | 628 } |
629 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
630 DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0, |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
631 doc: /* Make SYMBOL's value be void. |
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
632 Return SYMBOL. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
633 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
634 register Lisp_Object symbol; |
298 | 635 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
636 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
637 if (XSYMBOL (symbol)->constant) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
638 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
639 Fset (symbol, Qunbound); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
640 return symbol; |
298 | 641 } |
642 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
643 DEFUN ("fmakunbound", Ffmakunbound, Sfmakunbound, 1, 1, 0, |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
644 doc: /* Make SYMBOL's function definition be void. |
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
645 Return SYMBOL. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
646 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
647 register Lisp_Object symbol; |
298 | 648 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
649 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
650 if (NILP (symbol) || EQ (symbol, Qt)) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
651 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
652 XSYMBOL (symbol)->function = Qunbound; |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
653 return symbol; |
298 | 654 } |
655 | |
656 DEFUN ("symbol-function", Fsymbol_function, Ssymbol_function, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
657 doc: /* Return SYMBOL's function definition. Error if that is void. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
658 (symbol) |
648 | 659 register Lisp_Object symbol; |
298 | 660 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
661 CHECK_SYMBOL (symbol); |
648 | 662 if (EQ (XSYMBOL (symbol)->function, Qunbound)) |
663 return Fsignal (Qvoid_function, Fcons (symbol, Qnil)); | |
664 return XSYMBOL (symbol)->function; | |
298 | 665 } |
666 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
667 DEFUN ("symbol-plist", Fsymbol_plist, Ssymbol_plist, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
668 doc: /* Return SYMBOL's property list. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
669 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
670 register Lisp_Object symbol; |
298 | 671 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
672 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
673 return XSYMBOL (symbol)->plist; |
298 | 674 } |
675 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
676 DEFUN ("symbol-name", Fsymbol_name, Ssymbol_name, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
677 doc: /* Return SYMBOL's name, a string. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
678 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
679 register Lisp_Object symbol; |
298 | 680 { |
681 register Lisp_Object name; | |
682 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
683 CHECK_SYMBOL (symbol); |
45397
bc5d63652a0a
* data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding)
Ken Raeburn <raeburn@raeburn.org>
parents:
42274
diff
changeset
|
684 name = SYMBOL_NAME (symbol); |
298 | 685 return name; |
686 } | |
687 | |
688 DEFUN ("fset", Ffset, Sfset, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
689 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
690 (symbol, definition) |
16754
6ca8ed287a53
(Ffset): Change argument name and doc string.
Richard M. Stallman <rms@gnu.org>
parents:
16434
diff
changeset
|
691 register Lisp_Object symbol, definition; |
298 | 692 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
693 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
694 if (NILP (symbol) || EQ (symbol, Qt)) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
695 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
696 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound)) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
697 Vautoload_queue = Fcons (Fcons (symbol, XSYMBOL (symbol)->function), |
298 | 698 Vautoload_queue); |
16754
6ca8ed287a53
(Ffset): Change argument name and doc string.
Richard M. Stallman <rms@gnu.org>
parents:
16434
diff
changeset
|
699 XSYMBOL (symbol)->function = definition; |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
700 /* Handle automatic advice activation */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
701 if (CONSP (XSYMBOL (symbol)->plist) && !NILP (Fget (symbol, Qad_advice_info))) |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
702 { |
26205
65a0abaeed68
(Qad_activate_internal): Renamed from Qad_activate.
Gerd Moellmann <gerd@gnu.org>
parents:
26185
diff
changeset
|
703 call2 (Qad_activate_internal, symbol, Qnil); |
16754
6ca8ed287a53
(Ffset): Change argument name and doc string.
Richard M. Stallman <rms@gnu.org>
parents:
16434
diff
changeset
|
704 definition = XSYMBOL (symbol)->function; |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
705 } |
16754
6ca8ed287a53
(Ffset): Change argument name and doc string.
Richard M. Stallman <rms@gnu.org>
parents:
16434
diff
changeset
|
706 return definition; |
298 | 707 } |
708 | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
709 extern Lisp_Object Qfunction_documentation; |
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
710 |
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
711 DEFUN ("defalias", Fdefalias, Sdefalias, 2, 3, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
712 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. |
46521 | 713 Associates the function with the current load file, if any. |
714 The optional third argument DOCSTRING specifies the documentation string | |
715 for SYMBOL; if it is omitted or nil, SYMBOL uses the documentation string | |
716 determined by DEFINITION. */) | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
717 (symbol, definition, docstring) |
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
718 register Lisp_Object symbol, definition, docstring; |
2548
b66eeded6afc
(Fdefine_function): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2515
diff
changeset
|
719 { |
48723
a6906c113d14
(Fdefalias): Record in load-history redefining an autoload.
Richard M. Stallman <rms@gnu.org>
parents:
47276
diff
changeset
|
720 if (CONSP (XSYMBOL (symbol)->function) |
a6906c113d14
(Fdefalias): Record in load-history redefining an autoload.
Richard M. Stallman <rms@gnu.org>
parents:
47276
diff
changeset
|
721 && EQ (XCAR (XSYMBOL (symbol)->function), Qautoload)) |
a6906c113d14
(Fdefalias): Record in load-history redefining an autoload.
Richard M. Stallman <rms@gnu.org>
parents:
47276
diff
changeset
|
722 LOADHIST_ATTACH (Fcons (Qt, symbol)); |
25132
07b44154638f
(Fdefalias): Call Ffset instead of duplicating code.
Karl Heuer <kwzh@gnu.org>
parents:
23602
diff
changeset
|
723 definition = Ffset (symbol, definition); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
724 LOADHIST_ATTACH (symbol); |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
725 if (!NILP (docstring)) |
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
726 Fput (symbol, Qfunction_documentation, docstring); |
16756
71113ba79b1b
(Fdefalias): Change argument name and doc string.
Richard M. Stallman <rms@gnu.org>
parents:
16754
diff
changeset
|
727 return definition; |
2548
b66eeded6afc
(Fdefine_function): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2515
diff
changeset
|
728 } |
b66eeded6afc
(Fdefine_function): New function.
Richard M. Stallman <rms@gnu.org>
parents:
2515
diff
changeset
|
729 |
298 | 730 DEFUN ("setplist", Fsetplist, Ssetplist, 2, 2, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
731 doc: /* Set SYMBOL's property list to NEWVAL, and return NEWVAL. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
732 (symbol, newplist) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
733 register Lisp_Object symbol, newplist; |
298 | 734 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
735 CHECK_SYMBOL (symbol); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
736 XSYMBOL (symbol)->plist = newplist; |
298 | 737 return newplist; |
738 } | |
648 | 739 |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
740 DEFUN ("subr-arity", Fsubr_arity, Ssubr_arity, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
741 doc: /* Return minimum and maximum number of args allowed for SUBR. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
742 SUBR must be a built-in function. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
743 The returned value is a pair (MIN . MAX). MIN is the minimum number |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
744 of args. MAX is the maximum number or the symbol `many', for a |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
745 function with `&rest' args, or `unevalled' for a special form. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
746 (subr) |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
747 Lisp_Object subr; |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
748 { |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
749 short minargs, maxargs; |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
750 if (!SUBRP (subr)) |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
751 wrong_type_argument (Qsubrp, subr); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
752 minargs = XSUBR (subr)->min_args; |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
753 maxargs = XSUBR (subr)->max_args; |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
754 if (maxargs == MANY) |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
755 return Fcons (make_number (minargs), Qmany); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
756 else if (maxargs == UNEVALLED) |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
757 return Fcons (make_number (minargs), Qunevalled); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
758 else |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
759 return Fcons (make_number (minargs), make_number (maxargs)); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
760 } |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
761 |
37053
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
762 DEFUN ("subr-interactive-form", Fsubr_interactive_form, Ssubr_interactive_form, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
763 doc: /* Return the interactive form of SUBR or nil if none. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
764 SUBR must be a built-in function. Value, if non-nil, is a list |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
765 \(interactive SPEC). */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
766 (subr) |
37053
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
767 Lisp_Object subr; |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
768 { |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
769 if (!SUBRP (subr)) |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
770 wrong_type_argument (Qsubrp, subr); |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
771 if (XSUBR (subr)->prompt) |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
772 return list2 (Qinteractive, build_string (XSUBR (subr)->prompt)); |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
773 return Qnil; |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
774 } |
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
775 |
298 | 776 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
777 /*********************************************************************** |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
778 Getting and Setting Values of Symbols |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
779 ***********************************************************************/ |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
780 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
781 /* Return the symbol holding SYMBOL's value. Signal |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
782 `cyclic-variable-indirection' if SYMBOL's chain of variable |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
783 indirections contains a loop. */ |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
784 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
785 Lisp_Object |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
786 indirect_variable (symbol) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
787 Lisp_Object symbol; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
788 { |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
789 Lisp_Object tortoise, hare; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
790 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
791 hare = tortoise = symbol; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
792 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
793 while (XSYMBOL (hare)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
794 { |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
795 hare = XSYMBOL (hare)->value; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
796 if (!XSYMBOL (hare)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
797 break; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
798 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
799 hare = XSYMBOL (hare)->value; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
800 tortoise = XSYMBOL (tortoise)->value; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
801 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
802 if (EQ (hare, tortoise)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
803 Fsignal (Qcyclic_variable_indirection, Fcons (symbol, Qnil)); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
804 } |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
805 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
806 return hare; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
807 } |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
808 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
809 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
810 DEFUN ("indirect-variable", Findirect_variable, Sindirect_variable, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
811 doc: /* Return the variable at the end of OBJECT's variable chain. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
812 If OBJECT is a symbol, follow all variable indirections and return the final |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
813 variable. If OBJECT is not a symbol, just return it. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
814 Signal a cyclic-variable-indirection error if there is a loop in the |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
815 variable chain of symbols. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
816 (object) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
817 Lisp_Object object; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
818 { |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
819 if (SYMBOLP (object)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
820 object = indirect_variable (object); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
821 return object; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
822 } |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
823 |
298 | 824 |
825 /* Given the raw contents of a symbol value cell, | |
826 return the Lisp value of the symbol. | |
827 This does not handle buffer-local variables; use | |
828 swap_in_symval_forwarding for that. */ | |
829 | |
830 Lisp_Object | |
831 do_symval_forwarding (valcontents) | |
832 register Lisp_Object valcontents; | |
833 { | |
834 register Lisp_Object val; | |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
835 int offset; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
836 if (MISCP (valcontents)) |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
837 switch (XMISCTYPE (valcontents)) |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
838 { |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
839 case Lisp_Misc_Intfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
840 XSETINT (val, *XINTFWD (valcontents)->intvar); |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
841 return val; |
298 | 842 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
843 case Lisp_Misc_Boolfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
844 return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil); |
298 | 845 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
846 case Lisp_Misc_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
847 return *XOBJFWD (valcontents)->objvar; |
298 | 848 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
849 case Lisp_Misc_Buffer_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
850 offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 851 return PER_BUFFER_VALUE (current_buffer, offset); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
852 |
11019
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
853 case Lisp_Misc_Kboard_Objfwd: |
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
854 offset = XKBOARD_OBJFWD (valcontents)->offset; |
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
855 return *(Lisp_Object *)(offset + (char *)current_kboard); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
856 } |
298 | 857 return valcontents; |
858 } | |
859 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
860 /* Store NEWVAL into SYMBOL, where VALCONTENTS is found in the value cell |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
861 of SYMBOL. If SYMBOL is buffer-local, VALCONTENTS should be the |
298 | 862 buffer-independent contents of the value cell: forwarded just one |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
863 step past the buffer-localness. |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
864 |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
865 BUF non-zero means set the value in buffer BUF instead of the |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
866 current buffer. This only plays a role for per-buffer variables. */ |
298 | 867 |
868 void | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
869 store_symval_forwarding (symbol, valcontents, newval, buf) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
870 Lisp_Object symbol; |
298 | 871 register Lisp_Object valcontents, newval; |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
872 struct buffer *buf; |
298 | 873 { |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
874 switch (SWITCH_ENUM_CAST (XTYPE (valcontents))) |
298 | 875 { |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
876 case Lisp_Misc: |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
877 switch (XMISCTYPE (valcontents)) |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
878 { |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
879 case Lisp_Misc_Intfwd: |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
880 CHECK_NUMBER (newval); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
881 *XINTFWD (valcontents)->intvar = XINT (newval); |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
882 if (*XINTFWD (valcontents)->intvar != XINT (newval)) |
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
883 error ("Value out of range for variable `%s'", |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
884 SDATA (SYMBOL_NAME (symbol))); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
885 break; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
886 |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
887 case Lisp_Misc_Boolfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
888 *XBOOLFWD (valcontents)->boolvar = NILP (newval) ? 0 : 1; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
889 break; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
890 |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
891 case Lisp_Misc_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
892 *XOBJFWD (valcontents)->objvar = newval; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
893 break; |
298 | 894 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
895 case Lisp_Misc_Buffer_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
896 { |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
897 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
898 Lisp_Object type; |
298 | 899 |
50314
247bd25de9e9
(store_symval_forwarding): Re-instate part of the code
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50305
diff
changeset
|
900 type = PER_BUFFER_TYPE (offset); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
901 if (! NILP (type) && ! NILP (newval) |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
902 && XTYPE (newval) != XINT (type)) |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
903 buffer_slot_type_mismatch (offset); |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
904 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
905 if (buf == NULL) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
906 buf = current_buffer; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
907 PER_BUFFER_VALUE (buf, offset) = newval; |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
908 } |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
909 break; |
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
910 |
11019
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
911 case Lisp_Misc_Kboard_Objfwd: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
912 { |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
913 char *base = (char *) current_kboard; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
914 char *p = base + XKBOARD_OBJFWD (valcontents)->offset; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
915 *(Lisp_Object *) p = newval; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
916 } |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
917 break; |
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
918 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
919 default: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
920 goto def; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
921 } |
298 | 922 break; |
923 | |
924 default: | |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
925 def: |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
926 valcontents = SYMBOL_VALUE (symbol); |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
927 if (BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
928 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
929 XBUFFER_LOCAL_VALUE (valcontents)->realvalue = newval; |
298 | 930 else |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
931 SET_SYMBOL_VALUE (symbol, newval); |
298 | 932 } |
933 } | |
934 | |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
935 /* Set up SYMBOL to refer to its global binding. |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
936 This makes it safe to alter the status of other bindings. */ |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
937 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
938 void |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
939 swap_in_global_binding (symbol) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
940 Lisp_Object symbol; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
941 { |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
942 Lisp_Object valcontents, cdr; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
943 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
944 valcontents = SYMBOL_VALUE (symbol); |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
945 if (!BUFFER_LOCAL_VALUEP (valcontents) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
946 && !SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
947 abort (); |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
948 cdr = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
949 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
950 /* Unload the previously loaded binding. */ |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
951 Fsetcdr (XCAR (cdr), |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
952 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
953 |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
954 /* Select the global binding in the symbol. */ |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
955 XSETCAR (cdr, cdr); |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
956 store_symval_forwarding (symbol, valcontents, XCDR (cdr), NULL); |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
957 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
958 /* Indicate that the global binding is set up now. */ |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
959 XBUFFER_LOCAL_VALUE (valcontents)->frame = Qnil; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
960 XBUFFER_LOCAL_VALUE (valcontents)->buffer = Qnil; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
961 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
962 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
963 } |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
964 |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
965 /* Set up the buffer-local symbol SYMBOL for validity in the current buffer. |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
966 VALCONTENTS is the contents of its value cell, |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
967 which points to a struct Lisp_Buffer_Local_Value. |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
968 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
969 Return the value forwarded one step past the buffer-local stage. |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
970 This could be another forwarding pointer. */ |
298 | 971 |
972 static Lisp_Object | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
973 swap_in_symval_forwarding (symbol, valcontents) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
974 Lisp_Object symbol, valcontents; |
298 | 975 { |
976 register Lisp_Object tem1; | |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
977 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
978 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->buffer; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
979 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
980 if (NILP (tem1) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
981 || current_buffer != XBUFFER (tem1) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
982 || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
983 && ! EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame))) |
298 | 984 { |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
985 if (XSYMBOL (symbol)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
986 symbol = indirect_variable (symbol); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
987 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
988 /* Unload the previously loaded binding. */ |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
989 tem1 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
990 Fsetcdr (tem1, |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
991 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
992 /* Choose the new binding. */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
993 tem1 = assq_no_quit (symbol, current_buffer->local_var_alist); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
994 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
995 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
490 | 996 if (NILP (tem1)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
997 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
998 if (XBUFFER_LOCAL_VALUE (valcontents)->check_frame) |
25665
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
999 tem1 = assq_no_quit (symbol, XFRAME (selected_frame)->param_alist); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1000 if (! NILP (tem1)) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1001 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 1; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1002 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1003 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1004 } |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1005 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1006 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 1; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1007 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1008 /* Load the new binding. */ |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1009 XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, tem1); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1010 XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, current_buffer); |
25665
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
1011 XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1012 store_symval_forwarding (symbol, |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1013 XBUFFER_LOCAL_VALUE (valcontents)->realvalue, |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1014 Fcdr (tem1), NULL); |
298 | 1015 } |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1016 return XBUFFER_LOCAL_VALUE (valcontents)->realvalue; |
298 | 1017 } |
1018 | |
514 | 1019 /* Find the value of a symbol, returning Qunbound if it's not bound. |
1020 This is helpful for code which just wants to get a variable's value | |
14036 | 1021 if it has one, without signaling an error. |
514 | 1022 Note that it must not be possible to quit |
1023 within this function. Great care is required for this. */ | |
298 | 1024 |
514 | 1025 Lisp_Object |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1026 find_symbol_value (symbol) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1027 Lisp_Object symbol; |
298 | 1028 { |
25780
18cf58ed9400
(find_symbol_value): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25665
diff
changeset
|
1029 register Lisp_Object valcontents; |
298 | 1030 register Lisp_Object val; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1031 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1032 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1033 valcontents = SYMBOL_VALUE (symbol); |
298 | 1034 |
9889 | 1035 if (BUFFER_LOCAL_VALUEP (valcontents) |
1036 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) | |
34964
f8c7b5b9fd2f
(find_symbol_value): Remove extra 3rd argument in the
Eli Zaretskii <eliz@gnu.org>
parents:
31829
diff
changeset
|
1037 valcontents = swap_in_symval_forwarding (symbol, valcontents); |
9878
8a68b5794c91
(Fboundp, find_symbol_value): Use type test macros instead of checking XTYPE
Karl Heuer <kwzh@gnu.org>
parents:
9465
diff
changeset
|
1038 |
8a68b5794c91
(Fboundp, find_symbol_value): Use type test macros instead of checking XTYPE
Karl Heuer <kwzh@gnu.org>
parents:
9465
diff
changeset
|
1039 if (MISCP (valcontents)) |
298 | 1040 { |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1041 switch (XMISCTYPE (valcontents)) |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1042 { |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1043 case Lisp_Misc_Intfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1044 XSETINT (val, *XINTFWD (valcontents)->intvar); |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1045 return val; |
298 | 1046 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1047 case Lisp_Misc_Boolfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1048 return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil); |
298 | 1049 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1050 case Lisp_Misc_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1051 return *XOBJFWD (valcontents)->objvar; |
298 | 1052 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1053 case Lisp_Misc_Buffer_Objfwd: |
28351 | 1054 return PER_BUFFER_VALUE (current_buffer, |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1055 XBUFFER_OBJFWD (valcontents)->offset); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
1056 |
11019
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
1057 case Lisp_Misc_Kboard_Objfwd: |
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
1058 return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset |
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
1059 + (char *)current_kboard); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1060 } |
298 | 1061 } |
1062 | |
1063 return valcontents; | |
1064 } | |
1065 | |
514 | 1066 DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1067 doc: /* Return SYMBOL's value. Error if that is void. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1068 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1069 Lisp_Object symbol; |
514 | 1070 { |
6497
89ff61b53cee
(store_symval_forwarding, Fsymbol_value): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6459
diff
changeset
|
1071 Lisp_Object val; |
514 | 1072 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1073 val = find_symbol_value (symbol); |
514 | 1074 if (EQ (val, Qunbound)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1075 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
514 | 1076 else |
1077 return val; | |
1078 } | |
1079 | |
298 | 1080 DEFUN ("set", Fset, Sset, 2, 2, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1081 doc: /* Set SYMBOL's value to NEWVAL, and return NEWVAL. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1082 (symbol, newval) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1083 register Lisp_Object symbol, newval; |
298 | 1084 { |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1085 return set_internal (symbol, newval, current_buffer, 0); |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1086 } |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1087 |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1088 /* Return 1 if SYMBOL currently has a let-binding |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1089 which was made in the buffer that is now current. */ |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1090 |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1091 static int |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1092 let_shadows_buffer_binding_p (symbol) |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1093 Lisp_Object symbol; |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1094 { |
51030
7ef125284156
(let_shadows_buffer_binding_p): Make target of p volatile.
Richard M. Stallman <rms@gnu.org>
parents:
50632
diff
changeset
|
1095 volatile struct specbinding *p; |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1096 |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1097 for (p = specpdl_ptr - 1; p >= specpdl; p--) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1098 if (p->func == NULL |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1099 && CONSP (p->symbol)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1100 { |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1101 Lisp_Object let_bound_symbol = XCAR (p->symbol); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1102 if ((EQ (symbol, let_bound_symbol) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1103 || (XSYMBOL (let_bound_symbol)->indirect_variable |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1104 && EQ (symbol, indirect_variable (let_bound_symbol)))) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1105 && XBUFFER (XCDR (XCDR (p->symbol))) == current_buffer) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1106 break; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1107 } |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1108 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1109 return p >= specpdl; |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1110 } |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1111 |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1112 /* Store the value NEWVAL into SYMBOL. |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1113 If buffer-locality is an issue, BUF specifies which buffer to use. |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1114 (0 stands for the current buffer.) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1115 |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1116 If BINDFLAG is zero, then if this symbol is supposed to become |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1117 local in every buffer where it is set, then we make it local. |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1118 If BINDFLAG is nonzero, we don't do that. */ |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1119 |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1120 Lisp_Object |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1121 set_internal (symbol, newval, buf, bindflag) |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1122 register Lisp_Object symbol, newval; |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1123 struct buffer *buf; |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1124 int bindflag; |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1125 { |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
1126 int voide = EQ (newval, Qunbound); |
298 | 1127 |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1128 register Lisp_Object valcontents, innercontents, tem1, current_alist_element; |
298 | 1129 |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1130 if (buf == 0) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1131 buf = current_buffer; |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1132 |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1133 /* If restoring in a dead buffer, do nothing. */ |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1134 if (NILP (buf->name)) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1135 return newval; |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1136 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1137 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1138 if (SYMBOL_CONSTANT_P (symbol) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1139 && (NILP (Fkeywordp (symbol)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1140 || !EQ (newval, SYMBOL_VALUE (symbol)))) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1141 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1142 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1143 innercontents = valcontents = SYMBOL_VALUE (symbol); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1144 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1145 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1146 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1147 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1148 int idx = PER_BUFFER_IDX (offset); |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1149 if (idx > 0 |
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1150 && !bindflag |
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1151 && !let_shadows_buffer_binding_p (symbol)) |
28351 | 1152 SET_PER_BUFFER_VALUE_P (buf, idx, 1); |
298 | 1153 } |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1154 else if (BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1155 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1156 { |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1157 /* valcontents is a struct Lisp_Buffer_Local_Value. */ |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1158 if (XSYMBOL (symbol)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1159 symbol = indirect_variable (symbol); |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1160 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1161 /* What binding is loaded right now? */ |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1162 current_alist_element |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1163 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1164 |
733 | 1165 /* If the current buffer is not the buffer whose binding is |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1166 loaded, or if there may be frame-local bindings and the frame |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1167 isn't the right one, or if it's a Lisp_Buffer_Local_Value and |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1168 the default binding is loaded, the loaded binding may be the |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1169 wrong one. */ |
28417
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28351
diff
changeset
|
1170 if (!BUFFERP (XBUFFER_LOCAL_VALUE (valcontents)->buffer) |
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28351
diff
changeset
|
1171 || buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer) |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1172 || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1173 && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1174 || (BUFFER_LOCAL_VALUEP (valcontents) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1175 && EQ (XCAR (current_alist_element), |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1176 current_alist_element))) |
298 | 1177 { |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1178 /* The currently loaded binding is not necessarily valid. |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1179 We need to unload it, and choose a new binding. */ |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1180 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1181 /* Write out `realvalue' to the old loaded binding. */ |
733 | 1182 Fsetcdr (current_alist_element, |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1183 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); |
298 | 1184 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1185 /* Find the new binding. */ |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1186 tem1 = Fassq (symbol, buf->local_var_alist); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1187 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 1; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1188 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1189 |
490 | 1190 if (NILP (tem1)) |
733 | 1191 { |
1192 /* This buffer still sees the default value. */ | |
1193 | |
1194 /* If the variable is a Lisp_Some_Buffer_Local_Value, | |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1195 or if this is `let' rather than `set', |
733 | 1196 make CURRENT-ALIST-ELEMENT point to itself, |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1197 indicating that we're seeing the default value. |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1198 Likewise if the variable has been let-bound |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1199 in the current buffer. */ |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1200 if (bindflag || SOME_BUFFER_LOCAL_VALUEP (valcontents) |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1201 || let_shadows_buffer_binding_p (symbol)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1202 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1203 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1204 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1205 if (XBUFFER_LOCAL_VALUE (valcontents)->check_frame) |
25665
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
1206 tem1 = Fassq (symbol, |
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
1207 XFRAME (selected_frame)->param_alist); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1208 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1209 if (! NILP (tem1)) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1210 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 1; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1211 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1212 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1213 } |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1214 /* If it's a Lisp_Buffer_Local_Value, being set not bound, |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1215 and we're not within a let that was made for this buffer, |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1216 create a new buffer-local binding for the variable. |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1217 That means, give this buffer a new assoc for a local value |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1218 and load that binding. */ |
733 | 1219 else |
1220 { | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1221 tem1 = Fcons (symbol, XCDR (current_alist_element)); |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1222 buf->local_var_alist |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1223 = Fcons (tem1, buf->local_var_alist); |
733 | 1224 } |
1225 } | |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1226 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1227 /* Record which binding is now loaded. */ |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1228 XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, |
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1229 tem1); |
733 | 1230 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1231 /* Set `buffer' and `frame' slots for thebinding now loaded. */ |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1232 XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, buf); |
25665
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
1233 XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame; |
298 | 1234 } |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1235 innercontents = XBUFFER_LOCAL_VALUE (valcontents)->realvalue; |
298 | 1236 } |
733 | 1237 |
298 | 1238 /* If storing void (making the symbol void), forward only through |
1239 buffer-local indicator, not through Lisp_Objfwd, etc. */ | |
1240 if (voide) | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1241 store_symval_forwarding (symbol, Qnil, newval, buf); |
298 | 1242 else |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1243 store_symval_forwarding (symbol, innercontents, newval, buf); |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1244 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1245 /* If we just set a variable whose current binding is frame-local, |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1246 store the new value in the frame parameter too. */ |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1247 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1248 if (BUFFER_LOCAL_VALUEP (valcontents) |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1249 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1250 { |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1251 /* What binding is loaded right now? */ |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1252 current_alist_element |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1253 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1254 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1255 /* If the current buffer is not the buffer whose binding is |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1256 loaded, or if there may be frame-local bindings and the frame |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1257 isn't the right one, or if it's a Lisp_Buffer_Local_Value and |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1258 the default binding is loaded, the loaded binding may be the |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1259 wrong one. */ |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1260 if (XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame) |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1261 XSETCDR (current_alist_element, newval); |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1262 } |
733 | 1263 |
298 | 1264 return newval; |
1265 } | |
1266 | |
1267 /* Access or set a buffer-local symbol's default value. */ | |
1268 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1269 /* Return the default value of SYMBOL, but don't check for voidness. |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
1270 Return Qunbound if it is void. */ |
298 | 1271 |
1272 Lisp_Object | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1273 default_value (symbol) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1274 Lisp_Object symbol; |
298 | 1275 { |
1276 register Lisp_Object valcontents; | |
1277 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1278 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1279 valcontents = SYMBOL_VALUE (symbol); |
298 | 1280 |
1281 /* For a built-in buffer-local variable, get the default value | |
1282 rather than letting do_symval_forwarding get the current value. */ | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1283 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1284 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1285 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1286 if (PER_BUFFER_IDX (offset) != 0) |
1287 return PER_BUFFER_DEFAULT (offset); | |
298 | 1288 } |
1289 | |
1290 /* Handle user-created local variables. */ | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1291 if (BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1292 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1293 { |
1294 /* If var is set up for a buffer that lacks a local value for it, | |
1295 the current value is nominally the default value. | |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1296 But the `realvalue' slot may be more up to date, since |
298 | 1297 ordinary setq stores just that slot. So use that. */ |
1298 Lisp_Object current_alist_element, alist_element_car; | |
1299 current_alist_element | |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1300 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1301 alist_element_car = XCAR (current_alist_element); |
298 | 1302 if (EQ (alist_element_car, current_alist_element)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1303 return do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue); |
298 | 1304 else |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1305 return XCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1306 } |
1307 /* For other variables, get the current value. */ | |
1308 return do_symval_forwarding (valcontents); | |
1309 } | |
1310 | |
1311 DEFUN ("default-boundp", Fdefault_boundp, Sdefault_boundp, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1312 doc: /* Return t if SYMBOL has a non-void default value. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1313 This is the value that is seen in buffers that do not have their own values |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1314 for this variable. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1315 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1316 Lisp_Object symbol; |
298 | 1317 { |
1318 register Lisp_Object value; | |
1319 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1320 value = default_value (symbol); |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
1321 return (EQ (value, Qunbound) ? Qnil : Qt); |
298 | 1322 } |
1323 | |
1324 DEFUN ("default-value", Fdefault_value, Sdefault_value, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1325 doc: /* Return SYMBOL's default value. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1326 This is the value that is seen in buffers that do not have their own values |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1327 for this variable. The default value is meaningful for variables with |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1328 local bindings in certain buffers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1329 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1330 Lisp_Object symbol; |
298 | 1331 { |
1332 register Lisp_Object value; | |
1333 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1334 value = default_value (symbol); |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
1335 if (EQ (value, Qunbound)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1336 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
298 | 1337 return value; |
1338 } | |
1339 | |
1340 DEFUN ("set-default", Fset_default, Sset_default, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1341 doc: /* Set SYMBOL's default value to VAL. SYMBOL and VAL are evaluated. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1342 The default value is seen in buffers that do not have their own values |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1343 for this variable. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1344 (symbol, value) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1345 Lisp_Object symbol, value; |
298 | 1346 { |
1347 register Lisp_Object valcontents, current_alist_element, alist_element_buffer; | |
1348 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1349 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1350 valcontents = SYMBOL_VALUE (symbol); |
298 | 1351 |
1352 /* Handle variables like case-fold-search that have special slots | |
1353 in the buffer. Make them work apparently like Lisp_Buffer_Local_Value | |
1354 variables. */ | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1355 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1356 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1357 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1358 int idx = PER_BUFFER_IDX (offset); |
1359 | |
1360 PER_BUFFER_DEFAULT (offset) = value; | |
20996
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
1361 |
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
1362 /* If this variable is not always local in all buffers, |
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
1363 set it in the buffers that don't nominally have a local value. */ |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1364 if (idx > 0) |
298 | 1365 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1366 struct buffer *b; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1367 |
298 | 1368 for (b = all_buffers; b; b = b->next) |
28351 | 1369 if (!PER_BUFFER_VALUE_P (b, idx)) |
1370 PER_BUFFER_VALUE (b, offset) = value; | |
298 | 1371 } |
1372 return value; | |
1373 } | |
1374 | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1375 if (!BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1376 && !SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1377 return Fset (symbol, value); |
298 | 1378 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1379 /* Store new value into the DEFAULT-VALUE slot. */ |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1380 XSETCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, value); |
298 | 1381 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1382 /* If the default binding is now loaded, set the REALVALUE slot too. */ |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1383 current_alist_element |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1384 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1385 alist_element_buffer = Fcar (current_alist_element); |
1386 if (EQ (alist_element_buffer, current_alist_element)) | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1387 store_symval_forwarding (symbol, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1388 XBUFFER_LOCAL_VALUE (valcontents)->realvalue, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1389 value, NULL); |
298 | 1390 |
1391 return value; | |
1392 } | |
1393 | |
1394 DEFUN ("setq-default", Fsetq_default, Ssetq_default, 2, UNEVALLED, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1395 doc: /* Set the default value of variable VAR to VALUE. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1396 VAR, the variable name, is literal (not evaluated); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1397 VALUE is an expression: it is evaluated and its value returned. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1398 The default value of a variable is seen in buffers |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1399 that do not have their own values for the variable. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1400 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1401 More generally, you can use multiple variables and values, as in |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1402 (setq-default SYMBOL VALUE SYMBOL VALUE...) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1403 This sets each SYMBOL's default value to the corresponding VALUE. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1404 The VALUE for the Nth SYMBOL can refer to the new default values |
40642
208e240d599a
(Fsetq_default): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents:
40628
diff
changeset
|
1405 of previous SYMs. |
208e240d599a
(Fsetq_default): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents:
40628
diff
changeset
|
1406 usage: (setq-default SYMBOL VALUE [SYMBOL VALUE...]) */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1407 (args) |
298 | 1408 Lisp_Object args; |
1409 { | |
1410 register Lisp_Object args_left; | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1411 register Lisp_Object val, symbol; |
298 | 1412 struct gcpro gcpro1; |
1413 | |
490 | 1414 if (NILP (args)) |
298 | 1415 return Qnil; |
1416 | |
1417 args_left = args; | |
1418 GCPRO1 (args); | |
1419 | |
1420 do | |
1421 { | |
1422 val = Feval (Fcar (Fcdr (args_left))); | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1423 symbol = XCAR (args_left); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1424 Fset_default (symbol, val); |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1425 args_left = Fcdr (XCDR (args_left)); |
298 | 1426 } |
490 | 1427 while (!NILP (args_left)); |
298 | 1428 |
1429 UNGCPRO; | |
1430 return val; | |
1431 } | |
1432 | |
1278
0a0646ae381f
* data.c (Fmake_local_variable): If SYM forwards to a C variable,
Jim Blandy <jimb@redhat.com>
parents:
1263
diff
changeset
|
1433 /* Lisp functions for creating and removing buffer-local variables. */ |
0a0646ae381f
* data.c (Fmake_local_variable): If SYM forwards to a C variable,
Jim Blandy <jimb@redhat.com>
parents:
1263
diff
changeset
|
1434 |
298 | 1435 DEFUN ("make-variable-buffer-local", Fmake_variable_buffer_local, Smake_variable_buffer_local, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1436 1, 1, "vMake Variable Buffer Local: ", |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1437 doc: /* Make VARIABLE become buffer-local whenever it is set. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1438 At any time, the value for the current buffer is in effect, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1439 unless the variable has never been set in this buffer, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1440 in which case the default value is in effect. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1441 Note that binding the variable with `let', or setting it while |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1442 a `let'-style binding made in this buffer is in effect, |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1443 does not make the variable buffer-local. Return VARIABLE. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1444 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1445 The function `default-value' gets the default value and `set-default' sets it. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1446 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1447 register Lisp_Object variable; |
298 | 1448 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1449 register Lisp_Object tem, valcontents, newval; |
298 | 1450 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1451 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1452 variable = indirect_variable (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1453 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1454 valcontents = SYMBOL_VALUE (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1455 if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents)) |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1456 error ("Symbol %s may not be buffer-local", SDATA (SYMBOL_NAME (variable))); |
298 | 1457 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1458 if (BUFFER_LOCAL_VALUEP (valcontents) || BUFFER_OBJFWDP (valcontents)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1459 return variable; |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1460 if (SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1461 { |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1462 XMISCTYPE (SYMBOL_VALUE (variable)) = Lisp_Misc_Buffer_Local_Value; |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1463 return variable; |
298 | 1464 } |
1465 if (EQ (valcontents, Qunbound)) | |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1466 SET_SYMBOL_VALUE (variable, Qnil); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1467 tem = Fcons (Qnil, Fsymbol_value (variable)); |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1468 XSETCAR (tem, tem); |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1469 newval = allocate_misc (); |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1470 XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1471 XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1472 XBUFFER_LOCAL_VALUE (newval)->buffer = Fcurrent_buffer (); |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1473 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1474 XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1475 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1476 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1477 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1478 SET_SYMBOL_VALUE (variable, newval); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1479 return variable; |
298 | 1480 } |
1481 | |
1482 DEFUN ("make-local-variable", Fmake_local_variable, Smake_local_variable, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1483 1, 1, "vMake Local Variable: ", |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1484 doc: /* Make VARIABLE have a separate value in the current buffer. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1485 Other buffers will continue to share a common default value. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1486 \(The buffer-local value of VARIABLE starts out as the same value |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1487 VARIABLE previously had. If VARIABLE was void, it remains void.\) |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1488 See also `make-variable-buffer-local'. Return VARIABLE. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1489 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1490 If the variable is already arranged to become local when set, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1491 this function causes a local value to exist for this buffer, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1492 just as setting the variable would do. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1493 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1494 This function returns VARIABLE, and therefore |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1495 (set (make-local-variable 'VARIABLE) VALUE-EXP) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1496 works. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1497 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1498 Do not use `make-local-variable' to make a hook variable buffer-local. |
40628
ae231ad6710d
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
40123
diff
changeset
|
1499 Instead, use `add-hook' and specify t for the LOCAL argument. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1500 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1501 register Lisp_Object variable; |
298 | 1502 { |
1503 register Lisp_Object tem, valcontents; | |
1504 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1505 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1506 variable = indirect_variable (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1507 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1508 valcontents = SYMBOL_VALUE (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1509 if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents)) |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1510 error ("Symbol %s may not be buffer-local", SDATA (SYMBOL_NAME (variable))); |
298 | 1511 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1512 if (BUFFER_LOCAL_VALUEP (valcontents) || BUFFER_OBJFWDP (valcontents)) |
298 | 1513 { |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1514 tem = Fboundp (variable); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
1515 |
298 | 1516 /* Make sure the symbol has a local value in this particular buffer, |
1517 by setting it to the same value it already has. */ | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1518 Fset (variable, (EQ (tem, Qt) ? Fsymbol_value (variable) : Qunbound)); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1519 return variable; |
298 | 1520 } |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1521 /* Make sure symbol is set up to hold per-buffer values. */ |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1522 if (!SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1523 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1524 Lisp_Object newval; |
298 | 1525 tem = Fcons (Qnil, do_symval_forwarding (valcontents)); |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1526 XSETCAR (tem, tem); |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1527 newval = allocate_misc (); |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1528 XMISCTYPE (newval) = Lisp_Misc_Some_Buffer_Local_Value; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1529 XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1530 XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1531 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1532 XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1533 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1534 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1535 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1536 SET_SYMBOL_VALUE (variable, newval);; |
298 | 1537 } |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1538 /* Make sure this buffer has its own value of symbol. */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1539 tem = Fassq (variable, current_buffer->local_var_alist); |
490 | 1540 if (NILP (tem)) |
298 | 1541 { |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1542 /* Swap out any local binding for some other buffer, and make |
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1543 sure the current value is permanently recorded, if it's the |
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1544 default value. */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1545 find_symbol_value (variable); |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1546 |
298 | 1547 current_buffer->local_var_alist |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1548 = Fcons (Fcons (variable, XCDR (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (variable))->cdr)), |
298 | 1549 current_buffer->local_var_alist); |
1550 | |
1551 /* Make sure symbol does not think it is set up for this buffer; | |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1552 force it to look once again for this buffer's value. */ |
298 | 1553 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1554 Lisp_Object *pvalbuf; |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1555 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1556 valcontents = SYMBOL_VALUE (variable); |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1557 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1558 pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer; |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1559 if (current_buffer == XBUFFER (*pvalbuf)) |
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1560 *pvalbuf = Qnil; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1561 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
298 | 1562 } |
1278
0a0646ae381f
* data.c (Fmake_local_variable): If SYM forwards to a C variable,
Jim Blandy <jimb@redhat.com>
parents:
1263
diff
changeset
|
1563 } |
298 | 1564 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1565 /* If the symbol forwards into a C variable, then load the binding |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1566 for this buffer now. If C code modifies the variable before we |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1567 load the binding in, then that new value will clobber the default |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1568 binding the next time we unload it. */ |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1569 valcontents = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (variable))->realvalue; |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1570 if (INTFWDP (valcontents) || BOOLFWDP (valcontents) || OBJFWDP (valcontents)) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1571 swap_in_symval_forwarding (variable, SYMBOL_VALUE (variable)); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1572 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1573 return variable; |
298 | 1574 } |
1575 | |
1576 DEFUN ("kill-local-variable", Fkill_local_variable, Skill_local_variable, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1577 1, 1, "vKill Local Variable: ", |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1578 doc: /* Make VARIABLE no longer have a separate value in the current buffer. |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1579 From now on the default value will apply in this buffer. Return VARIABLE. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1580 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1581 register Lisp_Object variable; |
298 | 1582 { |
1583 register Lisp_Object tem, valcontents; | |
1584 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1585 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1586 variable = indirect_variable (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1587 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1588 valcontents = SYMBOL_VALUE (variable); |
298 | 1589 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1590 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1591 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1592 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1593 int idx = PER_BUFFER_IDX (offset); |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1594 |
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1595 if (idx > 0) |
298 | 1596 { |
28351 | 1597 SET_PER_BUFFER_VALUE_P (current_buffer, idx, 0); |
1598 PER_BUFFER_VALUE (current_buffer, offset) | |
1599 = PER_BUFFER_DEFAULT (offset); | |
298 | 1600 } |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1601 return variable; |
298 | 1602 } |
1603 | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1604 if (!BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1605 && !SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1606 return variable; |
298 | 1607 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1608 /* Get rid of this buffer's alist element, if any. */ |
298 | 1609 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1610 tem = Fassq (variable, current_buffer->local_var_alist); |
490 | 1611 if (!NILP (tem)) |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1612 current_buffer->local_var_alist |
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1613 = Fdelq (tem, current_buffer->local_var_alist); |
298 | 1614 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1615 /* If the symbol is set up with the current buffer's binding |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1616 loaded, recompute its value. We have to do it now, or else |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1617 forwarded objects won't work right. */ |
298 | 1618 { |
50305
77bee06b14c5
(store_symval_forwarding): Delete special read-only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50109
diff
changeset
|
1619 Lisp_Object *pvalbuf, buf; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1620 valcontents = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1621 pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer; |
50305
77bee06b14c5
(store_symval_forwarding): Delete special read-only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50109
diff
changeset
|
1622 XSETBUFFER (buf, current_buffer); |
77bee06b14c5
(store_symval_forwarding): Delete special read-only
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50109
diff
changeset
|
1623 if (EQ (buf, *pvalbuf)) |
14264
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1624 { |
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1625 *pvalbuf = Qnil; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1626 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
14745
f78162b0fc6e
(Fkill_local_variable): Call find_symbol_value directly,
Richard M. Stallman <rms@gnu.org>
parents:
14302
diff
changeset
|
1627 find_symbol_value (variable); |
14264
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1628 } |
298 | 1629 } |
1630 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1631 return variable; |
298 | 1632 } |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1633 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1634 /* Lisp functions for creating and removing buffer-local variables. */ |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1635 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1636 DEFUN ("make-variable-frame-local", Fmake_variable_frame_local, Smake_variable_frame_local, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1637 1, 1, "vMake Variable Frame Local: ", |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1638 doc: /* Enable VARIABLE to have frame-local bindings. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1639 When a frame-local binding exists in the current frame, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1640 it is in effect whenever the current buffer has no buffer-local binding. |
46831
06e2e0c47046
(Fmake_variable_frame_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46521
diff
changeset
|
1641 A frame-local binding is actually a frame parameter value; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1642 thus, any given frame has a local binding for VARIABLE if it has |
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1643 a value for the frame parameter named VARIABLE. Return VARIABLE. |
46831
06e2e0c47046
(Fmake_variable_frame_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46521
diff
changeset
|
1644 See `modify-frame-parameters' for how to set frame parameters. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1645 (variable) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1646 register Lisp_Object variable; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1647 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1648 register Lisp_Object tem, valcontents, newval; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1649 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1650 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1651 variable = indirect_variable (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1652 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1653 valcontents = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1654 if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1655 || BUFFER_OBJFWDP (valcontents)) |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1656 error ("Symbol %s may not be frame-local", SDATA (SYMBOL_NAME (variable))); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1657 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1658 if (BUFFER_LOCAL_VALUEP (valcontents) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1659 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1660 { |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1661 XBUFFER_LOCAL_VALUE (valcontents)->check_frame = 1; |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1662 return variable; |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1663 } |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1664 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1665 if (EQ (valcontents, Qunbound)) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1666 SET_SYMBOL_VALUE (variable, Qnil); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1667 tem = Fcons (Qnil, Fsymbol_value (variable)); |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39775
diff
changeset
|
1668 XSETCAR (tem, tem); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1669 newval = allocate_misc (); |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1670 XMISCTYPE (newval) = Lisp_Misc_Some_Buffer_Local_Value; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1671 XBUFFER_LOCAL_VALUE (newval)->realvalue = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1672 XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1673 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1674 XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1675 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1676 XBUFFER_LOCAL_VALUE (newval)->check_frame = 1; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1677 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1678 SET_SYMBOL_VALUE (variable, newval); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1679 return variable; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1680 } |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1681 |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1682 DEFUN ("local-variable-p", Flocal_variable_p, Slocal_variable_p, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1683 1, 2, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1684 doc: /* Non-nil if VARIABLE has a local binding in buffer BUFFER. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1685 BUFFER defaults to the current buffer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1686 (variable, buffer) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1687 register Lisp_Object variable, buffer; |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1688 { |
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1689 Lisp_Object valcontents; |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1690 register struct buffer *buf; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1691 |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1692 if (NILP (buffer)) |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1693 buf = current_buffer; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1694 else |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1695 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1696 CHECK_BUFFER (buffer); |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1697 buf = XBUFFER (buffer); |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1698 } |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1699 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1700 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1701 variable = indirect_variable (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1702 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1703 valcontents = SYMBOL_VALUE (variable); |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1704 if (BUFFER_LOCAL_VALUEP (valcontents) |
12225
a0067d2edef7
(Flocal_variable_p): Fix backwards logical operator.
Richard M. Stallman <rms@gnu.org>
parents:
12113
diff
changeset
|
1705 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1706 { |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1707 Lisp_Object tail, elt; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1708 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1709 variable = indirect_variable (variable); |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1710 for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail)) |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1711 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1712 elt = XCAR (tail); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1713 if (EQ (variable, XCAR (elt))) |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1714 return Qt; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1715 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1716 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1717 if (BUFFER_OBJFWDP (valcontents)) |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1718 { |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1719 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1720 int idx = PER_BUFFER_IDX (offset); |
1721 if (idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) | |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1722 return Qt; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1723 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1724 return Qnil; |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1725 } |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1726 |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1727 DEFUN ("local-variable-if-set-p", Flocal_variable_if_set_p, Slocal_variable_if_set_p, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1728 1, 2, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1729 doc: /* Non-nil if VARIABLE will be local in buffer BUFFER if it is set there. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1730 BUFFER defaults to the current buffer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1731 (variable, buffer) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1732 register Lisp_Object variable, buffer; |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1733 { |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1734 Lisp_Object valcontents; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1735 register struct buffer *buf; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1736 |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1737 if (NILP (buffer)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1738 buf = current_buffer; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1739 else |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1740 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1741 CHECK_BUFFER (buffer); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1742 buf = XBUFFER (buffer); |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1743 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1744 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1745 CHECK_SYMBOL (variable); |
52376
78af369bc6ac
(Fmake_variable_buffer_local, Fmake_local_variable)
Richard M. Stallman <rms@gnu.org>
parents:
51030
diff
changeset
|
1746 variable = indirect_variable (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1747 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1748 valcontents = SYMBOL_VALUE (variable); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1749 |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1750 /* This means that make-variable-buffer-local was done. */ |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1751 if (BUFFER_LOCAL_VALUEP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1752 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1753 /* All these slots become local if they are set. */ |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1754 if (BUFFER_OBJFWDP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1755 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1756 if (SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1757 { |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1758 Lisp_Object tail, elt; |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1759 for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail)) |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1760 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1761 elt = XCAR (tail); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1762 if (EQ (variable, XCAR (elt))) |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1763 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1764 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1765 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1766 return Qnil; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1767 } |
298 | 1768 |
648 | 1769 /* Find the function at the end of a chain of symbol function indirections. */ |
1770 | |
1771 /* If OBJECT is a symbol, find the end of its function chain and | |
1772 return the value found there. If OBJECT is not a symbol, just | |
1773 return it. If there is a cycle in the function chain, signal a | |
1774 cyclic-function-indirection error. | |
1775 | |
1776 This is like Findirect_function, except that it doesn't signal an | |
1777 error if the chain ends up unbound. */ | |
1778 Lisp_Object | |
1648
27e9f99fe095
src/ * data.c (indirect_function): Delete unused argument ERROR.
Jim Blandy <jimb@redhat.com>
parents:
1508
diff
changeset
|
1779 indirect_function (object) |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1780 register Lisp_Object object; |
648 | 1781 { |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1782 Lisp_Object tortoise, hare; |
648 | 1783 |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1784 hare = tortoise = object; |
648 | 1785 |
1786 for (;;) | |
1787 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1788 if (!SYMBOLP (hare) || EQ (hare, Qunbound)) |
648 | 1789 break; |
1790 hare = XSYMBOL (hare)->function; | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1791 if (!SYMBOLP (hare) || EQ (hare, Qunbound)) |
648 | 1792 break; |
1793 hare = XSYMBOL (hare)->function; | |
1794 | |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1795 tortoise = XSYMBOL (tortoise)->function; |
648 | 1796 |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1797 if (EQ (hare, tortoise)) |
648 | 1798 Fsignal (Qcyclic_function_indirection, Fcons (object, Qnil)); |
1799 } | |
1800 | |
1801 return hare; | |
1802 } | |
1803 | |
1804 DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1805 doc: /* Return the function at the end of OBJECT's function chain. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1806 If OBJECT is a symbol, follow all function indirections and return the final |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1807 function binding. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1808 If OBJECT is not a symbol, just return it. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1809 Signal a void-function error if the final symbol is unbound. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1810 Signal a cyclic-function-indirection error if there is a loop in the |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1811 function chain of symbols. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1812 (object) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1813 register Lisp_Object object; |
648 | 1814 { |
1815 Lisp_Object result; | |
1816 | |
1817 result = indirect_function (object); | |
1818 | |
1819 if (EQ (result, Qunbound)) | |
1820 return Fsignal (Qvoid_function, Fcons (object, Qnil)); | |
1821 return result; | |
1822 } | |
1823 | |
298 | 1824 /* Extract and set vector and string elements */ |
1825 | |
1826 DEFUN ("aref", Faref, Saref, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1827 doc: /* Return the element of ARRAY at index IDX. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1828 ARRAY may be a vector, a string, a char-table, a bool-vector, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1829 or a byte-code object. IDX starts at 0. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1830 (array, idx) |
298 | 1831 register Lisp_Object array; |
1832 Lisp_Object idx; | |
1833 { | |
1834 register int idxval; | |
1835 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1836 CHECK_NUMBER (idx); |
298 | 1837 idxval = XINT (idx); |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1838 if (STRINGP (array)) |
298 | 1839 { |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1840 int c, idxval_byte; |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1841 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1842 if (idxval < 0 || idxval >= SCHARS (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1843 args_out_of_range (array, idx); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1844 if (! STRING_MULTIBYTE (array)) |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1845 return make_number ((unsigned char) SREF (array, idxval)); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1846 idxval_byte = string_char_to_byte (array, idxval); |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1847 |
46422
50a2414d96b7
* data.c (Faref): Use SDATA.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
1848 c = STRING_CHAR (SDATA (array) + idxval_byte, |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1849 SBYTES (array) - idxval_byte); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1850 return make_number (c); |
298 | 1851 } |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1852 else if (BOOL_VECTOR_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1853 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1854 int val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1855 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1856 if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1857 args_out_of_range (array, idx); |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1858 |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1859 val = (unsigned char) XBOOL_VECTOR (array)->data[idxval / BITS_PER_CHAR]; |
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1860 return (val & (1 << (idxval % BITS_PER_CHAR)) ? Qt : Qnil); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1861 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1862 else if (CHAR_TABLE_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1863 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1864 Lisp_Object val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1865 |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1866 val = Qnil; |
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1867 |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1868 if (idxval < 0) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1869 args_out_of_range (array, idx); |
20827
4b85e02aae14
(Faref, Faset): Allow indexing a char-table
Richard M. Stallman <rms@gnu.org>
parents:
20793
diff
changeset
|
1870 if (idxval < CHAR_TABLE_ORDINARY_SLOTS) |
17027 | 1871 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1872 /* For ASCII and 8-bit European characters, the element is |
17184
caab9110ee07
(Faref, Faset): Adjusted for the change of CHAR_TABLE_ORDINARY_SLOTS.
Kenichi Handa <handa@m17n.org>
parents:
17117
diff
changeset
|
1873 stored in the top table. */ |
17027 | 1874 val = XCHAR_TABLE (array)->contents[idxval]; |
1875 if (NILP (val)) | |
1876 val = XCHAR_TABLE (array)->defalt; | |
1877 while (NILP (val)) /* Follow parents until we find some value. */ | |
1878 { | |
1879 array = XCHAR_TABLE (array)->parent; | |
1880 if (NILP (array)) | |
1881 return Qnil; | |
1882 val = XCHAR_TABLE (array)->contents[idxval]; | |
1883 if (NILP (val)) | |
1884 val = XCHAR_TABLE (array)->defalt; | |
1885 } | |
1886 return val; | |
1887 } | |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1888 else |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1889 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1890 int code[4], i; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1891 Lisp_Object sub_table; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1892 |
29007
180a8014aa14
(Faref): Use SPLIT_CHAR instead of SPLIT_NON_ASCII_CHAR.
Kenichi Handa <handa@m17n.org>
parents:
28417
diff
changeset
|
1893 SPLIT_CHAR (idxval, code[0], code[1], code[2]); |
26849
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
1894 if (code[1] < 32) code[1] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
1895 else if (code[2] < 32) code[2] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
1896 |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1897 /* Here, the possible range of CODE[0] (== charset ID) is |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1898 128..MAX_CHARSET. Since the top level char table contains |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1899 data for multibyte characters after 256th element, we must |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1900 increment CODE[0] by 128 to get a correct index. */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1901 code[0] += 128; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1902 code[3] = -1; /* anchor */ |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1903 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1904 try_parent_char_table: |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1905 sub_table = array; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1906 for (i = 0; code[i] >= 0; i++) |
17027 | 1907 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1908 val = XCHAR_TABLE (sub_table)->contents[code[i]]; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1909 if (SUB_CHAR_TABLE_P (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1910 sub_table = val; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1911 else |
17027 | 1912 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1913 if (NILP (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1914 val = XCHAR_TABLE (sub_table)->defalt; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1915 if (NILP (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1916 { |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1917 array = XCHAR_TABLE (array)->parent; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1918 if (!NILP (array)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1919 goto try_parent_char_table; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1920 } |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1921 return val; |
17027 | 1922 } |
1923 } | |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1924 /* Here, VAL is a sub char table. We try the default value |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1925 and parent. */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1926 val = XCHAR_TABLE (val)->defalt; |
17027 | 1927 if (NILP (val)) |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1928 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1929 array = XCHAR_TABLE (array)->parent; |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1930 if (!NILP (array)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1931 goto try_parent_char_table; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1932 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1933 return val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1934 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1935 } |
298 | 1936 else |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1937 { |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1938 int size = 0; |
10290
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1939 if (VECTORP (array)) |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1940 size = XVECTOR (array)->size; |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1941 else if (COMPILEDP (array)) |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1942 size = XVECTOR (array)->size & PSEUDOVECTOR_SIZE_MASK; |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1943 else |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1944 wrong_type_argument (Qarrayp, array); |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1945 |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1946 if (idxval < 0 || idxval >= size) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1947 args_out_of_range (array, idx); |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1948 return XVECTOR (array)->contents[idxval]; |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1949 } |
298 | 1950 } |
1951 | |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1952 /* Don't use alloca for relocating string data larger than this, lest |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1953 we overflow their stack. The value is the same as what used in |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1954 fns.c for base64 handling. */ |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1955 #define MAX_ALLOCA 16*1024 |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1956 |
298 | 1957 DEFUN ("aset", Faset, Saset, 3, 3, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1958 doc: /* Store into the element of ARRAY at index IDX the value NEWELT. |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1959 Return NEWELT. ARRAY may be a vector, a string, a char-table or a |
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1960 bool-vector. IDX starts at 0. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1961 (array, idx, newelt) |
298 | 1962 register Lisp_Object array; |
1963 Lisp_Object idx, newelt; | |
1964 { | |
1965 register int idxval; | |
1966 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1967 CHECK_NUMBER (idx); |
298 | 1968 idxval = XINT (idx); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1969 if (!VECTORP (array) && !STRINGP (array) && !BOOL_VECTOR_P (array) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1970 && ! CHAR_TABLE_P (array)) |
298 | 1971 array = wrong_type_argument (Qarrayp, array); |
1972 CHECK_IMPURE (array); | |
1973 | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1974 if (VECTORP (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1975 { |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1976 if (idxval < 0 || idxval >= XVECTOR (array)->size) |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1977 args_out_of_range (array, idx); |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1978 XVECTOR (array)->contents[idxval] = newelt; |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1979 } |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1980 else if (BOOL_VECTOR_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1981 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1982 int val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1983 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1984 if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1985 args_out_of_range (array, idx); |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1986 |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1987 val = (unsigned char) XBOOL_VECTOR (array)->data[idxval / BITS_PER_CHAR]; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1988 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1989 if (! NILP (newelt)) |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1990 val |= 1 << (idxval % BITS_PER_CHAR); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1991 else |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1992 val &= ~(1 << (idxval % BITS_PER_CHAR)); |
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1993 XBOOL_VECTOR (array)->data[idxval / BITS_PER_CHAR] = val; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1994 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1995 else if (CHAR_TABLE_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1996 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1997 if (idxval < 0) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1998 args_out_of_range (array, idx); |
20827
4b85e02aae14
(Faref, Faset): Allow indexing a char-table
Richard M. Stallman <rms@gnu.org>
parents:
20793
diff
changeset
|
1999 if (idxval < CHAR_TABLE_ORDINARY_SLOTS) |
17027 | 2000 XCHAR_TABLE (array)->contents[idxval] = newelt; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2001 else |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2002 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2003 int code[4], i; |
17027 | 2004 Lisp_Object val; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2005 |
29007
180a8014aa14
(Faref): Use SPLIT_CHAR instead of SPLIT_NON_ASCII_CHAR.
Kenichi Handa <handa@m17n.org>
parents:
28417
diff
changeset
|
2006 SPLIT_CHAR (idxval, code[0], code[1], code[2]); |
26849
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
2007 if (code[1] < 32) code[1] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
2008 else if (code[2] < 32) code[2] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
2009 |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2010 /* See the comment of the corresponding part in Faref. */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2011 code[0] += 128; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2012 code[3] = -1; /* anchor */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2013 for (i = 0; code[i + 1] >= 0; i++) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2014 { |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2015 val = XCHAR_TABLE (array)->contents[code[i]]; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2016 if (SUB_CHAR_TABLE_P (val)) |
17027 | 2017 array = val; |
2018 else | |
19751
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2019 { |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2020 Lisp_Object temp; |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2021 |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2022 /* VAL is a leaf. Create a sub char table with the |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2023 default value VAL or XCHAR_TABLE (array)->defalt |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2024 and look into it. */ |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2025 |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2026 temp = make_sub_char_table (NILP (val) |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2027 ? XCHAR_TABLE (array)->defalt |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2028 : val); |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2029 XCHAR_TABLE (array)->contents[code[i]] = temp; |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2030 array = temp; |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2031 } |
17027 | 2032 } |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2033 XCHAR_TABLE (array)->contents[code[i]] = newelt; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2034 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2035 } |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2036 else if (STRING_MULTIBYTE (array)) |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2037 { |
50632
bd83590b911a
(Faset): Calculate nbytes earlier, to satisfy the now pickier
Miles Bader <miles@gnu.org>
parents:
50314
diff
changeset
|
2038 int idxval_byte, prev_bytes, new_bytes, nbytes; |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2039 unsigned char workbuf[MAX_MULTIBYTE_LENGTH], *p0 = workbuf, *p1; |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2040 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2041 if (idxval < 0 || idxval >= SCHARS (array)) |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2042 args_out_of_range (array, idx); |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2043 CHECK_NUMBER (newelt); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2044 |
50632
bd83590b911a
(Faset): Calculate nbytes earlier, to satisfy the now pickier
Miles Bader <miles@gnu.org>
parents:
50314
diff
changeset
|
2045 nbytes = SBYTES (array); |
bd83590b911a
(Faset): Calculate nbytes earlier, to satisfy the now pickier
Miles Bader <miles@gnu.org>
parents:
50314
diff
changeset
|
2046 |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2047 idxval_byte = string_char_to_byte (array, idxval); |
46422
50a2414d96b7
* data.c (Faref): Use SDATA.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
2048 p1 = SDATA (array) + idxval_byte; |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2049 PARSE_MULTIBYTE_SEQ (p1, nbytes - idxval_byte, prev_bytes); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2050 new_bytes = CHAR_STRING (XINT (newelt), p0); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2051 if (prev_bytes != new_bytes) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2052 { |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2053 /* We must relocate the string data. */ |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2054 int nchars = SCHARS (array); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2055 unsigned char *str; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2056 |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2057 str = (nbytes <= MAX_ALLOCA |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2058 ? (unsigned char *) alloca (nbytes) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2059 : (unsigned char *) xmalloc (nbytes)); |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2060 bcopy (SDATA (array), str, nbytes); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2061 allocate_string_data (XSTRING (array), nchars, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2062 nbytes + new_bytes - prev_bytes); |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2063 bcopy (str, SDATA (array), idxval_byte); |
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2064 p1 = SDATA (array) + idxval_byte; |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2065 bcopy (str + idxval_byte + prev_bytes, p1 + new_bytes, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2066 nbytes - (idxval_byte + prev_bytes)); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2067 if (nbytes > MAX_ALLOCA) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2068 xfree (str); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2069 clear_string_char_byte_cache (); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2070 } |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2071 while (new_bytes--) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2072 *p1++ = *p0++; |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2073 } |
298 | 2074 else |
2075 { | |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2076 if (idxval < 0 || idxval >= SCHARS (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
2077 args_out_of_range (array, idx); |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2078 CHECK_NUMBER (newelt); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2079 |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2080 if (XINT (newelt) < 0 || SINGLE_BYTE_CHAR_P (XINT (newelt))) |
46422
50a2414d96b7
* data.c (Faref): Use SDATA.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
2081 SSET (array, idxval, XINT (newelt)); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2082 else |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2083 { |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2084 /* We must relocate the string data while converting it to |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2085 multibyte. */ |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2086 int idxval_byte, prev_bytes, new_bytes; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2087 unsigned char workbuf[MAX_MULTIBYTE_LENGTH], *p0 = workbuf, *p1; |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2088 unsigned char *origstr = SDATA (array), *str; |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2089 int nchars, nbytes; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2090 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2091 nchars = SCHARS (array); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2092 nbytes = idxval_byte = count_size_as_multibyte (origstr, idxval); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2093 nbytes += count_size_as_multibyte (origstr + idxval, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2094 nchars - idxval); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2095 str = (nbytes <= MAX_ALLOCA |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2096 ? (unsigned char *) alloca (nbytes) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2097 : (unsigned char *) xmalloc (nbytes)); |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2098 copy_text (SDATA (array), str, nchars, 0, 1); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2099 PARSE_MULTIBYTE_SEQ (str + idxval_byte, nbytes - idxval_byte, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2100 prev_bytes); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2101 new_bytes = CHAR_STRING (XINT (newelt), p0); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2102 allocate_string_data (XSTRING (array), nchars, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2103 nbytes + new_bytes - prev_bytes); |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2104 bcopy (str, SDATA (array), idxval_byte); |
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2105 p1 = SDATA (array) + idxval_byte; |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2106 while (new_bytes--) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2107 *p1++ = *p0++; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2108 bcopy (str + idxval_byte + prev_bytes, p1, |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2109 nbytes - (idxval_byte + prev_bytes)); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2110 if (nbytes > MAX_ALLOCA) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2111 xfree (str); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2112 clear_string_char_byte_cache (); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2113 } |
298 | 2114 } |
2115 | |
2116 return newelt; | |
2117 } | |
2118 | |
2119 /* Arithmetic functions */ | |
2120 | |
2121 enum comparison { equal, notequal, less, grtr, less_or_equal, grtr_or_equal }; | |
2122 | |
2123 Lisp_Object | |
2124 arithcompare (num1, num2, comparison) | |
2125 Lisp_Object num1, num2; | |
2126 enum comparison comparison; | |
2127 { | |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
2128 double f1 = 0, f2 = 0; |
298 | 2129 int floatp = 0; |
2130 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2131 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num1); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2132 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num2); |
298 | 2133 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
2134 if (FLOATP (num1) || FLOATP (num2)) |
298 | 2135 { |
2136 floatp = 1; | |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2137 f1 = (FLOATP (num1)) ? XFLOAT_DATA (num1) : XINT (num1); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2138 f2 = (FLOATP (num2)) ? XFLOAT_DATA (num2) : XINT (num2); |
298 | 2139 } |
2140 | |
2141 switch (comparison) | |
2142 { | |
2143 case equal: | |
2144 if (floatp ? f1 == f2 : XINT (num1) == XINT (num2)) | |
2145 return Qt; | |
2146 return Qnil; | |
2147 | |
2148 case notequal: | |
2149 if (floatp ? f1 != f2 : XINT (num1) != XINT (num2)) | |
2150 return Qt; | |
2151 return Qnil; | |
2152 | |
2153 case less: | |
2154 if (floatp ? f1 < f2 : XINT (num1) < XINT (num2)) | |
2155 return Qt; | |
2156 return Qnil; | |
2157 | |
2158 case less_or_equal: | |
2159 if (floatp ? f1 <= f2 : XINT (num1) <= XINT (num2)) | |
2160 return Qt; | |
2161 return Qnil; | |
2162 | |
2163 case grtr: | |
2164 if (floatp ? f1 > f2 : XINT (num1) > XINT (num2)) | |
2165 return Qt; | |
2166 return Qnil; | |
2167 | |
2168 case grtr_or_equal: | |
2169 if (floatp ? f1 >= f2 : XINT (num1) >= XINT (num2)) | |
2170 return Qt; | |
2171 return Qnil; | |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2172 |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2173 default: |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2174 abort (); |
298 | 2175 } |
2176 } | |
2177 | |
2178 DEFUN ("=", Feqlsign, Seqlsign, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2179 doc: /* Return t if two args, both numbers or markers, are equal. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2180 (num1, num2) |
298 | 2181 register Lisp_Object num1, num2; |
2182 { | |
2183 return arithcompare (num1, num2, equal); | |
2184 } | |
2185 | |
2186 DEFUN ("<", Flss, Slss, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2187 doc: /* Return t if first arg is less than second arg. Both must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2188 (num1, num2) |
298 | 2189 register Lisp_Object num1, num2; |
2190 { | |
2191 return arithcompare (num1, num2, less); | |
2192 } | |
2193 | |
2194 DEFUN (">", Fgtr, Sgtr, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2195 doc: /* Return t if first arg is greater than second arg. Both must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2196 (num1, num2) |
298 | 2197 register Lisp_Object num1, num2; |
2198 { | |
2199 return arithcompare (num1, num2, grtr); | |
2200 } | |
2201 | |
2202 DEFUN ("<=", Fleq, Sleq, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2203 doc: /* Return t if first arg is less than or equal to second arg. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2204 Both must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2205 (num1, num2) |
298 | 2206 register Lisp_Object num1, num2; |
2207 { | |
2208 return arithcompare (num1, num2, less_or_equal); | |
2209 } | |
2210 | |
2211 DEFUN (">=", Fgeq, Sgeq, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2212 doc: /* Return t if first arg is greater than or equal to second arg. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2213 Both must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2214 (num1, num2) |
298 | 2215 register Lisp_Object num1, num2; |
2216 { | |
2217 return arithcompare (num1, num2, grtr_or_equal); | |
2218 } | |
2219 | |
2220 DEFUN ("/=", Fneq, Sneq, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2221 doc: /* Return t if first arg is not equal to second arg. Both must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2222 (num1, num2) |
298 | 2223 register Lisp_Object num1, num2; |
2224 { | |
2225 return arithcompare (num1, num2, notequal); | |
2226 } | |
2227 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2228 DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2229 doc: /* Return t if NUMBER is zero. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2230 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2231 register Lisp_Object number; |
298 | 2232 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2233 CHECK_NUMBER_OR_FLOAT (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2234 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2235 if (FLOATP (number)) |
298 | 2236 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2237 if (XFLOAT_DATA (number) == 0.0) |
298 | 2238 return Qt; |
2239 return Qnil; | |
2240 } | |
2241 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2242 if (!XINT (number)) |
298 | 2243 return Qt; |
2244 return Qnil; | |
2245 } | |
2246 | |
12043 | 2247 /* Convert between long values and pairs of Lisp integers. */ |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2248 |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2249 Lisp_Object |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2250 long_to_cons (i) |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2251 unsigned long i; |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2252 { |
50109
d23ab2416c49
(long_to_cons): Fix type of top.
Andreas Schwab <schwab@suse.de>
parents:
48996
diff
changeset
|
2253 unsigned long top = i >> 16; |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2254 unsigned int bot = i & 0xFFFF; |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2255 if (top == 0) |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2256 return make_number (bot); |
11879
606889516975
(long_to_cons): Don't assume 32-bit longs.
Karl Heuer <kwzh@gnu.org>
parents:
11734
diff
changeset
|
2257 if (top == (unsigned long)-1 >> 16) |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2258 return Fcons (make_number (-1), make_number (bot)); |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2259 return Fcons (make_number (top), make_number (bot)); |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2260 } |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2261 |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2262 unsigned long |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2263 cons_to_long (c) |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2264 Lisp_Object c; |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2265 { |
3675
f42eaf84478f
(cons_to_long): Declare top, bot as Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
2266 Lisp_Object top, bot; |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2267 if (INTEGERP (c)) |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2268 return XINT (c); |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2269 top = XCAR (c); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2270 bot = XCDR (c); |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2271 if (CONSP (bot)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2272 bot = XCAR (bot); |
2515
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2273 return ((XINT (top) << 16) | XINT (bot)); |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2274 } |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2275 |
2429
96b55f2f19cd
Rename int-to-string to number-to-string, since it can handle
Jim Blandy <jimb@redhat.com>
parents:
2092
diff
changeset
|
2276 DEFUN ("number-to-string", Fnumber_to_string, Snumber_to_string, 1, 1, 0, |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
2277 doc: /* Return the decimal representation of NUMBER as a string. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2278 Uses a minus sign if negative. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2279 NUMBER may be an integer or a floating point number. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2280 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2281 Lisp_Object number; |
298 | 2282 { |
12528
ed5b91dd829a
(Fnumber_to_string): Make `buffer' long enough.
Karl Heuer <kwzh@gnu.org>
parents:
12295
diff
changeset
|
2283 char buffer[VALBITS]; |
298 | 2284 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2285 CHECK_NUMBER_OR_FLOAT (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2286 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2287 if (FLOATP (number)) |
298 | 2288 { |
2289 char pigbuf[350]; /* see comments in float_to_string */ | |
2290 | |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2291 float_to_string (pigbuf, XFLOAT_DATA (number)); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2292 return build_string (pigbuf); |
298 | 2293 } |
2294 | |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2295 if (sizeof (int) == sizeof (EMACS_INT)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2296 sprintf (buffer, "%d", XINT (number)); |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2297 else if (sizeof (long) == sizeof (EMACS_INT)) |
25780
18cf58ed9400
(find_symbol_value): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25665
diff
changeset
|
2298 sprintf (buffer, "%ld", (long) XINT (number)); |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2299 else |
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2300 abort (); |
298 | 2301 return build_string (buffer); |
2302 } | |
2303 | |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2304 INLINE static int |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2305 digit_to_number (character, base) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2306 int character, base; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2307 { |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2308 int digit; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2309 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2310 if (character >= '0' && character <= '9') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2311 digit = character - '0'; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2312 else if (character >= 'a' && character <= 'z') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2313 digit = character - 'a' + 10; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2314 else if (character >= 'A' && character <= 'Z') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2315 digit = character - 'A' + 10; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2316 else |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2317 return -1; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2318 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2319 if (digit >= base) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2320 return -1; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2321 else |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2322 return digit; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
2323 } |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2324 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2325 DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, |
48996
7931f73b31db
(Fstring_to_number, Fminus): Better English in doc strings.
Francesco Potortì <pot@gnu.org>
parents:
48961
diff
changeset
|
2326 doc: /* Parse STRING as a decimal number and return the number. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2327 This parses both integers and floating point numbers. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2328 It ignores leading spaces and tabs. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2329 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2330 If BASE, interpret STRING as a number in that base. If BASE isn't |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2331 present, base 10 is used. BASE must be between 2 and 16 (inclusive). |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2332 If the base used is not 10, floating point is not recognized. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2333 (string, base) |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2334 register Lisp_Object string, base; |
298 | 2335 { |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2336 register unsigned char *p; |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2337 register int b; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2338 int sign = 1; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2339 Lisp_Object val; |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2340 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2341 CHECK_STRING (string); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2342 |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2343 if (NILP (base)) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2344 b = 10; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2345 else |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2346 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2347 CHECK_NUMBER (base); |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2348 b = XINT (base); |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2349 if (b < 2 || b > 16) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2350 Fsignal (Qargs_out_of_range, Fcons (base, Qnil)); |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2351 } |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2352 |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2353 /* Skip any whitespace at the front of the number. Some versions of |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2354 atoi do this anyway, so we might as well make Emacs lisp consistent. */ |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2355 p = SDATA (string); |
1987
cd893024d6b9
* data.c (Fstring_to_number): Declare p to be an unsigned char, to
Jim Blandy <jimb@redhat.com>
parents:
1914
diff
changeset
|
2356 while (*p == ' ' || *p == '\t') |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2357 p++; |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2358 |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2359 if (*p == '-') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2360 { |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2361 sign = -1; |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2362 p++; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2363 } |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2364 else if (*p == '+') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2365 p++; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
2366 |
23420
460aba3ec682
(Fstring_to_number): Don't recognize floating point if base is not 10.
Kenichi Handa <handa@m17n.org>
parents:
23250
diff
changeset
|
2367 if (isfloat_string (p) && b == 10) |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2368 val = make_float (sign * atof (p)); |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2369 else |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2370 { |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2371 double v = 0; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2372 |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2373 while (1) |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2374 { |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2375 int digit = digit_to_number (*p++, b); |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2376 if (digit < 0) |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2377 break; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2378 v = v * b + digit; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2379 } |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2380 |
39775
280975f8c65e
(Fstring_to_number): Use make_fixnum_or_float.
Gerd Moellmann <gerd@gnu.org>
parents:
39767
diff
changeset
|
2381 val = make_fixnum_or_float (sign * v); |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2382 } |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2383 |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2384 return val; |
298 | 2385 } |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2386 |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2387 |
298 | 2388 enum arithop |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2389 { |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2390 Aadd, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2391 Asub, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2392 Amult, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2393 Adiv, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2394 Alogand, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2395 Alogior, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2396 Alogxor, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2397 Amax, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2398 Amin |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2399 }; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2400 |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2401 static Lisp_Object float_arith_driver P_ ((double, int, enum arithop, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2402 int, Lisp_Object *)); |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2403 extern Lisp_Object fmod_float (); |
1508
768d4c10c2bf
* data.c (Fset): See if current_alist_element points to itself
Jim Blandy <jimb@redhat.com>
parents:
1293
diff
changeset
|
2404 |
298 | 2405 Lisp_Object |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2406 arith_driver (code, nargs, args) |
298 | 2407 enum arithop code; |
2408 int nargs; | |
2409 register Lisp_Object *args; | |
2410 { | |
2411 register Lisp_Object val; | |
2412 register int argnum; | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2413 register EMACS_INT accum = 0; |
11688
f1e6033d8aca
(arith_driver): Make accum and next EMACS_INTs.
Richard M. Stallman <rms@gnu.org>
parents:
11341
diff
changeset
|
2414 register EMACS_INT next; |
298 | 2415 |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
2416 switch (SWITCH_ENUM_CAST (code)) |
298 | 2417 { |
2418 case Alogior: | |
2419 case Alogxor: | |
2420 case Aadd: | |
2421 case Asub: | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2422 accum = 0; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2423 break; |
298 | 2424 case Amult: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2425 accum = 1; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2426 break; |
298 | 2427 case Alogand: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2428 accum = -1; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2429 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2430 default: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2431 break; |
298 | 2432 } |
2433 | |
2434 for (argnum = 0; argnum < nargs; argnum++) | |
2435 { | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2436 /* Using args[argnum] as argument to CHECK_NUMBER_... */ |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2437 val = args[argnum]; |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2438 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val); |
298 | 2439 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2440 if (FLOATP (val)) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2441 return float_arith_driver ((double) accum, argnum, code, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2442 nargs, args); |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2443 args[argnum] = val; |
298 | 2444 next = XINT (args[argnum]); |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
2445 switch (SWITCH_ENUM_CAST (code)) |
298 | 2446 { |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2447 case Aadd: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2448 accum += next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2449 break; |
298 | 2450 case Asub: |
23148
10e261360159
(arith_driver, float_arith_driver): Compute (- x) by
Paul Eggert <eggert@twinsun.com>
parents:
23129
diff
changeset
|
2451 accum = argnum ? accum - next : nargs == 1 ? - next : next; |
298 | 2452 break; |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2453 case Amult: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2454 accum *= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2455 break; |
298 | 2456 case Adiv: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2457 if (!argnum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2458 accum = next; |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2459 else |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2460 { |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2461 if (next == 0) |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2462 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2463 accum /= next; |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2464 } |
298 | 2465 break; |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2466 case Alogand: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2467 accum &= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2468 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2469 case Alogior: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2470 accum |= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2471 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2472 case Alogxor: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2473 accum ^= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2474 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2475 case Amax: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2476 if (!argnum || next > accum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2477 accum = next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2478 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2479 case Amin: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2480 if (!argnum || next < accum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2481 accum = next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2482 break; |
298 | 2483 } |
2484 } | |
2485 | |
9263
cda13734e32c
(make_number, Fsymbol_name, do_symval_forwarding, swap_in_symval_forwarding,
Karl Heuer <kwzh@gnu.org>
parents:
9194
diff
changeset
|
2486 XSETINT (val, accum); |
298 | 2487 return val; |
2488 } | |
2489 | |
6201 | 2490 #undef isnan |
2491 #define isnan(x) ((x) != (x)) | |
2492 | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2493 static Lisp_Object |
298 | 2494 float_arith_driver (accum, argnum, code, nargs, args) |
2495 double accum; | |
2496 register int argnum; | |
2497 enum arithop code; | |
2498 int nargs; | |
2499 register Lisp_Object *args; | |
2500 { | |
2501 register Lisp_Object val; | |
2502 double next; | |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2503 |
298 | 2504 for (; argnum < nargs; argnum++) |
2505 { | |
2506 val = args[argnum]; /* using args[argnum] as argument to CHECK_NUMBER_... */ | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2507 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val); |
298 | 2508 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
2509 if (FLOATP (val)) |
298 | 2510 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2511 next = XFLOAT_DATA (val); |
298 | 2512 } |
2513 else | |
2514 { | |
2515 args[argnum] = val; /* runs into a compiler bug. */ | |
2516 next = XINT (args[argnum]); | |
2517 } | |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
2518 switch (SWITCH_ENUM_CAST (code)) |
298 | 2519 { |
2520 case Aadd: | |
2521 accum += next; | |
2522 break; | |
2523 case Asub: | |
23148
10e261360159
(arith_driver, float_arith_driver): Compute (- x) by
Paul Eggert <eggert@twinsun.com>
parents:
23129
diff
changeset
|
2524 accum = argnum ? accum - next : nargs == 1 ? - next : next; |
298 | 2525 break; |
2526 case Amult: | |
2527 accum *= next; | |
2528 break; | |
2529 case Adiv: | |
2530 if (!argnum) | |
2531 accum = next; | |
2532 else | |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2533 { |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2534 if (! IEEE_FLOATING_POINT && next == 0) |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2535 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2536 accum /= next; |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2537 } |
298 | 2538 break; |
2539 case Alogand: | |
2540 case Alogior: | |
2541 case Alogxor: | |
2542 return wrong_type_argument (Qinteger_or_marker_p, val); | |
2543 case Amax: | |
6201 | 2544 if (!argnum || isnan (next) || next > accum) |
298 | 2545 accum = next; |
2546 break; | |
2547 case Amin: | |
6201 | 2548 if (!argnum || isnan (next) || next < accum) |
298 | 2549 accum = next; |
2550 break; | |
2551 } | |
2552 } | |
2553 | |
2554 return make_float (accum); | |
2555 } | |
27727
9400865ec7cf
Remove `LISP_FLOAT_TYPE' and `standalone'.
Gerd Moellmann <gerd@gnu.org>
parents:
27703
diff
changeset
|
2556 |
298 | 2557 |
2558 DEFUN ("+", Fplus, Splus, 0, MANY, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2559 doc: /* Return sum of any number of arguments, which are numbers or markers. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2560 usage: (+ &rest NUMBERS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2561 (nargs, args) |
298 | 2562 int nargs; |
2563 Lisp_Object *args; | |
2564 { | |
2565 return arith_driver (Aadd, nargs, args); | |
2566 } | |
2567 | |
2568 DEFUN ("-", Fminus, Sminus, 0, MANY, 0, | |
48996
7931f73b31db
(Fstring_to_number, Fminus): Better English in doc strings.
Francesco Potortì <pot@gnu.org>
parents:
48961
diff
changeset
|
2569 doc: /* Negate number or subtract numbers or markers and return the result. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2570 With one arg, negates it. With more than one arg, |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2571 subtracts all but the first from the first. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2572 usage: (- &optional NUMBER-OR-MARKER &rest MORE-NUMBERS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2573 (nargs, args) |
298 | 2574 int nargs; |
2575 Lisp_Object *args; | |
2576 { | |
2577 return arith_driver (Asub, nargs, args); | |
2578 } | |
2579 | |
2580 DEFUN ("*", Ftimes, Stimes, 0, MANY, 0, | |
41153 | 2581 doc: /* Return product of any number of arguments, which are numbers or markers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2582 usage: (* &rest NUMBERS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2583 (nargs, args) |
298 | 2584 int nargs; |
2585 Lisp_Object *args; | |
2586 { | |
2587 return arith_driver (Amult, nargs, args); | |
2588 } | |
2589 | |
2590 DEFUN ("/", Fquo, Squo, 2, MANY, 0, | |
41153 | 2591 doc: /* Return first argument divided by all the remaining arguments. |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2592 The arguments must be numbers or markers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2593 usage: (/ DIVIDEND DIVISOR &rest DIVISORS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2594 (nargs, args) |
298 | 2595 int nargs; |
2596 Lisp_Object *args; | |
2597 { | |
2598 return arith_driver (Adiv, nargs, args); | |
2599 } | |
2600 | |
2601 DEFUN ("%", Frem, Srem, 2, 2, 0, | |
41153 | 2602 doc: /* Return remainder of X divided by Y. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2603 Both must be integers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2604 (x, y) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2605 register Lisp_Object x, y; |
298 | 2606 { |
2607 Lisp_Object val; | |
2608 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2609 CHECK_NUMBER_COERCE_MARKER (x); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2610 CHECK_NUMBER_COERCE_MARKER (y); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2611 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2612 if (XFASTINT (y) == 0) |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2613 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2614 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2615 XSETINT (val, XINT (x) % XINT (y)); |
298 | 2616 return val; |
2617 } | |
2618 | |
5776
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2619 #ifndef HAVE_FMOD |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2620 double |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2621 fmod (f1, f2) |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2622 double f1, f2; |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2623 { |
16945
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2624 double r = f1; |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2625 |
13296
76034e1fc62e
[!HAVE_FMOD] (fmod): Make consistent with ANSI definition.
Karl Heuer <kwzh@gnu.org>
parents:
13200
diff
changeset
|
2626 if (f2 < 0.0) |
76034e1fc62e
[!HAVE_FMOD] (fmod): Make consistent with ANSI definition.
Karl Heuer <kwzh@gnu.org>
parents:
13200
diff
changeset
|
2627 f2 = -f2; |
16945
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2628 |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2629 /* If the magnitude of the result exceeds that of the divisor, or |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2630 the sign of the result does not agree with that of the dividend, |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2631 iterate with the reduced value. This does not yield a |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2632 particularly accurate result, but at least it will be in the |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2633 range promised by fmod. */ |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2634 do |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2635 r -= f2 * floor (r / f2); |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2636 while (f2 <= (r < 0 ? -r : r) || ((r < 0) != (f1 < 0) && ! isnan (r))); |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2637 |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2638 return r; |
5776
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2639 } |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2640 #endif /* ! HAVE_FMOD */ |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2641 |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2642 DEFUN ("mod", Fmod, Smod, 2, 2, 0, |
41153 | 2643 doc: /* Return X modulo Y. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2644 The result falls between zero (inclusive) and Y (exclusive). |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2645 Both X and Y must be numbers or markers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2646 (x, y) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2647 register Lisp_Object x, y; |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2648 { |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2649 Lisp_Object val; |
11688
f1e6033d8aca
(arith_driver): Make accum and next EMACS_INTs.
Richard M. Stallman <rms@gnu.org>
parents:
11341
diff
changeset
|
2650 EMACS_INT i1, i2; |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2651 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2652 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (x); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2653 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (y); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2654 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2655 if (FLOATP (x) || FLOATP (y)) |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2656 return fmod_float (x, y); |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2657 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2658 i1 = XINT (x); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2659 i2 = XINT (y); |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2660 |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2661 if (i2 == 0) |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2662 Fsignal (Qarith_error, Qnil); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2663 |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2664 i1 %= i2; |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2665 |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2666 /* If the "remainder" comes out with the wrong sign, fix it. */ |
11155
0aede77c1593
(Fmod): Fix the final adjustment, when i2 < 0 and i1 == 0.
Richard M. Stallman <rms@gnu.org>
parents:
11019
diff
changeset
|
2667 if (i2 < 0 ? i1 > 0 : i1 < 0) |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2668 i1 += i2; |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2669 |
9263
cda13734e32c
(make_number, Fsymbol_name, do_symval_forwarding, swap_in_symval_forwarding,
Karl Heuer <kwzh@gnu.org>
parents:
9194
diff
changeset
|
2670 XSETINT (val, i1); |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2671 return val; |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2672 } |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2673 |
298 | 2674 DEFUN ("max", Fmax, Smax, 1, MANY, 0, |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2675 doc: /* Return largest of all the arguments (which must be numbers or markers). |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2676 The value is always a number; markers are converted to numbers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2677 usage: (max NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2678 (nargs, args) |
298 | 2679 int nargs; |
2680 Lisp_Object *args; | |
2681 { | |
2682 return arith_driver (Amax, nargs, args); | |
2683 } | |
2684 | |
2685 DEFUN ("min", Fmin, Smin, 1, MANY, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2686 doc: /* Return smallest of all the arguments (which must be numbers or markers). |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2687 The value is always a number; markers are converted to numbers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2688 usage: (min NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2689 (nargs, args) |
298 | 2690 int nargs; |
2691 Lisp_Object *args; | |
2692 { | |
2693 return arith_driver (Amin, nargs, args); | |
2694 } | |
2695 | |
2696 DEFUN ("logand", Flogand, Slogand, 0, MANY, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2697 doc: /* Return bitwise-and of all the arguments. |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2698 Arguments may be integers, or markers converted to integers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2699 usage: (logand &rest INTS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2700 (nargs, args) |
298 | 2701 int nargs; |
2702 Lisp_Object *args; | |
2703 { | |
2704 return arith_driver (Alogand, nargs, args); | |
2705 } | |
2706 | |
2707 DEFUN ("logior", Flogior, Slogior, 0, MANY, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2708 doc: /* Return bitwise-or of all the arguments. |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2709 Arguments may be integers, or markers converted to integers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2710 usage: (logior &rest INTS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2711 (nargs, args) |
298 | 2712 int nargs; |
2713 Lisp_Object *args; | |
2714 { | |
2715 return arith_driver (Alogior, nargs, args); | |
2716 } | |
2717 | |
2718 DEFUN ("logxor", Flogxor, Slogxor, 0, MANY, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2719 doc: /* Return bitwise-exclusive-or of all the arguments. |
40116
528dd5f565ba
(Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior, Flogxor):
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
2720 Arguments may be integers, or markers converted to integers. |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2721 usage: (logxor &rest INTS-OR-MARKERS) */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2722 (nargs, args) |
298 | 2723 int nargs; |
2724 Lisp_Object *args; | |
2725 { | |
2726 return arith_driver (Alogxor, nargs, args); | |
2727 } | |
2728 | |
2729 DEFUN ("ash", Fash, Sash, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2730 doc: /* Return VALUE with its bits shifted left by COUNT. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2731 If COUNT is negative, shifting is actually to the right. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2732 In this case, the sign bit is duplicated. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2733 (value, count) |
11002
ff115809a39e
(Fash): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10951
diff
changeset
|
2734 register Lisp_Object value, count; |
298 | 2735 { |
2736 register Lisp_Object val; | |
2737 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2738 CHECK_NUMBER (value); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2739 CHECK_NUMBER (count); |
298 | 2740 |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2741 if (XINT (count) >= BITS_PER_EMACS_INT) |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2742 XSETINT (val, 0); |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2743 else if (XINT (count) > 0) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2744 XSETINT (val, XINT (value) << XFASTINT (count)); |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2745 else if (XINT (count) <= -BITS_PER_EMACS_INT) |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2746 XSETINT (val, XINT (value) < 0 ? -1 : 0); |
298 | 2747 else |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2748 XSETINT (val, XINT (value) >> -XINT (count)); |
298 | 2749 return val; |
2750 } | |
2751 | |
2752 DEFUN ("lsh", Flsh, Slsh, 2, 2, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2753 doc: /* Return VALUE with its bits shifted left by COUNT. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2754 If COUNT is negative, shifting is actually to the right. |
47276
fbe02a367006
(Flsh): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
46831
diff
changeset
|
2755 In this case, zeros are shifted in on the left. */) |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2756 (value, count) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2757 register Lisp_Object value, count; |
298 | 2758 { |
2759 register Lisp_Object val; | |
2760 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2761 CHECK_NUMBER (value); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2762 CHECK_NUMBER (count); |
298 | 2763 |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2764 if (XINT (count) >= BITS_PER_EMACS_INT) |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2765 XSETINT (val, 0); |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2766 else if (XINT (count) > 0) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2767 XSETINT (val, (EMACS_UINT) XUINT (value) << XFASTINT (count)); |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2768 else if (XINT (count) <= -BITS_PER_EMACS_INT) |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2769 XSETINT (val, 0); |
298 | 2770 else |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2771 XSETINT (val, (EMACS_UINT) XUINT (value) >> -XINT (count)); |
298 | 2772 return val; |
2773 } | |
2774 | |
2775 DEFUN ("1+", Fadd1, Sadd1, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2776 doc: /* Return NUMBER plus one. NUMBER may be a number or a marker. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2777 Markers are converted to integers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2778 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2779 register Lisp_Object number; |
298 | 2780 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2781 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2782 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2783 if (FLOATP (number)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2784 return (make_float (1.0 + XFLOAT_DATA (number))); |
298 | 2785 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2786 XSETINT (number, XINT (number) + 1); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2787 return number; |
298 | 2788 } |
2789 | |
2790 DEFUN ("1-", Fsub1, Ssub1, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2791 doc: /* Return NUMBER minus one. NUMBER may be a number or a marker. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2792 Markers are converted to integers. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2793 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2794 register Lisp_Object number; |
298 | 2795 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2796 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2797 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2798 if (FLOATP (number)) |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2799 return (make_float (-1.0 + XFLOAT_DATA (number))); |
298 | 2800 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2801 XSETINT (number, XINT (number) - 1); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2802 return number; |
298 | 2803 } |
2804 | |
2805 DEFUN ("lognot", Flognot, Slognot, 1, 1, 0, | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2806 doc: /* Return the bitwise complement of NUMBER. NUMBER must be an integer. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2807 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2808 register Lisp_Object number; |
298 | 2809 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2810 CHECK_NUMBER (number); |
14096
f3766d691555
(Flognot): Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents:
14066
diff
changeset
|
2811 XSETINT (number, ~XINT (number)); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2812 return number; |
298 | 2813 } |
2814 | |
2815 void | |
2816 syms_of_data () | |
2817 { | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2818 Lisp_Object error_tail, arith_tail; |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2819 |
298 | 2820 Qquote = intern ("quote"); |
2821 Qlambda = intern ("lambda"); | |
2822 Qsubr = intern ("subr"); | |
2823 Qerror_conditions = intern ("error-conditions"); | |
2824 Qerror_message = intern ("error-message"); | |
2825 Qtop_level = intern ("top-level"); | |
2826 | |
2827 Qerror = intern ("error"); | |
2828 Qquit = intern ("quit"); | |
2829 Qwrong_type_argument = intern ("wrong-type-argument"); | |
2830 Qargs_out_of_range = intern ("args-out-of-range"); | |
2831 Qvoid_function = intern ("void-function"); | |
648 | 2832 Qcyclic_function_indirection = intern ("cyclic-function-indirection"); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2833 Qcyclic_variable_indirection = intern ("cyclic-variable-indirection"); |
298 | 2834 Qvoid_variable = intern ("void-variable"); |
2835 Qsetting_constant = intern ("setting-constant"); | |
2836 Qinvalid_read_syntax = intern ("invalid-read-syntax"); | |
2837 | |
2838 Qinvalid_function = intern ("invalid-function"); | |
2839 Qwrong_number_of_arguments = intern ("wrong-number-of-arguments"); | |
2840 Qno_catch = intern ("no-catch"); | |
2841 Qend_of_file = intern ("end-of-file"); | |
2842 Qarith_error = intern ("arith-error"); | |
2843 Qbeginning_of_buffer = intern ("beginning-of-buffer"); | |
2844 Qend_of_buffer = intern ("end-of-buffer"); | |
2845 Qbuffer_read_only = intern ("buffer-read-only"); | |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2846 Qtext_read_only = intern ("text-read-only"); |
4036 | 2847 Qmark_inactive = intern ("mark-inactive"); |
298 | 2848 |
2849 Qlistp = intern ("listp"); | |
2850 Qconsp = intern ("consp"); | |
2851 Qsymbolp = intern ("symbolp"); | |
26931 | 2852 Qkeywordp = intern ("keywordp"); |
298 | 2853 Qintegerp = intern ("integerp"); |
2854 Qnatnump = intern ("natnump"); | |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
2855 Qwholenump = intern ("wholenump"); |
298 | 2856 Qstringp = intern ("stringp"); |
2857 Qarrayp = intern ("arrayp"); | |
2858 Qsequencep = intern ("sequencep"); | |
2859 Qbufferp = intern ("bufferp"); | |
2860 Qvectorp = intern ("vectorp"); | |
2861 Qchar_or_string_p = intern ("char-or-string-p"); | |
2862 Qmarkerp = intern ("markerp"); | |
1293 | 2863 Qbuffer_or_string_p = intern ("buffer-or-string-p"); |
298 | 2864 Qinteger_or_marker_p = intern ("integer-or-marker-p"); |
2865 Qboundp = intern ("boundp"); | |
2866 Qfboundp = intern ("fboundp"); | |
2867 | |
2868 Qfloatp = intern ("floatp"); | |
2869 Qnumberp = intern ("numberp"); | |
2870 Qnumber_or_marker_p = intern ("number-or-marker-p"); | |
2871 | |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2872 Qchar_table_p = intern ("char-table-p"); |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
2873 Qvector_or_char_table_p = intern ("vector-or-char-table-p"); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2874 |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2875 Qsubrp = intern ("subrp"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2876 Qunevalled = intern ("unevalled"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2877 Qmany = intern ("many"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2878 |
298 | 2879 Qcdr = intern ("cdr"); |
2880 | |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
2881 /* Handle automatic advice activation */ |
8448
b6335ce87e16
(Fdefine_function, Fdefalias): Handle advice as in Ffset.
Richard M. Stallman <rms@gnu.org>
parents:
8415
diff
changeset
|
2882 Qad_advice_info = intern ("ad-advice-info"); |
26205
65a0abaeed68
(Qad_activate_internal): Renamed from Qad_activate.
Gerd Moellmann <gerd@gnu.org>
parents:
26185
diff
changeset
|
2883 Qad_activate_internal = intern ("ad-activate-internal"); |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
2884 |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2885 error_tail = Fcons (Qerror, Qnil); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2886 |
298 | 2887 /* ERROR is used as a signaler for random errors for which nothing else is right */ |
2888 | |
2889 Fput (Qerror, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2890 error_tail); |
298 | 2891 Fput (Qerror, Qerror_message, |
2892 build_string ("error")); | |
2893 | |
2894 Fput (Qquit, Qerror_conditions, | |
2895 Fcons (Qquit, Qnil)); | |
2896 Fput (Qquit, Qerror_message, | |
2897 build_string ("Quit")); | |
2898 | |
2899 Fput (Qwrong_type_argument, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2900 Fcons (Qwrong_type_argument, error_tail)); |
298 | 2901 Fput (Qwrong_type_argument, Qerror_message, |
2902 build_string ("Wrong type argument")); | |
2903 | |
2904 Fput (Qargs_out_of_range, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2905 Fcons (Qargs_out_of_range, error_tail)); |
298 | 2906 Fput (Qargs_out_of_range, Qerror_message, |
2907 build_string ("Args out of range")); | |
2908 | |
2909 Fput (Qvoid_function, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2910 Fcons (Qvoid_function, error_tail)); |
298 | 2911 Fput (Qvoid_function, Qerror_message, |
2912 build_string ("Symbol's function definition is void")); | |
2913 | |
648 | 2914 Fput (Qcyclic_function_indirection, Qerror_conditions, |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2915 Fcons (Qcyclic_function_indirection, error_tail)); |
648 | 2916 Fput (Qcyclic_function_indirection, Qerror_message, |
2917 build_string ("Symbol's chain of function indirections contains a loop")); | |
2918 | |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2919 Fput (Qcyclic_variable_indirection, Qerror_conditions, |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2920 Fcons (Qcyclic_variable_indirection, error_tail)); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2921 Fput (Qcyclic_variable_indirection, Qerror_message, |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2922 build_string ("Symbol's chain of variable indirections contains a loop")); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2923 |
39767
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2924 Qcircular_list = intern ("circular-list"); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2925 staticpro (&Qcircular_list); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2926 Fput (Qcircular_list, Qerror_conditions, |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2927 Fcons (Qcircular_list, error_tail)); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2928 Fput (Qcircular_list, Qerror_message, |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2929 build_string ("List contains a loop")); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2930 |
298 | 2931 Fput (Qvoid_variable, Qerror_conditions, |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2932 Fcons (Qvoid_variable, error_tail)); |
298 | 2933 Fput (Qvoid_variable, Qerror_message, |
2934 build_string ("Symbol's value as variable is void")); | |
2935 | |
2936 Fput (Qsetting_constant, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2937 Fcons (Qsetting_constant, error_tail)); |
298 | 2938 Fput (Qsetting_constant, Qerror_message, |
2939 build_string ("Attempt to set a constant symbol")); | |
2940 | |
2941 Fput (Qinvalid_read_syntax, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2942 Fcons (Qinvalid_read_syntax, error_tail)); |
298 | 2943 Fput (Qinvalid_read_syntax, Qerror_message, |
2944 build_string ("Invalid read syntax")); | |
2945 | |
2946 Fput (Qinvalid_function, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2947 Fcons (Qinvalid_function, error_tail)); |
298 | 2948 Fput (Qinvalid_function, Qerror_message, |
2949 build_string ("Invalid function")); | |
2950 | |
2951 Fput (Qwrong_number_of_arguments, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2952 Fcons (Qwrong_number_of_arguments, error_tail)); |
298 | 2953 Fput (Qwrong_number_of_arguments, Qerror_message, |
2954 build_string ("Wrong number of arguments")); | |
2955 | |
2956 Fput (Qno_catch, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2957 Fcons (Qno_catch, error_tail)); |
298 | 2958 Fput (Qno_catch, Qerror_message, |
2959 build_string ("No catch for tag")); | |
2960 | |
2961 Fput (Qend_of_file, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2962 Fcons (Qend_of_file, error_tail)); |
298 | 2963 Fput (Qend_of_file, Qerror_message, |
2964 build_string ("End of file during parsing")); | |
2965 | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2966 arith_tail = Fcons (Qarith_error, error_tail); |
298 | 2967 Fput (Qarith_error, Qerror_conditions, |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2968 arith_tail); |
298 | 2969 Fput (Qarith_error, Qerror_message, |
2970 build_string ("Arithmetic error")); | |
2971 | |
2972 Fput (Qbeginning_of_buffer, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2973 Fcons (Qbeginning_of_buffer, error_tail)); |
298 | 2974 Fput (Qbeginning_of_buffer, Qerror_message, |
2975 build_string ("Beginning of buffer")); | |
2976 | |
2977 Fput (Qend_of_buffer, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2978 Fcons (Qend_of_buffer, error_tail)); |
298 | 2979 Fput (Qend_of_buffer, Qerror_message, |
2980 build_string ("End of buffer")); | |
2981 | |
2982 Fput (Qbuffer_read_only, Qerror_conditions, | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2983 Fcons (Qbuffer_read_only, error_tail)); |
298 | 2984 Fput (Qbuffer_read_only, Qerror_message, |
2985 build_string ("Buffer is read-only")); | |
2986 | |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2987 Fput (Qtext_read_only, Qerror_conditions, |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2988 Fcons (Qtext_read_only, error_tail)); |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2989 Fput (Qtext_read_only, Qerror_message, |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2990 build_string ("Text is read-only")); |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2991 |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2992 Qrange_error = intern ("range-error"); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2993 Qdomain_error = intern ("domain-error"); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2994 Qsingularity_error = intern ("singularity-error"); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2995 Qoverflow_error = intern ("overflow-error"); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2996 Qunderflow_error = intern ("underflow-error"); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2997 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2998 Fput (Qdomain_error, Qerror_conditions, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2999 Fcons (Qdomain_error, arith_tail)); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3000 Fput (Qdomain_error, Qerror_message, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3001 build_string ("Arithmetic domain error")); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3002 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3003 Fput (Qrange_error, Qerror_conditions, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3004 Fcons (Qrange_error, arith_tail)); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3005 Fput (Qrange_error, Qerror_message, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3006 build_string ("Arithmetic range error")); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3007 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3008 Fput (Qsingularity_error, Qerror_conditions, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3009 Fcons (Qsingularity_error, Fcons (Qdomain_error, arith_tail))); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3010 Fput (Qsingularity_error, Qerror_message, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3011 build_string ("Arithmetic singularity error")); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3012 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3013 Fput (Qoverflow_error, Qerror_conditions, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3014 Fcons (Qoverflow_error, Fcons (Qdomain_error, arith_tail))); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3015 Fput (Qoverflow_error, Qerror_message, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3016 build_string ("Arithmetic overflow error")); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3017 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3018 Fput (Qunderflow_error, Qerror_conditions, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3019 Fcons (Qunderflow_error, Fcons (Qdomain_error, arith_tail))); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3020 Fput (Qunderflow_error, Qerror_message, |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3021 build_string ("Arithmetic underflow error")); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3022 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3023 staticpro (&Qrange_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3024 staticpro (&Qdomain_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3025 staticpro (&Qsingularity_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3026 staticpro (&Qoverflow_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3027 staticpro (&Qunderflow_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3028 |
298 | 3029 staticpro (&Qnil); |
3030 staticpro (&Qt); | |
3031 staticpro (&Qquote); | |
3032 staticpro (&Qlambda); | |
3033 staticpro (&Qsubr); | |
3034 staticpro (&Qunbound); | |
3035 staticpro (&Qerror_conditions); | |
3036 staticpro (&Qerror_message); | |
3037 staticpro (&Qtop_level); | |
3038 | |
3039 staticpro (&Qerror); | |
3040 staticpro (&Qquit); | |
3041 staticpro (&Qwrong_type_argument); | |
3042 staticpro (&Qargs_out_of_range); | |
3043 staticpro (&Qvoid_function); | |
648 | 3044 staticpro (&Qcyclic_function_indirection); |
298 | 3045 staticpro (&Qvoid_variable); |
3046 staticpro (&Qsetting_constant); | |
3047 staticpro (&Qinvalid_read_syntax); | |
3048 staticpro (&Qwrong_number_of_arguments); | |
3049 staticpro (&Qinvalid_function); | |
3050 staticpro (&Qno_catch); | |
3051 staticpro (&Qend_of_file); | |
3052 staticpro (&Qarith_error); | |
3053 staticpro (&Qbeginning_of_buffer); | |
3054 staticpro (&Qend_of_buffer); | |
3055 staticpro (&Qbuffer_read_only); | |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
3056 staticpro (&Qtext_read_only); |
4037
aecb99c65ab0
(syms_of_data): Staticpro Qmark_inactive.
Roland McGrath <roland@gnu.org>
parents:
4036
diff
changeset
|
3057 staticpro (&Qmark_inactive); |
298 | 3058 |
3059 staticpro (&Qlistp); | |
3060 staticpro (&Qconsp); | |
3061 staticpro (&Qsymbolp); | |
26931 | 3062 staticpro (&Qkeywordp); |
298 | 3063 staticpro (&Qintegerp); |
3064 staticpro (&Qnatnump); | |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
3065 staticpro (&Qwholenump); |
298 | 3066 staticpro (&Qstringp); |
3067 staticpro (&Qarrayp); | |
3068 staticpro (&Qsequencep); | |
3069 staticpro (&Qbufferp); | |
3070 staticpro (&Qvectorp); | |
3071 staticpro (&Qchar_or_string_p); | |
3072 staticpro (&Qmarkerp); | |
1293 | 3073 staticpro (&Qbuffer_or_string_p); |
298 | 3074 staticpro (&Qinteger_or_marker_p); |
3075 staticpro (&Qfloatp); | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3076 staticpro (&Qnumberp); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3077 staticpro (&Qnumber_or_marker_p); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3078 staticpro (&Qchar_table_p); |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
3079 staticpro (&Qvector_or_char_table_p); |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3080 staticpro (&Qsubrp); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3081 staticpro (&Qmany); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3082 staticpro (&Qunevalled); |
298 | 3083 |
3084 staticpro (&Qboundp); | |
3085 staticpro (&Qfboundp); | |
3086 staticpro (&Qcdr); | |
8448
b6335ce87e16
(Fdefine_function, Fdefalias): Handle advice as in Ffset.
Richard M. Stallman <rms@gnu.org>
parents:
8415
diff
changeset
|
3087 staticpro (&Qad_advice_info); |
26205
65a0abaeed68
(Qad_activate_internal): Renamed from Qad_activate.
Gerd Moellmann <gerd@gnu.org>
parents:
26185
diff
changeset
|
3088 staticpro (&Qad_activate_internal); |
298 | 3089 |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3090 /* Types that type-of returns. */ |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3091 Qinteger = intern ("integer"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3092 Qsymbol = intern ("symbol"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3093 Qstring = intern ("string"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3094 Qcons = intern ("cons"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3095 Qmarker = intern ("marker"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3096 Qoverlay = intern ("overlay"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3097 Qfloat = intern ("float"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3098 Qwindow_configuration = intern ("window-configuration"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3099 Qprocess = intern ("process"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3100 Qwindow = intern ("window"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3101 /* Qsubr = intern ("subr"); */ |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3102 Qcompiled_function = intern ("compiled-function"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3103 Qbuffer = intern ("buffer"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3104 Qframe = intern ("frame"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3105 Qvector = intern ("vector"); |
13715
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3106 Qchar_table = intern ("char-table"); |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3107 Qbool_vector = intern ("bool-vector"); |
26185 | 3108 Qhash_table = intern ("hash-table"); |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3109 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3110 staticpro (&Qinteger); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3111 staticpro (&Qsymbol); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3112 staticpro (&Qstring); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3113 staticpro (&Qcons); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3114 staticpro (&Qmarker); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3115 staticpro (&Qoverlay); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3116 staticpro (&Qfloat); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3117 staticpro (&Qwindow_configuration); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3118 staticpro (&Qprocess); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3119 staticpro (&Qwindow); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3120 /* staticpro (&Qsubr); */ |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3121 staticpro (&Qcompiled_function); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3122 staticpro (&Qbuffer); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3123 staticpro (&Qframe); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3124 staticpro (&Qvector); |
13715
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3125 staticpro (&Qchar_table); |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3126 staticpro (&Qbool_vector); |
26185 | 3127 staticpro (&Qhash_table); |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3128 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
3129 defsubr (&Sindirect_variable); |
37053
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
3130 defsubr (&Ssubr_interactive_form); |
298 | 3131 defsubr (&Seq); |
3132 defsubr (&Snull); | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3133 defsubr (&Stype_of); |
298 | 3134 defsubr (&Slistp); |
3135 defsubr (&Snlistp); | |
3136 defsubr (&Sconsp); | |
3137 defsubr (&Satom); | |
3138 defsubr (&Sintegerp); | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3139 defsubr (&Sinteger_or_marker_p); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3140 defsubr (&Snumberp); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3141 defsubr (&Snumber_or_marker_p); |
298 | 3142 defsubr (&Sfloatp); |
3143 defsubr (&Snatnump); | |
3144 defsubr (&Ssymbolp); | |
26931 | 3145 defsubr (&Skeywordp); |
298 | 3146 defsubr (&Sstringp); |
20793
b2af60896559
(syms_of_data): Register multibyte-string-p as a Lisp
Kenichi Handa <handa@m17n.org>
parents:
20716
diff
changeset
|
3147 defsubr (&Smultibyte_string_p); |
298 | 3148 defsubr (&Svectorp); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3149 defsubr (&Schar_table_p); |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
3150 defsubr (&Svector_or_char_table_p); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3151 defsubr (&Sbool_vector_p); |
298 | 3152 defsubr (&Sarrayp); |
3153 defsubr (&Ssequencep); | |
3154 defsubr (&Sbufferp); | |
3155 defsubr (&Smarkerp); | |
3156 defsubr (&Ssubrp); | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1648
diff
changeset
|
3157 defsubr (&Sbyte_code_function_p); |
298 | 3158 defsubr (&Schar_or_string_p); |
3159 defsubr (&Scar); | |
3160 defsubr (&Scdr); | |
3161 defsubr (&Scar_safe); | |
3162 defsubr (&Scdr_safe); | |
3163 defsubr (&Ssetcar); | |
3164 defsubr (&Ssetcdr); | |
3165 defsubr (&Ssymbol_function); | |
648 | 3166 defsubr (&Sindirect_function); |
298 | 3167 defsubr (&Ssymbol_plist); |
3168 defsubr (&Ssymbol_name); | |
3169 defsubr (&Smakunbound); | |
3170 defsubr (&Sfmakunbound); | |
3171 defsubr (&Sboundp); | |
3172 defsubr (&Sfboundp); | |
3173 defsubr (&Sfset); | |
2565
c1a1557bffde
(Fdefine_function): Changed name back to Fdefalias, so we get things
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2548
diff
changeset
|
3174 defsubr (&Sdefalias); |
298 | 3175 defsubr (&Ssetplist); |
3176 defsubr (&Ssymbol_value); | |
3177 defsubr (&Sset); | |
3178 defsubr (&Sdefault_boundp); | |
3179 defsubr (&Sdefault_value); | |
3180 defsubr (&Sset_default); | |
3181 defsubr (&Ssetq_default); | |
3182 defsubr (&Smake_variable_buffer_local); | |
3183 defsubr (&Smake_local_variable); | |
3184 defsubr (&Skill_local_variable); | |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
3185 defsubr (&Smake_variable_frame_local); |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
3186 defsubr (&Slocal_variable_p); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
3187 defsubr (&Slocal_variable_if_set_p); |
298 | 3188 defsubr (&Saref); |
3189 defsubr (&Saset); | |
2429
96b55f2f19cd
Rename int-to-string to number-to-string, since it can handle
Jim Blandy <jimb@redhat.com>
parents:
2092
diff
changeset
|
3190 defsubr (&Snumber_to_string); |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
3191 defsubr (&Sstring_to_number); |
298 | 3192 defsubr (&Seqlsign); |
3193 defsubr (&Slss); | |
3194 defsubr (&Sgtr); | |
3195 defsubr (&Sleq); | |
3196 defsubr (&Sgeq); | |
3197 defsubr (&Sneq); | |
3198 defsubr (&Szerop); | |
3199 defsubr (&Splus); | |
3200 defsubr (&Sminus); | |
3201 defsubr (&Stimes); | |
3202 defsubr (&Squo); | |
3203 defsubr (&Srem); | |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
3204 defsubr (&Smod); |
298 | 3205 defsubr (&Smax); |
3206 defsubr (&Smin); | |
3207 defsubr (&Slogand); | |
3208 defsubr (&Slogior); | |
3209 defsubr (&Slogxor); | |
3210 defsubr (&Slsh); | |
3211 defsubr (&Sash); | |
3212 defsubr (&Sadd1); | |
3213 defsubr (&Ssub1); | |
3214 defsubr (&Slognot); | |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3215 defsubr (&Ssubr_arity); |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
3216 |
9954
18b408b05189
(syms_of_data): Set Qwholenump as function, not variable.
Karl Heuer <kwzh@gnu.org>
parents:
9895
diff
changeset
|
3217 XSYMBOL (Qwholenump)->function = XSYMBOL (Qnatnump)->function; |
39632
8cd74f2aa6e2
(most_positive_fixnum, most_negative_fixnum): New
Gerd Moellmann <gerd@gnu.org>
parents:
39575
diff
changeset
|
3218 |
41865
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3219 DEFVAR_LISP ("most-positive-fixnum", &Vmost_positive_fixnum, |
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3220 doc: /* The largest value that is representable in a Lisp integer. */); |
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3221 Vmost_positive_fixnum = make_number (MOST_POSITIVE_FIXNUM); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
3222 |
41865
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3223 DEFVAR_LISP ("most-negative-fixnum", &Vmost_negative_fixnum, |
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3224 doc: /* The smallest value that is representable in a Lisp integer. */); |
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3225 Vmost_negative_fixnum = make_number (MOST_NEGATIVE_FIXNUM); |
298 | 3226 } |
3227 | |
490 | 3228 SIGTYPE |
298 | 3229 arith_error (signo) |
3230 int signo; | |
3231 { | |
16150
f388360fb59a
(arith_error) [POSIX_SIGNALS]: Don't reestablish handler.
Richard M. Stallman <rms@gnu.org>
parents:
16051
diff
changeset
|
3232 #if defined(USG) && !defined(POSIX_SIGNALS) |
298 | 3233 /* USG systems forget handlers when they are used; |
3234 must reestablish each time */ | |
3235 signal (signo, arith_error); | |
3236 #endif /* USG */ | |
3237 #ifdef VMS | |
3238 /* VMS systems are like USG. */ | |
3239 signal (signo, arith_error); | |
3240 #endif /* VMS */ | |
3241 #ifdef BSD4_1 | |
3242 sigrelse (SIGFPE); | |
3243 #else /* not BSD4_1 */ | |
638 | 3244 sigsetmask (SIGEMPTYMASK); |
298 | 3245 #endif /* not BSD4_1 */ |
3246 | |
3247 Fsignal (Qarith_error, Qnil); | |
3248 } | |
3249 | |
21514 | 3250 void |
298 | 3251 init_data () |
3252 { | |
3253 /* Don't do this if just dumping out. | |
3254 We don't want to call `signal' in this case | |
3255 so that we don't have trouble with dumping | |
3256 signal-delivering routines in an inconsistent state. */ | |
3257 #ifndef CANNOT_DUMP | |
3258 if (!initialized) | |
3259 return; | |
3260 #endif /* CANNOT_DUMP */ | |
3261 signal (SIGFPE, arith_error); | |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
3262 |
298 | 3263 #ifdef uts |
3264 signal (SIGEMT, arith_error); | |
3265 #endif /* uts */ | |
3266 } | |
52401 | 3267 |
3268 /* arch-tag: 25879798-b84d-479a-9c89-7d148e2109f7 | |
3269 (do not change this comment) */ |