Mercurial > emacs
comparison src/editfns.c @ 14071:59906ecd9b92
(Fchar_to_string, Fstring_to_char, Fgoto_char, Fencode_time, Finsert_char,
Fbuffer_substring, Fbuffer_substring_no_properties,
Finsert_buffer_substring, Fdelete_region, Fnarrow_to_region): Harmonize
arguments with documentation. (Fformat_time_string): Allow TIME to default
to current time.
author | Erik Naggum <erik@naggum.no> |
---|---|
date | Tue, 09 Jan 1996 00:31:34 +0000 |
parents | 2a71500dfb93 |
children | edc94b82c3b3 |
comparison
equal
deleted
inserted
replaced
14070:c74bb6ea72ab | 14071:59906ecd9b92 |
---|---|
131 if (p) | 131 if (p) |
132 Vuser_full_name = build_string (p); | 132 Vuser_full_name = build_string (p); |
133 } | 133 } |
134 | 134 |
135 DEFUN ("char-to-string", Fchar_to_string, Schar_to_string, 1, 1, 0, | 135 DEFUN ("char-to-string", Fchar_to_string, Schar_to_string, 1, 1, 0, |
136 "Convert arg CHAR to a one-character string containing that character.") | 136 "Convert arg CHARACTER to a one-character string containing that character.") |
137 (n) | 137 (character) |
138 Lisp_Object n; | 138 Lisp_Object character; |
139 { | 139 { |
140 char c; | 140 char c; |
141 CHECK_NUMBER (n, 0); | 141 CHECK_NUMBER (character, 0); |
142 | 142 |
143 c = XINT (n); | 143 c = XINT (character); |
144 return make_string (&c, 1); | 144 return make_string (&c, 1); |
145 } | 145 } |
146 | 146 |
147 DEFUN ("string-to-char", Fstring_to_char, Sstring_to_char, 1, 1, 0, | 147 DEFUN ("string-to-char", Fstring_to_char, Sstring_to_char, 1, 1, 0, |
148 "Convert arg STRING to a character, the first character of that string.") | 148 "Convert arg STRING to a character, the first character of that string.") |
149 (str) | 149 (string) |
150 register Lisp_Object str; | 150 register Lisp_Object string; |
151 { | 151 { |
152 register Lisp_Object val; | 152 register Lisp_Object val; |
153 register struct Lisp_String *p; | 153 register struct Lisp_String *p; |
154 CHECK_STRING (str, 0); | 154 CHECK_STRING (string, 0); |
155 | 155 |
156 p = XSTRING (str); | 156 p = XSTRING (string); |
157 if (p->size) | 157 if (p->size) |
158 XSETFASTINT (val, ((unsigned char *) p->data)[0]); | 158 XSETFASTINT (val, ((unsigned char *) p->data)[0]); |
159 else | 159 else |
160 XSETFASTINT (val, 0); | 160 XSETFASTINT (val, 0); |
161 return val; | 161 return val; |
201 } | 201 } |
202 | 202 |
203 DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", | 203 DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", |
204 "Set point to POSITION, a number or marker.\n\ | 204 "Set point to POSITION, a number or marker.\n\ |
205 Beginning of buffer is position (point-min), end is (point-max).") | 205 Beginning of buffer is position (point-min), end is (point-max).") |
206 (n) | 206 (position) |
207 register Lisp_Object n; | 207 register Lisp_Object position; |
208 { | 208 { |
209 CHECK_NUMBER_COERCE_MARKER (n, 0); | 209 CHECK_NUMBER_COERCE_MARKER (position, 0); |
210 | 210 |
211 SET_PT (clip_to_bounds (BEGV, XINT (n), ZV)); | 211 SET_PT (clip_to_bounds (BEGV, XINT (position), ZV)); |
212 return n; | 212 return position; |
213 } | 213 } |
214 | 214 |
215 static Lisp_Object | 215 static Lisp_Object |
216 region_limit (beginningp) | 216 region_limit (beginningp) |
217 int beginningp; | 217 int beginningp; |
589 *result = (XINT (high) << 16) + (XINT (low) & 0xffff); | 589 *result = (XINT (high) << 16) + (XINT (low) & 0xffff); |
590 return *result >> 16 == XINT (high); | 590 return *result >> 16 == XINT (high); |
591 } | 591 } |
592 } | 592 } |
593 | 593 |
594 DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 2, 2, 0, | 594 DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 2, 0, |
595 "Use FORMAT-STRING to format the time TIME.\n\ | 595 "Use FORMAT-STRING to format the time TIME.\n\ |
596 TIME is specified as (HIGH LOW . IGNORED) or (HIGH . LOW), as from\n\ | 596 TIME is specified as (HIGH LOW . IGNORED) or (HIGH . LOW), as from\n\ |
597 `current-time' and `file-attributes'.\n\ | 597 `current-time' and `file-attributes'.\n\ |
598 FORMAT-STRING may contain %-sequences to substitute parts of the time.\n\ | 598 FORMAT-STRING may contain %-sequences to substitute parts of the time.\n\ |
599 %a is replaced by the abbreviated name of the day of week.\n\ | 599 %a is replaced by the abbreviated name of the day of week.\n\ |
698 XSETINT (list_args[8], difftm (&save_tm, decoded_time)); | 698 XSETINT (list_args[8], difftm (&save_tm, decoded_time)); |
699 return Flist (9, list_args); | 699 return Flist (9, list_args); |
700 } | 700 } |
701 | 701 |
702 DEFUN ("encode-time", Fencode_time, Sencode_time, 6, 7, 0, | 702 DEFUN ("encode-time", Fencode_time, Sencode_time, 6, 7, 0, |
703 "Convert SEC, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.\n\ | 703 "Convert SECOND, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.\n\ |
704 This is the reverse operation of `decode-time', which see. ZONE defaults\n\ | 704 This is the reverse operation of `decode-time', which see. ZONE defaults\n\ |
705 to the current time zone rule if not specified; if specified, it can\n\ | 705 to the current time zone rule if not specified; if specified, it can\n\ |
706 be a string (as from `set-time-zone-rule'), or it can be a list\n\ | 706 be a string (as from `set-time-zone-rule'), or it can be a list\n\ |
707 (as from `current-time-zone') or an integer (as from `decode-time')\n\ | 707 (as from `current-time-zone') or an integer (as from `decode-time')\n\ |
708 applied without consideration for daylight savings time.\n\ | 708 applied without consideration for daylight savings time.\n\ |
709 Out-of-range values for SEC, MINUTE, HOUR, DAY, or MONTH are allowed;\n\ | 709 Out-of-range values for SEC, MINUTE, HOUR, DAY, or MONTH are allowed;\n\ |
710 for example, a DAY of 0 means the day preceding the given month.\n\ | 710 for example, a DAY of 0 means the day preceding the given month.\n\ |
711 Year numbers less than 100 are treated just like other year numbers.\n\ | 711 Year numbers less than 100 are treated just like other year numbers.\n\ |
712 If you want them to stand for years in this century, you must do that yourself.") | 712 If you want them to stand for years in this century, you must do that yourself.") |
713 (sec, minute, hour, day, month, year, zone) | 713 (second, minute, hour, day, month, year, zone) |
714 Lisp_Object sec, minute, hour, day, month, year, zone; | 714 Lisp_Object second, minute, hour, day, month, year, zone; |
715 { | 715 { |
716 time_t time; | 716 time_t time; |
717 struct tm tm; | 717 struct tm tm; |
718 | 718 |
719 CHECK_NUMBER (sec, 0); | 719 CHECK_NUMBER (second, 0); |
720 CHECK_NUMBER (minute, 1); | 720 CHECK_NUMBER (minute, 1); |
721 CHECK_NUMBER (hour, 2); | 721 CHECK_NUMBER (hour, 2); |
722 CHECK_NUMBER (day, 3); | 722 CHECK_NUMBER (day, 3); |
723 CHECK_NUMBER (month, 4); | 723 CHECK_NUMBER (month, 4); |
724 CHECK_NUMBER (year, 5); | 724 CHECK_NUMBER (year, 5); |
725 | 725 |
726 tm.tm_sec = XINT (sec); | 726 tm.tm_sec = XINT (second); |
727 tm.tm_min = XINT (minute); | 727 tm.tm_min = XINT (minute); |
728 tm.tm_hour = XINT (hour); | 728 tm.tm_hour = XINT (hour); |
729 tm.tm_mday = XINT (day); | 729 tm.tm_mday = XINT (day); |
730 tm.tm_mon = XINT (month) - 1; | 730 tm.tm_mon = XINT (month) - 1; |
731 tm.tm_year = XINT (year) - 1900; | 731 tm.tm_year = XINT (year) - 1900; |
1103 | 1103 |
1104 return Qnil; | 1104 return Qnil; |
1105 } | 1105 } |
1106 | 1106 |
1107 DEFUN ("insert-char", Finsert_char, Sinsert_char, 2, 3, 0, | 1107 DEFUN ("insert-char", Finsert_char, Sinsert_char, 2, 3, 0, |
1108 "Insert COUNT (second arg) copies of CHAR (first arg).\n\ | 1108 "Insert COUNT (second arg) copies of CHARACTER (first arg).\n\ |
1109 Point and all markers are affected as in the function `insert'.\n\ | 1109 Point and all markers are affected as in the function `insert'.\n\ |
1110 Both arguments are required.\n\ | 1110 Both arguments are required.\n\ |
1111 The optional third arg INHERIT, if non-nil, says to inherit text properties\n\ | 1111 The optional third arg INHERIT, if non-nil, says to inherit text properties\n\ |
1112 from adjoining text, if those properties are sticky.") | 1112 from adjoining text, if those properties are sticky.") |
1113 (chr, count, inherit) | 1113 (character, count, inherit) |
1114 Lisp_Object chr, count, inherit; | 1114 Lisp_Object character, count, inherit; |
1115 { | 1115 { |
1116 register unsigned char *string; | 1116 register unsigned char *string; |
1117 register int strlen; | 1117 register int strlen; |
1118 register int i, n; | 1118 register int i, n; |
1119 | 1119 |
1120 CHECK_NUMBER (chr, 0); | 1120 CHECK_NUMBER (character, 0); |
1121 CHECK_NUMBER (count, 1); | 1121 CHECK_NUMBER (count, 1); |
1122 | 1122 |
1123 n = XINT (count); | 1123 n = XINT (count); |
1124 if (n <= 0) | 1124 if (n <= 0) |
1125 return Qnil; | 1125 return Qnil; |
1126 strlen = min (n, 256); | 1126 strlen = min (n, 256); |
1127 string = (unsigned char *) alloca (strlen); | 1127 string = (unsigned char *) alloca (strlen); |
1128 for (i = 0; i < strlen; i++) | 1128 for (i = 0; i < strlen; i++) |
1129 string[i] = XFASTINT (chr); | 1129 string[i] = XFASTINT (character); |
1130 while (n >= strlen) | 1130 while (n >= strlen) |
1131 { | 1131 { |
1132 if (!NILP (inherit)) | 1132 if (!NILP (inherit)) |
1133 insert_and_inherit (string, strlen); | 1133 insert_and_inherit (string, strlen); |
1134 else | 1134 else |
1228 | 1228 |
1229 DEFUN ("buffer-substring", Fbuffer_substring, Sbuffer_substring, 2, 2, 0, | 1229 DEFUN ("buffer-substring", Fbuffer_substring, Sbuffer_substring, 2, 2, 0, |
1230 "Return the contents of part of the current buffer as a string.\n\ | 1230 "Return the contents of part of the current buffer as a string.\n\ |
1231 The two arguments START and END are character positions;\n\ | 1231 The two arguments START and END are character positions;\n\ |
1232 they can be in either order.") | 1232 they can be in either order.") |
1233 (b, e) | 1233 (start, end) |
1234 Lisp_Object b, e; | 1234 Lisp_Object start, end; |
1235 { | 1235 { |
1236 register int beg, end; | 1236 register int b, e; |
1237 | 1237 |
1238 validate_region (&b, &e); | 1238 validate_region (&start, &end); |
1239 beg = XINT (b); | 1239 b = XINT (start); |
1240 end = XINT (e); | 1240 e = XINT (end); |
1241 | 1241 |
1242 return make_buffer_string (beg, end, 1); | 1242 return make_buffer_string (b, e, 1); |
1243 } | 1243 } |
1244 | 1244 |
1245 DEFUN ("buffer-substring-no-properties", Fbuffer_substring_no_properties, | 1245 DEFUN ("buffer-substring-no-properties", Fbuffer_substring_no_properties, |
1246 Sbuffer_substring_no_properties, 2, 2, 0, | 1246 Sbuffer_substring_no_properties, 2, 2, 0, |
1247 "Return the characters of part of the buffer, without the text properties.\n\ | 1247 "Return the characters of part of the buffer, without the text properties.\n\ |
1248 The two arguments START and END are character positions;\n\ | 1248 The two arguments START and END are character positions;\n\ |
1249 they can be in either order.") | 1249 they can be in either order.") |
1250 (b, e) | 1250 (start, end) |
1251 Lisp_Object b, e; | 1251 Lisp_Object start, end; |
1252 { | 1252 { |
1253 register int beg, end; | 1253 register int b, e; |
1254 | 1254 |
1255 validate_region (&b, &e); | 1255 validate_region (&start, &end); |
1256 beg = XINT (b); | 1256 b = XINT (start); |
1257 end = XINT (e); | 1257 e = XINT (end); |
1258 | 1258 |
1259 return make_buffer_string (beg, end, 0); | 1259 return make_buffer_string (b, e, 0); |
1260 } | 1260 } |
1261 | 1261 |
1262 DEFUN ("buffer-string", Fbuffer_string, Sbuffer_string, 0, 0, 0, | 1262 DEFUN ("buffer-string", Fbuffer_string, Sbuffer_string, 0, 0, 0, |
1263 "Return the contents of the current buffer as a string.\n\ | 1263 "Return the contents of the current buffer as a string.\n\ |
1264 If narrowing is in effect, this function returns only the visible part\n\ | 1264 If narrowing is in effect, this function returns only the visible part\n\ |
1272 1, 3, 0, | 1272 1, 3, 0, |
1273 "Insert before point a substring of the contents of buffer BUFFER.\n\ | 1273 "Insert before point a substring of the contents of buffer BUFFER.\n\ |
1274 BUFFER may be a buffer or a buffer name.\n\ | 1274 BUFFER may be a buffer or a buffer name.\n\ |
1275 Arguments START and END are character numbers specifying the substring.\n\ | 1275 Arguments START and END are character numbers specifying the substring.\n\ |
1276 They default to the beginning and the end of BUFFER.") | 1276 They default to the beginning and the end of BUFFER.") |
1277 (buf, b, e) | 1277 (buf, start, end) |
1278 Lisp_Object buf, b, e; | 1278 Lisp_Object buf, start, end; |
1279 { | 1279 { |
1280 register int beg, end, temp; | 1280 register int b, e, temp; |
1281 register struct buffer *bp, *obuf; | 1281 register struct buffer *bp, *obuf; |
1282 Lisp_Object buffer; | 1282 Lisp_Object buffer; |
1283 | 1283 |
1284 buffer = Fget_buffer (buf); | 1284 buffer = Fget_buffer (buf); |
1285 if (NILP (buffer)) | 1285 if (NILP (buffer)) |
1286 nsberror (buf); | 1286 nsberror (buf); |
1287 bp = XBUFFER (buffer); | 1287 bp = XBUFFER (buffer); |
1288 | 1288 |
1289 if (NILP (b)) | 1289 if (NILP (start)) |
1290 beg = BUF_BEGV (bp); | 1290 b = BUF_BEGV (bp); |
1291 else | 1291 else |
1292 { | 1292 { |
1293 CHECK_NUMBER_COERCE_MARKER (b, 0); | 1293 CHECK_NUMBER_COERCE_MARKER (start, 0); |
1294 beg = XINT (b); | 1294 b = XINT (start); |
1295 } | 1295 } |
1296 if (NILP (e)) | 1296 if (NILP (end)) |
1297 end = BUF_ZV (bp); | 1297 e = BUF_ZV (bp); |
1298 else | 1298 else |
1299 { | 1299 { |
1300 CHECK_NUMBER_COERCE_MARKER (e, 1); | 1300 CHECK_NUMBER_COERCE_MARKER (end, 1); |
1301 end = XINT (e); | 1301 e = XINT (end); |
1302 } | 1302 } |
1303 | 1303 |
1304 if (beg > end) | 1304 if (b > e) |
1305 temp = beg, beg = end, end = temp; | 1305 temp = b, b = e, e = temp; |
1306 | 1306 |
1307 if (!(BUF_BEGV (bp) <= beg && end <= BUF_ZV (bp))) | 1307 if (!(BUF_BEGV (bp) <= b && e <= BUF_ZV (bp))) |
1308 args_out_of_range (b, e); | 1308 args_out_of_range (start, end); |
1309 | 1309 |
1310 obuf = current_buffer; | 1310 obuf = current_buffer; |
1311 set_buffer_internal_1 (bp); | 1311 set_buffer_internal_1 (bp); |
1312 update_buffer_properties (beg, end); | 1312 update_buffer_properties (b, e); |
1313 set_buffer_internal_1 (obuf); | 1313 set_buffer_internal_1 (obuf); |
1314 | 1314 |
1315 insert_from_buffer (bp, beg, end - beg, 0); | 1315 insert_from_buffer (bp, b, e - b, 0); |
1316 return Qnil; | 1316 return Qnil; |
1317 } | 1317 } |
1318 | 1318 |
1319 DEFUN ("compare-buffer-substrings", Fcompare_buffer_substrings, Scompare_buffer_substrings, | 1319 DEFUN ("compare-buffer-substrings", Fcompare_buffer_substrings, Scompare_buffer_substrings, |
1320 6, 6, 0, | 1320 6, 6, 0, |
1571 | 1571 |
1572 DEFUN ("delete-region", Fdelete_region, Sdelete_region, 2, 2, "r", | 1572 DEFUN ("delete-region", Fdelete_region, Sdelete_region, 2, 2, "r", |
1573 "Delete the text between point and mark.\n\ | 1573 "Delete the text between point and mark.\n\ |
1574 When called from a program, expects two arguments,\n\ | 1574 When called from a program, expects two arguments,\n\ |
1575 positions (integers or markers) specifying the stretch to be deleted.") | 1575 positions (integers or markers) specifying the stretch to be deleted.") |
1576 (b, e) | 1576 (start, end) |
1577 Lisp_Object b, e; | 1577 Lisp_Object start, end; |
1578 { | 1578 { |
1579 validate_region (&b, &e); | 1579 validate_region (&start, &end); |
1580 del_range (XINT (b), XINT (e)); | 1580 del_range (XINT (start), XINT (end)); |
1581 return Qnil; | 1581 return Qnil; |
1582 } | 1582 } |
1583 | 1583 |
1584 DEFUN ("widen", Fwiden, Swiden, 0, 0, "", | 1584 DEFUN ("widen", Fwiden, Swiden, 0, 0, "", |
1585 "Remove restrictions (narrowing) from current buffer.\n\ | 1585 "Remove restrictions (narrowing) from current buffer.\n\ |
1601 text is included in the file. \\[widen] makes all visible again.\n\ | 1601 text is included in the file. \\[widen] makes all visible again.\n\ |
1602 See also `save-restriction'.\n\ | 1602 See also `save-restriction'.\n\ |
1603 \n\ | 1603 \n\ |
1604 When calling from a program, pass two arguments; positions (integers\n\ | 1604 When calling from a program, pass two arguments; positions (integers\n\ |
1605 or markers) bounding the text that should remain visible.") | 1605 or markers) bounding the text that should remain visible.") |
1606 (b, e) | 1606 (start, end) |
1607 register Lisp_Object b, e; | 1607 register Lisp_Object start, end; |
1608 { | 1608 { |
1609 CHECK_NUMBER_COERCE_MARKER (b, 0); | 1609 CHECK_NUMBER_COERCE_MARKER (start, 0); |
1610 CHECK_NUMBER_COERCE_MARKER (e, 1); | 1610 CHECK_NUMBER_COERCE_MARKER (end, 1); |
1611 | 1611 |
1612 if (XINT (b) > XINT (e)) | 1612 if (XINT (start) > XINT (end)) |
1613 { | 1613 { |
1614 Lisp_Object tem; | 1614 Lisp_Object tem; |
1615 tem = b; b = e; e = tem; | 1615 tem = start; start = end; end = tem; |
1616 } | 1616 } |
1617 | 1617 |
1618 if (!(BEG <= XINT (b) && XINT (b) <= XINT (e) && XINT (e) <= Z)) | 1618 if (!(BEG <= XINT (start) && XINT (start) <= XINT (end) && XINT (end) <= Z)) |
1619 args_out_of_range (b, e); | 1619 args_out_of_range (start, end); |
1620 | 1620 |
1621 BEGV = XFASTINT (b); | 1621 BEGV = XFASTINT (start); |
1622 SET_BUF_ZV (current_buffer, XFASTINT (e)); | 1622 SET_BUF_ZV (current_buffer, XFASTINT (end)); |
1623 if (point < XFASTINT (b)) | 1623 if (point < XFASTINT (start)) |
1624 SET_PT (XFASTINT (b)); | 1624 SET_PT (XFASTINT (start)); |
1625 if (point > XFASTINT (e)) | 1625 if (point > XFASTINT (end)) |
1626 SET_PT (XFASTINT (e)); | 1626 SET_PT (XFASTINT (end)); |
1627 current_buffer->clip_changed = 1; | 1627 current_buffer->clip_changed = 1; |
1628 /* Changing the buffer bounds invalidates any recorded current column. */ | 1628 /* Changing the buffer bounds invalidates any recorded current column. */ |
1629 invalidate_current_column (); | 1629 invalidate_current_column (); |
1630 return Qnil; | 1630 return Qnil; |
1631 } | 1631 } |