annotate src/editfns.c @ 2921:37503f466755

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