Mercurial > emacs
comparison src/editfns.c @ 30480:5ef94127f946
new function: float-time
author | Sam Steingold <sds@gnu.org> |
---|---|
date | Wed, 26 Jul 2000 18:41:15 +0000 |
parents | c084f49c2a7f |
children | fef49230e1aa |
comparison
equal
deleted
inserted
replaced
30479:bc0a97df8aed | 30480:5ef94127f946 |
---|---|
120 /* If the user name claimed in the environment vars differs from | 120 /* If the user name claimed in the environment vars differs from |
121 the real uid, use the claimed name to find the full name. */ | 121 the real uid, use the claimed name to find the full name. */ |
122 tem = Fstring_equal (Vuser_login_name, Vuser_real_login_name); | 122 tem = Fstring_equal (Vuser_login_name, Vuser_real_login_name); |
123 Vuser_full_name = Fuser_full_name (NILP (tem)? make_number (geteuid()) | 123 Vuser_full_name = Fuser_full_name (NILP (tem)? make_number (geteuid()) |
124 : Vuser_login_name); | 124 : Vuser_login_name); |
125 | 125 |
126 p = (unsigned char *) getenv ("NAME"); | 126 p = (unsigned char *) getenv ("NAME"); |
127 if (p) | 127 if (p) |
128 Vuser_full_name = build_string (p); | 128 Vuser_full_name = build_string (p); |
129 else if (NILP (Vuser_full_name)) | 129 else if (NILP (Vuser_full_name)) |
130 Vuser_full_name = build_string ("unknown"); | 130 Vuser_full_name = build_string ("unknown"); |
683 == current_buffer); | 683 == current_buffer); |
684 | 684 |
685 return Fcons (Fpoint_marker (), | 685 return Fcons (Fpoint_marker (), |
686 Fcons (Fcopy_marker (current_buffer->mark, Qnil), | 686 Fcons (Fcopy_marker (current_buffer->mark, Qnil), |
687 Fcons (visible ? Qt : Qnil, | 687 Fcons (visible ? Qt : Qnil, |
688 current_buffer->mark_active))); | 688 current_buffer->mark_active))); |
689 } | 689 } |
690 | 690 |
691 Lisp_Object | 691 Lisp_Object |
692 save_excursion_restore (info) | 692 save_excursion_restore (info) |
693 Lisp_Object info; | 693 Lisp_Object info; |
976 else | 976 else |
977 { | 977 { |
978 CHECK_NUMBER_COERCE_MARKER (pos, 0); | 978 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
979 if (XINT (pos) < BEGV || XINT (pos) >= ZV) | 979 if (XINT (pos) < BEGV || XINT (pos) >= ZV) |
980 return Qnil; | 980 return Qnil; |
981 | 981 |
982 pos_byte = CHAR_TO_BYTE (XINT (pos)); | 982 pos_byte = CHAR_TO_BYTE (XINT (pos)); |
983 } | 983 } |
984 | 984 |
985 return make_number (FETCH_CHAR (pos_byte)); | 985 return make_number (FETCH_CHAR (pos_byte)); |
986 } | 986 } |
1102 register unsigned char *p, *q; | 1102 register unsigned char *p, *q; |
1103 extern char *index (); | 1103 extern char *index (); |
1104 Lisp_Object full; | 1104 Lisp_Object full; |
1105 | 1105 |
1106 if (NILP (uid)) | 1106 if (NILP (uid)) |
1107 return Vuser_full_name; | 1107 return Vuser_full_name; |
1108 else if (NUMBERP (uid)) | 1108 else if (NUMBERP (uid)) |
1109 pw = (struct passwd *) getpwuid (XINT (uid)); | 1109 pw = (struct passwd *) getpwuid (XINT (uid)); |
1110 else if (STRINGP (uid)) | 1110 else if (STRINGP (uid)) |
1111 pw = (struct passwd *) getpwnam (XSTRING (uid)->data); | 1111 pw = (struct passwd *) getpwnam (XSTRING (uid)->data); |
1112 else | 1112 else |
1113 error ("Invalid UID specification"); | 1113 error ("Invalid UID specification"); |
1114 | 1114 |
1115 if (!pw) | 1115 if (!pw) |
1116 return Qnil; | 1116 return Qnil; |
1117 | 1117 |
1118 p = (unsigned char *) USER_FULL_NAME; | 1118 p = (unsigned char *) USER_FULL_NAME; |
1119 /* Chop off everything after the first comma. */ | 1119 /* Chop off everything after the first comma. */ |
1120 q = (unsigned char *) index (p, ','); | 1120 q = (unsigned char *) index (p, ','); |
1121 full = make_string (p, q ? q - p : strlen (p)); | 1121 full = make_string (p, q ? q - p : strlen (p)); |
1122 | 1122 |
1123 #ifdef AMPERSAND_FULL_NAME | 1123 #ifdef AMPERSAND_FULL_NAME |
1124 p = XSTRING (full)->data; | 1124 p = XSTRING (full)->data; |
1125 q = (unsigned char *) index (p, '&'); | 1125 q = (unsigned char *) index (p, '&'); |
1126 /* Substitute the login name for the &, upcasing the first character. */ | 1126 /* Substitute the login name for the &, upcasing the first character. */ |
1127 if (q) | 1127 if (q) |
1189 return Flist (3, result); | 1189 return Flist (3, result); |
1190 } | 1190 } |
1191 | 1191 |
1192 | 1192 |
1193 static int | 1193 static int |
1194 lisp_time_argument (specified_time, result) | 1194 lisp_time_argument (specified_time, result, usec) |
1195 Lisp_Object specified_time; | 1195 Lisp_Object specified_time; |
1196 time_t *result; | 1196 time_t *result; |
1197 int *usec; | |
1197 { | 1198 { |
1198 if (NILP (specified_time)) | 1199 if (NILP (specified_time)) |
1199 return time (result) != -1; | 1200 { |
1201 if (usec) | |
1202 { | |
1203 EMACS_TIME t; | |
1204 | |
1205 if (-1 == EMACS_GET_TIME (t)) | |
1206 return 0; | |
1207 *usec = EMACS_USECS (t); | |
1208 *result = EMACS_SECS (t); | |
1209 return 1; | |
1210 } | |
1211 else | |
1212 return time (result) != -1; | |
1213 } | |
1200 else | 1214 else |
1201 { | 1215 { |
1202 Lisp_Object high, low; | 1216 Lisp_Object high, low; |
1203 high = Fcar (specified_time); | 1217 high = Fcar (specified_time); |
1204 CHECK_NUMBER (high, 0); | 1218 CHECK_NUMBER (high, 0); |
1205 low = Fcdr (specified_time); | 1219 low = Fcdr (specified_time); |
1206 if (CONSP (low)) | 1220 if (CONSP (low)) |
1207 low = Fcar (low); | 1221 { |
1222 if (usec) | |
1223 { | |
1224 Lisp_Object usec_l = Fcdr (low); | |
1225 if (CONSP (usec_l)) | |
1226 usec_l = Fcar (usec_l); | |
1227 if (NILP (usec_l)) | |
1228 *usec = 0; | |
1229 else | |
1230 { | |
1231 CHECK_NUMBER (usec_l, 0); | |
1232 *usec = XINT (usec_l); | |
1233 } | |
1234 } | |
1235 low = Fcar (low); | |
1236 } | |
1237 else if (usec) | |
1238 *usec = 0; | |
1208 CHECK_NUMBER (low, 0); | 1239 CHECK_NUMBER (low, 0); |
1209 *result = (XINT (high) << 16) + (XINT (low) & 0xffff); | 1240 *result = (XINT (high) << 16) + (XINT (low) & 0xffff); |
1210 return *result >> 16 == XINT (high); | 1241 return *result >> 16 == XINT (high); |
1211 } | 1242 } |
1243 } | |
1244 | |
1245 DEFUN ("float-time", Ffloat_time, Sfloat_time, 0, 1, 0, | |
1246 "Return the current time, as a float number of seconds since the epoch.\n\ | |
1247 If an argument is given, it specifies a time to convert to float\n\ | |
1248 instead of the current time. The argument should have the forms:\n\ | |
1249 (HIGH . LOW) or (HIGH LOW USEC) or (HIGH LOW . USEC).\n\ | |
1250 Thus, you can use times obtained from `current-time'\n\ | |
1251 and from `file-attributes'.") | |
1252 (specified_time) | |
1253 Lisp_Object specified_time; | |
1254 { | |
1255 time_t sec; | |
1256 int usec; | |
1257 | |
1258 if (! lisp_time_argument (specified_time, &sec, &usec)) | |
1259 error ("Invalid time specification"); | |
1260 | |
1261 return make_float (sec + usec * 0.0000001); | |
1212 } | 1262 } |
1213 | 1263 |
1214 /* Write information into buffer S of size MAXSIZE, according to the | 1264 /* Write information into buffer S of size MAXSIZE, according to the |
1215 FORMAT of length FORMAT_LEN, using time information taken from *TP. | 1265 FORMAT of length FORMAT_LEN, using time information taken from *TP. |
1216 Default to Universal Time if UT is nonzero, local time otherwise. | 1266 Default to Universal Time if UT is nonzero, local time otherwise. |
1326 struct tm *tm; | 1376 struct tm *tm; |
1327 int ut = ! NILP (universal); | 1377 int ut = ! NILP (universal); |
1328 | 1378 |
1329 CHECK_STRING (format_string, 1); | 1379 CHECK_STRING (format_string, 1); |
1330 | 1380 |
1331 if (! lisp_time_argument (time, &value)) | 1381 if (! lisp_time_argument (time, &value, NULL)) |
1332 error ("Invalid time specification"); | 1382 error ("Invalid time specification"); |
1333 | 1383 |
1334 format_string = code_convert_string_norecord (format_string, | 1384 format_string = code_convert_string_norecord (format_string, |
1335 Vlocale_coding_system, 1); | 1385 Vlocale_coding_system, 1); |
1336 | 1386 |
1383 { | 1433 { |
1384 time_t time_spec; | 1434 time_t time_spec; |
1385 struct tm save_tm; | 1435 struct tm save_tm; |
1386 struct tm *decoded_time; | 1436 struct tm *decoded_time; |
1387 Lisp_Object list_args[9]; | 1437 Lisp_Object list_args[9]; |
1388 | 1438 |
1389 if (! lisp_time_argument (specified_time, &time_spec)) | 1439 if (! lisp_time_argument (specified_time, &time_spec, NULL)) |
1390 error ("Invalid time specification"); | 1440 error ("Invalid time specification"); |
1391 | 1441 |
1392 decoded_time = localtime (&time_spec); | 1442 decoded_time = localtime (&time_spec); |
1393 if (! decoded_time) | 1443 if (! decoded_time) |
1394 error ("Specified time is not representable"); | 1444 error ("Specified time is not representable"); |
1458 else | 1508 else |
1459 { | 1509 { |
1460 char tzbuf[100]; | 1510 char tzbuf[100]; |
1461 char *tzstring; | 1511 char *tzstring; |
1462 char **oldenv = environ, **newenv; | 1512 char **oldenv = environ, **newenv; |
1463 | 1513 |
1464 if (EQ (zone, Qt)) | 1514 if (EQ (zone, Qt)) |
1465 tzstring = "UTC0"; | 1515 tzstring = "UTC0"; |
1466 else if (STRINGP (zone)) | 1516 else if (STRINGP (zone)) |
1467 tzstring = (char *) XSTRING (zone)->data; | 1517 tzstring = (char *) XSTRING (zone)->data; |
1468 else if (INTEGERP (zone)) | 1518 else if (INTEGERP (zone)) |
1473 tzstring = tzbuf; | 1523 tzstring = tzbuf; |
1474 } | 1524 } |
1475 else | 1525 else |
1476 error ("Invalid time zone specification"); | 1526 error ("Invalid time zone specification"); |
1477 | 1527 |
1478 /* Set TZ before calling mktime; merely adjusting mktime's returned | 1528 /* Set TZ before calling mktime; merely adjusting mktime's returned |
1479 value doesn't suffice, since that would mishandle leap seconds. */ | 1529 value doesn't suffice, since that would mishandle leap seconds. */ |
1480 set_time_zone_rule (tzstring); | 1530 set_time_zone_rule (tzstring); |
1481 | 1531 |
1482 time = mktime (&tm); | 1532 time = mktime (&tm); |
1483 | 1533 |
1516 { | 1566 { |
1517 time_t value; | 1567 time_t value; |
1518 char buf[30]; | 1568 char buf[30]; |
1519 register char *tem; | 1569 register char *tem; |
1520 | 1570 |
1521 if (! lisp_time_argument (specified_time, &value)) | 1571 if (! lisp_time_argument (specified_time, &value, NULL)) |
1522 value = -1; | 1572 value = -1; |
1523 tem = (char *) ctime (&value); | 1573 tem = (char *) ctime (&value); |
1524 | 1574 |
1525 strncpy (buf, tem, 24); | 1575 strncpy (buf, tem, 24); |
1526 buf[24] = 0; | 1576 buf[24] = 0; |
1576 { | 1626 { |
1577 time_t value; | 1627 time_t value; |
1578 struct tm *t; | 1628 struct tm *t; |
1579 struct tm gmt; | 1629 struct tm gmt; |
1580 | 1630 |
1581 if (lisp_time_argument (specified_time, &value) | 1631 if (lisp_time_argument (specified_time, &value, NULL) |
1582 && (t = gmtime (&value)) != 0 | 1632 && (t = gmtime (&value)) != 0 |
1583 && (gmt = *t, t = localtime (&value)) != 0) | 1633 && (gmt = *t, t = localtime (&value)) != 0) |
1584 { | 1634 { |
1585 int offset = tm_diff (t, &gmt); | 1635 int offset = tm_diff (t, &gmt); |
1586 char *s = 0; | 1636 char *s = 0; |
1642 #ifdef LOCALTIME_CACHE | 1692 #ifdef LOCALTIME_CACHE |
1643 | 1693 |
1644 /* These two values are known to load tz files in buggy implementations, | 1694 /* These two values are known to load tz files in buggy implementations, |
1645 i.e. Solaris 1 executables running under either Solaris 1 or Solaris 2. | 1695 i.e. Solaris 1 executables running under either Solaris 1 or Solaris 2. |
1646 Their values shouldn't matter in non-buggy implementations. | 1696 Their values shouldn't matter in non-buggy implementations. |
1647 We don't use string literals for these strings, | 1697 We don't use string literals for these strings, |
1648 since if a string in the environment is in readonly | 1698 since if a string in the environment is in readonly |
1649 storage, it runs afoul of bugs in SVR4 and Solaris 2.3. | 1699 storage, it runs afoul of bugs in SVR4 and Solaris 2.3. |
1650 See Sun bugs 1113095 and 1114114, ``Timezone routines | 1700 See Sun bugs 1113095 and 1114114, ``Timezone routines |
1651 improperly modify environment''. */ | 1701 improperly modify environment''. */ |
1652 | 1702 |
2400 current_buffer->auto_save_modified++; | 2450 current_buffer->auto_save_modified++; |
2401 } | 2451 } |
2402 } | 2452 } |
2403 | 2453 |
2404 /* Take care of the case where the new character | 2454 /* Take care of the case where the new character |
2405 combines with neighboring bytes. */ | 2455 combines with neighboring bytes. */ |
2406 if (maybe_byte_combining | 2456 if (maybe_byte_combining |
2407 && (maybe_byte_combining == COMBINING_AFTER | 2457 && (maybe_byte_combining == COMBINING_AFTER |
2408 ? (pos_byte_next < Z_BYTE | 2458 ? (pos_byte_next < Z_BYTE |
2409 && ! CHAR_HEAD_P (FETCH_BYTE (pos_byte_next))) | 2459 && ! CHAR_HEAD_P (FETCH_BYTE (pos_byte_next))) |
2410 : ((pos_byte_next < Z_BYTE | 2460 : ((pos_byte_next < Z_BYTE |
2431 POS. So, to cancel the later increment of POS, | 2481 POS. So, to cancel the later increment of POS, |
2432 decrease it now. */ | 2482 decrease it now. */ |
2433 pos--; | 2483 pos--; |
2434 else | 2484 else |
2435 INC_POS (pos_byte_next); | 2485 INC_POS (pos_byte_next); |
2436 | 2486 |
2437 if (! NILP (noundo)) | 2487 if (! NILP (noundo)) |
2438 current_buffer->undo_list = tem; | 2488 current_buffer->undo_list = tem; |
2439 | 2489 |
2440 UNGCPRO; | 2490 UNGCPRO; |
2441 } | 2491 } |
2509 { | 2559 { |
2510 nc = tt[oc]; | 2560 nc = tt[oc]; |
2511 if (nc != oc) | 2561 if (nc != oc) |
2512 { | 2562 { |
2513 /* Take care of the case where the new character | 2563 /* Take care of the case where the new character |
2514 combines with neighboring bytes. */ | 2564 combines with neighboring bytes. */ |
2515 if (!ASCII_BYTE_P (nc) | 2565 if (!ASCII_BYTE_P (nc) |
2516 && (CHAR_HEAD_P (nc) | 2566 && (CHAR_HEAD_P (nc) |
2517 ? ! CHAR_HEAD_P (FETCH_BYTE (pos_byte + 1)) | 2567 ? ! CHAR_HEAD_P (FETCH_BYTE (pos_byte + 1)) |
2518 : (pos_byte > BEG_BYTE | 2568 : (pos_byte > BEG_BYTE |
2519 && ! ASCII_BYTE_P (FETCH_BYTE (pos_byte - 1))))) | 2569 && ! ASCII_BYTE_P (FETCH_BYTE (pos_byte - 1))))) |
2846 if ((nargs & 1) == 0 || nargs < 3) | 2896 if ((nargs & 1) == 0 || nargs < 3) |
2847 error ("Wrong number of arguments"); | 2897 error ("Wrong number of arguments"); |
2848 | 2898 |
2849 properties = string = Qnil; | 2899 properties = string = Qnil; |
2850 GCPRO2 (properties, string); | 2900 GCPRO2 (properties, string); |
2851 | 2901 |
2852 /* First argument must be a string. */ | 2902 /* First argument must be a string. */ |
2853 CHECK_STRING (args[0], 0); | 2903 CHECK_STRING (args[0], 0); |
2854 string = Fcopy_sequence (args[0]); | 2904 string = Fcopy_sequence (args[0]); |
2855 | 2905 |
2856 for (i = 1; i < nargs; i += 2) | 2906 for (i = 1; i < nargs; i += 2) |
3013 else | 3063 else |
3014 if (*format != 'd' && *format != 'o' && *format != 'x' | 3064 if (*format != 'd' && *format != 'o' && *format != 'x' |
3015 && *format != 'i' && *format != 'X' && *format != 'c') | 3065 && *format != 'i' && *format != 'X' && *format != 'c') |
3016 error ("Invalid format operation %%%c", *format); | 3066 error ("Invalid format operation %%%c", *format); |
3017 | 3067 |
3018 thissize = 30; | 3068 thissize = 30; |
3019 if (*format == 'c' | 3069 if (*format == 'c' |
3020 && (! SINGLE_BYTE_CHAR_P (XINT (args[n])) | 3070 && (! SINGLE_BYTE_CHAR_P (XINT (args[n])) |
3021 || XINT (args[n]) == 0)) | 3071 || XINT (args[n]) == 0)) |
3022 { | 3072 { |
3023 if (! multibyte) | 3073 if (! multibyte) |
3046 goto retry; | 3096 goto retry; |
3047 } | 3097 } |
3048 args[n] = tem; | 3098 args[n] = tem; |
3049 goto string; | 3099 goto string; |
3050 } | 3100 } |
3051 | 3101 |
3052 if (thissize < minlen) | 3102 if (thissize < minlen) |
3053 thissize = minlen; | 3103 thissize = minlen; |
3054 | 3104 |
3055 total += thissize + 4; | 3105 total += thissize + 4; |
3056 } | 3106 } |
3145 { | 3195 { |
3146 int nbytes = nargs * sizeof *info; | 3196 int nbytes = nargs * sizeof *info; |
3147 info = (struct info *) alloca (nbytes); | 3197 info = (struct info *) alloca (nbytes); |
3148 bzero (info, nbytes); | 3198 bzero (info, nbytes); |
3149 } | 3199 } |
3150 | 3200 |
3151 info[n].start = start; | 3201 info[n].start = start; |
3152 info[n].end = nchars; | 3202 info[n].end = nchars; |
3153 } | 3203 } |
3154 } | 3204 } |
3155 else if (INTEGERP (args[n]) || FLOATP (args[n])) | 3205 else if (INTEGERP (args[n]) || FLOATP (args[n])) |
3212 xfree (buf); | 3262 xfree (buf); |
3213 | 3263 |
3214 /* If the format string has text properties, or any of the string | 3264 /* If the format string has text properties, or any of the string |
3215 arguments has text properties, set up text properties of the | 3265 arguments has text properties, set up text properties of the |
3216 result string. */ | 3266 result string. */ |
3217 | 3267 |
3218 if (XSTRING (args[0])->intervals || info) | 3268 if (XSTRING (args[0])->intervals || info) |
3219 { | 3269 { |
3220 Lisp_Object len, new_len, props; | 3270 Lisp_Object len, new_len, props; |
3221 struct gcpro gcpro1; | 3271 struct gcpro gcpro1; |
3222 | 3272 |
3223 /* Add text properties from the format string. */ | 3273 /* Add text properties from the format string. */ |
3224 len = make_number (XSTRING (args[0])->size); | 3274 len = make_number (XSTRING (args[0])->size); |
3225 props = text_property_list (args[0], make_number (0), len, Qnil); | 3275 props = text_property_list (args[0], make_number (0), len, Qnil); |
3226 GCPRO1 (props); | 3276 GCPRO1 (props); |
3227 | 3277 |
3228 if (CONSP (props)) | 3278 if (CONSP (props)) |
3229 { | 3279 { |
3230 new_len = make_number (XSTRING (val)->size); | 3280 new_len = make_number (XSTRING (val)->size); |
3231 extend_property_ranges (props, len, new_len); | 3281 extend_property_ranges (props, len, new_len); |
3232 add_text_properties_from_list (val, props, make_number (0)); | 3282 add_text_properties_from_list (val, props, make_number (0)); |
3315 START2_BYTE, END2_BYTE are the byte positions. | 3365 START2_BYTE, END2_BYTE are the byte positions. |
3316 | 3366 |
3317 Traverses the entire marker list of the buffer to do so, adding an | 3367 Traverses the entire marker list of the buffer to do so, adding an |
3318 appropriate amount to some, subtracting from some, and leaving the | 3368 appropriate amount to some, subtracting from some, and leaving the |
3319 rest untouched. Most of this is copied from adjust_markers in insdel.c. | 3369 rest untouched. Most of this is copied from adjust_markers in insdel.c. |
3320 | 3370 |
3321 It's the caller's job to ensure that START1 <= END1 <= START2 <= END2. */ | 3371 It's the caller's job to ensure that START1 <= END1 <= START2 <= END2. */ |
3322 | 3372 |
3323 void | 3373 void |
3324 transpose_markers (start1, end1, start2, end2, | 3374 transpose_markers (start1, end1, start2, end2, |
3325 start1_byte, end1_byte, start2_byte, end2_byte) | 3375 start1_byte, end1_byte, start2_byte, end2_byte) |
3352 the dirty work to Fmarker_position, below. */ | 3402 the dirty work to Fmarker_position, below. */ |
3353 | 3403 |
3354 /* The difference between the region's lengths */ | 3404 /* The difference between the region's lengths */ |
3355 diff = (end2 - start2) - (end1 - start1); | 3405 diff = (end2 - start2) - (end1 - start1); |
3356 diff_byte = (end2_byte - start2_byte) - (end1_byte - start1_byte); | 3406 diff_byte = (end2_byte - start2_byte) - (end1_byte - start1_byte); |
3357 | 3407 |
3358 /* For shifting each marker in a region by the length of the other | 3408 /* For shifting each marker in a region by the length of the other |
3359 region plus the distance between the regions. */ | 3409 region plus the distance between the regions. */ |
3360 amt1 = (end2 - start2) + (start2 - end1); | 3410 amt1 = (end2 - start2) + (start2 - end1); |
3361 amt2 = (end1 - start1) + (start2 - end1); | 3411 amt2 = (end1 - start1) + (start2 - end1); |
3362 amt1_byte = (end2_byte - start2_byte) + (start2_byte - end1_byte); | 3412 amt1_byte = (end2_byte - start2_byte) + (start2_byte - end1_byte); |
3441 | 3491 |
3442 /* The possibilities are: | 3492 /* The possibilities are: |
3443 1. Adjacent (contiguous) regions, or separate but equal regions | 3493 1. Adjacent (contiguous) regions, or separate but equal regions |
3444 (no, really equal, in this case!), or | 3494 (no, really equal, in this case!), or |
3445 2. Separate regions of unequal size. | 3495 2. Separate regions of unequal size. |
3446 | 3496 |
3447 The worst case is usually No. 2. It means that (aside from | 3497 The worst case is usually No. 2. It means that (aside from |
3448 potential need for getting the gap out of the way), there also | 3498 potential need for getting the gap out of the way), there also |
3449 needs to be a shifting of the text between the two regions. So | 3499 needs to be a shifting of the text between the two regions. So |
3450 if they are spread far apart, we are that much slower... sigh. */ | 3500 if they are spread far apart, we are that much slower... sigh. */ |
3451 | 3501 |
3720 functions if all the text being accessed has this property."); | 3770 functions if all the text being accessed has this property."); |
3721 Vbuffer_access_fontified_property = Qnil; | 3771 Vbuffer_access_fontified_property = Qnil; |
3722 | 3772 |
3723 DEFVAR_LISP ("system-name", &Vsystem_name, | 3773 DEFVAR_LISP ("system-name", &Vsystem_name, |
3724 "The name of the machine Emacs is running on."); | 3774 "The name of the machine Emacs is running on."); |
3725 | 3775 |
3726 DEFVAR_LISP ("user-full-name", &Vuser_full_name, | 3776 DEFVAR_LISP ("user-full-name", &Vuser_full_name, |
3727 "The full name of the user logged in."); | 3777 "The full name of the user logged in."); |
3728 | 3778 |
3729 DEFVAR_LISP ("user-login-name", &Vuser_login_name, | 3779 DEFVAR_LISP ("user-login-name", &Vuser_login_name, |
3730 "The user's name, taken from environment variables if possible."); | 3780 "The user's name, taken from environment variables if possible."); |
3796 defsubr (&Suser_real_uid); | 3846 defsubr (&Suser_real_uid); |
3797 defsubr (&Suser_full_name); | 3847 defsubr (&Suser_full_name); |
3798 defsubr (&Semacs_pid); | 3848 defsubr (&Semacs_pid); |
3799 defsubr (&Scurrent_time); | 3849 defsubr (&Scurrent_time); |
3800 defsubr (&Sformat_time_string); | 3850 defsubr (&Sformat_time_string); |
3851 defsubr (&Sfloat_time); | |
3801 defsubr (&Sdecode_time); | 3852 defsubr (&Sdecode_time); |
3802 defsubr (&Sencode_time); | 3853 defsubr (&Sencode_time); |
3803 defsubr (&Scurrent_time_string); | 3854 defsubr (&Scurrent_time_string); |
3804 defsubr (&Scurrent_time_zone); | 3855 defsubr (&Scurrent_time_zone); |
3805 defsubr (&Sset_time_zone_rule); | 3856 defsubr (&Sset_time_zone_rule); |