Mercurial > emacs
annotate src/data.c @ 49645:4e94855c037e
Change dates for the entries concerning the 2.0.29 Tramp commit such
that they all reflect the commit date, instead of the date of the
individual changes.
This is deemed better than keeping the original change date because
it makes sure that the ChangeLog dates have more or less sequential
order.
author | Kai Großjohann <kgrossjo@eu.uu.net> |
---|---|
date | Fri, 07 Feb 2003 17:53:05 +0000 |
parents | 7931f73b31db |
children | d23ab2416c49 d7ddb3e565de |
rev | line source |
---|---|
298 | 1 /* Primitive operations on Lisp data types for GNU Emacs Lisp interpreter. |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2 Copyright (C) 1985,86,88,93,94,95,97,98,99, 2000, 2001 |
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 |
28351 | 900 type = PER_BUFFER_TYPE (offset); |
20996
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
901 if (XINT (type) == -1) |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
902 error ("Variable %s is read-only", SDATA (SYMBOL_NAME (symbol))); |
20996
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
903 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
904 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
|
905 && XTYPE (newval) != XINT (type)) |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
906 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
|
907 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
908 if (buf == NULL) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
909 buf = current_buffer; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
910 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
|
911 } |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
912 break; |
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
913 |
11019
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
914 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
|
915 { |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
916 char *base = (char *) current_kboard; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
917 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
|
918 *(Lisp_Object *) p = newval; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
919 } |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
920 break; |
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
921 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
922 default: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
923 goto def; |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
924 } |
298 | 925 break; |
926 | |
927 default: | |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
928 def: |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
929 valcontents = SYMBOL_VALUE (symbol); |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
930 if (BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
931 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
932 XBUFFER_LOCAL_VALUE (valcontents)->realvalue = newval; |
298 | 933 else |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
934 SET_SYMBOL_VALUE (symbol, newval); |
298 | 935 } |
936 } | |
937 | |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
938 /* 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
|
939 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
|
940 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
941 void |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
942 swap_in_global_binding (symbol) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
943 Lisp_Object symbol; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
944 { |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
945 Lisp_Object valcontents, cdr; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
946 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
947 valcontents = SYMBOL_VALUE (symbol); |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
948 if (!BUFFER_LOCAL_VALUEP (valcontents) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
949 && !SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
950 abort (); |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
951 cdr = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
952 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
953 /* Unload the previously loaded binding. */ |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
954 Fsetcdr (XCAR (cdr), |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
955 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
|
956 |
29618
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
957 /* 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
|
958 XSETCAR (cdr, cdr); |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
959 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
|
960 |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
961 /* 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
|
962 XBUFFER_LOCAL_VALUE (valcontents)->frame = Qnil; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
963 XBUFFER_LOCAL_VALUE (valcontents)->buffer = Qnil; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
964 XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
965 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
966 } |
e38bc8c4c7b3
(swap_in_global_binding): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29237
diff
changeset
|
967 |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
968 /* 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
|
969 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
|
970 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
|
971 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
972 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
|
973 This could be another forwarding pointer. */ |
298 | 974 |
975 static Lisp_Object | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
976 swap_in_symval_forwarding (symbol, valcontents) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
977 Lisp_Object symbol, valcontents; |
298 | 978 { |
979 register Lisp_Object tem1; | |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
980 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
981 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->buffer; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
982 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
983 if (NILP (tem1) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
984 || current_buffer != XBUFFER (tem1) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
985 || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
986 && ! EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame))) |
298 | 987 { |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
988 if (XSYMBOL (symbol)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
989 symbol = indirect_variable (symbol); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
990 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
991 /* 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
|
992 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
|
993 Fsetcdr (tem1, |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
994 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
|
995 /* Choose the new binding. */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
996 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
|
997 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
|
998 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
490 | 999 if (NILP (tem1)) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1000 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1001 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
|
1002 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
|
1003 if (! NILP (tem1)) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1004 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
|
1005 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1006 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1007 } |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1008 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1009 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
|
1010 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1011 /* 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
|
1012 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
|
1013 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
|
1014 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
|
1015 store_symval_forwarding (symbol, |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1016 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
|
1017 Fcdr (tem1), NULL); |
298 | 1018 } |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1019 return XBUFFER_LOCAL_VALUE (valcontents)->realvalue; |
298 | 1020 } |
1021 | |
514 | 1022 /* Find the value of a symbol, returning Qunbound if it's not bound. |
1023 This is helpful for code which just wants to get a variable's value | |
14036 | 1024 if it has one, without signaling an error. |
514 | 1025 Note that it must not be possible to quit |
1026 within this function. Great care is required for this. */ | |
298 | 1027 |
514 | 1028 Lisp_Object |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1029 find_symbol_value (symbol) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1030 Lisp_Object symbol; |
298 | 1031 { |
25780
18cf58ed9400
(find_symbol_value): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25665
diff
changeset
|
1032 register Lisp_Object valcontents; |
298 | 1033 register Lisp_Object val; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1034 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1035 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1036 valcontents = SYMBOL_VALUE (symbol); |
298 | 1037 |
9889 | 1038 if (BUFFER_LOCAL_VALUEP (valcontents) |
1039 || 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
|
1040 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
|
1041 |
8a68b5794c91
(Fboundp, find_symbol_value): Use type test macros instead of checking XTYPE
Karl Heuer <kwzh@gnu.org>
parents:
9465
diff
changeset
|
1042 if (MISCP (valcontents)) |
298 | 1043 { |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1044 switch (XMISCTYPE (valcontents)) |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1045 { |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1046 case Lisp_Misc_Intfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1047 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
|
1048 return val; |
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_Boolfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1051 return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil); |
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_Objfwd: |
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1054 return *XOBJFWD (valcontents)->objvar; |
298 | 1055 |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1056 case Lisp_Misc_Buffer_Objfwd: |
28351 | 1057 return PER_BUFFER_VALUE (current_buffer, |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1058 XBUFFER_OBJFWD (valcontents)->offset); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
1059 |
11019
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
1060 case Lisp_Misc_Kboard_Objfwd: |
48bf6677dab3
(find_symbol_value): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents:
11002
diff
changeset
|
1061 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
|
1062 + (char *)current_kboard); |
9465
ea2ee8bd3c63
(do_symval_forwarding, store_symval_forwarding, find_symbol_value, Fset,
Karl Heuer <kwzh@gnu.org>
parents:
9369
diff
changeset
|
1063 } |
298 | 1064 } |
1065 | |
1066 return valcontents; | |
1067 } | |
1068 | |
514 | 1069 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
|
1070 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
|
1071 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1072 Lisp_Object symbol; |
514 | 1073 { |
6497
89ff61b53cee
(store_symval_forwarding, Fsymbol_value): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6459
diff
changeset
|
1074 Lisp_Object val; |
514 | 1075 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1076 val = find_symbol_value (symbol); |
514 | 1077 if (EQ (val, Qunbound)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1078 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
514 | 1079 else |
1080 return val; | |
1081 } | |
1082 | |
298 | 1083 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
|
1084 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
|
1085 (symbol, newval) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1086 register Lisp_Object symbol, newval; |
298 | 1087 { |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1088 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
|
1089 } |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1090 |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1091 /* 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
|
1092 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
|
1093 |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1094 static int |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1095 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
|
1096 Lisp_Object symbol; |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1097 { |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1098 struct specbinding *p; |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1099 |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1100 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
|
1101 if (p->func == NULL |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1102 && CONSP (p->symbol)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1103 { |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1104 Lisp_Object let_bound_symbol = XCAR (p->symbol); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1105 if ((EQ (symbol, let_bound_symbol) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1106 || (XSYMBOL (let_bound_symbol)->indirect_variable |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1107 && EQ (symbol, indirect_variable (let_bound_symbol)))) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1108 && XBUFFER (XCDR (XCDR (p->symbol))) == current_buffer) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1109 break; |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1110 } |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1111 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1112 return p >= specpdl; |
27703
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1113 } |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1114 |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1115 /* Store the value NEWVAL into SYMBOL. |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1116 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
|
1117 (0 stands for the current buffer.) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1118 |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1119 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
|
1120 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
|
1121 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
|
1122 |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1123 Lisp_Object |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1124 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
|
1125 register Lisp_Object symbol, newval; |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1126 struct buffer *buf; |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1127 int bindflag; |
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1128 { |
9369
379c7b900689
(Fboundp, Ffboundp, find_symbol_value, Fset, Fdefault_boundp, Fdefault_value):
Karl Heuer <kwzh@gnu.org>
parents:
9366
diff
changeset
|
1129 int voide = EQ (newval, Qunbound); |
298 | 1130 |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1131 register Lisp_Object valcontents, innercontents, tem1, current_alist_element; |
298 | 1132 |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1133 if (buf == 0) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1134 buf = current_buffer; |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1135 |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1136 /* If restoring in a dead buffer, do nothing. */ |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1137 if (NILP (buf->name)) |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1138 return newval; |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1139 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1140 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1141 if (SYMBOL_CONSTANT_P (symbol) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1142 && (NILP (Fkeywordp (symbol)) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1143 || !EQ (newval, SYMBOL_VALUE (symbol)))) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1144 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
|
1145 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1146 innercontents = valcontents = SYMBOL_VALUE (symbol); |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1147 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1148 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1149 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1150 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1151 int idx = PER_BUFFER_IDX (offset); |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1152 if (idx > 0 |
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1153 && !bindflag |
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1154 && !let_shadows_buffer_binding_p (symbol)) |
28351 | 1155 SET_PER_BUFFER_VALUE_P (buf, idx, 1); |
298 | 1156 } |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1157 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
|
1158 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1159 { |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1160 /* 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
|
1161 if (XSYMBOL (symbol)->indirect_variable) |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1162 symbol = indirect_variable (symbol); |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1163 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1164 /* 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
|
1165 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
|
1166 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1167 |
733 | 1168 /* 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
|
1169 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
|
1170 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
|
1171 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
|
1172 wrong one. */ |
28417
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28351
diff
changeset
|
1173 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
|
1174 || 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
|
1175 || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1176 && !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
|
1177 || (BUFFER_LOCAL_VALUEP (valcontents) |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1178 && EQ (XCAR (current_alist_element), |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1179 current_alist_element))) |
298 | 1180 { |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1181 /* 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
|
1182 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
|
1183 |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1184 /* Write out `realvalue' to the old loaded binding. */ |
733 | 1185 Fsetcdr (current_alist_element, |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1186 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); |
298 | 1187 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1188 /* Find the new binding. */ |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1189 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
|
1190 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
|
1191 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
|
1192 |
490 | 1193 if (NILP (tem1)) |
733 | 1194 { |
1195 /* This buffer still sees the default value. */ | |
1196 | |
1197 /* 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
|
1198 or if this is `let' rather than `set', |
733 | 1199 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
|
1200 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
|
1201 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
|
1202 in the current buffer. */ |
2ff09a66fbf1
(set_internal): Don't make variable buffer-local
Richard M. Stallman <rms@gnu.org>
parents:
27388
diff
changeset
|
1203 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
|
1204 || 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
|
1205 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1206 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
|
1207 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1208 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
|
1209 tem1 = Fassq (symbol, |
8250026fe76d
(swap_in_symval_forwarding): Change for Lisp_Object
Gerd Moellmann <gerd@gnu.org>
parents:
25504
diff
changeset
|
1210 XFRAME (selected_frame)->param_alist); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1211 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1212 if (! NILP (tem1)) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1213 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
|
1214 else |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1215 tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1216 } |
16931
8bdfc6767130
(set_internal): New subroutine. New arg BINDFLAG.
Richard M. Stallman <rms@gnu.org>
parents:
16787
diff
changeset
|
1217 /* 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
|
1218 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
|
1219 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
|
1220 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
|
1221 and load that binding. */ |
733 | 1222 else |
1223 { | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1224 tem1 = Fcons (symbol, XCDR (current_alist_element)); |
27294
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1225 buf->local_var_alist |
b62412c9ab2a
(set_internal): New arg BUF.
Richard M. Stallman <rms@gnu.org>
parents:
26931
diff
changeset
|
1226 = Fcons (tem1, buf->local_var_alist); |
733 | 1227 } |
1228 } | |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1229 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1230 /* 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
|
1231 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
|
1232 tem1); |
733 | 1233 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1234 /* 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
|
1235 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
|
1236 XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame; |
298 | 1237 } |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1238 innercontents = XBUFFER_LOCAL_VALUE (valcontents)->realvalue; |
298 | 1239 } |
733 | 1240 |
298 | 1241 /* If storing void (making the symbol void), forward only through |
1242 buffer-local indicator, not through Lisp_Objfwd, etc. */ | |
1243 if (voide) | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1244 store_symval_forwarding (symbol, Qnil, newval, buf); |
298 | 1245 else |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1246 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
|
1247 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1248 /* 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
|
1249 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
|
1250 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1251 if (BUFFER_LOCAL_VALUEP (valcontents) |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1252 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1253 { |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1254 /* What binding is loaded right now? */ |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1255 current_alist_element |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1256 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1257 |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1258 /* 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
|
1259 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
|
1260 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
|
1261 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
|
1262 wrong one. */ |
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1263 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
|
1264 XSETCDR (current_alist_element, newval); |
29735
ab56f683df46
(set_internal): If variable is frame-local,
Gerd Moellmann <gerd@gnu.org>
parents:
29660
diff
changeset
|
1265 } |
733 | 1266 |
298 | 1267 return newval; |
1268 } | |
1269 | |
1270 /* Access or set a buffer-local symbol's default value. */ | |
1271 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1272 /* 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
|
1273 Return Qunbound if it is void. */ |
298 | 1274 |
1275 Lisp_Object | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1276 default_value (symbol) |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1277 Lisp_Object symbol; |
298 | 1278 { |
1279 register Lisp_Object valcontents; | |
1280 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1281 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1282 valcontents = SYMBOL_VALUE (symbol); |
298 | 1283 |
1284 /* For a built-in buffer-local variable, get the default value | |
1285 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
|
1286 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1287 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1288 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1289 if (PER_BUFFER_IDX (offset) != 0) |
1290 return PER_BUFFER_DEFAULT (offset); | |
298 | 1291 } |
1292 | |
1293 /* 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
|
1294 if (BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1295 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1296 { |
1297 /* If var is set up for a buffer that lacks a local value for it, | |
1298 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
|
1299 But the `realvalue' slot may be more up to date, since |
298 | 1300 ordinary setq stores just that slot. So use that. */ |
1301 Lisp_Object current_alist_element, alist_element_car; | |
1302 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
|
1303 = 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
|
1304 alist_element_car = XCAR (current_alist_element); |
298 | 1305 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
|
1306 return do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue); |
298 | 1307 else |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1308 return XCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1309 } |
1310 /* For other variables, get the current value. */ | |
1311 return do_symval_forwarding (valcontents); | |
1312 } | |
1313 | |
1314 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
|
1315 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
|
1316 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
|
1317 for this variable. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1318 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1319 Lisp_Object symbol; |
298 | 1320 { |
1321 register Lisp_Object value; | |
1322 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1323 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
|
1324 return (EQ (value, Qunbound) ? Qnil : Qt); |
298 | 1325 } |
1326 | |
1327 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
|
1328 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
|
1329 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
|
1330 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
|
1331 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
|
1332 (symbol) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1333 Lisp_Object symbol; |
298 | 1334 { |
1335 register Lisp_Object value; | |
1336 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1337 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
|
1338 if (EQ (value, Qunbound)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1339 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
298 | 1340 return value; |
1341 } | |
1342 | |
1343 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
|
1344 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
|
1345 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
|
1346 for this variable. */) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1347 (symbol, value) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1348 Lisp_Object symbol, value; |
298 | 1349 { |
1350 register Lisp_Object valcontents, current_alist_element, alist_element_buffer; | |
1351 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1352 CHECK_SYMBOL (symbol); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1353 valcontents = SYMBOL_VALUE (symbol); |
298 | 1354 |
1355 /* Handle variables like case-fold-search that have special slots | |
1356 in the buffer. Make them work apparently like Lisp_Buffer_Local_Value | |
1357 variables. */ | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1358 if (BUFFER_OBJFWDP (valcontents)) |
298 | 1359 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1360 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1361 int idx = PER_BUFFER_IDX (offset); |
1362 | |
1363 PER_BUFFER_DEFAULT (offset) = value; | |
20996
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
1364 |
b52e351a40fa
(store_symval_forwarding) <Lisp_Misc_Buffer_Objfwd>:
Karl Heuer <kwzh@gnu.org>
parents:
20827
diff
changeset
|
1365 /* 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
|
1366 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
|
1367 if (idx > 0) |
298 | 1368 { |
28312
034f252dd69b
(do_symval_forwarding, store_symval_forwarding)
Gerd Moellmann <gerd@gnu.org>
parents:
27826
diff
changeset
|
1369 struct buffer *b; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
1370 |
298 | 1371 for (b = all_buffers; b; b = b->next) |
28351 | 1372 if (!PER_BUFFER_VALUE_P (b, idx)) |
1373 PER_BUFFER_VALUE (b, offset) = value; | |
298 | 1374 } |
1375 return value; | |
1376 } | |
1377 | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1378 if (!BUFFER_LOCAL_VALUEP (valcontents) |
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1379 && !SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1380 return Fset (symbol, value); |
298 | 1381 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1382 /* 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
|
1383 XSETCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, value); |
298 | 1384 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1385 /* 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
|
1386 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
|
1387 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
298 | 1388 alist_element_buffer = Fcar (current_alist_element); |
1389 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
|
1390 store_symval_forwarding (symbol, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1391 XBUFFER_LOCAL_VALUE (valcontents)->realvalue, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
1392 value, NULL); |
298 | 1393 |
1394 return value; | |
1395 } | |
1396 | |
1397 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
|
1398 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
|
1399 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
|
1400 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
|
1401 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
|
1402 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
|
1403 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1404 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
|
1405 (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
|
1406 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
|
1407 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
|
1408 of previous SYMs. |
208e240d599a
(Fsetq_default): Add usage to doc-string.
Pavel Janík <Pavel@Janik.cz>
parents:
40628
diff
changeset
|
1409 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
|
1410 (args) |
298 | 1411 Lisp_Object args; |
1412 { | |
1413 register Lisp_Object args_left; | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1414 register Lisp_Object val, symbol; |
298 | 1415 struct gcpro gcpro1; |
1416 | |
490 | 1417 if (NILP (args)) |
298 | 1418 return Qnil; |
1419 | |
1420 args_left = args; | |
1421 GCPRO1 (args); | |
1422 | |
1423 do | |
1424 { | |
1425 val = Feval (Fcar (Fcdr (args_left))); | |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1426 symbol = XCAR (args_left); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1427 Fset_default (symbol, val); |
46279
5f4ed17e4396
(Fdefalias): Add an optional `docstring' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45397
diff
changeset
|
1428 args_left = Fcdr (XCDR (args_left)); |
298 | 1429 } |
490 | 1430 while (!NILP (args_left)); |
298 | 1431 |
1432 UNGCPRO; | |
1433 return val; | |
1434 } | |
1435 | |
1278
0a0646ae381f
* data.c (Fmake_local_variable): If SYM forwards to a C variable,
Jim Blandy <jimb@redhat.com>
parents:
1263
diff
changeset
|
1436 /* 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
|
1437 |
298 | 1438 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
|
1439 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
|
1440 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
|
1441 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
|
1442 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
|
1443 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
|
1444 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
|
1445 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
|
1446 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
|
1447 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1448 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
|
1449 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1450 register Lisp_Object variable; |
298 | 1451 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1452 register Lisp_Object tem, valcontents, newval; |
298 | 1453 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1454 CHECK_SYMBOL (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1455 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1456 valcontents = SYMBOL_VALUE (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1457 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
|
1458 error ("Symbol %s may not be buffer-local", SDATA (SYMBOL_NAME (variable))); |
298 | 1459 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1460 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
|
1461 return variable; |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1462 if (SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1463 { |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1464 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
|
1465 return variable; |
298 | 1466 } |
1467 if (EQ (valcontents, Qunbound)) | |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1468 SET_SYMBOL_VALUE (variable, Qnil); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1469 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
|
1470 XSETCAR (tem, tem); |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1471 newval = allocate_misc (); |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1472 XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1473 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
|
1474 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
|
1475 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1476 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
|
1477 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
|
1478 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
|
1479 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1480 SET_SYMBOL_VALUE (variable, newval); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1481 return variable; |
298 | 1482 } |
1483 | |
1484 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
|
1485 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
|
1486 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
|
1487 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
|
1488 \(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
|
1489 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
|
1490 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
|
1491 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1492 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
|
1493 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
|
1494 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
|
1495 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1496 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
|
1497 (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
|
1498 works. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1499 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1500 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
|
1501 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
|
1502 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1503 register Lisp_Object variable; |
298 | 1504 { |
1505 register Lisp_Object tem, valcontents; | |
1506 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1507 CHECK_SYMBOL (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1508 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1509 valcontents = SYMBOL_VALUE (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1510 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
|
1511 error ("Symbol %s may not be buffer-local", SDATA (SYMBOL_NAME (variable))); |
298 | 1512 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1513 if (BUFFER_LOCAL_VALUEP (valcontents) || BUFFER_OBJFWDP (valcontents)) |
298 | 1514 { |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1515 tem = Fboundp (variable); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
1516 |
298 | 1517 /* Make sure the symbol has a local value in this particular buffer, |
1518 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
|
1519 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
|
1520 return variable; |
298 | 1521 } |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1522 /* 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
|
1523 if (!SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
298 | 1524 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1525 Lisp_Object newval; |
298 | 1526 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
|
1527 XSETCAR (tem, tem); |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1528 newval = allocate_misc (); |
11239
38aef18e8e3d
(Ftype_of, do_symval_forwarding, store_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
11219
diff
changeset
|
1529 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
|
1530 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
|
1531 XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1532 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
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_buffer = 0; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1534 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
|
1535 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
|
1536 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1537 SET_SYMBOL_VALUE (variable, newval);; |
298 | 1538 } |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1539 /* 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
|
1540 tem = Fassq (variable, current_buffer->local_var_alist); |
490 | 1541 if (NILP (tem)) |
298 | 1542 { |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1543 /* 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
|
1544 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
|
1545 default value. */ |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1546 find_symbol_value (variable); |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1547 |
298 | 1548 current_buffer->local_var_alist |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1549 = Fcons (Fcons (variable, XCDR (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (variable))->cdr)), |
298 | 1550 current_buffer->local_var_alist); |
1551 | |
1552 /* 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
|
1553 force it to look once again for this buffer's value. */ |
298 | 1554 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1555 Lisp_Object *pvalbuf; |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1556 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1557 valcontents = SYMBOL_VALUE (variable); |
13593
e27c32c7d428
(Fmake_local_variable): Call find_symbol_value
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
1558 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1559 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
|
1560 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
|
1561 *pvalbuf = Qnil; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1562 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; |
298 | 1563 } |
1278
0a0646ae381f
* data.c (Fmake_local_variable): If SYM forwards to a C variable,
Jim Blandy <jimb@redhat.com>
parents:
1263
diff
changeset
|
1564 } |
298 | 1565 |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1566 /* 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
|
1567 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
|
1568 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
|
1569 binding the next time we unload it. */ |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1570 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
|
1571 if (INTFWDP (valcontents) || BOOLFWDP (valcontents) || OBJFWDP (valcontents)) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1572 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
|
1573 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1574 return variable; |
298 | 1575 } |
1576 | |
1577 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
|
1578 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
|
1579 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
|
1580 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
|
1581 (variable) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1582 register Lisp_Object variable; |
298 | 1583 { |
1584 register Lisp_Object tem, valcontents; | |
1585 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1586 CHECK_SYMBOL (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 { |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1619 Lisp_Object *pvalbuf; |
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; |
9895
924f7b9ce544
(store_symval_forwarding, swap_in_symval_forwarding, Fset, default_value,
Karl Heuer <kwzh@gnu.org>
parents:
9889
diff
changeset
|
1622 if (current_buffer == XBUFFER (*pvalbuf)) |
14264
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1623 { |
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1624 *pvalbuf = Qnil; |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1625 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
|
1626 find_symbol_value (variable); |
14264
215d8ba39537
(kill-local-variable): didn't update the value of
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1627 } |
298 | 1628 } |
1629 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1630 return variable; |
298 | 1631 } |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1632 |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1633 /* 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
|
1634 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1635 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
|
1636 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
|
1637 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
|
1638 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
|
1639 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
|
1640 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
|
1641 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
|
1642 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
|
1643 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
|
1644 (variable) |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1645 register Lisp_Object variable; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1646 { |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1647 register Lisp_Object tem, valcontents, newval; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1648 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1649 CHECK_SYMBOL (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1650 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1651 valcontents = SYMBOL_VALUE (variable); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1652 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
|
1653 || 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
|
1654 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
|
1655 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1656 if (BUFFER_LOCAL_VALUEP (valcontents) |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1657 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
27778
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1658 { |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1659 XBUFFER_LOCAL_VALUE (valcontents)->check_frame = 1; |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1660 return variable; |
f100dbd7e3a0
(Fmake_variable_buffer_local): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
27758
diff
changeset
|
1661 } |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1662 |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1663 if (EQ (valcontents, Qunbound)) |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1664 SET_SYMBOL_VALUE (variable, Qnil); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1665 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
|
1666 XSETCAR (tem, tem); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1667 newval = allocate_misc (); |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1668 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
|
1669 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
|
1670 XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1671 XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1672 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
|
1673 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
|
1674 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
|
1675 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1676 SET_SYMBOL_VALUE (variable, newval); |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1677 return variable; |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1678 } |
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
1679 |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1680 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
|
1681 1, 2, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1682 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
|
1683 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
|
1684 (variable, buffer) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1685 register Lisp_Object variable, buffer; |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1686 { |
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1687 Lisp_Object valcontents; |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1688 register struct buffer *buf; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1689 |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1690 if (NILP (buffer)) |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1691 buf = current_buffer; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1692 else |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1693 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1694 CHECK_BUFFER (buffer); |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1695 buf = XBUFFER (buffer); |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1696 } |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1697 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1698 CHECK_SYMBOL (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1699 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1700 valcontents = SYMBOL_VALUE (variable); |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1701 if (BUFFER_LOCAL_VALUEP (valcontents) |
12225
a0067d2edef7
(Flocal_variable_p): Fix backwards logical operator.
Richard M. Stallman <rms@gnu.org>
parents:
12113
diff
changeset
|
1702 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1703 { |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1704 Lisp_Object tail, elt; |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1705 |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1706 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
|
1707 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
|
1708 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1709 elt = XCAR (tail); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1710 if (EQ (variable, XCAR (elt))) |
12113
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1711 return Qt; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1712 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1713 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1714 if (BUFFER_OBJFWDP (valcontents)) |
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 int offset = XBUFFER_OBJFWD (valcontents)->offset; |
28351 | 1717 int idx = PER_BUFFER_IDX (offset); |
1718 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
|
1719 return Qt; |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1720 } |
d96b45f31afa
(Flocal_variable_p): New optional arg BUFFER.
Karl Heuer <kwzh@gnu.org>
parents:
12043
diff
changeset
|
1721 return Qnil; |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1722 } |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1723 |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1724 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
|
1725 1, 2, 0, |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1726 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
|
1727 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
|
1728 (variable, buffer) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1729 register Lisp_Object variable, buffer; |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1730 { |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1731 Lisp_Object valcontents; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1732 register struct buffer *buf; |
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 if (NILP (buffer)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1735 buf = current_buffer; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1736 else |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1737 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1738 CHECK_BUFFER (buffer); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1739 buf = XBUFFER (buffer); |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1740 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1741 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1742 CHECK_SYMBOL (variable); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
1743 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
1744 valcontents = SYMBOL_VALUE (variable); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1745 |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1746 /* 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
|
1747 if (BUFFER_LOCAL_VALUEP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1748 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1749 /* 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
|
1750 if (BUFFER_OBJFWDP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1751 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1752 if (SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1753 { |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1754 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
|
1755 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
|
1756 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1757 elt = XCAR (tail); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1758 if (EQ (variable, XCAR (elt))) |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1759 return Qt; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1760 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1761 } |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1762 return Qnil; |
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
1763 } |
298 | 1764 |
648 | 1765 /* Find the function at the end of a chain of symbol function indirections. */ |
1766 | |
1767 /* If OBJECT is a symbol, find the end of its function chain and | |
1768 return the value found there. If OBJECT is not a symbol, just | |
1769 return it. If there is a cycle in the function chain, signal a | |
1770 cyclic-function-indirection error. | |
1771 | |
1772 This is like Findirect_function, except that it doesn't signal an | |
1773 error if the chain ends up unbound. */ | |
1774 Lisp_Object | |
1648
27e9f99fe095
src/ * data.c (indirect_function): Delete unused argument ERROR.
Jim Blandy <jimb@redhat.com>
parents:
1508
diff
changeset
|
1775 indirect_function (object) |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
1776 register Lisp_Object object; |
648 | 1777 { |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1778 Lisp_Object tortoise, hare; |
648 | 1779 |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1780 hare = tortoise = object; |
648 | 1781 |
1782 for (;;) | |
1783 { | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1784 if (!SYMBOLP (hare) || EQ (hare, Qunbound)) |
648 | 1785 break; |
1786 hare = XSYMBOL (hare)->function; | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1787 if (!SYMBOLP (hare) || EQ (hare, Qunbound)) |
648 | 1788 break; |
1789 hare = XSYMBOL (hare)->function; | |
1790 | |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1791 tortoise = XSYMBOL (tortoise)->function; |
648 | 1792 |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3529
diff
changeset
|
1793 if (EQ (hare, tortoise)) |
648 | 1794 Fsignal (Qcyclic_function_indirection, Fcons (object, Qnil)); |
1795 } | |
1796 | |
1797 return hare; | |
1798 } | |
1799 | |
1800 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
|
1801 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
|
1802 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
|
1803 function binding. |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1804 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
|
1805 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
|
1806 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
|
1807 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
|
1808 (object) |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
1809 register Lisp_Object object; |
648 | 1810 { |
1811 Lisp_Object result; | |
1812 | |
1813 result = indirect_function (object); | |
1814 | |
1815 if (EQ (result, Qunbound)) | |
1816 return Fsignal (Qvoid_function, Fcons (object, Qnil)); | |
1817 return result; | |
1818 } | |
1819 | |
298 | 1820 /* Extract and set vector and string elements */ |
1821 | |
1822 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
|
1823 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
|
1824 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
|
1825 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
|
1826 (array, idx) |
298 | 1827 register Lisp_Object array; |
1828 Lisp_Object idx; | |
1829 { | |
1830 register int idxval; | |
1831 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1832 CHECK_NUMBER (idx); |
298 | 1833 idxval = XINT (idx); |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1834 if (STRINGP (array)) |
298 | 1835 { |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1836 int c, idxval_byte; |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1837 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
1838 if (idxval < 0 || idxval >= SCHARS (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1839 args_out_of_range (array, idx); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1840 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
|
1841 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
|
1842 idxval_byte = string_char_to_byte (array, idxval); |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1843 |
46422
50a2414d96b7
* data.c (Faref): Use SDATA.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
1844 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
|
1845 SBYTES (array) - idxval_byte); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
1846 return make_number (c); |
298 | 1847 } |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1848 else if (BOOL_VECTOR_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1849 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1850 int val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1851 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1852 if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1853 args_out_of_range (array, idx); |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1854 |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1855 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
|
1856 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
|
1857 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1858 else if (CHAR_TABLE_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1859 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1860 Lisp_Object val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1861 |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1862 val = Qnil; |
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1863 |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1864 if (idxval < 0) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1865 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
|
1866 if (idxval < CHAR_TABLE_ORDINARY_SLOTS) |
17027 | 1867 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1868 /* 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
|
1869 stored in the top table. */ |
17027 | 1870 val = XCHAR_TABLE (array)->contents[idxval]; |
1871 if (NILP (val)) | |
1872 val = XCHAR_TABLE (array)->defalt; | |
1873 while (NILP (val)) /* Follow parents until we find some value. */ | |
1874 { | |
1875 array = XCHAR_TABLE (array)->parent; | |
1876 if (NILP (array)) | |
1877 return Qnil; | |
1878 val = XCHAR_TABLE (array)->contents[idxval]; | |
1879 if (NILP (val)) | |
1880 val = XCHAR_TABLE (array)->defalt; | |
1881 } | |
1882 return val; | |
1883 } | |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1884 else |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1885 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1886 int code[4], i; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1887 Lisp_Object sub_table; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1888 |
29007
180a8014aa14
(Faref): Use SPLIT_CHAR instead of SPLIT_NON_ASCII_CHAR.
Kenichi Handa <handa@m17n.org>
parents:
28417
diff
changeset
|
1889 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
|
1890 if (code[1] < 32) code[1] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
1891 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
|
1892 |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1893 /* 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
|
1894 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
|
1895 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
|
1896 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
|
1897 code[0] += 128; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1898 code[3] = -1; /* anchor */ |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1899 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1900 try_parent_char_table: |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1901 sub_table = array; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1902 for (i = 0; code[i] >= 0; i++) |
17027 | 1903 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1904 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
|
1905 if (SUB_CHAR_TABLE_P (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1906 sub_table = val; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1907 else |
17027 | 1908 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1909 if (NILP (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1910 val = XCHAR_TABLE (sub_table)->defalt; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1911 if (NILP (val)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1912 { |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1913 array = XCHAR_TABLE (array)->parent; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1914 if (!NILP (array)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1915 goto try_parent_char_table; |
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 return val; |
17027 | 1918 } |
1919 } | |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1920 /* 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
|
1921 and parent. */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1922 val = XCHAR_TABLE (val)->defalt; |
17027 | 1923 if (NILP (val)) |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1924 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1925 array = XCHAR_TABLE (array)->parent; |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1926 if (!NILP (array)) |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1927 goto try_parent_char_table; |
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 return val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1930 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1931 } |
298 | 1932 else |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1933 { |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
1934 int size = 0; |
10290
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1935 if (VECTORP (array)) |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1936 size = XVECTOR (array)->size; |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1937 else if (COMPILEDP (array)) |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1938 size = XVECTOR (array)->size & PSEUDOVECTOR_SIZE_MASK; |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1939 else |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1940 wrong_type_argument (Qarrayp, array); |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1941 |
1bcc91a4b210
(Faref): Handle compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents:
10248
diff
changeset
|
1942 if (idxval < 0 || idxval >= size) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1943 args_out_of_range (array, idx); |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1944 return XVECTOR (array)->contents[idxval]; |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1945 } |
298 | 1946 } |
1947 | |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
1948 /* 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
|
1949 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
|
1950 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
|
1951 #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
|
1952 |
298 | 1953 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
|
1954 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
|
1955 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
|
1956 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
|
1957 (array, idx, newelt) |
298 | 1958 register Lisp_Object array; |
1959 Lisp_Object idx, newelt; | |
1960 { | |
1961 register int idxval; | |
1962 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
1963 CHECK_NUMBER (idx); |
298 | 1964 idxval = XINT (idx); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1965 if (!VECTORP (array) && !STRINGP (array) && !BOOL_VECTOR_P (array) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1966 && ! CHAR_TABLE_P (array)) |
298 | 1967 array = wrong_type_argument (Qarrayp, array); |
1968 CHECK_IMPURE (array); | |
1969 | |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
1970 if (VECTORP (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1971 { |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1972 if (idxval < 0 || idxval >= XVECTOR (array)->size) |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1973 args_out_of_range (array, idx); |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1974 XVECTOR (array)->contents[idxval] = newelt; |
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
1975 } |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1976 else if (BOOL_VECTOR_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1977 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1978 int val; |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1979 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1980 if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1981 args_out_of_range (array, idx); |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1982 |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1983 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
|
1984 |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1985 if (! NILP (newelt)) |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1986 val |= 1 << (idxval % BITS_PER_CHAR); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1987 else |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13296
diff
changeset
|
1988 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
|
1989 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
|
1990 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1991 else if (CHAR_TABLE_P (array)) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1992 { |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1993 if (idxval < 0) |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1994 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
|
1995 if (idxval < CHAR_TABLE_ORDINARY_SLOTS) |
17027 | 1996 XCHAR_TABLE (array)->contents[idxval] = newelt; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1997 else |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
1998 { |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
1999 int code[4], i; |
17027 | 2000 Lisp_Object val; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2001 |
29007
180a8014aa14
(Faref): Use SPLIT_CHAR instead of SPLIT_NON_ASCII_CHAR.
Kenichi Handa <handa@m17n.org>
parents:
28417
diff
changeset
|
2002 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
|
2003 if (code[1] < 32) code[1] = -1; |
a0ecda172035
(Faref): Delete codes for a composite character..
Kenichi Handa <handa@m17n.org>
parents:
26274
diff
changeset
|
2004 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
|
2005 |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2006 /* 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
|
2007 code[0] += 128; |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2008 code[3] = -1; /* anchor */ |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2009 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
|
2010 { |
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2011 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
|
2012 if (SUB_CHAR_TABLE_P (val)) |
17027 | 2013 array = val; |
2014 else | |
19751
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2015 { |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2016 Lisp_Object temp; |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2017 |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2018 /* 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
|
2019 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
|
2020 and look into it. */ |
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 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
|
2023 ? 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 : val); |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2025 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
|
2026 array = temp; |
19f79afe3e78
(Faset): Simplify a statement in the char-table case.
Richard M. Stallman <rms@gnu.org>
parents:
18854
diff
changeset
|
2027 } |
17027 | 2028 } |
17319
a58d6ceeb370
(Faref, Faset): Adjusted for the new structure of
Kenichi Handa <handa@m17n.org>
parents:
17184
diff
changeset
|
2029 XCHAR_TABLE (array)->contents[code[i]] = newelt; |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2030 } |
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2031 } |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2032 else if (STRING_MULTIBYTE (array)) |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2033 { |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2034 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
|
2035 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
|
2036 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2037 if (idxval < 0 || idxval >= SCHARS (array)) |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2038 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
|
2039 CHECK_NUMBER (newelt); |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2040 |
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2041 idxval_byte = string_char_to_byte (array, idxval); |
46422
50a2414d96b7
* data.c (Faref): Use SDATA.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
2042 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
|
2043 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
|
2044 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
|
2045 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
|
2046 { |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2047 /* 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
|
2048 int nchars = SCHARS (array); |
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2049 int nbytes = SBYTES (array); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2050 unsigned char *str; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2051 |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2052 str = (nbytes <= MAX_ALLOCA |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2053 ? (unsigned char *) alloca (nbytes) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2054 : (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
|
2055 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
|
2056 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
|
2057 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
|
2058 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
|
2059 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
|
2060 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
|
2061 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
|
2062 if (nbytes > MAX_ALLOCA) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2063 xfree (str); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2064 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
|
2065 } |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2066 while (new_bytes--) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2067 *p1++ = *p0++; |
20617
20957e3ca2f5
(Fmultibyte_string_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20122
diff
changeset
|
2068 } |
298 | 2069 else |
2070 { | |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2071 if (idxval < 0 || idxval >= SCHARS (array)) |
9966
d64bdd958254
(Farray_length): Delete this obsolete function.
Karl Heuer <kwzh@gnu.org>
parents:
9954
diff
changeset
|
2072 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
|
2073 CHECK_NUMBER (newelt); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2074 |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2075 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
|
2076 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
|
2077 else |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2078 { |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2079 /* 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
|
2080 multibyte. */ |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2081 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
|
2082 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
|
2083 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
|
2084 int nchars, nbytes; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2085 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46279
diff
changeset
|
2086 nchars = SCHARS (array); |
30356
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2087 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
|
2088 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
|
2089 nchars - idxval); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2090 str = (nbytes <= MAX_ALLOCA |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2091 ? (unsigned char *) alloca (nbytes) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2092 : (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
|
2093 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
|
2094 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
|
2095 prev_bytes); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2096 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
|
2097 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
|
2098 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
|
2099 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
|
2100 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
|
2101 while (new_bytes--) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2102 *p1++ = *p0++; |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2103 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
|
2104 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
|
2105 if (nbytes > MAX_ALLOCA) |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2106 xfree (str); |
b600a31684db
(Faset): Allow storing any multibyte character in a string. Convert
Kenichi Handa <handa@m17n.org>
parents:
29735
diff
changeset
|
2107 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
|
2108 } |
298 | 2109 } |
2110 | |
2111 return newelt; | |
2112 } | |
2113 | |
2114 /* Arithmetic functions */ | |
2115 | |
2116 enum comparison { equal, notequal, less, grtr, less_or_equal, grtr_or_equal }; | |
2117 | |
2118 Lisp_Object | |
2119 arithcompare (num1, num2, comparison) | |
2120 Lisp_Object num1, num2; | |
2121 enum comparison comparison; | |
2122 { | |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
30356
diff
changeset
|
2123 double f1 = 0, f2 = 0; |
298 | 2124 int floatp = 0; |
2125 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2126 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
|
2127 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num2); |
298 | 2128 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
2129 if (FLOATP (num1) || FLOATP (num2)) |
298 | 2130 { |
2131 floatp = 1; | |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2132 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
|
2133 f2 = (FLOATP (num2)) ? XFLOAT_DATA (num2) : XINT (num2); |
298 | 2134 } |
2135 | |
2136 switch (comparison) | |
2137 { | |
2138 case equal: | |
2139 if (floatp ? f1 == f2 : XINT (num1) == XINT (num2)) | |
2140 return Qt; | |
2141 return Qnil; | |
2142 | |
2143 case notequal: | |
2144 if (floatp ? f1 != f2 : XINT (num1) != XINT (num2)) | |
2145 return Qt; | |
2146 return Qnil; | |
2147 | |
2148 case less: | |
2149 if (floatp ? f1 < f2 : XINT (num1) < XINT (num2)) | |
2150 return Qt; | |
2151 return Qnil; | |
2152 | |
2153 case less_or_equal: | |
2154 if (floatp ? f1 <= f2 : XINT (num1) <= XINT (num2)) | |
2155 return Qt; | |
2156 return Qnil; | |
2157 | |
2158 case grtr: | |
2159 if (floatp ? f1 > f2 : XINT (num1) > XINT (num2)) | |
2160 return Qt; | |
2161 return Qnil; | |
2162 | |
2163 case grtr_or_equal: | |
2164 if (floatp ? f1 >= f2 : XINT (num1) >= XINT (num2)) | |
2165 return Qt; | |
2166 return Qnil; | |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2167 |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2168 default: |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2169 abort (); |
298 | 2170 } |
2171 } | |
2172 | |
2173 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
|
2174 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
|
2175 (num1, num2) |
298 | 2176 register Lisp_Object num1, num2; |
2177 { | |
2178 return arithcompare (num1, num2, equal); | |
2179 } | |
2180 | |
2181 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
|
2182 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
|
2183 (num1, num2) |
298 | 2184 register Lisp_Object num1, num2; |
2185 { | |
2186 return arithcompare (num1, num2, less); | |
2187 } | |
2188 | |
2189 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
|
2190 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
|
2191 (num1, num2) |
298 | 2192 register Lisp_Object num1, num2; |
2193 { | |
2194 return arithcompare (num1, num2, grtr); | |
2195 } | |
2196 | |
2197 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
|
2198 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
|
2199 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
|
2200 (num1, num2) |
298 | 2201 register Lisp_Object num1, num2; |
2202 { | |
2203 return arithcompare (num1, num2, less_or_equal); | |
2204 } | |
2205 | |
2206 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
|
2207 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
|
2208 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
|
2209 (num1, num2) |
298 | 2210 register Lisp_Object num1, num2; |
2211 { | |
2212 return arithcompare (num1, num2, grtr_or_equal); | |
2213 } | |
2214 | |
2215 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
|
2216 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
|
2217 (num1, num2) |
298 | 2218 register Lisp_Object num1, num2; |
2219 { | |
2220 return arithcompare (num1, num2, notequal); | |
2221 } | |
2222 | |
40123
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2223 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
|
2224 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
|
2225 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2226 register Lisp_Object number; |
298 | 2227 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2228 CHECK_NUMBER_OR_FLOAT (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2229 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2230 if (FLOATP (number)) |
298 | 2231 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2232 if (XFLOAT_DATA (number) == 0.0) |
298 | 2233 return Qt; |
2234 return Qnil; | |
2235 } | |
2236 | |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2237 if (!XINT (number)) |
298 | 2238 return Qt; |
2239 return Qnil; | |
2240 } | |
2241 | |
12043 | 2242 /* 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
|
2243 |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2244 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
|
2245 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
|
2246 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
|
2247 { |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2248 unsigned int top = i >> 16; |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2249 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
|
2250 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
|
2251 return make_number (bot); |
11879
606889516975
(long_to_cons): Don't assume 32-bit longs.
Karl Heuer <kwzh@gnu.org>
parents:
11734
diff
changeset
|
2252 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
|
2253 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
|
2254 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
|
2255 } |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2256 |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2257 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
|
2258 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
|
2259 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
|
2260 { |
3675
f42eaf84478f
(cons_to_long): Declare top, bot as Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
2261 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
|
2262 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
|
2263 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
|
2264 top = XCAR (c); |
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2265 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
|
2266 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
|
2267 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
|
2268 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
|
2269 } |
c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents:
2429
diff
changeset
|
2270 |
2429
96b55f2f19cd
Rename int-to-string to number-to-string, since it can handle
Jim Blandy <jimb@redhat.com>
parents:
2092
diff
changeset
|
2271 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
|
2272 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
|
2273 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
|
2274 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
|
2275 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2276 Lisp_Object number; |
298 | 2277 { |
12528
ed5b91dd829a
(Fnumber_to_string): Make `buffer' long enough.
Karl Heuer <kwzh@gnu.org>
parents:
12295
diff
changeset
|
2278 char buffer[VALBITS]; |
298 | 2279 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2280 CHECK_NUMBER_OR_FLOAT (number); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2281 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2282 if (FLOATP (number)) |
298 | 2283 { |
2284 char pigbuf[350]; /* see comments in float_to_string */ | |
2285 | |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2286 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
|
2287 return build_string (pigbuf); |
298 | 2288 } |
2289 | |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2290 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
|
2291 sprintf (buffer, "%d", XINT (number)); |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2292 else if (sizeof (long) == sizeof (EMACS_INT)) |
25780
18cf58ed9400
(find_symbol_value): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25665
diff
changeset
|
2293 sprintf (buffer, "%ld", (long) XINT (number)); |
11701
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2294 else |
d0eaa6b6dc72
(Fnumber_to_string, Fstring_to_number):
Richard M. Stallman <rms@gnu.org>
parents:
11688
diff
changeset
|
2295 abort (); |
298 | 2296 return build_string (buffer); |
2297 } | |
2298 | |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2299 INLINE static int |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2300 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
|
2301 int character, base; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2302 { |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2303 int digit; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2304 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2305 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
|
2306 digit = character - '0'; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2307 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
|
2308 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
|
2309 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
|
2310 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
|
2311 else |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2312 return -1; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2313 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2314 if (digit >= base) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2315 return -1; |
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 digit; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
2318 } |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2319 |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2320 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
|
2321 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
|
2322 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
|
2323 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
|
2324 |
e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents:
40116
diff
changeset
|
2325 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
|
2326 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
|
2327 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
|
2328 (string, base) |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2329 register Lisp_Object string, base; |
298 | 2330 { |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2331 register unsigned char *p; |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2332 register int b; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2333 int sign = 1; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2334 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
|
2335 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2336 CHECK_STRING (string); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2337 |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2338 if (NILP (base)) |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2339 b = 10; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2340 else |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2341 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2342 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
|
2343 b = XINT (base); |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2344 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
|
2345 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
|
2346 } |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2347 |
1914
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2348 /* 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
|
2349 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
|
2350 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
|
2351 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
|
2352 p++; |
60965a5c325f
* data.c (Fstring_to_number): Skip initial spaces, to make Emacs
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
2353 |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2354 if (*p == '-') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2355 { |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2356 sign = -1; |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2357 p++; |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2358 } |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2359 else if (*p == '+') |
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2360 p++; |
48961
39ba2cdf869e
(Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
Francesco Potortì <pot@gnu.org>
parents:
48723
diff
changeset
|
2361 |
23420
460aba3ec682
(Fstring_to_number): Don't recognize floating point if base is not 10.
Kenichi Handa <handa@m17n.org>
parents:
23250
diff
changeset
|
2362 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
|
2363 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
|
2364 else |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2365 { |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2366 double v = 0; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2367 |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2368 while (1) |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2369 { |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2370 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
|
2371 if (digit < 0) |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2372 break; |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2373 v = v * b + digit; |
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 |
39775
280975f8c65e
(Fstring_to_number): Use make_fixnum_or_float.
Gerd Moellmann <gerd@gnu.org>
parents:
39767
diff
changeset
|
2376 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
|
2377 } |
27826
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2378 |
1a0a62bd23c4
(Fstring_to_number): If number is greater than what
Gerd Moellmann <gerd@gnu.org>
parents:
27818
diff
changeset
|
2379 return val; |
298 | 2380 } |
17780
df8d082029a6
(wrong_type_argument): Pass new arg to Fstring_to_number.
Richard M. Stallman <rms@gnu.org>
parents:
17319
diff
changeset
|
2381 |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2382 |
298 | 2383 enum arithop |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2384 { |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2385 Aadd, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2386 Asub, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2387 Amult, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2388 Adiv, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2389 Alogand, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2390 Alogior, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2391 Alogxor, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2392 Amax, |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2393 Amin |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2394 }; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2395 |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2396 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
|
2397 int, Lisp_Object *)); |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2398 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
|
2399 |
298 | 2400 Lisp_Object |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2401 arith_driver (code, nargs, args) |
298 | 2402 enum arithop code; |
2403 int nargs; | |
2404 register Lisp_Object *args; | |
2405 { | |
2406 register Lisp_Object val; | |
2407 register int argnum; | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2408 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
|
2409 register EMACS_INT next; |
298 | 2410 |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
2411 switch (SWITCH_ENUM_CAST (code)) |
298 | 2412 { |
2413 case Alogior: | |
2414 case Alogxor: | |
2415 case Aadd: | |
2416 case Asub: | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2417 accum = 0; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2418 break; |
298 | 2419 case Amult: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2420 accum = 1; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2421 break; |
298 | 2422 case Alogand: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2423 accum = -1; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2424 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2425 default: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2426 break; |
298 | 2427 } |
2428 | |
2429 for (argnum = 0; argnum < nargs; argnum++) | |
2430 { | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2431 /* 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
|
2432 val = args[argnum]; |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2433 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val); |
298 | 2434 |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2435 if (FLOATP (val)) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2436 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
|
2437 nargs, args); |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2438 args[argnum] = val; |
298 | 2439 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
|
2440 switch (SWITCH_ENUM_CAST (code)) |
298 | 2441 { |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2442 case Aadd: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2443 accum += next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2444 break; |
298 | 2445 case Asub: |
23148
10e261360159
(arith_driver, float_arith_driver): Compute (- x) by
Paul Eggert <eggert@twinsun.com>
parents:
23129
diff
changeset
|
2446 accum = argnum ? accum - next : nargs == 1 ? - next : next; |
298 | 2447 break; |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2448 case Amult: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2449 accum *= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2450 break; |
298 | 2451 case Adiv: |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2452 if (!argnum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2453 accum = next; |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2454 else |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2455 { |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2456 if (next == 0) |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2457 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2458 accum /= next; |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2459 } |
298 | 2460 break; |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2461 case Alogand: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2462 accum &= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2463 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2464 case Alogior: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2465 accum |= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2466 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2467 case Alogxor: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2468 accum ^= next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2469 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2470 case Amax: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2471 if (!argnum || next > accum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2472 accum = next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2473 break; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2474 case Amin: |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2475 if (!argnum || next < accum) |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2476 accum = next; |
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2477 break; |
298 | 2478 } |
2479 } | |
2480 | |
9263
cda13734e32c
(make_number, Fsymbol_name, do_symval_forwarding, swap_in_symval_forwarding,
Karl Heuer <kwzh@gnu.org>
parents:
9194
diff
changeset
|
2481 XSETINT (val, accum); |
298 | 2482 return val; |
2483 } | |
2484 | |
6201 | 2485 #undef isnan |
2486 #define isnan(x) ((x) != (x)) | |
2487 | |
36819
c21e776b768a
(store_symval_forwarding): Add parameter BUF. If BUF is
Gerd Moellmann <gerd@gnu.org>
parents:
34964
diff
changeset
|
2488 static Lisp_Object |
298 | 2489 float_arith_driver (accum, argnum, code, nargs, args) |
2490 double accum; | |
2491 register int argnum; | |
2492 enum arithop code; | |
2493 int nargs; | |
2494 register Lisp_Object *args; | |
2495 { | |
2496 register Lisp_Object val; | |
2497 double next; | |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2498 |
298 | 2499 for (; argnum < nargs; argnum++) |
2500 { | |
2501 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
|
2502 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val); |
298 | 2503 |
9147
ee9adbda1ad1
(wrong_type_argument, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp, Fvectorp,
Karl Heuer <kwzh@gnu.org>
parents:
9035
diff
changeset
|
2504 if (FLOATP (val)) |
298 | 2505 { |
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2506 next = XFLOAT_DATA (val); |
298 | 2507 } |
2508 else | |
2509 { | |
2510 args[argnum] = val; /* runs into a compiler bug. */ | |
2511 next = XINT (args[argnum]); | |
2512 } | |
10457
2ab3bd0288a9
Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents:
10290
diff
changeset
|
2513 switch (SWITCH_ENUM_CAST (code)) |
298 | 2514 { |
2515 case Aadd: | |
2516 accum += next; | |
2517 break; | |
2518 case Asub: | |
23148
10e261360159
(arith_driver, float_arith_driver): Compute (- x) by
Paul Eggert <eggert@twinsun.com>
parents:
23129
diff
changeset
|
2519 accum = argnum ? accum - next : nargs == 1 ? - next : next; |
298 | 2520 break; |
2521 case Amult: | |
2522 accum *= next; | |
2523 break; | |
2524 case Adiv: | |
2525 if (!argnum) | |
2526 accum = next; | |
2527 else | |
3338
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2528 { |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2529 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
|
2530 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2531 accum /= next; |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2532 } |
298 | 2533 break; |
2534 case Alogand: | |
2535 case Alogior: | |
2536 case Alogxor: | |
2537 return wrong_type_argument (Qinteger_or_marker_p, val); | |
2538 case Amax: | |
6201 | 2539 if (!argnum || isnan (next) || next > accum) |
298 | 2540 accum = next; |
2541 break; | |
2542 case Amin: | |
6201 | 2543 if (!argnum || isnan (next) || next < accum) |
298 | 2544 accum = next; |
2545 break; | |
2546 } | |
2547 } | |
2548 | |
2549 return make_float (accum); | |
2550 } | |
27727
9400865ec7cf
Remove `LISP_FLOAT_TYPE' and `standalone'.
Gerd Moellmann <gerd@gnu.org>
parents:
27703
diff
changeset
|
2551 |
298 | 2552 |
2553 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
|
2554 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
|
2555 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
|
2556 (nargs, args) |
298 | 2557 int nargs; |
2558 Lisp_Object *args; | |
2559 { | |
2560 return arith_driver (Aadd, nargs, args); | |
2561 } | |
2562 | |
2563 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
|
2564 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
|
2565 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
|
2566 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
|
2567 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
|
2568 (nargs, args) |
298 | 2569 int nargs; |
2570 Lisp_Object *args; | |
2571 { | |
2572 return arith_driver (Asub, nargs, args); | |
2573 } | |
2574 | |
2575 DEFUN ("*", Ftimes, Stimes, 0, MANY, 0, | |
41153 | 2576 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
|
2577 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
|
2578 (nargs, args) |
298 | 2579 int nargs; |
2580 Lisp_Object *args; | |
2581 { | |
2582 return arith_driver (Amult, nargs, args); | |
2583 } | |
2584 | |
2585 DEFUN ("/", Fquo, Squo, 2, MANY, 0, | |
41153 | 2586 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
|
2587 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
|
2588 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
|
2589 (nargs, args) |
298 | 2590 int nargs; |
2591 Lisp_Object *args; | |
2592 { | |
2593 return arith_driver (Adiv, nargs, args); | |
2594 } | |
2595 | |
2596 DEFUN ("%", Frem, Srem, 2, 2, 0, | |
41153 | 2597 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
|
2598 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
|
2599 (x, y) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2600 register Lisp_Object x, y; |
298 | 2601 { |
2602 Lisp_Object val; | |
2603 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2604 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
|
2605 CHECK_NUMBER_COERCE_MARKER (y); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2606 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2607 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
|
2608 Fsignal (Qarith_error, Qnil); |
30b946dd8c66
(float_arith_driver): Detect division by zero in advance.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
2609 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2610 XSETINT (val, XINT (x) % XINT (y)); |
298 | 2611 return val; |
2612 } | |
2613 | |
5776
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2614 #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
|
2615 double |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2616 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
|
2617 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
|
2618 { |
16945
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2619 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
|
2620 |
13296
76034e1fc62e
[!HAVE_FMOD] (fmod): Make consistent with ANSI definition.
Karl Heuer <kwzh@gnu.org>
parents:
13200
diff
changeset
|
2621 if (f2 < 0.0) |
76034e1fc62e
[!HAVE_FMOD] (fmod): Make consistent with ANSI definition.
Karl Heuer <kwzh@gnu.org>
parents:
13200
diff
changeset
|
2622 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
|
2623 |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2624 /* 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
|
2625 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
|
2626 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
|
2627 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
|
2628 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
|
2629 do |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2630 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
|
2631 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
|
2632 |
d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
Paul Eggert <eggert@twinsun.com>
parents:
16931
diff
changeset
|
2633 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
|
2634 } |
6130ebde8d3b
(fmod): Implement it on systems where it's missing, using drem if available.
Karl Heuer <kwzh@gnu.org>
parents:
5729
diff
changeset
|
2635 #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
|
2636 |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2637 DEFUN ("mod", Fmod, Smod, 2, 2, 0, |
41153 | 2638 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
|
2639 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
|
2640 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
|
2641 (x, y) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2642 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
|
2643 { |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2644 Lisp_Object val; |
11688
f1e6033d8aca
(arith_driver): Make accum and next EMACS_INTs.
Richard M. Stallman <rms@gnu.org>
parents:
11341
diff
changeset
|
2645 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
|
2646 |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2647 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
|
2648 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
|
2649 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2650 if (FLOATP (x) || FLOATP (y)) |
16787
3ad557e686b9
<float.h>: Include if STDC_HEADERS.
Paul Eggert <eggert@twinsun.com>
parents:
16756
diff
changeset
|
2651 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
|
2652 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2653 i1 = XINT (x); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2654 i2 = XINT (y); |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2655 |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2656 if (i2 == 0) |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2657 Fsignal (Qarith_error, Qnil); |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
2658 |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2659 i1 %= i2; |
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 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
|
2662 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
|
2663 i1 += i2; |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2664 |
9263
cda13734e32c
(make_number, Fsymbol_name, do_symval_forwarding, swap_in_symval_forwarding,
Karl Heuer <kwzh@gnu.org>
parents:
9194
diff
changeset
|
2665 XSETINT (val, i1); |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2666 return val; |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2667 } |
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
2668 |
298 | 2669 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
|
2670 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
|
2671 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
|
2672 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
|
2673 (nargs, args) |
298 | 2674 int nargs; |
2675 Lisp_Object *args; | |
2676 { | |
2677 return arith_driver (Amax, nargs, args); | |
2678 } | |
2679 | |
2680 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
|
2681 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
|
2682 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
|
2683 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
|
2684 (nargs, args) |
298 | 2685 int nargs; |
2686 Lisp_Object *args; | |
2687 { | |
2688 return arith_driver (Amin, nargs, args); | |
2689 } | |
2690 | |
2691 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
|
2692 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
|
2693 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
|
2694 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
|
2695 (nargs, args) |
298 | 2696 int nargs; |
2697 Lisp_Object *args; | |
2698 { | |
2699 return arith_driver (Alogand, nargs, args); | |
2700 } | |
2701 | |
2702 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
|
2703 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
|
2704 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
|
2705 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
|
2706 (nargs, args) |
298 | 2707 int nargs; |
2708 Lisp_Object *args; | |
2709 { | |
2710 return arith_driver (Alogior, nargs, args); | |
2711 } | |
2712 | |
2713 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
|
2714 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
|
2715 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
|
2716 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
|
2717 (nargs, args) |
298 | 2718 int nargs; |
2719 Lisp_Object *args; | |
2720 { | |
2721 return arith_driver (Alogxor, nargs, args); | |
2722 } | |
2723 | |
2724 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
|
2725 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
|
2726 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
|
2727 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
|
2728 (value, count) |
11002
ff115809a39e
(Fash): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10951
diff
changeset
|
2729 register Lisp_Object value, count; |
298 | 2730 { |
2731 register Lisp_Object val; | |
2732 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2733 CHECK_NUMBER (value); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2734 CHECK_NUMBER (count); |
298 | 2735 |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2736 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
|
2737 XSETINT (val, 0); |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2738 else if (XINT (count) > 0) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2739 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
|
2740 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
|
2741 XSETINT (val, XINT (value) < 0 ? -1 : 0); |
298 | 2742 else |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2743 XSETINT (val, XINT (value) >> -XINT (count)); |
298 | 2744 return val; |
2745 } | |
2746 | |
2747 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
|
2748 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
|
2749 If COUNT is negative, shifting is actually to the right. |
47276
fbe02a367006
(Flsh): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
46831
diff
changeset
|
2750 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
|
2751 (value, count) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2752 register Lisp_Object value, count; |
298 | 2753 { |
2754 register Lisp_Object val; | |
2755 | |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2756 CHECK_NUMBER (value); |
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2757 CHECK_NUMBER (count); |
298 | 2758 |
21819
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2759 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
|
2760 XSETINT (val, 0); |
c98ba82f4b52
(Flsh, Fash): Handle out-of-range shift counts reasonably.
Richard M. Stallman <rms@gnu.org>
parents:
21775
diff
changeset
|
2761 else if (XINT (count) > 0) |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2762 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
|
2763 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
|
2764 XSETINT (val, 0); |
298 | 2765 else |
10951
6a8b6db450dc
(Fash, Flsh): Change arg names.
Richard M. Stallman <rms@gnu.org>
parents:
10725
diff
changeset
|
2766 XSETINT (val, (EMACS_UINT) XUINT (value) >> -XINT (count)); |
298 | 2767 return val; |
2768 } | |
2769 | |
2770 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
|
2771 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
|
2772 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
|
2773 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2774 register Lisp_Object number; |
298 | 2775 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2776 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
|
2777 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2778 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
|
2779 return (make_float (1.0 + XFLOAT_DATA (number))); |
298 | 2780 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2781 XSETINT (number, XINT (number) + 1); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2782 return number; |
298 | 2783 } |
2784 | |
2785 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
|
2786 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
|
2787 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
|
2788 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2789 register Lisp_Object number; |
298 | 2790 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2791 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
|
2792 |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2793 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
|
2794 return (make_float (-1.0 + XFLOAT_DATA (number))); |
298 | 2795 |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2796 XSETINT (number, XINT (number) - 1); |
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2797 return number; |
298 | 2798 } |
2799 | |
2800 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
|
2801 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
|
2802 (number) |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2803 register Lisp_Object number; |
298 | 2804 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40642
diff
changeset
|
2805 CHECK_NUMBER (number); |
14096
f3766d691555
(Flognot): Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents:
14066
diff
changeset
|
2806 XSETINT (number, ~XINT (number)); |
14066
2c6db67067ac
(Fboundp, Ffboundp, Fmakunbound, Ffmakunbound, Fsymbol_plist, Fsymbol_name,
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
2807 return number; |
298 | 2808 } |
2809 | |
2810 void | |
2811 syms_of_data () | |
2812 { | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2813 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
|
2814 |
298 | 2815 Qquote = intern ("quote"); |
2816 Qlambda = intern ("lambda"); | |
2817 Qsubr = intern ("subr"); | |
2818 Qerror_conditions = intern ("error-conditions"); | |
2819 Qerror_message = intern ("error-message"); | |
2820 Qtop_level = intern ("top-level"); | |
2821 | |
2822 Qerror = intern ("error"); | |
2823 Qquit = intern ("quit"); | |
2824 Qwrong_type_argument = intern ("wrong-type-argument"); | |
2825 Qargs_out_of_range = intern ("args-out-of-range"); | |
2826 Qvoid_function = intern ("void-function"); | |
648 | 2827 Qcyclic_function_indirection = intern ("cyclic-function-indirection"); |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2828 Qcyclic_variable_indirection = intern ("cyclic-variable-indirection"); |
298 | 2829 Qvoid_variable = intern ("void-variable"); |
2830 Qsetting_constant = intern ("setting-constant"); | |
2831 Qinvalid_read_syntax = intern ("invalid-read-syntax"); | |
2832 | |
2833 Qinvalid_function = intern ("invalid-function"); | |
2834 Qwrong_number_of_arguments = intern ("wrong-number-of-arguments"); | |
2835 Qno_catch = intern ("no-catch"); | |
2836 Qend_of_file = intern ("end-of-file"); | |
2837 Qarith_error = intern ("arith-error"); | |
2838 Qbeginning_of_buffer = intern ("beginning-of-buffer"); | |
2839 Qend_of_buffer = intern ("end-of-buffer"); | |
2840 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
|
2841 Qtext_read_only = intern ("text-read-only"); |
4036 | 2842 Qmark_inactive = intern ("mark-inactive"); |
298 | 2843 |
2844 Qlistp = intern ("listp"); | |
2845 Qconsp = intern ("consp"); | |
2846 Qsymbolp = intern ("symbolp"); | |
26931 | 2847 Qkeywordp = intern ("keywordp"); |
298 | 2848 Qintegerp = intern ("integerp"); |
2849 Qnatnump = intern ("natnump"); | |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
2850 Qwholenump = intern ("wholenump"); |
298 | 2851 Qstringp = intern ("stringp"); |
2852 Qarrayp = intern ("arrayp"); | |
2853 Qsequencep = intern ("sequencep"); | |
2854 Qbufferp = intern ("bufferp"); | |
2855 Qvectorp = intern ("vectorp"); | |
2856 Qchar_or_string_p = intern ("char-or-string-p"); | |
2857 Qmarkerp = intern ("markerp"); | |
1293 | 2858 Qbuffer_or_string_p = intern ("buffer-or-string-p"); |
298 | 2859 Qinteger_or_marker_p = intern ("integer-or-marker-p"); |
2860 Qboundp = intern ("boundp"); | |
2861 Qfboundp = intern ("fboundp"); | |
2862 | |
2863 Qfloatp = intern ("floatp"); | |
2864 Qnumberp = intern ("numberp"); | |
2865 Qnumber_or_marker_p = intern ("number-or-marker-p"); | |
2866 | |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
2867 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
|
2868 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
|
2869 |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2870 Qsubrp = intern ("subrp"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2871 Qunevalled = intern ("unevalled"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2872 Qmany = intern ("many"); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
2873 |
298 | 2874 Qcdr = intern ("cdr"); |
2875 | |
8401
1eee41c8120c
(syms_of_data): Set up Qadvice_info, Qactivate_advice.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
2876 /* Handle automatic advice activation */ |
8448
b6335ce87e16
(Fdefine_function, Fdefalias): Handle advice as in Ffset.
Richard M. Stallman <rms@gnu.org>
parents:
8415
diff
changeset
|
2877 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
|
2878 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
|
2879 |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2880 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
|
2881 |
298 | 2882 /* ERROR is used as a signaler for random errors for which nothing else is right */ |
2883 | |
2884 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
|
2885 error_tail); |
298 | 2886 Fput (Qerror, Qerror_message, |
2887 build_string ("error")); | |
2888 | |
2889 Fput (Qquit, Qerror_conditions, | |
2890 Fcons (Qquit, Qnil)); | |
2891 Fput (Qquit, Qerror_message, | |
2892 build_string ("Quit")); | |
2893 | |
2894 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
|
2895 Fcons (Qwrong_type_argument, error_tail)); |
298 | 2896 Fput (Qwrong_type_argument, Qerror_message, |
2897 build_string ("Wrong type argument")); | |
2898 | |
2899 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
|
2900 Fcons (Qargs_out_of_range, error_tail)); |
298 | 2901 Fput (Qargs_out_of_range, Qerror_message, |
2902 build_string ("Args out of range")); | |
2903 | |
2904 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
|
2905 Fcons (Qvoid_function, error_tail)); |
298 | 2906 Fput (Qvoid_function, Qerror_message, |
2907 build_string ("Symbol's function definition is void")); | |
2908 | |
648 | 2909 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
|
2910 Fcons (Qcyclic_function_indirection, error_tail)); |
648 | 2911 Fput (Qcyclic_function_indirection, Qerror_message, |
2912 build_string ("Symbol's chain of function indirections contains a loop")); | |
2913 | |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2914 Fput (Qcyclic_variable_indirection, Qerror_conditions, |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2915 Fcons (Qcyclic_variable_indirection, error_tail)); |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2916 Fput (Qcyclic_variable_indirection, Qerror_message, |
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
2917 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
|
2918 |
39767
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2919 Qcircular_list = intern ("circular-list"); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2920 staticpro (&Qcircular_list); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2921 Fput (Qcircular_list, Qerror_conditions, |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2922 Fcons (Qcircular_list, error_tail)); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2923 Fput (Qcircular_list, Qerror_message, |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2924 build_string ("List contains a loop")); |
00f499d0cd16
(Qcircular_list): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
39632
diff
changeset
|
2925 |
298 | 2926 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
|
2927 Fcons (Qvoid_variable, error_tail)); |
298 | 2928 Fput (Qvoid_variable, Qerror_message, |
2929 build_string ("Symbol's value as variable is void")); | |
2930 | |
2931 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
|
2932 Fcons (Qsetting_constant, error_tail)); |
298 | 2933 Fput (Qsetting_constant, Qerror_message, |
2934 build_string ("Attempt to set a constant symbol")); | |
2935 | |
2936 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
|
2937 Fcons (Qinvalid_read_syntax, error_tail)); |
298 | 2938 Fput (Qinvalid_read_syntax, Qerror_message, |
2939 build_string ("Invalid read syntax")); | |
2940 | |
2941 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
|
2942 Fcons (Qinvalid_function, error_tail)); |
298 | 2943 Fput (Qinvalid_function, Qerror_message, |
2944 build_string ("Invalid function")); | |
2945 | |
2946 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
|
2947 Fcons (Qwrong_number_of_arguments, error_tail)); |
298 | 2948 Fput (Qwrong_number_of_arguments, Qerror_message, |
2949 build_string ("Wrong number of arguments")); | |
2950 | |
2951 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
|
2952 Fcons (Qno_catch, error_tail)); |
298 | 2953 Fput (Qno_catch, Qerror_message, |
2954 build_string ("No catch for tag")); | |
2955 | |
2956 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
|
2957 Fcons (Qend_of_file, error_tail)); |
298 | 2958 Fput (Qend_of_file, Qerror_message, |
2959 build_string ("End of file during parsing")); | |
2960 | |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2961 arith_tail = Fcons (Qarith_error, error_tail); |
298 | 2962 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
|
2963 arith_tail); |
298 | 2964 Fput (Qarith_error, Qerror_message, |
2965 build_string ("Arithmetic error")); | |
2966 | |
2967 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
|
2968 Fcons (Qbeginning_of_buffer, error_tail)); |
298 | 2969 Fput (Qbeginning_of_buffer, Qerror_message, |
2970 build_string ("Beginning of buffer")); | |
2971 | |
2972 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
|
2973 Fcons (Qend_of_buffer, error_tail)); |
298 | 2974 Fput (Qend_of_buffer, Qerror_message, |
2975 build_string ("End of buffer")); | |
2976 | |
2977 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
|
2978 Fcons (Qbuffer_read_only, error_tail)); |
298 | 2979 Fput (Qbuffer_read_only, Qerror_message, |
2980 build_string ("Buffer is read-only")); | |
2981 | |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2982 Fput (Qtext_read_only, Qerror_conditions, |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2983 Fcons (Qtext_read_only, error_tail)); |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2984 Fput (Qtext_read_only, Qerror_message, |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2985 build_string ("Text is read-only")); |
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
2986 |
2092
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2987 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
|
2988 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
|
2989 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
|
2990 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
|
2991 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
|
2992 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2993 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
|
2994 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
|
2995 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
|
2996 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
|
2997 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
2998 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
|
2999 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
|
3000 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
|
3001 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
|
3002 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3003 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
|
3004 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
|
3005 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
|
3006 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
|
3007 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3008 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
|
3009 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
|
3010 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
|
3011 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
|
3012 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3013 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
|
3014 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
|
3015 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
|
3016 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
|
3017 |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3018 staticpro (&Qrange_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3019 staticpro (&Qdomain_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3020 staticpro (&Qsingularity_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3021 staticpro (&Qoverflow_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3022 staticpro (&Qunderflow_error); |
7497fce1e426
(syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions:
Richard M. Stallman <rms@gnu.org>
parents:
1987
diff
changeset
|
3023 |
298 | 3024 staticpro (&Qnil); |
3025 staticpro (&Qt); | |
3026 staticpro (&Qquote); | |
3027 staticpro (&Qlambda); | |
3028 staticpro (&Qsubr); | |
3029 staticpro (&Qunbound); | |
3030 staticpro (&Qerror_conditions); | |
3031 staticpro (&Qerror_message); | |
3032 staticpro (&Qtop_level); | |
3033 | |
3034 staticpro (&Qerror); | |
3035 staticpro (&Qquit); | |
3036 staticpro (&Qwrong_type_argument); | |
3037 staticpro (&Qargs_out_of_range); | |
3038 staticpro (&Qvoid_function); | |
648 | 3039 staticpro (&Qcyclic_function_indirection); |
298 | 3040 staticpro (&Qvoid_variable); |
3041 staticpro (&Qsetting_constant); | |
3042 staticpro (&Qinvalid_read_syntax); | |
3043 staticpro (&Qwrong_number_of_arguments); | |
3044 staticpro (&Qinvalid_function); | |
3045 staticpro (&Qno_catch); | |
3046 staticpro (&Qend_of_file); | |
3047 staticpro (&Qarith_error); | |
3048 staticpro (&Qbeginning_of_buffer); | |
3049 staticpro (&Qend_of_buffer); | |
3050 staticpro (&Qbuffer_read_only); | |
26274
e310c2b8e6ed
(Qtext_read_only): New built-in error.
Gerd Moellmann <gerd@gnu.org>
parents:
26205
diff
changeset
|
3051 staticpro (&Qtext_read_only); |
4037
aecb99c65ab0
(syms_of_data): Staticpro Qmark_inactive.
Roland McGrath <roland@gnu.org>
parents:
4036
diff
changeset
|
3052 staticpro (&Qmark_inactive); |
298 | 3053 |
3054 staticpro (&Qlistp); | |
3055 staticpro (&Qconsp); | |
3056 staticpro (&Qsymbolp); | |
26931 | 3057 staticpro (&Qkeywordp); |
298 | 3058 staticpro (&Qintegerp); |
3059 staticpro (&Qnatnump); | |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
3060 staticpro (&Qwholenump); |
298 | 3061 staticpro (&Qstringp); |
3062 staticpro (&Qarrayp); | |
3063 staticpro (&Qsequencep); | |
3064 staticpro (&Qbufferp); | |
3065 staticpro (&Qvectorp); | |
3066 staticpro (&Qchar_or_string_p); | |
3067 staticpro (&Qmarkerp); | |
1293 | 3068 staticpro (&Qbuffer_or_string_p); |
298 | 3069 staticpro (&Qinteger_or_marker_p); |
3070 staticpro (&Qfloatp); | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3071 staticpro (&Qnumberp); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3072 staticpro (&Qnumber_or_marker_p); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3073 staticpro (&Qchar_table_p); |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
3074 staticpro (&Qvector_or_char_table_p); |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3075 staticpro (&Qsubrp); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3076 staticpro (&Qmany); |
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3077 staticpro (&Qunevalled); |
298 | 3078 |
3079 staticpro (&Qboundp); | |
3080 staticpro (&Qfboundp); | |
3081 staticpro (&Qcdr); | |
8448
b6335ce87e16
(Fdefine_function, Fdefalias): Handle advice as in Ffset.
Richard M. Stallman <rms@gnu.org>
parents:
8415
diff
changeset
|
3082 staticpro (&Qad_advice_info); |
26205
65a0abaeed68
(Qad_activate_internal): Renamed from Qad_activate.
Gerd Moellmann <gerd@gnu.org>
parents:
26185
diff
changeset
|
3083 staticpro (&Qad_activate_internal); |
298 | 3084 |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3085 /* 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
|
3086 Qinteger = intern ("integer"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3087 Qsymbol = intern ("symbol"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3088 Qstring = intern ("string"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3089 Qcons = intern ("cons"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3090 Qmarker = intern ("marker"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3091 Qoverlay = intern ("overlay"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3092 Qfloat = intern ("float"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3093 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
|
3094 Qprocess = intern ("process"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3095 Qwindow = intern ("window"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3096 /* Qsubr = intern ("subr"); */ |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3097 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
|
3098 Qbuffer = intern ("buffer"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3099 Qframe = intern ("frame"); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3100 Qvector = intern ("vector"); |
13715
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3101 Qchar_table = intern ("char-table"); |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3102 Qbool_vector = intern ("bool-vector"); |
26185 | 3103 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
|
3104 |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3105 staticpro (&Qinteger); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3106 staticpro (&Qsymbol); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3107 staticpro (&Qstring); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3108 staticpro (&Qcons); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3109 staticpro (&Qmarker); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3110 staticpro (&Qoverlay); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3111 staticpro (&Qfloat); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3112 staticpro (&Qwindow_configuration); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3113 staticpro (&Qprocess); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3114 staticpro (&Qwindow); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3115 /* staticpro (&Qsubr); */ |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3116 staticpro (&Qcompiled_function); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3117 staticpro (&Qbuffer); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3118 staticpro (&Qframe); |
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3119 staticpro (&Qvector); |
13715
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3120 staticpro (&Qchar_table); |
89ffc133f813
(Ftype_of): Return `char-table' and `bool-vector' for
Karl Heuer <kwzh@gnu.org>
parents:
13593
diff
changeset
|
3121 staticpro (&Qbool_vector); |
26185 | 3122 staticpro (&Qhash_table); |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3123 |
39575
f847e069b0f6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE.
Gerd Moellmann <gerd@gnu.org>
parents:
37053
diff
changeset
|
3124 defsubr (&Sindirect_variable); |
37053
1a420f3df4f8
(Fsubr_interactive_form): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36819
diff
changeset
|
3125 defsubr (&Ssubr_interactive_form); |
298 | 3126 defsubr (&Seq); |
3127 defsubr (&Snull); | |
10725
24958130d147
Rename arg OBJ to OBJECT in all type predicates.
Richard M. Stallman <rms@gnu.org>
parents:
10645
diff
changeset
|
3128 defsubr (&Stype_of); |
298 | 3129 defsubr (&Slistp); |
3130 defsubr (&Snlistp); | |
3131 defsubr (&Sconsp); | |
3132 defsubr (&Satom); | |
3133 defsubr (&Sintegerp); | |
695
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3134 defsubr (&Sinteger_or_marker_p); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3135 defsubr (&Snumberp); |
e3fac20d3015
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
3136 defsubr (&Snumber_or_marker_p); |
298 | 3137 defsubr (&Sfloatp); |
3138 defsubr (&Snatnump); | |
3139 defsubr (&Ssymbolp); | |
26931 | 3140 defsubr (&Skeywordp); |
298 | 3141 defsubr (&Sstringp); |
20793
b2af60896559
(syms_of_data): Register multibyte-string-p as a Lisp
Kenichi Handa <handa@m17n.org>
parents:
20716
diff
changeset
|
3142 defsubr (&Smultibyte_string_p); |
298 | 3143 defsubr (&Svectorp); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3144 defsubr (&Schar_table_p); |
13200
5fd4e8e4185a
(Qvector_or_char_table_p): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
13148
diff
changeset
|
3145 defsubr (&Svector_or_char_table_p); |
13148
18b1b690defe
(Fchartablep, Fboolvectorp): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
12528
diff
changeset
|
3146 defsubr (&Sbool_vector_p); |
298 | 3147 defsubr (&Sarrayp); |
3148 defsubr (&Ssequencep); | |
3149 defsubr (&Sbufferp); | |
3150 defsubr (&Smarkerp); | |
3151 defsubr (&Ssubrp); | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1648
diff
changeset
|
3152 defsubr (&Sbyte_code_function_p); |
298 | 3153 defsubr (&Schar_or_string_p); |
3154 defsubr (&Scar); | |
3155 defsubr (&Scdr); | |
3156 defsubr (&Scar_safe); | |
3157 defsubr (&Scdr_safe); | |
3158 defsubr (&Ssetcar); | |
3159 defsubr (&Ssetcdr); | |
3160 defsubr (&Ssymbol_function); | |
648 | 3161 defsubr (&Sindirect_function); |
298 | 3162 defsubr (&Ssymbol_plist); |
3163 defsubr (&Ssymbol_name); | |
3164 defsubr (&Smakunbound); | |
3165 defsubr (&Sfmakunbound); | |
3166 defsubr (&Sboundp); | |
3167 defsubr (&Sfboundp); | |
3168 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
|
3169 defsubr (&Sdefalias); |
298 | 3170 defsubr (&Ssetplist); |
3171 defsubr (&Ssymbol_value); | |
3172 defsubr (&Sset); | |
3173 defsubr (&Sdefault_boundp); | |
3174 defsubr (&Sdefault_value); | |
3175 defsubr (&Sset_default); | |
3176 defsubr (&Ssetq_default); | |
3177 defsubr (&Smake_variable_buffer_local); | |
3178 defsubr (&Smake_local_variable); | |
3179 defsubr (&Skill_local_variable); | |
21144
6988880cc529
(store_symval_forwarding, swap_in_symval_forwarding)
Richard M. Stallman <rms@gnu.org>
parents:
20996
diff
changeset
|
3180 defsubr (&Smake_variable_frame_local); |
9194
3db4151c3d00
(Fmake_local_variable): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9147
diff
changeset
|
3181 defsubr (&Slocal_variable_p); |
12295
b4731504d3ab
(Flocal_variable_if_set_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12244
diff
changeset
|
3182 defsubr (&Slocal_variable_if_set_p); |
298 | 3183 defsubr (&Saref); |
3184 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
|
3185 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
|
3186 defsubr (&Sstring_to_number); |
298 | 3187 defsubr (&Seqlsign); |
3188 defsubr (&Slss); | |
3189 defsubr (&Sgtr); | |
3190 defsubr (&Sleq); | |
3191 defsubr (&Sgeq); | |
3192 defsubr (&Sneq); | |
3193 defsubr (&Szerop); | |
3194 defsubr (&Splus); | |
3195 defsubr (&Sminus); | |
3196 defsubr (&Stimes); | |
3197 defsubr (&Squo); | |
3198 defsubr (&Srem); | |
4508
763987892042
(Fmod): New function; result is always same sign as divisor.
Paul Eggert <eggert@twinsun.com>
parents:
4447
diff
changeset
|
3199 defsubr (&Smod); |
298 | 3200 defsubr (&Smax); |
3201 defsubr (&Smin); | |
3202 defsubr (&Slogand); | |
3203 defsubr (&Slogior); | |
3204 defsubr (&Slogxor); | |
3205 defsubr (&Slsh); | |
3206 defsubr (&Sash); | |
3207 defsubr (&Sadd1); | |
3208 defsubr (&Ssub1); | |
3209 defsubr (&Slognot); | |
29237
ae0e64edbaad
(Qsubrp, Qmany, Qunevalled): New variables.
Dave Love <fx@gnu.org>
parents:
29007
diff
changeset
|
3210 defsubr (&Ssubr_arity); |
6459
30fabcc03f0c
(Qwholenump): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6448
diff
changeset
|
3211 |
9954
18b408b05189
(syms_of_data): Set Qwholenump as function, not variable.
Karl Heuer <kwzh@gnu.org>
parents:
9895
diff
changeset
|
3212 XSYMBOL (Qwholenump)->function = XSYMBOL (Qnatnump)->function; |
39632
8cd74f2aa6e2
(most_positive_fixnum, most_negative_fixnum): New
Gerd Moellmann <gerd@gnu.org>
parents:
39575
diff
changeset
|
3213 |
41865
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3214 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
|
3215 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
|
3216 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
|
3217 |
41865
f5dbdfc9fe27
(Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
Andreas Schwab <schwab@suse.de>
parents:
41153
diff
changeset
|
3218 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
|
3219 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
|
3220 Vmost_negative_fixnum = make_number (MOST_NEGATIVE_FIXNUM); |
298 | 3221 } |
3222 | |
490 | 3223 SIGTYPE |
298 | 3224 arith_error (signo) |
3225 int signo; | |
3226 { | |
16150
f388360fb59a
(arith_error) [POSIX_SIGNALS]: Don't reestablish handler.
Richard M. Stallman <rms@gnu.org>
parents:
16051
diff
changeset
|
3227 #if defined(USG) && !defined(POSIX_SIGNALS) |
298 | 3228 /* USG systems forget handlers when they are used; |
3229 must reestablish each time */ | |
3230 signal (signo, arith_error); | |
3231 #endif /* USG */ | |
3232 #ifdef VMS | |
3233 /* VMS systems are like USG. */ | |
3234 signal (signo, arith_error); | |
3235 #endif /* VMS */ | |
3236 #ifdef BSD4_1 | |
3237 sigrelse (SIGFPE); | |
3238 #else /* not BSD4_1 */ | |
638 | 3239 sigsetmask (SIGEMPTYMASK); |
298 | 3240 #endif /* not BSD4_1 */ |
3241 | |
3242 Fsignal (Qarith_error, Qnil); | |
3243 } | |
3244 | |
21514 | 3245 void |
298 | 3246 init_data () |
3247 { | |
3248 /* Don't do this if just dumping out. | |
3249 We don't want to call `signal' in this case | |
3250 so that we don't have trouble with dumping | |
3251 signal-delivering routines in an inconsistent state. */ | |
3252 #ifndef CANNOT_DUMP | |
3253 if (!initialized) | |
3254 return; | |
3255 #endif /* CANNOT_DUMP */ | |
3256 signal (SIGFPE, arith_error); | |
10605
bc37b55fcbb9
(do_symval_forwarding): Handle display-local vars.
Karl Heuer <kwzh@gnu.org>
parents:
10457
diff
changeset
|
3257 |
298 | 3258 #ifdef uts |
3259 signal (SIGEMT, arith_error); | |
3260 #endif /* uts */ | |
3261 } |