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