annotate src/editfns.c @ 4144:8f5545cf9774

* intervals.c (split_interval_left, split_interval_right): Change OFFSET argument of these functions to be origin 0, not origin 1. This is what all the callers currently want. * intervals.c, textprop.c: All callers changed. * textprop.c (Ftext_property_not_all): Renamed from Ftext_property_all, and changed sense of return value, so that it returns useful information if not all characters have properties EQ to value. Now all the existential and universal questions can be asked. * textprop.c (syms_of_textprop): Don't forget defsubr for Stext_property_all. * textprop.c (Ftext_property_any, Ftext_property_all): Use EQ to compare property values, not Fequal. * textprop.c (Ftext_property_any, Ftext_property_all): New functions, from David Gillespie. * intervals.h (Ftext_property_any, Ftext_property_all): Declare them.
author Jim Blandy <jimb@redhat.com>
date Sun, 18 Jul 1993 06:28:12 +0000
parents e950abdc9ed2
children 74004fb63311
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Lisp functions pertaining to editing.
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1989, 1993 Free Software Foundation, Inc.
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
2962
79314d830f7d * editfns.c: #include <sys/types.h>, to get time_t for Eggert's
Jim Blandy <jimb@redhat.com>
parents: 2921
diff changeset
21 #include <sys/types.h>
79314d830f7d * editfns.c: #include <sys/types.h>, to get time_t for Eggert's
Jim Blandy <jimb@redhat.com>
parents: 2921
diff changeset
22
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "config.h"
372
481e29c1e27e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
24
481e29c1e27e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
25 #ifdef VMS
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
26 #include "vms-pwd.h"
372
481e29c1e27e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
27 #else
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include <pwd.h>
372
481e29c1e27e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
29 #endif
481e29c1e27e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 330
diff changeset
30
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include "lisp.h"
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
32 #include "intervals.h"
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 #include "buffer.h"
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #include "window.h"
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
36 #include "systime.h"
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 #define min(a, b) ((a) < (b) ? (a) : (b))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 #define max(a, b) ((a) > (b) ? (a) : (b))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 /* Some static data, and a function to initialize it for each run */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 Lisp_Object Vsystem_name;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 Lisp_Object Vuser_real_name; /* login name of current user ID */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 Lisp_Object Vuser_full_name; /* full name of current user */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 Lisp_Object Vuser_name; /* user name from USER or LOGNAME. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 void
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 init_editfns ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 {
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
51 char *user_name;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 register unsigned char *p, *q, *r;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 struct passwd *pw; /* password entry for the current user */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 extern char *index ();
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 /* Set up system_name even when dumping. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 Vsystem_name = build_string (get_system_name ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 p = XSTRING (Vsystem_name)->data;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 while (*p)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 if (*p == ' ' || *p == '\t')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 *p = '-';
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 p++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 #ifndef CANNOT_DUMP
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 /* Don't bother with this on initial start when just dumping out */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 if (!initialized)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 return;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 #endif /* not CANNOT_DUMP */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 pw = (struct passwd *) getpwuid (getuid ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 Vuser_real_name = build_string (pw ? pw->pw_name : "unknown");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
77 /* Get the effective user name, by consulting environment variables,
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
78 or the effective uid if those are unset. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
79 user_name = (char *) getenv ("USER");
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
80 if (!user_name)
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
81 user_name = (char *) getenv ("LOGNAME");
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 if (!user_name)
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
83 {
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
84 pw = (struct passwd *) getpwuid (geteuid ());
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
85 user_name = (char *) (pw ? pw->pw_name : "unknown");
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
86 }
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
87 Vuser_name = build_string (user_name);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
89 /* If the user name claimed in the environment vars differs from
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
90 the real uid, use the claimed name to find the full name. */
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 tem = Fstring_equal (Vuser_name, Vuser_real_name);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
92 if (NILP (tem))
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
93 pw = (struct passwd *) getpwnam (XSTRING (Vuser_name)->data);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 p = (unsigned char *) (pw ? USER_FULL_NAME : "unknown");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 q = (unsigned char *) index (p, ',');
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 Vuser_full_name = make_string (p, q ? q - p : strlen (p));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 #ifdef AMPERSAND_FULL_NAME
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 p = XSTRING (Vuser_full_name)->data;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 q = (char *) index (p, '&');
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 /* Substitute the login name for the &, upcasing the first character. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 if (q)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 r = (char *) alloca (strlen (p) + XSTRING (Vuser_name)->size + 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 bcopy (p, r, q - p);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 r[q - p] = 0;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
108 strcat (r, XSTRING (Vuser_name)->data);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 r[q - p] = UPCASE (r[q - p]);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 strcat (r, q + 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 Vuser_full_name = build_string (r);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 #endif /* AMPERSAND_FULL_NAME */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 DEFUN ("char-to-string", Fchar_to_string, Schar_to_string, 1, 1, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 "Convert arg CHAR to a one-character string containing that character.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 (n)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 Lisp_Object n;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 char c;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 CHECK_NUMBER (n, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 c = XINT (n);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 return make_string (&c, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 DEFUN ("string-to-char", Fstring_to_char, Sstring_to_char, 1, 1, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 "Convert arg STRING to a character, the first character of that string.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 (str)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 register Lisp_Object str;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 register Lisp_Object val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 register struct Lisp_String *p;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 CHECK_STRING (str, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 p = XSTRING (str);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 if (p->size)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 XFASTINT (val) = ((unsigned char *) p->data)[0];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 XFASTINT (val) = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 return val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 static Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 buildmark (val)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 int val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 register Lisp_Object mark;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 mark = Fmake_marker ();
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 Fset_marker (mark, make_number (val), Qnil);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 return mark;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 DEFUN ("point", Fpoint, Spoint, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 "Return value of point, as an integer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 Beginning of buffer is position (point-min)")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 Lisp_Object temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 XFASTINT (temp) = point;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 DEFUN ("point-marker", Fpoint_marker, Spoint_marker, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 "Return value of point, as a marker object.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 return buildmark (point);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 int
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 clip_to_bounds (lower, num, upper)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 int lower, num, upper;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 if (num < lower)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 return lower;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 else if (num > upper)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 return upper;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 return num;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ",
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 "Set point to POSITION, a number or marker.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 Beginning of buffer is position (point-min), end is (point-max).")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (n)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 register Lisp_Object n;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 CHECK_NUMBER_COERCE_MARKER (n, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 SET_PT (clip_to_bounds (BEGV, XINT (n), ZV));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 return n;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 static Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 region_limit (beginningp)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 int beginningp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 {
4047
e950abdc9ed2 (region_limit): Declare Vmark_even_if_inactive.
Roland McGrath <roland@gnu.org>
parents: 4038
diff changeset
200 extern Lisp_Object Vmark_even_if_inactive; /* Defined in callint.c. */
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 register Lisp_Object m;
4038
03a4c3912c13 (region_limit): Don't error if Vmark_even_if_inactive is set. When the
Roland McGrath <roland@gnu.org>
parents: 4019
diff changeset
202 if (!NILP (Vtransient_mark_mode) && NILP (Vmark_even_if_inactive)
03a4c3912c13 (region_limit): Don't error if Vmark_even_if_inactive is set. When the
Roland McGrath <roland@gnu.org>
parents: 4019
diff changeset
203 && NILP (current_buffer->mark_active))
03a4c3912c13 (region_limit): Don't error if Vmark_even_if_inactive is set. When the
Roland McGrath <roland@gnu.org>
parents: 4019
diff changeset
204 Fsignal (Qmark_inactive, Qnil);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 m = Fmarker_position (current_buffer->mark);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
206 if (NILP (m)) error ("There is no region now");
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 if ((point < XFASTINT (m)) == beginningp)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 return (make_number (point));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 return (m);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 DEFUN ("region-beginning", Fregion_beginning, Sregion_beginning, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 "Return position of beginning of region, as an integer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 return (region_limit (1));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 DEFUN ("region-end", Fregion_end, Sregion_end, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 "Return position of end of region, as an integer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 return (region_limit (0));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 #if 0 /* now in lisp code */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 DEFUN ("mark", Fmark, Smark, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 "Return this buffer's mark value as integer, or nil if no mark.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 If you are using this in an editing command, you are most likely making\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 a mistake; see the documentation of `set-mark'.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 return Fmarker_position (current_buffer->mark);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 #endif /* commented out code */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 DEFUN ("mark-marker", Fmark_marker, Smark_marker, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 "Return this buffer's mark, as a marker object.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 Watch out! Moving this marker changes the mark position.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 If you set the marker not to point anywhere, the buffer will have no mark.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 return current_buffer->mark;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 #if 0 /* this is now in lisp code */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 DEFUN ("set-mark", Fset_mark, Sset_mark, 1, 1, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 "Set this buffer's mark to POS. Don't use this function!\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 That is to say, don't use this function unless you want\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 the user to see that the mark has moved, and you want the previous\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 mark position to be lost.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 Normally, when a new mark is set, the old one should go on the stack.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 This is why most applications should use push-mark, not set-mark.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 Novice programmers often try to use the mark for the wrong purposes.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 The mark saves a location for the user's convenience.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 Most editing commands should not alter the mark.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 To remember a location for internal use in the Lisp program,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 store it in a Lisp variable. Example:\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 (let ((beg (point))) (forward-line 1) (delete-region beg (point))).")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (pos)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 Lisp_Object pos;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 {
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
267 if (NILP (pos))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 current_buffer->mark = Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 CHECK_NUMBER_COERCE_MARKER (pos, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
274 if (NILP (current_buffer->mark))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 current_buffer->mark = Fmake_marker ();
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 Fset_marker (current_buffer->mark, pos, Qnil);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 return pos;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 #endif /* commented-out code */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 save_excursion_save ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 {
1254
c7e7e3438711 * editfns.c (save_excursion_save, save_excursion_restore):
Jim Blandy <jimb@redhat.com>
parents: 1117
diff changeset
285 register int visible = (XBUFFER (XWINDOW (selected_window)->buffer)
c7e7e3438711 * editfns.c (save_excursion_save, save_excursion_restore):
Jim Blandy <jimb@redhat.com>
parents: 1117
diff changeset
286 == current_buffer);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 return Fcons (Fpoint_marker (),
1254
c7e7e3438711 * editfns.c (save_excursion_save, save_excursion_restore):
Jim Blandy <jimb@redhat.com>
parents: 1117
diff changeset
289 Fcons (Fcopy_marker (current_buffer->mark),
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
290 Fcons (visible ? Qt : Qnil,
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
291 current_buffer->mark_active)));
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 save_excursion_restore (info)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 register Lisp_Object info;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 {
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
298 register Lisp_Object tem, tem1;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 tem = Fmarker_buffer (Fcar (info));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 /* If buffer being returned to is now deleted, avoid error */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 /* Otherwise could get error here while unwinding to top level
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 and crash */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 /* In that case, Fmarker_buffer returns nil now. */
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
305 if (NILP (tem))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 Fset_buffer (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 tem = Fcar (info);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 Fgoto_char (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 unchain_marker (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 tem = Fcar (Fcdr (info));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 Fset_marker (current_buffer->mark, tem, Fcurrent_buffer ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 unchain_marker (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 tem = Fcdr (Fcdr (info));
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
315 tem1 = Fcar (tem);
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
316 if (!NILP (tem1)
1254
c7e7e3438711 * editfns.c (save_excursion_save, save_excursion_restore):
Jim Blandy <jimb@redhat.com>
parents: 1117
diff changeset
317 && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 Fswitch_to_buffer (Fcurrent_buffer (), Qnil);
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
319
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
320 tem1 = current_buffer->mark_active;
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
321 current_buffer->mark_active = Fcdr (tem);
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
322 if (! NILP (current_buffer->mark_active))
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
323 call1 (Vrun_hooks, intern ("activate-mark-hook"));
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
324 else if (! NILP (tem1))
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
325 call1 (Vrun_hooks, intern ("deactivate-mark-hook"));
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 DEFUN ("save-excursion", Fsave_excursion, Ssave_excursion, 0, UNEVALLED, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 "Save point, mark, and current buffer; execute BODY; restore those things.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 Executes BODY just like `progn'.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 The values of point, mark and the current buffer are restored\n\
2049
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
333 even in case of abnormal exit (throw or error).\n\
a358c97a23e4 (save_excursion_save): Save mark_active of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1916
diff changeset
334 The state of activation of the mark is also restored.")
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (args)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 Lisp_Object args;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 register Lisp_Object val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 int count = specpdl_ptr - specpdl;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 record_unwind_protect (save_excursion_restore, save_excursion_save ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 val = Fprogn (args);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 return unbind_to (count, val);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 DEFUN ("buffer-size", Fbufsize, Sbufsize, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 "Return the number of characters in the current buffer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 Lisp_Object temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 XFASTINT (temp) = Z - BEG;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 DEFUN ("point-min", Fpoint_min, Spoint_min, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 "Return the minimum permissible value of point in the current buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 This is 1, unless a clipping restriction is in effect.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 Lisp_Object temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 XFASTINT (temp) = BEGV;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 DEFUN ("point-min-marker", Fpoint_min_marker, Spoint_min_marker, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 "Return a marker to the minimum permissible value of point in this buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 This is the beginning, unless a clipping restriction is in effect.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 return buildmark (BEGV);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 DEFUN ("point-max", Fpoint_max, Spoint_max, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 "Return the maximum permissible value of point in the current buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 This is (1+ (buffer-size)), unless a clipping restriction is in effect,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 in which case it is less.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 Lisp_Object temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 XFASTINT (temp) = ZV;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 DEFUN ("point-max-marker", Fpoint_max_marker, Spoint_max_marker, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 "Return a marker to the maximum permissible value of point in this buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 This is (1+ (buffer-size)), unless a clipping restriction is in effect,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 in which case it is less.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 return buildmark (ZV);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393
512
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
394 DEFUN ("following-char", Ffollowing_char, Sfollowing_char, 0, 0, 0,
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
395 "Return the character following point, as a number.\n\
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
396 At the end of the buffer or accessible region, return 0.")
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 Lisp_Object temp;
512
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
400 if (point >= ZV)
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
401 XFASTINT (temp) = 0;
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
402 else
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
403 XFASTINT (temp) = FETCH_CHAR (point);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406
512
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
407 DEFUN ("preceding-char", Fprevious_char, Sprevious_char, 0, 0, 0,
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
408 "Return the character preceding point, as a number.\n\
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
409 At the beginning of the buffer or accessible region, return 0.")
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 Lisp_Object temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 if (point <= BEGV)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 XFASTINT (temp) = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 XFASTINT (temp) = FETCH_CHAR (point - 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 return temp;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 DEFUN ("bobp", Fbobp, Sbobp, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 "Return T if point is at the beginning of the buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 If the buffer is narrowed, this means the beginning of the narrowed part.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 if (point == BEGV)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 return Qt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 DEFUN ("eobp", Feobp, Seobp, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 "Return T if point is at the end of the buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 If the buffer is narrowed, this means the end of the narrowed part.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 if (point == ZV)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 return Qt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 DEFUN ("bolp", Fbolp, Sbolp, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 "Return T if point is at the beginning of a line.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 if (point == BEGV || FETCH_CHAR (point - 1) == '\n')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 return Qt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 DEFUN ("eolp", Feolp, Seolp, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 "Return T if point is at the end of a line.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 `End of a line' includes point being at the end of the buffer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 if (point == ZV || FETCH_CHAR (point) == '\n')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 return Qt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 DEFUN ("char-after", Fchar_after, Schar_after, 1, 1, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 "Return character in current buffer at position POS.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 POS is an integer or a buffer pointer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 If POS is out of range, the value is nil.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 (pos)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 Lisp_Object pos;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 register Lisp_Object val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 register int n;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 CHECK_NUMBER_COERCE_MARKER (pos, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 n = XINT (pos);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 if (n < BEGV || n >= ZV) return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 XFASTINT (val) = FETCH_CHAR (n);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 return val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 DEFUN ("user-login-name", Fuser_login_name, Suser_login_name, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 "Return the name under which the user logged in, as a string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 This is based on the effective uid, not the real uid.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 Also, if the environment variable USER or LOGNAME is set,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 that determines the value of this function.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 return Vuser_name;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 DEFUN ("user-real-login-name", Fuser_real_login_name, Suser_real_login_name,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 "Return the name of the user's real uid, as a string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 Differs from `user-login-name' when running under `su'.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 return Vuser_real_name;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 DEFUN ("user-uid", Fuser_uid, Suser_uid, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 "Return the effective uid of Emacs, as an integer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 return make_number (geteuid ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 DEFUN ("user-real-uid", Fuser_real_uid, Suser_real_uid, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 "Return the real uid of Emacs, as an integer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 return make_number (getuid ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 DEFUN ("user-full-name", Fuser_full_name, Suser_full_name, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 "Return the full name of the user logged in, as a string.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 return Vuser_full_name;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 DEFUN ("system-name", Fsystem_name, Ssystem_name, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 "Return the name of the machine you are running on, as a string.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 return Vsystem_name;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524
448
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
525 DEFUN ("current-time", Fcurrent_time, Scurrent_time, 0, 0, 0,
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
526 "Return the current time, as the number of seconds since 12:00 AM January 1970.\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
527 The time is returned as a list of three integers. The first has the\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
528 most significant 16 bits of the seconds, while the second has the\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
529 least significant 16 bits. The third integer gives the microsecond\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
530 count.\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
531 \n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
532 The microsecond count is zero on systems that do not provide\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
533 resolution finer than a second.")
448
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
534 ()
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
535 {
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
536 EMACS_TIME t;
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
537 Lisp_Object result[3];
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
538
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
539 EMACS_GET_TIME (t);
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
540 XSET (result[0], Lisp_Int, (EMACS_SECS (t) >> 16) & 0xffff);
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
541 XSET (result[1], Lisp_Int, (EMACS_SECS (t) >> 0) & 0xffff);
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
542 XSET (result[2], Lisp_Int, EMACS_USECS (t));
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
543
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 512
diff changeset
544 return Flist (3, result);
448
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
545 }
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
546
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
547
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
548 static int
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
549 lisp_time_argument (specified_time, result)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
550 Lisp_Object specified_time;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
551 time_t *result;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
552 {
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
553 if (NILP (specified_time))
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
554 return time (result) != -1;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
555 else
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
556 {
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
557 Lisp_Object high, low;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
558 high = Fcar (specified_time);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
559 CHECK_NUMBER (high, 0);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
560 low = Fcdr (specified_time);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
561 if (XTYPE (low) == Lisp_Cons)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
562 low = Fcar (low);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
563 CHECK_NUMBER (low, 0);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
564 *result = (XINT (high) << 16) + (XINT (low) & 0xffff);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
565 return *result >> 16 == XINT (high);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
566 }
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
567 }
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
568
2154
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
569 DEFUN ("current-time-string", Fcurrent_time_string, Scurrent_time_string, 0, 1, 0,
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 "Return the current time, as a human-readable string.\n\
2154
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
571 Programs can use this function to decode a time,\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
572 since the number of columns in each field is fixed.\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
573 The format is `Sun Sep 16 01:03:52 1973'.\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
574 If an argument is given, it specifies a time to format\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
575 instead of the current time. The argument should have the form:\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
576 (HIGH . LOW)\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
577 or the form:\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
578 (HIGH LOW . IGNORED).\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
579 Thus, you can use times obtained from `current-time'\n\
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
580 and from `file-attributes'.")
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
581 (specified_time)
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
582 Lisp_Object specified_time;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 {
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
584 time_t value;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 char buf[30];
2154
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
586 register char *tem;
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
587
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
588 if (! lisp_time_argument (specified_time, &value))
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
589 value = -1;
2154
69c58e548ca5 (Fcurrent_time_string): Optional arg specifies time.
Richard M. Stallman <rms@gnu.org>
parents: 2049
diff changeset
590 tem = (char *) ctime (&value);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 strncpy (buf, tem, 24);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 buf[24] = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 return build_string (buf);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 }
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
597
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
598 #define TM_YEAR_ORIGIN 1900
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
599
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
600 /* Yield A - B, measured in seconds. */
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
601 static long
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
602 difftm(a, b)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
603 struct tm *a, *b;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
604 {
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
605 int ay = a->tm_year + (TM_YEAR_ORIGIN - 1);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
606 int by = b->tm_year + (TM_YEAR_ORIGIN - 1);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
607 return
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
608 (
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
609 (
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
610 (
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
611 /* difference in day of year */
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
612 a->tm_yday - b->tm_yday
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
613 /* + intervening leap days */
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
614 + ((ay >> 2) - (by >> 2))
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
615 - (ay/100 - by/100)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
616 + ((ay/100 >> 2) - (by/100 >> 2))
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
617 /* + difference in years * 365 */
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
618 + (long)(ay-by) * 365
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
619 )*24 + (a->tm_hour - b->tm_hour)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
620 )*60 + (a->tm_min - b->tm_min)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
621 )*60 + (a->tm_sec - b->tm_sec);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
622 }
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
623
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
624 DEFUN ("current-time-zone", Fcurrent_time_zone, Scurrent_time_zone, 0, 1, 0,
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
625 "Return the offset and name for the local time zone.\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
626 This returns a list of the form (OFFSET NAME).\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
627 OFFSET is an integer number of seconds ahead of UTC (east of Greenwich).\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
628 A negative value means west of Greenwich.\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
629 NAME is a string giving the name of the time zone.\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
630 If an argument is given, it specifies when the time zone offset is determined\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
631 instead of using the current time. The argument should have the form:\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
632 (HIGH . LOW)\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
633 or the form:\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
634 (HIGH LOW . IGNORED).\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
635 Thus, you can use times obtained from `current-time'\n\
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
636 and from `file-attributes'.\n\
2462
4a7e1c2a2a9e * editfns.c (Fcurrent_time_zone): Return a list whose elements are
Jim Blandy <jimb@redhat.com>
parents: 2384
diff changeset
637 \n\
4a7e1c2a2a9e * editfns.c (Fcurrent_time_zone): Return a list whose elements are
Jim Blandy <jimb@redhat.com>
parents: 2384
diff changeset
638 Some operating systems cannot provide all this information to Emacs;\n\
2976
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
639 in this case, `current-time-zone' returns a list containing nil for\n\
2462
4a7e1c2a2a9e * editfns.c (Fcurrent_time_zone): Return a list whose elements are
Jim Blandy <jimb@redhat.com>
parents: 2384
diff changeset
640 the data it can't find.")
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
641 (specified_time)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
642 Lisp_Object specified_time;
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
643 {
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
644 time_t value;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
645 struct tm *t;
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
646
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
647 if (lisp_time_argument (specified_time, &value)
2976
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
648 && (t = gmtime (&value)) != 0)
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
649 {
2976
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
650 struct tm gmt;
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
651 long offset;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
652 char *s, buf[6];
2976
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
653
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
654 gmt = *t; /* Make a copy, in case localtime modifies *t. */
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
655 t = localtime (&value);
6fe71a039fce (Fcurrent_time_zone): Assign gmt, instead of init.
Richard M. Stallman <rms@gnu.org>
parents: 2962
diff changeset
656 offset = difftm (t, &gmt);
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
657 s = 0;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
658 #ifdef HAVE_TM_ZONE
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
659 if (t->tm_zone)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
660 s = t->tm_zone;
3522
dc9f7a107e28 (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE.
Richard M. Stallman <rms@gnu.org>
parents: 2994
diff changeset
661 #else /* not HAVE_TM_ZONE */
dc9f7a107e28 (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE.
Richard M. Stallman <rms@gnu.org>
parents: 2994
diff changeset
662 #ifdef HAVE_TZNAME
dc9f7a107e28 (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE.
Richard M. Stallman <rms@gnu.org>
parents: 2994
diff changeset
663 if (t->tm_isdst == 0 || t->tm_isdst == 1)
dc9f7a107e28 (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE.
Richard M. Stallman <rms@gnu.org>
parents: 2994
diff changeset
664 s = tzname[t->tm_isdst];
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
665 #endif
3522
dc9f7a107e28 (Fcurrent_time_zone): Add alternative for !HAVE_TM_ZONE.
Richard M. Stallman <rms@gnu.org>
parents: 2994
diff changeset
666 #endif /* not HAVE_TM_ZONE */
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
667 if (!s)
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
668 {
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
669 /* No local time zone name is available; use "+-NNNN" instead. */
2994
b087b4fd6066 (Fcurrent_time_zone): Make `am' an int, not long.
Richard M. Stallman <rms@gnu.org>
parents: 2976
diff changeset
670 int am = (offset < 0 ? -offset : offset) / 60;
2921
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
671 sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
672 s = buf;
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
673 }
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
674 return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
675 }
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
676 else
37503f466755 Some time-handling patches from Paul Eggert:
Jim Blandy <jimb@redhat.com>
parents: 2783
diff changeset
677 return Fmake_list (2, Qnil);
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
678 }
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
679
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 void
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 insert1 (arg)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 Lisp_Object arg;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 Finsert (1, &arg);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
688
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
689 /* Callers passing one argument to Finsert need not gcpro the
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
690 argument "array", since the only element of the array will
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
691 not be used after calling insert or insert_from_string, so
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
692 we don't care if it gets trashed. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
693
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 DEFUN ("insert", Finsert, Sinsert, 0, MANY, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 "Insert the arguments, either strings or characters, at point.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 Point moves forward so that it ends up after the inserted text.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 Any other markers at the point of insertion remain before the text.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 (nargs, args)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 int nargs;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 register Lisp_Object *args;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 register int argnum;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 register Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 char str[1];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 for (argnum = 0; argnum < nargs; argnum++)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 tem = args[argnum];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 retry:
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 if (XTYPE (tem) == Lisp_Int)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 str[0] = XINT (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 insert (str, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 else if (XTYPE (tem) == Lisp_String)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 insert_from_string (tem, 0, XSTRING (tem)->size);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 tem = wrong_type_argument (Qchar_or_string_p, tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 goto retry;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 DEFUN ("insert-before-markers", Finsert_before_markers, Sinsert_before_markers, 0, MANY, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 "Insert strings or characters at point, relocating markers after the text.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 Point moves forward so that it ends up after the inserted text.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 Any other markers at the point of insertion also end up after the text.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 (nargs, args)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 int nargs;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 register Lisp_Object *args;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 register int argnum;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 register Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 char str[1];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 for (argnum = 0; argnum < nargs; argnum++)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 tem = args[argnum];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 retry:
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 if (XTYPE (tem) == Lisp_Int)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 str[0] = XINT (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 insert_before_markers (str, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 else if (XTYPE (tem) == Lisp_String)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 insert_from_string_before_markers (tem, 0, XSTRING (tem)->size);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 tem = wrong_type_argument (Qchar_or_string_p, tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 goto retry;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 DEFUN ("insert-char", Finsert_char, Sinsert_char, 2, 2, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 "Insert COUNT (second arg) copies of CHAR (first arg).\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 Point and all markers are affected as in the function `insert'.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 Both arguments are required.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 (chr, count)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 Lisp_Object chr, count;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 register unsigned char *string;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 register int strlen;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 register int i, n;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 CHECK_NUMBER (chr, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 CHECK_NUMBER (count, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 n = XINT (count);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 if (n <= 0)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 strlen = min (n, 256);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 string = (unsigned char *) alloca (strlen);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 for (i = 0; i < strlen; i++)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 string[i] = XFASTINT (chr);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 while (n >= strlen)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 insert (string, strlen);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 n -= strlen;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 if (n > 0)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 insert (string, n);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
796 /* Making strings from buffer contents. */
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
797
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
798 /* Return a Lisp_String containing the text of the current buffer from
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
799 START to END. If text properties are in use and the current buffer
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3522
diff changeset
800 has properties in the range specified, the resulting string will also
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
801 have them.
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
802
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
803 We don't want to use plain old make_string here, because it calls
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
804 make_uninit_string, which can cause the buffer arena to be
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
805 compacted. make_string has no way of knowing that the data has
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
806 been moved, and thus copies the wrong data into the string. This
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
807 doesn't effect most of the other users of make_string, so it should
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
808 be left as is. But we should use this function when conjuring
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
809 buffer substrings. */
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
810
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
811 Lisp_Object
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
812 make_buffer_string (start, end)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
813 int start, end;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
814 {
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
815 Lisp_Object result;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
816
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
817 if (start < GPT && GPT < end)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
818 move_gap (start);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
819
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
820 result = make_uninit_string (end - start);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
821 bcopy (&FETCH_CHAR (start), XSTRING (result)->data, end - start);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
822
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
823 /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
824 copy_intervals_to_string (result, current_buffer, start, end - start);
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
825
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
826 return result;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
827 }
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 DEFUN ("buffer-substring", Fbuffer_substring, Sbuffer_substring, 2, 2, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 "Return the contents of part of the current buffer as a string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 The two arguments START and END are character positions;\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 they can be in either order.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 (b, e)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 Lisp_Object b, e;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 register int beg, end;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 validate_region (&b, &e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 beg = XINT (b);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 end = XINT (e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
842 return make_buffer_string (beg, end);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 DEFUN ("buffer-string", Fbuffer_string, Sbuffer_string, 0, 0, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 "Return the contents of the current buffer as a string.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
849 return make_buffer_string (BEGV, ZV);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 DEFUN ("insert-buffer-substring", Finsert_buffer_substring, Sinsert_buffer_substring,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 1, 3, 0,
3776
301e2dca5fd7 (Finsert_buffer_substring): Doc fix.
Roland McGrath <roland@gnu.org>
parents: 3591
diff changeset
854 "Insert before point a substring of the contents of buffer BUFFER.\n\
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 BUFFER may be a buffer or a buffer name.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 Arguments START and END are character numbers specifying the substring.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 They default to the beginning and the end of BUFFER.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 (buf, b, e)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 Lisp_Object buf, b, e;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 {
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
861 register int beg, end, temp, len, opoint, start;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 register struct buffer *bp;
1854
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
863 Lisp_Object buffer;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864
1854
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
865 buffer = Fget_buffer (buf);
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
866 if (NILP (buffer))
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
867 nsberror (buf);
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
868 bp = XBUFFER (buffer);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
870 if (NILP (b))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 beg = BUF_BEGV (bp);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
874 CHECK_NUMBER_COERCE_MARKER (b, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 beg = XINT (b);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 }
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
877 if (NILP (e))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 end = BUF_ZV (bp);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881 CHECK_NUMBER_COERCE_MARKER (e, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 end = XINT (e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 if (beg > end)
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
886 temp = beg, beg = end, end = temp;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 /* Move the gap or create enough gap in the current buffer. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 if (point != GPT)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 move_gap (point);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 if (GAP_SIZE < end - beg)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 make_gap (end - beg - GAP_SIZE);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
895 len = end - beg;
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
896 start = beg;
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
897 opoint = point;
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
898
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 if (!(BUF_BEGV (bp) <= beg
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 && beg <= end
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 && end <= BUF_ZV (bp)))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 args_out_of_range (b, e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 /* Now the actual insertion will not do any gap motion,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 so it matters not if BUF is the current buffer. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 if (beg < BUF_GPT (bp))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 insert (BUF_CHAR_ADDRESS (bp, beg), min (end, BUF_GPT (bp)) - beg);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 beg = min (end, BUF_GPT (bp));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 if (beg < end)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 insert (BUF_CHAR_ADDRESS (bp, beg), end - beg);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913
1285
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
914 /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
915 graft_intervals_into_buffer (copy_intervals (bp->intervals, start, len),
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
916 opoint, bp);
d50533e23dff * editfns.c (make_buffer_string): Call copy_intervals_to_string().
Joseph Arceneaux <jla@gnu.org>
parents: 1254
diff changeset
917
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 }
1853
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
920
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
921 DEFUN ("compare-buffer-substrings", Fcompare_buffer_substrings, Scompare_buffer_substrings,
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
922 6, 6, 0,
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
923 "Compare two substrings of two buffers; return result as number.\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
924 the value is -N if first string is less after N-1 chars,\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
925 +N if first string is greater after N-1 chars, or 0 if strings match.\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
926 Each substring is represented as three arguments: BUFFER, START and END.\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
927 That makes six args in all, three for each substring.\n\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
928 The value of `case-fold-search' in the current buffer\n\
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
929 determines whether case is significant or ignored.")
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
930 (buffer1, start1, end1, buffer2, start2, end2)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
931 Lisp_Object buffer1, start1, end1, buffer2, start2, end2;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
932 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
933 register int begp1, endp1, begp2, endp2, temp, len1, len2, length, i;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
934 register struct buffer *bp1, *bp2;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
935 register unsigned char *trt
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
936 = (!NILP (current_buffer->case_fold_search)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
937 ? XSTRING (current_buffer->case_canon_table)->data : 0);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
938
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
939 /* Find the first buffer and its substring. */
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
940
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
941 if (NILP (buffer1))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
942 bp1 = current_buffer;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
943 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
944 {
1854
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
945 Lisp_Object buf1;
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
946 buf1 = Fget_buffer (buffer1);
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
947 if (NILP (buf1))
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
948 nsberror (buffer1);
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
949 bp1 = XBUFFER (buf1);
1853
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
950 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
951
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
952 if (NILP (start1))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
953 begp1 = BUF_BEGV (bp1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
954 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
955 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
956 CHECK_NUMBER_COERCE_MARKER (start1, 1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
957 begp1 = XINT (start1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
958 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
959 if (NILP (end1))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
960 endp1 = BUF_ZV (bp1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
961 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
962 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
963 CHECK_NUMBER_COERCE_MARKER (end1, 2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
964 endp1 = XINT (end1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
965 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
966
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
967 if (begp1 > endp1)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
968 temp = begp1, begp1 = endp1, endp1 = temp;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
969
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
970 if (!(BUF_BEGV (bp1) <= begp1
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
971 && begp1 <= endp1
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
972 && endp1 <= BUF_ZV (bp1)))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
973 args_out_of_range (start1, end1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
974
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
975 /* Likewise for second substring. */
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
976
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
977 if (NILP (buffer2))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
978 bp2 = current_buffer;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
979 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
980 {
1854
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
981 Lisp_Object buf2;
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
982 buf2 = Fget_buffer (buffer2);
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
983 if (NILP (buf2))
5a18c36181fa (Finsert_buffer_substring): Proper error for non-ex buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1853
diff changeset
984 nsberror (buffer2);
1853
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
985 bp2 = XBUFFER (buffer2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
986 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
987
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
988 if (NILP (start2))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
989 begp2 = BUF_BEGV (bp2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
990 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
991 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
992 CHECK_NUMBER_COERCE_MARKER (start2, 4);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
993 begp2 = XINT (start2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
994 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
995 if (NILP (end2))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
996 endp2 = BUF_ZV (bp2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
997 else
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
998 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
999 CHECK_NUMBER_COERCE_MARKER (end2, 5);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1000 endp2 = XINT (end2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1001 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1002
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1003 if (begp2 > endp2)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1004 temp = begp2, begp2 = endp2, endp2 = temp;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1005
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1006 if (!(BUF_BEGV (bp2) <= begp2
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1007 && begp2 <= endp2
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1008 && endp2 <= BUF_ZV (bp2)))
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1009 args_out_of_range (start2, end2);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1010
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1011 len1 = endp1 - begp1;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1012 len2 = endp2 - begp2;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1013 length = len1;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1014 if (len2 < length)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1015 length = len2;
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1016
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1017 for (i = 0; i < length; i++)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1018 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1019 int c1 = *BUF_CHAR_ADDRESS (bp1, begp1 + i);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1020 int c2 = *BUF_CHAR_ADDRESS (bp2, begp2 + i);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1021 if (trt)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1022 {
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1023 c1 = trt[c1];
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1024 c2 = trt[c2];
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1025 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1026 if (c1 < c2)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1027 return make_number (- 1 - i);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1028 if (c1 > c2)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1029 return make_number (i + 1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1030 }
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1031
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1032 /* The strings match as far as they go.
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1033 If one is shorter, that one is less. */
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1034 if (length < len1)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1035 return make_number (length + 1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1036 else if (length < len2)
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1037 return make_number (- length - 1);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1038
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1039 /* Same length too => they are equal. */
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1040 return make_number (0);
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1041 }
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 DEFUN ("subst-char-in-region", Fsubst_char_in_region,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 Ssubst_char_in_region, 4, 5, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 "From START to END, replace FROMCHAR with TOCHAR each time it occurs.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 If optional arg NOUNDO is non-nil, don't record this change for undo\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 and don't mark the buffer as really changed.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 (start, end, fromchar, tochar, noundo)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 Lisp_Object start, end, fromchar, tochar, noundo;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 register int pos, stop, look;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 validate_region (&start, &end);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 CHECK_NUMBER (fromchar, 2);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 CHECK_NUMBER (tochar, 3);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1057 pos = XINT (start);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058 stop = XINT (end);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 look = XINT (fromchar);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060
2783
789c11177579 The text property routines can now modify buffers other
Jim Blandy <jimb@redhat.com>
parents: 2462
diff changeset
1061 modify_region (current_buffer, pos, stop);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
1062 if (! NILP (noundo))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064 if (MODIFF - 1 == current_buffer->save_modified)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065 current_buffer->save_modified++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 if (MODIFF - 1 == current_buffer->auto_save_modified)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067 current_buffer->auto_save_modified++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1070 while (pos < stop)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 if (FETCH_CHAR (pos) == look)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 {
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
1074 if (NILP (noundo))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1075 record_change (pos, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 FETCH_CHAR (pos) = XINT (tochar);
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
1077 if (NILP (noundo))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 signal_after_change (pos, 1, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 pos++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 DEFUN ("translate-region", Ftranslate_region, Stranslate_region, 3, 3, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1087 "From START to END, translate characters according to TABLE.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088 TABLE is a string; the Nth character in it is the mapping\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089 for the character with code N. Returns the number of characters changed.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1090 (start, end, table)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 Lisp_Object start;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1092 Lisp_Object end;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1093 register Lisp_Object table;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1094 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1095 register int pos, stop; /* Limits of the region. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1096 register unsigned char *tt; /* Trans table. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1097 register int oc; /* Old character. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1098 register int nc; /* New character. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1099 int cnt; /* Number of changes made. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1100 Lisp_Object z; /* Return. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1101 int size; /* Size of translate table. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1102
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1103 validate_region (&start, &end);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 CHECK_STRING (table, 2);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106 size = XSTRING (table)->size;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1107 tt = XSTRING (table)->data;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 pos = XINT (start);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 stop = XINT (end);
2783
789c11177579 The text property routines can now modify buffers other
Jim Blandy <jimb@redhat.com>
parents: 2462
diff changeset
1111 modify_region (current_buffer, pos, stop);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 cnt = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 for (; pos < stop; ++pos)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 oc = FETCH_CHAR (pos);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 if (oc < size)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1118 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 nc = tt[oc];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120 if (nc != oc)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122 record_change (pos, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 FETCH_CHAR (pos) = nc;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 signal_after_change (pos, 1, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 ++cnt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1127 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130 XFASTINT (z) = cnt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1131 return (z);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 DEFUN ("delete-region", Fdelete_region, Sdelete_region, 2, 2, "r",
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 "Delete the text between point and mark.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 When called from a program, expects two arguments,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 positions (integers or markers) specifying the stretch to be deleted.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 (b, e)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 Lisp_Object b, e;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141 validate_region (&b, &e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142 del_range (XINT (b), XINT (e));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 DEFUN ("widen", Fwiden, Swiden, 0, 0, "",
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 "Remove restrictions (narrowing) from current buffer.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 This allows the buffer's full text to be seen and edited.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149 ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 BEGV = BEG;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 SET_BUF_ZV (current_buffer, Z);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 clip_changed = 1;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1154 /* Changing the buffer bounds invalidates any recorded current column. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1155 invalidate_current_column ();
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 DEFUN ("narrow-to-region", Fnarrow_to_region, Snarrow_to_region, 2, 2, "r",
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160 "Restrict editing in this buffer to the current region.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161 The rest of the text becomes temporarily invisible and untouchable\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 but is not deleted; if you save the buffer in a file, the invisible\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163 text is included in the file. \\[widen] makes all visible again.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1164 See also `save-restriction'.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 When calling from a program, pass two arguments; positions (integers\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167 or markers) bounding the text that should remain visible.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 (b, e)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 register Lisp_Object b, e;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171 register int i;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 CHECK_NUMBER_COERCE_MARKER (b, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 CHECK_NUMBER_COERCE_MARKER (e, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 if (XINT (b) > XINT (e))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 i = XFASTINT (b);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 b = e;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180 XFASTINT (e) = i;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1181 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 if (!(BEG <= XINT (b) && XINT (b) <= XINT (e) && XINT (e) <= Z))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 args_out_of_range (b, e);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 BEGV = XFASTINT (b);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187 SET_BUF_ZV (current_buffer, XFASTINT (e));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 if (point < XFASTINT (b))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 SET_PT (XFASTINT (b));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 if (point > XFASTINT (e))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 SET_PT (XFASTINT (e));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 clip_changed = 1;
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1193 /* Changing the buffer bounds invalidates any recorded current column. */
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1194 invalidate_current_column ();
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198 Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 save_restriction_save ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 register Lisp_Object bottom, top;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 /* Note: I tried using markers here, but it does not win
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 because insertion at the end of the saved region
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 does not advance mh and is considered "outside" the saved region. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 XFASTINT (bottom) = BEGV - BEG;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 XFASTINT (top) = Z - ZV;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 return Fcons (Fcurrent_buffer (), Fcons (bottom, top));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212 save_restriction_restore (data)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 Lisp_Object data;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 register struct buffer *buf;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216 register int newhead, newtail;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 register Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219 buf = XBUFFER (XCONS (data)->car);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 data = XCONS (data)->cdr;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 tem = XCONS (data)->car;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224 newhead = XINT (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225 tem = XCONS (data)->cdr;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 newtail = XINT (tem);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1227 if (newhead + newtail > BUF_Z (buf) - BUF_BEG (buf))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 newhead = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1230 newtail = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232 BUF_BEGV (buf) = BUF_BEG (buf) + newhead;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1233 SET_BUF_ZV (buf, BUF_Z (buf) - newtail);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1234 clip_changed = 1;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1235
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1236 /* If point is outside the new visible range, move it inside. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 SET_BUF_PT (buf,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 clip_to_bounds (BUF_BEGV (buf), BUF_PT (buf), BUF_ZV (buf)));
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 DEFUN ("save-restriction", Fsave_restriction, Ssave_restriction, 0, UNEVALLED, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 "Execute BODY, saving and restoring current buffer's restrictions.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245 The buffer's restrictions make parts of the beginning and end invisible.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246 \(They are set up with `narrow-to-region' and eliminated with `widen'.)\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247 This special form, `save-restriction', saves the current buffer's restrictions\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248 when it is entered, and restores them when it is exited.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1249 So any `narrow-to-region' within BODY lasts only until the end of the form.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1250 The old restrictions settings are restored\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1251 even in case of abnormal exit (throw or error).\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1253 The value returned is the value of the last form in BODY.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1255 `save-restriction' can get confused if, within the BODY, you widen\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1256 and then make changes outside the area within the saved restrictions.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1257 \n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 Note: if you are using both `save-excursion' and `save-restriction',\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1259 use `save-excursion' outermost:\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260 (save-excursion (save-restriction ...))")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261 (body)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262 Lisp_Object body;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264 register Lisp_Object val;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 int count = specpdl_ptr - specpdl;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 record_unwind_protect (save_restriction_restore, save_restriction_save ());
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268 val = Fprogn (body);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269 return unbind_to (count, val);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 DEFUN ("message", Fmessage, Smessage, 1, MANY, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273 "Print a one-line message at the bottom of the screen.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 The first argument is a control string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 It may contain %s or %d or %c to print successive following arguments.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 %s means print an argument as a string, %d means print as number in decimal,\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 %c means print a number as a single character.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 The argument used by %s must be a string or a symbol;\n\
1426
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1279 the argument used by %d or %c must be a number.\n\
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1280 If the first argument is nil, clear any existing message; let the\n\
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1281 minibuffer contents show.")
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 (nargs, args)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 int nargs;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 Lisp_Object *args;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 {
1426
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1286 if (NILP (args[0]))
1916
e21c1f3e37cb * editfns.c (Fmessage): Don't forget to return a value when
Jim Blandy <jimb@redhat.com>
parents: 1854
diff changeset
1287 {
e21c1f3e37cb * editfns.c (Fmessage): Don't forget to return a value when
Jim Blandy <jimb@redhat.com>
parents: 1854
diff changeset
1288 message (0);
e21c1f3e37cb * editfns.c (Fmessage): Don't forget to return a value when
Jim Blandy <jimb@redhat.com>
parents: 1854
diff changeset
1289 return Qnil;
e21c1f3e37cb * editfns.c (Fmessage): Don't forget to return a value when
Jim Blandy <jimb@redhat.com>
parents: 1854
diff changeset
1290 }
1426
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1291 else
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1292 {
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1293 register Lisp_Object val;
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1294 val = Fformat (nargs, args);
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1295 message ("%s", XSTRING (val)->data);
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1296 return val;
67fd35416ba3 * * editfns.c (Fmessage): With no arguments, clear any active
Jim Blandy <jimb@redhat.com>
parents: 1285
diff changeset
1297 }
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 DEFUN ("format", Fformat, Sformat, 1, MANY, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 "Format a string out of a control-string and arguments.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1302 The first argument is a control string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1303 The other arguments are substituted into it to make the result, a string.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 It may contain %-sequences meaning to substitute the next argument.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 %s means print a string argument. Actually, prints any object, with `princ'.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 %d means print as number in decimal (%o octal, %x hex).\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 %c means print a number as a single character.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 %S means print any object as an s-expression (using prin1).\n\
330
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1309 The argument used for %d, %o, %x or %c must be a number.\n\
9b1e9b496441 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 305
diff changeset
1310 Use %% to put a single % into the output.")
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1311 (nargs, args)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 int nargs;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 register Lisp_Object *args;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 register int n; /* The number of the next arg to substitute */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316 register int total = 5; /* An estimate of the final length */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 char *buf;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 register unsigned char *format, *end;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 int length;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 extern char *index ();
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 /* It should not be necessary to GCPRO ARGS, because
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 the caller in the interpreter should take care of that. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 CHECK_STRING (args[0], 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 format = XSTRING (args[0])->data;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 end = format + XSTRING (args[0])->size;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 n = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 while (format != end)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 if (*format++ == '%')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 int minlen;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 /* Process a numeric arg and skip it. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 minlen = atoi (format);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 if (minlen > 0)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 total += minlen;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 total -= minlen;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 while ((*format >= '0' && *format <= '9')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 || *format == '-' || *format == ' ' || *format == '.')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 format++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 if (*format == '%')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 format++;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 else if (++n >= nargs)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 ;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 else if (*format == 'S')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 /* For `S', prin1 the argument and then treat like a string. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 register Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 tem = Fprin1_to_string (args[n], Qnil);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 args[n] = tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 goto string;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 else if (XTYPE (args[n]) == Lisp_Symbol)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 XSET (args[n], Lisp_String, XSYMBOL (args[n])->name);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 goto string;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 else if (XTYPE (args[n]) == Lisp_String)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363 string:
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1364 total += XSTRING (args[n])->size;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1365 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 /* Would get MPV otherwise, since Lisp_Int's `point' to low memory. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 else if (XTYPE (args[n]) == Lisp_Int && *format != 's')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 {
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1369 #ifdef LISP_FLOAT_TYPE
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3522
diff changeset
1370 /* The following loop assumes the Lisp type indicates
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 the proper way to pass the argument.
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 So make sure we have a flonum if the argument should
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 be a double. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374 if (*format == 'e' || *format == 'f' || *format == 'g')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375 args[n] = Ffloat (args[n]);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1376 #endif
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1377 total += 10;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1378 }
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1379 #ifdef LISP_FLOAT_TYPE
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1380 else if (XTYPE (args[n]) == Lisp_Float && *format != 's')
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1381 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1382 if (! (*format == 'e' || *format == 'f' || *format == 'g'))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1383 args[n] = Ftruncate (args[n]);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1384 total += 20;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1385 }
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1386 #endif
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1387 else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1388 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1389 /* Anything but a string, convert to a string using princ. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1390 register Lisp_Object tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 tem = Fprin1_to_string (args[n], Qt);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 args[n] = tem;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393 goto string;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1395 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398 register int nstrings = n + 1;
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1399
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1400 /* Allocate twice as many strings as we have %-escapes; floats occupy
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1401 two slots, and we're not sure how many of those we have. */
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402 register unsigned char **strings
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1403 = (unsigned char **) alloca (2 * nstrings * sizeof (unsigned char *));
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1404 int i;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1406 i = 0;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 for (n = 0; n < nstrings; n++)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409 if (n >= nargs)
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1410 strings[i++] = (unsigned char *) "";
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1411 else if (XTYPE (args[n]) == Lisp_Int)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1412 /* We checked above that the corresponding format effector
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413 isn't %s, which would cause MPV. */
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1414 strings[i++] = (unsigned char *) XINT (args[n]);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1415 #ifdef LISP_FLOAT_TYPE
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1416 else if (XTYPE (args[n]) == Lisp_Float)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1417 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1418 union { double d; int half[2]; } u;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1420 u.d = XFLOAT (args[n])->data;
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1421 strings[i++] = (unsigned char *) u.half[0];
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1422 strings[i++] = (unsigned char *) u.half[1];
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 }
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
1424 #endif
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 else
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1426 strings[i++] = XSTRING (args[n])->data;
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1427 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1428
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1429 /* Format it in bigger and bigger buf's until it all fits. */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1430 while (1)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1431 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 buf = (char *) alloca (total + 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 buf[total - 1] = 0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1434
4019
0463aae99f4e * editfns.c (Fformat): Since floats occupy two elements in the
Jim Blandy <jimb@redhat.com>
parents: 3776
diff changeset
1435 length = doprnt (buf, total + 1, strings[0], end, i-1, strings + 1);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1436 if (buf[total - 1] == 0)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1437 break;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1438
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1439 total *= 2;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1440 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1441 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1442
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443 /* UNGCPRO; */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1444 return make_string (buf, length);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1445 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1446
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1447 /* VARARGS 1 */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1448 Lisp_Object
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1449 #ifdef NO_ARG_ARRAY
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1450 format1 (string1, arg0, arg1, arg2, arg3, arg4)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1451 int arg0, arg1, arg2, arg3, arg4;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1452 #else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1453 format1 (string1)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1454 #endif
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1455 char *string1;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1456 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1457 char buf[100];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1458 #ifdef NO_ARG_ARRAY
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1459 int args[5];
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1460 args[0] = arg0;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1461 args[1] = arg1;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1462 args[2] = arg2;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1463 args[3] = arg3;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1464 args[4] = arg4;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1465 doprnt (buf, sizeof buf, string1, 0, 5, args);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1466 #else
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1467 doprnt (buf, sizeof buf, string1, 0, 5, &string1 + 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1468 #endif
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1469 return build_string (buf);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1470 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1471
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1472 DEFUN ("char-equal", Fchar_equal, Schar_equal, 2, 2, 0,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1473 "Return t if two characters match, optionally ignoring case.\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1474 Both arguments must be characters (i.e. integers).\n\
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1475 Case is ignored if `case-fold-search' is non-nil in the current buffer.")
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1476 (c1, c2)
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1477 register Lisp_Object c1, c2;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1478 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1479 unsigned char *downcase = DOWNCASE_TABLE;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1480 CHECK_NUMBER (c1, 0);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1481 CHECK_NUMBER (c2, 1);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1482
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 448
diff changeset
1483 if (!NILP (current_buffer->case_fold_search)
2384
5ab51b7300e4 (Fchar_equal): Don't ignore high bits of character.
Richard M. Stallman <rms@gnu.org>
parents: 2154
diff changeset
1484 ? (downcase[0xff & XFASTINT (c1)] == downcase[0xff & XFASTINT (c2)]
5ab51b7300e4 (Fchar_equal): Don't ignore high bits of character.
Richard M. Stallman <rms@gnu.org>
parents: 2154
diff changeset
1485 && (XFASTINT (c1) & ~0xff) == (XFASTINT (c2) & ~0xff))
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1486 : XINT (c1) == XINT (c2))
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1487 return Qt;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1488 return Qnil;
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1489 }
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1490
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1491
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1492 void
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1493 syms_of_editfns ()
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1494 {
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1495 DEFVAR_LISP ("system-name", &Vsystem_name,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1496 "The name of the machine Emacs is running on.");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1497
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1498 DEFVAR_LISP ("user-full-name", &Vuser_full_name,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1499 "The full name of the user logged in.");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 DEFVAR_LISP ("user-name", &Vuser_name,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 "The user's name, based on the effective uid.");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1504 DEFVAR_LISP ("user-real-name", &Vuser_real_name,
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1505 "The user's name, base upon the real uid.");
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1506
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507 defsubr (&Schar_equal);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1508 defsubr (&Sgoto_char);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1509 defsubr (&Sstring_to_char);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1510 defsubr (&Schar_to_string);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1511 defsubr (&Sbuffer_substring);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512 defsubr (&Sbuffer_string);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1514 defsubr (&Spoint_marker);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 defsubr (&Smark_marker);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516 defsubr (&Spoint);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1517 defsubr (&Sregion_beginning);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1518 defsubr (&Sregion_end);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1519 /* defsubr (&Smark); */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1520 /* defsubr (&Sset_mark); */
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521 defsubr (&Ssave_excursion);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1522
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1523 defsubr (&Sbufsize);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1524 defsubr (&Spoint_max);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1525 defsubr (&Spoint_min);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526 defsubr (&Spoint_min_marker);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527 defsubr (&Spoint_max_marker);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1528
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1529 defsubr (&Sbobp);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1530 defsubr (&Seobp);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1531 defsubr (&Sbolp);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1532 defsubr (&Seolp);
512
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
1533 defsubr (&Sfollowing_char);
b7a1e4e4e7e6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
1534 defsubr (&Sprevious_char);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535 defsubr (&Schar_after);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1536 defsubr (&Sinsert);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1537 defsubr (&Sinsert_before_markers);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538 defsubr (&Sinsert_char);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1539
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1540 defsubr (&Suser_login_name);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1541 defsubr (&Suser_real_login_name);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 defsubr (&Suser_uid);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1543 defsubr (&Suser_real_uid);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1544 defsubr (&Suser_full_name);
448
129e6320092c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 372
diff changeset
1545 defsubr (&Scurrent_time);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1546 defsubr (&Scurrent_time_string);
962
3533821d6edc * editfns.c (Fcurrent_time_zone): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 690
diff changeset
1547 defsubr (&Scurrent_time_zone);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1548 defsubr (&Ssystem_name);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1549 defsubr (&Smessage);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1550 defsubr (&Sformat);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1551
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1552 defsubr (&Sinsert_buffer_substring);
1853
8866e36c0ed5 (Fcompare_buffer_substrings): New function.
Richard M. Stallman <rms@gnu.org>
parents: 1748
diff changeset
1553 defsubr (&Scompare_buffer_substrings);
305
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1554 defsubr (&Ssubst_char_in_region);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555 defsubr (&Stranslate_region);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 defsubr (&Sdelete_region);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557 defsubr (&Swiden);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558 defsubr (&Snarrow_to_region);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1559 defsubr (&Ssave_restriction);
75f54c84f733 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560 }