Now on revision 108692. ------------------------------------------------------------ revno: 108692 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11719 committer: Stefan Monnier branch nick: trunk timestamp: Sat 2012-06-23 00:24:06 -0400 message: * lisp/emacs-lisp/cl-macs.el (cl--make-usage-args): Handle improper lists. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-23 03:48:18 +0000 +++ lisp/ChangeLog 2012-06-23 04:24:06 +0000 @@ -1,5 +1,8 @@ 2012-06-23 Stefan Monnier + * emacs-lisp/cl-macs.el (cl--make-usage-args): Handle improper lists + (bug#11719). + * minibuffer.el (completion--twq-try): Try to fail more gracefully when the requote function doesn't work properly (bug#11714). === modified file 'lisp/emacs-lisp/cl-loaddefs.el' --- lisp/emacs-lisp/cl-loaddefs.el 2012-06-22 21:24:54 +0000 +++ lisp/emacs-lisp/cl-loaddefs.el 2012-06-23 04:24:06 +0000 @@ -11,7 +11,7 @@ ;;;;;; cl--set-frame-visible-p cl--map-overlays cl--map-intervals ;;;;;; cl--map-keymap-recursively cl-notevery cl-notany cl-every ;;;;;; cl-some cl-mapcon cl-mapcan cl-mapl cl-maplist cl-map cl--mapcar-many -;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "25963dec757a527e3be3ba7f7abc49ee") +;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "3656b89f2196d70e50ba9d7bb9519416") ;;; Generated autoloads from cl-extra.el (autoload 'cl-coerce "cl-extra" "\ @@ -265,7 +265,7 @@ ;;;;;; cl-return cl-block cl-etypecase cl-typecase cl-ecase cl-case ;;;;;; cl-load-time-value cl-eval-when cl-destructuring-bind cl-function ;;;;;; cl-defmacro cl-defun cl-gentemp cl-gensym) "cl-macs" "cl-macs.el" -;;;;;; "66d8d151a97f91a79ebe3d1a9d699483") +;;;;;; "41a15289eda7e6ae03ac9edd86bbb1a6") ;;; Generated autoloads from cl-macs.el (autoload 'cl-gensym "cl-macs" "\ === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2012-06-22 21:24:54 +0000 +++ lisp/emacs-lisp/cl-macs.el 2012-06-23 04:24:06 +0000 @@ -350,28 +350,36 @@ (t x))) (defun cl--make-usage-args (arglist) - ;; `orig-args' can contain &cl-defs (an internal - ;; CL thingy I don't understand), so remove it. - (let ((x (memq '&cl-defs arglist))) - (when x (setq arglist (delq (car x) (remq (cadr x) arglist))))) - (let ((state nil)) - (mapcar (lambda (x) - (cond - ((symbolp x) - (if (eq ?\& (aref (symbol-name x) 0)) - (setq state x) - (make-symbol (upcase (symbol-name x))))) - ((not (consp x)) x) - ((memq state '(nil &rest)) (cl--make-usage-args x)) - (t ;(VAR INITFORM SVAR) or ((KEYWORD VAR) INITFORM SVAR). - (cl-list* - (if (and (consp (car x)) (eq state '&key)) - (list (caar x) (cl--make-usage-var (nth 1 (car x)))) - (cl--make-usage-var (car x))) - (nth 1 x) ;INITFORM. - (cl--make-usage-args (nthcdr 2 x)) ;SVAR. - )))) - arglist))) + (if (cdr-safe (last arglist)) ;Not a proper list. + (let* ((last (last arglist)) + (tail (cdr last))) + (unwind-protect + (progn + (setcdr last nil) + (nconc (cl--make-usage-args arglist) (cl--make-usage-var tail))) + (setcdr last tail))) + ;; `orig-args' can contain &cl-defs (an internal + ;; CL thingy I don't understand), so remove it. + (let ((x (memq '&cl-defs arglist))) + (when x (setq arglist (delq (car x) (remq (cadr x) arglist))))) + (let ((state nil)) + (mapcar (lambda (x) + (cond + ((symbolp x) + (if (eq ?\& (aref (symbol-name x) 0)) + (setq state x) + (make-symbol (upcase (symbol-name x))))) + ((not (consp x)) x) + ((memq state '(nil &rest)) (cl--make-usage-args x)) + (t ;(VAR INITFORM SVAR) or ((KEYWORD VAR) INITFORM SVAR). + (cl-list* + (if (and (consp (car x)) (eq state '&key)) + (list (caar x) (cl--make-usage-var (nth 1 (car x)))) + (cl--make-usage-var (car x))) + (nth 1 x) ;INITFORM. + (cl--make-usage-args (nthcdr 2 x)) ;SVAR. + )))) + arglist)))) (defun cl--do-arglist (args expr &optional num) ; uses bind-* (if (nlistp args) ------------------------------------------------------------ revno: 108691 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11714 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-06-22 23:48:18 -0400 message: * lisp/minibuffer.el (completion--twq-try): Try to fail more gracefully when the requote function doesn't work properly. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-23 01:02:17 +0000 +++ lisp/ChangeLog 2012-06-23 03:48:18 +0000 @@ -1,3 +1,8 @@ +2012-06-23 Stefan Monnier + + * minibuffer.el (completion--twq-try): Try to fail more gracefully when + the requote function doesn't work properly (bug#11714). + 2012-06-23 Glenn Morris * pcmpl-rpm.el (pcmpl-rpm-packages): Give status messages. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2012-06-18 20:39:52 +0000 +++ lisp/minibuffer.el 2012-06-23 03:48:18 +0000 @@ -488,7 +488,7 @@ (defun completion--twq-try (string ustring completion point unquote requote) - ;; Basically two case: either the new result is + ;; Basically two cases: either the new result is ;; - commonprefix1 morecommonprefix suffix ;; - commonprefix newprefix suffix (pcase-let* @@ -505,8 +505,13 @@ ((> point (length prefix)) (+ qpos (length qstr1))) (t (car (funcall requote point string)))))) ;; Make sure `requote' worked. - (assert (equal (funcall unquote qstring) completion)) - (cons qstring qpoint))) + (if (equal (funcall unquote qstring) completion) + (cons qstring qpoint) + ;; If requote failed (e.g. because sifn-requote did not handle + ;; Tramp's "/foo:/bar//baz -> /foo:/baz" truncation), then at least + ;; try requote properly. + (let ((qstr (funcall qfun completion))) + (cons qstr (length qstr)))))) (defun completion--string-equal-p (s1 s2) (eq t (compare-strings s1 nil nil s2 nil nil 'ignore-case))) @@ -2130,6 +2135,12 @@ ;; find the position corresponding to UPOS in QSTR, but ;; substitute-in-file-name can do anything, depending on file-name-handlers. ;; Kind of like in rfn-eshadow-update-overlay, only worse. + ;; FIXME: example of thing we do not handle: Tramp's makes + ;; (substitute-in-file-name "/foo:~/bar//baz") -> "/scpc:foo:/baz". + ;; FIXME: One way to try and handle "all" cases is to require + ;; substitute-in-file-name to preserve text-properties, so we could + ;; apply text-properties to the input string and then look for them in + ;; the output to understand what comes from where. (let ((qpos 0)) ;; Handle substitute-in-file-name's truncation behavior. (let (tpos) @@ -2824,14 +2835,14 @@ (defun completion--sreverse (str) "Like `reverse' but for a string STR rather than a list." - (apply 'string (nreverse (mapcar 'identity str)))) + (apply #'string (nreverse (mapcar 'identity str)))) (defun completion--common-suffix (strs) "Return the common suffix of the strings STRS." (completion--sreverse (try-completion "" - (mapcar 'completion--sreverse strs)))) + (mapcar #'completion--sreverse strs)))) (defun completion-pcm--merge-completions (strs pattern) "Extract the commonality in STRS, with the help of PATTERN. ------------------------------------------------------------ revno: 108690 committer: Glenn Morris branch nick: trunk timestamp: Fri 2012-06-22 21:02:17 -0400 message: * lisp/pcmpl-rpm.el (pcmpl-rpm-packages): Give status messages. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 21:24:54 +0000 +++ lisp/ChangeLog 2012-06-23 01:02:17 +0000 @@ -1,3 +1,7 @@ +2012-06-23 Glenn Morris + + * pcmpl-rpm.el (pcmpl-rpm-packages): Give status messages. + 2012-06-22 Stefan Monnier Further GV/CL cleanups. === modified file 'lisp/pcmpl-rpm.el' --- lisp/pcmpl-rpm.el 2012-06-22 16:00:34 +0000 +++ lisp/pcmpl-rpm.el 2012-06-23 01:02:17 +0000 @@ -67,8 +67,6 @@ ;; Functions: -;; This can be slow, so: -;; Consider printing an explanatory message before running -qa. (defun pcmpl-rpm-packages () "Return a list of all installed rpm packages." (if (and pcmpl-rpm-cache @@ -76,13 +74,16 @@ (let ((mtime (nth 5 (file-attributes pcmpl-rpm-cache-stamp-file)))) (and mtime (not (time-less-p pcmpl-rpm-cache-time mtime))))) pcmpl-rpm-packages + (message "Getting list of installed rpms...") (setq pcmpl-rpm-cache-time (current-time) pcmpl-rpm-packages (split-string (apply 'pcomplete-process-result "rpm" (append '("-q" "-a") (if (stringp pcmpl-rpm-query-options) (list pcmpl-rpm-query-options) - pcmpl-rpm-query-options))))))) + pcmpl-rpm-query-options))))) + (message "Getting list of installed rpms...done") + pcmpl-rpm-packages)) ;; Should this use pcmpl-rpm-query-options? ;; I don't think it would speed it up at all (?). ------------------------------------------------------------ revno: 108689 fixes bug(s): http://debbugs.gnu.org/9000 committer: Paul Eggert branch nick: trunk timestamp: Fri 2012-06-22 14:26:37 -0700 message: Add gnulib files to support higher-resolution time stamps. diff: === added file 'lib/dtotimespec.c' --- lib/dtotimespec.c 1970-01-01 00:00:00 +0000 +++ lib/dtotimespec.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,69 @@ +/* Convert double to timespec. + + Copyright (C) 2011-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* written by Paul Eggert */ + +/* Convert the double value SEC to a struct timespec. Round toward + positive infinity. On overflow, return an extremal value. */ + +#include + +#include "timespec.h" + +#include "intprops.h" + +struct timespec +dtotimespec (double sec) +{ + enum { BILLION = 1000 * 1000 * 1000 }; + double min_representable = TYPE_MINIMUM (time_t); + double max_representable = + ((TYPE_MAXIMUM (time_t) * (double) BILLION + (BILLION - 1)) + / BILLION); + struct timespec r; + + if (! (min_representable < sec)) + { + r.tv_sec = TYPE_MINIMUM (time_t); + r.tv_nsec = 0; + } + else if (! (sec < max_representable)) + { + r.tv_sec = TYPE_MAXIMUM (time_t); + r.tv_nsec = BILLION - 1; + } + else + { + time_t s = sec; + double frac = BILLION * (sec - s); + long ns = frac; + ns += ns < frac; + s += ns / BILLION; + ns %= BILLION; + + if (ns < 0) + { + s--; + ns += BILLION; + } + + r.tv_sec = s; + r.tv_nsec = ns; + } + + return r; +} === added file 'lib/gettime.c' --- lib/gettime.c 1970-01-01 00:00:00 +0000 +++ lib/gettime.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,48 @@ +/* gettime -- get the system clock + + Copyright (C) 2002, 2004-2007, 2009-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert. */ + +#include + +#include "timespec.h" + +#include + +/* Get the system time into *TS. */ + +void +gettime (struct timespec *ts) +{ +#if HAVE_NANOTIME + nanotime (ts); +#else + +# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME + if (clock_gettime (CLOCK_REALTIME, ts) == 0) + return; +# endif + + { + struct timeval tv; + gettimeofday (&tv, NULL); + ts->tv_sec = tv.tv_sec; + ts->tv_nsec = tv.tv_usec * 1000; + } + +#endif +} === added file 'lib/gettimeofday.c' --- lib/gettimeofday.c 1970-01-01 00:00:00 +0000 +++ lib/gettimeofday.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,154 @@ +/* Provide gettimeofday for systems that don't have it or for which it's broken. + + Copyright (C) 2001-2003, 2005-2007, 2009-2012 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* written by Jim Meyering */ + +#include + +/* Specification. */ +#include + +#include + +#if HAVE_SYS_TIMEB_H +# include +#endif + +#if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME + +/* Work around the bug in some systems whereby gettimeofday clobbers + the static buffer that localtime uses for its return value. The + gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has + this problem. The tzset replacement is necessary for at least + Solaris 2.5, 2.5.1, and 2.6. */ + +static struct tm tm_zero_buffer; +static struct tm *localtime_buffer_addr = &tm_zero_buffer; + +# undef localtime +extern struct tm *localtime (time_t const *); + +# undef gmtime +extern struct tm *gmtime (time_t const *); + +/* This is a wrapper for localtime. It is used only on systems for which + gettimeofday clobbers the static buffer used for localtime's result. + + On the first call, record the address of the static buffer that + localtime uses for its result. */ + +struct tm * +rpl_localtime (time_t const *timep) +{ + struct tm *tm = localtime (timep); + + if (localtime_buffer_addr == &tm_zero_buffer) + localtime_buffer_addr = tm; + + return tm; +} + +/* Same as above, since gmtime and localtime use the same buffer. */ +struct tm * +rpl_gmtime (time_t const *timep) +{ + struct tm *tm = gmtime (timep); + + if (localtime_buffer_addr == &tm_zero_buffer) + localtime_buffer_addr = tm; + + return tm; +} + +#endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */ + +#if TZSET_CLOBBERS_LOCALTIME + +# undef tzset +extern void tzset (void); + +/* This is a wrapper for tzset, for systems on which tzset may clobber + the static buffer used for localtime's result. */ +void +rpl_tzset (void) +{ + /* Save and restore the contents of the buffer used for localtime's + result around the call to tzset. */ + struct tm save = *localtime_buffer_addr; + tzset (); + *localtime_buffer_addr = save; +} +#endif + +/* This is a wrapper for gettimeofday. It is used only on systems + that lack this function, or whose implementation of this function + causes problems. */ + +int +gettimeofday (struct timeval *restrict tv, void *restrict tz) +{ +#undef gettimeofday +#if HAVE_GETTIMEOFDAY +# if GETTIMEOFDAY_CLOBBERS_LOCALTIME + /* Save and restore the contents of the buffer used for localtime's + result around the call to gettimeofday. */ + struct tm save = *localtime_buffer_addr; +# endif + +# if defined timeval /* 'struct timeval' overridden by gnulib? */ +# undef timeval + struct timeval otv; + int result = gettimeofday (&otv, (struct timezone *) tz); + if (result == 0) + { + tv->tv_sec = otv.tv_sec; + tv->tv_usec = otv.tv_usec; + } +# else + int result = gettimeofday (tv, (struct timezone *) tz); +# endif + +# if GETTIMEOFDAY_CLOBBERS_LOCALTIME + *localtime_buffer_addr = save; +# endif + + return result; + +#else + +# if HAVE__FTIME + + struct _timeb timebuf; + _ftime (&timebuf); + tv->tv_sec = timebuf.time; + tv->tv_usec = timebuf.millitm * 1000; + +# else + +# if !defined OK_TO_USE_1S_CLOCK +# error "Only 1-second nominal clock resolution found. Is that intended?" \ + "If so, compile with the -DOK_TO_USE_1S_CLOCK option." +# endif + tv->tv_sec = time (NULL); + tv->tv_usec = 0; + +# endif + + return 0; + +#endif +} === added file 'lib/pselect.c' --- lib/pselect.c 1970-01-01 00:00:00 +0000 +++ lib/pselect.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,76 @@ +/* pselect - synchronous I/O multiplexing + + Copyright 2011-2012 Free Software Foundation, Inc. + + This file is part of gnulib. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ + +/* written by Paul Eggert */ + +#include + +#include + +#include +#include + +/* Examine the size-NFDS file descriptor sets in RFDS, WFDS, and XFDS + to see whether some of their descriptors are ready for reading, + ready for writing, or have exceptions pending. Wait for at most + TIMEOUT seconds, and use signal mask SIGMASK while waiting. A null + pointer parameter stands for no descriptors, an infinite timeout, + or an unaffected signal mask. */ + +int +pselect (int nfds, fd_set *restrict rfds, + fd_set *restrict wfds, fd_set *restrict xfds, + struct timespec const *restrict timeout, + sigset_t const *restrict sigmask) +{ + int select_result; + sigset_t origmask; + struct timeval tv, *tvp; + + if (timeout) + { + if (! (0 <= timeout->tv_nsec && timeout->tv_nsec < 1000000000)) + { + errno = EINVAL; + return -1; + } + + tv.tv_sec = timeout->tv_sec; + tv.tv_usec = (timeout->tv_nsec + 999) / 1000; + tvp = &tv; + } + else + tvp = NULL; + + /* Signal mask munging should be atomic, but this is the best we can + do in this emulation. */ + if (sigmask) + pthread_sigmask (SIG_SETMASK, sigmask, &origmask); + + select_result = select (nfds, rfds, wfds, xfds, tvp); + + if (sigmask) + { + int select_errno = errno; + pthread_sigmask (SIG_SETMASK, &origmask, NULL); + errno = select_errno; + } + + return select_result; +} === added file 'lib/stat-time.h' --- lib/stat-time.h 1970-01-01 00:00:00 +0000 +++ lib/stat-time.h 2012-06-22 21:26:37 +0000 @@ -0,0 +1,189 @@ +/* stat-related time functions. + + Copyright (C) 2005, 2007, 2009-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert. */ + +#ifndef STAT_TIME_H +#define STAT_TIME_H 1 + +#include +#include + +/* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type + struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, + ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST, + if available. ST_XTIM can be st_atim, st_ctim, st_mtim, or st_birthtim + for access, status change, data modification, or birth (creation) + time respectively. + + These macros are private to stat-time.h. */ +#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC +# ifdef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC +# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim) +# else +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec) +# endif +#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC +# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec) +#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec) +#elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.st__tim.tv_nsec) +#endif + +/* Return the nanosecond component of *ST's access time. */ +static inline long int +get_stat_atime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_atim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_atim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's status change time. */ +static inline long int +get_stat_ctime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_ctim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_ctim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's data modification time. */ +static inline long int +get_stat_mtime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_mtim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_mtim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's birth time. */ +static inline long int +get_stat_birthtime_ns (struct stat const *st) +{ +# if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC + return STAT_TIMESPEC (st, st_birthtim).tv_nsec; +# elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC + return STAT_TIMESPEC_NS (st, st_birthtim); +# else + /* Avoid a "parameter unused" warning. */ + (void) st; + return 0; +# endif +} + +/* Return *ST's access time. */ +static inline struct timespec +get_stat_atime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_atim); +#else + struct timespec t; + t.tv_sec = st->st_atime; + t.tv_nsec = get_stat_atime_ns (st); + return t; +#endif +} + +/* Return *ST's status change time. */ +static inline struct timespec +get_stat_ctime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_ctim); +#else + struct timespec t; + t.tv_sec = st->st_ctime; + t.tv_nsec = get_stat_ctime_ns (st); + return t; +#endif +} + +/* Return *ST's data modification time. */ +static inline struct timespec +get_stat_mtime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_mtim); +#else + struct timespec t; + t.tv_sec = st->st_mtime; + t.tv_nsec = get_stat_mtime_ns (st); + return t; +#endif +} + +/* Return *ST's birth time, if available; otherwise return a value + with tv_sec and tv_nsec both equal to -1. */ +static inline struct timespec +get_stat_birthtime (struct stat const *st) +{ + struct timespec t; + +#if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC) + t = STAT_TIMESPEC (st, st_birthtim); +#elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC + t.tv_sec = st->st_birthtime; + t.tv_nsec = st->st_birthtimensec; +#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* Native Windows platforms (but not Cygwin) put the "file creation + time" in st_ctime (!). See + . */ + t.tv_sec = st->st_ctime; + t.tv_nsec = 0; +#else + /* Birth time is not supported. */ + t.tv_sec = -1; + t.tv_nsec = -1; + /* Avoid a "parameter unused" warning. */ + (void) st; +#endif + +#if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC) + /* FreeBSD and NetBSD sometimes signal the absence of knowledge by + using zero. Attempt to work around this problem. Alas, this can + report failure even for valid time stamps. Also, NetBSD + sometimes returns junk in the birth time fields; work around this + bug if it is detected. */ + if (! (t.tv_sec && 0 <= t.tv_nsec && t.tv_nsec < 1000000000)) + { + t.tv_sec = -1; + t.tv_nsec = -1; + } +#endif + + return t; +} + +#endif === added file 'lib/sys_select.in.h' --- lib/sys_select.in.h 1970-01-01 00:00:00 +0000 +++ lib/sys_select.in.h 2012-06-22 21:26:37 +0000 @@ -0,0 +1,298 @@ +/* Substitute for . + Copyright (C) 2007-2012 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +# if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +# endif +@PRAGMA_COLUMNS@ + +/* On OSF/1, and include . + Simply delegate to the system's header in this case. */ +#if @HAVE_SYS_SELECT_H@ && defined __osf__ && (defined _SYS_TYPES_H_ && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H) && defined _OSF_SOURCE + +# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H +# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ + +#elif @HAVE_SYS_SELECT_H@ && defined __osf__ && (defined _SYS_TIME_H_ && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H) && defined _OSF_SOURCE + +# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H +# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ + +/* On IRIX 6.5, includes , which includes + , which includes . At this point we cannot + include , because that includes , which + gives a syntax error because has not been completely + processed. Simply delegate to the system's header in this case. */ +#elif @HAVE_SYS_SELECT_H@ && defined __sgi && (defined _SYS_BSD_TYPES_H && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H) + +# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H +# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ + +/* On OpenBSD 5.0, includes , which includes + . At this point we cannot include , because that + includes gnulib's pthread.h override, which gives a syntax error because + /usr/include/pthread.h has not been completely processed. Simply delegate + to the system's header in this case. */ +#elif @HAVE_SYS_SELECT_H@ && defined __OpenBSD__ && (defined _PTHREAD_H_ && !defined PTHREAD_MUTEX_INITIALIZER) + +# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ + +#else + +#ifndef _@GUARD_PREFIX@_SYS_SELECT_H + +/* On many platforms, assumes prior inclusion of + . Also, mingw defines sigset_t there, instead of + in where it belongs. */ +#include + +#if @HAVE_SYS_SELECT_H@ + +/* On OSF/1 4.0, provides only a forward declaration + of 'struct timeval', and no definition of this type. + Also, Mac OS X, AIX, HP-UX, IRIX, Solaris, Interix declare select() + in . + But avoid namespace pollution on glibc systems. */ +# ifndef __GLIBC__ +# include +# endif + +/* On AIX 7 and Solaris 10, provides an FD_ZERO implementation + that relies on memset(), but without including . + But in any case avoid namespace pollution on glibc systems. */ +# if (defined __OpenBSD__ || defined _AIX || defined __sun || defined __osf__ || defined __BEOS__) \ + && ! defined __GLIBC__ +# include +# endif + +/* The include_next requires a split double-inclusion guard. */ +# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@ + +#endif + +/* Get definition of 'sigset_t'. + But avoid namespace pollution on glibc systems. + Do this after the include_next (for the sake of OpenBSD 5.0) but before + the split double-inclusion guard (for the sake of Solaris). */ +#if !(defined __GLIBC__ && !defined __UCLIBC__) +# include +#endif + +#ifndef _@GUARD_PREFIX@_SYS_SELECT_H +#define _@GUARD_PREFIX@_SYS_SELECT_H + +#if !@HAVE_SYS_SELECT_H@ +/* A platform that lacks . */ +/* Get the 'struct timeval' and 'fd_set' types and the FD_* macros + on most platforms. */ +# include +/* On HP-UX 11, provides an FD_ZERO implementation + that relies on memset(), but without including . */ +# if defined __hpux +# include +# endif +/* On native Windows platforms: + Get the 'fd_set' type. + Get the close() declaration before we override it. */ +# if @HAVE_WINSOCK2_H@ +# if !defined _GL_INCLUDING_WINSOCK2_H +# define _GL_INCLUDING_WINSOCK2_H +# include +# undef _GL_INCLUDING_WINSOCK2_H +# endif +# include +# endif +#endif + +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + +/* The definition of _GL_WARN_ON_USE is copied here. */ + + +/* Fix some definitions from . */ + +#if @HAVE_WINSOCK2_H@ + +# if !GNULIB_defined_rpl_fd_isset + +/* Re-define FD_ISSET to avoid a WSA call while we are not using + network sockets. */ +static inline int +rpl_fd_isset (SOCKET fd, fd_set * set) +{ + u_int i; + if (set == NULL) + return 0; + + for (i = 0; i < set->fd_count; i++) + if (set->fd_array[i] == fd) + return 1; + + return 0; +} + +# define GNULIB_defined_rpl_fd_isset 1 +# endif + +# undef FD_ISSET +# define FD_ISSET(fd, set) rpl_fd_isset(fd, set) + +#endif + +/* Hide some function declarations from . */ + +#if @HAVE_WINSOCK2_H@ +# if !defined _@GUARD_PREFIX@_UNISTD_H +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef close +# define close close_used_without_including_unistd_h +# else + _GL_WARN_ON_USE (close, + "close() used without including "); +# endif +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef gethostname +# define gethostname gethostname_used_without_including_unistd_h +# else + _GL_WARN_ON_USE (gethostname, + "gethostname() used without including "); +# endif +# endif +# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef socket +# define socket socket_used_without_including_sys_socket_h +# undef connect +# define connect connect_used_without_including_sys_socket_h +# undef accept +# define accept accept_used_without_including_sys_socket_h +# undef bind +# define bind bind_used_without_including_sys_socket_h +# undef getpeername +# define getpeername getpeername_used_without_including_sys_socket_h +# undef getsockname +# define getsockname getsockname_used_without_including_sys_socket_h +# undef getsockopt +# define getsockopt getsockopt_used_without_including_sys_socket_h +# undef listen +# define listen listen_used_without_including_sys_socket_h +# undef recv +# define recv recv_used_without_including_sys_socket_h +# undef send +# define send send_used_without_including_sys_socket_h +# undef recvfrom +# define recvfrom recvfrom_used_without_including_sys_socket_h +# undef sendto +# define sendto sendto_used_without_including_sys_socket_h +# undef setsockopt +# define setsockopt setsockopt_used_without_including_sys_socket_h +# undef shutdown +# define shutdown shutdown_used_without_including_sys_socket_h +# else + _GL_WARN_ON_USE (socket, + "socket() used without including "); + _GL_WARN_ON_USE (connect, + "connect() used without including "); + _GL_WARN_ON_USE (accept, + "accept() used without including "); + _GL_WARN_ON_USE (bind, + "bind() used without including "); + _GL_WARN_ON_USE (getpeername, + "getpeername() used without including "); + _GL_WARN_ON_USE (getsockname, + "getsockname() used without including "); + _GL_WARN_ON_USE (getsockopt, + "getsockopt() used without including "); + _GL_WARN_ON_USE (listen, + "listen() used without including "); + _GL_WARN_ON_USE (recv, + "recv() used without including "); + _GL_WARN_ON_USE (send, + "send() used without including "); + _GL_WARN_ON_USE (recvfrom, + "recvfrom() used without including "); + _GL_WARN_ON_USE (sendto, + "sendto() used without including "); + _GL_WARN_ON_USE (setsockopt, + "setsockopt() used without including "); + _GL_WARN_ON_USE (shutdown, + "shutdown() used without including "); +# endif +# endif +#endif + + +#if @GNULIB_PSELECT@ +# if @REPLACE_PSELECT@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef pselect +# define pselect rpl_pselect +# endif +_GL_FUNCDECL_RPL (pselect, int, + (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, + struct timespec const *restrict, const sigset_t *restrict)); +_GL_CXXALIAS_RPL (pselect, int, + (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, + struct timespec const *restrict, const sigset_t *restrict)); +# else +# if !@HAVE_PSELECT@ +_GL_FUNCDECL_SYS (pselect, int, + (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, + struct timespec const *restrict, const sigset_t *restrict)); +# endif +_GL_CXXALIAS_SYS (pselect, int, + (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, + struct timespec const *restrict, const sigset_t *restrict)); +# endif +_GL_CXXALIASWARN (pselect); +#elif defined GNULIB_POSIXCHECK +# undef pselect +# if HAVE_RAW_DECL_PSELECT +_GL_WARN_ON_USE (pselect, "pselect is not portable - " + "use gnulib module pselect for portability"); +# endif +#endif + +#if @GNULIB_SELECT@ +# if @REPLACE_SELECT@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef select +# define select rpl_select +# endif +_GL_FUNCDECL_RPL (select, int, + (int, fd_set *, fd_set *, fd_set *, struct timeval *)); +_GL_CXXALIAS_RPL (select, int, + (int, fd_set *, fd_set *, fd_set *, struct timeval *)); +# else +_GL_CXXALIAS_SYS (select, int, + (int, fd_set *, fd_set *, fd_set *, struct timeval *)); +# endif +_GL_CXXALIASWARN (select); +#elif @HAVE_WINSOCK2_H@ +# undef select +# define select select_used_without_requesting_gnulib_module_select +#elif defined GNULIB_POSIXCHECK +# undef select +# if HAVE_RAW_DECL_SELECT +_GL_WARN_ON_USE (select, "select is not always POSIX compliant - " + "use gnulib module select for portability"); +# endif +#endif + + +#endif /* _@GUARD_PREFIX@_SYS_SELECT_H */ +#endif /* _@GUARD_PREFIX@_SYS_SELECT_H */ +#endif /* OSF/1 */ === added file 'lib/sys_time.in.h' --- lib/sys_time.in.h 1970-01-01 00:00:00 +0000 +++ lib/sys_time.in.h 2012-06-22 21:26:37 +0000 @@ -0,0 +1,205 @@ +/* Provide a more complete sys/time.h. + + Copyright (C) 2007-2012 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* Written by Paul Eggert. */ + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif +@PRAGMA_COLUMNS@ + +#if defined _@GUARD_PREFIX@_SYS_TIME_H + +/* Simply delegate to the system's header, without adding anything. */ +# if @HAVE_SYS_TIME_H@ +# @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ +# endif + +#else + +# define _@GUARD_PREFIX@_SYS_TIME_H + +# if @HAVE_SYS_TIME_H@ +# @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ +# else +# include +# endif + +/* On native Windows with MSVC, get the 'struct timeval' type. + Also, on native Windows with a 64-bit time_t, where we are overriding the + 'struct timeval' type, get all declarations of system functions whose + signature contains 'struct timeval'. */ +# if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H +# define _GL_INCLUDING_WINSOCK2_H +# include +# undef _GL_INCLUDING_WINSOCK2_H +# endif + +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + +/* The definition of _GL_ARG_NONNULL is copied here. */ + +/* The definition of _GL_WARN_ON_USE is copied here. */ + +# ifdef __cplusplus +extern "C" { +# endif + +# if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@ + +# if @REPLACE_STRUCT_TIMEVAL@ +# define timeval rpl_timeval +# endif + +# if !GNULIB_defined_struct_timeval +struct timeval +{ + time_t tv_sec; + long int tv_usec; +}; +# define GNULIB_defined_struct_timeval 1 +# endif + +# endif + +# ifdef __cplusplus +} +# endif + +# if @GNULIB_GETTIMEOFDAY@ +# if @REPLACE_GETTIMEOFDAY@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef gettimeofday +# define gettimeofday rpl_gettimeofday +# endif +_GL_FUNCDECL_RPL (gettimeofday, int, + (struct timeval *restrict, void *restrict) + _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (gettimeofday, int, + (struct timeval *restrict, void *restrict)); +# else +# if !@HAVE_GETTIMEOFDAY@ +_GL_FUNCDECL_SYS (gettimeofday, int, + (struct timeval *restrict, void *restrict) + _GL_ARG_NONNULL ((1))); +# endif +/* Need to cast, because on glibc systems, by default, the second argument is + struct timezone *. */ +_GL_CXXALIAS_SYS_CAST (gettimeofday, int, + (struct timeval *restrict, void *restrict)); +# endif +_GL_CXXALIASWARN (gettimeofday); +# elif defined GNULIB_POSIXCHECK +# undef gettimeofday +# if HAVE_RAW_DECL_GETTIMEOFDAY +_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " + "use gnulib module gettimeofday for portability"); +# endif +# endif + +/* Hide some function declarations from . */ + +# if defined _MSC_VER && @HAVE_WINSOCK2_H@ +# if !defined _@GUARD_PREFIX@_UNISTD_H +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef close +# define close close_used_without_including_unistd_h +# else + _GL_WARN_ON_USE (close, + "close() used without including "); +# endif +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef gethostname +# define gethostname gethostname_used_without_including_unistd_h +# else + _GL_WARN_ON_USE (gethostname, + "gethostname() used without including "); +# endif +# endif +# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef socket +# define socket socket_used_without_including_sys_socket_h +# undef connect +# define connect connect_used_without_including_sys_socket_h +# undef accept +# define accept accept_used_without_including_sys_socket_h +# undef bind +# define bind bind_used_without_including_sys_socket_h +# undef getpeername +# define getpeername getpeername_used_without_including_sys_socket_h +# undef getsockname +# define getsockname getsockname_used_without_including_sys_socket_h +# undef getsockopt +# define getsockopt getsockopt_used_without_including_sys_socket_h +# undef listen +# define listen listen_used_without_including_sys_socket_h +# undef recv +# define recv recv_used_without_including_sys_socket_h +# undef send +# define send send_used_without_including_sys_socket_h +# undef recvfrom +# define recvfrom recvfrom_used_without_including_sys_socket_h +# undef sendto +# define sendto sendto_used_without_including_sys_socket_h +# undef setsockopt +# define setsockopt setsockopt_used_without_including_sys_socket_h +# undef shutdown +# define shutdown shutdown_used_without_including_sys_socket_h +# else + _GL_WARN_ON_USE (socket, + "socket() used without including "); + _GL_WARN_ON_USE (connect, + "connect() used without including "); + _GL_WARN_ON_USE (accept, + "accept() used without including "); + _GL_WARN_ON_USE (bind, + "bind() used without including "); + _GL_WARN_ON_USE (getpeername, + "getpeername() used without including "); + _GL_WARN_ON_USE (getsockname, + "getsockname() used without including "); + _GL_WARN_ON_USE (getsockopt, + "getsockopt() used without including "); + _GL_WARN_ON_USE (listen, + "listen() used without including "); + _GL_WARN_ON_USE (recv, + "recv() used without including "); + _GL_WARN_ON_USE (send, + "send() used without including "); + _GL_WARN_ON_USE (recvfrom, + "recvfrom() used without including "); + _GL_WARN_ON_USE (sendto, + "sendto() used without including "); + _GL_WARN_ON_USE (setsockopt, + "setsockopt() used without including "); + _GL_WARN_ON_USE (shutdown, + "shutdown() used without including "); +# endif +# endif +# if !defined _@GUARD_PREFIX@_SYS_SELECT_H +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef select +# define select select_used_without_including_sys_select_h +# else + _GL_WARN_ON_USE (select, + "select() used without including "); +# endif +# endif +# endif + +#endif /* _@GUARD_PREFIX@_SYS_TIME_H */ === added file 'lib/timespec-add.c' --- lib/timespec-add.c 1970-01-01 00:00:00 +0000 +++ lib/timespec-add.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,71 @@ +/* Add two struct timespec values. + + Copyright (C) 2011-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert. */ + +/* Return the sum of two timespec values A and B. On overflow, return + an extremal value. This assumes 0 <= tv_nsec <= 999999999. */ + +#include +#include "timespec.h" + +#include "intprops.h" + +struct timespec +timespec_add (struct timespec a, struct timespec b) +{ + struct timespec r; + time_t rs = a.tv_sec; + time_t bs = b.tv_sec; + int ns = a.tv_nsec + b.tv_nsec; + int nsd = ns - 1000000000; + int rns = ns; + + if (0 <= nsd) + { + rns = nsd; + if (rs == TYPE_MAXIMUM (time_t)) + { + if (0 <= bs) + goto high_overflow; + bs++; + } + else + rs++; + } + + if (INT_ADD_OVERFLOW (rs, bs)) + { + if (rs < 0) + { + rs = TYPE_MINIMUM (time_t); + rns = 0; + } + else + { + high_overflow: + rs = TYPE_MAXIMUM (time_t); + rns = 999999999; + } + } + else + rs += bs; + + r.tv_sec = rs; + r.tv_nsec = rns; + return r; +} === added file 'lib/timespec-sub.c' --- lib/timespec-sub.c 1970-01-01 00:00:00 +0000 +++ lib/timespec-sub.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,72 @@ +/* Subtract two struct timespec values. + + Copyright (C) 2011-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert. */ + +/* Return the difference between two timespec values A and B. On + overflow, return an extremal value. This assumes 0 <= tv_nsec <= + 999999999. */ + +#include +#include +#include "timespec.h" + +#include "intprops.h" + +struct timespec +timespec_sub (struct timespec a, struct timespec b) +{ + struct timespec r; + time_t rs = a.tv_sec; + time_t bs = b.tv_sec; + int ns = a.tv_nsec - b.tv_nsec; + int rns = ns; + + if (ns < 0) + { + rns = ns + 1000000000; + if (rs == TYPE_MINIMUM (time_t)) + { + if (bs <= 0) + goto low_overflow; + bs--; + } + else + rs--; + } + + if (INT_SUBTRACT_OVERFLOW (rs, bs)) + { + if (rs < 0) + { + low_overflow: + rs = TYPE_MINIMUM (time_t); + rns = 0; + } + else + { + rs = TYPE_MAXIMUM (time_t); + rns = 999999999; + } + } + else + rs -= bs; + + r.tv_sec = rs; + r.tv_nsec = rns; + return r; +} === added file 'lib/timespec.h' --- lib/timespec.h 1970-01-01 00:00:00 +0000 +++ lib/timespec.h 2012-06-22 21:26:37 +0000 @@ -0,0 +1,82 @@ +/* timespec -- System time interface + + Copyright (C) 2000, 2002, 2004-2005, 2007, 2009-2012 Free Software + Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#if ! defined TIMESPEC_H +# define TIMESPEC_H + +# include + +/* Return negative, zero, positive if A < B, A == B, A > B, respectively. + + For each time stamp T, this code assumes that either: + + * T.tv_nsec is in the range 0..999999999; or + * T.tv_sec corresponds to a valid leap second on a host that supports + leap seconds, and T.tv_nsec is in the range 1000000000..1999999999; or + * T.tv_sec is the minimum time_t value and T.tv_nsec is -1; or + T.tv_sec is the maximum time_t value and T.tv_nsec is 2000000000. + This allows for special struct timespec values that are less or + greater than all possible valid time stamps. + + In all these cases, it is safe to subtract two tv_nsec values and + convert the result to integer without worrying about overflow on + any platform of interest to the GNU project, since all such + platforms have 32-bit int or wider. + + Replacing "(int) (a.tv_nsec - b.tv_nsec)" with something like + "a.tv_nsec < b.tv_nsec ? -1 : a.tv_nsec > b.tv_nsec" would cause + this function to work in some cases where the above assumption is + violated, but not in all cases (e.g., a.tv_sec==1, a.tv_nsec==-2, + b.tv_sec==0, b.tv_nsec==999999999) and is arguably not worth the + extra instructions. Using a subtraction has the advantage of + detecting some invalid cases on platforms that detect integer + overflow. + + The (int) cast avoids a gcc -Wconversion warning. */ + +static inline int +timespec_cmp (struct timespec a, struct timespec b) +{ + return (a.tv_sec < b.tv_sec ? -1 + : a.tv_sec > b.tv_sec ? 1 + : (int) (a.tv_nsec - b.tv_nsec)); +} + +/* Return -1, 0, 1, depending on the sign of A. A.tv_nsec must be + nonnegative. */ +static inline int +timespec_sign (struct timespec a) +{ + return a.tv_sec < 0 ? -1 : a.tv_sec || a.tv_nsec; +} + +struct timespec timespec_add (struct timespec, struct timespec); +struct timespec timespec_sub (struct timespec, struct timespec); +struct timespec dtotimespec (double); + +/* Return an approximation to A, of type 'double'. */ +static inline double +timespectod (struct timespec a) +{ + return a.tv_sec + a.tv_nsec / 1e9; +} + +void gettime (struct timespec *); +int settime (struct timespec const *); + +#endif === added file 'lib/utimens.c' --- lib/utimens.c 1970-01-01 00:00:00 +0000 +++ lib/utimens.c 2012-06-22 21:26:37 +0000 @@ -0,0 +1,533 @@ +/* Set file access and modification times. + + Copyright (C) 2003-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3 of the License, or any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert. */ + +/* derived from a function in touch.c */ + +#include + +#include "utimens.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "stat-time.h" +#include "timespec.h" + +#if HAVE_UTIME_H +# include +#endif + +/* Some systems (even some that do have ) don't declare this + structure anywhere. */ +#ifndef HAVE_STRUCT_UTIMBUF +struct utimbuf +{ + long actime; + long modtime; +}; +#endif + +/* Avoid recursion with rpl_futimens or rpl_utimensat. */ +#undef futimens +#undef utimensat + +/* Solaris 9 mistakenly succeeds when given a non-directory with a + trailing slash. Force the use of rpl_stat for a fix. */ +#ifndef REPLACE_FUNC_STAT_FILE +# define REPLACE_FUNC_STAT_FILE 0 +#endif + +#if HAVE_UTIMENSAT || HAVE_FUTIMENS +/* Cache variables for whether the utimensat syscall works; used to + avoid calling the syscall if we know it will just fail with ENOSYS, + and to avoid unnecessary work in massaging timestamps if the + syscall will work. Multiple variables are needed, to distinguish + between the following scenarios on Linux: + utimensat doesn't exist, or is in glibc but kernel 2.6.18 fails with ENOSYS + kernel 2.6.22 and earlier rejects AT_SYMLINK_NOFOLLOW + kernel 2.6.25 and earlier reject UTIME_NOW/UTIME_OMIT with non-zero tv_sec + kernel 2.6.32 used with xfs or ntfs-3g fail to honor UTIME_OMIT + utimensat completely works + For each cache variable: 0 = unknown, 1 = yes, -1 = no. */ +static int utimensat_works_really; +static int lutimensat_works_really; +#endif /* HAVE_UTIMENSAT || HAVE_FUTIMENS */ + +/* Validate the requested timestamps. Return 0 if the resulting + timespec can be used for utimensat (after possibly modifying it to + work around bugs in utimensat). Return a positive value if the + timespec needs further adjustment based on stat results: 1 if any + adjustment is needed for utimes, and 2 if any adjustment is needed + for Linux utimensat. Return -1, with errno set to EINVAL, if + timespec is out of range. */ +static int +validate_timespec (struct timespec timespec[2]) +{ + int result = 0; + int utime_omit_count = 0; + assert (timespec); + if ((timespec[0].tv_nsec != UTIME_NOW + && timespec[0].tv_nsec != UTIME_OMIT + && (timespec[0].tv_nsec < 0 || 1000000000 <= timespec[0].tv_nsec)) + || (timespec[1].tv_nsec != UTIME_NOW + && timespec[1].tv_nsec != UTIME_OMIT + && (timespec[1].tv_nsec < 0 || 1000000000 <= timespec[1].tv_nsec))) + { + errno = EINVAL; + return -1; + } + /* Work around Linux kernel 2.6.25 bug, where utimensat fails with + EINVAL if tv_sec is not 0 when using the flag values of tv_nsec. + Flag a Linux kernel 2.6.32 bug, where an mtime of UTIME_OMIT + fails to bump ctime. */ + if (timespec[0].tv_nsec == UTIME_NOW + || timespec[0].tv_nsec == UTIME_OMIT) + { + timespec[0].tv_sec = 0; + result = 1; + if (timespec[0].tv_nsec == UTIME_OMIT) + utime_omit_count++; + } + if (timespec[1].tv_nsec == UTIME_NOW + || timespec[1].tv_nsec == UTIME_OMIT) + { + timespec[1].tv_sec = 0; + result = 1; + if (timespec[1].tv_nsec == UTIME_OMIT) + utime_omit_count++; + } + return result + (utime_omit_count == 1); +} + +/* Normalize any UTIME_NOW or UTIME_OMIT values in *TS, using stat + buffer STATBUF to obtain the current timestamps of the file. If + both times are UTIME_NOW, set *TS to NULL (as this can avoid some + permissions issues). If both times are UTIME_OMIT, return true + (nothing further beyond the prior collection of STATBUF is + necessary); otherwise return false. */ +static bool +update_timespec (struct stat const *statbuf, struct timespec *ts[2]) +{ + struct timespec *timespec = *ts; + if (timespec[0].tv_nsec == UTIME_OMIT + && timespec[1].tv_nsec == UTIME_OMIT) + return true; + if (timespec[0].tv_nsec == UTIME_NOW + && timespec[1].tv_nsec == UTIME_NOW) + { + *ts = NULL; + return false; + } + + if (timespec[0].tv_nsec == UTIME_OMIT) + timespec[0] = get_stat_atime (statbuf); + else if (timespec[0].tv_nsec == UTIME_NOW) + gettime (×pec[0]); + + if (timespec[1].tv_nsec == UTIME_OMIT) + timespec[1] = get_stat_mtime (statbuf); + else if (timespec[1].tv_nsec == UTIME_NOW) + gettime (×pec[1]); + + return false; +} + +/* Set the access and modification time stamps of FD (a.k.a. FILE) to be + TIMESPEC[0] and TIMESPEC[1], respectively. + FD must be either negative -- in which case it is ignored -- + or a file descriptor that is open on FILE. + If FD is nonnegative, then FILE can be NULL, which means + use just futimes (or equivalent) instead of utimes (or equivalent), + and fail if on an old system without futimes (or equivalent). + If TIMESPEC is null, set the time stamps to the current time. + Return 0 on success, -1 (setting errno) on failure. */ + +int +fdutimens (int fd, char const *file, struct timespec const timespec[2]) +{ + struct timespec adjusted_timespec[2]; + struct timespec *ts = timespec ? adjusted_timespec : NULL; + int adjustment_needed = 0; + struct stat st; + + if (ts) + { + adjusted_timespec[0] = timespec[0]; + adjusted_timespec[1] = timespec[1]; + adjustment_needed = validate_timespec (ts); + } + if (adjustment_needed < 0) + return -1; + + /* Require that at least one of FD or FILE are potentially valid, to avoid + a Linux bug where futimens (AT_FDCWD, NULL) changes "." rather + than failing. */ + if (fd < 0 && !file) + { + errno = EBADF; + return -1; + } + + /* Some Linux-based NFS clients are buggy, and mishandle time stamps + of files in NFS file systems in some cases. We have no + configure-time test for this, but please see + for references to + some of the problems with Linux 2.6.16. If this affects you, + compile with -DHAVE_BUGGY_NFS_TIME_STAMPS; this is reported to + help in some cases, albeit at a cost in performance. But you + really should upgrade your kernel to a fixed version, since the + problem affects many applications. */ + +#if HAVE_BUGGY_NFS_TIME_STAMPS + if (fd < 0) + sync (); + else + fsync (fd); +#endif + + /* POSIX 2008 added two interfaces to set file timestamps with + nanosecond resolution; newer Linux implements both functions via + a single syscall. We provide a fallback for ENOSYS (for example, + compiling against Linux 2.6.25 kernel headers and glibc 2.7, but + running on Linux 2.6.18 kernel). */ +#if HAVE_UTIMENSAT || HAVE_FUTIMENS + if (0 <= utimensat_works_really) + { + int result; +# if __linux__ + /* As recently as Linux kernel 2.6.32 (Dec 2009), several file + systems (xfs, ntfs-3g) have bugs with a single UTIME_OMIT, + but work if both times are either explicitly specified or + UTIME_NOW. Work around it with a preparatory [f]stat prior + to calling futimens/utimensat; fortunately, there is not much + timing impact due to the extra syscall even on file systems + where UTIME_OMIT would have worked. FIXME: Simplify this in + 2012, when file system bugs are no longer common. */ + if (adjustment_needed == 2) + { + if (fd < 0 ? stat (file, &st) : fstat (fd, &st)) + return -1; + if (ts[0].tv_nsec == UTIME_OMIT) + ts[0] = get_stat_atime (&st); + else if (ts[1].tv_nsec == UTIME_OMIT) + ts[1] = get_stat_mtime (&st); + /* Note that st is good, in case utimensat gives ENOSYS. */ + adjustment_needed++; + } +# endif /* __linux__ */ +# if HAVE_UTIMENSAT + if (fd < 0) + { + result = utimensat (AT_FDCWD, file, ts, 0); +# ifdef __linux__ + /* Work around a kernel bug: + http://bugzilla.redhat.com/442352 + http://bugzilla.redhat.com/449910 + It appears that utimensat can mistakenly return 280 rather + than -1 upon ENOSYS failure. + FIXME: remove in 2010 or whenever the offending kernels + are no longer in common use. */ + if (0 < result) + errno = ENOSYS; +# endif /* __linux__ */ + if (result == 0 || errno != ENOSYS) + { + utimensat_works_really = 1; + return result; + } + } +# endif /* HAVE_UTIMENSAT */ +# if HAVE_FUTIMENS + if (0 <= fd) + { + result = futimens (fd, ts); +# ifdef __linux__ + /* Work around the same bug as above. */ + if (0 < result) + errno = ENOSYS; +# endif /* __linux__ */ + if (result == 0 || errno != ENOSYS) + { + utimensat_works_really = 1; + return result; + } + } +# endif /* HAVE_FUTIMENS */ + } + utimensat_works_really = -1; + lutimensat_works_really = -1; +#endif /* HAVE_UTIMENSAT || HAVE_FUTIMENS */ + + /* The platform lacks an interface to set file timestamps with + nanosecond resolution, so do the best we can, discarding any + fractional part of the timestamp. */ + + if (adjustment_needed || (REPLACE_FUNC_STAT_FILE && fd < 0)) + { + if (adjustment_needed != 3 + && (fd < 0 ? stat (file, &st) : fstat (fd, &st))) + return -1; + if (ts && update_timespec (&st, &ts)) + return 0; + } + + { +#if HAVE_FUTIMESAT || HAVE_WORKING_UTIMES + struct timeval timeval[2]; + struct timeval *t; + if (ts) + { + timeval[0].tv_sec = ts[0].tv_sec; + timeval[0].tv_usec = ts[0].tv_nsec / 1000; + timeval[1].tv_sec = ts[1].tv_sec; + timeval[1].tv_usec = ts[1].tv_nsec / 1000; + t = timeval; + } + else + t = NULL; + + if (fd < 0) + { +# if HAVE_FUTIMESAT + return futimesat (AT_FDCWD, file, t); +# endif + } + else + { + /* If futimesat or futimes fails here, don't try to speed things + up by returning right away. glibc can incorrectly fail with + errno == ENOENT if /proc isn't mounted. Also, Mandrake 10.0 + in high security mode doesn't allow ordinary users to read + /proc/self, so glibc incorrectly fails with errno == EACCES. + If errno == EIO, EPERM, or EROFS, it's probably safe to fail + right away, but these cases are rare enough that they're not + worth optimizing, and who knows what other messed-up systems + are out there? So play it safe and fall back on the code + below. */ + +# if (HAVE_FUTIMESAT && !FUTIMESAT_NULL_BUG) || HAVE_FUTIMES +# if HAVE_FUTIMESAT && !FUTIMESAT_NULL_BUG +# undef futimes +# define futimes(fd, t) futimesat (fd, NULL, t) +# endif + if (futimes (fd, t) == 0) + { +# if __linux__ && __GLIBC__ + /* Work around a longstanding glibc bug, still present as + of 2010-12-27. On older Linux kernels that lack both + utimensat and utimes, glibc's futimes rounds instead of + truncating when falling back on utime. The same bug + occurs in futimesat with a null 2nd arg. */ + if (t) + { + bool abig = 500000 <= t[0].tv_usec; + bool mbig = 500000 <= t[1].tv_usec; + if ((abig | mbig) && fstat (fd, &st) == 0) + { + /* If these two subtractions overflow, they'll + track the overflows inside the buggy glibc. */ + time_t adiff = st.st_atime - t[0].tv_sec; + time_t mdiff = st.st_mtime - t[1].tv_sec; + + struct timeval *tt = NULL; + struct timeval truncated_timeval[2]; + truncated_timeval[0] = t[0]; + truncated_timeval[1] = t[1]; + if (abig && adiff == 1 && get_stat_atime_ns (&st) == 0) + { + tt = truncated_timeval; + tt[0].tv_usec = 0; + } + if (mbig && mdiff == 1 && get_stat_mtime_ns (&st) == 0) + { + tt = truncated_timeval; + tt[1].tv_usec = 0; + } + if (tt) + futimes (fd, tt); + } + } +# endif + + return 0; + } +# endif + } +#endif /* HAVE_FUTIMESAT || HAVE_WORKING_UTIMES */ + + if (!file) + { +#if ! ((HAVE_FUTIMESAT && !FUTIMESAT_NULL_BUG) \ + || (HAVE_WORKING_UTIMES && HAVE_FUTIMES)) + errno = ENOSYS; +#endif + return -1; + } + +#if HAVE_WORKING_UTIMES + return utimes (file, t); +#else + { + struct utimbuf utimbuf; + struct utimbuf *ut; + if (ts) + { + utimbuf.actime = ts[0].tv_sec; + utimbuf.modtime = ts[1].tv_sec; + ut = &utimbuf; + } + else + ut = NULL; + + return utime (file, ut); + } +#endif /* !HAVE_WORKING_UTIMES */ + } +} + +/* Set the access and modification time stamps of FILE to be + TIMESPEC[0] and TIMESPEC[1], respectively. */ +int +utimens (char const *file, struct timespec const timespec[2]) +{ + return fdutimens (-1, file, timespec); +} + +/* Set the access and modification time stamps of FILE to be + TIMESPEC[0] and TIMESPEC[1], respectively, without dereferencing + symlinks. Fail with ENOSYS if the platform does not support + changing symlink timestamps, but FILE was a symlink. */ +int +lutimens (char const *file, struct timespec const timespec[2]) +{ + struct timespec adjusted_timespec[2]; + struct timespec *ts = timespec ? adjusted_timespec : NULL; + int adjustment_needed = 0; + struct stat st; + + if (ts) + { + adjusted_timespec[0] = timespec[0]; + adjusted_timespec[1] = timespec[1]; + adjustment_needed = validate_timespec (ts); + } + if (adjustment_needed < 0) + return -1; + + /* The Linux kernel did not support symlink timestamps until + utimensat, in version 2.6.22, so we don't need to mimic + fdutimens' worry about buggy NFS clients. But we do have to + worry about bogus return values. */ + +#if HAVE_UTIMENSAT + if (0 <= lutimensat_works_really) + { + int result; +# if __linux__ + /* As recently as Linux kernel 2.6.32 (Dec 2009), several file + systems (xfs, ntfs-3g) have bugs with a single UTIME_OMIT, + but work if both times are either explicitly specified or + UTIME_NOW. Work around it with a preparatory lstat prior to + calling utimensat; fortunately, there is not much timing + impact due to the extra syscall even on file systems where + UTIME_OMIT would have worked. FIXME: Simplify this in 2012, + when file system bugs are no longer common. */ + if (adjustment_needed == 2) + { + if (lstat (file, &st)) + return -1; + if (ts[0].tv_nsec == UTIME_OMIT) + ts[0] = get_stat_atime (&st); + else if (ts[1].tv_nsec == UTIME_OMIT) + ts[1] = get_stat_mtime (&st); + /* Note that st is good, in case utimensat gives ENOSYS. */ + adjustment_needed++; + } +# endif /* __linux__ */ + result = utimensat (AT_FDCWD, file, ts, AT_SYMLINK_NOFOLLOW); +# ifdef __linux__ + /* Work around a kernel bug: + http://bugzilla.redhat.com/442352 + http://bugzilla.redhat.com/449910 + It appears that utimensat can mistakenly return 280 rather + than -1 upon ENOSYS failure. + FIXME: remove in 2010 or whenever the offending kernels + are no longer in common use. */ + if (0 < result) + errno = ENOSYS; +# endif + if (result == 0 || errno != ENOSYS) + { + utimensat_works_really = 1; + lutimensat_works_really = 1; + return result; + } + } + lutimensat_works_really = -1; +#endif /* HAVE_UTIMENSAT */ + + /* The platform lacks an interface to set file timestamps with + nanosecond resolution, so do the best we can, discarding any + fractional part of the timestamp. */ + + if (adjustment_needed || REPLACE_FUNC_STAT_FILE) + { + if (adjustment_needed != 3 && lstat (file, &st)) + return -1; + if (ts && update_timespec (&st, &ts)) + return 0; + } + + /* On Linux, lutimes is a thin wrapper around utimensat, so there is + no point trying lutimes if utimensat failed with ENOSYS. */ +#if HAVE_LUTIMES && !HAVE_UTIMENSAT + { + struct timeval timeval[2]; + struct timeval *t; + int result; + if (ts) + { + timeval[0].tv_sec = ts[0].tv_sec; + timeval[0].tv_usec = ts[0].tv_nsec / 1000; + timeval[1].tv_sec = ts[1].tv_sec; + timeval[1].tv_usec = ts[1].tv_nsec / 1000; + t = timeval; + } + else + t = NULL; + + result = lutimes (file, t); + if (result == 0 || errno != ENOSYS) + return result; + } +#endif /* HAVE_LUTIMES && !HAVE_UTIMENSAT */ + + /* Out of luck for symlinks, but we still handle regular files. */ + if (!(adjustment_needed || REPLACE_FUNC_STAT_FILE) && lstat (file, &st)) + return -1; + if (!S_ISLNK (st.st_mode)) + return fdutimens (-1, file, ts); + errno = ENOSYS; + return -1; +} === added file 'lib/utimens.h' --- lib/utimens.h 1970-01-01 00:00:00 +0000 +++ lib/utimens.h 2012-06-22 21:26:37 +0000 @@ -0,0 +1,19 @@ +#include +int fdutimens (int, char const *, struct timespec const [2]); +int utimens (char const *, struct timespec const [2]); +int lutimens (char const *, struct timespec const [2]); + +#if GNULIB_FDUTIMENSAT +# include +# include + +int fdutimensat (int fd, int dir, char const *name, struct timespec const [2], + int atflag); + +/* Using this function makes application code slightly more readable. */ +static inline int +lutimensat (int dir, char const *file, struct timespec const times[2]) +{ + return utimensat (dir, file, times, AT_SYMLINK_NOFOLLOW); +} +#endif === added file 'm4/clock_time.m4' --- m4/clock_time.m4 1970-01-01 00:00:00 +0000 +++ m4/clock_time.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,31 @@ +# clock_time.m4 serial 10 +dnl Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Check for clock_gettime and clock_settime, and set LIB_CLOCK_GETTIME. +# For a program named, say foo, you should add a line like the following +# in the corresponding Makefile.am file: +# foo_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) + +AC_DEFUN([gl_CLOCK_TIME], +[ + dnl Persuade glibc and Solaris to declare these functions. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + + # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. + # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. + + # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* + # programs in the package would end up linked with that potentially-shared + # library, inducing unnecessary run-time overhead. + LIB_CLOCK_GETTIME= + AC_SUBST([LIB_CLOCK_GETTIME]) + gl_saved_libs=$LIBS + AC_SEARCH_LIBS([clock_gettime], [rt posix4], + [test "$ac_cv_search_clock_gettime" = "none required" || + LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) + AC_CHECK_FUNCS([clock_gettime clock_settime]) + LIBS=$gl_saved_libs +]) === added file 'm4/gettime.m4' --- m4/gettime.m4 1970-01-01 00:00:00 +0000 +++ m4/gettime.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,13 @@ +# gettime.m4 serial 8 +dnl Copyright (C) 2002, 2004-2006, 2009-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_GETTIME], +[ + dnl Prerequisites of lib/gettime.c. + AC_REQUIRE([gl_CLOCK_TIME]) + AC_REQUIRE([gl_TIMESPEC]) + AC_CHECK_FUNCS_ONCE([gettimeofday nanotime]) +]) === added file 'm4/gettimeofday.m4' --- m4/gettimeofday.m4 1970-01-01 00:00:00 +0000 +++ m4/gettimeofday.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,140 @@ +# serial 20 + +# Copyright (C) 2001-2003, 2005, 2007, 2009-2012 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Jim Meyering. + +AC_DEFUN([gl_FUNC_GETTIMEOFDAY], +[ + AC_REQUIRE([AC_C_RESTRICT]) + AC_REQUIRE([gl_HEADER_SYS_TIME_H]) + AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) + AC_CHECK_FUNCS_ONCE([gettimeofday]) + + gl_gettimeofday_timezone=void + if test $ac_cv_func_gettimeofday != yes; then + HAVE_GETTIMEOFDAY=0 + else + gl_FUNC_GETTIMEOFDAY_CLOBBER + AC_CACHE_CHECK([for gettimeofday with POSIX signature], + [gl_cv_func_gettimeofday_posix_signature], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct timeval c; + int gettimeofday (struct timeval *restrict, void *restrict); + ]], + [[/* glibc uses struct timezone * rather than the POSIX void * + if _GNU_SOURCE is defined. However, since the only portable + use of gettimeofday uses NULL as the second parameter, and + since the glibc definition is actually more typesafe, it is + not worth wrapping this to get a compliant signature. */ + int (*f) (struct timeval *restrict, void *restrict) + = gettimeofday; + int x = f (&c, 0); + return !(x | c.tv_sec | c.tv_usec); + ]])], + [gl_cv_func_gettimeofday_posix_signature=yes], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include +int gettimeofday (struct timeval *restrict, struct timezone *restrict); + ]])], + [gl_cv_func_gettimeofday_posix_signature=almost], + [gl_cv_func_gettimeofday_posix_signature=no])])]) + if test $gl_cv_func_gettimeofday_posix_signature = almost; then + gl_gettimeofday_timezone='struct timezone' + elif test $gl_cv_func_gettimeofday_posix_signature != yes; then + REPLACE_GETTIMEOFDAY=1 + fi + dnl If we override 'struct timeval', we also have to override gettimeofday. + if test $REPLACE_STRUCT_TIMEVAL = 1; then + REPLACE_GETTIMEOFDAY=1 + fi + m4_ifdef([gl_FUNC_TZSET_CLOBBER], [ + gl_FUNC_TZSET_CLOBBER + case "$gl_cv_func_tzset_clobber" in + *yes) + REPLACE_GETTIMEOFDAY=1 + gl_GETTIMEOFDAY_REPLACE_LOCALTIME + AC_DEFINE([tzset], [rpl_tzset], + [Define to rpl_tzset if the wrapper function should be used.]) + AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], [1], + [Define if tzset clobbers localtime's static buffer.]) + ;; + esac + ]) + fi + AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], + [Define this to 'void' or 'struct timezone' to match the system's + declaration of the second argument to gettimeofday.]) +]) + + +dnl See if gettimeofday clobbers the static buffer that localtime uses +dnl for its return value. The gettimeofday function from Mac OS X 10.0.4 +dnl (i.e., Darwin 1.3.7) has this problem. +dnl +dnl If it does, then arrange to use gettimeofday and localtime only via +dnl the wrapper functions that work around the problem. + +AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER], +[ + AC_REQUIRE([gl_HEADER_SYS_TIME_H]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer], + [gl_cv_func_gettimeofday_clobber], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + ]], + [[ + time_t t = 0; + struct tm *lt; + struct tm saved_lt; + struct timeval tv; + lt = localtime (&t); + saved_lt = *lt; + gettimeofday (&tv, NULL); + return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; + ]])], + [gl_cv_func_gettimeofday_clobber=no], + [gl_cv_func_gettimeofday_clobber=yes], + [# When cross-compiling: + case "$host_os" in + # Guess all is fine on glibc systems. + *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # If we don't know, assume the worst. + *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; + esac + ])]) + + case "$gl_cv_func_gettimeofday_clobber" in + *yes) + REPLACE_GETTIMEOFDAY=1 + gl_GETTIMEOFDAY_REPLACE_LOCALTIME + AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], [1], + [Define if gettimeofday clobbers the localtime buffer.]) + ;; + esac +]) + +AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [ + AC_DEFINE([gmtime], [rpl_gmtime], + [Define to rpl_gmtime if the replacement function should be used.]) + AC_DEFINE([localtime], [rpl_localtime], + [Define to rpl_localtime if the replacement function should be used.]) +]) + +# Prerequisites of lib/gettimeofday.c. +AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [ + AC_CHECK_HEADERS([sys/timeb.h]) + AC_CHECK_FUNCS([_ftime]) +]) === added file 'm4/pselect.m4' --- m4/pselect.m4 1970-01-01 00:00:00 +0000 +++ m4/pselect.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,31 @@ +# pselect.m4 +dnl Copyright (C) 2011-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_PSELECT], +[ + AC_REQUIRE([gl_HEADER_SYS_SELECT]) + AC_REQUIRE([AC_C_RESTRICT]) + AC_CHECK_FUNCS_ONCE([pselect]) + + if test $ac_cv_func_pselect = yes; then + AC_CACHE_CHECK([whether signature of pselect conforms to POSIX], + gl_cv_sig_pselect, + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[int (*p) (int, fd_set *, fd_set *, fd_set *restrict, + struct timespec const *restrict, + sigset_t const *restrict) = pselect; + return !p;]])], + [gl_cv_sig_pselect=yes], + [gl_cv_sig_pselect=no])]) + fi + + if test $ac_cv_func_pselect = no || test $gl_cv_sig_pselect = no; then + REPLACE_PSELECT=1 + fi +]) === added file 'm4/stat-time.m4' --- m4/stat-time.m4 1970-01-01 00:00:00 +0000 +++ m4/stat-time.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,85 @@ +# Checks for stat-related time functions. + +# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2012 Free Software +# Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# st_atim.tv_nsec - Linux, Solaris, Cygwin +# st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE +# st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE +# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) + +# st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) +# st_birthtim - Cygwin 1.7.0+ + +AC_DEFUN([gl_STAT_TIME], +[ + AC_REQUIRE([AC_C_INLINE]) + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_HEADERS_ONCE([sys/time.h]) + + AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], + [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[ + #include + #include + #if HAVE_SYS_TIME_H + # include + #endif + #include + struct timespec ts; + struct stat st; + ]], + [[ + st.st_atim = ts; + ]])], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) + if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then + AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1], + [Define to 1 if the type of the st_atim member of a struct stat is + struct timespec.]) + fi], + [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], + [AC_CHECK_MEMBERS([struct stat.st_atimensec], [], + [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], + [#include + #include ])], + [#include + #include ])], + [#include + #include ])], + [#include + #include ]) +]) + +# Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.) +# and NTFS (Cygwin). +# There was a time when this field was named st_createtime (21 June +# 2002 to 16 July 2002) But that window is very small and applied only +# to development code, so systems still using that configuration are +# not supported. See revisions 1.10 and 1.11 of FreeBSD's +# src/sys/ufs/ufs/dinode.h. +# +AC_DEFUN([gl_STAT_BIRTHTIME], +[ + AC_REQUIRE([AC_C_INLINE]) + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_HEADERS_ONCE([sys/time.h]) + AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [], + [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [], + [AC_CHECK_MEMBERS([struct stat.st_birthtim.tv_nsec], [], [], + [#include + #include ])], + [#include + #include ])], + [#include + #include ]) +]) === added file 'm4/sys_select_h.m4' --- m4/sys_select_h.m4 1970-01-01 00:00:00 +0000 +++ m4/sys_select_h.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,95 @@ +# sys_select_h.m4 serial 20 +dnl Copyright (C) 2006-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_HEADER_SYS_SELECT], +[ + AC_REQUIRE([AC_C_RESTRICT]) + AC_REQUIRE([gl_SYS_SELECT_H_DEFAULTS]) + AC_CACHE_CHECK([whether is self-contained], + [gl_cv_header_sys_select_h_selfcontained], + [ + dnl Test against two bugs: + dnl 1. On many platforms, assumes prior inclusion of + dnl . + dnl 2. On OSF/1 4.0, provides only a forward declaration + dnl of 'struct timeval', and no definition of this type. + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[struct timeval b;]])], + [gl_cv_header_sys_select_h_selfcontained=yes], + [gl_cv_header_sys_select_h_selfcontained=no]) + dnl Test against another bug: + dnl 3. On Solaris 10, provides an FD_ZERO implementation + dnl that relies on memset(), but without including . + if test $gl_cv_header_sys_select_h_selfcontained = yes; then + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[int memset; int bzero;]]) + ], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[ + #undef memset + #define memset nonexistent_memset + extern + #ifdef __cplusplus + "C" + #endif + void *memset (void *, int, unsigned long); + #undef bzero + #define bzero nonexistent_bzero + extern + #ifdef __cplusplus + "C" + #endif + void bzero (void *, unsigned long); + fd_set fds; + FD_ZERO (&fds); + ]]) + ], + [], + [gl_cv_header_sys_select_h_selfcontained=no]) + ]) + fi + ]) + dnl is always overridden, because of GNULIB_POSIXCHECK. + gl_CHECK_NEXT_HEADERS([sys/select.h]) + if test $ac_cv_header_sys_select_h = yes; then + HAVE_SYS_SELECT_H=1 + else + HAVE_SYS_SELECT_H=0 + fi + AC_SUBST([HAVE_SYS_SELECT_H]) + gl_PREREQ_SYS_H_WINSOCK2 + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[ +/* Some systems require prerequisite headers. */ +#include +#if !(defined __GLIBC__ && !defined __UCLIBC__) && HAVE_SYS_TIME_H +# include +#endif +#include + ]], [pselect select]) +]) + +AC_DEFUN([gl_SYS_SELECT_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_SYS_SELECT_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +AC_DEFUN([gl_SYS_SELECT_H_DEFAULTS], +[ + GNULIB_PSELECT=0; AC_SUBST([GNULIB_PSELECT]) + GNULIB_SELECT=0; AC_SUBST([GNULIB_SELECT]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_PSELECT=1; AC_SUBST([HAVE_PSELECT]) + REPLACE_PSELECT=0; AC_SUBST([REPLACE_PSELECT]) + REPLACE_SELECT=0; AC_SUBST([REPLACE_SELECT]) +]) === added file 'm4/sys_socket_h.m4' --- m4/sys_socket_h.m4 1970-01-01 00:00:00 +0000 +++ m4/sys_socket_h.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,177 @@ +# sys_socket_h.m4 serial 22 +dnl Copyright (C) 2005-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson. + +AC_DEFUN([gl_HEADER_SYS_SOCKET], +[ + AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_C_INLINE]) + + dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have + dnl old-style declarations (with return type 'int' instead of 'ssize_t') + dnl unless _POSIX_PII_SOCKET is defined. + case "$host_os" in + osf*) + AC_DEFINE([_POSIX_PII_SOCKET], [1], + [Define to 1 in order to get the POSIX compatible declarations + of socket functions.]) + ;; + esac + + AC_CACHE_CHECK([whether is self-contained], + [gl_cv_header_sys_socket_h_selfcontained], + [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], + [gl_cv_header_sys_socket_h_selfcontained=yes], + [gl_cv_header_sys_socket_h_selfcontained=no]) + ]) + if test $gl_cv_header_sys_socket_h_selfcontained = yes; then + dnl If the shutdown function exists, should define + dnl SHUT_RD, SHUT_WR, SHUT_RDWR. + AC_CHECK_FUNCS([shutdown]) + if test $ac_cv_func_shutdown = yes; then + AC_CACHE_CHECK([whether defines the SHUT_* macros], + [gl_cv_header_sys_socket_h_shut], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], + [gl_cv_header_sys_socket_h_shut=yes], + [gl_cv_header_sys_socket_h_shut=no]) + ]) + if test $gl_cv_header_sys_socket_h_shut = no; then + SYS_SOCKET_H='sys/socket.h' + fi + fi + fi + # We need to check for ws2tcpip.h now. + gl_PREREQ_SYS_H_SOCKET + AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ + /* sys/types.h is not needed according to POSIX, but the + sys/socket.h in i386-unknown-freebsd4.10 and + powerpc-apple-darwin5.5 required it. */ +#include +#ifdef HAVE_SYS_SOCKET_H +#include +#endif +#ifdef HAVE_WS2TCPIP_H +#include +#endif +]) + if test $ac_cv_type_struct_sockaddr_storage = no; then + HAVE_STRUCT_SOCKADDR_STORAGE=0 + fi + if test $ac_cv_type_sa_family_t = no; then + HAVE_SA_FAMILY_T=0 + fi + if test $ac_cv_type_struct_sockaddr_storage != no; then + AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], + [], + [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], + [#include + #ifdef HAVE_SYS_SOCKET_H + #include + #endif + #ifdef HAVE_WS2TCPIP_H + #include + #endif + ]) + fi + if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ + || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then + SYS_SOCKET_H='sys/socket.h' + fi + gl_PREREQ_SYS_H_WINSOCK2 + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[ +/* Some systems require prerequisite headers. */ +#include +#include + ]], [socket connect accept bind getpeername getsockname getsockopt + listen recv send recvfrom sendto setsockopt shutdown accept4]) +]) + +AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], +[ + dnl Check prerequisites of the replacement. + AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) + gl_CHECK_NEXT_HEADERS([sys/socket.h]) + if test $ac_cv_header_sys_socket_h = yes; then + HAVE_SYS_SOCKET_H=1 + HAVE_WS2TCPIP_H=0 + else + HAVE_SYS_SOCKET_H=0 + if test $ac_cv_header_ws2tcpip_h = yes; then + HAVE_WS2TCPIP_H=1 + else + HAVE_WS2TCPIP_H=0 + fi + fi + AC_SUBST([HAVE_SYS_SOCKET_H]) + AC_SUBST([HAVE_WS2TCPIP_H]) +]) + +# Common prerequisites of the replacement and of the +# replacement. +# Sets and substitutes HAVE_WINSOCK2_H. +AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], +[ + m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) + m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) + AC_CHECK_HEADERS_ONCE([sys/socket.h]) + if test $ac_cv_header_sys_socket_h != yes; then + dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make + dnl the check for those headers unconditional; yet cygwin reports + dnl that the headers are present but cannot be compiled (since on + dnl cygwin, all socket information should come from sys/socket.h). + AC_CHECK_HEADERS([winsock2.h]) + fi + if test "$ac_cv_header_winsock2_h" = yes; then + HAVE_WINSOCK2_H=1 + UNISTD_H_HAVE_WINSOCK2_H=1 + SYS_IOCTL_H_HAVE_WINSOCK2_H=1 + else + HAVE_WINSOCK2_H=0 + fi + AC_SUBST([HAVE_WINSOCK2_H]) +]) + +AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], +[ + GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) + GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) + GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) + GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) + GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) + GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) + GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) + GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) + GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) + GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) + GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) + GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) + GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) + GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) + GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) + HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) + HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; + AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) + HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) + HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) +]) === added file 'm4/sys_time_h.m4' --- m4/sys_time_h.m4 1970-01-01 00:00:00 +0000 +++ m4/sys_time_h.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,106 @@ +# Configure a replacement for . +# serial 8 + +# Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Written by Paul Eggert and Martin Lambers. + +AC_DEFUN([gl_HEADER_SYS_TIME_H], +[ + dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement + dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1 + dnl statements that occur in other macros. + AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY]) +]) + +AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY], +[ + AC_REQUIRE([AC_C_RESTRICT]) + AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) + AC_CHECK_HEADERS_ONCE([sys/time.h]) + gl_CHECK_NEXT_HEADERS([sys/time.h]) + + if test $ac_cv_header_sys_time_h != yes; then + HAVE_SYS_TIME_H=0 + fi + + dnl On native Windows with MSVC, 'struct timeval' is defined in + dnl only. So include that header in the list. + gl_PREREQ_SYS_H_WINSOCK2 + AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if HAVE_SYS_TIME_H + #include + #endif + #include + #if HAVE_WINSOCK2_H + # include + #endif + ]], + [[static struct timeval x; x.tv_sec = x.tv_usec;]])], + [gl_cv_sys_struct_timeval=yes], + [gl_cv_sys_struct_timeval=no]) + ]) + if test $gl_cv_sys_struct_timeval != yes; then + HAVE_STRUCT_TIMEVAL=0 + else + dnl On native Windows with a 64-bit 'time_t', 'struct timeval' is defined + dnl (in and for mingw64, in only + dnl for MSVC) with a tv_sec field of type 'long' (32-bit!), which is + dnl smaller than the 'time_t' type mandated by POSIX. + AC_CACHE_CHECK([for correct struct timeval.tv_sec member], + [gl_cv_sys_struct_timeval_tv_sec], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if HAVE_SYS_TIME_H + #include + #endif + #include + #if HAVE_WINSOCK2_H + # include + #endif + ]], + [[static struct timeval x; + typedef int verify_tv_sec_type[sizeof (x.tv_sec) == sizeof (time_t) ? 1 : -1]; + ]])], + [gl_cv_sys_struct_timeval_tv_sec=yes], + [gl_cv_sys_struct_timeval_tv_sec=no]) + ]) + if test $gl_cv_sys_struct_timeval_tv_sec != yes; then + REPLACE_STRUCT_TIMEVAL=1 + fi + fi + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[ +#if HAVE_SYS_TIME_H +# include +#endif +#include + ]], [gettimeofday]) +]) + +AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS], +[ + GNULIB_GETTIMEOFDAY=0; AC_SUBST([GNULIB_GETTIMEOFDAY]) + dnl Assume POSIX behavior unless another module says otherwise. + HAVE_GETTIMEOFDAY=1; AC_SUBST([HAVE_GETTIMEOFDAY]) + HAVE_STRUCT_TIMEVAL=1; AC_SUBST([HAVE_STRUCT_TIMEVAL]) + HAVE_SYS_TIME_H=1; AC_SUBST([HAVE_SYS_TIME_H]) + REPLACE_GETTIMEOFDAY=0; AC_SUBST([REPLACE_GETTIMEOFDAY]) + REPLACE_STRUCT_TIMEVAL=0; AC_SUBST([REPLACE_STRUCT_TIMEVAL]) +]) === added file 'm4/timespec.m4' --- m4/timespec.m4 1970-01-01 00:00:00 +0000 +++ m4/timespec.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,15 @@ +#serial 14 + +# Copyright (C) 2000-2001, 2003-2007, 2009-2012 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Jim Meyering + +AC_DEFUN([gl_TIMESPEC], +[ + dnl Prerequisites of lib/timespec.h. + AC_REQUIRE([AC_C_INLINE]) +]) === added file 'm4/utimbuf.m4' --- m4/utimbuf.m4 1970-01-01 00:00:00 +0000 +++ m4/utimbuf.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,39 @@ +# serial 9 + +# Copyright (C) 1998-2001, 2003-2004, 2007, 2009-2012 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Jim Meyering + +dnl Define HAVE_STRUCT_UTIMBUF if 'struct utimbuf' is declared -- +dnl usually in . +dnl Some systems have utime.h but don't declare the struct anywhere. + +AC_DEFUN([gl_CHECK_TYPE_STRUCT_UTIMBUF], +[ + AC_CHECK_HEADERS_ONCE([sys/time.h utime.h]) + AC_CACHE_CHECK([for struct utimbuf], [gl_cv_sys_struct_utimbuf], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if HAVE_SYS_TIME_H + #include + #endif + #include + #ifdef HAVE_UTIME_H + #include + #endif + ]], + [[static struct utimbuf x; x.actime = x.modtime;]])], + [gl_cv_sys_struct_utimbuf=yes], + [gl_cv_sys_struct_utimbuf=no])]) + + if test $gl_cv_sys_struct_utimbuf = yes; then + AC_DEFINE([HAVE_STRUCT_UTIMBUF], [1], + [Define if struct utimbuf is declared -- usually in . + Some systems have utime.h but don't declare the struct anywhere. ]) + fi +]) === added file 'm4/utimens.m4' --- m4/utimens.m4 1970-01-01 00:00:00 +0000 +++ m4/utimens.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,50 @@ +dnl Copyright (C) 2003-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl serial 7 + +AC_DEFUN([gl_UTIMENS], +[ + dnl Prerequisites of lib/utimens.c. + AC_REQUIRE([gl_FUNC_UTIMES]) + AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) + AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_FUNCS_ONCE([futimes futimesat futimens utimensat lutimes]) + + if test $ac_cv_func_futimens = no && test $ac_cv_func_futimesat = yes; then + dnl FreeBSD 8.0-rc2 mishandles futimesat(fd,NULL,time). It is not + dnl standardized, but Solaris implemented it first and uses it as + dnl its only means to set fd time. + AC_CACHE_CHECK([whether futimesat handles NULL file], + [gl_cv_func_futimesat_works], + [touch conftest.file + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include +]], [[ int fd = open ("conftest.file", O_RDWR); + if (fd < 0) return 1; + if (futimesat (fd, NULL, NULL)) return 2; + ]])], + [gl_cv_func_futimesat_works=yes], + [gl_cv_func_futimesat_works=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_futimesat_works="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_futimesat_works="guessing no" ;; + esac + ]) + rm -f conftest.file]) + case "$gl_cv_func_futimesat_works" in + *yes) ;; + *) + AC_DEFINE([FUTIMESAT_NULL_BUG], [1], + [Define to 1 if futimesat mishandles a NULL file name.]) + ;; + esac + fi +]) === added file 'm4/utimes.m4' --- m4/utimes.m4 1970-01-01 00:00:00 +0000 +++ m4/utimes.m4 2012-06-22 21:26:37 +0000 @@ -0,0 +1,136 @@ +# Detect some bugs in glibc's implementation of utimes. +# serial 3 + +dnl Copyright (C) 2003-2005, 2009-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# See if we need to work around bugs in glibc's implementation of +# utimes from 2003-07-12 to 2003-09-17. +# First, there was a bug that would make utimes set mtime +# and atime to zero (1970-01-01) unconditionally. +# Then, there was code to round rather than truncate. +# Then, there was an implementation (sparc64, Linux-2.4.28, glibc-2.3.3) +# that didn't honor the NULL-means-set-to-current-time semantics. +# Finally, there was also a version of utimes that failed on read-only +# files, while utime worked fine (linux-2.2.20, glibc-2.2.5). +# +# From Jim Meyering, with suggestions from Paul Eggert. + +AC_DEFUN([gl_FUNC_UTIMES], +[ + AC_CACHE_CHECK([whether the utimes function works], + [gl_cv_func_working_utimes], + [ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int +inorder (time_t a, time_t b, time_t c) +{ + return a <= b && b <= c; +} + +int +main () +{ + int result = 0; + char const *file = "conftest.utimes"; + static struct timeval timeval[2] = {{9, 10}, {999999, 999999}}; + + /* Test whether utimes() essentially works. */ + { + struct stat sbuf; + FILE *f = fopen (file, "w"); + if (f == NULL) + result |= 1; + else if (fclose (f) != 0) + result |= 1; + else if (utimes (file, timeval) != 0) + result |= 2; + else if (lstat (file, &sbuf) != 0) + result |= 1; + else if (!(sbuf.st_atime == timeval[0].tv_sec + && sbuf.st_mtime == timeval[1].tv_sec)) + result |= 4; + if (unlink (file) != 0) + result |= 1; + } + + /* Test whether utimes() with a NULL argument sets the file's timestamp + to the current time. Use 'fstat' as well as 'time' to + determine the "current" time, to accommodate NFS file systems + if there is a time skew between the host and the NFS server. */ + { + int fd = open (file, O_WRONLY|O_CREAT, 0644); + if (fd < 0) + result |= 1; + else + { + time_t t0, t2; + struct stat st0, st1, st2; + if (time (&t0) == (time_t) -1) + result |= 1; + else if (fstat (fd, &st0) != 0) + result |= 1; + else if (utimes (file, timeval) != 0) + result |= 2; + else if (utimes (file, NULL) != 0) + result |= 8; + else if (fstat (fd, &st1) != 0) + result |= 1; + else if (write (fd, "\n", 1) != 1) + result |= 1; + else if (fstat (fd, &st2) != 0) + result |= 1; + else if (time (&t2) == (time_t) -1) + result |= 1; + else + { + int m_ok_POSIX = inorder (t0, st1.st_mtime, t2); + int m_ok_NFS = inorder (st0.st_mtime, st1.st_mtime, st2.st_mtime); + if (! (st1.st_atime == st1.st_mtime)) + result |= 16; + if (! (m_ok_POSIX || m_ok_NFS)) + result |= 32; + } + if (close (fd) != 0) + result |= 1; + } + if (unlink (file) != 0) + result |= 1; + } + + /* Test whether utimes() with a NULL argument works on read-only files. */ + { + int fd = open (file, O_WRONLY|O_CREAT, 0444); + if (fd < 0) + result |= 1; + else if (close (fd) != 0) + result |= 1; + else if (utimes (file, NULL) != 0) + result |= 64; + if (unlink (file) != 0) + result |= 1; + } + + return result; +} + ]])], + [gl_cv_func_working_utimes=yes], + [gl_cv_func_working_utimes=no], + [gl_cv_func_working_utimes=no])]) + + if test $gl_cv_func_working_utimes = yes; then + AC_DEFINE([HAVE_WORKING_UTIMES], [1], [Define if utimes works properly. ]) + fi +]) ------------------------------------------------------------ revno: 108688 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-06-22 17:24:54 -0400 message: Further GV/CL cleanups. * lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their gv-expander. (gv--defun-declaration): New function. (defun-declarations-alist): Use it. (gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove. (gv-place): Autoload. * lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's original definition of dotimes and dolist. * lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused. (cl-dolist, cl-dotimes): Use `dolist' and `dotimes'. * lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here. (cl-fifth, cl-sixth, cl-seventh, cl-eighth) (cl-ninth, cl-tenth): Move gv handler to the function's definition. * lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler to the function's definition. * lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%. * lisp/window.el: * lisp/files.el: * lisp/faces.el: * lisp/env.el: Don't use CL. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 21:17:42 +0000 +++ lisp/ChangeLog 2012-06-22 21:24:54 +0000 @@ -1,3 +1,27 @@ +2012-06-22 Stefan Monnier + + Further GV/CL cleanups. + * emacs-lisp/gv.el (gv-get): Autoload functions to find their + gv-expander. + (gv--defun-declaration): New function. + (defun-declarations-alist): Use it. + (gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove. + (gv-place): Autoload. + * emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's + original definition of dotimes and dolist. + * emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused. + (cl-dolist, cl-dotimes): Use `dolist' and `dotimes'. + * emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here. + (cl-fifth, cl-sixth, cl-seventh, cl-eighth) + (cl-ninth, cl-tenth): Move gv handler to the function's definition. + * emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler + to the function's definition. + * Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%. + * window.el: + * files.el: + * faces.el: + * env.el: Don't use CL. + 2012-06-22 Paul Eggert Support higher-resolution time stamps (Bug#9000). === modified file 'lisp/Makefile.in' --- lisp/Makefile.in 2012-06-09 17:03:43 +0000 +++ lisp/Makefile.in 2012-06-22 21:24:54 +0000 @@ -92,13 +92,17 @@ BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) $(BYTE_COMPILE_EXTRA_FLAGS) # Files to compile before others during a bootstrap. This is done to -# speed up the bootstrap process. +# speed up the bootstrap process. They're ordered by size, so we use +# the slowest-compiler on the smallest file and move to larger files as the +# compiler gets faster. `autoload.elc' comes last because it is not used by +# the compiler (so its compilation does not speed up subsequent compilations), +# it's only placed here so as to speed up generation of the loaddefs.el file. COMPILE_FIRST = \ + $(lisp)/emacs-lisp/macroexp.elc \ + $(lisp)/emacs-lisp/cconv.elc \ + $(lisp)/emacs-lisp/byte-opt.elc \ $(lisp)/emacs-lisp/bytecomp.elc \ - $(lisp)/emacs-lisp/byte-opt.elc \ - $(lisp)/emacs-lisp/macroexp.elc \ - $(lisp)/emacs-lisp/cconv.elc \ $(lisp)/emacs-lisp/autoload.elc # The actual Emacs command run in the targets below. === modified file 'lisp/emacs-lisp/cl-extra.el' --- lisp/emacs-lisp/cl-extra.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/cl-extra.el 2012-06-22 21:24:54 +0000 @@ -523,6 +523,10 @@ "Return the subsequence of SEQ from START to END. If END is omitted, it defaults to the length of the sequence. If START or END is negative, it counts from the end." + (declare (gv-setter + (lambda (new) + `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end) + ,new)))) (if (stringp seq) (substring seq start end) (let (len) (and end (< end 0) (setq end (+ end (setq len (length seq))))) @@ -587,7 +591,8 @@ (defun cl-get (sym tag &optional def) "Return the value of SYMBOL's PROPNAME property, or DEFAULT if none. \n(fn SYMBOL PROPNAME &optional DEFAULT)" - (declare (compiler-macro cl--compiler-macro-get)) + (declare (compiler-macro cl--compiler-macro-get) + (gv-setter (lambda (store) `(put ,sym ,tag ,store)))) (or (get sym tag) (and def ;; Make sure `def' is really absent as opposed to set to nil. @@ -602,6 +607,15 @@ "Search PROPLIST for property PROPNAME; return its value or DEFAULT. PROPLIST is a list of the sort returned by `symbol-plist'. \n(fn PROPLIST PROPNAME &optional DEFAULT)" + (declare (gv-expander + (lambda (do) + (gv-letplace (getter setter) plist + (macroexp-let2 nil k tag + (macroexp-let2 nil d def + (funcall do `(cl-getf ,getter ,k ,d) + (lambda (v) + (funcall setter + `(cl--set-getf ,getter ,k ,v)))))))))) (setplist '--cl-getf-symbol-- plist) (or (get '--cl-getf-symbol-- tag) ;; Originally we called cl-get here, === modified file 'lisp/emacs-lisp/cl-lib.el' --- lisp/emacs-lisp/cl-lib.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/cl-lib.el 2012-06-22 21:24:54 +0000 @@ -378,26 +378,32 @@ (defsubst cl-fifth (x) "Return the fifth element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 4 ,x) ,store)))) (nth 4 x)) (defsubst cl-sixth (x) "Return the sixth element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 5 ,x) ,store)))) (nth 5 x)) (defsubst cl-seventh (x) "Return the seventh element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 6 ,x) ,store)))) (nth 6 x)) (defsubst cl-eighth (x) "Return the eighth element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 7 ,x) ,store)))) (nth 7 x)) (defsubst cl-ninth (x) "Return the ninth element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 8 ,x) ,store)))) (nth 8 x)) (defsubst cl-tenth (x) "Return the tenth element of the list X." + (declare (gv-setter (lambda (store) `(setcar (nthcdr 9 ,x) ,store)))) (nth 9 x)) (defun cl-caaar (x) @@ -612,6 +618,108 @@ (nconc (cl-mapcar 'cons keys values) alist)) +;;; Generalized variables. + +;; These used to be in cl-macs.el since all macros that use them (like setf) +;; were autoloaded from cl-macs.el. But now that setf, push, and pop are in +;; core Elisp, they need to either be right here or be autoloaded via +;; cl-loaddefs.el, which is more trouble than it is worth. + +;; Some more Emacs-related place types. +(gv-define-simple-setter buffer-file-name set-visited-file-name t) +(gv-define-setter buffer-modified-p (flag &optional buf) + `(with-current-buffer ,buf + (set-buffer-modified-p ,flag))) +(gv-define-simple-setter buffer-name rename-buffer t) +(gv-define-setter buffer-string (store) + `(progn (erase-buffer) (insert ,store))) +(gv-define-simple-setter buffer-substring cl--set-buffer-substring) +(gv-define-simple-setter current-buffer set-buffer) +(gv-define-simple-setter current-case-table set-case-table) +(gv-define-simple-setter current-column move-to-column t) +(gv-define-simple-setter current-global-map use-global-map t) +(gv-define-setter current-input-mode (store) + `(progn (apply #'set-input-mode ,store) ,store)) +(gv-define-simple-setter current-local-map use-local-map t) +(gv-define-simple-setter current-window-configuration + set-window-configuration t) +(gv-define-simple-setter default-file-modes set-default-file-modes t) +(gv-define-simple-setter documentation-property put) +(gv-define-setter face-background (x f &optional s) + `(set-face-background ,f ,x ,s)) +(gv-define-setter face-background-pixmap (x f &optional s) + `(set-face-background-pixmap ,f ,x ,s)) +(gv-define-setter face-font (x f &optional s) `(set-face-font ,f ,x ,s)) +(gv-define-setter face-foreground (x f &optional s) + `(set-face-foreground ,f ,x ,s)) +(gv-define-setter face-underline-p (x f &optional s) + `(set-face-underline-p ,f ,x ,s)) +(gv-define-simple-setter file-modes set-file-modes t) +(gv-define-simple-setter frame-height set-screen-height t) +(gv-define-simple-setter frame-parameters modify-frame-parameters t) +(gv-define-simple-setter frame-visible-p cl--set-frame-visible-p) +(gv-define-simple-setter frame-width set-screen-width t) +(gv-define-simple-setter getenv setenv t) +(gv-define-simple-setter get-register set-register) +(gv-define-simple-setter global-key-binding global-set-key) +(gv-define-simple-setter local-key-binding local-set-key) +(gv-define-simple-setter mark set-mark t) +(gv-define-simple-setter mark-marker set-mark t) +(gv-define-simple-setter marker-position set-marker t) +(gv-define-setter mouse-position (store scr) + `(set-mouse-position ,scr (car ,store) (cadr ,store) + (cddr ,store))) +(gv-define-simple-setter point goto-char) +(gv-define-simple-setter point-marker goto-char t) +(gv-define-setter point-max (store) + `(progn (narrow-to-region (point-min) ,store) ,store)) +(gv-define-setter point-min (store) + `(progn (narrow-to-region ,store (point-max)) ,store)) +(gv-define-setter read-mouse-position (store scr) + `(set-mouse-position ,scr (car ,store) (cdr ,store))) +(gv-define-simple-setter screen-height set-screen-height t) +(gv-define-simple-setter screen-width set-screen-width t) +(gv-define-simple-setter selected-window select-window) +(gv-define-simple-setter selected-screen select-screen) +(gv-define-simple-setter selected-frame select-frame) +(gv-define-simple-setter standard-case-table set-standard-case-table) +(gv-define-simple-setter syntax-table set-syntax-table) +(gv-define-simple-setter visited-file-modtime set-visited-file-modtime t) +(gv-define-setter window-height (store) + `(progn (enlarge-window (- ,store (window-height))) ,store)) +(gv-define-setter window-width (store) + `(progn (enlarge-window (- ,store (window-width)) t) ,store)) +(gv-define-simple-setter x-get-secondary-selection x-own-secondary-selection t) +(gv-define-simple-setter x-get-selection x-own-selection t) + +;; More complex setf-methods. + +;; This is a hack that allows (setf (eq a 7) B) to mean either +;; (setq a 7) or (setq a nil) depending on whether B is nil or not. +;; This is useful when you have control over the PLACE but not over +;; the VALUE, as is the case in define-minor-mode's :variable. +;; It turned out that :variable needed more flexibility anyway, so +;; this doesn't seem too useful now. +(gv-define-expander eq + (lambda (do place val) + (gv-letplace (getter setter) place + (macroexp-let2 nil val val + (funcall do `(eq ,getter ,val) + (lambda (v) + `(cond + (,v ,(funcall setter val)) + ((eq ,getter ,val) ,(funcall setter `(not ,val)))))))))) + +(gv-define-expander substring + (lambda (do place from &optional to) + (gv-letplace (getter setter) place + (macroexp-let2 nil start from + (macroexp-let2 nil end to + (funcall do `(substring ,getter ,start ,end) + (lambda (v) + (funcall setter `(cl--set-substring + ,getter ,start ,end ,v))))))))) + ;;; Miscellaneous. ;;;###autoload === modified file 'lisp/emacs-lisp/cl-loaddefs.el' --- lisp/emacs-lisp/cl-loaddefs.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/cl-loaddefs.el 2012-06-22 21:24:54 +0000 @@ -11,7 +11,7 @@ ;;;;;; cl--set-frame-visible-p cl--map-overlays cl--map-intervals ;;;;;; cl--map-keymap-recursively cl-notevery cl-notany cl-every ;;;;;; cl-some cl-mapcon cl-mapcan cl-mapl cl-maplist cl-map cl--mapcar-many -;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "edc8a08741d81c74be36b27664d3555a") +;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "25963dec757a527e3be3ba7f7abc49ee") ;;; Generated autoloads from cl-extra.el (autoload 'cl-coerce "cl-extra" "\ @@ -265,7 +265,7 @@ ;;;;;; cl-return cl-block cl-etypecase cl-typecase cl-ecase cl-case ;;;;;; cl-load-time-value cl-eval-when cl-destructuring-bind cl-function ;;;;;; cl-defmacro cl-defun cl-gentemp cl-gensym) "cl-macs" "cl-macs.el" -;;;;;; "e37cb1001378ce1d677b67760fb6994b") +;;;;;; "66d8d151a97f91a79ebe3d1a9d699483") ;;; Generated autoloads from cl-macs.el (autoload 'cl-gensym "cl-macs" "\ === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/cl-macs.el 2012-06-22 21:24:54 +0000 @@ -110,20 +110,6 @@ (defun cl--const-expr-val (x) (and (macroexp-const-p x) (if (consp x) (nth 1 x) x))) -(defun cl-expr-access-order (x v) - ;; This apparently tries to return nil iff the expression X evaluates - ;; the variables V in the same order as they appear in V (so as to - ;; be able to replace those vars with the expressions they're bound - ;; to). - ;; FIXME: This is very naive, it doesn't even check to see if those - ;; variables appear more than once. - (if (macroexp-const-p x) v - (if (consp x) - (progn - (while (setq x (cdr x)) (setq v (cl-expr-access-order (car x) v))) - v) - (if (eq x (car v)) (cdr v) '(t))))) - (defun cl--expr-contains (x y) "Count number of times X refers to Y. Return nil for 0 times." ;; FIXME: This is naive, and it will cl-count Y as referred twice in @@ -1489,30 +1475,9 @@ \(fn (VAR LIST [RESULT]) BODY...)" (declare (debug ((symbolp form &optional form) cl-declarations body))) - (let ((temp (make-symbol "--cl-dolist-temp--"))) - ;; FIXME: Copy&pasted from subr.el. - `(cl-block nil - ;; This is not a reliable test, but it does not matter because both - ;; semantics are acceptable, tho one is slightly faster with dynamic - ;; scoping and the other is slightly faster (and has cleaner semantics) - ;; with lexical scoping. - ,(if lexical-binding - `(let ((,temp ,(nth 1 spec))) - (while ,temp - (let ((,(car spec) (car ,temp))) - ,@body - (setq ,temp (cdr ,temp)))) - ,@(if (cdr (cdr spec)) - ;; FIXME: This let often leads to "unused var" warnings. - `((let ((,(car spec) nil)) ,@(cdr (cdr spec)))))) - `(let ((,temp ,(nth 1 spec)) - ,(car spec)) - (while ,temp - (setq ,(car spec) (car ,temp)) - ,@body - (setq ,temp (cdr ,temp))) - ,@(if (cdr (cdr spec)) - `((setq ,(car spec) nil) ,@(cddr spec)))))))) + `(cl-block nil + (,(if (eq 'cl-dolist (symbol-function 'dolist)) 'cl--dolist 'dolist) + ,spec ,@body))) ;;;###autoload (defmacro cl-dotimes (spec &rest body) @@ -1523,30 +1488,9 @@ \(fn (VAR COUNT [RESULT]) BODY...)" (declare (debug cl-dolist)) - (let ((temp (make-symbol "--cl-dotimes-temp--")) - (end (nth 1 spec))) - ;; FIXME: Copy&pasted from subr.el. - `(cl-block nil - ;; This is not a reliable test, but it does not matter because both - ;; semantics are acceptable, tho one is slightly faster with dynamic - ;; scoping and the other has cleaner semantics. - ,(if lexical-binding - (let ((counter '--dotimes-counter--)) - `(let ((,temp ,end) - (,counter 0)) - (while (< ,counter ,temp) - (let ((,(car spec) ,counter)) - ,@body) - (setq ,counter (1+ ,counter))) - ,@(if (cddr spec) - ;; FIXME: This let often leads to "unused var" warnings. - `((let ((,(car spec) ,counter)) ,@(cddr spec)))))) - `(let ((,temp ,end) - (,(car spec) 0)) - (while (< ,(car spec) ,temp) - ,@body - (cl-incf ,(car spec))) - ,@(cdr (cdr spec))))))) + `(cl-block nil + (,(if (eq 'cl-dotimes (symbol-function 'dotimes)) 'cl--dotimes 'dotimes) + ,spec ,@body))) ;;;###autoload (defmacro cl-do-symbols (spec &rest body) @@ -1730,7 +1674,7 @@ (declare (indent 1) (debug ((&rest (symbol sexp)) cl-declarations body))) (cond ((cdr bindings) - `(cl-symbol-macrolet (,(car bindings)) + `(cl-symbol-macrolet (,(car bindings)) (cl-symbol-macrolet ,(cdr bindings) ,@body))) ((null bindings) (macroexp-progn body)) (t @@ -1740,8 +1684,8 @@ (fset 'macroexpand #'cl--sm-macroexpand) ;; FIXME: For N bindings, this will traverse `body' N times! (macroexpand-all (cons 'progn body) - (cons (list (symbol-name (caar bindings)) - (cl-cadar bindings)) + (cons (list (symbol-name (caar bindings)) + (cl-cadar bindings)) macroexpand-all-environment))) (fset 'macroexpand previous-macroexpand)))))) @@ -1864,130 +1808,6 @@ -;;; Generalized variables. - -;;; Some standard place types from Common Lisp. -(gv-define-setter cl-get (store x y &optional d) `(put ,x ,y ,store)) -(gv-define-setter cl-subseq (new seq start &optional end) - `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end) ,new)) - -;;; Various car/cdr aliases. Note that `cadr' is handled specially. -(gv-define-setter cl-fourth (store x) `(setcar (cl-cdddr ,x) ,store)) -(gv-define-setter cl-fifth (store x) `(setcar (nthcdr 4 ,x) ,store)) -(gv-define-setter cl-sixth (store x) `(setcar (nthcdr 5 ,x) ,store)) -(gv-define-setter cl-seventh (store x) `(setcar (nthcdr 6 ,x) ,store)) -(gv-define-setter cl-eighth (store x) `(setcar (nthcdr 7 ,x) ,store)) -(gv-define-setter cl-ninth (store x) `(setcar (nthcdr 8 ,x) ,store)) -(gv-define-setter cl-tenth (store x) `(setcar (nthcdr 9 ,x) ,store)) - -;;; Some more Emacs-related place types. -(gv-define-simple-setter buffer-file-name set-visited-file-name t) -(gv-define-setter buffer-modified-p (flag &optional buf) - `(with-current-buffer ,buf - (set-buffer-modified-p ,flag))) -(gv-define-simple-setter buffer-name rename-buffer t) -(gv-define-setter buffer-string (store) - `(progn (erase-buffer) (insert ,store))) -(gv-define-simple-setter buffer-substring cl--set-buffer-substring) -(gv-define-simple-setter current-buffer set-buffer) -(gv-define-simple-setter current-case-table set-case-table) -(gv-define-simple-setter current-column move-to-column t) -(gv-define-simple-setter current-global-map use-global-map t) -(gv-define-setter current-input-mode (store) - `(progn (apply #'set-input-mode ,store) ,store)) -(gv-define-simple-setter current-local-map use-local-map t) -(gv-define-simple-setter current-window-configuration set-window-configuration t) -(gv-define-simple-setter default-file-modes set-default-file-modes t) -(gv-define-simple-setter documentation-property put) -(gv-define-setter face-background (x f &optional s) `(set-face-background ,f ,x ,s)) -(gv-define-setter face-background-pixmap (x f &optional s) - `(set-face-background-pixmap ,f ,x ,s)) -(gv-define-setter face-font (x f &optional s) `(set-face-font ,f ,x ,s)) -(gv-define-setter face-foreground (x f &optional s) `(set-face-foreground ,f ,x ,s)) -(gv-define-setter face-underline-p (x f &optional s) - `(set-face-underline-p ,f ,x ,s)) -(gv-define-simple-setter file-modes set-file-modes t) -(gv-define-simple-setter frame-height set-screen-height t) -(gv-define-simple-setter frame-parameters modify-frame-parameters t) -(gv-define-simple-setter frame-visible-p cl--set-frame-visible-p) -(gv-define-simple-setter frame-width set-screen-width t) -(gv-define-simple-setter getenv setenv t) -(gv-define-simple-setter get-register set-register) -(gv-define-simple-setter global-key-binding global-set-key) -(gv-define-simple-setter local-key-binding local-set-key) -(gv-define-simple-setter mark set-mark t) -(gv-define-simple-setter mark-marker set-mark t) -(gv-define-simple-setter marker-position set-marker t) -(gv-define-setter mouse-position (store scr) - `(set-mouse-position ,scr (car ,store) (cadr ,store) - (cddr ,store))) -(gv-define-simple-setter point goto-char) -(gv-define-simple-setter point-marker goto-char t) -(gv-define-setter point-max (store) - `(progn (narrow-to-region (point-min) ,store) ,store)) -(gv-define-setter point-min (store) - `(progn (narrow-to-region ,store (point-max)) ,store)) -(gv-define-setter read-mouse-position (store scr) - `(set-mouse-position ,scr (car ,store) (cdr ,store))) -(gv-define-simple-setter screen-height set-screen-height t) -(gv-define-simple-setter screen-width set-screen-width t) -(gv-define-simple-setter selected-window select-window) -(gv-define-simple-setter selected-screen select-screen) -(gv-define-simple-setter selected-frame select-frame) -(gv-define-simple-setter standard-case-table set-standard-case-table) -(gv-define-simple-setter syntax-table set-syntax-table) -(gv-define-simple-setter visited-file-modtime set-visited-file-modtime t) -(gv-define-setter window-height (store) - `(progn (enlarge-window (- ,store (window-height))) ,store)) -(gv-define-setter window-width (store) - `(progn (enlarge-window (- ,store (window-width)) t) ,store)) -(gv-define-simple-setter x-get-secondary-selection x-own-secondary-selection t) -(gv-define-simple-setter x-get-selection x-own-selection t) - -;;; More complex setf-methods. - -;; This is a hack that allows (setf (eq a 7) B) to mean either -;; (setq a 7) or (setq a nil) depending on whether B is nil or not. -;; This is useful when you have control over the PLACE but not over -;; the VALUE, as is the case in define-minor-mode's :variable. -;; It turned out that :variable needed more flexibility anyway, so -;; this doesn't seem too useful now. -(gv-define-expander eq - (lambda (do place val) - (gv-letplace (getter setter) place - (macroexp-let2 nil val val - (funcall do `(eq ,getter ,val) - (lambda (v) - `(cond - (,v ,(funcall setter val)) - ((eq ,getter ,val) ,(funcall setter `(not ,val)))))))))) - -(gv-define-expander nthcdr - (lambda (do n place) - (macroexp-let2 nil idx n - (gv-letplace (getter setter) place - (funcall do `(nthcdr ,idx ,getter) - (lambda (v) `(if (<= ,idx 0) ,(funcall setter v) - (setcdr (nthcdr (1- ,idx) ,getter) ,v)))))))) - -(gv-define-expander cl-getf - (lambda (do place tag &optional def) - (gv-letplace (getter setter) place - (macroexp-let2 nil k tag - (macroexp-let2 nil d def - (funcall do `(cl-getf ,getter ,k ,d) - (lambda (v) (funcall setter `(cl--set-getf ,getter ,k ,v))))))))) - -(gv-define-expander substring - (lambda (do place from &optional to) - (gv-letplace (getter setter) place - (macroexp-let2 nil start from - (macroexp-let2 nil end to - (funcall do `(substring ,getter ,start ,end) - (lambda (v) - (funcall setter `(cl--set-substring - ,getter ,start ,end ,v))))))))) - ;;; The standard modify macros. ;; `setf' is now part of core Elisp, defined in gv.el. @@ -2571,8 +2391,6 @@ ;; Compile-time optimizations for some functions defined in this package. -;; Note that cl.el arranges to force cl-macs to be loaded at compile-time, -;; mainly to make sure these macros will be present. (defun cl--compiler-macro-member (form a list &rest keys) (let ((test (and (= (length keys) 2) (eq (car keys) :test) === modified file 'lisp/emacs-lisp/cl.el' --- lisp/emacs-lisp/cl.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/cl.el 2012-06-22 21:24:54 +0000 @@ -107,6 +107,14 @@ )) (defvaralias var (intern (format "cl-%s" var)))) +;; Before overwriting subr.el's `dotimes' and `dolist', let's remember +;; them under a different name, so we can use them in our implementation +;; of `dotimes' and `dolist'. +(unless (fboundp 'cl--dotimes) + (defalias 'cl--dotimes (symbol-function 'dotimes) "The non-CL `dotimes'.")) +(unless (fboundp 'cl--dolist) + (defalias 'cl--dolist (symbol-function 'dolist) "The non-CL `dolist'.")) + (dolist (fun '( (get* . cl-get) (random* . cl-random) @@ -501,6 +509,10 @@ ;; not 100% compatible: not worth the trouble to add them to cl-lib.el, but we ;; still to support old users of cl.el. +;; FIXME: `letf' is unsatisfactory because it does not really "restore" the +;; previous state. If the getter/setter loses information, that info is +;; not recovered. + (defun cl--letf (bindings simplebinds binds body) ;; It's not quite clear what the semantics of let! should be. ;; E.g. in (let! ((PLACE1 VAL1) (PLACE2 VAL2)) BODY), while it's clear @@ -581,7 +593,9 @@ (declare (indent 1) (debug letf)) (cl--letf* bindings body)) -(defun cl--gv-adapt (cl-gv do) ;FIXME: needed during setf expansion! +(defun cl--gv-adapt (cl-gv do) + ;; This function is used by all .elc files that use define-setf-expander and + ;; were compiled with Emacs>=24.2. (let ((vars (nth 0 cl-gv)) (vals (nth 1 cl-gv)) (binds ()) @@ -774,7 +788,5 @@ ,store))) (list accessor temp)))) -;; FIXME: More candidates: define-modify-macro, define-setf-expander. - (provide 'cl) ;;; cl.el ends here === modified file 'lisp/emacs-lisp/gv.el' --- lisp/emacs-lisp/gv.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/gv.el 2012-06-22 21:24:54 +0000 @@ -53,12 +53,6 @@ ;; `gv-letplace' macro) is actually much easier and more elegant than the old ;; approach which is clunky and often leads to unreadable code. -;; FIXME: `let!' is unsatisfactory because it does not really "restore" the -;; previous state. If the getter/setter loses information, that info is -;; not recovered. - -;; FIXME: Add to defun-declarations-alist. - ;; Food for thought: the syntax of places does not actually conflict with the ;; pcase patterns. The `cons' gv works just like a `(,a . ,b) pcase ;; pattern, and actually the `logand' gv is even closer since it should @@ -91,6 +85,13 @@ (funcall do place (lambda (v) `(setq ,place ,v))) (let* ((head (car place)) (gf (get head 'gv-expander))) + ;; Autoload the head, if applicable, since that might define + ;; `gv-expander'. + (when (and (null gf) (fboundp head) + (eq 'autoload (car-safe (symbol-function head)))) + (with-demoted-errors + (load (nth 1 (symbol-function head)) 'noerror 'nomsg) + (setq gf (get head 'gv-expander)))) (if gf (apply gf do (cdr place)) (let ((me (macroexpand place ;FIXME: expand one step at a time! ;; (append macroexpand-all-environment @@ -139,23 +140,30 @@ ;; cleanly without affecting the running Emacs. `(eval-and-compile (put ',name 'gv-expander ,handler))) -;; (eval-and-compile -;; (defun gv--defun-declaration (name args handler) -;; (pcase handler -;; (`(lambda (,do) . ,body) -;; `(gv-define-expander ,name (lambda (,do ,@args) ,@body))) -;; ;; (`(expand ,expander) `(gv-define-expand ,name ,expander)) -;; ;; FIXME: If `setter' is a lambda, give it a name rather -;; ;; than duplicate it at each setf use. -;; (`(setter ,setter) `(gv-define-simple-setter ,name ,setter)) -;; (`(setter (,arg) . ,body) -;; `(gv-define-setter ,name (,arg ,@args) ,@body)) -;; ;; FIXME: Should we prefer gv-define-simple-setter in this case? -;; ;;((pred symbolp) `(gv-define-expander ,name #',handler)) -;; (_ (message "Unknown gv-expander declaration %S" handler) nil))) +;;;###autoload +(defun gv--defun-declaration (symbol name args handler &optional fix) + `(progn + ;; No need to autoload this part, since gv-get will auto-load the + ;; function's definition before checking the `gv-expander' property. + :autoload-end + ,(pcase (cons symbol handler) + (`(gv-expander . (lambda (,do) . ,body)) + `(gv-define-expander ,name (lambda (,do ,@args) ,@body))) + (`(gv-expander . ,(pred symbolp)) + `(gv-define-expander ,name #',handler)) + (`(gv-setter . (lambda (,store) . ,body)) + `(gv-define-setter ,name (,store ,@args) ,@body)) + (`(gv-setter . ,(pred symbolp)) + `(gv-define-simple-setter ,name ,handler ,fix)) + ;; (`(expand ,expander) `(gv-define-expand ,name ,expander)) + (_ (message "Unknown %s declaration %S" symbol handler) nil)))) -;; (push `(gv-expander ,#'gv--defun-declaration) defun-declarations-alist) -;; ) +;;;###autoload +(push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander)) + defun-declarations-alist) +;;;###autoload +(push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter)) + defun-declarations-alist) ;; (defmacro gv-define-expand (name expander) ;; "Use EXPANDER to handle NAME as a generalized var. @@ -212,24 +220,6 @@ `(gv-define-setter ,name (val &rest args) ,(if fix-return `(list 'prog1 val ,set-call) set-call)))) -;;; CL compatibility. - -(defmacro gv-define-modify-macro (name arglist func &optional doc) - (let* ((args (copy-sequence arglist)) - (rest (memq '&rest args))) - (setq args (delq '&optional (delq '&rest args))) - `(defmacro ,name (place ,@arglist) - ,doc - (gv-letplace (getter setter) place - (macroexp-let2 nil v - ,(list '\` - (append (list func ',getter) - (mapcar (lambda (arg) (list '\, arg)) args) - (if rest (list (list '\,@ (cadr rest)))))) - (funcall setter v)))))) - -(gv-define-simple-setter gv--tree-get gv--tree-set) - ;;; Typical operations on generalized variables. ;;;###autoload @@ -251,32 +241,35 @@ (while args (push `(setf ,(pop args) ,(pop args)) sets)) (cons 'progn (nreverse sets))))) -(defmacro gv-pushnew! (val place) - "Like `gv-push!' but only adds VAL if it's not yet in PLACE. -Presence is checked with `member'. -The return value is unspecified." - (declare (debug (form gv-place))) - (macroexp-let2 macroexp-copyable-p v val - (gv-letplace (getter setter) place - `(if (member ,v ,getter) nil - ,(funcall setter `(cons ,v ,getter)))))) - -(defmacro gv-inc! (place &optional val) - "Increment PLACE by VAL (default to 1)." - (declare (debug (gv-place &optional form))) - (gv-letplace (getter setter) place - (funcall setter `(+ ,getter ,(or val 1))))) - -(defmacro gv-dec! (place &optional val) - "Decrement PLACE by VAL (default to 1)." - (declare (debug (gv-place &optional form))) - (gv-letplace (getter setter) place - (funcall setter `(- ,getter ,(or val 1))))) +;; (defmacro gv-pushnew! (val place) +;; "Like `gv-push!' but only adds VAL if it's not yet in PLACE. +;; Presence is checked with `member'. +;; The return value is unspecified." +;; (declare (debug (form gv-place))) +;; (macroexp-let2 macroexp-copyable-p v val +;; (gv-letplace (getter setter) place +;; `(if (member ,v ,getter) nil +;; ,(funcall setter `(cons ,v ,getter)))))) + +;; (defmacro gv-inc! (place &optional val) +;; "Increment PLACE by VAL (default to 1)." +;; (declare (debug (gv-place &optional form))) +;; (gv-letplace (getter setter) place +;; (funcall setter `(+ ,getter ,(or val 1))))) + +;; (defmacro gv-dec! (place &optional val) +;; "Decrement PLACE by VAL (default to 1)." +;; (declare (debug (gv-place &optional form))) +;; (gv-letplace (getter setter) place +;; (funcall setter `(- ,getter ,(or val 1))))) ;; For Edebug, the idea is to let Edebug instrument gv-places just like it does ;; for normal expressions, and then give it a gv-expander to DTRT. ;; Maybe this should really be in edebug.el rather than here. +;; Autoload this `put' since a user might use C-u C-M-x on an expression +;; containing a non-trivial `push' even before gv.el was loaded. +;;;###autoload (put 'gv-place 'edebug-form-spec 'edebug-match-form) ;; CL did the equivalent of: ;;(gv-define-expand edebug-after (lambda (before index place) place)) === modified file 'lisp/env.el' --- lisp/env.el 2012-01-19 07:21:25 +0000 +++ lisp/env.el 2012-06-22 21:24:54 +0000 @@ -34,8 +34,6 @@ ;;; Code: -(eval-when-compile (require 'cl)) - ;; History list for environment variable names. (defvar read-envvar-name-history nil) === modified file 'lisp/faces.el' --- lisp/faces.el 2012-06-17 00:32:36 +0000 +++ lisp/faces.el 2012-06-22 21:24:54 +0000 @@ -25,9 +25,6 @@ ;;; Code: -(eval-when-compile - (require 'cl)) - (defcustom term-file-prefix (purecopy "term/") "If non-nil, Emacs startup performs terminal-specific initialization. It does this by: (load (concat term-file-prefix (getenv \"TERM\"))) @@ -996,28 +993,28 @@ of a set of discrete values. Value is `integerp' if ATTRIBUTE expects an integer value." (let ((valid - (case attribute - (:family + (pcase attribute + (`:family (if (window-system frame) (mapcar (lambda (x) (cons x x)) (font-family-list)) ;; Only one font on TTYs. (list (cons "default" "default")))) - (:foundry + (`:foundry (list nil)) - (:width + (`:width (mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1))) font-width-table)) - (:weight + (`:weight (mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1))) font-weight-table)) - (:slant + (`:slant (mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1))) font-slant-table)) - (:inverse-video + (`:inverse-video (mapcar #'(lambda (x) (cons (symbol-name x) x)) (internal-lisp-face-attribute-values attribute))) - ((:underline :overline :strike-through :box) + ((or `:underline `:overline `:strike-through `:box) (if (window-system frame) (nconc (mapcar #'(lambda (x) (cons (symbol-name x) x)) (internal-lisp-face-attribute-values attribute)) @@ -1025,12 +1022,12 @@ (defined-colors frame))) (mapcar #'(lambda (x) (cons (symbol-name x) x)) (internal-lisp-face-attribute-values attribute)))) - ((:foreground :background) + ((or `:foreground `:background) (mapcar #'(lambda (c) (cons c c)) (defined-colors frame))) - ((:height) + (`:height 'integerp) - (:stipple + (`:stipple (and (memq (window-system frame) '(x ns)) ; No stipple on w32 (mapcar #'list (apply #'nconc @@ -1039,11 +1036,11 @@ (file-directory-p dir) (directory-files dir))) x-bitmap-file-path))))) - (:inherit + (`:inherit (cons '("none" . nil) (mapcar #'(lambda (c) (cons (symbol-name c) c)) (face-list)))) - (t + (_ (error "Internal error"))))) (if (and (listp valid) (not (memq attribute '(:inherit)))) (nconc (list (cons "unspecified" 'unspecified)) valid) === modified file 'lisp/files.el' --- lisp/files.el 2012-06-22 14:12:42 +0000 +++ lisp/files.el 2012-06-22 21:24:54 +0000 @@ -28,8 +28,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (defvar font-lock-keywords) (defgroup backup nil @@ -6464,19 +6462,19 @@ "/" (substring (car pair) 2))))) (setq file-arg-indices (cdr file-arg-indices)))) - (cl-case method - (identity (car arguments)) - (add (concat "/:" (apply operation arguments))) - (insert-file-contents + (pcase method + (`identity (car arguments)) + (`add (concat "/:" (apply operation arguments))) + (`insert-file-contents (let ((visit (nth 1 arguments))) (prog1 (apply operation arguments) (when (and visit buffer-file-name) (setq buffer-file-name (concat "/:" buffer-file-name)))))) - (unquote-then-quote + (`unquote-then-quote (let ((buffer-file-name (substring buffer-file-name 2))) (apply operation arguments))) - (t + (_ (apply operation arguments))))) ;; Symbolic modes and read-file-modes. === modified file 'lisp/ldefs-boot.el' --- lisp/ldefs-boot.el 2012-06-22 13:42:38 +0000 +++ lisp/ldefs-boot.el 2012-06-22 21:24:54 +0000 @@ -2712,7 +2712,7 @@ ;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile ;;;;;; compile-defun byte-compile-file byte-recompile-directory ;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) -;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20451 21087)) +;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20452 43334)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (put 'byte-compile-dynamic 'safe-local-variable 'booleanp) (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) @@ -2978,8 +2978,8 @@ ;;;*** -;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20432 -;;;;;; 42254)) +;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20452 +;;;;;; 43334)) ;;; Generated autoloads from calendar/calendar.el (autoload 'calendar "calendar" "\ @@ -3699,7 +3699,7 @@ ;;;*** ;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el" -;;;;;; (20451 21087)) +;;;;;; (20452 43334)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -4121,7 +4121,7 @@ ;;;*** -;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20451 21087)) +;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20452 55920)) ;;; Generated autoloads from emacs-lisp/cl-lib.el (define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.2") @@ -6409,7 +6409,7 @@ ;;;*** ;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window -;;;;;; dired dired-listing-switches) "dired" "dired.el" (20428 57510)) +;;;;;; dired dired-listing-switches) "dired" "dired.el" (20452 43334)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -7402,13 +7402,14 @@ ;;;;;; ebrowse-electric-position-menu ebrowse-forward-in-position-stack ;;;;;; ebrowse-back-in-position-stack ebrowse-tags-search-member-use ;;;;;; ebrowse-tags-query-replace ebrowse-tags-search ebrowse-tags-loop-continue -;;;;;; ebrowse-tags-find-definition-other-frame ebrowse-tags-view-definition-other-frame -;;;;;; ebrowse-tags-find-declaration-other-frame ebrowse-tags-find-definition-other-window -;;;;;; ebrowse-tags-view-definition-other-window ebrowse-tags-find-declaration-other-window -;;;;;; ebrowse-tags-find-definition ebrowse-tags-view-definition -;;;;;; ebrowse-tags-find-declaration ebrowse-tags-view-declaration -;;;;;; ebrowse-member-mode ebrowse-electric-choose-tree ebrowse-tree-mode) -;;;;;; "ebrowse" "progmodes/ebrowse.el" (20434 28080)) +;;;;;; ebrowse-tags-complete-symbol ebrowse-tags-find-definition-other-frame +;;;;;; ebrowse-tags-view-definition-other-frame ebrowse-tags-find-declaration-other-frame +;;;;;; ebrowse-tags-find-definition-other-window ebrowse-tags-view-definition-other-window +;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition +;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration +;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree +;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20434 +;;;;;; 28080)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload 'ebrowse-tree-mode "ebrowse" "\ @@ -7483,6 +7484,14 @@ \(fn)" t nil) +(autoload 'ebrowse-tags-complete-symbol "ebrowse" "\ +Perform completion on the C++ symbol preceding point. +A second call of this function without changing point inserts the next match. +A call with prefix PREFIX reads the symbol to insert from the minibuffer with +completion. + +\(fn PREFIX)" t nil) + (autoload 'ebrowse-tags-loop-continue "ebrowse" "\ Repeat last operation on files in tree. FIRST-TIME non-nil means this is not a repetition, but the first time. @@ -8770,7 +8779,7 @@ ;;;*** -;;;### (autoloads (erc-handle-irc-url erc-tls erc-select-read-args) +;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) ;;;;;; "erc" "erc/erc.el" (20446 34252)) ;;; Generated autoloads from erc/erc.el @@ -8779,6 +8788,29 @@ \(fn)" nil nil) +(autoload 'erc "erc" "\ +ERC is a powerful, modular, and extensible IRC client. +This function is the main entry point for ERC. + +It permits you to select connection parameters, and then starts ERC. + +Non-interactively, it takes the keyword arguments + (server (erc-compute-server)) + (port (erc-compute-port)) + (nick (erc-compute-nick)) + password + (full-name (erc-compute-full-name))) + +That is, if called with + + (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\") + +then the server and full-name will be set to those values, whereas +`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will +be invoked for the values of the other parameters. + +\(fn &key (server (erc-compute-server)) (port (erc-compute-port)) (nick (erc-compute-nick)) PASSWORD (full-name (erc-compute-full-name)))" t nil) + (defalias 'erc-select 'erc) (autoload 'erc-tls "erc" "\ @@ -9242,10 +9274,27 @@ ;;;*** ;;;### (autoloads (ert-describe-test ert-run-tests-interactively -;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch) "ert" "emacs-lisp/ert.el" -;;;;;; (20356 35090)) +;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest) +;;;;;; "ert" "emacs-lisp/ert.el" (20356 35090)) ;;; Generated autoloads from emacs-lisp/ert.el +(autoload 'ert-deftest "ert" "\ +Define NAME (a symbol) as a test. + +BODY is evaluated as a `progn' when the test is run. It should +signal a condition on failure or just return if the test passes. + +`should', `should-not' and `should-error' are useful for +assertions in BODY. + +Use `ert' to run tests interactively. + +Tests that are expected to fail can be marked as such +using :expected-result. See `ert-test-result-type-p' for a +description of valid values for RESULT-TYPE. + +\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] BODY...)" nil (quote macro)) + (put 'ert-deftest 'lisp-indent-function 2) (put 'ert-info 'lisp-indent-function 1) @@ -9966,8 +10015,8 @@ ;;;*** -;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20451 -;;;;;; 21087)) +;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20452 +;;;;;; 43334)) ;;; Generated autoloads from emacs-lisp/ewoc.el (autoload 'ewoc-create "ewoc" "\ @@ -12691,8 +12740,8 @@ ;;;*** ;;;### (autoloads (setf gv-define-simple-setter gv-define-setter -;;;;;; gv-define-expander gv-letplace gv-get) "gv" "emacs-lisp/gv.el" -;;;;;; (20451 34840)) +;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get) +;;;;;; "gv" "emacs-lisp/gv.el" (20452 56419)) ;;; Generated autoloads from emacs-lisp/gv.el (autoload 'gv-get "gv" "\ @@ -12732,6 +12781,15 @@ (put 'gv-define-expander 'lisp-indent-function '1) +(autoload 'gv--defun-declaration "gv" "\ + + +\(fn SYMBOL NAME ARGS HANDLER &optional FIX)" nil nil) + +(push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander)) defun-declarations-alist) + +(push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter)) defun-declarations-alist) + (autoload 'gv-define-setter "gv" "\ Define a setter method for generalized variable NAME. This macro is an easy-to-use substitute for `gv-define-expander' that works @@ -12767,6 +12825,8 @@ \(fn PLACE VAL PLACE VAL ...)" nil t) +(put 'gv-place 'edebug-form-spec 'edebug-match-form) + ;;;*** ;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20318 @@ -14004,11 +14064,96 @@ \(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t nil) ;;;*** - -;;;*** -;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (20412 11425)) +;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter +;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from ibuf-macs.el + +(autoload 'define-ibuffer-column "ibuf-macs" "\ +Define a column SYMBOL for use with `ibuffer-formats'. + +BODY will be called with `buffer' bound to the buffer object, and +`mark' bound to the current mark on the buffer. The original ibuffer +buffer will be bound to `ibuffer-buf'. + +If NAME is given, it will be used as a title for the column. +Otherwise, the title will default to a capitalized version of the +SYMBOL's name. PROPS is a plist of additional properties to add to +the text, such as `mouse-face'. And SUMMARIZER, if given, is a +function which will be passed a list of all the strings in its column; +it should return a string to display at the bottom. + +If HEADER-MOUSE-MAP is given, it will be used as a keymap for the +title of the column. + +Note that this macro expands into a `defun' for a function named +ibuffer-make-column-NAME. If INLINE is non-nil, then the form will be +inlined into the compiled format versions. This means that if you +change its definition, you should explicitly call +`ibuffer-recompile-formats'. + +\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil (quote macro)) + +(autoload 'define-ibuffer-sorter "ibuf-macs" "\ +Define a method of sorting named NAME. +DOCUMENTATION is the documentation of the function, which will be called +`ibuffer-do-sort-by-NAME'. +DESCRIPTION is a short string describing the sorting method. + +For sorting, the forms in BODY will be evaluated with `a' bound to one +buffer object, and `b' bound to another. BODY should return a non-nil +value if and only if `a' is \"less than\" `b'. + +\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil (quote macro)) + +(autoload 'define-ibuffer-op "ibuf-macs" "\ +Generate a function which operates on a buffer. +OP becomes the name of the function; if it doesn't begin with +`ibuffer-do-', then that is prepended to it. +When an operation is performed, this function will be called once for +each marked buffer, with that buffer current. + +ARGS becomes the formal parameters of the function. +DOCUMENTATION becomes the docstring of the function. +INTERACTIVE becomes the interactive specification of the function. +MARK describes which type of mark (:deletion, or nil) this operation +uses. :deletion means the function operates on buffers marked for +deletion, otherwise it acts on normally marked buffers. +MODIFIER-P describes how the function modifies buffers. This is used +to set the modification flag of the Ibuffer buffer itself. Valid +values are: + nil - the function never modifiers buffers + t - the function it always modifies buffers + :maybe - attempt to discover this information by comparing the + buffer's modification flag. +DANGEROUS is a boolean which should be set if the user should be +prompted before performing this operation. +OPSTRING is a string which will be displayed to the user after the +operation is complete, in the form: + \"Operation complete; OPSTRING x buffers\" +ACTIVE-OPSTRING is a string which will be displayed to the user in a +confirmation message, in the form: + \"Really ACTIVE-OPSTRING x buffers?\" +COMPLEX means this function is special; see the source code of this +macro for exactly what it does. + +\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil (quote macro)) + +(autoload 'define-ibuffer-filter "ibuf-macs" "\ +Define a filter named NAME. +DOCUMENTATION is the documentation of the function. +READER is a form which should read a qualifier from the user. +DESCRIPTION is a short string describing the filter. + +BODY should contain forms which will be evaluated to test whether or +not a particular buffer should be displayed or not. The forms in BODY +will be evaluated with BUF bound to the buffer object, and QUALIFIER +bound to the current value of the filter. + +\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil (quote macro)) + +;;;*** ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) ;;;;;; "ibuffer" "ibuffer.el" (20412 11425)) @@ -14104,8 +14249,8 @@ ;;;*** -;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20318 -;;;;;; 5885)) +;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20452 +;;;;;; 44311)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -16891,7 +17036,7 @@ ;;;*** ;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el" -;;;;;; (20451 34676)) +;;;;;; (20452 43334)) ;;; Generated autoloads from emacs-lisp/macroexp.el (autoload 'macroexpand-all "macroexp" "\ @@ -21489,7 +21634,7 @@ ;;;*** ;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el" -;;;;;; (20451 34853)) +;;;;;; (20452 43334)) ;;; Generated autoloads from emacs-lisp/pcase.el (autoload 'pcase "pcase" "\ @@ -21608,8 +21753,8 @@ ;;;*** -;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20373 -;;;;;; 41604)) +;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20452 +;;;;;; 43334)) ;;; Generated autoloads from pcmpl-rpm.el (autoload 'pcomplete/rpm "pcmpl-rpm" "\ @@ -23262,7 +23407,8 @@ ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls ;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url -;;;;;; quickurl-ask) "quickurl" "net/quickurl.el" (20356 35090)) +;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -23276,6 +23422,15 @@ in your ~/.emacs (after loading/requiring quickurl).") +(autoload 'quickurl "quickurl" "\ +Insert a URL based on LOOKUP. + +If not supplied LOOKUP is taken to be the word at point in the current +buffer, this default action can be modified via +`quickurl-grab-lookup-function'. + +\(fn &optional LOOKUP)" t nil) + (autoload 'quickurl-ask "quickurl" "\ Insert a URL, with `completing-read' prompt, based on LOOKUP. @@ -24785,8 +24940,8 @@ ;;;*** -;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20318 -;;;;;; 5885)) +;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20452 +;;;;;; 43636)) ;;; Generated autoloads from savehist.el (defvar savehist-mode nil "\ @@ -32255,7 +32410,7 @@ ;;;*** ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" -;;;;;; (20244 35516)) +;;;;;; (20452 43334)) ;;; Generated autoloads from wdired.el (autoload 'wdired-change-to-wdired-mode "wdired" "\ @@ -32850,7 +33005,7 @@ ;;;*** ;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el" -;;;;;; (20244 35516)) +;;;;;; (20452 43334)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -33379,7 +33534,7 @@ ;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" ;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" ;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el" -;;;;;; "w32-vars.el" "x-dnd.el") (20451 34928 615251)) +;;;;;; "w32-vars.el" "x-dnd.el") (20452 56581 711508)) ;;;*** === modified file 'lisp/startup.el' --- lisp/startup.el 2012-06-11 15:55:32 +0000 +++ lisp/startup.el 2012-06-22 21:24:54 +0000 @@ -123,8 +123,8 @@ "Default directory to use for command line arguments. This is normally copied from `default-directory' when Emacs starts.") -;;; This is here, rather than in x-win.el, so that we can ignore these -;;; options when we are not using X. +;; This is here, rather than in x-win.el, so that we can ignore these +;; options when we are not using X. (defconst command-line-x-option-alist '(("-bw" 1 x-handle-numeric-switch border-width) ("-d" 1 x-handle-display) === modified file 'lisp/subr.el' --- lisp/subr.el 2012-06-22 17:30:25 +0000 +++ lisp/subr.el 2012-06-22 21:24:54 +0000 @@ -272,6 +272,7 @@ "Do not evaluate any arguments and return nil. Treated as a declaration when used at the right place in a `defmacro' form. \(See Info anchor `(elisp)Definition of declare'.)" + ;; FIXME: edebug spec should pay attention to defun-declarations-alist. nil) )) === modified file 'lisp/window.el' --- lisp/window.el 2012-06-19 06:49:50 +0000 +++ lisp/window.el 2012-06-22 21:24:54 +0000 @@ -28,8 +28,6 @@ ;;; Code: -(eval-when-compile (require 'cl)) - (defmacro save-selected-window (&rest body) "Execute BODY, then select the previously selected window. The value returned is the value of the last form in BODY. @@ -2557,7 +2555,7 @@ (while (not (eq (setq w (next-window w 1)) window)) (let ((e (window-edges w))) (when (and (= (car e) (car edges)) - (= (caddr e) (caddr edges))) + (= (nth 2 e) (nth 2 edges))) (push w delenda)))) (mapc 'delete-window delenda))) ------------------------------------------------------------ revno: 108687 fixes bug(s): http://debbugs.gnu.org/9000 committer: Paul Eggert branch nick: trunk timestamp: Fri 2012-06-22 14:17:42 -0700 message: Support higher-resolution time stamps. diff: === modified file 'ChangeLog' --- ChangeLog 2012-06-22 17:20:00 +0000 +++ ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,5 +1,26 @@ 2012-06-22 Paul Eggert + Support higher-resolution time stamps (Bug#9000). + * configure.in (gl_ASSERT_NO_GNULIB_POSIXCHECK) + (gl_ASSERT_NO_GNULIB_TESTS, gl_INIT): Move these up earlier, so + that the new clock stuff doesn't clash with RSVG_LIBS. + (AC_CHECK_HEADERS): Don't check for sys/select.h, sys/time.h, utime.h, + as gnulib does that for us now. + (emacs_cv_struct_utimbuf, HAVE_STRUCT_UTIMBUF, HAVE_TIMEVAL) + (GETTIMEOFDAY_ONE_ARGUMENT): Remove; gnulib does these now. + (AC_CHECK_FUNCS): Remove utimes; no longer needed. + * lib/dtotimespec.c, lib/gettime.c, lib/gettimeofday.c, lib/pselect.c: + * lib/stat-time.h, lib/sys_select.in.h, lib/sys_time.in.h: + * lib/timespec-add.c, lib/timespec-sub.c, lib/timespec.h: + * lib/utimens.c, lib/utimens.h, m4/clock_time.m4, m4/gettime.m4: + * m4/gettimeofday.m4, m4/pselect.m4, m4/stat-time.m4: + * m4/sys_select_h.m4, m4/sys_socket_h.m4, m4/sys_time_h.m4: + * m4/timespec.m4, m4/utimbuf.m4, m4/utimens.m4, m4/utimes.m4: + New files, copied automatically from gnulib. + * lib/gnulib.mk, m4/gnulib-comp.m4: Merge from gnulib. + +2012-06-22 Paul Eggert + Merge from gnulib. * lib/filemode.h, lib/signal.in.h, lib/stat.c, lib/stdint.in.h: * lib/stdlib.in.h, lib/unistd.in.h, m4/extensions.m4, m4/getloadavg.m4: === modified file 'admin/CPP-DEFINES' --- admin/CPP-DEFINES 2012-06-13 18:11:05 +0000 +++ admin/CPP-DEFINES 2012-06-22 21:17:42 +0000 @@ -160,11 +160,9 @@ HAVE_SYS_TIMEB_H HAVE_SYS_TIME_H HAVE_TCATTR -HAVE_TIMEVAL HAVE_TM_ZONE HAVE_TZSET HAVE_UNISTD_H -HAVE_UTIMES HAVE_UTIME_H HAVE_WINDOW_SYSTEM HAVE_WORKING_VFORK === modified file 'admin/ChangeLog' --- admin/ChangeLog 2012-06-13 13:40:48 +0000 +++ admin/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,18 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + * merge-gnulib (GNULIB_MODULES): Add dtotimespec, gettime, + gettimeofday, pselect, stat-time, sys_time, time, timespec-add, + timespec-sub, utimens. + (GNULIB_TOOL_FLAGS): Add --avoid=select --avoid=sigprocmask. + This trims down the gnulib import, from the very latest gnulib. + Emacs does its own implementation of 'select' and 'sigprocmask' + on Windows, and it assumes 'select' and 'sigprocmask' on non-Windows + hosts, so it doesn't need these modules. + Similarly, avoid errno, fcntl, fcntl-h, fstat, and sys_types, as + these gnulib modules are only for Windows porting and Emacs ports + to Windows in a different way. + 2012-06-13 Andreas Schwab * make-emacs: Rename --union-type to --check-lisp-type. Define === modified file 'admin/merge-gnulib' --- admin/merge-gnulib 2012-05-27 09:12:09 +0000 +++ admin/merge-gnulib 2012-06-22 21:17:42 +0000 @@ -28,16 +28,20 @@ GNULIB_MODULES=' alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 - dtoastr dup2 - filemode getloadavg getopt-gnu ignore-value intprops largefile lstat - manywarnings mktime pthread_sigmask readlink - socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat + dtoastr dtotimespec dup2 + filemode getloadavg getopt-gnu gettime gettimeofday + ignore-value intprops largefile lstat + manywarnings mktime pselect pthread_sigmask readlink + socklen stat-time stdarg stdio strftime strtoimax strtoumax symlink sys_stat + sys_time time timespec-add timespec-sub utimens warnings ' GNULIB_TOOL_FLAGS=' + --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow - --avoid=raise --avoid=threadlib + --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types + --avoid=threadlib --conditional-dependencies --import --no-changelog --no-vc-files --makefile-name=gnulib.mk ' === modified file 'configure.in' --- configure.in 2012-06-13 13:40:48 +0000 +++ configure.in 2012-06-22 21:17:42 +0000 @@ -1069,6 +1069,13 @@ esac +# Configure gnulib before invoking PKG_CHECK_MODULES, as the latter might +# for example add -lrt to RSVG_LIBS, which would then cause gnulib to +# incorrectly conclude that -lrt is not needed to link clock_gettime. +gl_ASSERT_NO_GNULIB_POSIXCHECK +gl_ASSERT_NO_GNULIB_TESTS +gl_INIT + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) dnl This function definition taken from Gnome 2.0 @@ -1211,26 +1218,6 @@ fi AC_HEADER_SYS_WAIT -dnl Some systems have utime.h but don't declare the struct anyplace. -AC_CACHE_CHECK(for struct utimbuf, emacs_cv_struct_utimbuf, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME -#include -#include -#else -#ifdef HAVE_SYS_TIME_H -#include -#else -#include -#endif -#endif -#ifdef HAVE_UTIME_H -#include -#endif]], [[static struct utimbuf x; x.actime = x.modtime;]])], - emacs_cv_struct_utimbuf=yes, emacs_cv_struct_utimbuf=no)) -if test $emacs_cv_struct_utimbuf = yes; then - AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if `struct utimbuf' is declared by .]) -fi - dnl Check for speed_t typedef. AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[speed_t x = 1;]])], @@ -1240,23 +1227,6 @@ [Define to 1 if `speed_t' is declared by .]) fi -AC_CACHE_CHECK(for struct timeval, emacs_cv_struct_timeval, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME -#include -#include -#else -#ifdef HAVE_SYS_TIME_H -#include -#else -#include -#endif -#endif]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])], - emacs_cv_struct_timeval=yes, emacs_cv_struct_timeval=no)) -HAVE_TIMEVAL=$emacs_cv_struct_timeval -if test $emacs_cv_struct_timeval = yes; then - AC_DEFINE(HAVE_TIMEVAL, 1, [Define to 1 if `struct timeval' is declared by .]) -fi - AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;]])], @@ -3019,33 +2989,6 @@ [Define to 1 if localtime caches TZ.]) fi -if test "x$HAVE_TIMEVAL" = xyes; then - AC_CHECK_FUNCS(gettimeofday) - if test $ac_cv_func_gettimeofday = yes; then - AC_CACHE_CHECK(whether gettimeofday can accept two arguments, - emacs_cv_gettimeofday_two_arguments, - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#ifdef TIME_WITH_SYS_TIME -#include -#include -#else -#ifdef HAVE_SYS_TIME_H -#include -#else -#include -#endif -#endif]], - [[struct timeval time; - gettimeofday (&time, 0);]])], - emacs_cv_gettimeofday_two_arguments=yes, - emacs_cv_gettimeofday_two_arguments=no)]) - if test $emacs_cv_gettimeofday_two_arguments = no; then - AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1, - [Define to 1 if gettimeofday accepts only one argument.]) - fi - fi -fi - ok_so_far=yes AC_CHECK_FUNC(socket, , ok_so_far=no) if test $ok_so_far = yes; then @@ -3118,7 +3061,7 @@ esac dnl SIGIO exists, but the feature doesn't work in the way Emacs needs. -dnl See eg . +dnl See eg . case $opsys in hpux* | irix6-5 | openbsd | sol2* | unixware ) AC_DEFINE(BROKEN_SIGIO, 1, [Define if SIGIO should not be used.]) @@ -3376,11 +3319,6 @@ AC_SUBST(PRE_ALLOC_OBJ) AC_SUBST(POST_ALLOC_OBJ) -# Configure gnulib here, now that we know LIBS. -gl_ASSERT_NO_GNULIB_POSIXCHECK -gl_ASSERT_NO_GNULIB_TESTS -gl_INIT - case "$opsys" in aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;; === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-06-21 07:34:27 +0000 +++ doc/lispref/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,10 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + * os.texi (Time of Day, Time Parsing, Processor Run Time, Idle Timers): + * processes.texi (System Processes): + Time stamp resolution is now picosecond, not microsecond. + 2012-06-21 Glenn Morris * Makefile.in: Rename infodir to buildinfodir throughout. (Bug#11737) === modified file 'doc/lispref/os.texi' --- doc/lispref/os.texi 2012-06-17 05:13:40 +0000 +++ doc/lispref/os.texi 2012-06-22 21:17:42 +0000 @@ -1166,7 +1166,9 @@ zone. @cindex epoch - Most of these functions represent time as a list of either three + Most of these functions represent time as a list of either four +integers, @code{(@var{sec-high} @var{sec-low} @var{microsec} +@var{picosec})}, or of three integers, @code{(@var{sec-high} @var{sec-low} @var{microsec})}, or of two integers, @code{(@var{sec-high} @var{sec-low})}. The integers @var{sec-high} and @var{sec-low} give the high and low bits of an @@ -1181,12 +1183,15 @@ UTC) to the specified time. The third list element @var{microsec}, if present, gives the number of microseconds from the start of that second to the specified time. +Similarly, the fourth list element @var{picosec}, if present, gives +the number of picoseconds from the start of that microsecond to the +specified time. The return value of @code{current-time} represents time using three -integers, while the timestamps in the return value of -@code{file-attributes} use two integers (@pxref{Definition of +integers, as do the timestamps in the return value of +@code{file-attributes} (@pxref{Definition of file-attributes}). In function arguments, e.g.@: the @var{time-value} -argument to @code{current-time-string}, both two- and three-integer +argument to @code{current-time-string}, two-, three-, and four-integer lists are accepted. You can convert times from the list representation into standard human-readable strings using @code{current-time}, or to other forms using the @code{decode-time} @@ -1216,9 +1221,12 @@ @end defun @defun current-time -This function returns the current time, represented as a list of three -integers @code{(@var{sec-high} @var{sec-low} @var{microsec})}. On -systems with only one-second time resolutions, @var{microsec} is 0. +This function returns the current time, represented as a list of four +integers @code{(@var{sec-high} @var{sec-low} @var{microsec} @var{picosec})}. +These integers have trailing zeros on systems that return time with +lower resolutions. On all current machines @var{picosec} is a +multiple of 1000, but this may change as higher-resolution clocks +become available. @end defun @defun float-time &optional time-value @@ -1259,7 +1267,7 @@ @node Time Conversion @section Time Conversion - These functions convert time values (lists of two or three integers, + These functions convert time values (lists of two to four integers, as explained in the previous section) into calendrical information and vice versa. @@ -1410,8 +1418,6 @@ This stands for the nanoseconds (000000000-999999999). To ask for fewer digits, use @samp{%3N} for milliseconds, @samp{%6N} for microseconds, etc. Any excess digits are discarded, without rounding. -Currently Emacs time stamps are at best microsecond resolution so the -last three digits generated by plain @samp{%N} are always zero. @item %p This stands for @samp{AM} or @samp{PM}, as appropriate. @item %r @@ -1563,18 +1569,9 @@ @defun get-internal-run-time This function returns the processor run time used by Emacs as a list -of three integers: @code{(@var{high} @var{low} @var{microsec})}. The -integers @var{high} and @var{low} combine to give the number of -seconds, which is -@ifnottex -@var{high} * 2**16 + @var{low}. -@end ifnottex -@tex -$high*2^{16}+low$. -@end tex - -The third element, @var{microsec}, gives the microseconds (or 0 for -systems that return time with the resolution of only one second). +of four integers: @code{(@var{high} @var{low} @var{microsec} +@var{picosec})}, using the same format as @code{current-time} +(@pxref{Time of Day}). Note that the time returned by this function excludes the time Emacs was not using the processor, and if the Emacs process has several @@ -1817,10 +1814,9 @@ @defun current-idle-time If Emacs is idle, this function returns the length of time Emacs has -been idle, as a list of three integers: @code{(@var{sec-high} -@var{sec-low} @var{microsec})}, where @var{high} and @var{low} are the -high and low bits for the number of seconds and @var{microsec} is the -additional number of microseconds (@pxref{Time of Day}). +been idle, as a list of four integers: @code{(@var{sec-high} +@var{sec-low} @var{microsec} @var{picosec})}, using the same format as +@code{current-time} (@pxref{Time of Day}). When Emacs is not idle, @code{current-idle-time} returns @code{nil}. This is a convenient way to test whether Emacs is idle. === modified file 'doc/lispref/processes.texi' --- doc/lispref/processes.texi 2012-06-17 05:13:40 +0000 +++ doc/lispref/processes.texi 2012-06-22 21:17:42 +0000 @@ -1770,7 +1770,7 @@ @item utime Time spent by the process in the user context, for running the application's code. The corresponding @var{value} is in the -@w{@code{(@var{high} @var{low} @var{microsec})}} format, the same +@w{@code{(@var{high} @var{low} @var{microsec} @var{picosec})}} format, the same format used by functions @code{current-time} (@pxref{Time of Day, current-time}) and @code{file-attributes} (@pxref{File Attributes}). @@ -1801,12 +1801,12 @@ @item start The time when the process was started, in the same -@w{@code{(@var{high} @var{low} @var{microsec})}} format used by +@w{@code{(@var{high} @var{low} @var{microsec} @var{picosec})}} format used by @code{current-time} and by @code{file-attributes}. @item etime The time elapsed since the process started, in the @w{@code{(@var{high} -@var{low} @var{microsec})}} format. +@var{low} @var{microsec} @var{picosec})}} format. @item vsize The virtual memory size of the process, measured in kilobytes. === modified file 'etc/ChangeLog' --- etc/ChangeLog 2012-06-13 09:10:01 +0000 +++ etc/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,8 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + * NEWS: Mention addition of picoseconds to time stamp format. + 2012-06-13 Deniz Dogan * tutorials/TUTORIAL.sv: Fix grammar and a couple of typos. === modified file 'etc/NEWS' --- etc/NEWS 2012-06-22 13:42:38 +0000 +++ etc/NEWS 2012-06-22 21:17:42 +0000 @@ -64,6 +64,13 @@ * Changes in Emacs 24.2 +** The function `current-time' now returns extended-format time stamps +(HIGH LOW USEC PSEC) that use picosecond resolution; the PSEC +component is new. PSEC is typically a multiple of 1000 on current +machines. Other functions that use this format, such as +file-attributes and format-time-string, have been changed accordingly. +Old-format time stamps are still accepted. + ** New functions `system-users', `system-groups' return lists of the user name, group names known to the system (where possible). === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2012-06-10 13:20:58 +0000 +++ lib-src/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,13 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + * Makefile.in (LIB_CLOCK_GETTIME): New macro. + (profile${EXEEXT}): Use it. + * profile.c: Include inttyeps.h, intprops.h. + (time_string): Size conservatively; do not guess size. + (get_time): Now prints nanoseconds. + (gettimeofday): Remove replacement function; gnulib now does this. + 2012-06-08 Andreas Schwab * make-docfile.c (search_lisp_doc_at_eol): Unget last read === modified file 'lib-src/Makefile.in' --- lib-src/Makefile.in 2012-06-06 01:38:04 +0000 +++ lib-src/Makefile.in 2012-06-22 21:17:42 +0000 @@ -159,6 +159,8 @@ LIBRESOLV=@LIBRESOLV@ ## -llockfile if HAVE_LIBLOCKFILE or -lmail if HAVE_LIBMAIL LIBS_MAIL=@LIBS_MAIL@ +## empty or -lrt or -lposix4 if HAVE_CLOCK_GETTIME +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ ## Extra libraries to use when linking movemail. LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) \ @@ -309,7 +311,8 @@ regex.o $(LOADLIBES) -o ctags profile${EXEEXT}: ${srcdir}/profile.c ../src/config.h - $(CC) ${ALL_CFLAGS} ${srcdir}/profile.c $(LOADLIBES) -o profile + $(CC) ${ALL_CFLAGS} ${srcdir}/profile.c \ + $(LOADLIBES) $(LIB_CLOCK_GETTIME) -o profile make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h $(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \ === modified file 'lib-src/profile.c' --- lib-src/profile.c 2012-01-19 07:21:25 +0000 +++ lib-src/profile.c 2012-06-22 21:17:42 +0000 @@ -29,12 +29,17 @@ ** operations: reset_watch, get_time */ #include + +#include #include + +#include #include static EMACS_TIME TV1, TV2; static int watch_not_started = 1; /* flag */ -static char time_string[30]; +static char time_string[INT_STRLEN_BOUND (uintmax_t) + sizeof "." + + LOG10_EMACS_TIME_RESOLUTION]; /* Reset the stopwatch to zero. */ @@ -46,36 +51,23 @@ } /* This call returns the time since the last reset_watch call. The time - is returned as a string with the format . + is returned as a string with the format . If reset_watch was not called yet, exit. */ static char * get_time (void) { + uintmax_t s; + int ns; if (watch_not_started) exit (EXIT_FAILURE); /* call reset_watch first ! */ EMACS_GET_TIME (TV2); EMACS_SUB_TIME (TV2, TV2, TV1); - sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2)); + s = EMACS_SECS (TV2); + ns = EMACS_NSECS (TV2); + sprintf (time_string, "%"PRIuMAX".%0*d", s, LOG10_EMACS_TIME_RESOLUTION, ns); return time_string; } - -#if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL) - -/* ARGSUSED */ -gettimeofday (tp, tzp) - struct timeval *tp; - struct timezone *tzp; -{ - extern long time (); - - tp->tv_sec = time ((long *)0); - tp->tv_usec = 0; - if (tzp != 0) - tzp->tz_minuteswest = -1; -} - -#endif int main (void) === modified file 'lib/gnulib.mk' --- lib/gnulib.mk 2012-05-27 09:12:09 +0000 +++ lib/gnulib.mk 2012-06-22 21:17:42 +0000 @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops largefile lstat manywarnings mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat warnings +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdarg stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timespec-add timespec-sub utimens warnings MOSTLYCLEANFILES += core *.stackdump @@ -123,6 +123,12 @@ ## end gnulib module dtoastr +## begin gnulib module dtotimespec + +libgnu_a_SOURCES += dtotimespec.c + +## end gnulib module dtotimespec + ## begin gnulib module dup2 @@ -184,6 +190,21 @@ endif ## end gnulib module gettext-h +## begin gnulib module gettime + +libgnu_a_SOURCES += gettime.c + +## end gnulib module gettime + +## begin gnulib module gettimeofday + + +EXTRA_DIST += gettimeofday.c + +EXTRA_libgnu_a_SOURCES += gettimeofday.c + +## end gnulib module gettimeofday + ## begin gnulib module ignore-value @@ -269,6 +290,15 @@ ## end gnulib module pathmax +## begin gnulib module pselect + + +EXTRA_DIST += pselect.c + +EXTRA_libgnu_a_SOURCES += pselect.c + +## end gnulib module pselect + ## begin gnulib module pthread_sigmask @@ -329,17 +359,6 @@ ## end gnulib module signal-h -## begin gnulib module sigprocmask - -if gl_GNULIB_ENABLED_sigprocmask - -endif -EXTRA_DIST += sigprocmask.c - -EXTRA_libgnu_a_SOURCES += sigprocmask.c - -## end gnulib module sigprocmask - ## begin gnulib module snippet/_Noreturn # Because this Makefile snippet defines a variable used by other @@ -432,6 +451,13 @@ ## end gnulib module stat +## begin gnulib module stat-time + + +EXTRA_DIST += stat-time.h + +## end gnulib module stat-time + ## begin gnulib module stdalign BUILT_SOURCES += $(STDALIGN_H) @@ -871,6 +897,40 @@ ## end gnulib module symlink +## begin gnulib module sys_select + +BUILT_SOURCES += sys/select.h + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +sys/select.h: sys_select.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) + $(AM_V_at)$(MKDIR_P) sys + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_SYS_SELECT_H''@|$(NEXT_SYS_SELECT_H)|g' \ + -e 's|@''HAVE_SYS_SELECT_H''@|$(HAVE_SYS_SELECT_H)|g' \ + -e 's/@''GNULIB_PSELECT''@/$(GNULIB_PSELECT)/g' \ + -e 's/@''GNULIB_SELECT''@/$(GNULIB_SELECT)/g' \ + -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ + -e 's|@''HAVE_PSELECT''@|$(HAVE_PSELECT)|g' \ + -e 's|@''REPLACE_PSELECT''@|$(REPLACE_PSELECT)|g' \ + -e 's|@''REPLACE_SELECT''@|$(REPLACE_SELECT)|g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/sys_select.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += sys/select.h sys/select.h-t +MOSTLYCLEANDIRS += sys + +EXTRA_DIST += sys_select.in.h + +## end gnulib module sys_select + ## begin gnulib module sys_stat BUILT_SOURCES += sys/stat.h @@ -933,30 +993,39 @@ ## end gnulib module sys_stat -## begin gnulib module sys_types - -BUILT_SOURCES += sys/types.h - -# We need the following in order to create when the system +## begin gnulib module sys_time + +BUILT_SOURCES += sys/time.h + +# We need the following in order to create when the system # doesn't have one that works with the given compiler. -sys/types.h: sys_types.in.h $(top_builddir)/config.status +sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ - -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ - -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ - < $(srcdir)/sys_types.in.h; \ + -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ + -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ + -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ + -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ + -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ + -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ + -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ -MOSTLYCLEANFILES += sys/types.h sys/types.h-t - -EXTRA_DIST += sys_types.in.h - -## end gnulib module sys_types +MOSTLYCLEANFILES += sys/time.h sys/time.h-t + +EXTRA_DIST += sys_time.in.h + +## end gnulib module sys_time ## begin gnulib module time @@ -1009,6 +1078,25 @@ ## end gnulib module time_r +## begin gnulib module timespec + + +EXTRA_DIST += timespec.h + +## end gnulib module timespec + +## begin gnulib module timespec-add + +libgnu_a_SOURCES += timespec-add.c + +## end gnulib module timespec-add + +## begin gnulib module timespec-sub + +libgnu_a_SOURCES += timespec-sub.c + +## end gnulib module timespec-sub + ## begin gnulib module u64 @@ -1166,6 +1254,14 @@ ## end gnulib module unistd +## begin gnulib module utimens + +libgnu_a_SOURCES += utimens.c + +EXTRA_DIST += utimens.h + +## end gnulib module utimens + ## begin gnulib module verify if gl_GNULIB_ENABLED_verify === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 17:37:28 +0000 +++ lisp/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,26 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + + * calendar/time-date.el (with-decoded-time-value): New arg + PICO-SYMBOL in VARLIST. It's optional, for backward compatibility. + (encode-time-value): New optional arg PICO. New type 3. + (time-to-seconds) [!float-time]: Support the new picoseconds + component if it's used. + (seconds-to-time, time-subtract, time-add): + Support ps-resolution time stamps as well. + + * emacs-lisp/timer.el (timer): New component psecs. All uses changed. + (timerp): Timer vectors now have length 9, not 8. + (timer--time): Support new-style (4-part) time stamps. + (timer-next-integral-multiple-of-time): Time stamps now have + picosecond resolution, so take a bit more care about rounding. + (timer-relative-time, timer-inc-time): New optional arg psecs. + (timer-set-time-with-usecs): Set psecs to 0. + (timer--activate): Check psecs component, too. + + * proced.el (proced-time-lessp): Support ps-resolution stamps. + 2012-06-22 Stefan Monnier * icomplete.el (icomplete-minibuffer-setup, icomplete-completions): === modified file 'lisp/calendar/time-date.el' --- lisp/calendar/time-date.el 2012-01-19 07:21:25 +0000 +++ lisp/calendar/time-date.el 2012-06-22 21:17:42 +0000 @@ -23,15 +23,15 @@ ;;; Commentary: -;; Time values come in three formats. The oldest format is a cons +;; Time values come in several formats. The oldest format is a cons ;; cell of the form (HIGH . LOW). This format is obsolete, but still -;; supported. The two other formats are the lists (HIGH LOW) and -;; (HIGH LOW MICRO). The first two formats specify HIGH * 2^16 + LOW -;; seconds; the third format specifies HIGH * 2^16 + LOW + MICRO / -;; 1000000 seconds. We should have 0 <= MICRO < 1000000 and 0 <= LOW -;; < 2^16. If the time value represents a point in time, then HIGH is -;; nonnegative. If the time value is a time difference, then HIGH can -;; be negative as well. The macro `with-decoded-time-value' and the +;; supported. The other formats are the lists (HIGH LOW), (HIGH LOW +;; USEC), and (HIGH LOW USEC PSEC). These formats specify the time +;; value equal to HIGH * 2^16 + LOW + USEC * 10^-6 + PSEC * 10^-12 +;; seconds, where missing components are treated as zero. HIGH can be +;; negative, either because the value is a time difference, or because +;; the machine supports negative time stamps that fall before the +;; epoch. The macro `with-decoded-time-value' and the ;; function `encode-time-value' make it easier to deal with these ;; three formats. See `time-subtract' for an example of how to use ;; them. @@ -44,13 +44,15 @@ The value of the last form in BODY is returned. Each element of the list VARLIST is a list of the form -\(HIGH-SYMBOL LOW-SYMBOL MICRO-SYMBOL [TYPE-SYMBOL] TIME-VALUE). +\(HIGH-SYMBOL LOW-SYMBOL MICRO-SYMBOL [PICO-SYMBOL [TYPE-SYMBOL]] TIME-VALUE). The time value TIME-VALUE is decoded and the result it bound to the symbols HIGH-SYMBOL, LOW-SYMBOL and MICRO-SYMBOL. +The optional PICO-SYMBOL is bound to the picoseconds part. The optional TYPE-SYMBOL is bound to the type of the time value. Type 0 is the cons cell (HIGH . LOW), type 1 is the list (HIGH -LOW), and type 2 is the list (HIGH LOW MICRO)." +LOW), type 2 is the list (HIGH LOW MICRO), and type 3 is the +list (HIGH LOW MICRO PICO)." (declare (indent 1) (debug ((&rest (symbolp symbolp symbolp &or [symbolp form] form)) body))) @@ -59,6 +61,8 @@ (high (pop elt)) (low (pop elt)) (micro (pop elt)) + (pico (unless (<= (length elt) 2) + (pop elt))) (type (unless (eq (length elt) 1) (pop elt))) (time-value (car elt)) @@ -66,28 +70,44 @@ `(let* ,(append `((,gensym ,time-value) (,high (pop ,gensym)) ,low ,micro) + (when pico `(,pico)) (when type `(,type))) (if (consp ,gensym) (progn (setq ,low (pop ,gensym)) (if ,gensym - ,(append `(setq ,micro (car ,gensym)) - (when type `(,type 2))) + (progn + (setq ,micro (car ,gensym)) + ,(cond (pico + `(if (cdr ,gensym) + ,(append `(setq ,pico (cadr ,gensym)) + (when type `(,type 3))) + ,(append `(setq ,pico 0) + (when type `(,type 2))))) + (type + `(setq type 2)))) ,(append `(setq ,micro 0) + (when pico `(,pico 0)) (when type `(,type 1))))) ,(append `(setq ,low ,gensym ,micro 0) + (when pico `(,pico 0)) (when type `(,type 0)))) (with-decoded-time-value ,varlist ,@body))) `(progn ,@body))) -(defun encode-time-value (high low micro type) - "Encode HIGH, LOW, and MICRO into a time value of type TYPE. +(defun encode-time-value (high low micro pico &optional type) + "Encode HIGH, LOW, MICRO, and PICO into a time value of type TYPE. Type 0 is the cons cell (HIGH . LOW), type 1 is the list (HIGH LOW), -and type 2 is the list (HIGH LOW MICRO)." +type 2 is (HIGH LOW MICRO), and type 3 is (HIGH LOW MICRO PICO). + +For backward compatibility, if only four arguments are given, +it is assumed that PICO was omitted and should be treated as zero." (cond ((eq type 0) (cons high low)) ((eq type 1) (list high low)) - ((eq type 2) (list high low micro)))) + ((eq type 2) (list high low micro)) + ((eq type 3) (list high low micro pico)) + ((null type) (encode-time-value high low micro 0 pico)))) (autoload 'parse-time-string "parse-time") (autoload 'timezone-make-date-arpa-standard "timezone") @@ -125,28 +145,45 @@ (subrp (symbol-function 'float-time))) (defun time-to-seconds (time) "Convert time value TIME to a floating point number." - (with-decoded-time-value ((high low micro time)) + (with-decoded-time-value ((high low micro pico type time)) (+ (* 1.0 high 65536) low - (/ micro 1000000.0)))))) + (/ (+ (* micro 1e6) pico) 1e12)))))) ;;;###autoload (defun seconds-to-time (seconds) "Convert SECONDS (a floating point number) to a time value." - (list (floor seconds 65536) - (floor (mod seconds 65536)) - (floor (* (- seconds (ffloor seconds)) 1000000)))) + (let* ((usec (* 1000000 (mod seconds 1))) + (ps (round (* 1000000 (mod usec 1)))) + (us (floor usec)) + (lo (floor (mod seconds 65536))) + (hi (floor seconds 65536))) + (if (eq ps 1000000) + (progn + (setq ps 0) + (setq us (1+ us)) + (if (eq us 1000000) + (progn + (setq us 0) + (setq lo (1+ lo)) + (if (eq lo 65536) + (progn + (setq lo 0) + (setq hi (1+ hi)))))))) + (list hi lo us ps))) ;;;###autoload (defun time-less-p (t1 t2) "Return non-nil if time value T1 is earlier than time value T2." - (with-decoded-time-value ((high1 low1 micro1 t1) - (high2 low2 micro2 t2)) + (with-decoded-time-value ((high1 low1 micro1 pico1 type1 t1) + (high2 low2 micro2 pico2 type2 t2)) (or (< high1 high2) (and (= high1 high2) (or (< low1 low2) (and (= low1 low2) - (< micro1 micro2))))))) + (or (< micro1 micro2) + (and (= micro1 micro2) + (< pico1 pico2))))))))) ;;;###autoload (defun days-to-time (days) @@ -173,36 +210,44 @@ (defun time-subtract (t1 t2) "Subtract two time values, T1 minus T2. Return the difference in the format of a time value." - (with-decoded-time-value ((high low micro type t1) - (high2 low2 micro2 type2 t2)) + (with-decoded-time-value ((high low micro pico type t1) + (high2 low2 micro2 pico2 type2 t2)) (setq high (- high high2) low (- low low2) micro (- micro micro2) + pico (- pico pico2) type (max type type2)) + (when (< pico 0) + (setq micro (1- micro) + pico (+ pico 1000000))) (when (< micro 0) (setq low (1- low) micro (+ micro 1000000))) (when (< low 0) (setq high (1- high) low (+ low 65536))) - (encode-time-value high low micro type))) + (encode-time-value high low micro pico type))) ;;;###autoload (defun time-add (t1 t2) "Add two time values T1 and T2. One should represent a time difference." - (with-decoded-time-value ((high low micro type t1) - (high2 low2 micro2 type2 t2)) + (with-decoded-time-value ((high low micro pico type t1) + (high2 low2 micro2 pico2 type2 t2)) (setq high (+ high high2) low (+ low low2) micro (+ micro micro2) + pico (+ pico pico2) type (max type type2)) + (when (>= pico 1000000) + (setq micro (1+ micro) + pico (- pico 1000000))) (when (>= micro 1000000) (setq low (1+ low) micro (- micro 1000000))) (when (>= low 65536) (setq high (1+ high) low (- low 65536))) - (encode-time-value high low micro type))) + (encode-time-value high low micro pico type))) ;;;###autoload (defun date-to-day (date) === modified file 'lisp/emacs-lisp/timer.el' --- lisp/emacs-lisp/timer.el 2012-06-22 13:42:38 +0000 +++ lisp/emacs-lisp/timer.el 2012-06-22 21:17:42 +0000 @@ -28,7 +28,7 @@ ;;; Code: ;; Layout of a timer vector: -;; [triggered-p high-seconds low-seconds usecs repeat-delay +;; [triggered-p high-seconds low-seconds usecs psecs repeat-delay ;; function args idle-delay] ;; triggered-p is nil if the timer is active (waiting to be triggered), ;; t if it is inactive ("already triggered", in theory) @@ -42,27 +42,35 @@ (:type vector) (:conc-name timer--)) (triggered t) - high-seconds low-seconds usecs repeat-delay function args idle-delay) + high-seconds low-seconds usecs psecs repeat-delay function args idle-delay) (defun timerp (object) "Return t if OBJECT is a timer." - (and (vectorp object) (= (length object) 8))) + (and (vectorp object) (= (length object) 9))) ;; Pseudo field `time'. (defun timer--time (timer) (list (timer--high-seconds timer) (timer--low-seconds timer) - (timer--usecs timer))) + (timer--usecs timer) + (timer--psecs timer))) (gv-define-simple-setter timer--time (lambda (timer time) (or (timerp timer) (error "Invalid timer")) (setf (timer--high-seconds timer) (pop time)) - (setf (timer--low-seconds timer) - (if (consp time) (car time) time)) - (setf (timer--usecs timer) (or (and (consp time) (consp (cdr time)) - (cadr time)) - 0)))) + (let ((low time) (usecs 0) (psecs 0)) + (if (consp time) + (progn + (setq low (pop time)) + (if time + (progn + (setq usecs (pop time)) + (if time + (setq psecs (car time))))))) + (setf (timer--low-seconds timer) low) + (setf (timer--usecs timer) usecs) + (setf (timer--psecs timer) psecs)))) (defun timer-set-time (timer time &optional delta) @@ -77,7 +85,7 @@ (defun timer-set-idle-time (timer secs &optional repeat) "Set the trigger idle time of TIMER to SECS. SECS may be an integer, floating point number, or the internal -time format (HIGH LOW USECS) returned by, e.g., `current-idle-time'. +time format returned by, e.g., `current-idle-time'. If optional third argument REPEAT is non-nil, make the timer fire each time Emacs is idle for that many seconds." (if (consp secs) @@ -91,41 +99,46 @@ "Yield the next value after TIME that is an integral multiple of SECS. More precisely, the next value, after TIME, that is an integral multiple of SECS seconds since the epoch. SECS may be a fraction." - (let ((time-base (ash 1 16))) - ;; Use floating point, taking care to not lose precision. - (let* ((float-time-base (float time-base)) - (million 1000000.0) - (time-usec (+ (* million - (+ (* float-time-base (nth 0 time)) - (nth 1 time))) - (nth 2 time))) - (secs-usec (* million secs)) - (mod-usec (mod time-usec secs-usec)) - (next-usec (+ (- time-usec mod-usec) secs-usec)) - (time-base-million (* float-time-base million))) - (list (floor next-usec time-base-million) - (floor (mod next-usec time-base-million) million) - (floor (mod next-usec million)))))) + (let* ((trillion 1e12) + (time-sec (+ (nth 1 time) + (* 65536.0 (nth 0 time)))) + (delta-sec (mod (- time-sec) secs)) + (next-sec (+ time-sec (ffloor delta-sec))) + (next-sec-psec (ffloor (* trillion (mod delta-sec 1)))) + (sub-time-psec (+ (or (nth 3 time) 0) + (* 1e6 (nth 2 time)))) + (psec-diff (- sub-time-psec next-sec-psec))) + (if (and (<= next-sec time-sec) (< 0 psec-diff)) + (setq next-sec-psec (+ sub-time-psec + (mod (- psec-diff) (* trillion secs))))) + (setq next-sec (+ next-sec (floor next-sec-psec trillion))) + (setq next-sec-psec (mod next-sec-psec trillion)) + (list (floor next-sec 65536) + (floor (mod next-sec 65536)) + (floor next-sec-psec 1000000) + (floor (mod next-sec-psec 1000000))))) -(defun timer-relative-time (time secs &optional usecs) - "Advance TIME by SECS seconds and optionally USECS microseconds. -SECS may be either an integer or a floating point number." +(defun timer-relative-time (time secs &optional usecs psecs) + "Advance TIME by SECS seconds and optionally USECS nanoseconds +and PSECS picoseconds. SECS may be either an integer or a +floating point number." (let ((delta (if (floatp secs) (seconds-to-time secs) (list (floor secs 65536) (mod secs 65536))))) - (if usecs - (setq delta (time-add delta (list 0 0 usecs)))) + (if (or usecs psecs) + (setq delta (time-add delta (list 0 0 (or usecs 0) (or psecs 0))))) (time-add time delta))) (defun timer--time-less-p (t1 t2) "Say whether time value T1 is less than time value T2." (time-less-p (timer--time t1) (timer--time t2))) -(defun timer-inc-time (timer secs &optional usecs) - "Increment the time set in TIMER by SECS seconds and USECS microseconds. -SECS may be a fraction. If USECS is omitted, that means it is zero." +(defun timer-inc-time (timer secs &optional usecs psecs) + "Increment the time set in TIMER by SECS seconds, USECS nanoseconds, +and PSECS picoseconds. SECS may be a fraction. If USECS or PSECS are +omitted, they are treated as zero." (setf (timer--time timer) - (timer-relative-time (timer--time timer) secs usecs))) + (timer-relative-time (timer--time timer) secs usecs psecs))) (defun timer-set-time-with-usecs (timer time usecs &optional delta) "Set the trigger time of TIMER to TIME plus USECS. @@ -135,6 +148,7 @@ fire repeatedly that many seconds apart." (setf (timer--time timer) time) (setf (timer--usecs timer) usecs) + (setf (timer--psecs timer) 0) (setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta)) timer) (make-obsolete 'timer-set-time-with-usecs @@ -154,6 +168,7 @@ (integerp (timer--high-seconds timer)) (integerp (timer--low-seconds timer)) (integerp (timer--usecs timer)) + (integerp (timer--psecs timer)) (timer--function timer)) (let ((timers (if idle timer-idle-list timer-list)) last) @@ -386,7 +401,7 @@ "Perform an action the next time Emacs is idle for SECS seconds. The action is to call FUNCTION with arguments ARGS. SECS may be an integer, a floating point number, or the internal -time format (HIGH LOW USECS) returned by, e.g., `current-idle-time'. +time format returned by, e.g., `current-idle-time'. If Emacs is currently idle, and has been idle for N seconds (N < SECS), then it will call FUNCTION in SECS - N seconds from now. === modified file 'lisp/proced.el' --- lisp/proced.el 2012-06-02 10:56:09 +0000 +++ lisp/proced.el 2012-06-22 21:17:42 +0000 @@ -1170,14 +1170,16 @@ (defun proced-time-lessp (t1 t2) "Return t if time value T1 is less than time value T2. Return `equal' if T1 equals T2. Return nil otherwise." - (with-decoded-time-value ((high1 low1 micro1 t1) - (high2 low2 micro2 t2)) + (with-decoded-time-value ((high1 low1 micro1 pico1 type1 t1) + (high2 low2 micro2 pico2 type2 t2)) (cond ((< high1 high2)) ((< high2 high1) nil) ((< low1 low2)) ((< low2 low1) nil) ((< micro1 micro2)) ((< micro2 micro1) nil) + ((< pico1 pico2)) + ((< pico2 pico1) nil) (t 'equal)))) ;;; Sorting === modified file 'm4/gnulib-comp.m4' --- m4/gnulib-comp.m4 2012-05-26 23:14:36 +0000 +++ m4/gnulib-comp.m4 2012-06-22 21:17:42 +0000 @@ -41,12 +41,14 @@ # Code from module alloca-opt: # Code from module allocator: # Code from module careadlinkat: + # Code from module clock-time: # Code from module crypto/md5: # Code from module crypto/sha1: # Code from module crypto/sha256: # Code from module crypto/sha512: # Code from module dosname: # Code from module dtoastr: + # Code from module dtotimespec: # Code from module dup2: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) @@ -55,6 +57,8 @@ # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext-h: + # Code from module gettime: + # Code from module gettimeofday: # Code from module ignore-value: # Code from module include_next: # Code from module intprops: @@ -67,10 +71,10 @@ # Code from module multiarch: # Code from module nocrash: # Code from module pathmax: + # Code from module pselect: # Code from module pthread_sigmask: # Code from module readlink: # Code from module signal-h: - # Code from module sigprocmask: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: @@ -78,6 +82,7 @@ # Code from module socklen: # Code from module ssize_t: # Code from module stat: + # Code from module stat-time: # Code from module stdalign: # Code from module stdarg: dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode @@ -96,12 +101,17 @@ # Code from module strtoull: # Code from module strtoumax: # Code from module symlink: + # Code from module sys_select: # Code from module sys_stat: - # Code from module sys_types: + # Code from module sys_time: # Code from module time: # Code from module time_r: + # Code from module timespec: + # Code from module timespec-add: + # Code from module timespec-sub: # Code from module u64: # Code from module unistd: + # Code from module utimens: # Code from module verify: # Code from module warnings: ]) @@ -124,6 +134,7 @@ gl_source_base='lib' gl_FUNC_ALLOCA AC_CHECK_FUNCS_ONCE([readlinkat]) +gl_CLOCK_TIME gl_MD5 gl_SHA1 gl_SHA256 @@ -161,6 +172,13 @@ GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) +gl_GETTIME +gl_FUNC_GETTIMEOFDAY +if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then + AC_LIBOBJ([gettimeofday]) + gl_PREREQ_GETTIMEOFDAY +fi +gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) AC_REQUIRE([AC_C_INLINE]) gl_INTTYPES_INCOMPLETE AC_REQUIRE([gl_LARGEFILE]) @@ -177,6 +195,11 @@ fi gl_TIME_MODULE_INDICATOR([mktime]) gl_MULTIARCH +gl_FUNC_PSELECT +if test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1; then + AC_LIBOBJ([pselect]) +fi +gl_SYS_SELECT_MODULE_INDICATOR([pselect]) gl_FUNC_PTHREAD_SIGMASK if test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1; then AC_LIBOBJ([pthread_sigmask]) @@ -192,6 +215,8 @@ gl_SIGNAL_H gl_TYPE_SOCKLEN_T gt_TYPE_SSIZE_T +gl_STAT_TIME +gl_STAT_BIRTHTIME gl_STDALIGN_H gl_STDARG_H AM_STDBOOL_H @@ -217,9 +242,11 @@ AC_LIBOBJ([symlink]) fi gl_UNISTD_MODULE_INDICATOR([symlink]) +gl_HEADER_SYS_SELECT +AC_PROG_MKDIR_P gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P -gl_SYS_TYPES_H +gl_HEADER_SYS_TIME_H AC_PROG_MKDIR_P gl_HEADER_TIME_H gl_TIME_R @@ -228,12 +255,13 @@ gl_PREREQ_TIME_R fi gl_TIME_MODULE_INDICATOR([time_r]) +gl_TIMESPEC AC_REQUIRE([AC_C_INLINE]) gl_UNISTD_H +gl_UTIMENS gl_gnulib_enabled_dosname=false gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36=false gl_gnulib_enabled_pathmax=false - gl_gnulib_enabled_sigprocmask=false gl_gnulib_enabled_stat=false gl_gnulib_enabled_strtoll=false gl_gnulib_enabled_strtoull=false @@ -259,18 +287,6 @@ gl_gnulib_enabled_pathmax=true fi } - func_gl_gnulib_m4code_sigprocmask () - { - if ! $gl_gnulib_enabled_sigprocmask; then -gl_SIGNALBLOCKING -if test $HAVE_POSIX_SIGNALBLOCKING = 0; then - AC_LIBOBJ([sigprocmask]) - gl_PREREQ_SIGPROCMASK -fi -gl_SIGNAL_MODULE_INDICATOR([sigprocmask]) - gl_gnulib_enabled_sigprocmask=true - fi - } func_gl_gnulib_m4code_stat () { if ! $gl_gnulib_enabled_stat; then @@ -331,9 +347,6 @@ if test $REPLACE_LSTAT = 1; then func_gl_gnulib_m4code_stat fi - if test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1; then - func_gl_gnulib_m4code_sigprocmask - fi if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then func_gl_gnulib_m4code_stat fi @@ -353,7 +366,6 @@ AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname]) AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36]) AM_CONDITIONAL([gl_GNULIB_ENABLED_pathmax], [$gl_gnulib_enabled_pathmax]) - AM_CONDITIONAL([gl_GNULIB_ENABLED_sigprocmask], [$gl_gnulib_enabled_sigprocmask]) AM_CONDITIONAL([gl_GNULIB_ENABLED_stat], [$gl_gnulib_enabled_stat]) AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll]) AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoull], [$gl_gnulib_enabled_strtoull]) @@ -510,6 +522,7 @@ lib/careadlinkat.h lib/dosname.h lib/dtoastr.c + lib/dtotimespec.c lib/dup2.c lib/filemode.c lib/filemode.h @@ -521,6 +534,8 @@ lib/getopt1.c lib/getopt_int.h lib/gettext.h + lib/gettime.c + lib/gettimeofday.c lib/ignore-value.h lib/intprops.h lib/inttypes.in.h @@ -530,6 +545,7 @@ lib/mktime-internal.h lib/mktime.c lib/pathmax.h + lib/pselect.c lib/pthread_sigmask.c lib/readlink.c lib/sha1.c @@ -539,7 +555,7 @@ lib/sha512.c lib/sha512.h lib/signal.in.h - lib/sigprocmask.c + lib/stat-time.h lib/stat.c lib/stdalign.in.h lib/stdarg.in.h @@ -557,21 +573,30 @@ lib/strtoull.c lib/strtoumax.c lib/symlink.c + lib/sys_select.in.h lib/sys_stat.in.h - lib/sys_types.in.h + lib/sys_time.in.h lib/time.in.h lib/time_r.c + lib/timespec-add.c + lib/timespec-sub.c + lib/timespec.h lib/u64.h lib/unistd.in.h + lib/utimens.c + lib/utimens.h lib/verify.h m4/00gnulib.m4 m4/alloca.m4 m4/c-strtod.m4 + m4/clock_time.m4 m4/dup2.m4 m4/extensions.m4 m4/filemode.m4 m4/getloadavg.m4 m4/getopt.m4 + m4/gettime.m4 + m4/gettimeofday.m4 m4/gnulib-common.m4 m4/include_next.m4 m4/inttypes.m4 @@ -585,16 +610,17 @@ m4/nocrash.m4 m4/off_t.m4 m4/pathmax.m4 + m4/pselect.m4 m4/pthread_sigmask.m4 m4/readlink.m4 m4/sha1.m4 m4/sha256.m4 m4/sha512.m4 m4/signal_h.m4 - m4/signalblocking.m4 m4/socklen.m4 m4/ssize_t.m4 m4/st_dm_mode.m4 + m4/stat-time.m4 m4/stat.m4 m4/stdalign.m4 m4/stdarg.m4 @@ -609,12 +635,18 @@ m4/strtoull.m4 m4/strtoumax.m4 m4/symlink.m4 + m4/sys_select_h.m4 + m4/sys_socket_h.m4 m4/sys_stat_h.m4 - m4/sys_types_h.m4 + m4/sys_time_h.m4 m4/time_h.m4 m4/time_r.m4 + m4/timespec.m4 m4/tm_gmtoff.m4 m4/unistd_h.m4 + m4/utimbuf.m4 + m4/utimens.m4 + m4/utimes.m4 m4/warn-on-use.m4 m4/warnings.m4 m4/wchar_t.m4 === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-22 07:28:28 +0000 +++ src/ChangeLog 2012-06-22 21:17:42 +0000 @@ -1,3 +1,172 @@ +2012-06-22 Paul Eggert + + Support higher-resolution time stamps (Bug#9000). + The time stamps are only nanosecond-resolution at the C level, + since that's the best that any real-world system supports now. + But they are picosecond-resolution at the Lisp level, as that's + easy, and leaves room for future OS improvements. + + * Makefile.in (LIB_CLOCK_GETTIME): New macro. + (LIBES): Use it. + + * alloc.c (Fgarbage_collect): Port to higher-res time stamps. + Don't get current time unless it's needed. + + * atimer.c: Include unconditionally, since gnulib + now provides it if it's absent. + (start_atimer): Port to higher-res time stamps. + Check for time stamp overflow. Don't get current time more + often than is needed. + + * buffer.h (struct buffer): Buffer modtime now has high resolution. + Include systime.h, not time.h. + (NONEXISTENT_MODTIME_NSECS, UNKNOWN_MODTIME_NSECS): New macros. + + * dired.c: Include stat-time.h. + (Ffile-attributes): File times now have higher resolution. + + * dispextern.h [HAVE_WINDOW_SYSTEM]: Include systime.h. + (struct image): Timestamp now has higher resolution. + + * dispnew.c (PERIODIC_PREEMPTION_CHECKING): Remove, as Emacs always + has at least microseconds now. All uses removed. + (update_frame, update_single_window, update_window, update_frame_1) + (Fsleep_for, sit_for): Port to higher-resolution time stamps. + + * editfns.c (time_overflow): Now extern. + (Fcurrent_time, Fget_internal_run_time, make_time, lisp_time_argument) + (float-time, Fformat_time_string, Fcurrent_time_string) + (Fcurrent_time_zone): Accept and generate higher-resolution + time stamps. + (make_time_tail, make_lisp_time, dissassemble_lisp_time) + (decode_time_components, lisp_seconds_argument): New functions. + (make_time): Now static. + (lisp_time_argument): Now returns EMACS_TIME. New arg ppsec. + Report an error if the time is invalid, rather than having the caller + do that. + + * fileio.c: Include + (Fcopy_file): Copy higher-resolution time stamps. + Prefer to set the time stamp via a file descriptor if that works. + (Fset_file_times, Finsert_file_contents, Fwrite_region) + (Fverify_visited_file_modtime, Fclear_visited_file_modtime) + (Fvisited_file_modtime, Fset_visited_file_modtime): + Support higher-resolution time stamps. + + * fns.c (Frandom): Use nanoseconds, not microseconds, for seed. + + * gtkutil.c (xg_maybe_add_timer): Port to higher-res time stamps. + + * image.c (prepare_image_for_display, clear_image_cache) + (lookup_image): Port to higer-resolution time stamps. + + * keyboard.c (start_polling, bind_polling_period): + Check for time stamp overflow. + (read_char, kbd_buffer_get_event, timer_start_idle) + (timer_stop_idle, timer_resume_idle, timer_check_2, timer_check) + (Fcurrent_idle_time, init_keyboard, set_waiting_for_input): + Port to higher-resolution time stamps. Do not assume time_t is signed. + (decode_timer): New function. Timers are now vectors of length 9, + not 8, to accommodate the picosecond component. + (timer_check_2): Use it. + + * nsterm.m (select_timeout, timeval_subtract): Remove. + (ns_timeout): Use Emacs's facilities for time stamp arithmetic, + as they're a bit more accurate and handle overflow better. + (ns_select): Change prototype to be compatible with pselect. + (ns_select, ns_term_shutdown): Port to ns-resolution time stamps. + * nsterm.h (ns_select): Adjust prototype. + + * msdos.c (EMACS_TIME_ZERO_OR_NEG_P): Remove, as it assumes + us-resolution time stamps. + (sys_select): Use the new EMACS_TIME_SIGN macro instead. + + * lread.c (read_filtered_event): Port to ns-resolution time stamps. + + * lisp.h (time_overflow): New decl. + (wait_reading_process_output): First arg is now intmax_t, not int, + to accommodate larger waits. + + * process.h (struct Lisp_Process.read_output_delay): + Now counts nanoseconds, not microseconds. + * process.c (ADAPTIVE_READ_BUFFERING): Don't worry about + EMACS_HAS_USECS. + (READ_OUTPUT_DELAY_INCREMENT, Faccept_process_output) + (wait_reading_process_output): + Port to ns-resolution time stamps. + (Faccept_process_output, wait_reading_process_output): + Check for time stamp overflow. Do not assume time_t is signed. + (select_wrapper): Remove; we now use pselect. + (Fprocess_attributes): Now generates ns-resolution time stamps. + + * sysdep.c: Include utimens.h. Don't include utime.h + or worry about struct utimbuf; gnulib does that for us now. + (gettimeofday): Remove; gnulib provides a substitute. + (make_timeval): New function. + (set_file_times): Now sets ns-resolution time stamps. + New arg FD; all uses changed. + (time_from_jiffies, ltime_from_jiffies, get_up_time) + (system_process_attributes): + Now returns ns-resolution time stamp. All uses changed. + Check for time stamp overflow. + + * sysselect.h: Don't depend on HAVE_SYS_SELECT_H; gnulib + provides a substitute now. + + * systime.h: Include timespec.h rather than sys/time.h and time.h, + since it guarantees struct timespec. + (EMACS_TIME): Now struct timespec, so that we can support + ns-resolution time stamps. + (EMACS_TIME_RESOLUTION, LOG10_EMACS_TIME_RESOLUTION): New macros. + (EMACS_HAS_USECS): Remove; Emacs always has sub-second time stamps now. + (EMACS_USECS): Remove. + (EMACS_SET_USECS): The underlying time stamp now has ns resolution, + so multiply the arg by 1000 before storing it. + (EMACS_NSECS, EMACS_SECS_ADDR, EMACS_SET_NSECS, EMACS_SET_SECS_NSECS): + New macros. + (EMACS_GET_TIME, EMACS_ADD_TIME, EMACS_SUB_TIME): + Port to ns-resolution time stamps. + (EMACS_TIME_NEG_P): Remove; replaced by.... + (EMACS_TIME_SIGN): New macro. + (EMACS_SET_INVALID_TIME, EMACS_TIME_VALID_P) + (EMACS_TIME_FROM_DOUBLE, EMACS_TIME_TO_DOUBLE): New macros. + (set_file_times, make_time, lisp_time_argument): Adjust signature. + (make_timeval, make_lisp_time, decode_time_components): New decls. + (EMACS_TIME_CMP): Remove; no longer used. Plus, it was buggy, in + that it mishandled time_t overflow. You can't compare by subtracting! + (EMACS_TIME_EQ, EMACS_TIME_NE, EMACS_TIME_GT, EMACS_TIME_GE) + (EMACS_TIME_LT, EMACS_TIME_LE): Rewrite in terms of timespec_cmp. + + * term.c: Include . + (timeval_to_Time): New function, for proper overflow wraparound. + (term_mouse_position, term_mouse_click): Use it. + + * undo.c (record_first_change): Support higher-resolution time stamps + in the undo buffer. + (Fprimitive_undo): Use them when restoring time stamps. + + * w32.c (ltime, U64_TO_LISP_TIME, process_times, emacs_gnutls_pull) + (w32_get_internal_run_time): + Port to higher-resolution Emacs time stamps. + (ltime): Now accepts single 64-bit integer, as that's more convenient + for callers. + + * xdisp.c (start_hourglass): Port to ns-resolution time stamps. + + * xgselect.c, xgselect.h (xg_select): Add sigmask argument, + for compatibility with pselect. Support ns-resolution time stamps. + + * xmenu.c (x_menu_wait_for_event): Support ns-resolution time stamps. + + * xselect.c (wait_for_property_change, x_get_foreign_selection): + Check for time stamp overflow, and support ns-resolution time stamps. + + * xterm.c: Don't include sys/time.h; gnulib does that for us now. + Don't worry about whether HAVE_TIMEVAL and HAVE_SELECT are set. + (timeval_subtract): Remove; no longer needed. + (XTflash, XTring_bell, x_wait_for_event): + Port to ns-resolution time stamps. Don't assume time_t is signed. + 2012-06-22 Chong Yidong * xdisp.c (x_consider_frame_title): Revert last change. === modified file 'src/Makefile.in' --- src/Makefile.in 2012-06-03 23:14:22 +0000 +++ src/Makefile.in 2012-06-22 21:17:42 +0000 @@ -153,6 +153,8 @@ M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@ M17N_FLT_LIBS = @M17N_FLT_LIBS@ +LIB_CLOCK_GETTIME=@LIB_CLOCK_GETTIME@ + DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ ## dbusbind.o if HAVE_DBUS, else empty. @@ -384,7 +386,7 @@ ## duplicated symbols. If the standard libraries were compiled ## with GCC, we might need LIB_GCC again after them. LIBES = $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ - $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(DBUS_LIBS) \ + $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_CLOCK_GETTIME) $(DBUS_LIBS) \ $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \ $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ === modified file 'src/alloc.c' --- src/alloc.c 2012-06-22 06:51:06 +0000 +++ src/alloc.c 2012-06-22 21:17:42 +0000 @@ -5669,12 +5669,14 @@ } /* Accumulate statistics. */ - EMACS_GET_TIME (t2); - EMACS_SUB_TIME (t3, t2, t1); if (FLOATP (Vgc_elapsed)) - Vgc_elapsed = make_float (XFLOAT_DATA (Vgc_elapsed) + - EMACS_SECS (t3) + - EMACS_USECS (t3) * 1.0e-6); + { + EMACS_GET_TIME (t2); + EMACS_SUB_TIME (t3, t2, t1); + Vgc_elapsed = make_float (XFLOAT_DATA (Vgc_elapsed) + + EMACS_TIME_TO_DOUBLE (t3)); + } + gcs_done++; return Flist (sizeof total / sizeof *total, total); === modified file 'src/atimer.c' --- src/atimer.c 2012-01-19 07:21:25 +0000 +++ src/atimer.c 2012-06-22 21:17:42 +0000 @@ -26,10 +26,7 @@ #include "blockinput.h" #include "atimer.h" #include - -#ifdef HAVE_SYS_TIME_H #include -#endif /* Free-list of atimer structures. */ @@ -94,7 +91,8 @@ /* Round TIME up to the next full second if we don't have itimers. */ #ifndef HAVE_SETITIMER - if (EMACS_USECS (timestamp) != 0) + if (EMACS_NSECS (timestamp) != 0 + && EMACS_SECS (timestamp) < TYPE_MAXIMUM (time_t)) { EMACS_SET_USECS (timestamp, 0); EMACS_SET_SECS (timestamp, EMACS_SECS (timestamp) + 1); @@ -294,18 +292,21 @@ /* Determine s/us till the next timer is ripe. */ EMACS_GET_TIME (now); - EMACS_SUB_TIME (timestamp, atimers->expiration, now); -#ifdef HAVE_SETITIMER /* Don't set the interval to 0; this disables the timer. */ if (EMACS_TIME_LE (atimers->expiration, now)) { EMACS_SET_SECS (timestamp, 0); EMACS_SET_USECS (timestamp, 1000); } + else + EMACS_SUB_TIME (timestamp, atimers->expiration, now); + + +#ifdef HAVE_SETITIMER memset (&it, 0, sizeof it); - it.it_value = timestamp; + it.it_value = make_timeval (timestamp); setitimer (ITIMER_REAL, &it, 0); #else /* not HAVE_SETITIMER */ alarm (max (EMACS_SECS (timestamp), 1)); @@ -341,11 +342,10 @@ { EMACS_TIME now; - EMACS_GET_TIME (now); - while (atimers && (pending_atimers = interrupt_input_blocked) == 0 - && EMACS_TIME_LE (atimers->expiration, now)) + && (EMACS_GET_TIME (now), + EMACS_TIME_LE (atimers->expiration, now))) { struct atimer *t; @@ -363,8 +363,6 @@ t->next = free_atimers; free_atimers = t; } - - EMACS_GET_TIME (now); } if (! atimers) === modified file 'src/buffer.c' --- src/buffer.c 2012-06-18 07:20:19 +0000 +++ src/buffer.c 2012-06-22 21:17:42 +0000 @@ -709,7 +709,7 @@ BVAR (b, filename) = Qnil; BVAR (b, file_truename) = Qnil; BVAR (b, directory) = (current_buffer) ? BVAR (current_buffer, directory) : Qnil; - b->modtime = 0; + EMACS_SET_SECS_NSECS (b->modtime, 0, UNKNOWN_MODTIME_NSECS); b->modtime_size = -1; XSETFASTINT (BVAR (b, save_length), 0); b->last_window_start = 1; @@ -5834,9 +5834,9 @@ from (abs POSITION). If POSITION is positive, point was at the front of the text being deleted; if negative, point was at the end. -An entry (t HIGH . LOW) indicates that the buffer previously had -\"unmodified\" status. HIGH and LOW are the high and low 16-bit portions -of the visited file's modification time, as of that time. If the +An entry (t HIGH LOW USEC PSEC) indicates that the buffer was previously +unmodified; (HIGH LOW USEC PSEC) is in the same style as (current-time) +and is the visited file's modification time, as of that time. If the modification time of the most recent save is different, this entry is obsolete. === modified file 'src/buffer.h' --- src/buffer.h 2012-06-16 12:24:15 +0000 +++ src/buffer.h 2012-06-22 21:17:42 +0000 @@ -19,6 +19,7 @@ along with GNU Emacs. If not, see . */ #include /* for off_t, time_t */ +#include "systime.h" /* for EMACS_TIME */ /* Accessing the parameters of the current buffer. */ @@ -529,10 +530,13 @@ char local_flags[MAX_PER_BUFFER_VARS]; /* Set to the modtime of the visited file when read or written. - -1 means visited file was nonexistent. - 0 means visited file modtime unknown; in no case complain - about any mismatch on next save attempt. */ - time_t modtime; + EMACS_NSECS (modtime) == NONEXISTENT_MODTIME_NSECS means + visited file was nonexistent. EMACS_NSECS (modtime) == + UNKNOWN_MODTIME_NSECS means visited file modtime unknown; + in no case complain about any mismatch on next save attempt. */ +#define NONEXISTENT_MODTIME_NSECS (-1) +#define UNKNOWN_MODTIME_NSECS (-2) + EMACS_TIME modtime; /* Size of the file when modtime was set. This is used to detect the case where the file grew while we were reading it, so the modtime is still the same (since it's rounded up to seconds) but we're actually === modified file 'src/dired.c' --- src/dired.c 2012-06-16 12:24:15 +0000 +++ src/dired.c 2012-06-22 21:17:42 +0000 @@ -62,6 +62,7 @@ #endif /* HAVE_DIRENT_H */ #include +#include #ifdef MSDOS #define DIRENTRY_NONEMPTY(p) ((p)->d_name[0] != 0) @@ -893,8 +894,8 @@ 2. File uid as a string or a number. If a string value cannot be looked up, a numeric value, either an integer or a float, is returned. 3. File gid, likewise. - 4. Last access time, as a list of two integers. - First integer has high-order 16 bits of time, second has low 16 bits. + 4. Last access time, as a list of integers (HIGH LOW USEC PSEC) in the + same style as (current-time). (See a note below about access time on FAT-based filesystems.) 5. Last modification time, likewise. This is the time of the last change to the file's contents. @@ -979,9 +980,9 @@ else values[3] = make_fixnum_or_float (s.st_gid); - values[4] = make_time (s.st_atime); - values[5] = make_time (s.st_mtime); - values[6] = make_time (s.st_ctime); + values[4] = make_lisp_time (get_stat_atime (&s)); + values[5] = make_lisp_time (get_stat_mtime (&s)); + values[6] = make_lisp_time (get_stat_ctime (&s)); /* If the file size is a 4-byte type, assume that files of sizes in the 2-4 GiB range wrap around to negative values, as this is a === modified file 'src/dispextern.h' --- src/dispextern.h 2012-06-17 00:32:36 +0000 +++ src/dispextern.h 2012-06-22 21:17:42 +0000 @@ -68,6 +68,10 @@ typedef XImagePtr XImagePtr_or_DC; #endif +#ifdef HAVE_WINDOW_SYSTEM +# include "systime.h" +#endif + #ifndef HAVE_WINDOW_SYSTEM typedef int Cursor; #define No_Cursor (0) @@ -2780,7 +2784,7 @@ { /* The time in seconds at which the image was last displayed. Set in prepare_image_for_display. */ - time_t timestamp; + EMACS_TIME timestamp; /* Pixmaps of the image. */ Pixmap pixmap, mask; === modified file 'src/dispnew.c' --- src/dispnew.c 2012-06-16 12:24:15 +0000 +++ src/dispnew.c 2012-06-22 21:17:42 +0000 @@ -137,24 +137,11 @@ static void adjust_frame_glyphs_for_frame_redisplay (struct frame *); -/* Define PERIODIC_PREEMPTION_CHECKING to 1, if micro-second timers - are supported, so we can check for input during redisplay at - regular intervals. */ -#ifdef EMACS_HAS_USECS -#define PERIODIC_PREEMPTION_CHECKING 1 -#else -#define PERIODIC_PREEMPTION_CHECKING 0 -#endif - -#if PERIODIC_PREEMPTION_CHECKING - /* Redisplay preemption timers. */ static EMACS_TIME preemption_period; static EMACS_TIME preemption_next_check; -#endif - /* Nonzero upon entry to redisplay means do not assume anything about current contents of actual terminal frame; clear and redraw it. */ @@ -3221,14 +3208,12 @@ if (redisplay_dont_pause) force_p = 1; -#if PERIODIC_PREEMPTION_CHECKING else if (NILP (Vredisplay_preemption_period)) force_p = 1; else if (!force_p && NUMBERP (Vredisplay_preemption_period)) { EMACS_TIME tm; double p = XFLOATINT (Vredisplay_preemption_period); - int sec, usec; if (detect_input_pending_ignore_squeezables ()) { @@ -3236,14 +3221,10 @@ goto do_pause; } - sec = (int) p; - usec = (p - sec) * 1000000; - EMACS_GET_TIME (tm); - EMACS_SET_SECS_USECS (preemption_period, sec, usec); + preemption_period = EMACS_TIME_FROM_DOUBLE (p); EMACS_ADD_TIME (preemption_next_check, tm, preemption_period); } -#endif if (FRAME_WINDOW_P (f)) { @@ -3327,9 +3308,7 @@ #endif } -#if PERIODIC_PREEMPTION_CHECKING do_pause: -#endif /* Reset flags indicating that a window should be updated. */ set_window_update_flags (root_window, 0); @@ -3382,23 +3361,17 @@ if (redisplay_dont_pause) force_p = 1; -#if PERIODIC_PREEMPTION_CHECKING else if (NILP (Vredisplay_preemption_period)) force_p = 1; else if (!force_p && NUMBERP (Vredisplay_preemption_period)) { EMACS_TIME tm; double p = XFLOATINT (Vredisplay_preemption_period); - int sec, usec; - - sec = (int) p; - usec = (p - sec) * 1000000; EMACS_GET_TIME (tm); - EMACS_SET_SECS_USECS (preemption_period, sec, usec); + preemption_period = EMACS_TIME_FROM_DOUBLE (p); EMACS_ADD_TIME (preemption_next_check, tm, preemption_period); } -#endif /* Update W. */ update_begin (f); @@ -3644,10 +3617,9 @@ #if PERIODIC_PREEMPTION_CHECKING if (!force_p) { - EMACS_TIME tm, dif; + EMACS_TIME tm; EMACS_GET_TIME (tm); - EMACS_SUB_TIME (dif, preemption_next_check, tm); - if (EMACS_TIME_NEG_P (dif)) + if (EMACS_TIME_LT (preemption_next_check, tm)) { EMACS_ADD_TIME (preemption_next_check, tm, preemption_period); if (detect_input_pending_ignore_squeezables ()) @@ -4750,10 +4722,9 @@ #if PERIODIC_PREEMPTION_CHECKING if (!force_p) { - EMACS_TIME tm, dif; + EMACS_TIME tm; EMACS_GET_TIME (tm); - EMACS_SUB_TIME (dif, preemption_next_check, tm); - if (EMACS_TIME_NEG_P (dif)) + if (EMACS_TIME_LT (preemption_next_check, tm)) { EMACS_ADD_TIME (preemption_next_check, tm, preemption_period); if (detect_input_pending_ignore_squeezables ()) @@ -5967,48 +5938,14 @@ Sleeping, Waiting ***********************************************************************/ -/* Convert a positive value DURATION to a seconds count *PSEC plus a - microseconds count *PUSEC, rounding up. On overflow return the - maximal value. */ -void -duration_to_sec_usec (double duration, int *psec, int *pusec) -{ - int MILLION = 1000000; - int sec = INT_MAX, usec = MILLION - 1; - - if (duration < INT_MAX + 1.0) - { - int s = duration; - double usdouble = (duration - s) * MILLION; - int usfloor = usdouble; - int usceil = usfloor + (usfloor < usdouble); - - if (usceil < MILLION) - { - sec = s; - usec = usceil; - } - else if (sec < INT_MAX) - { - sec = s + 1; - usec = 0; - } - } - - *psec = sec; - *pusec = usec; -} - DEFUN ("sleep-for", Fsleep_for, Ssleep_for, 1, 2, 0, doc: /* Pause, without updating display, for SECONDS seconds. SECONDS may be a floating-point value, meaning that you can wait for a fraction of a second. Optional second arg MILLISECONDS specifies an -additional wait period, in milliseconds; this may be useful if your -Emacs was built without floating point support. +additional wait period, in milliseconds; this is for backwards compatibility. \(Not all operating systems support waiting for a fraction of a second.) */) (Lisp_Object seconds, Lisp_Object milliseconds) { - int sec, usec; double duration = extract_float (seconds); if (!NILP (milliseconds)) @@ -6017,17 +5954,12 @@ duration += XINT (milliseconds) / 1000.0; } - if (! (0 < duration)) - return Qnil; - - duration_to_sec_usec (duration, &sec, &usec); - -#ifndef EMACS_HAS_USECS - if (sec == 0 && usec != 0) - error ("Millisecond `sleep-for' not supported on %s", SYSTEM_TYPE); -#endif - - wait_reading_process_output (sec, usec, 0, 0, Qnil, NULL, 0); + if (0 < duration) + { + EMACS_TIME t = EMACS_TIME_FROM_DOUBLE (duration); + wait_reading_process_output (min (EMACS_SECS (t), INTMAX_MAX), + EMACS_NSECS (t), 0, 0, Qnil, NULL, 0); + } return Qnil; } @@ -6046,7 +5978,8 @@ Lisp_Object sit_for (Lisp_Object timeout, int reading, int do_display) { - int sec, usec; + intmax_t sec; + int nsec; swallow_events (do_display); @@ -6057,26 +5990,39 @@ if (do_display >= 2) redisplay_preserve_echo_area (2); - if (EQ (timeout, Qt)) + if (INTEGERP (timeout)) + { + sec = XINT (timeout); + if (! (0 < sec)) + return Qt; + nsec = 0; + } + else if (FLOATP (timeout)) + { + double seconds = XFLOAT_DATA (timeout); + if (! (0 < seconds)) + return Qt; + else + { + EMACS_TIME t = EMACS_TIME_FROM_DOUBLE (seconds); + sec = min (EMACS_SECS (t), INTMAX_MAX); + nsec = EMACS_NSECS (t); + } + } + else if (EQ (timeout, Qt)) { sec = 0; - usec = 0; + nsec = 0; } else - { - double duration = extract_float (timeout); - - if (! (0 < duration)) - return Qt; - - duration_to_sec_usec (duration, &sec, &usec); - } + wrong_type_argument (Qnumberp, timeout); + #ifdef SIGIO gobble_input (0); #endif - wait_reading_process_output (sec, usec, reading ? -1 : 1, do_display, + wait_reading_process_output (sec, nsec, reading ? -1 : 1, do_display, Qnil, NULL, 0); return detect_input_pending () ? Qnil : Qt; === modified file 'src/editfns.c' --- src/editfns.c 2012-06-16 12:24:15 +0000 +++ src/editfns.c 2012-06-22 21:17:42 +0000 @@ -73,9 +73,8 @@ extern Lisp_Object w32_get_internal_run_time (void); #endif -static void time_overflow (void) NO_RETURN; -static Lisp_Object format_time_string (char const *, ptrdiff_t, Lisp_Object, - int, time_t *, struct tm *); +static Lisp_Object format_time_string (char const *, ptrdiff_t, EMACS_TIME, + int, struct tm *); static int tm_diff (struct tm *, struct tm *); static void update_buffer_properties (ptrdiff_t, ptrdiff_t); @@ -1378,14 +1377,13 @@ #endif /* Report that a time value is out of range for Emacs. */ -static void +void time_overflow (void) { error ("Specified time is not representable"); } -/* Return the upper part of the time T (everything but the bottom 16 bits), - making sure that it is representable. */ +/* Return the upper part of the time T (everything but the bottom 16 bits). */ static EMACS_INT hi_time (time_t t) { @@ -1413,40 +1411,33 @@ DEFUN ("current-time", Fcurrent_time, Scurrent_time, 0, 0, 0, doc: /* Return the current time, as the number of seconds since 1970-01-01 00:00:00. -The time is returned as a list of three integers. The first has the -most significant 16 bits of the seconds, while the second has the -least significant 16 bits. The third integer gives the microsecond -count. - -The microsecond count is zero on systems that do not provide -resolution finer than a second. */) +The time is returned as a list of integers (HIGH LOW USEC PSEC). +HIGH has the most significant bits of the seconds, while LOW has the +least significant 16 bits. USEC and PSEC are the microsecond and +picosecond counts. */) (void) { EMACS_TIME t; EMACS_GET_TIME (t); - return list3 (make_number (hi_time (EMACS_SECS (t))), - make_number (lo_time (EMACS_SECS (t))), - make_number (EMACS_USECS (t))); + return make_lisp_time (t); } DEFUN ("get-internal-run-time", Fget_internal_run_time, Sget_internal_run_time, 0, 0, 0, doc: /* Return the current run time used by Emacs. -The time is returned as a list of three integers. The first has the -most significant 16 bits of the seconds, while the second has the -least significant 16 bits. The third integer gives the microsecond -count. +The time is returned as a list (HIGH LOW USEC PSEC), using the same +style as (current-time). On systems that can't determine the run time, `get-internal-run-time' -does the same thing as `current-time'. The microsecond count is zero -on systems that do not provide resolution finer than a second. */) +does the same thing as `current-time'. */) (void) { #ifdef HAVE_GETRUSAGE struct rusage usage; time_t secs; int usecs; + EMACS_TIME t; if (getrusage (RUSAGE_SELF, &usage) < 0) /* This shouldn't happen. What action is appropriate? */ @@ -1460,10 +1451,8 @@ usecs -= 1000000; secs++; } - - return list3 (make_number (hi_time (secs)), - make_number (lo_time (secs)), - make_number (usecs)); + EMACS_SET_SECS_USECS (t, secs, usecs); + return make_lisp_time (t); #else /* ! HAVE_GETRUSAGE */ #ifdef WINDOWSNT return w32_get_internal_run_time (); @@ -1474,103 +1463,174 @@ } -/* Make a Lisp list that represents the time T. */ -Lisp_Object +/* Make a Lisp list that represents the time T with fraction TAIL. */ +static Lisp_Object +make_time_tail (time_t t, Lisp_Object tail) +{ + return Fcons (make_number (hi_time (t)), + Fcons (make_number (lo_time (t)), tail)); +} + +/* Make a Lisp list that represents the system time T. */ +static Lisp_Object make_time (time_t t) { - return list2 (make_number (hi_time (t)), - make_number (lo_time (t))); + return make_time_tail (t, Qnil); +} + +/* Make a Lisp list that represents the Emacs time T. T may be an + invalid time, with a slightly negative tv_nsec value such as + UNKNOWN_MODTIME_NSECS; in that case, the Lisp list contains a + correspondingly negative picosecond count. */ +Lisp_Object +make_lisp_time (EMACS_TIME t) +{ + int ns = EMACS_NSECS (t); + return make_time_tail (EMACS_SECS (t), + list2 (make_number (ns / 1000), + make_number (ns % 1000 * 1000))); } /* Decode a Lisp list SPECIFIED_TIME that represents a time. - If SPECIFIED_TIME is nil, use the current time. - Set *RESULT to seconds since the Epoch. - If USEC is not null, set *USEC to the microseconds component. + Set *PHIGH, *PLOW, *PUSEC, *PPSEC to its parts; do not check their values. Return nonzero if successful. */ -int -lisp_time_argument (Lisp_Object specified_time, time_t *result, int *usec) +static int +disassemble_lisp_time (Lisp_Object specified_time, Lisp_Object *phigh, + Lisp_Object *plow, Lisp_Object *pusec, + Lisp_Object *ppsec) { - if (NILP (specified_time)) - { - if (usec) - { - EMACS_TIME t; - - EMACS_GET_TIME (t); - *usec = EMACS_USECS (t); - *result = EMACS_SECS (t); - return 1; - } - else - return time (result) != -1; - } - else - { - Lisp_Object high, low; - EMACS_INT hi; - high = Fcar (specified_time); - CHECK_NUMBER (high); - low = Fcdr (specified_time); + if (CONSP (specified_time)) + { + Lisp_Object low = XCDR (specified_time); + Lisp_Object usec = make_number (0); + Lisp_Object psec = make_number (0); if (CONSP (low)) - { - if (usec) - { - Lisp_Object usec_l = Fcdr (low); - if (CONSP (usec_l)) - usec_l = Fcar (usec_l); - if (NILP (usec_l)) - *usec = 0; - else - { - CHECK_NUMBER (usec_l); - if (! (0 <= XINT (usec_l) && XINT (usec_l) < 1000000)) - return 0; - *usec = XINT (usec_l); - } - } - low = Fcar (low); - } - else if (usec) - *usec = 0; - CHECK_NUMBER (low); - hi = XINT (high); - - /* Check for overflow, helping the compiler for common cases - where no runtime check is needed, and taking care not to - convert negative numbers to unsigned before comparing them. */ - if (! ((TYPE_SIGNED (time_t) - ? (TIME_T_MIN >> 16 <= MOST_NEGATIVE_FIXNUM - || TIME_T_MIN >> 16 <= hi) - : 0 <= hi) - && (MOST_POSITIVE_FIXNUM <= TIME_T_MAX >> 16 - || hi <= TIME_T_MAX >> 16))) - return 0; - - *result = (hi << 16) + (XINT (low) & 0xffff); + { + Lisp_Object low_tail = XCDR (low); + low = XCAR (low); + if (CONSP (low_tail)) + { + usec = XCAR (low_tail); + low_tail = XCDR (low_tail); + if (CONSP (low_tail)) + psec = XCAR (low_tail); + } + else if (!NILP (low_tail)) + usec = low_tail; + } + + *phigh = XCAR (specified_time); + *plow = low; + *pusec = usec; + *ppsec = psec; return 1; } + + return 0; +} + +/* From the time components HIGH, LOW, USEC and PSEC taken from a Lisp + list, generate the corresponding EMACS_TIME value *RESULT, and + if RESULT_PSEC is not null store into *RESULT_PSEC the + (nonnegative) difference in picoseconds between the input time and + the returned time. Return nonzero if successful. */ +int +decode_time_components (Lisp_Object high, Lisp_Object low, Lisp_Object usec, + Lisp_Object psec, EMACS_TIME *result, int *result_psec) +{ + EMACS_INT hi, lo, us, ps; + time_t sec; + if (! (INTEGERP (high) && INTEGERP (low) + && INTEGERP (usec) && INTEGERP (psec))) + return 0; + hi = XINT (high); + lo = XINT (low); + us = XINT (usec); + ps = XINT (psec); + + /* Normalize out-of-range lower-order components by carrying + each overflow into the next higher-order component. */ + us += ps / 1000000 - (ps % 1000000 < 0); + lo += us / 1000000 - (us % 1000000 < 0); + hi += lo >> 16; + ps = ps % 1000000 + 1000000 * (ps % 1000000 < 0); + us = us % 1000000 + 1000000 * (us % 1000000 < 0); + lo &= (1 << 16) - 1; + + /* Check for overflow in the highest-order component. */ + if (! ((TYPE_SIGNED (time_t) ? TIME_T_MIN >> 16 <= hi : 0 <= hi) + && hi <= TIME_T_MAX >> 16)) + return 0; + + sec = hi; + EMACS_SET_SECS_NSECS (*result, (sec << 16) + lo, us * 1000 + ps / 1000); + if (result_psec) + *result_psec = ps % 1000; + return 1; +} + +/* Decode a Lisp list SPECIFIED_TIME that represents a time. + If SPECIFIED_TIME is nil, use the current time. + Round the time down to the nearest EMACS_TIME value, and + if PPSEC is not null store into *PPSEC the (nonnegative) difference in + picoseconds between the input time and the returned time. + Return seconds since the Epoch. + Signal an error if unsuccessful. */ +EMACS_TIME +lisp_time_argument (Lisp_Object specified_time, int *ppsec) +{ + EMACS_TIME t; + if (NILP (specified_time)) + EMACS_GET_TIME (t); + else + { + Lisp_Object high, low, usec, psec; + if (! (disassemble_lisp_time (specified_time, &high, &low, &usec, &psec) + && decode_time_components (high, low, usec, psec, &t, ppsec))) + error ("Invalid time specification"); + } + return t; +} + +/* Like lisp_time_argument, except decode only the seconds part, + and do not check the subseconds part, and always round down. */ +static time_t +lisp_seconds_argument (Lisp_Object specified_time) +{ + if (NILP (specified_time)) + return time (NULL); + else + { + Lisp_Object high, low, usec, psec; + EMACS_TIME t; + if (! (disassemble_lisp_time (specified_time, &high, &low, &usec, &psec) + && decode_time_components (high, low, make_number (0), + make_number (0), &t, 0))) + error ("Invalid time specification"); + return EMACS_SECS (t); + } } DEFUN ("float-time", Ffloat_time, Sfloat_time, 0, 1, 0, doc: /* Return the current time, as a float number of seconds since the epoch. If SPECIFIED-TIME is given, it is the time to convert to float instead of the current time. The argument should have the form -(HIGH LOW) or (HIGH LOW USEC). Thus, you can use times obtained from -`current-time' and from `file-attributes'. SPECIFIED-TIME can also -have the form (HIGH . LOW), but this is considered obsolete. +(HIGH LOW) or (HIGH LOW USEC) or (HIGH LOW USEC PSEC). Thus, +you can use times from `current-time' and from `file-attributes'. +SPECIFIED-TIME can also have the form (HIGH . LOW), but this is +considered obsolete. WARNING: Since the result is floating point, it may not be exact. If precise time stamps are required, use either `current-time', or (if you need time as a string) `format-time-string'. */) (Lisp_Object specified_time) { - time_t sec; - int usec; - - if (! lisp_time_argument (specified_time, &sec, &usec)) - error ("Invalid time specification"); - - return make_float ((sec * 1e6 + usec) / 1e6); + int psec; + EMACS_TIME t = lisp_time_argument (specified_time, &psec); + double ps = (1000 * 1000 * 1000 <= INTMAX_MAX / 1000 + ? EMACS_NSECS (t) * (intmax_t) 1000 + psec + : EMACS_NSECS (t) * 1e3 + psec); + return make_float (EMACS_SECS (t) + ps / 1e12); } /* Write information into buffer S of size MAXSIZE, according to the @@ -1625,7 +1685,7 @@ DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 3, 0, doc: /* Use FORMAT-STRING to format the time TIME, or now if omitted. -TIME is specified as (HIGH LOW . IGNORED), as returned by +TIME is specified as (HIGH LOW USEC PSEC), as returned by `current-time' or `file-attributes'. The obsolete form (HIGH . LOW) is also still accepted. The third, optional, argument UNIVERSAL, if non-nil, means describe TIME @@ -1679,41 +1739,36 @@ usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */) (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal) { - time_t t; + EMACS_TIME t = lisp_time_argument (timeval, 0); struct tm tm; CHECK_STRING (format_string); format_string = code_convert_string_norecord (format_string, Vlocale_coding_system, 1); return format_time_string (SSDATA (format_string), SBYTES (format_string), - timeval, ! NILP (universal), &t, &tm); + t, ! NILP (universal), &tm); } static Lisp_Object format_time_string (char const *format, ptrdiff_t formatlen, - Lisp_Object timeval, int ut, time_t *tval, struct tm *tmp) + EMACS_TIME t, int ut, struct tm *tmp) { char buffer[4000]; char *buf = buffer; ptrdiff_t size = sizeof buffer; size_t len; Lisp_Object bufstring; - int usec; - int ns; + int ns = EMACS_NSECS (t); struct tm *tm; USE_SAFE_ALLOCA; - if (! lisp_time_argument (timeval, tval, &usec)) - error ("Invalid time specification"); - ns = usec * 1000; - while (1) { BLOCK_INPUT; synchronize_system_time_locale (); - tm = ut ? gmtime (tval) : localtime (tval); + tm = ut ? gmtime (EMACS_SECS_ADDR (t)) : localtime (EMACS_SECS_ADDR (t)); if (! tm) { UNBLOCK_INPUT; @@ -1758,17 +1813,13 @@ DOW and ZONE.) */) (Lisp_Object specified_time) { - time_t time_spec; + time_t time_spec = lisp_seconds_argument (specified_time); struct tm save_tm; struct tm *decoded_time; Lisp_Object list_args[9]; - if (! lisp_time_argument (specified_time, &time_spec, NULL)) - error ("Invalid time specification"); - BLOCK_INPUT; decoded_time = localtime (&time_spec); - /* Make a copy, in case a signal handler modifies TZ or the struct. */ if (decoded_time) save_tm = *decoded_time; UNBLOCK_INPUT; @@ -1919,14 +1970,11 @@ but this is considered obsolete. */) (Lisp_Object specified_time) { - time_t value; + time_t value = lisp_seconds_argument (specified_time); struct tm *tm; char buf[sizeof "Mon Apr 30 12:49:17 " + INT_STRLEN_BOUND (int) + 1]; int len IF_LINT (= 0); - if (! lisp_time_argument (specified_time, &value, NULL)) - error ("Invalid time specification"); - /* Convert to a string in ctime format, except without the trailing newline, and without the 4-digit year limit. Don't use asctime or ctime, as they might dump core if the year is outside the @@ -1994,17 +2042,17 @@ the data it can't find. */) (Lisp_Object specified_time) { - time_t value; + EMACS_TIME value; int offset; struct tm *t; struct tm localtm; Lisp_Object zone_offset, zone_name; zone_offset = Qnil; - zone_name = format_time_string ("%Z", sizeof "%Z" - 1, specified_time, - 0, &value, &localtm); + EMACS_SET_SECS_NSECS (value, lisp_seconds_argument (specified_time), 0); + zone_name = format_time_string ("%Z", sizeof "%Z" - 1, value, 0, &localtm); BLOCK_INPUT; - t = gmtime (&value); + t = gmtime (EMACS_SECS_ADDR (value)); if (t) offset = tm_diff (&localtm, t); UNBLOCK_INPUT; === modified file 'src/fileio.c' --- src/fileio.c 2012-06-20 21:20:06 +0000 +++ src/fileio.c 2012-06-22 21:17:42 +0000 @@ -76,6 +76,7 @@ #endif #include "systime.h" +#include #ifdef HPUX #include @@ -1931,7 +1932,7 @@ /* Ensure file is writable while its modified time is set. */ attributes = GetFileAttributes (filename); SetFileAttributes (filename, attributes & ~FILE_ATTRIBUTE_READONLY); - if (set_file_times (filename, now, now)) + if (set_file_times (-1, filename, now, now)) { /* Restore original attributes. */ SetFileAttributes (filename, attributes); @@ -2054,24 +2055,21 @@ } #endif - /* Closing the output clobbers the file times on some systems. */ - if (emacs_close (ofd) < 0) - report_file_error ("I/O error", Fcons (newname, Qnil)); - if (input_file_statable_p) { if (!NILP (keep_time)) { - EMACS_TIME atime, mtime; - EMACS_SET_SECS_USECS (atime, st.st_atime, 0); - EMACS_SET_SECS_USECS (mtime, st.st_mtime, 0); - if (set_file_times (SSDATA (encoded_newname), - atime, mtime)) + EMACS_TIME atime = get_stat_atime (&st); + EMACS_TIME mtime = get_stat_mtime (&st); + if (set_file_times (ofd, SSDATA (encoded_newname), atime, mtime)) xsignal2 (Qfile_date_error, build_string ("Cannot set file date"), newname); } } + if (emacs_close (ofd) < 0) + report_file_error ("I/O error", Fcons (newname, Qnil)); + emacs_close (ifd); #ifdef MSDOS @@ -3034,11 +3032,7 @@ { Lisp_Object absname, encoded_absname; Lisp_Object handler; - time_t sec; - int usec; - - if (! lisp_time_argument (timestamp, &sec, &usec)) - error ("Invalid time specification"); + EMACS_TIME t = lisp_time_argument (timestamp, 0); absname = Fexpand_file_name (filename, BVAR (current_buffer, directory)); @@ -3051,12 +3045,7 @@ encoded_absname = ENCODE_FILE (absname); { - EMACS_TIME t; - - EMACS_SET_SECS (t, sec); - EMACS_SET_USECS (t, usec); - - if (set_file_times (SSDATA (encoded_absname), t, t)) + if (set_file_times (-1, SSDATA (encoded_absname), t, t)) { #ifdef DOS_NT struct stat st; @@ -4205,7 +4194,7 @@ if (NILP (handler)) { - current_buffer->modtime = st.st_mtime; + current_buffer->modtime = get_stat_mtime (&st); current_buffer->modtime_size = st.st_size; BVAR (current_buffer, filename) = orig_filename; } @@ -4365,7 +4354,7 @@ } if (!NILP (visit) - && current_buffer->modtime == -1) + && EMACS_NSECS (current_buffer->modtime) == NONEXISTENT_MODTIME_NSECS) { /* If visiting nonexistent file, return nil. */ errno = save_errno; @@ -4803,7 +4792,7 @@ next attempt to save. */ if (visiting) { - current_buffer->modtime = st.st_mtime; + current_buffer->modtime = get_stat_mtime (&st); current_buffer->modtime_size = st.st_size; } @@ -5080,6 +5069,7 @@ struct stat st; Lisp_Object handler; Lisp_Object filename; + EMACS_TIME mtime, diff, one_second; if (NILP (buf)) b = current_buffer; @@ -5090,7 +5080,7 @@ } if (!STRINGP (BVAR (b, filename))) return Qt; - if (b->modtime == 0) return Qt; + if (EMACS_NSECS (b->modtime) == UNKNOWN_MODTIME_NSECS) return Qt; /* If the file name has special constructs in it, call the corresponding file handler. */ @@ -5101,20 +5091,25 @@ filename = ENCODE_FILE (BVAR (b, filename)); - if (stat (SSDATA (filename), &st) < 0) + if (stat (SSDATA (filename), &st) == 0) + mtime = get_stat_mtime (&st); + else { /* If the file doesn't exist now and didn't exist before, we say that it isn't modified, provided the error is a tame one. */ - if (errno == ENOENT || errno == EACCES || errno == ENOTDIR) - st.st_mtime = -1; - else - st.st_mtime = 0; + int ns = (errno == ENOENT || errno == EACCES || errno == ENOTDIR + ? NONEXISTENT_MODTIME_NSECS + : UNKNOWN_MODTIME_NSECS); + EMACS_SET_SECS_NSECS (mtime, 0, ns); } - if ((st.st_mtime == b->modtime - /* If both are positive, accept them if they are off by one second. */ - || (st.st_mtime > 0 && b->modtime > 0 - && (st.st_mtime - 1 == b->modtime - || st.st_mtime == b->modtime - 1))) + if ((EMACS_TIME_EQ (mtime, b->modtime) + /* If both exist, accept them if they are off by one second. */ + || (EMACS_TIME_VALID_P (mtime) && EMACS_TIME_VALID_P (b->modtime) + && ((EMACS_TIME_LT (mtime, b->modtime) + ? EMACS_SUB_TIME (diff, b->modtime, mtime) + : EMACS_SUB_TIME (diff, mtime, b->modtime)), + EMACS_SET_SECS_NSECS (one_second, 1, 0), + EMACS_TIME_LE (diff, one_second)))) && (st.st_size == b->modtime_size || b->modtime_size < 0)) return Qt; @@ -5127,7 +5122,7 @@ Next attempt to save will certainly not complain of a discrepancy. */) (void) { - current_buffer->modtime = 0; + EMACS_SET_SECS_NSECS (current_buffer->modtime, 0, UNKNOWN_MODTIME_NSECS); current_buffer->modtime_size = -1; return Qnil; } @@ -5135,16 +5130,16 @@ DEFUN ("visited-file-modtime", Fvisited_file_modtime, Svisited_file_modtime, 0, 0, 0, doc: /* Return the current buffer's recorded visited file modification time. -The value is a list of the form (HIGH LOW), like the time values that +The value is a list of the form (HIGH LOW USEC PSEC), like the time values that `file-attributes' returns. If the current buffer has no recorded file modification time, this function returns 0. If the visited file doesn't exist, HIGH will be -1. See Info node `(elisp)Modification Time' for more details. */) (void) { - if (! current_buffer->modtime) + if (EMACS_NSECS (current_buffer->modtime) < 0) return make_number (0); - return make_time (current_buffer->modtime); + return make_lisp_time (current_buffer->modtime); } DEFUN ("set-visited-file-modtime", Fset_visited_file_modtime, @@ -5154,12 +5149,12 @@ or if the file itself has been changed for some known benign reason. An argument specifies the modification time value to use \(instead of that of the visited file), in the form of a list -\(HIGH . LOW) or (HIGH LOW). */) +\(HIGH LOW USEC PSEC) as returned by `current-time'. */) (Lisp_Object time_list) { if (!NILP (time_list)) { - CONS_TO_INTEGER (time_list, time_t, current_buffer->modtime); + current_buffer->modtime = lisp_time_argument (time_list, 0); current_buffer->modtime_size = -1; } else @@ -5181,7 +5176,7 @@ if (stat (SSDATA (filename), &st) >= 0) { - current_buffer->modtime = st.st_mtime; + current_buffer->modtime = get_stat_mtime (&st); current_buffer->modtime_size = st.st_size; } } === modified file 'src/fns.c' --- src/fns.c 2012-05-25 18:19:24 +0000 +++ src/fns.c 2012-06-22 21:17:42 +0000 @@ -80,7 +80,7 @@ { EMACS_TIME t; EMACS_GET_TIME (t); - seed_random (getpid () ^ EMACS_SECS (t) ^ EMACS_USECS (t)); + seed_random (getpid () ^ EMACS_SECS (t) ^ EMACS_NSECS (t)); } if (NATNUMP (limit) && XFASTINT (limit) != 0) === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-05-25 18:19:24 +0000 +++ src/gtkutil.c 2012-06-22 21:17:42 +0000 @@ -1612,16 +1612,16 @@ { struct xg_dialog_data *dd = (struct xg_dialog_data *) data; EMACS_TIME next_time = timer_check (); - long secs = EMACS_SECS (next_time); - long usecs = EMACS_USECS (next_time); dd->timerid = 0; - if (secs >= 0 && usecs >= 0 && secs < ((guint)-1)/1000) + if (EMACS_TIME_VALID_P (next_time)) { - dd->timerid = g_timeout_add (secs * 1000 + usecs/1000, - xg_maybe_add_timer, - dd); + time_t s = EMACS_SECS (next_time); + int per_ms = EMACS_TIME_RESOLUTION / 1000; + int ms = (EMACS_NSECS (next_time) + per_ms - 1) / per_ms; + if (s <= ((guint) -1 - ms) / 1000) + dd->timerid = g_timeout_add (s * 1000 + ms, xg_maybe_add_timer, dd); } return FALSE; } === modified file 'src/image.c' --- src/image.c 2012-06-19 16:56:28 +0000 +++ src/image.c 2012-06-22 21:17:42 +0000 @@ -1062,11 +1062,8 @@ void prepare_image_for_display (struct frame *f, struct image *img) { - EMACS_TIME t; - /* We're about to display IMG, so set its timestamp to `now'. */ - EMACS_GET_TIME (t); - img->timestamp = EMACS_SECS (t); + EMACS_GET_TIME (img->timestamp); /* If IMG doesn't have a pixmap yet, load it now, using the image type dependent loader function. */ @@ -1514,8 +1511,8 @@ else if (INTEGERP (Vimage_cache_eviction_delay)) { /* Free cache based on timestamp. */ - EMACS_TIME t; - double old, delay; + EMACS_TIME old, t; + double delay; ptrdiff_t nimages = 0; for (i = 0; i < c->used; ++i) @@ -1530,12 +1527,12 @@ delay = max (delay, 1); EMACS_GET_TIME (t); - old = EMACS_SECS (t) - delay; + EMACS_SUB_TIME (old, t, EMACS_TIME_FROM_DOUBLE (delay)); for (i = 0; i < c->used; ++i) { struct image *img = c->images[i]; - if (img && img->timestamp < old) + if (img && EMACS_TIME_LT (img->timestamp, old)) { free_image (f, img); ++nfreed; @@ -1708,7 +1705,6 @@ { struct image *img; EMACS_UINT hash; - EMACS_TIME now; /* F must be a window-system frame, and SPEC must be a valid image specification. */ @@ -1802,8 +1798,7 @@ } /* We're using IMG, so set its timestamp to `now'. */ - EMACS_GET_TIME (now); - img->timestamp = EMACS_SECS (now); + EMACS_GET_TIME (img->timestamp); /* Value is the image id. */ return img->id; === modified file 'src/keyboard.c' --- src/keyboard.c 2012-06-19 16:56:28 +0000 +++ src/keyboard.c 2012-06-22 21:17:42 +0000 @@ -2020,12 +2020,13 @@ if (poll_timer == NULL || EMACS_SECS (poll_timer->interval) != polling_period) { + time_t period = max (1, min (polling_period, TYPE_MAXIMUM (time_t))); EMACS_TIME interval; if (poll_timer) cancel_atimer (poll_timer); - EMACS_SET_SECS_USECS (interval, polling_period, 0); + EMACS_SET_SECS_USECS (interval, period, 0); poll_timer = start_atimer (ATIMER_CONTINUOUS, interval, poll_for_input, NULL); } @@ -2093,7 +2094,7 @@ bind_polling_period (int n) { #ifdef POLL_FOR_INPUT - int new = polling_period; + EMACS_INT new = polling_period; if (n > new) new = n; @@ -2223,7 +2224,7 @@ /* Input of single characters from keyboard */ static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, int *used_mouse_menu, - struct timeval *end_time); + EMACS_TIME *end_time); static void record_char (Lisp_Object c); static Lisp_Object help_form_saved_window_configs; @@ -2275,7 +2276,7 @@ Lisp_Object read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, Lisp_Object prev_event, - int *used_mouse_menu, struct timeval *end_time) + int *used_mouse_menu, EMACS_TIME *end_time) { volatile Lisp_Object c; ptrdiff_t jmpcount; @@ -3783,7 +3784,7 @@ static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, int *used_mouse_menu, - struct timeval *end_time) + EMACS_TIME *end_time) { Lisp_Object obj; @@ -3857,8 +3858,9 @@ else { EMACS_SUB_TIME (duration, *end_time, duration); - wait_reading_process_output (EMACS_SECS (duration), - EMACS_USECS (duration), + wait_reading_process_output (min (EMACS_SECS (duration), + INTMAX_MAX), + EMACS_NSECS (duration), -1, 1, Qnil, NULL, 0); } } @@ -4253,7 +4255,7 @@ Lisp_Object timers; /* If we are already in the idle state, do nothing. */ - if (! EMACS_TIME_NEG_P (timer_idleness_start_time)) + if (EMACS_TIME_VALID_P (timer_idleness_start_time)) return; EMACS_GET_TIME (timer_idleness_start_time); @@ -4267,7 +4269,7 @@ timer = XCAR (timers); - if (!VECTORP (timer) || ASIZE (timer) != 8) + if (!VECTORP (timer) || ASIZE (timer) != 9) continue; ASET (timer, 0, Qnil); } @@ -4278,7 +4280,7 @@ static void timer_stop_idle (void) { - EMACS_SET_SECS_USECS (timer_idleness_start_time, -1, -1); + EMACS_SET_INVALID_TIME (timer_idleness_start_time); } /* Resume idle timer from last idle start time. */ @@ -4286,7 +4288,7 @@ static void timer_resume_idle (void) { - if (! EMACS_TIME_NEG_P (timer_idleness_start_time)) + if (EMACS_TIME_VALID_P (timer_idleness_start_time)) return; timer_idleness_start_time = timer_last_idleness_start_time; @@ -4300,6 +4302,24 @@ ...). Each element has the form (FUN . ARGS). */ Lisp_Object pending_funcalls; +/* If TIMER is a valid timer, return nonzero and place its value into + *RESULT. Otherwise return zero. */ +static int +decode_timer (Lisp_Object timer, EMACS_TIME *result) +{ + Lisp_Object *vector; + + if (! (VECTORP (timer) && ASIZE (timer) == 9)) + return 0; + vector = XVECTOR (timer)->contents; + if (! NILP (vector[0])) + return 0; + + return decode_time_components (vector[1], vector[2], vector[3], vector[4], + result, 0); +} + + /* Check whether a timer has fired. To prevent larger problems we simply disregard elements that are not proper timers. Do not make a circular timer list for the time being. @@ -4317,17 +4337,16 @@ { EMACS_TIME nexttime; EMACS_TIME now; - EMACS_TIME idleness_now IF_LINT (= {0}); + EMACS_TIME idleness_now; Lisp_Object timers, idle_timers, chosen_timer; struct gcpro gcpro1, gcpro2, gcpro3; - EMACS_SET_SECS (nexttime, -1); - EMACS_SET_USECS (nexttime, -1); + EMACS_SET_INVALID_TIME (nexttime); /* Always consider the ordinary timers. */ timers = Vtimer_list; /* Consider the idle timers only if Emacs is idle. */ - if (! EMACS_TIME_NEG_P (timer_idleness_start_time)) + if (EMACS_TIME_VALID_P (timer_idleness_start_time)) idle_timers = Vtimer_idle_list; else idle_timers = Qnil; @@ -4345,8 +4364,10 @@ if (CONSP (timers) || CONSP (idle_timers)) { EMACS_GET_TIME (now); - if (! EMACS_TIME_NEG_P (timer_idleness_start_time)) + if (EMACS_TIME_VALID_P (timer_idleness_start_time)) EMACS_SUB_TIME (idleness_now, now, timer_idleness_start_time); + else + EMACS_SET_SECS_NSECS (idleness_now, 0, 0); } while (CONSP (timers) || CONSP (idle_timers)) @@ -4355,113 +4376,84 @@ Lisp_Object timer = Qnil, idle_timer = Qnil; EMACS_TIME timer_time, idle_timer_time; EMACS_TIME difference; - EMACS_TIME timer_difference IF_LINT (= {0}); - EMACS_TIME idle_timer_difference IF_LINT (= {0}); - - /* Skip past invalid timers and timers already handled. */ - if (CONSP (timers)) - { - timer = XCAR (timers); - if (!VECTORP (timer) || ASIZE (timer) != 8) - { - timers = XCDR (timers); - continue; - } - vector = XVECTOR (timer)->contents; - - if (!INTEGERP (vector[1]) || !INTEGERP (vector[2]) - || !INTEGERP (vector[3]) - || ! NILP (vector[0])) - { - timers = XCDR (timers); - continue; - } - } - if (CONSP (idle_timers)) - { - timer = XCAR (idle_timers); - if (!VECTORP (timer) || ASIZE (timer) != 8) - { - idle_timers = XCDR (idle_timers); - continue; - } - vector = XVECTOR (timer)->contents; - - if (!INTEGERP (vector[1]) || !INTEGERP (vector[2]) - || !INTEGERP (vector[3]) - || ! NILP (vector[0])) - { - idle_timers = XCDR (idle_timers); - continue; - } - } - - /* Set TIMER, TIMER_TIME and TIMER_DIFFERENCE + EMACS_TIME timer_difference, idle_timer_difference; + int ripe, timer_ripe = 0, idle_timer_ripe = 0; + + EMACS_SET_INVALID_TIME (timer_difference); + EMACS_SET_INVALID_TIME (idle_timer_difference); + + /* Set TIMER and TIMER_DIFFERENCE based on the next ordinary timer. TIMER_DIFFERENCE is the distance in time from NOW to when - this timer becomes ripe (negative if it's already ripe). */ + this timer becomes ripe (negative if it's already ripe). + Skip past invalid timers and timers already handled. */ if (CONSP (timers)) { timer = XCAR (timers); - vector = XVECTOR (timer)->contents; - EMACS_SET_SECS (timer_time, - (XINT (vector[1]) << 16) | (XINT (vector[2]))); - EMACS_SET_USECS (timer_time, XINT (vector[3])); - EMACS_SUB_TIME (timer_difference, timer_time, now); + if (! decode_timer (timer, &timer_time)) + { + timers = XCDR (timers); + continue; + } + + timer_ripe = EMACS_TIME_LE (timer_time, now); + if (timer_ripe) + EMACS_SUB_TIME (timer_difference, now, timer_time); + else + EMACS_SUB_TIME (timer_difference, timer_time, now); } - /* Set IDLE_TIMER, IDLE_TIMER_TIME and IDLE_TIMER_DIFFERENCE + /* Likewise for IDLE_TIMER and IDLE_TIMER_DIFFERENCE based on the next idle timer. */ if (CONSP (idle_timers)) { idle_timer = XCAR (idle_timers); - vector = XVECTOR (idle_timer)->contents; - EMACS_SET_SECS (idle_timer_time, - (XINT (vector[1]) << 16) | (XINT (vector[2]))); - EMACS_SET_USECS (idle_timer_time, XINT (vector[3])); - EMACS_SUB_TIME (idle_timer_difference, idle_timer_time, idleness_now); + if (! decode_timer (idle_timer, &idle_timer_time)) + { + idle_timers = XCDR (idle_timers); + continue; + } + + idle_timer_ripe = EMACS_TIME_LE (idle_timer_time, idleness_now); + if (idle_timer_ripe) + EMACS_SUB_TIME (idle_timer_difference, + idleness_now, idle_timer_time); + else + EMACS_SUB_TIME (idle_timer_difference, + idle_timer_time, idleness_now); } /* Decide which timer is the next timer, - and set CHOSEN_TIMER, VECTOR and DIFFERENCE accordingly. + and set CHOSEN_TIMER, DIFFERENCE, and RIPE accordingly. Also step down the list where we found that timer. */ - if (CONSP (timers) && CONSP (idle_timers)) - { - EMACS_TIME temp; - EMACS_SUB_TIME (temp, timer_difference, idle_timer_difference); - if (EMACS_TIME_NEG_P (temp)) - { - chosen_timer = timer; - timers = XCDR (timers); - difference = timer_difference; - } - else - { - chosen_timer = idle_timer; - idle_timers = XCDR (idle_timers); - difference = idle_timer_difference; - } - } - else if (CONSP (timers)) + if (EMACS_TIME_VALID_P (timer_difference) + && (! EMACS_TIME_VALID_P (idle_timer_difference) + || idle_timer_ripe < timer_ripe + || (idle_timer_ripe == timer_ripe + && (timer_ripe + ? EMACS_TIME_LT (idle_timer_difference, + timer_difference) + : EMACS_TIME_LT (timer_difference, + idle_timer_difference))))) { chosen_timer = timer; timers = XCDR (timers); difference = timer_difference; + ripe = timer_ripe; } else { chosen_timer = idle_timer; idle_timers = XCDR (idle_timers); difference = idle_timer_difference; + ripe = idle_timer_ripe; } - vector = XVECTOR (chosen_timer)->contents; /* If timer is ripe, run it if it hasn't been run. */ - if (EMACS_TIME_NEG_P (difference) - || (EMACS_SECS (difference) == 0 - && EMACS_USECS (difference) == 0)) + if (ripe) { + vector = XVECTOR (chosen_timer)->contents; if (NILP (vector[0])) { ptrdiff_t count = SPECPDL_INDEX (); @@ -4508,7 +4500,7 @@ timer list for the time being. Returns the time to wait until the next timer fires. - If no timer is active, return -1. + If no timer is active, return an invalid value. As long as any timer is ripe, we run it. */ @@ -4521,33 +4513,29 @@ { nexttime = timer_check_2 (); } - while (EMACS_SECS (nexttime) == 0 && EMACS_USECS (nexttime) == 0); + while (EMACS_SECS (nexttime) == 0 && EMACS_NSECS (nexttime) == 0); return nexttime; } DEFUN ("current-idle-time", Fcurrent_idle_time, Scurrent_idle_time, 0, 0, 0, doc: /* Return the current length of Emacs idleness, or nil. -The value when Emacs is idle is a list of three integers. The first has -the most significant 16 bits of the seconds, while the second has the least -significant 16 bits. The third integer gives the microsecond count. +The value when Emacs is idle is a list of four integers (HIGH LOW USEC PSEC) +in the same style as (current-time). The value when Emacs is not idle is nil. -The microsecond count is zero on systems that do not provide -resolution finer than a second. */) +NSEC is a multiple of the system clock resolution. */) (void) { - if (! EMACS_TIME_NEG_P (timer_idleness_start_time)) + if (EMACS_TIME_VALID_P (timer_idleness_start_time)) { EMACS_TIME now, idleness_now; EMACS_GET_TIME (now); EMACS_SUB_TIME (idleness_now, now, timer_idleness_start_time); - return list3 (make_number ((EMACS_SECS (idleness_now) >> 16) & 0xffff), - make_number ((EMACS_SECS (idleness_now) >> 0) & 0xffff), - make_number (EMACS_USECS (idleness_now))); + return make_lisp_time (idleness_now); } return Qnil; @@ -10735,7 +10723,7 @@ } void -set_waiting_for_input (struct timeval *time_to_clear) +set_waiting_for_input (EMACS_TIME *time_to_clear) { input_available_clear_time = time_to_clear; @@ -11358,7 +11346,7 @@ quit_char = Ctl ('g'); Vunread_command_events = Qnil; unread_command_char = -1; - EMACS_SET_SECS_USECS (timer_idleness_start_time, -1, -1); + EMACS_SET_INVALID_TIME (timer_idleness_start_time); total_keys = 0; recent_keys_index = 0; kbd_fetch_ptr = kbd_buffer; === modified file 'src/lisp.h' --- src/lisp.h 2012-06-17 08:21:25 +0000 +++ src/lisp.h 2012-06-22 21:17:42 +0000 @@ -2954,6 +2954,7 @@ EXFUN (Fwiden, 0); EXFUN (Fuser_login_name, 1); EXFUN (Fsystem_name, 0); +extern void time_overflow (void) NO_RETURN; EXFUN (Fcurrent_time, 0); EXFUN (Fget_internal_run_time, 0); extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int); @@ -3244,7 +3245,7 @@ EXFUN (Fwaiting_for_user_input_p, 0); extern Lisp_Object Qprocessp; extern void kill_buffer_processes (Lisp_Object); -extern int wait_reading_process_output (int, int, int, int, +extern int wait_reading_process_output (intmax_t, int, int, int, Lisp_Object, struct Lisp_Process *, int); === modified file 'src/lread.c' --- src/lread.c 2012-06-19 16:56:28 +0000 +++ src/lread.c 2012-06-22 21:17:42 +0000 @@ -601,17 +601,9 @@ /* Compute timeout. */ if (NUMBERP (seconds)) { - EMACS_TIME wait_time; - int sec, usec; double duration = extract_float (seconds); - - if (0 < duration) - duration_to_sec_usec (duration, &sec, &usec); - else - sec = usec = 0; - + EMACS_TIME wait_time = EMACS_TIME_FROM_DOUBLE (duration); EMACS_GET_TIME (end_time); - EMACS_SET_SECS_USECS (wait_time, sec, usec); EMACS_ADD_TIME (end_time, end_time, wait_time); } === modified file 'src/msdos.c' --- src/msdos.c 2012-06-19 16:56:28 +0000 +++ src/msdos.c 2012-06-22 21:17:42 +0000 @@ -4070,13 +4070,6 @@ #ifndef HAVE_SELECT #include "sysselect.h" -#ifndef EMACS_TIME_ZERO_OR_NEG_P -#define EMACS_TIME_ZERO_OR_NEG_P(time) \ - ((long)(time).tv_sec < 0 \ - || ((time).tv_sec == 0 \ - && (long)(time).tv_usec <= 0)) -#endif - /* This yields the rest of the current time slice to the task manager. It should be called by any code which knows that it has nothing useful to do except idle. @@ -4145,12 +4138,12 @@ /* When seconds wrap around, we assume that no more than 1 minute passed since last `gettime'. */ - if (EMACS_TIME_NEG_P (cldiff)) + if (EMACS_TIME_SIGN (cldiff) < 0) EMACS_SET_SECS (cldiff, EMACS_SECS (cldiff) + 60); EMACS_SUB_TIME (*timeout, *timeout, cldiff); /* Stop when timeout value crosses zero. */ - if (EMACS_TIME_ZERO_OR_NEG_P (*timeout)) + if (EMACS_TIME_SIGN (*timeout) <= 0) return 0; cllast = clnow; dos_yield_time_slice (); === modified file 'src/nsterm.h' --- src/nsterm.h 2012-01-19 07:21:25 +0000 +++ src/nsterm.h 2012-06-22 21:17:42 +0000 @@ -824,7 +824,8 @@ /* This in nsterm.m */ extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout); + fd_set *exceptfds, EMACS_TIME *timeout, + sigset_t *sigmask); extern unsigned long ns_get_rgb_color (struct frame *f, float r, float g, float b, float a); extern NSPoint last_mouse_motion_position; === modified file 'src/nsterm.m' --- src/nsterm.m 2012-06-17 05:13:40 +0000 +++ src/nsterm.m 2012-06-22 21:17:42 +0000 @@ -183,7 +183,6 @@ static NSTimer *fd_entry = nil; static NSTimer *scroll_repeat_entry = nil; static fd_set select_readfds, t_readfds; -static struct timeval select_timeout; static int select_nfds; static NSAutoreleasePool *outerpool; static struct input_event *emacs_event = NULL; @@ -381,67 +380,30 @@ } } - -static int -timeval_subtract (struct timeval *result, struct timeval x, struct timeval y) -/* -------------------------------------------------------------------------- - Subtract the `struct timeval' values X and Y, storing the result in RESULT. - Return 1 if the difference is negative, otherwise 0. - -------------------------------------------------------------------------- */ -{ - /* Perform the carry for the later subtraction by updating y. - This is safer because on some systems - the tv_sec member is unsigned. */ - if (x.tv_usec < y.tv_usec) - { - int nsec = (y.tv_usec - x.tv_usec) / 1000000 + 1; - y.tv_usec -= 1000000 * nsec; - y.tv_sec += nsec; - } - if (x.tv_usec - y.tv_usec > 1000000) - { - int nsec = (y.tv_usec - x.tv_usec) / 1000000; - y.tv_usec += 1000000 * nsec; - y.tv_sec -= nsec; - } - - /* Compute the time remaining to wait. tv_usec is certainly positive. */ - result->tv_sec = x.tv_sec - y.tv_sec; - result->tv_usec = x.tv_usec - y.tv_usec; - - /* Return indication of whether the result should be considered negative. */ - return x.tv_sec < y.tv_sec; -} - static void ns_timeout (int usecs) /* -------------------------------------------------------------------------- Blocking timer utility used by ns_ring_bell -------------------------------------------------------------------------- */ { - struct timeval wakeup; + EMACS_TIME wakeup, delay; EMACS_GET_TIME (wakeup); - - /* Compute time to wait until, propagating carry from usecs. */ - wakeup.tv_usec += usecs; - wakeup.tv_sec += (wakeup.tv_usec / 1000000); - wakeup.tv_usec %= 1000000; + EMACS_SET_SECS_USECS (delay, 0, usecs); + EMACS_ADD_TIME (wakeup, wakeup, delay); /* Keep waiting until past the time wakeup. */ while (1) { - struct timeval timeout; + EMACS_TIME timeout; EMACS_GET_TIME (timeout); - - /* In effect, timeout = wakeup - timeout. - Break if result would be negative. */ - if (timeval_subtract (&timeout, wakeup, timeout)) + if (EMACS_TIME_LE (wakeup, timeout)) break; + EMACS_SUB_TIME (timeout, wakeup, timeout); /* Try to wait that long--but we might wake up sooner. */ - select (0, NULL, NULL, NULL, &timeout); + pselect (0, NULL, NULL, NULL, &timeout, NULL); } } @@ -3537,7 +3499,7 @@ int ns_select (int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout) + fd_set *exceptfds, EMACS_TIME *timeout, sigset_t *sigmask) /* -------------------------------------------------------------------------- Replacement for select, checking for events -------------------------------------------------------------------------- */ @@ -3545,12 +3507,14 @@ int result; double time; NSEvent *ev; + struct timespec select_timeout; + /* NSTRACE (ns_select); */ if (NSApp == nil || inNsSelect == 1 /* || ([NSApp isActive] == NO && [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:NO] == nil) */) - return select (nfds, readfds, writefds, exceptfds, timeout); + return pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask); /* Save file descriptor set, which gets overwritten in calls to select () Note, this is called from process.c, and only readfds is ever set */ @@ -3563,8 +3527,9 @@ select_nfds = 0; /* Try an initial select for pending data on input files */ - select_timeout.tv_sec = select_timeout.tv_usec = 0; - result = select (nfds, readfds, writefds, exceptfds, &select_timeout); + select_timeout.tv_sec = select_timeout.tv_nsec = 0; + result = pselect (nfds, readfds, writefds, exceptfds, + &select_timeout, sigmask); if (result) return result; @@ -3573,7 +3538,7 @@ /* set a timeout and run the main AppKit event loop while continuing to monitor the files */ - time = ((double) timeout->tv_sec) + ((double) timeout->tv_usec)/1000000.0; + time = EMACS_TIME_TO_DOUBLE (*timeout); timed_entry = [[NSTimer scheduledTimerWithTimeInterval: time target: NSApp selector: @selector (timeout_handler:) @@ -3581,7 +3546,7 @@ repeats: YES] /* for safe removal */ retain]; - /* set a periodic task to try the select () again */ + /* set a periodic task to try the pselect () again */ fd_entry = [[NSTimer scheduledTimerWithTimeInterval: 0.1 target: NSApp selector: @selector (fd_handler:) @@ -3623,7 +3588,7 @@ } else { - /* Received back from select () in fd_handler; copy the results */ + /* Received back from pselect () in fd_handler; copy the results */ if (readfds) memcpy (readfds, &select_readfds, sizeof (fd_set)); return t; @@ -4603,6 +4568,7 @@ -------------------------------------------------------------------------- */ { int result; + struct timespec select_timeout; /* NSTRACE (fd_handler); */ if (select_nfds == 0) @@ -4610,9 +4576,8 @@ memcpy (&t_readfds, &select_readfds, sizeof (fd_set)); - select_timeout.tv_sec = select_timeout.tv_usec = 0; - result = select (select_nfds, &t_readfds, (SELECT_TYPE *)0, (SELECT_TYPE *)0, - &select_timeout); + select_timeout.tv_sec = select_timeout.tv_nsec = 0; + result = pselect (select_nfds, &t_readfds, NULL, NULL, &select_timeout, NULL); if (result) { memcpy (&select_readfds, &t_readfds, sizeof (fd_set)); === modified file 'src/process.c' --- src/process.c 2012-06-18 06:58:00 +0000 +++ src/process.c 2012-06-22 21:17:42 +0000 @@ -228,13 +228,11 @@ #endif #if !defined (ADAPTIVE_READ_BUFFERING) && !defined (NO_ADAPTIVE_READ_BUFFERING) -#ifdef EMACS_HAS_USECS #define ADAPTIVE_READ_BUFFERING #endif -#endif #ifdef ADAPTIVE_READ_BUFFERING -#define READ_OUTPUT_DELAY_INCREMENT 10000 +#define READ_OUTPUT_DELAY_INCREMENT (EMACS_TIME_RESOLUTION / 100) #define READ_OUTPUT_DELAY_MAX (READ_OUTPUT_DELAY_INCREMENT * 5) #define READ_OUTPUT_DELAY_MAX_MAX (READ_OUTPUT_DELAY_INCREMENT * 7) @@ -3291,7 +3289,7 @@ { /* Unlike most other syscalls connect() cannot be called again. (That would return EALREADY.) The proper way to - wait for completion is select(). */ + wait for completion is pselect(). */ int sc; socklen_t len; SELECT_TYPE fdset; @@ -3299,8 +3297,7 @@ FD_ZERO (&fdset); FD_SET (s, &fdset); QUIT; - sc = select (s + 1, (SELECT_TYPE *)0, &fdset, (SELECT_TYPE *)0, - (EMACS_TIME *)0); + sc = pselect (s + 1, NULL, &fdset, NULL, NULL, NULL); if (sc == -1) { if (errno == EINTR) @@ -3961,7 +3958,8 @@ Return non-nil if we received any output before the timeout expired. */) (register Lisp_Object process, Lisp_Object seconds, Lisp_Object millisec, Lisp_Object just_this_one) { - int secs = -1, usecs = 0; + intmax_t secs; + int nsecs; if (! NILP (process)) CHECK_PROCESS (process); @@ -3980,17 +3978,36 @@ } } + secs = 0; + nsecs = -1; + if (!NILP (seconds)) { - double duration = extract_float (seconds); - if (0 < duration) - duration_to_sec_usec (duration, &secs, &usecs); + if (INTEGERP (seconds)) + { + if (0 < XINT (seconds)) + { + secs = XINT (seconds); + nsecs = 0; + } + } + else if (FLOATP (seconds)) + { + if (0 < XFLOAT_DATA (seconds)) + { + EMACS_TIME t = EMACS_TIME_FROM_DOUBLE (XFLOAT_DATA (seconds)); + secs = min (EMACS_SECS (t), INTMAX_MAX); + nsecs = EMACS_NSECS (t); + } + } + else + wrong_type_argument (Qnumberp, seconds); } - else if (!NILP (process)) - secs = 0; + else if (! NILP (process)) + nsecs = 0; return - (wait_reading_process_output (secs, usecs, 0, 0, + (wait_reading_process_output (secs, nsecs, 0, 0, Qnil, !NILP (process) ? XPROCESS (process) : NULL, NILP (just_this_one) ? 0 : @@ -4231,34 +4248,19 @@ { } -/* Use a wrapper around select to work around a bug in gdb 5.3. - Normally, the wrapper is optimized away by inlining. - - If emacs is stopped inside select, the gdb backtrace doesn't - show the function which called select, so it is practically - impossible to step through wait_reading_process_output. */ - -#ifndef select -static inline int -select_wrapper (int n, fd_set *rfd, fd_set *wfd, fd_set *xfd, struct timeval *tmo) -{ - return select (n, rfd, wfd, xfd, tmo); -} -#define select select_wrapper -#endif - /* Read and dispose of subprocess output while waiting for timeout to elapse and/or keyboard input to be available. TIME_LIMIT is: - timeout in seconds, or - zero for no limit, or - -1 means gobble data immediately available but don't wait for any. + timeout in seconds + If negative, gobble data immediately available but don't wait for any. - MICROSECS is: - an additional duration to wait, measured in microseconds. - If this is nonzero and time_limit is 0, then the timeout - consists of MICROSECS only. + NSECS is: + an additional duration to wait, measured in nanoseconds + If TIME_LIMIT is zero, then: + If NSECS == 0, there is no limit. + If NSECS > 0, the timeout consists of NSEC only. + If NSECS < 0, gobble data immediately, as if TIME_LIMIT were negative. READ_KBD is a lisp value: 0 to ignore keyboard input, or @@ -4285,7 +4287,7 @@ Otherwise, return true if we received input from any process. */ int -wait_reading_process_output (int time_limit, int microsecs, int read_kbd, +wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, int do_display, Lisp_Object wait_for_cell, struct Lisp_Process *wait_proc, int just_wait_proc) @@ -4305,7 +4307,7 @@ FD_ZERO (&Available); FD_ZERO (&Writeok); - if (time_limit == 0 && microsecs == 0 && wait_proc && !NILP (Vinhibit_quit) + if (time_limit == 0 && nsecs == 0 && wait_proc && !NILP (Vinhibit_quit) && !(CONSP (wait_proc->status) && EQ (XCAR (wait_proc->status), Qexit))) message ("Blocking call to accept-process-output with quit inhibited!!"); @@ -4317,12 +4319,20 @@ make_number (waiting_for_user_input_p)); waiting_for_user_input_p = read_kbd; + if (time_limit < 0) + { + time_limit = 0; + nsecs = -1; + } + else if (TYPE_MAXIMUM (time_t) < time_limit) + time_limit = TYPE_MAXIMUM (time_t); + /* Since we may need to wait several times, compute the absolute time to return at. */ - if (time_limit || microsecs) + if (time_limit || nsecs) /* FIXME neither should be negative, no? */ { EMACS_GET_TIME (end_time); - EMACS_SET_SECS_USECS (timeout, time_limit, microsecs); + EMACS_SET_SECS_NSECS (timeout, time_limit, nsecs); EMACS_ADD_TIME (end_time, end_time, timeout); } @@ -4346,7 +4356,7 @@ /* Compute time from now till when time limit is up */ /* Exit if already run out */ - if (time_limit == -1) + if (nsecs < 0) { /* -1 specified for timeout means gobble output available now @@ -4354,12 +4364,12 @@ EMACS_SET_SECS_USECS (timeout, 0, 0); } - else if (time_limit || microsecs) + else if (time_limit || nsecs) { EMACS_GET_TIME (timeout); + if (EMACS_TIME_LE (end_time, timeout)) + break; EMACS_SUB_TIME (timeout, end_time, timeout); - if (EMACS_TIME_NEG_P (timeout)) - break; } else { @@ -4405,21 +4415,22 @@ && requeued_events_pending_p ()) break; - if (! EMACS_TIME_NEG_P (timer_delay) && time_limit != -1) - { - EMACS_TIME difference; - EMACS_SUB_TIME (difference, timer_delay, timeout); - if (EMACS_TIME_NEG_P (difference)) - { - timeout = timer_delay; - timeout_reduced_for_timers = 1; - } - } - /* If time_limit is -1, we are not going to wait at all. */ - else if (time_limit != -1) - { - /* This is so a breakpoint can be put here. */ - wait_reading_process_output_1 (); + /* If time_limit is negative, we are not going to wait at all. */ + if (0 <= nsecs) + { + if (EMACS_TIME_VALID_P (timer_delay)) + { + if (EMACS_TIME_LT (timer_delay, timeout)) + { + timeout = timer_delay; + timeout_reduced_for_timers = 1; + } + } + else + { + /* This is so a breakpoint can be put here. */ + wait_reading_process_output_1 (); + } } } @@ -4448,14 +4459,14 @@ Ctemp = write_mask; EMACS_SET_SECS_USECS (timeout, 0, 0); - if ((select (max (max_process_desc, max_input_desc) + 1, - &Atemp, + if ((pselect (max (max_process_desc, max_input_desc) + 1, + &Atemp, #ifdef NON_BLOCKING_CONNECT - (num_pending_connects > 0 ? &Ctemp : (SELECT_TYPE *)0), + (num_pending_connects > 0 ? &Ctemp : NULL), #else - (SELECT_TYPE *)0, + NULL, #endif - (SELECT_TYPE *)0, &timeout) + NULL, &timeout, NULL) <= 0)) { /* It's okay for us to do this and then continue with @@ -4578,9 +4589,9 @@ Vprocess_adaptive_read_buffering is nil. */ if (process_output_skip && check_delay > 0) { - int usecs = EMACS_USECS (timeout); - if (EMACS_SECS (timeout) > 0 || usecs > READ_OUTPUT_DELAY_MAX) - usecs = READ_OUTPUT_DELAY_MAX; + int nsecs = EMACS_NSECS (timeout); + if (EMACS_SECS (timeout) > 0 || nsecs > READ_OUTPUT_DELAY_MAX) + nsecs = READ_OUTPUT_DELAY_MAX; for (channel = 0; check_delay > 0 && channel <= max_process_desc; channel++) { proc = chan_process[channel]; @@ -4595,11 +4606,11 @@ continue; FD_CLR (channel, &Available); XPROCESS (proc)->read_output_skip = 0; - if (XPROCESS (proc)->read_output_delay < usecs) - usecs = XPROCESS (proc)->read_output_delay; + if (XPROCESS (proc)->read_output_delay < nsecs) + nsecs = XPROCESS (proc)->read_output_delay; } } - EMACS_SET_SECS_USECS (timeout, 0, usecs); + EMACS_SET_SECS_NSECS (timeout, 0, nsecs); process_output_skip = 0; } #endif @@ -4608,12 +4619,12 @@ #elif defined (HAVE_NS) nfds = ns_select #else - nfds = select + nfds = pselect #endif (max (max_process_desc, max_input_desc) + 1, &Available, (check_write ? &Writeok : (SELECT_TYPE *)0), - (SELECT_TYPE *)0, &timeout); + NULL, &timeout, NULL); #ifdef HAVE_GNUTLS /* GnuTLS buffers data internally. In lowat mode it leaves @@ -4671,7 +4682,7 @@ /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); - if (time_limit && nfds == 0 && ! timeout_reduced_for_timers) + if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) /* We wanted the full specified time, so return now. */ break; if (nfds < 0) @@ -4823,7 +4834,7 @@ if (wait_channel == channel) { wait_channel = -1; - time_limit = -1; + nsecs = -1; got_some_input = 1; } proc = chan_process[channel]; @@ -5680,11 +5691,8 @@ /* Put what we should have written in wait_queue. */ write_queue_push (p, cur_object, cur_buf, cur_len, 1); -#ifdef EMACS_HAS_USECS - wait_reading_process_output (0, 20000, 0, 0, Qnil, NULL, 0); -#else - wait_reading_process_output (1, 0, 0, 0, Qnil, NULL, 0); -#endif + wait_reading_process_output (0, 20 * 1000 * 1000, + 0, 0, Qnil, NULL, 0); /* Reread queue, to see what is left. */ break; } @@ -6825,9 +6833,15 @@ Wait for timeout to elapse and/or keyboard input to be available. time_limit is: - timeout in seconds, or - zero for no limit, or - -1 means gobble data immediately available but don't wait for any. + timeout in seconds + If negative, gobble data immediately available but don't wait for any. + + nsec is: + an additional duration to wait, measured in nanoseconds + If TIME_LIMIT is zero, then: + If NSEC == 0, there is no limit. + If NSEC > 0, the timeout consists of NSEC only. + If NSECS < 0, gobble data immediately, as if TIME_LIMIT were negative. read_kbd is a Lisp_Object: 0 to ignore keyboard input, or @@ -6844,7 +6858,7 @@ Return true if we received input from any process. */ int -wait_reading_process_output (int time_limit, int microsecs, int read_kbd, +wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, int do_display, Lisp_Object wait_for_cell, struct Lisp_Process *wait_proc, int just_wait_proc) @@ -6854,11 +6868,19 @@ SELECT_TYPE waitchannels; int xerrno; + if (time_limit < 0) + { + time_limit = 0; + nsecs = -1; + } + else if (TYPE_MAXIMUM (time_t) < time_limit) + time_limit = TYPE_MAXIMUM (time_t); + /* What does time_limit really mean? */ - if (time_limit || microsecs) + if (time_limit || nsecs) /* FIXME: what if negative? */ { EMACS_GET_TIME (end_time); - EMACS_SET_SECS_USECS (timeout, time_limit, microsecs); + EMACS_SET_SECS_NSECS (timeout, time_limit, nsecs); EMACS_ADD_TIME (end_time, end_time, timeout); } @@ -6884,7 +6906,7 @@ /* Compute time from now till when time limit is up */ /* Exit if already run out */ - if (time_limit == -1) + if (nsecs < 0) { /* -1 specified for timeout means gobble output available now @@ -6892,12 +6914,12 @@ EMACS_SET_SECS_USECS (timeout, 0, 0); } - else if (time_limit || microsecs) + else if (time_limit || nsecs) { EMACS_GET_TIME (timeout); + if (EMACS_TIME_LE (end_time, timeout)) + break; EMACS_SUB_TIME (timeout, end_time, timeout); - if (EMACS_TIME_NEG_P (timeout)) - break; } else { @@ -6930,11 +6952,9 @@ && requeued_events_pending_p ()) break; - if (! EMACS_TIME_NEG_P (timer_delay) && time_limit != -1) + if (EMACS_TIME_VALID_P (timer_delay) && 0 <= nsecs) { - EMACS_TIME difference; - EMACS_SUB_TIME (difference, timer_delay, timeout); - if (EMACS_TIME_NEG_P (difference)) + if (EMACS_TIME_LT (timer_delay, timeout)) { timeout = timer_delay; timeout_reduced_for_timers = 1; @@ -6970,8 +6990,7 @@ FD_ZERO (&waitchannels); } else - nfds = select (1, &waitchannels, (SELECT_TYPE *)0, (SELECT_TYPE *)0, - &timeout); + nfds = pselect (1, &waitchannels, NULL, NULL, &timeout, NULL); xerrno = errno; @@ -6981,7 +7000,7 @@ /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); - if (time_limit && nfds == 0 && ! timeout_reduced_for_timers) + if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) /* We waited the full specified time, so return now. */ break; @@ -7284,19 +7303,20 @@ majflt -- number of major page faults (number) cminflt -- cumulative number of minor page faults (number) cmajflt -- cumulative number of major page faults (number) - utime -- user time used by the process, in the (HIGH LOW USEC) format - stime -- system time used by the process, in the (HIGH LOW USEC) format - time -- sum of utime and stime, in the (HIGH LOW USEC) format - cutime -- user time used by the process and its children, (HIGH LOW USEC) - cstime -- system time used by the process and its children, (HIGH LOW USEC) - ctime -- sum of cutime and cstime, in the (HIGH LOW USEC) format + utime -- user time used by the process, in (current-time) format, + which is a list of integers (HIGH LOW USEC PSEC) + stime -- system time used by the process (current-time) + time -- sum of utime and stime (current-time) + cutime -- user time used by the process and its children (current-time) + cstime -- system time used by the process and its children (current-time) + ctime -- sum of cutime and cstime (current-time) pri -- priority of the process (number) nice -- nice value of the process (number) thcount -- process thread count (number) - start -- time the process started, in the (HIGH LOW USEC) format + start -- time the process started (current-time) vsize -- virtual memory size of the process in KB's (number) rss -- resident set size of the process in KB's (number) - etime -- elapsed time the process is running, in (HIGH LOW USEC) format + etime -- elapsed time the process is running, in (HIGH LOW USEC PSEC) format pcpu -- percents of CPU time used by the process (floating-point number) pmem -- percents of total physical memory used by process's resident set (floating-point number) === modified file 'src/process.h' --- src/process.h 2012-06-17 09:00:37 +0000 +++ src/process.h 2012-06-22 21:17:42 +0000 @@ -106,8 +106,8 @@ On some systems, e.g. GNU/Linux, Emacs is seen as an interactive app also when reading process output, meaning that process output can be read in as little as 1 byte at a - time. Value is micro-seconds to delay reading output from - this process. Range is 0 .. 50000. */ + time. Value is nanoseconds to delay reading output from + this process. Range is 0 .. 50 * 1000 * 1000. */ int read_output_delay; /* Should we delay reading output from this process. Initialized from `Vprocess_adaptive_read_buffering'. === modified file 'src/sysdep.c' --- src/sysdep.c 2012-06-02 21:01:07 +0000 +++ src/sysdep.c 2012-06-22 21:17:42 +0000 @@ -32,6 +32,7 @@ #include #include #include +#include #include "lisp.h" #include "sysselect.h" @@ -109,20 +110,6 @@ #include "syssignal.h" #include "systime.h" -#ifdef HAVE_UTIME_H -#include -#endif - -#ifndef HAVE_UTIMES -#ifndef HAVE_STRUCT_UTIMBUF -/* We want to use utime rather than utimes, but we couldn't find the - structure declaration. We'll use the traditional one. */ -struct utimbuf { - long actime; - long modtime; -}; -#endif -#endif static int emacs_get_tty (int, struct emacs_tty *); static int emacs_set_tty (int, struct emacs_tty *, int); @@ -2067,30 +2054,6 @@ #endif /* HPUX and not HAVE_PERROR */ /* - * Gettimeofday. Simulate as much as possible. Only accurate - * to nearest second. Emacs doesn't use tzp so ignore it for now. - * Only needed when subprocesses are defined. - */ - -#ifndef HAVE_GETTIMEOFDAY -#ifdef HAVE_TIMEVAL - -int -gettimeofday (struct timeval *tp, struct timezone *tzp) -{ - extern long time (long); - - tp->tv_sec = time ((long *)0); - tp->tv_usec = 0; - if (tzp != 0) - tzp->tz_minuteswest = -1; - return 0; -} - -#endif -#endif /* !HAVE_GETTIMEOFDAY && HAVE_TIMEVAL */ - -/* * This function will go away as soon as all the stubs fixed. (fnf) */ @@ -2126,20 +2089,43 @@ #endif /* HAVE_DIRENT_H */ +/* Return a struct timeval that is roughly equivalent to T. + Use the least timeval not less than T. + Return an extremal value if the result would overflow. */ +struct timeval +make_timeval (EMACS_TIME t) +{ + struct timeval tv; + tv.tv_sec = t.tv_sec; + tv.tv_usec = t.tv_nsec / 1000; + + if (t.tv_nsec % 1000 != 0) + { + if (tv.tv_usec < 999999) + tv.tv_usec++; + else if (tv.tv_sec < TYPE_MAXIMUM (time_t)) + { + tv.tv_sec++; + tv.tv_usec = 0; + } + } + + return tv; +} + +/* Set the access and modification time stamps of FD (a.k.a. FILE) to be + ATIME and MTIME, respectively. + FD must be either negative -- in which case it is ignored -- + or a file descriptor that is open on FILE. + If FD is nonnegative, then FILE can be NULL. */ int -set_file_times (const char *filename, EMACS_TIME atime, EMACS_TIME mtime) +set_file_times (int fd, const char *filename, + EMACS_TIME atime, EMACS_TIME mtime) { -#ifdef HAVE_UTIMES - struct timeval tv[2]; - tv[0] = atime; - tv[1] = mtime; - return utimes (filename, tv); -#else /* not HAVE_UTIMES */ - struct utimbuf utb; - utb.actime = EMACS_SECS (atime); - utb.modtime = EMACS_SECS (mtime); - return utime (filename, &utb); -#endif /* not HAVE_UTIMES */ + struct timespec timespec[2]; + timespec[0] = atime; + timespec[1] = mtime; + return fdutimens (fd, filename, timespec); } /* mkdir and rmdir functions, for systems which don't have them. */ @@ -2595,60 +2581,82 @@ #endif /* !defined (WINDOWSNT) */ #ifdef GNU_LINUX -static void -time_from_jiffies (unsigned long long tval, long hz, - time_t *sec, unsigned *usec) +static EMACS_TIME +time_from_jiffies (unsigned long long tval, long hz) { - unsigned long long ullsec; + unsigned long long s = tval / hz; + unsigned long long frac = tval % hz; + int ns; + EMACS_TIME t; - *sec = tval / hz; - ullsec = *sec; - tval -= ullsec * hz; - /* Careful: if HZ > 1 million, then integer division by it yields zero. */ - if (hz <= 1000000) - *usec = tval * 1000000 / hz; + if (TYPE_MAXIMUM (time_t) < s) + time_overflow (); + if (LONG_MAX - 1 <= ULLONG_MAX / EMACS_TIME_RESOLUTION + || frac <= ULLONG_MAX / EMACS_TIME_RESOLUTION) + ns = frac * EMACS_TIME_RESOLUTION / hz; else - *usec = tval / (hz / 1000000); + { + /* This is reachable only in the unlikely case that HZ * HZ + exceeds ULLONG_MAX. It calculates an approximation that is + guaranteed to be in range. */ + long hz_per_ns = (hz / EMACS_TIME_RESOLUTION + + (hz % EMACS_TIME_RESOLUTION != 0)); + ns = frac / hz_per_ns; + } + + EMACS_SET_SECS_NSECS (t, s, ns); + return t; } static Lisp_Object ltime_from_jiffies (unsigned long long tval, long hz) { - time_t sec; - unsigned usec; - - time_from_jiffies (tval, hz, &sec, &usec); - - return list3 (make_number ((sec >> 16) & 0xffff), - make_number (sec & 0xffff), - make_number (usec)); + EMACS_TIME t = time_from_jiffies (tval, hz); + return make_lisp_time (t); } -static void -get_up_time (time_t *sec, unsigned *usec) +static EMACS_TIME +get_up_time (void) { FILE *fup; + EMACS_TIME up; - *sec = *usec = 0; + EMACS_SET_SECS_NSECS (up, 0, 0); BLOCK_INPUT; fup = fopen ("/proc/uptime", "r"); if (fup) { - double uptime, idletime; + unsigned long long upsec, upfrac, idlesec, idlefrac; + int upfrac_start, upfrac_end, idlefrac_start, idlefrac_end; - /* The numbers in /proc/uptime use C-locale decimal point, but - we already set ourselves to the C locale (see `fixup_locale' - in emacs.c). */ - if (2 <= fscanf (fup, "%lf %lf", &uptime, &idletime)) + if (fscanf (fup, "%llu.%n%llu%n %llu.%n%llu%n", + &upsec, &upfrac_start, &upfrac, &upfrac_end, + &idlesec, &idlefrac_start, &idlefrac, &idlefrac_end) + == 4) { - *sec = uptime; - *usec = (uptime - *sec) * 1000000; + if (TYPE_MAXIMUM (time_t) < upsec) + { + upsec = TYPE_MAXIMUM (time_t); + upfrac = EMACS_TIME_RESOLUTION - 1; + } + else + { + int upfraclen = upfrac_end - upfrac_start; + for (; upfraclen < LOG10_EMACS_TIME_RESOLUTION; upfraclen++) + upfrac *= 10; + for (; LOG10_EMACS_TIME_RESOLUTION < upfraclen; upfraclen--) + upfrac /= 10; + upfrac = min (upfrac, EMACS_TIME_RESOLUTION - 1); + } + EMACS_SET_SECS_NSECS (up, upsec, upfrac); } fclose (fup); } UNBLOCK_INPUT; + + return up; } #define MAJOR(d) (((unsigned)(d) >> 8) & 0xfff) @@ -2748,9 +2756,7 @@ unsigned long long u_time, s_time, cutime, cstime, start; long priority, niceness, rss; unsigned long minflt, majflt, cminflt, cmajflt, vsize; - time_t sec; - unsigned usec; - EMACS_TIME tnow, tstart, tboot, telapsed; + EMACS_TIME tnow, tstart, tboot, telapsed, us_time; double pcpu, pmem; Lisp_Object attrs = Qnil; Lisp_Object cmd_str, decoded_cmd, tem; @@ -2873,35 +2879,18 @@ attrs = Fcons (Fcons (Qnice, make_number (niceness)), attrs); attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (thcount_eint)), attrs); EMACS_GET_TIME (tnow); - get_up_time (&sec, &usec); - EMACS_SET_SECS (telapsed, sec); - EMACS_SET_USECS (telapsed, usec); + telapsed = get_up_time (); EMACS_SUB_TIME (tboot, tnow, telapsed); - time_from_jiffies (start, clocks_per_sec, &sec, &usec); - EMACS_SET_SECS (tstart, sec); - EMACS_SET_USECS (tstart, usec); + tstart = time_from_jiffies (start, clocks_per_sec); EMACS_ADD_TIME (tstart, tboot, tstart); - attrs = Fcons (Fcons (Qstart, - list3 (make_number - ((EMACS_SECS (tstart) >> 16) & 0xffff), - make_number - (EMACS_SECS (tstart) & 0xffff), - make_number - (EMACS_USECS (tstart)))), - attrs); + attrs = Fcons (Fcons (Qstart, make_lisp_time (tstart)), attrs); attrs = Fcons (Fcons (Qvsize, make_fixnum_or_float (vsize/1024)), attrs); attrs = Fcons (Fcons (Qrss, make_fixnum_or_float (4*rss)), attrs); EMACS_SUB_TIME (telapsed, tnow, tstart); - attrs = Fcons (Fcons (Qetime, - list3 (make_number - ((EMACS_SECS (telapsed) >> 16) & 0xffff), - make_number - (EMACS_SECS (telapsed) & 0xffff), - make_number - (EMACS_USECS (telapsed)))), - attrs); - time_from_jiffies (u_time + s_time, clocks_per_sec, &sec, &usec); - pcpu = (sec + usec / 1000000.0) / (EMACS_SECS (telapsed) + EMACS_USECS (telapsed) / 1000000.0); + attrs = Fcons (Fcons (Qetime, make_lisp_time (telapsed)), attrs); + us_time = time_from_jiffies (u_time + s_time, clocks_per_sec); + pcpu = (EMACS_TIME_TO_DOUBLE (us_time) + / EMACS_TIME_TO_DOUBLE (telapsed)); if (pcpu > 1.0) pcpu = 1.0; attrs = Fcons (Fcons (Qpcpu, make_float (100 * pcpu)), attrs); @@ -3082,27 +3071,13 @@ Qcstime Are they available? */ - attrs = Fcons (Fcons (Qtime, - list3 (make_number (pinfo.pr_time.tv_sec >> 16), - make_number (pinfo.pr_time.tv_sec & 0xffff), - make_number (pinfo.pr_time.tv_nsec))), - attrs); - - attrs = Fcons (Fcons (Qctime, - list3 (make_number (pinfo.pr_ctime.tv_sec >> 16), - make_number (pinfo.pr_ctime.tv_sec & 0xffff), - make_number (pinfo.pr_ctime.tv_nsec))), - attrs); - + attrs = Fcons (Fcons (Qtime, make_lisp_time (pinfo.pr_time)), attrs); + attrs = Fcons (Fcons (Qctime, make_lisp_time (pinfo.pr_ctime)), attrs); attrs = Fcons (Fcons (Qpri, make_number (pinfo.pr_lwp.pr_pri)), attrs); attrs = Fcons (Fcons (Qnice, make_number (pinfo.pr_lwp.pr_nice)), attrs); attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (pinfo.pr_nlwp)), attrs); - attrs = Fcons (Fcons (Qstart, - list3 (make_number (pinfo.pr_start.tv_sec >> 16), - make_number (pinfo.pr_start.tv_sec & 0xffff), - make_number (pinfo.pr_start.tv_nsec))), - attrs); + attrs = Fcons (Fcons (Qstart, make_lisp_time (pinfo.pr_start)), attrs); attrs = Fcons (Fcons (Qvsize, make_fixnum_or_float (pinfo.pr_size)), attrs); attrs = Fcons (Fcons (Qrss, make_fixnum_or_float (pinfo.pr_rssize)), attrs); === modified file 'src/sysselect.h' --- src/sysselect.h 2012-01-19 07:21:25 +0000 +++ src/sysselect.h 2012-06-22 21:17:42 +0000 @@ -16,7 +16,6 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ -#ifdef HAVE_SYS_SELECT_H #if defined (DARWIN_OS) #undef init_process #endif @@ -24,7 +23,6 @@ #if defined (DARWIN_OS) #define init_process emacs_init_process #endif -#endif /* The w32 build defines select stuff in w32.h, which is included where w32 needs it, but not where sysselect.h is included. The w32 @@ -52,4 +50,3 @@ #if !defined (HAVE_SELECT) #define select sys_select #endif - === modified file 'src/systime.h' --- src/systime.h 2012-01-19 07:21:25 +0000 +++ src/systime.h 2012-06-22 21:17:42 +0000 @@ -19,16 +19,7 @@ #ifndef EMACS_SYSTIME_H #define EMACS_SYSTIME_H -#ifdef TIME_WITH_SYS_TIME -#include -#include -#else -#ifdef HAVE_SYS_TIME_H -#include -#else -#include -#endif -#endif +#include #ifdef emacs # ifdef HAVE_X_WINDOWS @@ -48,91 +39,64 @@ #endif #endif -/* EMACS_TIME is the type to use to represent temporal intervals - - struct timeval on some systems, int on others. It can be passed as - the timeout argument to the select system call. - - EMACS_SECS (TIME) is an rvalue for the seconds component of TIME. +/* The type to use to represent temporal intervals. It can be passed + as the timeout argument to the pselect system call. */ +#define EMACS_TIME struct timespec + +/* Resolution of EMACS_TIME time stamps (in units per second), and log + base 10 of the resolution. The log must be a positive integer. */ +#define EMACS_TIME_RESOLUTION 1000000000 +#define LOG10_EMACS_TIME_RESOLUTION 9 + +/* EMACS_SECS (TIME) is an rvalue for the seconds component of TIME. + EMACS_SECS_ADDR (time) is the address of the seconds component. EMACS_SET_SECS (TIME, SECONDS) sets that to SECONDS. - EMACS_HAS_USECS is defined if EMACS_TIME has a usecs component. - EMACS_USECS (TIME) is an rvalue for the microseconds component of TIME. - This returns zero if EMACS_TIME doesn't have a microseconds component. - EMACS_SET_USECS (TIME, MICROSECONDS) sets that to MICROSECONDS. - This does nothing if EMACS_TIME doesn't have a microseconds component. - - EMACS_SET_SECS_USECS (TIME, SECS, USECS) sets both components of TIME. - - EMACS_GET_TIME (TIME) stores the current system time in TIME, which - should be an lvalue. - - EMACS_ADD_TIME (DEST, SRC1, SRC2) adds SRC1 to SRC2 and stores the - result in DEST. SRC should not be negative. - - EMACS_SUB_TIME (DEST, SRC1, SRC2) subtracts SRC2 from SRC1 and - stores the result in DEST. SRC should not be negative. - EMACS_TIME_NEG_P (TIME) is true if TIME is negative. - -*/ - -#ifdef HAVE_TIMEVAL - -#define EMACS_HAS_USECS - -#define EMACS_TIME struct timeval + EMACS_NSECS (TIME) is an rvalue for the nanoseconds component of TIME. + EMACS_SET_NSECS (TIME, NANOSECONDS) sets that to NANOSECONDS. + + EMACS_SET_SECS_NSECS (TIME, SECS, NSECS) sets both components of TIME. */ #define EMACS_SECS(time) ((time).tv_sec + 0) -#define EMACS_USECS(time) ((time).tv_usec + 0) +#define EMACS_NSECS(time) ((time).tv_nsec + 0) +#define EMACS_SECS_ADDR(time) (&(time).tv_sec) #define EMACS_SET_SECS(time, seconds) ((time).tv_sec = (seconds)) -#define EMACS_SET_USECS(time, microseconds) ((time).tv_usec = (microseconds)) - -/* On SVR4, the compiler may complain if given this extra BSD arg. */ -#ifdef GETTIMEOFDAY_ONE_ARGUMENT -#define EMACS_GET_TIME(time) gettimeofday (&(time)) -#else /* not GETTIMEOFDAY_ONE_ARGUMENT */ -/* Presumably the second arg is ignored. */ -#define EMACS_GET_TIME(time) gettimeofday (&(time), NULL) -#endif /* not GETTIMEOFDAY_ONE_ARGUMENT */ - -#define EMACS_ADD_TIME(dest, src1, src2) \ - do { \ - (dest).tv_sec = (src1).tv_sec + (src2).tv_sec; \ - (dest).tv_usec = (src1).tv_usec + (src2).tv_usec; \ - if ((dest).tv_usec > 1000000) \ - (dest).tv_usec -= 1000000, (dest).tv_sec++; \ - } while (0) - -#define EMACS_SUB_TIME(dest, src1, src2) \ - do { \ - (dest).tv_sec = (src1).tv_sec - (src2).tv_sec; \ - (dest).tv_usec = (src1).tv_usec - (src2).tv_usec; \ - if ((dest).tv_usec < 0) \ - (dest).tv_usec += 1000000, (dest).tv_sec--; \ - } while (0) - -#define EMACS_TIME_NEG_P(time) \ - ((long)(time).tv_sec < 0 \ - || ((time).tv_sec == 0 \ - && (long)(time).tv_usec < 0)) - -#else /* ! defined (HAVE_TIMEVAL) */ - -#define EMACS_TIME int -#define EMACS_SECS(time) (time) -#define EMACS_USECS(time) 0 -#define EMACS_SET_SECS(time, seconds) ((time) = (seconds)) -#define EMACS_SET_USECS(time, usecs) 0 - -#define EMACS_GET_TIME(t) ((t) = time ((long *) 0)) -#define EMACS_ADD_TIME(dest, src1, src2) ((dest) = (src1) + (src2)) -#define EMACS_SUB_TIME(dest, src1, src2) ((dest) = (src1) - (src2)) -#define EMACS_TIME_NEG_P(t) ((t) < 0) - -#endif /* ! defined (HAVE_TIMEVAL) */ - +#define EMACS_SET_NSECS(time, ns) ((time).tv_nsec = (ns)) +#define EMACS_SET_SECS_NSECS(time, s, ns) \ + ((void) (EMACS_SET_SECS (time, s), EMACS_SET_NSECS (time, ns))) + +/* Convenience macros for older code that counts microseconds. */ +#define EMACS_SET_USECS(time, us) ((void) EMACS_SET_NSECS (time, (us) * 1000)) #define EMACS_SET_SECS_USECS(time, secs, usecs) \ (EMACS_SET_SECS (time, secs), EMACS_SET_USECS (time, usecs)) -extern int set_file_times (const char *, EMACS_TIME, EMACS_TIME); +/* Set TIME to an invalid time stamp. */ +#define EMACS_SET_INVALID_TIME(time) EMACS_SET_SECS_NSECS(time, 0, -1) + +/* Set TIME to the current system time. */ +#define EMACS_GET_TIME(time) gettime (&(time)) + +/* Put into DEST the result of adding SRC1 to SRC2, or of subtracting + SRC2 from SRC1. On overflow, store an extremal value. */ +#define EMACS_ADD_TIME(dest, src1, src2) ((dest) = timespec_add (src1, src2)) +#define EMACS_SUB_TIME(dest, src1, src2) ((dest) = timespec_sub (src1, src2)) + +/* Return the sign of the valid time stamp TIME, either -1, 0, or 1. */ +#define EMACS_TIME_SIGN(time) timespec_sign (time) + +/* Return 1 if TIME is a valid time stamp. */ +#define EMACS_TIME_VALID_P(time) (0 <= (time).tv_nsec) + +/* Convert the double D to the greatest EMACS_TIME not greater than D. + On overflow, return an extremal value. Return the minimum + EMACS_TIME if D is not a number. */ +#define EMACS_TIME_FROM_DOUBLE(d) dtotimespec (d) + +/* Convert the Emacs time T to an approximate double value D. */ +#define EMACS_TIME_TO_DOUBLE(t) timespectod (t) + +/* defined in sysdep.c */ +extern int set_file_times (int, const char *, EMACS_TIME, EMACS_TIME); +extern struct timeval make_timeval (EMACS_TIME); /* defined in keyboard.c */ extern void set_waiting_for_input (EMACS_TIME *); @@ -141,29 +105,20 @@ happen when this files is used outside the src directory). Use GCPRO1 to determine if lisp.h was included. */ #ifdef GCPRO1 -/* defined in editfns.c*/ -extern Lisp_Object make_time (time_t); -extern int lisp_time_argument (Lisp_Object, time_t *, int *); +/* defined in editfns.c */ +extern Lisp_Object make_lisp_time (EMACS_TIME); +extern int decode_time_components (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object, EMACS_TIME *, int *); +extern EMACS_TIME lisp_time_argument (Lisp_Object, int *); #endif -/* Compare times T1 and T2. Value is 0 if T1 and T2 are the same. - Value is < 0 if T1 is less than T2. Value is > 0 otherwise. (Cast - to long is for those platforms where time_t is an unsigned - type, and where otherwise T1 will always be grater than T2.) */ - -#define EMACS_TIME_CMP(T1, T2) \ - ((long)EMACS_SECS (T1) - (long)EMACS_SECS (T2) \ - + (EMACS_SECS (T1) == EMACS_SECS (T2) \ - ? EMACS_USECS (T1) - EMACS_USECS (T2) \ - : 0)) - /* Compare times T1 and T2 for equality, inequality etc. */ -#define EMACS_TIME_EQ(T1, T2) (EMACS_TIME_CMP (T1, T2) == 0) -#define EMACS_TIME_NE(T1, T2) (EMACS_TIME_CMP (T1, T2) != 0) -#define EMACS_TIME_GT(T1, T2) (EMACS_TIME_CMP (T1, T2) > 0) -#define EMACS_TIME_GE(T1, T2) (EMACS_TIME_CMP (T1, T2) >= 0) -#define EMACS_TIME_LT(T1, T2) (EMACS_TIME_CMP (T1, T2) < 0) -#define EMACS_TIME_LE(T1, T2) (EMACS_TIME_CMP (T1, T2) <= 0) +#define EMACS_TIME_EQ(T1, T2) (timespec_cmp (T1, T2) == 0) +#define EMACS_TIME_NE(T1, T2) (timespec_cmp (T1, T2) != 0) +#define EMACS_TIME_GT(T1, T2) (timespec_cmp (T1, T2) > 0) +#define EMACS_TIME_GE(T1, T2) (timespec_cmp (T1, T2) >= 0) +#define EMACS_TIME_LT(T1, T2) (timespec_cmp (T1, T2) < 0) +#define EMACS_TIME_LE(T1, T2) (timespec_cmp (T1, T2) <= 0) #endif /* EMACS_SYSTIME_H */ === modified file 'src/term.c' --- src/term.c 2012-06-19 06:49:50 +0000 +++ src/term.c 2012-06-22 21:17:42 +0000 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -2611,6 +2612,18 @@ return 0; } +/* Return the Time that corresponds to T. Wrap around on overflow. */ +static Time +timeval_to_Time (struct timeval const *t) +{ + Time s_1000, ms; + + s_1000 = t->tv_sec; + s_1000 *= 1000; + ms = t->tv_usec / 1000; + return s_1000 + ms; +} + /* Return the current position of the mouse. Set *f to the frame the mouse is in, or zero if the mouse is in no @@ -2630,7 +2643,6 @@ Lisp_Object *y, Time *timeptr) { struct timeval now; - Time sec, usec; *fp = SELECTED_FRAME (); (*fp)->mouse_moved = 0; @@ -2641,9 +2653,7 @@ XSETINT (*x, last_mouse_x); XSETINT (*y, last_mouse_y); gettimeofday(&now, 0); - sec = now.tv_sec; - usec = now.tv_usec; - *timeptr = (sec * 1000) + (usec / 1000); + *timeptr = timeval_to_Time (&now); } /* Prepare a mouse-event in *RESULT for placement in the input queue. @@ -2667,7 +2677,7 @@ } } gettimeofday(&now, 0); - result->timestamp = (now.tv_sec * 1000) + (now.tv_usec / 1000); + result->timestamp = timeval_to_Time (&now); if (event->type & GPM_UP) result->modifiers = up_modifier; === modified file 'src/undo.c' --- src/undo.c 2012-06-16 12:24:15 +0000 +++ src/undo.c 2012-06-22 21:17:42 +0000 @@ -226,7 +226,7 @@ base_buffer = base_buffer->base_buffer; BVAR (current_buffer, undo_list) = - Fcons (Fcons (Qt, INTEGER_TO_CONS (base_buffer->modtime)), + Fcons (Fcons (Qt, make_lisp_time (base_buffer->modtime)), BVAR (current_buffer, undo_list)); } @@ -505,10 +505,23 @@ cdr = XCDR (next); if (EQ (car, Qt)) { - /* Element (t high . low) records previous modtime. */ + /* Element (t . TIME) records previous modtime. + Preserve any flag of NONEXISTENT_MODTIME_NSECS or + UNKNOWN_MODTIME_NSECS. */ struct buffer *base_buffer = current_buffer; - time_t mod_time; - CONS_TO_INTEGER (cdr, time_t, mod_time); + EMACS_TIME mod_time; + + if (CONSP (cdr) + && CONSP (XCDR (cdr)) + && CONSP (XCDR (XCDR (cdr))) + && CONSP (XCDR (XCDR (XCDR (cdr)))) + && INTEGERP (XCAR (XCDR (XCDR (XCDR (cdr))))) + && XINT (XCAR (XCDR (XCDR (XCDR (cdr))))) < 0) + EMACS_SET_SECS_NSECS + (mod_time, 0, + XINT (XCAR (XCDR (XCDR (XCDR (cdr))))) / 1000); + else + mod_time = lisp_time_argument (cdr, 0); if (current_buffer->base_buffer) base_buffer = current_buffer->base_buffer; @@ -516,7 +529,7 @@ /* If this records an obsolete save (not matching the actual disk file) then don't mark unmodified. */ - if (mod_time != base_buffer->modtime) + if (EMACS_TIME_NE (mod_time, base_buffer->modtime)) continue; #ifdef CLASH_DETECTION Funlock_buffer (); === modified file 'src/w32.c' --- src/w32.c 2012-04-10 14:16:05 +0000 +++ src/w32.c 2012-06-22 21:17:42 +0000 @@ -318,8 +318,10 @@ return s_b_ret; } +static Lisp_Object ltime (ULONGLONG); + /* Get total user and system times for get-internal-run-time. - Returns a list of three integers if the times are provided by the OS + Returns a list of integers if the times are provided by the OS (NT derivatives), otherwise it returns the result of current-time. */ Lisp_Object w32_get_internal_run_time (void) @@ -331,27 +333,13 @@ if ((*get_process_times_fn) (proc, &create, &exit, &kernel, &user)) { LARGE_INTEGER user_int, kernel_int, total; - int microseconds; + int time_100ns; user_int.LowPart = user.dwLowDateTime; user_int.HighPart = user.dwHighDateTime; kernel_int.LowPart = kernel.dwLowDateTime; kernel_int.HighPart = kernel.dwHighDateTime; total.QuadPart = user_int.QuadPart + kernel_int.QuadPart; - /* FILETIME is 100 nanosecond increments, Emacs only wants - microsecond resolution. */ - total.QuadPart /= 10; - microseconds = total.QuadPart % 1000000; - total.QuadPart /= 1000000; - - /* Sanity check to make sure we can represent the result. */ - if (total.HighPart == 0) - { - int secs = total.LowPart; - - return list3 (make_number ((secs >> 16) & 0xffff), - make_number (secs & 0xffff), - make_number (microseconds)); - } + return ltime (total.QuadPart); } } @@ -4070,15 +4058,17 @@ return ret_val; } -static Lisp_Object -ltime (long time_sec, long time_usec) +ltime (ULONGLONG time_100ns) { - return list3 (make_number ((time_sec >> 16) & 0xffff), + ULONGLONG time_sec = time_100ns / 10000000; + int subsec = time_100ns % 10000000; + return list4 (make_number (time_sec >> 16), make_number (time_sec & 0xffff), - make_number (time_usec)); + make_number (subsec / 10), + make_number (subsec % 10 * 100000)); } -#define U64_TO_LISP_TIME(time) ltime ((time) / 1000000L, (time) % 1000000L) +#define U64_TO_LISP_TIME(time) ltime (time) static int process_times (HANDLE h_proc, Lisp_Object *ctime, Lisp_Object *etime, @@ -4097,11 +4087,9 @@ GetSystemTimeAsFileTime (&ft_current); FILETIME_TO_U64 (tem1, ft_kernel); - tem1 /= 10L; *stime = U64_TO_LISP_TIME (tem1); FILETIME_TO_U64 (tem2, ft_user); - tem2 /= 10L; *utime = U64_TO_LISP_TIME (tem2); tem3 = tem1 + tem2; @@ -4110,13 +4098,13 @@ FILETIME_TO_U64 (tem, ft_creation); /* Process no 4 (System) returns zero creation time. */ if (tem) - tem = (tem - utc_base) / 10L; + tem -= utc_base; *ctime = U64_TO_LISP_TIME (tem); if (tem) { FILETIME_TO_U64 (tem3, ft_current); - tem = (tem3 - utc_base) / 10L - tem; + tem = (tem3 - utc_base) - tem; } *etime = U64_TO_LISP_TIME (tem); @@ -6275,7 +6263,7 @@ { int n, sc, err; SELECT_TYPE fdset; - EMACS_TIME timeout; + struct timeval timeout; struct Lisp_Process *process = (struct Lisp_Process *)p; int fd = process->infd; @@ -6291,7 +6279,8 @@ if (err == EWOULDBLOCK) { /* Set a small timeout. */ - EMACS_SET_SECS_USECS (timeout, 1, 0); + timeout.tv_sec = 1; + timeout.tv_usec = 0; FD_ZERO (&fdset); FD_SET ((int)fd, &fdset); === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-22 07:28:28 +0000 +++ src/xdisp.c 2012-06-22 21:17:42 +0000 @@ -29077,18 +29077,20 @@ { #if defined (HAVE_WINDOW_SYSTEM) EMACS_TIME delay; - int secs = DEFAULT_HOURGLASS_DELAY, usecs = 0; cancel_hourglass (); - if (NUMBERP (Vhourglass_delay)) - { - double duration = extract_float (Vhourglass_delay); - if (0 < duration) - duration_to_sec_usec (duration, &secs, &usecs); - } + if (INTEGERP (Vhourglass_delay) + && XINT (Vhourglass_delay) > 0) + EMACS_SET_SECS_NSECS (delay, + min (XINT (Vhourglass_delay), TYPE_MAXIMUM (time_t)), + 0); + else if (FLOATP (Vhourglass_delay) + && XFLOAT_DATA (Vhourglass_delay) > 0) + delay = EMACS_TIME_FROM_DOUBLE (XFLOAT_DATA (Vhourglass_delay)); + else + EMACS_SET_SECS_NSECS (delay, DEFAULT_HOURGLASS_DELAY, 0); - EMACS_SET_SECS_USECS (delay, secs, usecs); hourglass_atimer = start_atimer (ATIMER_RELATIVE, delay, show_hourglass, NULL); #endif === modified file 'src/xgselect.c' --- src/xgselect.c 2012-05-21 13:35:40 +0000 +++ src/xgselect.c 2012-06-22 21:17:42 +0000 @@ -34,18 +34,18 @@ int xg_select (int fds_lim, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, - EMACS_TIME *timeout) + EMACS_TIME *timeout, sigset_t *sigmask) { SELECT_TYPE all_rfds, all_wfds; EMACS_TIME tmo, *tmop = timeout; GMainContext *context; int have_wfds = wfds != NULL; - int n_gfds = 0, our_tmo = 0, retval = 0, our_fds = 0, max_fds = fds_lim - 1; + int n_gfds = 0, retval = 0, our_fds = 0, max_fds = fds_lim - 1; int i, nfds, tmo_in_millisec; if (!x_in_use) - return select (fds_lim, rfds, wfds, efds, timeout); + return pselect (fds_lim, rfds, wfds, efds, tmop, sigmask); if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); else FD_ZERO (&all_rfds); @@ -90,20 +90,13 @@ { EMACS_SET_SECS_USECS (tmo, tmo_in_millisec/1000, 1000 * (tmo_in_millisec % 1000)); - if (!timeout) our_tmo = 1; - else - { - EMACS_TIME difference; - - EMACS_SUB_TIME (difference, tmo, *timeout); - if (EMACS_TIME_NEG_P (difference)) our_tmo = 1; - } - - if (our_tmo) tmop = &tmo; + if (!timeout || EMACS_TIME_LT (tmo, *timeout)) + tmop = &tmo; } fds_lim = max_fds + 1; - nfds = select (fds_lim, &all_rfds, have_wfds ? &all_wfds : NULL, efds, tmop); + nfds = pselect (fds_lim, &all_rfds, have_wfds ? &all_wfds : NULL, + efds, tmop, sigmask); if (nfds < 0) retval = nfds; @@ -132,7 +125,7 @@ } } - if (our_fds > 0 || (nfds == 0 && our_tmo)) + if (our_fds > 0 || (nfds == 0 && tmop == &tmo)) { /* If Gtk+ is in use eventually gtk_main_iteration will be called, === modified file 'src/xgselect.h' --- src/xgselect.h 2012-01-19 07:21:25 +0000 +++ src/xgselect.h 2012-06-22 21:17:42 +0000 @@ -28,9 +28,9 @@ SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, - EMACS_TIME *timeout); + EMACS_TIME *timeout, + sigset_t *sigmask); extern void xgselect_initialize (void); #endif /* XGSELECT_H */ - === modified file 'src/xmenu.c' --- src/xmenu.c 2012-06-19 16:56:28 +0000 +++ src/xmenu.c 2012-06-22 21:17:42 +0000 @@ -392,8 +392,6 @@ ) { EMACS_TIME next_time = timer_check (), *ntp; - long secs = EMACS_SECS (next_time); - long usecs = EMACS_USECS (next_time); SELECT_TYPE read_fds; struct x_display_info *dpyinfo; int n = 0; @@ -407,7 +405,7 @@ XFlush (dpyinfo->display); } - if (secs < 0 && usecs < 0) + if (! EMACS_TIME_VALID_P (next_time)) ntp = 0; else ntp = &next_time; @@ -417,9 +415,9 @@ over an arrow, a timeout scrolls it a bit. Use xg_select so that timeout gets triggered. */ - xg_select (n + 1, &read_fds, (SELECT_TYPE *)0, (SELECT_TYPE *)0, ntp); + xg_select (n + 1, &read_fds, NULL, NULL, ntp); #else - select (n + 1, &read_fds, (SELECT_TYPE *)0, (SELECT_TYPE *)0, ntp); + pselect (n + 1, &read_fds, NULL, NULL, ntp, NULL); #endif } } === modified file 'src/xselect.c' --- src/xselect.c 2012-06-19 16:56:28 +0000 +++ src/xselect.c 2012-06-22 21:17:42 +0000 @@ -1139,7 +1139,6 @@ static void wait_for_property_change (struct prop_location *location) { - int secs, usecs; ptrdiff_t count = SPECPDL_INDEX (); if (property_change_reply_object) @@ -1156,10 +1155,11 @@ property_change_reply, because property_change_reply_object says so. */ if (! location->arrived) { - secs = x_selection_timeout / 1000; - usecs = (x_selection_timeout % 1000) * 1000; - TRACE2 (" Waiting %d secs, %d usecs", secs, usecs); - wait_reading_process_output (secs, usecs, 0, 0, + EMACS_INT timeout = max (0, x_selection_timeout); + EMACS_INT secs = timeout / 1000; + int nsecs = (timeout % 1000) * 1000000; + TRACE2 (" Waiting %"pI"d secs, %d nsecs", secs, nsecs); + wait_reading_process_output (secs, nsecs, 0, 0, property_change_reply, NULL, 0); if (NILP (XCAR (property_change_reply))) @@ -1228,7 +1228,8 @@ Atom type_atom = (CONSP (target_type) ? symbol_to_x_atom (dpyinfo, XCAR (target_type)) : symbol_to_x_atom (dpyinfo, target_type)); - int secs, usecs; + EMACS_INT timeout, secs; + int nsecs; if (!FRAME_LIVE_P (f)) return Qnil; @@ -1264,10 +1265,11 @@ UNBLOCK_INPUT; /* This allows quits. Also, don't wait forever. */ - secs = x_selection_timeout / 1000; - usecs = (x_selection_timeout % 1000) * 1000; - TRACE1 (" Start waiting %d secs for SelectionNotify", secs); - wait_reading_process_output (secs, usecs, 0, 0, + timeout = max (0, x_selection_timeout); + secs = timeout / 1000; + nsecs = (timeout % 1000) * 1000000; + TRACE1 (" Start waiting %"pI"d secs for SelectionNotify", secs); + wait_reading_process_output (secs, nsecs, 0, 0, reading_selection_reply, NULL, 0); TRACE1 (" Got event = %d", !NILP (XCAR (reading_selection_reply))); === modified file 'src/xterm.c' --- src/xterm.c 2012-06-17 07:39:50 +0000 +++ src/xterm.c 2012-06-22 21:17:42 +0000 @@ -85,10 +85,6 @@ #include #endif -#ifdef HAVE_SYS_TIME_H -#include -#endif - #include #ifdef USE_GTK @@ -3072,44 +3068,6 @@ /* Invert the middle quarter of the frame for .15 sec. */ -/* We use the select system call to do the waiting, so we have to make - sure it's available. If it isn't, we just won't do visual bells. */ - -#if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) - - -/* Subtract the `struct timeval' values X and Y, storing the result in - *RESULT. Return 1 if the difference is negative, otherwise 0. */ - -static int -timeval_subtract (struct timeval *result, struct timeval x, struct timeval y) -{ - /* Perform the carry for the later subtraction by updating y. This - is safer because on some systems the tv_sec member is unsigned. */ - if (x.tv_usec < y.tv_usec) - { - int nsec = (y.tv_usec - x.tv_usec) / 1000000 + 1; - y.tv_usec -= 1000000 * nsec; - y.tv_sec += nsec; - } - - if (x.tv_usec - y.tv_usec > 1000000) - { - int nsec = (y.tv_usec - x.tv_usec) / 1000000; - y.tv_usec += 1000000 * nsec; - y.tv_sec -= nsec; - } - - /* Compute the time remaining to wait. tv_usec is certainly - positive. */ - result->tv_sec = x.tv_sec - y.tv_sec; - result->tv_usec = x.tv_usec - y.tv_usec; - - /* Return indication of whether the result should be considered - negative. */ - return x.tv_sec < y.tv_sec; -} - static void XTflash (struct frame *f) { @@ -3210,34 +3168,29 @@ x_flush (f); { - struct timeval wakeup; + EMACS_TIME wakeup, delay; EMACS_GET_TIME (wakeup); - - /* Compute time to wait until, propagating carry from usecs. */ - wakeup.tv_usec += 150000; - wakeup.tv_sec += (wakeup.tv_usec / 1000000); - wakeup.tv_usec %= 1000000; + EMACS_SET_SECS_NSECS (delay, 0, 150 * 1000 * 1000); + EMACS_ADD_TIME (wakeup, wakeup, delay); /* Keep waiting until past the time wakeup or any input gets available. */ while (! detect_input_pending ()) { - struct timeval current; - struct timeval timeout; + EMACS_TIME current, timeout; EMACS_GET_TIME (current); - /* Break if result would be negative. */ - if (timeval_subtract (¤t, wakeup, current)) + /* Break if result would not be positive. */ + if (EMACS_TIME_LE (wakeup, current)) break; /* How long `select' should wait. */ - timeout.tv_sec = 0; - timeout.tv_usec = 10000; + EMACS_SET_SECS_NSECS (timeout, 0, 10 * 1000 * 1000); /* Try to wait that long--but we might wake up sooner. */ - select (0, NULL, NULL, NULL, &timeout); + pselect (0, NULL, NULL, NULL, &timeout, NULL); } } @@ -3278,8 +3231,6 @@ UNBLOCK_INPUT; } -#endif /* defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) */ - static void XTtoggle_invisible_pointer (FRAME_PTR f, int invisible) @@ -3306,11 +3257,9 @@ { if (FRAME_X_DISPLAY (f)) { -#if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) if (visible_bell) XTflash (f); else -#endif { BLOCK_INPUT; XBell (FRAME_X_DISPLAY (f), 0); @@ -8878,9 +8827,11 @@ FD_SET (fd, &fds); EMACS_GET_TIME (time_now); + if (EMACS_TIME_LT (tmo_at, time_now)) + break; + EMACS_SUB_TIME (tmo, tmo_at, time_now); - - if (EMACS_TIME_NEG_P (tmo) || select (fd+1, &fds, NULL, NULL, &tmo) == 0) + if (pselect (fd + 1, &fds, NULL, NULL, &tmo, NULL) == 0) break; /* Timeout */ } pending_event_wait.f = 0; ------------------------------------------------------------ revno: 108686 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-06-22 13:37:28 -0400 message: * lisp/icomplete.el (icomplete-minibuffer-setup, icomplete-completions): Move the non-essential binding to the post/pre-command-hook where it is more obviously correct. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 17:30:25 +0000 +++ lisp/ChangeLog 2012-06-22 17:37:28 +0000 @@ -1,5 +1,9 @@ 2012-06-22 Stefan Monnier + * icomplete.el (icomplete-minibuffer-setup, icomplete-completions): + Move the non-essential binding to the post/pre-command-hook where it is + more obviously correct. + * subr.el (read-passwd): Don't use a history at all. * savehist.el (savehist-save): Remove password saved accidentally because of the above bug. === modified file 'lisp/icomplete.el' --- lisp/icomplete.el 2012-02-23 15:36:07 +0000 +++ lisp/icomplete.el 2012-06-22 17:37:28 +0000 @@ -209,10 +209,12 @@ (when (and icomplete-mode (icomplete-simple-completing-p)) (set (make-local-variable 'completion-show-inline-help) nil) (add-hook 'pre-command-hook - (lambda () (run-hooks 'icomplete-pre-command-hook)) + (lambda () (let ((non-essential t)) + (run-hooks 'icomplete-pre-command-hook))) nil t) (add-hook 'post-command-hook - (lambda () (run-hooks 'icomplete-post-command-hook)) + (lambda () (let ((non-essential t)) ;E.g. don't prompt for password! + (run-hooks 'icomplete-post-command-hook))) nil t) (run-hooks 'icomplete-minibuffer-setup-hook))) ; @@ -285,8 +287,7 @@ matches exist. \(Keybindings for uniquely matched commands are exhibited within the square braces.)" - (let* ((non-essential t) - (md (completion--field-metadata (field-beginning))) + (let* ((md (completion--field-metadata (field-beginning))) (comps (completion-all-sorted-completions)) (last (if (consp comps) (last comps))) (base-size (cdr last)) ------------------------------------------------------------ revno: 108685 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-06-22 13:30:25 -0400 message: * lisp/subr.el (read-passwd): Don't use a history at all. * lisp/savehist.el (savehist-save): Remove password saved accidentally because of the above bug. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 14:12:42 +0000 +++ lisp/ChangeLog 2012-06-22 17:30:25 +0000 @@ -1,3 +1,9 @@ +2012-06-22 Stefan Monnier + + * subr.el (read-passwd): Don't use a history at all. + * savehist.el (savehist-save): Remove password saved accidentally + because of the above bug. + 2012-06-22 Bastien Guerry * files.el (toggle-read-only): Display a message telling whether === modified file 'lisp/savehist.el' --- lisp/savehist.el 2012-03-09 18:09:46 +0000 +++ lisp/savehist.el 2012-06-22 17:30:25 +0000 @@ -278,6 +278,13 @@ (print-level nil) (print-readably t) (print-quoted t)) + ;; During the 24.2 development, read-passwd had a bug which resulted in + ;; the passwords being saved by savehist. Trim them, retroactively. + ;; This code can be removed after the 24.2 release. + (dolist (sym savehist-minibuffer-history-variables) + (if (and (symbolp sym) (equal (symbol-name sym) "forget-history")) + (setq savehist-minibuffer-history-variables + (delq sym savehist-minibuffer-history-variables)))) ;; Save the minibuffer histories, along with the value of ;; savehist-minibuffer-history-variables itself. (when savehist-save-minibuffer-history === modified file 'lisp/subr.el' --- lisp/subr.el 2012-06-22 13:42:38 +0000 +++ lisp/subr.el 2012-06-22 17:30:25 +0000 @@ -2171,11 +2171,7 @@ (set (make-local-variable 'post-self-insert-hook) nil) (add-hook 'after-change-functions hide-chars-fun nil 'local)) (unwind-protect - (read-string prompt nil - (let ((sym (make-symbol "forget-history"))) - (set sym nil) - sym) - default) + (read-string prompt nil t default) ; t = "no history" (when (buffer-live-p minibuf) (with-current-buffer minibuf ;; Not sure why but it seems that there might be cases where the ------------------------------------------------------------ revno: 108684 committer: Paul Eggert branch nick: trunk timestamp: Fri 2012-06-22 10:20:00 -0700 message: Merge from gnulib. * lib/filemode.h, lib/signal.in.h, lib/stat.c, lib/stdint.in.h: * lib/stdlib.in.h, lib/unistd.in.h, m4/extensions.m4, m4/getloadavg.m4: * m4/getopt.m4, m4/gnulib-common.m4, m4/largefile.m4, m4/mktime.m4: * m4/multiarch.m4, m4/nocrash.m4, m4/stdio_h.m4, m4/time_r.m4: Copy new versions from gnulib, incorporating the following changes: 2012-06-22 time_r: fix typo that always overrode localtime_r decl 2012-06-22 Write "Mac OS X" instead of "MacOS X". 2012-06-21 mktime: fix integer overflow in 'configure'-time test 2012-06-21 nonblocking: Avoid compilation error on mingw64. 2012-06-19 stat, fstat: Avoid warnings on mingw64. 2012-06-19 getopt-gnu: Fix exit code overflow in autoconf test. diff: === modified file 'ChangeLog' --- ChangeLog 2012-06-17 01:42:56 +0000 +++ ChangeLog 2012-06-22 17:20:00 +0000 @@ -1,3 +1,18 @@ +2012-06-22 Paul Eggert + + Merge from gnulib. + * lib/filemode.h, lib/signal.in.h, lib/stat.c, lib/stdint.in.h: + * lib/stdlib.in.h, lib/unistd.in.h, m4/extensions.m4, m4/getloadavg.m4: + * m4/getopt.m4, m4/gnulib-common.m4, m4/largefile.m4, m4/mktime.m4: + * m4/multiarch.m4, m4/nocrash.m4, m4/stdio_h.m4, m4/time_r.m4: + Copy new versions from gnulib, incorporating the following changes: + 2012-06-22 time_r: fix typo that always overrode localtime_r decl + 2012-06-22 Write "Mac OS X" instead of "MacOS X". + 2012-06-21 mktime: fix integer overflow in 'configure'-time test + 2012-06-21 nonblocking: Avoid compilation error on mingw64. + 2012-06-19 stat, fstat: Avoid warnings on mingw64. + 2012-06-19 getopt-gnu: Fix exit code overflow in autoconf test. + 2012-06-13 Andreas Schwab * configure.in: Rename --enable-use-lisp-union-type to === modified file 'lib/filemode.h' --- lib/filemode.h 2012-05-26 23:14:36 +0000 +++ lib/filemode.h 2012-06-22 17:20:00 +0000 @@ -23,7 +23,7 @@ /* Get the declaration of strmode. */ # if HAVE_DECL_STRMODE -# include /* MacOS X, FreeBSD, OpenBSD */ +# include /* Mac OS X, FreeBSD, OpenBSD */ # include /* NetBSD */ # endif === modified file 'lib/signal.in.h' --- lib/signal.in.h 2012-05-26 23:14:36 +0000 +++ lib/signal.in.h 2012-06-22 17:20:00 +0000 @@ -55,7 +55,7 @@ #ifndef _@GUARD_PREFIX@_SIGNAL_H #define _@GUARD_PREFIX@_SIGNAL_H -/* MacOS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare +/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare pthread_sigmask in , not in . But avoid namespace pollution on glibc systems.*/ #if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \ @@ -197,7 +197,7 @@ /* Test whether a given signal is contained in a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ -/* This function is defined as a macro on MacOS X. */ +/* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigismember # endif @@ -210,7 +210,7 @@ /* Initialize a signal set to the empty set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ -/* This function is defined as a macro on MacOS X. */ +/* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigemptyset # endif @@ -222,7 +222,7 @@ /* Add a signal to a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ -/* This function is defined as a macro on MacOS X. */ +/* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigaddset # endif @@ -235,7 +235,7 @@ /* Remove a signal from a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ -/* This function is defined as a macro on MacOS X. */ +/* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigdelset # endif @@ -248,7 +248,7 @@ /* Fill a signal set with all possible signals. */ # if @HAVE_POSIX_SIGNALBLOCKING@ -/* This function is defined as a macro on MacOS X. */ +/* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigfillset # endif === modified file 'lib/stat.c' --- lib/stat.c 2012-05-26 23:14:36 +0000 +++ lib/stat.c 2012-06-22 17:20:00 +0000 @@ -29,6 +29,7 @@ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if _GL_WINDOWS_64_BIT_ST_SIZE +# undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define stat _stati64 # define REPLACE_FUNC_STAT_DIR 1 # undef REPLACE_FUNC_STAT_FILE === modified file 'lib/stdint.in.h' --- lib/stdint.in.h 2012-05-26 23:14:36 +0000 +++ lib/stdint.in.h 2012-06-22 17:20:00 +0000 @@ -83,7 +83,7 @@ /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. - MacOS X 10.4.6 includes (which is us), but + Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX === modified file 'lib/stdlib.in.h' --- lib/stdlib.in.h 2012-05-26 23:14:36 +0000 +++ lib/stdlib.in.h 2012-06-22 17:20:00 +0000 @@ -87,8 +87,8 @@ #endif #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) -/* On MacOS X 10.3, only declares mkstemp. */ -/* On MacOS X 10.5, only declares mkstemps. */ +/* On Mac OS X 10.3, only declares mkstemp. */ +/* On Mac OS X 10.5, only declares mkstemps. */ /* On Cygwin 1.7.1, only declares getsubopt. */ /* But avoid namespace pollution on glibc systems and native Windows. */ # include === modified file 'lib/unistd.in.h' --- lib/unistd.in.h 2012-05-26 23:14:36 +0000 +++ lib/unistd.in.h 2012-06-22 17:20:00 +0000 @@ -1318,7 +1318,7 @@ _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif -/* Need to cast, because on Solaris 11 2011-10, MacOS X 10.5, IRIX 6.5 +/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 and FreeBSD 6.4 the second parameter is int. On Solaris 11 2011-10, the first parameter is not const. */ _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); === modified file 'm4/extensions.m4' --- m4/extensions.m4 2012-05-26 23:14:36 +0000 +++ m4/extensions.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# serial 11 -*- Autoconf -*- +# serial 12 -*- Autoconf -*- # Enable extensions on systems that normally disable them. # Copyright (C) 2003, 2006-2012 Free Software Foundation, Inc. @@ -67,7 +67,7 @@ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif -/* Enable general extensions on MacOS X. */ +/* Enable general extensions on Mac OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif === modified file 'm4/getloadavg.m4' --- m4/getloadavg.m4 2012-05-26 23:14:36 +0000 +++ m4/getloadavg.m4 2012-06-22 17:20:00 +0000 @@ -7,7 +7,7 @@ # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 +#serial 6 # Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. # New applications should use gl_GETLOADAVG instead. @@ -22,7 +22,7 @@ gl_save_LIBS=$LIBS -# getloadvg is present in libc on glibc >= 2.2, MacOS X, FreeBSD >= 2.0, +# getloadvg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, # NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. HAVE_GETLOADAVG=1 AC_CHECK_FUNC([getloadavg], [], === modified file 'm4/getopt.m4' --- m4/getopt.m4 2012-05-26 23:14:36 +0000 +++ m4/getopt.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# getopt.m4 serial 39 +# getopt.m4 serial 41 dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -173,7 +173,7 @@ if (!(optind == 1)) return 12; } - /* Detect MacOS 10.5, AIX 7.1 bug. */ + /* Detect Mac OS X 10.5, AIX 7.1 bug. */ { static char program[] = "program"; static char ab[] = "-ab"; @@ -236,7 +236,7 @@ nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, - and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, + and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; @@ -247,7 +247,7 @@ result |= 1; } /* This code succeeds on glibc 2.8, mingw, - and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, + and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; @@ -276,7 +276,7 @@ if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') - result |= 32; + result |= 16; } /* This code fails on glibc 2.11. */ { @@ -286,9 +286,9 @@ char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') - result |= 64; + result |= 32; else if (getopt (3, argv, "+:a:b") != ':') - result |= 64; + result |= 32; } /* This code dumps core on glibc 2.14. */ { @@ -298,7 +298,7 @@ char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') - result |= 128; + result |= 64; } return result; ]])], === modified file 'm4/gnulib-common.m4' --- m4/gnulib-common.m4 2012-05-26 23:14:36 +0000 +++ m4/gnulib-common.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# gnulib-common.m4 serial 32 +# gnulib-common.m4 serial 33 dnl Copyright (C) 2007-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -30,7 +30,7 @@ [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. - __APPLE__ && __MACH__ test for MacOS X. + __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ === modified file 'm4/largefile.m4' --- m4/largefile.m4 2012-05-26 23:14:36 +0000 +++ m4/largefile.m4 2012-06-22 17:20:00 +0000 @@ -136,7 +136,7 @@ *) dnl Nothing to do on gnulib's side. dnl A 64-bit off_t is - dnl - already the default on MacOS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, dnl OSF/1, Cygwin, dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on dnl glibc, HP-UX, Solaris, === modified file 'm4/mktime.m4' --- m4/mktime.m4 2012-05-26 23:14:36 +0000 +++ m4/mktime.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# serial 21 +# serial 23 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2012 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation @@ -17,7 +17,7 @@ AC_CHECK_FUNCS_ONCE([alarm]) AC_REQUIRE([gl_MULTIARCH]) if test $APPLE_UNIVERSAL_BUILD = 1; then - # A universal build on Apple MacOS X platforms. + # A universal build on Apple Mac OS X platforms. # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. # But we need a configuration result that is valid in both modes. gl_cv_func_working_mktime=no @@ -192,20 +192,23 @@ if (tz_strings[i]) putenv (tz_strings[i]); - for (t = 0; t <= time_t_max - delta; t += delta) + for (t = 0; t <= time_t_max - delta && (result & 1) == 0; t += delta) if (! mktime_test (t)) result |= 1; - if (! (mktime_test ((time_t) 1) - && mktime_test ((time_t) (60 * 60)) - && mktime_test ((time_t) (60 * 60 * 24)))) + if ((result & 2) == 0 + && ! (mktime_test ((time_t) 1) + && mktime_test ((time_t) (60 * 60)) + && mktime_test ((time_t) (60 * 60 * 24)))) result |= 2; - for (j = 1; ; j <<= 1) - if (! bigtime_test (j)) - result |= 4; - else if (INT_MAX / 2 < j) - break; - if (! bigtime_test (INT_MAX)) + for (j = 1; (result & 4) == 0; j <<= 1) + { + if (! bigtime_test (j)) + result |= 4; + if (INT_MAX / 2 < j) + break; + } + if ((result & 8) == 0 && ! bigtime_test (INT_MAX)) result |= 8; } if (! irix_6_4_bug ()) === modified file 'm4/multiarch.m4' --- m4/multiarch.m4 2012-05-26 23:14:36 +0000 +++ m4/multiarch.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# multiarch.m4 serial 6 +# multiarch.m4 serial 7 dnl Copyright (C) 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,7 +6,7 @@ # Determine whether the compiler is or may be producing universal binaries. # -# On MacOS X 10.5 and later systems, the user can create libraries and +# On Mac OS X 10.5 and later systems, the user can create libraries and # executables that work on multiple system types--known as "fat" or # "universal" binaries--by specifying multiple '-arch' options to the # compiler but only a single '-arch' option to the preprocessor. Like === modified file 'm4/nocrash.m4' --- m4/nocrash.m4 2012-05-26 23:14:36 +0000 +++ m4/nocrash.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# nocrash.m4 serial 3 +# nocrash.m4 serial 4 dnl Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -18,7 +18,7 @@ AC_DEFUN([GL_NOCRASH],[[ #include #if defined __MACH__ && defined __APPLE__ -/* Avoid a crash on MacOS X. */ +/* Avoid a crash on Mac OS X. */ #include #include #include === modified file 'm4/stdio_h.m4' --- m4/stdio_h.m4 2012-05-26 23:14:36 +0000 +++ m4/stdio_h.m4 2012-06-22 17:20:00 +0000 @@ -1,4 +1,4 @@ -# stdio_h.m4 serial 41 +# stdio_h.m4 serial 42 dnl Copyright (C) 2007-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -13,7 +13,9 @@ dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FSCANF=1 + gl_MODULE_INDICATOR([fscanf]) GNULIB_SCANF=1 + gl_MODULE_INDICATOR([scanf]) GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 === modified file 'm4/time_r.m4' --- m4/time_r.m4 2012-05-26 23:14:36 +0000 +++ m4/time_r.m4 2012-06-22 17:20:00 +0000 @@ -17,7 +17,7 @@ dnl Some systems don't declare localtime_r() and gmtime_r() if _REENTRANT is dnl not defined. - AC_CHECK_DECLS_ONCE([localtime_r]) + AC_CHECK_DECLS([localtime_r], [], [], [[#include ]]) if test $ac_cv_have_decl_localtime_r = no; then HAVE_DECL_LOCALTIME_R=0 fi ------------------------------------------------------------ revno: 108683 committer: Glenn Morris branch nick: trunk timestamp: Fri 2012-06-22 09:00:34 -0700 message: Improve pcmpl-rpm-query-options custom type diff: === modified file 'lisp/pcmpl-rpm.el' --- lisp/pcmpl-rpm.el 2012-06-22 07:38:26 +0000 +++ lisp/pcmpl-rpm.el 2012-06-22 16:00:34 +0000 @@ -43,9 +43,11 @@ (if (search-forward "--nosignature " nil t) (push "--nosignature" opts)))) opts) - "List of extra options to add to an rpm query command." + "String, or list of strings, with extra options for an rpm query command." :version "24.2" - :type '(repeat string) + :type '(choice (const :tag "No options" nil) + (string :tag "Single option") + (repeat :tag "List of options" string)) :group 'pcmpl-rpm) (defcustom pcmpl-rpm-cache t @@ -78,7 +80,9 @@ pcmpl-rpm-packages (split-string (apply 'pcomplete-process-result "rpm" (append '("-q" "-a") - pcmpl-rpm-query-options)))))) + (if (stringp pcmpl-rpm-query-options) + (list pcmpl-rpm-query-options) + pcmpl-rpm-query-options))))))) ;; Should this use pcmpl-rpm-query-options? ;; I don't think it would speed it up at all (?). ------------------------------------------------------------ revno: 108682 committer: Bastien Guerry branch nick: trunk timestamp: Fri 2012-06-22 16:12:42 +0200 message: Fix bug #11726 -- send a message after `toggle-read-only'. Thanks to Drew Adam for reporting this. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 13:42:38 +0000 +++ lisp/ChangeLog 2012-06-22 14:12:42 +0000 @@ -1,3 +1,8 @@ +2012-06-22 Bastien Guerry + + * files.el (toggle-read-only): Display a message telling whether + the buffer is read-only or not (bug#11726). + 2012-06-22 Stefan Monnier * emacs-lisp/gv.el: New file. === modified file 'lisp/files.el' --- lisp/files.el 2012-06-22 13:42:38 +0000 +++ lisp/files.el 2012-06-22 14:12:42 +0000 @@ -4857,18 +4857,21 @@ (not buffer-read-only))) ; If buffer-read-only is set correctly, nil ; do nothing. ;; Toggle. - (cond - ((and buffer-read-only view-mode) - (View-exit-and-edit) - (make-local-variable 'view-read-only) - (setq view-read-only t)) ; Must leave view mode. - ((and (not buffer-read-only) view-read-only - ;; If view-mode is already active, `view-mode-enter' is a nop. - (not view-mode) - (not (eq (get major-mode 'mode-class) 'special))) - (view-mode-enter)) - (t (setq buffer-read-only (not buffer-read-only)) - (force-mode-line-update))))) + (progn + (cond + ((and buffer-read-only view-mode) + (View-exit-and-edit) + (make-local-variable 'view-read-only) + (setq view-read-only t)) ; Must leave view mode. + ((and (not buffer-read-only) view-read-only + ;; If view-mode is already active, `view-mode-enter' is a nop. + (not view-mode) + (not (eq (get major-mode 'mode-class) 'special))) + (view-mode-enter)) + (t (setq buffer-read-only (not buffer-read-only)) + (force-mode-line-update)))) + (message "Read-only %s for this buffer" + (if buffer-read-only "enabled" "disabled")))) (defun insert-file (filename) "Insert contents of file FILENAME into buffer after point. ------------------------------------------------------------ revno: 108681 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11657 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-06-22 09:42:38 -0400 message: Provide generalized variables in core Elisp. * lisp/emacs-lisp/gv.el: New file. * lisp/subr.el (push, pop): Extend to generalized variables. * lisp/loadup.el (macroexp): Unload if preloaded and uncompiled. * lisp/emacs-lisp/cl-lib.el (cl-pop, cl-push, cl--set-nthcdr): Remove. * lisp/emacs-lisp/cl-macs.el: Require gv. Use gv-define-setter, gv-define-simple-setter, and gv-define-expander. Remove setf-methods defined in gv. Rename cl-setf -> setf. (cl-setf, cl-do-pop, cl-get-setf-method): Remove. (cl-letf, cl-letf*, cl-define-modify-macro, cl-defsetf) (cl-define-setf-expander, cl-struct-setf-expander): Move to cl.el. (cl-remf, cl-shiftf, cl-rotatef, cl-callf, cl-callf2): Rewrite with gv-letplace. (cl-defstruct): Don't define setf-method any more. * lisp/emacs-lisp/cl.el (flet): Don't autoload. (cl--letf, letf, cl--letf*, letf*, cl--gv-adapt) (define-setf-expander, defsetf, define-modify-macro) (cl-struct-setf-expander): Move from cl-lib.el. * lisp/emacs-lisp/syntax.el: * lisp/emacs-lisp/ewoc.el: * lisp/emacs-lisp/smie.el: * lisp/emacs-lisp/cconv.el: * lisp/emacs-lisp/timer.el: Rename cl-setf -> setf, cl-push -> push. (timer--time): Use gv-define-simple-setter. * lisp/emacs-lisp/macroexp.el (macroexp-let2): Rename from macroexp-let² to avoid coding-system problems in subr.el. Adjust all users. (macroexp--maxsize, macroexp-small-p): New functions. * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don't use cl-letf. * lisp/scroll-bar.el (scroll-bar-mode): * lisp/simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode) (normal-erase-is-backspace-mode): Don't use the `eq' place. * lisp/winner.el (winner-configuration, winner-make-point-alist) (winner-set-conf, winner-get-point, winner-set): Don't abuse letf. * lisp/files.el (locate-file-completion-table): Avoid list*. diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-06-21 07:15:42 +0000 +++ etc/NEWS 2012-06-22 13:42:38 +0000 @@ -434,6 +434,9 @@ * Lisp changes in Emacs 24.2 +** CL-style generalized variables are now in core Elisp. +`setf' is autoloaded and `push' and `pop' accept generalized variables. + ** The return value of `defalias' has changed and is now undefined. ** `defun' also accepts a (declare DECLS) form, like `defmacro'. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 07:38:26 +0000 +++ lisp/ChangeLog 2012-06-22 13:42:38 +0000 @@ -1,3 +1,39 @@ +2012-06-22 Stefan Monnier + + * emacs-lisp/gv.el: New file. + * subr.el (push, pop): Extend to generalized variables. + * loadup.el (macroexp): Unload if preloaded and uncompiled (bug#11657). + * emacs-lisp/cl-lib.el (cl-pop, cl-push, cl--set-nthcdr): Remove. + * emacs-lisp/cl-macs.el: Require gv. Use gv-define-setter, + gv-define-simple-setter, and gv-define-expander. + Remove setf-methods defined in gv. Rename cl-setf -> setf. + (cl-setf, cl-do-pop, cl-get-setf-method): Remove. + (cl-letf, cl-letf*, cl-define-modify-macro, cl-defsetf) + (cl-define-setf-expander, cl-struct-setf-expander): Move to cl.el. + (cl-remf, cl-shiftf, cl-rotatef, cl-callf, cl-callf2): Rewrite with + gv-letplace. + (cl-defstruct): Don't define setf-method any more. + * emacs-lisp/cl.el (flet): Don't autoload. + (cl--letf, letf, cl--letf*, letf*, cl--gv-adapt) + (define-setf-expander, defsetf, define-modify-macro) + (cl-struct-setf-expander): Move from cl-lib.el. + * emacs-lisp/syntax.el: + * emacs-lisp/ewoc.el: + * emacs-lisp/smie.el: + * emacs-lisp/cconv.el: + * emacs-lisp/timer.el: Rename cl-setf -> setf, cl-push -> push. + (timer--time): Use gv-define-simple-setter. + * emacs-lisp/macroexp.el (macroexp-let2): Rename from macroexp-let² + to avoid coding-system problems in subr.el. Adjust all users. + (macroexp--maxsize, macroexp-small-p): New functions. + * emacs-lisp/bytecomp.el (byte-compile-file): Don't use cl-letf. + * scroll-bar.el (scroll-bar-mode): + * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode) + (normal-erase-is-backspace-mode): Don't use the `eq' place. + * winner.el (winner-configuration, winner-make-point-alist) + (winner-set-conf, winner-get-point, winner-set): Don't abuse letf. + * files.el (locate-file-completion-table): Avoid list*. + 2012-06-22 Chong Yidong * dired-aux.el (dired-do-create-files): Doc fix (Bug#11327). @@ -5,8 +41,8 @@ (dired-do-copy): Doc fix (Bug#11334). (dired-mark-read-string): Doc fix (Bug#11553). - * dired.el (dired-recursive-copies, dired-recursive-deletes): Doc - fix (Bug#11326). + * dired.el (dired-recursive-copies, dired-recursive-deletes): + Doc fix (Bug#11326). (dired-make-relative): Doc fix (Bug#11332). Remove unused arg. (dired-dwim-target): Doc fix. === modified file 'lisp/emacs-lisp/bytecomp.el' --- lisp/emacs-lisp/bytecomp.el 2012-06-13 13:16:34 +0000 +++ lisp/emacs-lisp/bytecomp.el 2012-06-22 13:42:38 +0000 @@ -1725,14 +1725,18 @@ (set-buffer-multibyte nil)) ;; Run hooks including the uncompression hook. ;; If they change the file name, then change it for the output also. - (cl-letf ((buffer-file-name filename) - ((default-value 'major-mode) 'emacs-lisp-mode) - ;; Ignore unsafe local variables. - ;; We only care about a few of them for our purposes. - (enable-local-variables :safe) - (enable-local-eval nil)) - ;; Arg of t means don't alter enable-local-variables. - (normal-mode t) + (let ((buffer-file-name filename) + (dmm (default-value 'major-mode)) + ;; Ignore unsafe local variables. + ;; We only care about a few of them for our purposes. + (enable-local-variables :safe) + (enable-local-eval nil)) + (unwind-protect + (progn + (setq-default major-mode 'emacs-lisp-mode) + ;; Arg of t means don't alter enable-local-variables. + (normal-mode t)) + (setq-default major-mode dmm)) ;; There may be a file local variable setting (bug#10419). (setq buffer-read-only nil filename buffer-file-name)) === modified file 'lisp/emacs-lisp/cconv.el' --- lisp/emacs-lisp/cconv.el 2012-06-10 13:28:26 +0000 +++ lisp/emacs-lisp/cconv.el 2012-06-22 13:42:38 +0000 @@ -346,13 +346,13 @@ (if (not (eq (cadr mapping) 'apply-partially)) mapping (cl-assert (eq (car mapping) (nth 2 mapping))) - (cl-list* (car mapping) - 'apply-partially - (car mapping) - (mapcar (lambda (arg) - (if (eq var arg) - closedsym arg)) - (nthcdr 3 mapping))))) + `(,(car mapping) + apply-partially + ,(car mapping) + ,@(mapcar (lambda (arg) + (if (eq var arg) + closedsym arg)) + (nthcdr 3 mapping))))) new-env)) (setq new-extend (remq var new-extend)) (push closedsym new-extend) @@ -559,8 +559,8 @@ (when (car y) (setcar x t) (setq free t)) (setq x (cdr x) y (cdr y))) (when free - (cl-push (caar env) (cdr freevars)) - (cl-setf (nth 3 (car env)) t)) + (push (caar env) (cdr freevars)) + (setf (nth 3 (car env)) t)) (setq env (cdr env) envcopy (cdr envcopy)))))) (defun cconv-analyse-form (form env) @@ -610,7 +610,7 @@ ;; it is a mutated variable. (while forms (let ((v (assq (car forms) env))) ; v = non nil if visible - (when v (cl-setf (nth 2 v) t))) + (when v (setf (nth 2 v) t))) (cconv-analyse-form (cadr forms) env) (setq forms (cddr forms)))) @@ -656,7 +656,7 @@ ;; lambda candidate list. (let ((fdata (and (symbolp fun) (assq fun env)))) (if fdata - (cl-setf (nth 4 fdata) t) + (setf (nth 4 fdata) t) (cconv-analyse-form fun env))) (dolist (form args) (cconv-analyse-form form env))) @@ -676,7 +676,7 @@ ((pred symbolp) (let ((dv (assq form env))) ; dv = declared and visible (when dv - (cl-setf (nth 1 dv) t)))))) + (setf (nth 1 dv) t)))))) (provide 'cconv) ;;; cconv.el ends here === modified file 'lisp/emacs-lisp/cl-extra.el' --- lisp/emacs-lisp/cl-extra.el 2012-06-11 15:52:50 +0000 +++ lisp/emacs-lisp/cl-extra.el 2012-06-22 13:42:38 +0000 @@ -305,7 +305,7 @@ (setq cl-ovl (cdr cl-ovl)))) (set-marker cl-mark nil) (if cl-mark2 (set-marker cl-mark2 nil))))) -;;; Support for `cl-setf'. +;;; Support for `setf'. ;;;###autoload (defun cl--set-frame-visible-p (frame val) (cond ((null val) (make-frame-invisible frame)) @@ -590,6 +590,7 @@ (declare (compiler-macro cl--compiler-macro-get)) (or (get sym tag) (and def + ;; Make sure `def' is really absent as opposed to set to nil. (let ((plist (symbol-plist sym))) (while (and plist (not (eq (car plist) tag))) (setq plist (cdr (cdr plist)))) @@ -607,6 +608,7 @@ ;; but that fails, because cl-get has a compiler macro ;; definition that uses getf! (when def + ;; Make sure `def' is really absent as opposed to set to nil. (while (and plist (not (eq (car plist) tag))) (setq plist (cdr (cdr plist)))) (if plist (car (cdr plist)) def)))) === modified file 'lisp/emacs-lisp/cl-lib.el' --- lisp/emacs-lisp/cl-lib.el 2012-06-15 03:18:14 +0000 +++ lisp/emacs-lisp/cl-lib.el 2012-06-22 13:42:38 +0000 @@ -123,7 +123,7 @@ (defmacro cl-incf (place &optional x) "Increment PLACE by X (1 by default). -PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +PLACE may be a symbol, or any generalized variable allowed by `setf'. The return value is the incremented value of PLACE." (declare (debug (place &optional form))) (if (symbolp place) @@ -132,38 +132,16 @@ (defmacro cl-decf (place &optional x) "Decrement PLACE by X (1 by default). -PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +PLACE may be a symbol, or any generalized variable allowed by `setf'. The return value is the decremented value of PLACE." (declare (debug cl-incf)) (if (symbolp place) (list 'setq place (if x (list '- place x) (list '1- place))) (list 'cl-callf '- place (or x 1)))) -;; Autoloaded, but we haven't loaded cl-loaddefs yet. -(declare-function cl-do-pop "cl-macs" (place)) - -(defmacro cl-pop (place) - "Remove and return the head of the list stored in PLACE. -Analogous to (prog1 (car PLACE) (cl-setf PLACE (cdr PLACE))), though more -careful about evaluating each argument only once and in the right order. -PLACE may be a symbol, or any generalized variable allowed by `cl-setf'." - (declare (debug (place))) - (if (symbolp place) - (list 'car (list 'prog1 place (list 'setq place (list 'cdr place)))) - (cl-do-pop place))) - -(defmacro cl-push (x place) - "Insert X at the head of the list stored in PLACE. -Analogous to (cl-setf PLACE (cons X PLACE)), though more careful about -evaluating each argument only once and in the right order. PLACE may -be a symbol, or any generalized variable allowed by `cl-setf'." - (declare (debug (form place))) - (if (symbolp place) (list 'setq place (list 'cons x place)) - (list 'cl-callf2 'cons x place))) - (defmacro cl-pushnew (x place &rest keys) "(cl-pushnew X PLACE): insert X at the head of the list if not already there. -Like (cl-push X PLACE), except that the list is unmodified if X is `eql' to +Like (push X PLACE), except that the list is unmodified if X is `eql' to an element already on the list. \nKeywords supported: :test :test-not :key \n(fn X PLACE [KEYWORD VALUE]...)" @@ -188,9 +166,6 @@ (defun cl--set-elt (seq n val) (if (listp seq) (setcar (nthcdr n seq) val) (aset seq n val))) -(defsubst cl--set-nthcdr (n list x) - (if (<= n 0) x (setcdr (nthcdr (1- n) list) x) list)) - (defun cl--set-buffer-substring (start end val) (save-excursion (delete-region start end) (goto-char start) === modified file 'lisp/emacs-lisp/cl-loaddefs.el' --- lisp/emacs-lisp/cl-loaddefs.el 2012-06-15 01:07:03 +0000 +++ lisp/emacs-lisp/cl-loaddefs.el 2012-06-22 13:42:38 +0000 @@ -11,7 +11,7 @@ ;;;;;; cl--set-frame-visible-p cl--map-overlays cl--map-intervals ;;;;;; cl--map-keymap-recursively cl-notevery cl-notany cl-every ;;;;;; cl-some cl-mapcon cl-mapcan cl-mapl cl-maplist cl-map cl--mapcar-many -;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "1f486111e93d119ceb6e95c434e3fd4b") +;;;;;; cl-equalp cl-coerce) "cl-extra" "cl-extra.el" "edc8a08741d81c74be36b27664d3555a") ;;; Generated autoloads from cl-extra.el (autoload 'cl-coerce "cl-extra" "\ @@ -257,17 +257,15 @@ ;;;### (autoloads (cl--compiler-macro-cXXr cl--compiler-macro-list* ;;;;;; cl--compiler-macro-adjoin cl-defsubst cl-compiler-macroexpand ;;;;;; cl-define-compiler-macro cl-assert cl-check-type cl-typep -;;;;;; cl-deftype cl-struct-setf-expander cl-defstruct cl-define-modify-macro -;;;;;; cl-callf2 cl-callf cl-letf* cl-letf cl-rotatef cl-shiftf -;;;;;; cl-remf cl-do-pop cl-psetf cl-setf cl-get-setf-method cl-defsetf -;;;;;; cl-define-setf-expander cl-declare cl-the cl-locally cl-multiple-value-setq +;;;;;; cl-deftype cl-defstruct cl-callf2 cl-callf cl-rotatef cl-shiftf +;;;;;; cl-remf cl-psetf cl-declare cl-the cl-locally cl-multiple-value-setq ;;;;;; cl-multiple-value-bind cl-symbol-macrolet cl-macrolet cl-labels ;;;;;; cl-flet cl-progv cl-psetq cl-do-all-symbols cl-do-symbols ;;;;;; cl-dotimes cl-dolist cl-do* cl-do cl-loop cl-return-from ;;;;;; cl-return cl-block cl-etypecase cl-typecase cl-ecase cl-case ;;;;;; cl-load-time-value cl-eval-when cl-destructuring-bind cl-function ;;;;;; cl-defmacro cl-defun cl-gentemp cl-gensym) "cl-macs" "cl-macs.el" -;;;;;; "57801d8e4d72553371d59eca7b44292f") +;;;;;; "e37cb1001378ce1d677b67760fb6994b") ;;; Generated autoloads from cl-macs.el (autoload 'cl-gensym "cl-macs" "\ @@ -513,7 +511,7 @@ (autoload 'cl-symbol-macrolet "cl-macs" "\ Make symbol macro definitions. Within the body FORMs, references to the variable NAME will be replaced -by EXPANSION, and (setq NAME ...) will act like (cl-setf EXPANSION ...). +by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...). \(fn ((NAME EXPANSION) ...) FORM...)" nil t) @@ -565,69 +563,16 @@ \(fn &rest SPECS)" nil t) -(autoload 'cl-define-setf-expander "cl-macs" "\ -Define a `cl-setf' method. -This method shows how to handle `cl-setf's to places of the form (NAME ARGS...). -The argument forms ARGS are bound according to ARGLIST, as if NAME were -going to be expanded as a macro, then the BODY forms are executed and must -return a list of five elements: a temporary-variables list, a value-forms -list, a store-variables list (of length one), a store-form, and an access- -form. See `cl-defsetf' for a simpler way to define most setf-methods. - -\(fn NAME ARGLIST BODY...)" nil t) - -(autoload 'cl-defsetf "cl-macs" "\ -Define a `cl-setf' method. -This macro is an easy-to-use substitute for `cl-define-setf-expander' that works -well for simple place forms. In the simple `cl-defsetf' form, `cl-setf's of -the form (cl-setf (NAME ARGS...) VAL) are transformed to function or macro -calls of the form (FUNC ARGS... VAL). Example: - - (cl-defsetf aref aset) - -Alternate form: (cl-defsetf NAME ARGLIST (STORE) BODY...). -Here, the above `cl-setf' call is expanded by binding the argument forms ARGS -according to ARGLIST, binding the value form VAL to STORE, then executing -BODY, which must return a Lisp form that does the necessary `cl-setf' operation. -Actually, ARGLIST and STORE may be bound to temporary variables which are -introduced automatically to preserve proper execution order of the arguments. -Example: - - (cl-defsetf nth (n x) (v) `(setcar (nthcdr ,n ,x) ,v)) - -\(fn NAME [FUNC | ARGLIST (STORE) BODY...])" nil t) - -(autoload 'cl-get-setf-method "cl-macs" "\ -Return a list of five values describing the setf-method for PLACE. -PLACE may be any Lisp form which can appear as the PLACE argument to -a macro like `cl-setf' or `cl-incf'. - -\(fn PLACE &optional ENV)" nil nil) - -(autoload 'cl-setf "cl-macs" "\ -Set each PLACE to the value of its VAL. -This is a generalized version of `setq'; the PLACEs may be symbolic -references such as (car x) or (aref x i), as well as plain symbols. -For example, (cl-setf (cl-cadar x) y) is equivalent to (setcar (cdar x) y). -The return value is the last VAL in the list. - -\(fn PLACE VAL PLACE VAL ...)" nil t) - (autoload 'cl-psetf "cl-macs" "\ Set PLACEs to the values VALs in parallel. -This is like `cl-setf', except that all VAL forms are evaluated (in order) +This is like `setf', except that all VAL forms are evaluated (in order) before assigning any PLACEs to the corresponding values. \(fn PLACE VAL PLACE VAL ...)" nil t) -(autoload 'cl-do-pop "cl-macs" "\ - - -\(fn PLACE)" nil nil) - (autoload 'cl-remf "cl-macs" "\ Remove TAG from property list PLACE. -PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +PLACE may be a symbol, or any generalized variable allowed by `setf'. The form returns true if TAG was found and removed, nil otherwise. \(fn PLACE TAG)" nil t) @@ -635,51 +580,23 @@ (autoload 'cl-shiftf "cl-macs" "\ Shift left among PLACEs. Example: (cl-shiftf A B C) sets A to B, B to C, and returns the old A. -Each PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +Each PLACE may be a symbol, or any generalized variable allowed by `setf'. \(fn PLACE... VAL)" nil t) (autoload 'cl-rotatef "cl-macs" "\ Rotate left among PLACEs. Example: (cl-rotatef A B C) sets A to B, B to C, and C to A. It returns nil. -Each PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +Each PLACE may be a symbol, or any generalized variable allowed by `setf'. \(fn PLACE...)" nil t) -(autoload 'cl-letf "cl-macs" "\ -Temporarily bind to PLACEs. -This is the analogue of `let', but with generalized variables (in the -sense of `cl-setf') for the PLACEs. Each PLACE is set to the corresponding -VALUE, then the BODY forms are executed. On exit, either normally or -because of a `throw' or error, the PLACEs are set back to their original -values. Note that this macro is *not* available in Common Lisp. -As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)', -the PLACE is not modified before executing BODY. - -\(fn ((PLACE VALUE) ...) BODY...)" nil t) - -(put 'cl-letf 'lisp-indent-function '1) - -(autoload 'cl-letf* "cl-macs" "\ -Temporarily bind to PLACEs. -This is the analogue of `let*', but with generalized variables (in the -sense of `cl-setf') for the PLACEs. Each PLACE is set to the corresponding -VALUE, then the BODY forms are executed. On exit, either normally or -because of a `throw' or error, the PLACEs are set back to their original -values. Note that this macro is *not* available in Common Lisp. -As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)', -the PLACE is not modified before executing BODY. - -\(fn ((PLACE VALUE) ...) BODY...)" nil t) - -(put 'cl-letf* 'lisp-indent-function '1) - (autoload 'cl-callf "cl-macs" "\ Set PLACE to (FUNC PLACE ARGS...). FUNC should be an unquoted function name. PLACE may be a symbol, -or any generalized variable allowed by `cl-setf'. +or any generalized variable allowed by `setf'. -\(fn FUNC PLACE ARGS...)" nil t) +\(fn FUNC PLACE &rest ARGS)" nil t) (put 'cl-callf 'lisp-indent-function '2) @@ -691,19 +608,12 @@ (put 'cl-callf2 'lisp-indent-function '3) -(autoload 'cl-define-modify-macro "cl-macs" "\ -Define a `cl-setf'-like modify macro. -If NAME is called, it combines its PLACE argument with the other arguments -from ARGLIST using FUNC: (cl-define-modify-macro cl-incf (&optional (n 1)) +) - -\(fn NAME ARGLIST FUNC &optional DOC)" nil t) - (autoload 'cl-defstruct "cl-macs" "\ Define a struct type. This macro defines a new data type called NAME that stores data in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME' copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'. -You can use the accessors to set the corresponding slots, via `cl-setf'. +You can use the accessors to set the corresponding slots, via `setf'. NAME may instead take the form (NAME OPTIONS...), where each OPTION is either a single keyword or (KEYWORD VALUE). @@ -712,17 +622,12 @@ Each SLOT may instead take the form (SLOT SLOT-OPTS...), where SLOT-OPTS are keyword-value pairs for that slot. Currently, only one keyword is supported, `:read-only'. If this has a non-nil -value, that slot cannot be set via `cl-setf'. +value, that slot cannot be set via `setf'. \(fn NAME SLOTS...)" nil t) (put 'cl-defstruct 'doc-string-elt '2) -(autoload 'cl-struct-setf-expander "cl-macs" "\ - - -\(fn X NAME ACCESSOR PRED-FORM POS)" nil nil) - (autoload 'cl-deftype "cl-macs" "\ Define NAME as a new data type. The type name can then be used in `cl-typecase', `cl-check-type', etc. @@ -779,6 +684,8 @@ \(fn NAME ARGLIST [DOCSTRING] BODY...)" nil t) +(put 'cl-defsubst 'lisp-indent-function '2) + (autoload 'cl--compiler-macro-adjoin "cl-macs" "\ === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2012-06-15 01:07:03 +0000 +++ lisp/emacs-lisp/cl-macs.el 2012-06-22 13:42:38 +0000 @@ -45,6 +45,8 @@ (require 'cl-lib) (require 'macroexp) +;; `gv' is required here because cl-macs can be loaded before loaddefs.el. +(require 'gv) (defmacro cl-pop2 (place) (declare (debug edebug-sexps)) @@ -262,7 +264,7 @@ \(fn NAME ARGLIST [DOCSTRING] BODY...)" (declare (debug ;; Same as defun but use cl-lambda-list. - (&define [&or name ("cl-setf" :name cl-setf name)] + (&define [&or name ("setf" :name setf name)] cl-lambda-list cl-declarations-or-string [&optional ("interactive" interactive)] @@ -1707,12 +1709,12 @@ (when (cdr (assq (symbol-name cl-macro) cl-env)) (setq cl-macro (cadr (assq (symbol-name cl-macro) cl-env))))) ((eq 'setq (car-safe cl-macro)) - ;; Convert setq to cl-setf if required by symbol-macro expansion. + ;; Convert setq to setf if required by symbol-macro expansion. (let* ((args (mapcar (lambda (f) (cl--sm-macroexpand f cl-env)) (cdr cl-macro))) (p args)) (while (and p (symbolp (car p))) (setq p (cddr p))) - (if p (setq cl-macro (cons 'cl-setf args)) + (if p (setq cl-macro (cons 'setf args)) (setq cl-macro (cons 'setq args)) ;; Don't loop further. nil)))))) @@ -1722,7 +1724,7 @@ (defmacro cl-symbol-macrolet (bindings &rest body) "Make symbol macro definitions. Within the body FORMs, references to the variable NAME will be replaced -by EXPANSION, and (setq NAME ...) will act like (cl-setf EXPANSION ...). +by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...). \(fn ((NAME EXPANSION) ...) FORM...)" (declare (indent 1) (debug ((&rest (symbol sexp)) cl-declarations body))) @@ -1864,406 +1866,140 @@ ;;; Generalized variables. -;;;###autoload -(defmacro cl-define-setf-expander (func args &rest body) - "Define a `cl-setf' method. -This method shows how to handle `cl-setf's to places of the form (NAME ARGS...). -The argument forms ARGS are bound according to ARGLIST, as if NAME were -going to be expanded as a macro, then the BODY forms are executed and must -return a list of five elements: a temporary-variables list, a value-forms -list, a store-variables list (of length one), a store-form, and an access- -form. See `cl-defsetf' for a simpler way to define most setf-methods. - -\(fn NAME ARGLIST BODY...)" - (declare (debug - (&define name cl-lambda-list cl-declarations-or-string def-body))) - `(cl-eval-when (compile load eval) - ,@(if (stringp (car body)) - (list `(put ',func 'setf-documentation ,(pop body)))) - (put ',func 'setf-method (cl-function (lambda ,args ,@body))))) - -;;;###autoload -(defmacro cl-defsetf (func arg1 &rest args) - "Define a `cl-setf' method. -This macro is an easy-to-use substitute for `cl-define-setf-expander' that works -well for simple place forms. In the simple `cl-defsetf' form, `cl-setf's of -the form (cl-setf (NAME ARGS...) VAL) are transformed to function or macro -calls of the form (FUNC ARGS... VAL). Example: - - (cl-defsetf aref aset) - -Alternate form: (cl-defsetf NAME ARGLIST (STORE) BODY...). -Here, the above `cl-setf' call is expanded by binding the argument forms ARGS -according to ARGLIST, binding the value form VAL to STORE, then executing -BODY, which must return a Lisp form that does the necessary `cl-setf' operation. -Actually, ARGLIST and STORE may be bound to temporary variables which are -introduced automatically to preserve proper execution order of the arguments. -Example: - - (cl-defsetf nth (n x) (v) `(setcar (nthcdr ,n ,x) ,v)) - -\(fn NAME [FUNC | ARGLIST (STORE) BODY...])" - (declare (debug - (&define name - [&or [symbolp &optional stringp] - [cl-lambda-list (symbolp)]] - cl-declarations-or-string def-body))) - (if (and (listp arg1) (consp args)) - (let* ((largs nil) (largsr nil) - (temps nil) (tempsr nil) - (restarg nil) (rest-temps nil) - (store-var (car (prog1 (car args) (setq args (cdr args))))) - (store-temp (intern (format "--%s--temp--" store-var))) - (lets1 nil) (lets2 nil) - (docstr nil) (p arg1)) - (if (stringp (car args)) - (setq docstr (prog1 (car args) (setq args (cdr args))))) - (while (and p (not (eq (car p) '&aux))) - (if (eq (car p) '&rest) - (setq p (cdr p) restarg (car p)) - (or (memq (car p) '(&optional &key &allow-other-keys)) - (setq largs (cons (if (consp (car p)) (car (car p)) (car p)) - largs) - temps (cons (intern (format "--%s--temp--" (car largs))) - temps)))) - (setq p (cdr p))) - (setq largs (nreverse largs) temps (nreverse temps)) - (if restarg - (setq largsr (append largs (list restarg)) - rest-temps (intern (format "--%s--temp--" restarg)) - tempsr (append temps (list rest-temps))) - (setq largsr largs tempsr temps)) - (let ((p1 largs) (p2 temps)) - (while p1 - (setq lets1 (cons `(,(car p2) - (make-symbol ,(format "--cl-%s--" (car p1)))) - lets1) - lets2 (cons (list (car p1) (car p2)) lets2) - p1 (cdr p1) p2 (cdr p2)))) - (if restarg (setq lets2 (cons (list restarg rest-temps) lets2))) - `(cl-define-setf-expander ,func ,arg1 - ,@(and docstr (list docstr)) - (let* - ,(nreverse - (cons `(,store-temp - (make-symbol ,(format "--cl-%s--" store-var))) - (if restarg - `((,rest-temps - (mapcar (lambda (_) (make-symbol "--cl-var--")) - ,restarg)) - ,@lets1) - lets1))) - (list ; 'values - (,(if restarg 'cl-list* 'list) ,@tempsr) - (,(if restarg 'cl-list* 'list) ,@largsr) - (list ,store-temp) - (let* - ,(nreverse - (cons (list store-var store-temp) - lets2)) - ,@args) - (,(if restarg 'cl-list* 'list) - ,@(cons `',func tempsr)))))) - `(cl-defsetf ,func (&rest args) (store) - ,(let ((call `(cons ',arg1 - (append args (list store))))) - (if (car args) - `(list 'progn ,call store) - call))))) - ;;; Some standard place types from Common Lisp. -(cl-defsetf aref aset) -(cl-defsetf car setcar) -(cl-defsetf cdr setcdr) -(cl-defsetf caar (x) (val) `(setcar (car ,x) ,val)) -(cl-defsetf cadr (x) (val) `(setcar (cdr ,x) ,val)) -(cl-defsetf cdar (x) (val) `(setcdr (car ,x) ,val)) -(cl-defsetf cddr (x) (val) `(setcdr (cdr ,x) ,val)) -(cl-defsetf elt (seq n) (store) - `(if (listp ,seq) (setcar (nthcdr ,n ,seq) ,store) - (aset ,seq ,n ,store))) -(cl-defsetf get put) -(cl-defsetf cl-get (x y &optional d) (store) `(put ,x ,y ,store)) -(cl-defsetf gethash (x h &optional d) (store) `(puthash ,x ,store ,h)) -(cl-defsetf nth (n x) (store) `(setcar (nthcdr ,n ,x) ,store)) -(cl-defsetf cl-subseq (seq start &optional end) (new) +(gv-define-setter cl-get (store x y &optional d) `(put ,x ,y ,store)) +(gv-define-setter cl-subseq (new seq start &optional end) `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end) ,new)) -(cl-defsetf symbol-function fset) -(cl-defsetf symbol-plist setplist) -(cl-defsetf symbol-value set) ;;; Various car/cdr aliases. Note that `cadr' is handled specially. -(cl-defsetf cl-first setcar) -(cl-defsetf cl-second (x) (store) `(setcar (cdr ,x) ,store)) -(cl-defsetf cl-third (x) (store) `(setcar (cddr ,x) ,store)) -(cl-defsetf cl-fourth (x) (store) `(setcar (cl-cdddr ,x) ,store)) -(cl-defsetf cl-fifth (x) (store) `(setcar (nthcdr 4 ,x) ,store)) -(cl-defsetf cl-sixth (x) (store) `(setcar (nthcdr 5 ,x) ,store)) -(cl-defsetf cl-seventh (x) (store) `(setcar (nthcdr 6 ,x) ,store)) -(cl-defsetf cl-eighth (x) (store) `(setcar (nthcdr 7 ,x) ,store)) -(cl-defsetf cl-ninth (x) (store) `(setcar (nthcdr 8 ,x) ,store)) -(cl-defsetf cl-tenth (x) (store) `(setcar (nthcdr 9 ,x) ,store)) -(cl-defsetf cl-rest setcdr) +(gv-define-setter cl-fourth (store x) `(setcar (cl-cdddr ,x) ,store)) +(gv-define-setter cl-fifth (store x) `(setcar (nthcdr 4 ,x) ,store)) +(gv-define-setter cl-sixth (store x) `(setcar (nthcdr 5 ,x) ,store)) +(gv-define-setter cl-seventh (store x) `(setcar (nthcdr 6 ,x) ,store)) +(gv-define-setter cl-eighth (store x) `(setcar (nthcdr 7 ,x) ,store)) +(gv-define-setter cl-ninth (store x) `(setcar (nthcdr 8 ,x) ,store)) +(gv-define-setter cl-tenth (store x) `(setcar (nthcdr 9 ,x) ,store)) ;;; Some more Emacs-related place types. -(cl-defsetf buffer-file-name set-visited-file-name t) -(cl-defsetf buffer-modified-p (&optional buf) (flag) +(gv-define-simple-setter buffer-file-name set-visited-file-name t) +(gv-define-setter buffer-modified-p (flag &optional buf) `(with-current-buffer ,buf (set-buffer-modified-p ,flag))) -(cl-defsetf buffer-name rename-buffer t) -(cl-defsetf buffer-string () (store) +(gv-define-simple-setter buffer-name rename-buffer t) +(gv-define-setter buffer-string (store) `(progn (erase-buffer) (insert ,store))) -(cl-defsetf buffer-substring cl--set-buffer-substring) -(cl-defsetf current-buffer set-buffer) -(cl-defsetf current-case-table set-case-table) -(cl-defsetf current-column move-to-column t) -(cl-defsetf current-global-map use-global-map t) -(cl-defsetf current-input-mode () (store) +(gv-define-simple-setter buffer-substring cl--set-buffer-substring) +(gv-define-simple-setter current-buffer set-buffer) +(gv-define-simple-setter current-case-table set-case-table) +(gv-define-simple-setter current-column move-to-column t) +(gv-define-simple-setter current-global-map use-global-map t) +(gv-define-setter current-input-mode (store) `(progn (apply #'set-input-mode ,store) ,store)) -(cl-defsetf current-local-map use-local-map t) -(cl-defsetf current-window-configuration set-window-configuration t) -(cl-defsetf default-file-modes set-default-file-modes t) -(cl-defsetf default-value set-default) -(cl-defsetf documentation-property put) -(cl-defsetf face-background (f &optional s) (x) `(set-face-background ,f ,x ,s)) -(cl-defsetf face-background-pixmap (f &optional s) (x) +(gv-define-simple-setter current-local-map use-local-map t) +(gv-define-simple-setter current-window-configuration set-window-configuration t) +(gv-define-simple-setter default-file-modes set-default-file-modes t) +(gv-define-simple-setter documentation-property put) +(gv-define-setter face-background (x f &optional s) `(set-face-background ,f ,x ,s)) +(gv-define-setter face-background-pixmap (x f &optional s) `(set-face-background-pixmap ,f ,x ,s)) -(cl-defsetf face-font (f &optional s) (x) `(set-face-font ,f ,x ,s)) -(cl-defsetf face-foreground (f &optional s) (x) `(set-face-foreground ,f ,x ,s)) -(cl-defsetf face-underline-p (f &optional s) (x) +(gv-define-setter face-font (x f &optional s) `(set-face-font ,f ,x ,s)) +(gv-define-setter face-foreground (x f &optional s) `(set-face-foreground ,f ,x ,s)) +(gv-define-setter face-underline-p (x f &optional s) `(set-face-underline-p ,f ,x ,s)) -(cl-defsetf file-modes set-file-modes t) -(cl-defsetf frame-height set-screen-height t) -(cl-defsetf frame-parameters modify-frame-parameters t) -(cl-defsetf frame-visible-p cl--set-frame-visible-p) -(cl-defsetf frame-width set-screen-width t) -(cl-defsetf frame-parameter set-frame-parameter t) -(cl-defsetf terminal-parameter set-terminal-parameter) -(cl-defsetf getenv setenv t) -(cl-defsetf get-register set-register) -(cl-defsetf global-key-binding global-set-key) -(cl-defsetf keymap-parent set-keymap-parent) -(cl-defsetf local-key-binding local-set-key) -(cl-defsetf mark set-mark t) -(cl-defsetf mark-marker set-mark t) -(cl-defsetf marker-position set-marker t) -(cl-defsetf match-data set-match-data t) -(cl-defsetf mouse-position (scr) (store) +(gv-define-simple-setter file-modes set-file-modes t) +(gv-define-simple-setter frame-height set-screen-height t) +(gv-define-simple-setter frame-parameters modify-frame-parameters t) +(gv-define-simple-setter frame-visible-p cl--set-frame-visible-p) +(gv-define-simple-setter frame-width set-screen-width t) +(gv-define-simple-setter getenv setenv t) +(gv-define-simple-setter get-register set-register) +(gv-define-simple-setter global-key-binding global-set-key) +(gv-define-simple-setter local-key-binding local-set-key) +(gv-define-simple-setter mark set-mark t) +(gv-define-simple-setter mark-marker set-mark t) +(gv-define-simple-setter marker-position set-marker t) +(gv-define-setter mouse-position (store scr) `(set-mouse-position ,scr (car ,store) (cadr ,store) (cddr ,store))) -(cl-defsetf overlay-get overlay-put) -(cl-defsetf overlay-start (ov) (store) - `(progn (move-overlay ,ov ,store (overlay-end ,ov)) ,store)) -(cl-defsetf overlay-end (ov) (store) - `(progn (move-overlay ,ov (overlay-start ,ov) ,store) ,store)) -(cl-defsetf point goto-char) -(cl-defsetf point-marker goto-char t) -(cl-defsetf point-max () (store) +(gv-define-simple-setter point goto-char) +(gv-define-simple-setter point-marker goto-char t) +(gv-define-setter point-max (store) `(progn (narrow-to-region (point-min) ,store) ,store)) -(cl-defsetf point-min () (store) +(gv-define-setter point-min (store) `(progn (narrow-to-region ,store (point-max)) ,store)) -(cl-defsetf process-buffer set-process-buffer) -(cl-defsetf process-filter set-process-filter) -(cl-defsetf process-sentinel set-process-sentinel) -(cl-defsetf process-get process-put) -(cl-defsetf read-mouse-position (scr) (store) +(gv-define-setter read-mouse-position (store scr) `(set-mouse-position ,scr (car ,store) (cdr ,store))) -(cl-defsetf screen-height set-screen-height t) -(cl-defsetf screen-width set-screen-width t) -(cl-defsetf selected-window select-window) -(cl-defsetf selected-screen select-screen) -(cl-defsetf selected-frame select-frame) -(cl-defsetf standard-case-table set-standard-case-table) -(cl-defsetf syntax-table set-syntax-table) -(cl-defsetf visited-file-modtime set-visited-file-modtime t) -(cl-defsetf window-buffer set-window-buffer t) -(cl-defsetf window-display-table set-window-display-table t) -(cl-defsetf window-dedicated-p set-window-dedicated-p t) -(cl-defsetf window-height () (store) +(gv-define-simple-setter screen-height set-screen-height t) +(gv-define-simple-setter screen-width set-screen-width t) +(gv-define-simple-setter selected-window select-window) +(gv-define-simple-setter selected-screen select-screen) +(gv-define-simple-setter selected-frame select-frame) +(gv-define-simple-setter standard-case-table set-standard-case-table) +(gv-define-simple-setter syntax-table set-syntax-table) +(gv-define-simple-setter visited-file-modtime set-visited-file-modtime t) +(gv-define-setter window-height (store) `(progn (enlarge-window (- ,store (window-height))) ,store)) -(cl-defsetf window-hscroll set-window-hscroll) -(cl-defsetf window-parameter set-window-parameter) -(cl-defsetf window-point set-window-point) -(cl-defsetf window-start set-window-start) -(cl-defsetf window-width () (store) +(gv-define-setter window-width (store) `(progn (enlarge-window (- ,store (window-width)) t) ,store)) -(cl-defsetf x-get-secondary-selection x-own-secondary-selection t) -(cl-defsetf x-get-selection x-own-selection t) - -;; This is a hack that allows (cl-setf (eq a 7) B) to mean either +(gv-define-simple-setter x-get-secondary-selection x-own-secondary-selection t) +(gv-define-simple-setter x-get-selection x-own-selection t) + +;;; More complex setf-methods. + +;; This is a hack that allows (setf (eq a 7) B) to mean either ;; (setq a 7) or (setq a nil) depending on whether B is nil or not. ;; This is useful when you have control over the PLACE but not over ;; the VALUE, as is the case in define-minor-mode's :variable. -(cl-define-setf-expander eq (place val) - (let ((method (cl-get-setf-method place macroexpand-all-environment)) - (val-temp (make-symbol "--eq-val--")) - (store-temp (make-symbol "--eq-store--"))) - (list (append (nth 0 method) (list val-temp)) - (append (nth 1 method) (list val)) - (list store-temp) - `(let ((,(car (nth 2 method)) - (if ,store-temp ,val-temp (not ,val-temp)))) - ,(nth 3 method) ,store-temp) - `(eq ,(nth 4 method) ,val-temp)))) - -;;; More complex setf-methods. -;; These should take &environment arguments, but since full arglists aren't -;; available while compiling cl-macs, we fake it by referring to the global -;; variable macroexpand-all-environment directly. - -(cl-define-setf-expander apply (func arg1 &rest rest) - (or (and (memq (car-safe func) '(quote function cl-function)) - (symbolp (car-safe (cdr-safe func)))) - (error "First arg to apply in cl-setf is not (function SYM): %s" func)) - (let* ((form (cons (nth 1 func) (cons arg1 rest))) - (method (cl-get-setf-method form macroexpand-all-environment))) - (list (car method) (nth 1 method) (nth 2 method) - (cl-setf-make-apply (nth 3 method) (cadr func) (car method)) - (cl-setf-make-apply (nth 4 method) (cadr func) (car method))))) - -(defun cl-setf-make-apply (form func temps) - (if (eq (car form) 'progn) - `(progn ,(cl-setf-make-apply (cadr form) func temps) ,@(cddr form)) - (or (equal (last form) (last temps)) - (error "%s is not suitable for use with setf-of-apply" func)) - `(apply ',(car form) ,@(cdr form)))) - -(cl-define-setf-expander nthcdr (n place) - (let ((method (cl-get-setf-method place macroexpand-all-environment)) - (n-temp (make-symbol "--cl-nthcdr-n--")) - (store-temp (make-symbol "--cl-nthcdr-store--"))) - (list (cons n-temp (car method)) - (cons n (nth 1 method)) - (list store-temp) - `(let ((,(car (nth 2 method)) - (cl--set-nthcdr ,n-temp ,(nth 4 method) - ,store-temp))) - ,(nth 3 method) ,store-temp) - `(nthcdr ,n-temp ,(nth 4 method))))) - -(cl-define-setf-expander cl-getf (place tag &optional def) - (let ((method (cl-get-setf-method place macroexpand-all-environment)) - (tag-temp (make-symbol "--cl-getf-tag--")) - (def-temp (make-symbol "--cl-getf-def--")) - (store-temp (make-symbol "--cl-getf-store--"))) - (list (append (car method) (list tag-temp def-temp)) - (append (nth 1 method) (list tag def)) - (list store-temp) - `(let ((,(car (nth 2 method)) - (cl--set-getf ,(nth 4 method) ,tag-temp ,store-temp))) - ,(nth 3 method) ,store-temp) - `(cl-getf ,(nth 4 method) ,tag-temp ,def-temp)))) - -(cl-define-setf-expander substring (place from &optional to) - (let ((method (cl-get-setf-method place macroexpand-all-environment)) - (from-temp (make-symbol "--cl-substring-from--")) - (to-temp (make-symbol "--cl-substring-to--")) - (store-temp (make-symbol "--cl-substring-store--"))) - (list (append (car method) (list from-temp to-temp)) - (append (nth 1 method) (list from to)) - (list store-temp) - `(let ((,(car (nth 2 method)) - (cl--set-substring ,(nth 4 method) - ,from-temp ,to-temp ,store-temp))) - ,(nth 3 method) ,store-temp) - `(substring ,(nth 4 method) ,from-temp ,to-temp)))) - -;;; Getting and optimizing setf-methods. -;;;###autoload -(defun cl-get-setf-method (place &optional env) - "Return a list of five values describing the setf-method for PLACE. -PLACE may be any Lisp form which can appear as the PLACE argument to -a macro like `cl-setf' or `cl-incf'." - (if (symbolp place) - (let ((temp (make-symbol "--cl-setf--"))) - (list nil nil (list temp) `(setq ,place ,temp) place)) - (or (and (symbolp (car place)) - (let* ((func (car place)) - (name (symbol-name func)) - (method (get func 'setf-method)) - (case-fold-search nil)) - (or (and method - (let ((macroexpand-all-environment env)) - (setq method (apply method (cdr place)))) - (if (and (consp method) (= (length method) 5)) - method - (error "Setf-method for %s returns malformed method" - func))) - (and (string-match-p "\\`c[ad][ad][ad]?[ad]?r\\'" name) - (cl-get-setf-method (cl-compiler-macroexpand place))) - (and (eq func 'edebug-after) - (cl-get-setf-method (nth (1- (length place)) place) - env))))) - (if (eq place (setq place (macroexpand place env))) - (if (and (symbolp (car place)) (fboundp (car place)) - (symbolp (symbol-function (car place)))) - (cl-get-setf-method (cons (symbol-function (car place)) - (cdr place)) env) - (error "No setf-method known for %s" (car place))) - (cl-get-setf-method place env))))) - -(defun cl-setf-do-modify (place opt-expr) - (let* ((method (cl-get-setf-method place macroexpand-all-environment)) - (temps (car method)) (values (nth 1 method)) - (lets nil) (subs nil) - (optimize (and (not (eq opt-expr 'no-opt)) - (or (and (not (eq opt-expr 'unsafe)) - (cl--safe-expr-p opt-expr)) - (cl-setf-simple-store-p (car (nth 2 method)) - (nth 3 method))))) - (simple (and optimize (consp place) (cl--simple-exprs-p (cdr place))))) - (while values - (if (or simple (macroexp-const-p (car values))) - (push (cons (pop temps) (pop values)) subs) - (push (list (pop temps) (pop values)) lets))) - (list (nreverse lets) - (cons (car (nth 2 method)) (cl-sublis subs (nth 3 method))) - (cl-sublis subs (nth 4 method))))) - -(defun cl-setf-do-store (spec val) - (let ((sym (car spec)) - (form (cdr spec))) - (if (or (macroexp-const-p val) - (and (cl--simple-expr-p val) (eq (cl--expr-contains form sym) 1)) - (cl-setf-simple-store-p sym form)) - (cl-subst val sym form) - `(let ((,sym ,val)) ,form)))) - -(defun cl-setf-simple-store-p (sym form) - (and (consp form) (eq (cl--expr-contains form sym) 1) - (eq (nth (1- (length form)) form) sym) - (symbolp (car form)) (fboundp (car form)) - (not (eq (car-safe (symbol-function (car form))) 'macro)))) +;; It turned out that :variable needed more flexibility anyway, so +;; this doesn't seem too useful now. +(gv-define-expander eq + (lambda (do place val) + (gv-letplace (getter setter) place + (macroexp-let2 nil val val + (funcall do `(eq ,getter ,val) + (lambda (v) + `(cond + (,v ,(funcall setter val)) + ((eq ,getter ,val) ,(funcall setter `(not ,val)))))))))) + +(gv-define-expander nthcdr + (lambda (do n place) + (macroexp-let2 nil idx n + (gv-letplace (getter setter) place + (funcall do `(nthcdr ,idx ,getter) + (lambda (v) `(if (<= ,idx 0) ,(funcall setter v) + (setcdr (nthcdr (1- ,idx) ,getter) ,v)))))))) + +(gv-define-expander cl-getf + (lambda (do place tag &optional def) + (gv-letplace (getter setter) place + (macroexp-let2 nil k tag + (macroexp-let2 nil d def + (funcall do `(cl-getf ,getter ,k ,d) + (lambda (v) (funcall setter `(cl--set-getf ,getter ,k ,v))))))))) + +(gv-define-expander substring + (lambda (do place from &optional to) + (gv-letplace (getter setter) place + (macroexp-let2 nil start from + (macroexp-let2 nil end to + (funcall do `(substring ,getter ,start ,end) + (lambda (v) + (funcall setter `(cl--set-substring + ,getter ,start ,end ,v))))))))) ;;; The standard modify macros. -;;;###autoload -(defmacro cl-setf (&rest args) - "Set each PLACE to the value of its VAL. -This is a generalized version of `setq'; the PLACEs may be symbolic -references such as (car x) or (aref x i), as well as plain symbols. -For example, (cl-setf (cl-cadar x) y) is equivalent to (setcar (cdar x) y). -The return value is the last VAL in the list. -\(fn PLACE VAL PLACE VAL ...)" - (declare (debug (&rest [place form]))) - (if (cdr (cdr args)) - (let ((sets nil)) - (while args (push `(cl-setf ,(pop args) ,(pop args)) sets)) - (cons 'progn (nreverse sets))) - (if (symbolp (car args)) - (and args (cons 'setq args)) - (let* ((method (cl-setf-do-modify (car args) (nth 1 args))) - (store (cl-setf-do-store (nth 1 method) (nth 1 args)))) - (if (car method) `(let* ,(car method) ,store) store))))) +;; `setf' is now part of core Elisp, defined in gv.el. ;;;###autoload (defmacro cl-psetf (&rest args) "Set PLACEs to the values VALs in parallel. -This is like `cl-setf', except that all VAL forms are evaluated (in order) +This is like `setf', except that all VAL forms are evaluated (in order) before assigning any PLACEs to the corresponding values. \(fn PLACE VAL PLACE VAL ...)" - (declare (debug cl-setf)) + (declare (debug setf)) (let ((p args) (simple t) (vars nil)) (while p (if (or (not (symbolp (car p))) (cl--expr-depends-p (nth 1 p) vars)) @@ -2274,41 +2010,23 @@ (or p (error "Odd number of arguments to cl-psetf")) (pop p)) (if simple - `(progn (cl-setf ,@args) nil) + `(progn (setf ,@args) nil) (setq args (reverse args)) - (let ((expr `(cl-setf ,(cadr args) ,(car args)))) + (let ((expr `(setf ,(cadr args) ,(car args)))) (while (setq args (cddr args)) - (setq expr `(cl-setf ,(cadr args) (prog1 ,(car args) ,expr)))) + (setq expr `(setf ,(cadr args) (prog1 ,(car args) ,expr)))) `(progn ,expr nil))))) ;;;###autoload -(defun cl-do-pop (place) - (if (cl--simple-expr-p place) - `(prog1 (car ,place) (cl-setf ,place (cdr ,place))) - (let* ((method (cl-setf-do-modify place t)) - (temp (make-symbol "--cl-pop--"))) - `(let* (,@(car method) - (,temp ,(nth 2 method))) - (prog1 (car ,temp) - ,(cl-setf-do-store (nth 1 method) `(cdr ,temp))))))) - -;;;###autoload (defmacro cl-remf (place tag) "Remove TAG from property list PLACE. -PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +PLACE may be a symbol, or any generalized variable allowed by `setf'. The form returns true if TAG was found and removed, nil otherwise." (declare (debug (place form))) - (let* ((method (cl-setf-do-modify place t)) - (tag-temp (and (not (macroexp-const-p tag)) (make-symbol "--cl-remf-tag--"))) - (val-temp (and (not (cl--simple-expr-p place)) - (make-symbol "--cl-remf-place--"))) - (ttag (or tag-temp tag)) - (tval (or val-temp (nth 2 method)))) - `(let* (,@(car method) - ,@(and val-temp `((,val-temp ,(nth 2 method)))) - ,@(and tag-temp `((,tag-temp ,tag)))) - (if (eq ,ttag (car ,tval)) - (progn ,(cl-setf-do-store (nth 1 method) `(cddr ,tval)) + (gv-letplace (tval setter) place + (macroexp-let2 macroexp-copyable-p ttag tag + `(if (eq ,ttag (car ,tval)) + (progn ,(funcall setter `(cddr ,tval)) t) (cl--do-remf ,tval ,ttag))))) @@ -2316,7 +2034,7 @@ (defmacro cl-shiftf (place &rest args) "Shift left among PLACEs. Example: (cl-shiftf A B C) sets A to B, B to C, and returns the old A. -Each PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +Each PLACE may be a symbol, or any generalized variable allowed by `setf'. \(fn PLACE... VAL)" (declare (debug (&rest place))) @@ -2324,16 +2042,15 @@ ((null args) place) ((symbolp place) `(prog1 ,place (setq ,place (cl-shiftf ,@args)))) (t - (let ((method (cl-setf-do-modify place 'unsafe))) - `(let* ,(car method) - (prog1 ,(nth 2 method) - ,(cl-setf-do-store (nth 1 method) `(cl-shiftf ,@args)))))))) + (gv-letplace (getter setter) place + `(prog1 ,getter + ,(funcall setter `(cl-shiftf ,@args))))))) ;;;###autoload (defmacro cl-rotatef (&rest args) "Rotate left among PLACEs. Example: (cl-rotatef A B C) sets A to B, B to C, and C to A. It returns nil. -Each PLACE may be a symbol, or any generalized variable allowed by `cl-setf'. +Each PLACE may be a symbol, or any generalized variable allowed by `setf'. \(fn PLACE...)" (declare (debug (&rest place))) @@ -2348,107 +2065,24 @@ (temp (make-symbol "--cl-rotatef--")) (form temp)) (while (cdr places) - (let ((method (cl-setf-do-modify (pop places) 'unsafe))) - (setq form `(let* ,(car method) - (prog1 ,(nth 2 method) - ,(cl-setf-do-store (nth 1 method) form)))))) - (let ((method (cl-setf-do-modify (car places) 'unsafe))) - `(let* (,@(car method) (,temp ,(nth 2 method))) - ,(cl-setf-do-store (nth 1 method) form) nil))))) - -;;;###autoload -(defmacro cl-letf (bindings &rest body) - "Temporarily bind to PLACEs. -This is the analogue of `let', but with generalized variables (in the -sense of `cl-setf') for the PLACEs. Each PLACE is set to the corresponding -VALUE, then the BODY forms are executed. On exit, either normally or -because of a `throw' or error, the PLACEs are set back to their original -values. Note that this macro is *not* available in Common Lisp. -As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)', -the PLACE is not modified before executing BODY. - -\(fn ((PLACE VALUE) ...) BODY...)" - (declare (indent 1) (debug ((&rest (gate place &optional form)) body))) - (if (and (not (cdr bindings)) (cdar bindings) (symbolp (caar bindings))) - `(let ,bindings ,@body) - (let ((lets nil) - (rev (reverse bindings))) - (while rev - (let* ((place (if (symbolp (caar rev)) - `(symbol-value ',(caar rev)) - (caar rev))) - (value (cl-cadar rev)) - (method (cl-setf-do-modify place 'no-opt)) - (save (make-symbol "--cl-letf-save--")) - (bound (and (memq (car place) '(symbol-value symbol-function)) - (make-symbol "--cl-letf-bound--"))) - (temp (and (not (macroexp-const-p value)) (cdr bindings) - (make-symbol "--cl-letf-val--")))) - (setq lets (nconc (car method) - (if bound - (list (list bound - (list (if (eq (car place) - 'symbol-value) - 'boundp 'fboundp) - (nth 1 (nth 2 method)))) - (list save `(and ,bound - ,(nth 2 method)))) - (list (list save (nth 2 method)))) - (and temp (list (list temp value))) - lets) - body (list - `(unwind-protect - (progn - ,@(if (cdr (car rev)) - (cons (cl-setf-do-store (nth 1 method) - (or temp value)) - body) - body)) - ,(if bound - `(if ,bound - ,(cl-setf-do-store (nth 1 method) save) - (,(if (eq (car place) 'symbol-value) - #'makunbound #'fmakunbound) - ,(nth 1 (nth 2 method)))) - (cl-setf-do-store (nth 1 method) save)))) - rev (cdr rev)))) - `(let* ,lets ,@body)))) - - -;;;###autoload -(defmacro cl-letf* (bindings &rest body) - "Temporarily bind to PLACEs. -This is the analogue of `let*', but with generalized variables (in the -sense of `cl-setf') for the PLACEs. Each PLACE is set to the corresponding -VALUE, then the BODY forms are executed. On exit, either normally or -because of a `throw' or error, the PLACEs are set back to their original -values. Note that this macro is *not* available in Common Lisp. -As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)', -the PLACE is not modified before executing BODY. - -\(fn ((PLACE VALUE) ...) BODY...)" - (declare (indent 1) (debug cl-letf)) - (if (null bindings) - (cons 'progn body) - (setq bindings (reverse bindings)) - (while bindings - (setq body (list `(cl-letf (,(pop bindings)) ,@body)))) - (car body))) + (setq form + (gv-letplace (getter setter) (pop places) + `(prog1 ,getter ,(funcall setter form))))) + (gv-letplace (getter setter) (car places) + (macroexp-let* `((,temp ,getter)) + `(progn ,(funcall setter form) nil)))))) ;;;###autoload (defmacro cl-callf (func place &rest args) "Set PLACE to (FUNC PLACE ARGS...). FUNC should be an unquoted function name. PLACE may be a symbol, -or any generalized variable allowed by `cl-setf'. - -\(fn FUNC PLACE ARGS...)" +or any generalized variable allowed by `setf'." (declare (indent 2) (debug (cl-function place &rest form))) - (let* ((method (cl-setf-do-modify place (cons 'list args))) - (rargs (cons (nth 2 method) args))) - `(let* ,(car method) - ,(cl-setf-do-store (nth 1 method) - (if (symbolp func) (cons func rargs) - `(funcall #',func ,@rargs)))))) + (gv-letplace (getter setter) place + (let* ((rargs (cons getter args))) + (funcall setter + (if (symbolp func) (cons func rargs) + `(funcall #',func ,@rargs)))))) ;;;###autoload (defmacro cl-callf2 (func arg1 place &rest args) @@ -2458,31 +2092,13 @@ \(fn FUNC ARG1 PLACE ARGS...)" (declare (indent 3) (debug (cl-function form place &rest form))) (if (and (cl--safe-expr-p arg1) (cl--simple-expr-p place) (symbolp func)) - `(cl-setf ,place (,func ,arg1 ,place ,@args)) - (let* ((method (cl-setf-do-modify place (cons 'list args))) - (temp (and (not (macroexp-const-p arg1)) (make-symbol "--cl-arg1--"))) - (rargs (cl-list* (or temp arg1) (nth 2 method) args))) - `(let* (,@(and temp (list (list temp arg1))) ,@(car method)) - ,(cl-setf-do-store (nth 1 method) - (if (symbolp func) (cons func rargs) - `(funcall #',func ,@rargs))))))) - -;;;###autoload -(defmacro cl-define-modify-macro (name arglist func &optional doc) - "Define a `cl-setf'-like modify macro. -If NAME is called, it combines its PLACE argument with the other arguments -from ARGLIST using FUNC: (cl-define-modify-macro cl-incf (&optional (n 1)) +)" - (declare (debug - (&define name cl-lambda-list ;; should exclude &key - symbolp &optional stringp))) - (if (memq '&key arglist) (error "&key not allowed in cl-define-modify-macro")) - (let ((place (make-symbol "--cl-place--"))) - `(cl-defmacro ,name (,place ,@arglist) - ,doc - (,(if (memq '&rest arglist) #'cl-list* #'list) - #'cl-callf ',func ,place - ,@(cl--arglist-args arglist))))) - + `(setf ,place (,func ,arg1 ,place ,@args)) + (macroexp-let2 nil a1 arg1 + (gv-letplace (getter setter) place + (let* ((rargs (cl-list* a1 getter args))) + (funcall setter + (if (symbolp func) (cons func rargs) + `(funcall #',func ,@rargs)))))))) ;;; Structures. @@ -2492,7 +2108,7 @@ This macro defines a new data type called NAME that stores data in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME' copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'. -You can use the accessors to set the corresponding slots, via `cl-setf'. +You can use the accessors to set the corresponding slots, via `setf'. NAME may instead take the form (NAME OPTIONS...), where each OPTION is either a single keyword or (KEYWORD VALUE). @@ -2501,7 +2117,7 @@ Each SLOT may instead take the form (SLOT SLOT-OPTS...), where SLOT-OPTS are keyword-value pairs for that slot. Currently, only one keyword is supported, `:read-only'. If this has a non-nil -value, that slot cannot be set via `cl-setf'. +value, that slot cannot be set via `setf'. \(fn NAME SLOTS...)" (declare (doc-string 2) @@ -2655,35 +2271,35 @@ (let ((accessor (intern (format "%s%s" conc-name slot)))) (push slot slots) (push (nth 1 desc) defaults) - (push (cl-list* - 'cl-defsubst accessor '(cl-x) - (append - (and pred-check + (push `(cl-defsubst ,accessor (cl-x) + ,@(and pred-check (list `(or ,pred-check (error "%s accessing a non-%s" ',accessor ',name)))) - (list (if (eq type 'vector) `(aref cl-x ,pos) - (if (= pos 0) '(car cl-x) - `(nth ,pos cl-x)))))) forms) + ,(if (eq type 'vector) `(aref cl-x ,pos) + (if (= pos 0) '(car cl-x) + `(nth ,pos cl-x)))) forms) (push (cons accessor t) side-eff) - (push `(cl-define-setf-expander ,accessor (cl-x) - ,(if (cadr (memq :read-only (cddr desc))) - `(progn (ignore cl-x) - (error "%s is a read-only slot" - ',accessor)) - ;; If cl is loaded only for compilation, - ;; the call to cl-struct-setf-expander would - ;; cause a warning because it may not be - ;; defined at run time. Suppress that warning. - `(progn - (declare-function - cl-struct-setf-expander "cl-macs" - (x name accessor pred-form pos)) - (cl-struct-setf-expander - cl-x ',name ',accessor - ,(and pred-check `',pred-check) - ,pos)))) - forms) + ;; Don't bother defining a setf-expander, since gv-get can use + ;; the compiler macro to get the same result. + ;;(push `(gv-define-setter ,accessor (cl-val cl-x) + ;; ,(if (cadr (memq :read-only (cddr desc))) + ;; `(progn (ignore cl-x cl-val) + ;; (error "%s is a read-only slot" + ;; ',accessor)) + ;; ;; If cl is loaded only for compilation, + ;; ;; the call to cl--struct-setf-expander would + ;; ;; cause a warning because it may not be + ;; ;; defined at run time. Suppress that warning. + ;; `(progn + ;; (declare-function + ;; cl--struct-setf-expander "cl-macs" + ;; (x name accessor pred-form pos)) + ;; (cl--struct-setf-expander + ;; cl-val cl-x ',name ',accessor + ;; ,(and pred-check `',pred-check) + ;; ,pos)))) + ;; forms) (if print-auto (nconc print-func (list `(princ ,(format " %s" slot) cl-s) @@ -2739,29 +2355,6 @@ forms) `(progn ,@(nreverse (cons `',name forms))))) -;;;###autoload -(defun cl-struct-setf-expander (x name accessor pred-form pos) - (let* ((temp (make-symbol "--cl-x--")) (store (make-symbol "--cl-store--"))) - (list (list temp) (list x) (list store) - `(progn - ,@(and pred-form - (list `(or ,(cl-subst temp 'cl-x pred-form) - (error ,(format - "%s storing a non-%s" - accessor name))))) - ,(if (eq (car (get name 'cl-struct-type)) 'vector) - `(aset ,temp ,pos ,store) - `(setcar - ,(if (<= pos 5) - (let ((xx temp)) - (while (>= (setq pos (1- pos)) 0) - (setq xx `(cdr ,xx))) - xx) - `(nthcdr ,pos ,temp)) - ,store))) - (list accessor temp)))) - - ;;; Types and assertions. ;;;###autoload @@ -2932,7 +2525,7 @@ surrounded by (cl-block NAME ...). \(fn NAME ARGLIST [DOCSTRING] BODY...)" - (declare (debug cl-defun)) + (declare (debug cl-defun) (indent 2)) (let* ((argns (cl--arglist-args args)) (p argns) (pbody (cons 'progn body)) (unsafe (not (cl--safe-expr-p pbody)))) @@ -3021,7 +2614,7 @@ (cl-define-compiler-macro cl-typep (&whole form val type) (if (macroexp-const-p type) - (macroexp-let² macroexp-copyable-p temp val + (macroexp-let2 macroexp-copyable-p temp val (cl--make-type-test temp (cl--const-expr-val type))) form)) @@ -3055,8 +2648,8 @@ (put y 'side-effect-free t)) ;;; Things that are inline. -(cl-proclaim '(inline cl-floatp-safe cl-acons cl-map cl-concatenate cl-notany cl-notevery - cl--set-elt cl-revappend cl-nreconc gethash)) +(cl-proclaim '(inline cl-floatp-safe cl-acons cl-map cl-concatenate cl-notany + cl-notevery cl--set-elt cl-revappend cl-nreconc gethash)) ;;; Things that are side-effect-free. (mapc (lambda (x) (put x 'side-effect-free t)) === modified file 'lisp/emacs-lisp/cl.el' --- lisp/emacs-lisp/cl.el 2012-06-11 15:52:50 +0000 +++ lisp/emacs-lisp/cl.el 2012-06-22 13:42:38 +0000 @@ -82,6 +82,9 @@ ;; (while (re-search-forward re nil t) ;; (delete-region (1- (point)) (point))) ;; (save-buffer))))) + +;;; Aliases to cl-lib's features. + (dolist (var '( ;; loop-result-var ;; loop-result @@ -208,7 +211,6 @@ typep deftype defstruct - define-modify-macro callf2 callf letf* @@ -217,11 +219,7 @@ shiftf remf psetf - setf - get-setf-method - defsetf - (define-setf-method . cl-define-setf-expander) - define-setf-expander + (define-setf-method . define-setf-expander) declare the locally @@ -310,8 +308,6 @@ values-list values pushnew - push - pop decf incf )) @@ -328,6 +324,11 @@ (if (get new prop) (put fun prop (get new prop)))))) +;;; Features provided a bit differently in Elisp. + +;; First, the old lexical-let is now better served by `lexical-binding', tho +;; it's not 100% compatible. + (defvar cl-closure-vars nil) (defvar cl--function-convert-cache nil) @@ -421,7 +422,7 @@ (list (cl-caddr x) `(make-symbol ,(format "--%s--" (car x))))) vars) - (cl-setf ,@(apply #'append + (setf ,@(apply #'append (mapcar (lambda (x) (list `(symbol-value ,(cl-caddr x)) (cadr x))) vars))) @@ -442,7 +443,6 @@ (car body))) ;; This should really have some way to shadow 'byte-compile properties, etc. -;;;###autoload (defmacro flet (bindings &rest body) "Make temporary function definitions. This is an analogue of `let' that operates on the function cell of FUNC @@ -452,7 +452,7 @@ \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" (declare (indent 1) (debug cl-flet)) - `(cl-letf* ,(mapcar + `(letf* ,(mapcar (lambda (x) (if (or (and (fboundp (car x)) (eq (car-safe (symbol-function (car x))) 'macro)) @@ -497,7 +497,220 @@ newenv))) (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) -;;; Additional compatibility code +;; Generalized variables are provided by gv.el, but some details are +;; not 100% compatible: not worth the trouble to add them to cl-lib.el, but we +;; still to support old users of cl.el. + +(defun cl--letf (bindings simplebinds binds body) + ;; It's not quite clear what the semantics of let! should be. + ;; E.g. in (let! ((PLACE1 VAL1) (PLACE2 VAL2)) BODY), while it's clear + ;; that the actual assignments ("bindings") should only happen after + ;; evaluating VAL1 and VAL2, it's not clear when the sub-expressions of + ;; PLACE1 and PLACE2 should be evaluated. Should we have + ;; PLACE1; VAL1; PLACE2; VAL2; bind1; bind2 + ;; or + ;; VAL1; VAL2; PLACE1; PLACE2; bind1; bind2 + ;; or + ;; VAL1; VAL2; PLACE1; bind1; PLACE2; bind2 + ;; Common-Lisp's `psetf' does the first, so we'll do the same. + (if (null bindings) + (if (and (null binds) (null simplebinds)) (macroexp-progn body) + `(let* (,@(mapcar (lambda (x) + (pcase-let ((`(,vold ,getter ,_setter ,_vnew) x)) + (list vold getter))) + binds) + ,@simplebinds) + (unwind-protect + ,(macroexp-progn (append + (mapcar (lambda (x) (pcase x + (`(,_vold ,_getter ,setter ,vnew) + (funcall setter vnew)))) + binds) + body)) + ,@(mapcar (lambda (x) (pcase-let ((`(,vold ,_getter ,setter ,_vnew) x)) + (funcall setter vold))) + binds)))) + (let ((binding (car bindings))) + (gv-letplace (getter setter) (car binding) + (macroexp-let2 nil vnew (cadr binding) + (if (symbolp (car binding)) + ;; Special-case for simple variables. + (cl--letf (cdr bindings) + (cons `(,getter ,(if (cdr binding) vnew getter)) + simplebinds) + binds body) + (cl--letf (cdr bindings) simplebinds + (cons `(,(make-symbol "old") ,getter ,setter + ,@(if (cdr binding) (list vnew))) + binds) + body))))))) + +(defmacro letf (bindings &rest body) + "Temporarily bind to PLACEs. +This is the analogue of `let', but with generalized variables (in the +sense of `setf') for the PLACEs. Each PLACE is set to the corresponding +VALUE, then the BODY forms are executed. On exit, either normally or +because of a `throw' or error, the PLACEs are set back to their original +values. Note that this macro is *not* available in Common Lisp. +As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)', +the PLACE is not modified before executing BODY. + +\(fn ((PLACE VALUE) ...) BODY...)" + (declare (indent 1) (debug ((&rest (gate gv-place &optional form)) body))) + (cl--letf bindings () () body)) + +(defun cl--letf* (bindings body) + (if (null bindings) + (macroexp-progn body) + (let ((binding (car bindings))) + (if (symbolp (car binding)) + ;; Special-case for simple variables. + (macroexp-let* (list (if (cdr binding) binding + (list (car binding) (car binding)))) + (cl--letf* (cdr bindings) body)) + (gv-letplace (getter setter) (car binding) + (macroexp-let2 macroexp-copyable-p vnew (cadr binding) + (macroexp-let2 nil vold getter + `(unwind-protect + (progn + ,(if (cdr binding) (funcall setter vnew)) + ,(cl--letf* (cdr bindings) body)) + ,(funcall setter vold))))))))) + +(defmacro letf* (bindings &rest body) + (declare (indent 1) (debug letf)) + (cl--letf* bindings body)) + +(defun cl--gv-adapt (cl-gv do) ;FIXME: needed during setf expansion! + (let ((vars (nth 0 cl-gv)) + (vals (nth 1 cl-gv)) + (binds ()) + (substs ())) + ;; Use cl-sublis as was done in cl-setf-do-modify. + (while vars + (if (macroexp-copyable-p (car vals)) + (push (cons (pop vars) (pop vals)) substs) + (push (list (pop vars) (pop vals)) binds))) + (macroexp-let* + binds + (funcall do (cl-sublis substs (nth 4 cl-gv)) + ;; We'd like to do something like + ;; (lambda ,(nth 2 cl-gv) ,(nth 3 cl-gv)). + (lambda (exp) + (macroexp-let2 macroexp-copyable-p v exp + (cl-sublis (cons (cons (car (nth 2 cl-gv)) v) + substs) + (nth 3 cl-gv)))))))) + +(defmacro define-setf-expander (name arglist &rest body) + "Define a `setf' method. +This method shows how to handle `setf's to places of the form (NAME ARGS...). +The argument forms ARGS are bound according to ARGLIST, as if NAME were +going to be expanded as a macro, then the BODY forms are executed and must +return a list of five elements: a temporary-variables list, a value-forms +list, a store-variables list (of length one), a store-form, and an access- +form. See `gv-define-expander', `gv-define-setter', and `gv-define-expander' +for a better and simpler ways to define setf-methods." + (declare (debug + (&define name cl-lambda-list cl-declarations-or-string def-body))) + `(progn + ,@(if (stringp (car body)) + (list `(put ',name 'setf-documentation ,(pop body)))) + (gv-define-expander ,name + (cl-function + (lambda (do ,@arglist) + (cl--gv-adapt (progn ,@body) do)))))) + +(defmacro defsetf (name arg1 &rest args) + "Define a `setf' method. +This macro is an easy-to-use substitute for `define-setf-expander' that works +well for simple place forms. In the simple `defsetf' form, `setf's of +the form (setf (NAME ARGS...) VAL) are transformed to function or macro +calls of the form (FUNC ARGS... VAL). Example: + + (cl-defsetf aref aset) + +Alternate form: (cl-defsetf NAME ARGLIST (STORE) BODY...). +Here, the above `setf' call is expanded by binding the argument forms ARGS +according to ARGLIST, binding the value form VAL to STORE, then executing +BODY, which must return a Lisp form that does the necessary `setf' operation. +Actually, ARGLIST and STORE may be bound to temporary variables which are +introduced automatically to preserve proper execution order of the arguments. +Example: + + (cl-defsetf nth (n x) (v) `(setcar (nthcdr ,n ,x) ,v)) + +\(fn NAME [FUNC | ARGLIST (STORE) BODY...])" + (declare (debug + (&define name + [&or [symbolp &optional stringp] + [cl-lambda-list (symbolp)]] + cl-declarations-or-string def-body))) + (if (and (listp arg1) (consp args)) + ;; Like `gv-define-setter' but with `cl-function'. + `(gv-define-expander ,name + (lambda (do &rest args) + (gv--defsetter ',name + (cl-function + (lambda (,@(car args) ,@arg1) ,@(cdr args))) + do args))) + `(gv-define-simple-setter ,name ,arg1))) + +;; FIXME: CL used to provide a setf method for `apply', but I haven't been able +;; to find a case where it worked. The code below tries to handle it as well. +;; (defun cl--setf-apply (form last-witness last) +;; (cond +;; ((not (consp form)) form) +;; ((eq (ignore-errors (car (last form))) last-witness) +;; `(apply #',(car form) ,@(butlast (cdr form)) ,last)) +;; ((and (memq (car form) '(let let*)) +;; (rassoc (list last-witness) (cadr form))) +;; (let ((rebind (rassoc (list last-witness) (cadr form)))) +;; `(,(car form) ,(remq rebind (cadr form)) +;; ,@(mapcar (lambda (form) (cl--setf-apply form (car rebind) last)) +;; (cddr form))))) +;; (t (mapcar (lambda (form) (cl--setf-apply form last-witness last)) form)))) +;; (gv-define-setter apply (val fun &rest args) +;; (pcase fun (`#',(and (pred symbolp) f) (setq fun f)) +;; (_ (error "First arg to apply in setf is not #'SYM: %S" fun))) +;; (let* ((butlast (butlast args)) +;; (last (car (last args))) +;; (last-witness (make-symbol "--cl-tailarg--")) +;; (setter (macroexpand `(setf (,fun ,@butlast ,last-witness) ,val) +;; macroexpand-all-environment))) +;; (cl--setf-apply setter last-witness last))) + + +;; FIXME: CL used to provide get-setf-method, which was used by some +;; setf-expanders, but now that we use gv.el, it is a lot more difficult +;; and in general impossible to provide get-setf-method. Hopefully, it +;; won't be needed. If needed, we'll have to do something nasty along the +;; lines of +;; (defun get-setf-method (place &optional env) +;; (let* ((witness (list 'cl-gsm)) +;; (expansion (gv-letplace (getter setter) place +;; `(,witness ,getter ,(funcall setter witness))))) +;; ...find "let prefix" of expansion, extract getter and setter from +;; ...the rest, and build the 5-tuple)) +(make-obsolete 'get-setf-method 'gv-letplace "24.2") + +(defmacro define-modify-macro (name arglist func &optional doc) + "Define a `setf'-like modify macro. +If NAME is called, it combines its PLACE argument with the other arguments +from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)" + (declare (debug + (&define name cl-lambda-list ;; should exclude &key + symbolp &optional stringp))) + (if (memq '&key arglist) + (error "&key not allowed in define-modify-macro")) + (let ((place (make-symbol "--cl-place--"))) + `(cl-defmacro ,name (,place ,@arglist) + ,doc + (,(if (memq '&rest arglist) #'cl-list* #'list) + #'cl-callf ',func ,place + ,@(cl--arglist-args arglist))))) + +;;; Additional compatibility code. ;; For names that were clean but really aren't needed any more. (define-obsolete-function-alias 'cl-macroexpand 'macroexpand "24.2") @@ -510,8 +723,8 @@ ;; No idea if this might still be needed. (defun cl-not-hash-table (x &optional y &rest z) + (declare (obsolete nil "24.2")) (signal 'wrong-type-argument (list 'cl-hash-table-p (or y x)))) -(make-obsolete 'cl-not-hash-table nil "24.2") (defvar cl-builtin-gethash (symbol-function 'gethash)) (make-obsolete-variable 'cl-builtin-gethash nil "24.2") @@ -538,6 +751,29 @@ (while (and list (not (equal item (car list)))) (setq list (cdr list))) list) +;; Used in the expansion of the old `defstruct'. +(defun cl-struct-setf-expander (x name accessor pred-form pos) + (declare (obsolete nil "24.2")) + (let* ((temp (make-symbol "--cl-x--")) (store (make-symbol "--cl-store--"))) + (list (list temp) (list x) (list store) + `(progn + ,@(and pred-form + (list `(or ,(cl-subst temp 'cl-x pred-form) + (error ,(format + "%s storing a non-%s" + accessor name))))) + ,(if (eq (car (get name 'cl-struct-type)) 'vector) + `(aset ,temp ,pos ,store) + `(setcar + ,(if (<= pos 5) + (let ((xx temp)) + (while (>= (setq pos (1- pos)) 0) + (setq xx `(cdr ,xx))) + xx) + `(nthcdr ,pos ,temp)) + ,store))) + (list accessor temp)))) + ;; FIXME: More candidates: define-modify-macro, define-setf-expander. (provide 'cl) === modified file 'lisp/emacs-lisp/ewoc.el' --- lisp/emacs-lisp/ewoc.el 2012-06-10 13:28:26 +0000 +++ lisp/emacs-lisp/ewoc.el 2012-06-22 13:42:38 +0000 @@ -196,10 +196,10 @@ (save-excursion (let ((elemnode (ewoc--node-create (copy-marker (ewoc--node-start-marker node)) data))) - (cl-setf (ewoc--node-left elemnode) (ewoc--node-left node) - (ewoc--node-right elemnode) node - (ewoc--node-right (ewoc--node-left node)) elemnode - (ewoc--node-left node) elemnode) + (setf (ewoc--node-left elemnode) (ewoc--node-left node) + (ewoc--node-right elemnode) node + (ewoc--node-right (ewoc--node-left node)) elemnode + (ewoc--node-left node) elemnode) (ewoc--refresh-node pretty-printer elemnode dll) elemnode))) @@ -244,8 +244,8 @@ the footer and every node's printed representation. Optional fourth arg NOSEP non-nil inhibits this." (let* ((dummy-node (ewoc--node-create 'DL-LIST 'DL-LIST)) - (dll (progn (cl-setf (ewoc--node-right dummy-node) dummy-node) - (cl-setf (ewoc--node-left dummy-node) dummy-node) + (dll (progn (setf (ewoc--node-right dummy-node) dummy-node) + (setf (ewoc--node-left dummy-node) dummy-node) dummy-node)) (wrap (if nosep 'identity 'ewoc--wrap)) (new-ewoc (ewoc--create (current-buffer) @@ -258,12 +258,12 @@ ;; Set default values (unless header (setq header "")) (unless footer (setq footer "")) - (cl-setf (ewoc--node-start-marker dll) (copy-marker pos) - foot (ewoc--insert-new-node dll footer hf-pp dll) - head (ewoc--insert-new-node foot header hf-pp dll) - (ewoc--hf-pp new-ewoc) hf-pp - (ewoc--footer new-ewoc) foot - (ewoc--header new-ewoc) head)) + (setf (ewoc--node-start-marker dll) (copy-marker pos) + foot (ewoc--insert-new-node dll footer hf-pp dll) + head (ewoc--insert-new-node foot header hf-pp dll) + (ewoc--hf-pp new-ewoc) hf-pp + (ewoc--footer new-ewoc) foot + (ewoc--header new-ewoc) head)) ;; Return the ewoc new-ewoc)) @@ -274,7 +274,7 @@ (defun ewoc-set-data (node data) "Set NODE to encapsulate DATA." - (cl-setf (ewoc--node-data node) data)) + (setf (ewoc--node-data node) data)) (defun ewoc-enter-first (ewoc data) "Enter DATA first in EWOC. @@ -356,18 +356,18 @@ ;; If we are about to delete the node pointed at by last-node, ;; set last-node to nil. (when (eq last node) - (cl-setf last nil (ewoc--last-node ewoc) nil)) + (setf last nil (ewoc--last-node ewoc) nil)) (delete-region (ewoc--node-start-marker node) (ewoc--node-start-marker (ewoc--node-next dll node))) (set-marker (ewoc--node-start-marker node) nil) - (cl-setf L (ewoc--node-left node) - R (ewoc--node-right node) - ;; Link neighbors to each other. - (ewoc--node-right L) R - (ewoc--node-left R) L - ;; Forget neighbors. - (ewoc--node-left node) nil - (ewoc--node-right node) nil)))) + (setf L (ewoc--node-left node) + R (ewoc--node-right node) + ;; Link neighbors to each other. + (ewoc--node-right L) R + (ewoc--node-left R) L + ;; Forget neighbors. + (ewoc--node-left node) nil + (ewoc--node-right node) nil)))) (defun ewoc-filter (ewoc predicate &rest args) "Remove all elements in EWOC for which PREDICATE returns nil. @@ -503,7 +503,7 @@ (ewoc--set-buffer-bind-dll ewoc (goto-char (ewoc--node-start-marker node)) (if goal-column (move-to-column goal-column)) - (cl-setf (ewoc--last-node ewoc) node))) + (setf (ewoc--last-node ewoc) node))) (defun ewoc-refresh (ewoc) "Refresh all data in EWOC. @@ -564,8 +564,8 @@ ((head (ewoc--header ewoc)) (foot (ewoc--footer ewoc)) (hf-pp (ewoc--hf-pp ewoc))) - (cl-setf (ewoc--node-data head) header - (ewoc--node-data foot) footer) + (setf (ewoc--node-data head) header + (ewoc--node-data foot) footer) (save-excursion (ewoc--refresh-node hf-pp head dll) (ewoc--refresh-node hf-pp foot dll)))) === added file 'lisp/emacs-lisp/gv.el' --- lisp/emacs-lisp/gv.el 1970-01-01 00:00:00 +0000 +++ lisp/emacs-lisp/gv.el 2012-06-22 13:42:38 +0000 @@ -0,0 +1,430 @@ +;;; gv.el --- Generalized variables -*- lexical-binding: t -*- + +;; Copyright (C) 2012 Free Software Foundation, Inc. + +;; Author: Stefan Monnier +;; Keywords: extensions + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This is a re-implementation of the setf machinery using a different +;; underlying approach than the one used earlier in CL, which was based on +;; define-setf-expander. +;; `define-setf-expander' makes every "place-expander" return a 5-tuple +;; (VARS VALUES STORES GETTER SETTER) +;; where STORES is a list with a single variable (Common-Lisp allows multiple +;; variables for use with multiple-return-values, but this is rarely used and +;; not applicable to Elisp). +;; It basically says that GETTER is an expression that returns the place's +;; value, and (lambda STORES SETTER) is an expression that assigns the value(s) +;; passed to that function to the place, and that you need to wrap the whole +;; thing within a `(let* ,(zip VARS VALUES) ...). +;; +;; Instead, we use here a higher-order approach: instead +;; of a 5-tuple, a place-expander returns a function. +;; If you think about types, the old approach return things of type +;; {vars: List Var, values: List Exp, +;; stores: List Var, getter: Exp, setter: Exp} +;; whereas the new approach returns a function of type +;; (do: ((getter: Exp, setter: ((store: Exp) -> Exp)) -> Exp)) -> Exp. +;; You can get the new function from the old 5-tuple with something like: +;; (lambda (do) +;; `(let* ,(zip VARS VALUES) +;; (funcall do GETTER (lambda ,STORES ,SETTER)))) +;; You can't easily do the reverse, because this new approach is more +;; expressive than the old one, so we can't provide a backward-compatible +;; get-setf-method. +;; +;; While it may seem intimidating for people not used to higher-order +;; functions, you will quickly see that its use (especially with the +;; `gv-letplace' macro) is actually much easier and more elegant than the old +;; approach which is clunky and often leads to unreadable code. + +;; FIXME: `let!' is unsatisfactory because it does not really "restore" the +;; previous state. If the getter/setter loses information, that info is +;; not recovered. + +;; FIXME: Add to defun-declarations-alist. + +;; Food for thought: the syntax of places does not actually conflict with the +;; pcase patterns. The `cons' gv works just like a `(,a . ,b) pcase +;; pattern, and actually the `logand' gv is even closer since it should +;; arguably fail when trying to set a value outside of the mask. +;; Generally, places are used for destructors (gethash, aref, car, ...) +;; whereas pcase patterns are used for constructors (backquote, constants, +;; vectors, ...). + +;;; Code: + +(require 'macroexp) + +;; What we call a "gvar" is basically a function of type "(getter * setter -> +;; code) -> code", where "getter" is code and setter is "code -> code". + +;; (defvar gv--macro-environment nil +;; "Macro expanders for generalized variables.") + +;;;###autoload +(defun gv-get (place do) + "Build the code that applies DO to PLACE. +PLACE must be a valid generalized variable. +DO must be a function; it will be called with 2 arguments: GETTER and SETTER, +where GETTER is a (copyable) Elisp expression that returns the value of PLACE, +and SETTER is a function which returns the code to set PLACE when called +with a (not necessarily copyable) Elisp expression that returns the value to +set it to. +DO must return an Elisp expression." + (if (symbolp place) + (funcall do place (lambda (v) `(setq ,place ,v))) + (let* ((head (car place)) + (gf (get head 'gv-expander))) + (if gf (apply gf do (cdr place)) + (let ((me (macroexpand place ;FIXME: expand one step at a time! + ;; (append macroexpand-all-environment + ;; gv--macro-environment) + macroexpand-all-environment))) + (if (and (eq me place) (get head 'compiler-macro)) + ;; Expand compiler macros: this takes care of all the accessors + ;; defined via cl-defsubst, such as cXXXr and defstruct slots. + (setq me (apply (get head 'compiler-macro) place (cdr place)))) + (if (and (eq me place) (fboundp head) + (symbolp (symbol-function head))) + ;; Follow aliases. + (setq me (cons (symbol-function head) (cdr place)))) + (if (eq me place) + (error "%S is not a valid place expression" place) + (gv-get me do))))))) + +;;;###autoload +(defmacro gv-letplace (vars place &rest body) + "Build the code manipulating the generalized variable PLACE. +GETTER will be bound to a copyable expression that returns the value +of PLACE. +SETTER will be bound to a function that takes an expression V and returns +and new expression that sets PLACE to V. +BODY should return some Elisp expression E manipulating PLACE via GETTER +and SETTER. +The returned value will then be an Elisp expression that first evaluates +all the parts of PLACE that can be evaluated and then runs E. + +\(fn (GETTER SETTER) PLACE &rest BODY)" + (declare (indent 2) (debug (sexp form body))) + `(gv-get ,place (lambda ,vars ,@body))) + +;; Different ways to declare a generalized variable. +;;;###autoload +(defmacro gv-define-expander (name handler) + "Use HANDLER to handle NAME as a generalized var. +NAME is a symbol: the name of a function, macro, or special form. +HANDLER is a function which takes an argument DO followed by the same +arguments as NAME. DO is a function as defined in `gv-get'." + (declare (indent 1) (debug (sexp form))) + ;; Use eval-and-compile so the method can be used in the same file as it + ;; is defined. + ;; FIXME: Just like byte-compile-macro-environment, we should have something + ;; like byte-compile-symbolprop-environment so as to handle these things + ;; cleanly without affecting the running Emacs. + `(eval-and-compile (put ',name 'gv-expander ,handler))) + +;; (eval-and-compile +;; (defun gv--defun-declaration (name args handler) +;; (pcase handler +;; (`(lambda (,do) . ,body) +;; `(gv-define-expander ,name (lambda (,do ,@args) ,@body))) +;; ;; (`(expand ,expander) `(gv-define-expand ,name ,expander)) +;; ;; FIXME: If `setter' is a lambda, give it a name rather +;; ;; than duplicate it at each setf use. +;; (`(setter ,setter) `(gv-define-simple-setter ,name ,setter)) +;; (`(setter (,arg) . ,body) +;; `(gv-define-setter ,name (,arg ,@args) ,@body)) +;; ;; FIXME: Should we prefer gv-define-simple-setter in this case? +;; ;;((pred symbolp) `(gv-define-expander ,name #',handler)) +;; (_ (message "Unknown gv-expander declaration %S" handler) nil))) + +;; (push `(gv-expander ,#'gv--defun-declaration) defun-declarations-alist) +;; ) + +;; (defmacro gv-define-expand (name expander) +;; "Use EXPANDER to handle NAME as a generalized var. +;; NAME is a symbol: the name of a function, macro, or special form. +;; EXPANDER is a function that will be called as a macro-expander to reduce +;; uses of NAME to some other generalized variable." +;; (declare (debug (sexp form))) +;; `(eval-and-compile +;; (if (not (boundp 'gv--macro-environment)) +;; (setq gv--macro-environment nil)) +;; (push (cons ',name ,expander) gv--macro-environment))) + +(defun gv--defsetter (name setter do args &optional vars) + "Helper function used by code generated by `gv-define-setter'. +NAME is the name of the getter function. +SETTER is a function that generates the code for the setter. +NAME accept ARGS as arguments and SETTER accepts (NEWVAL . ARGS). +VARS is used internally for recursive calls." + (if (null args) + (let ((vars (nreverse vars))) + (funcall do `(,name ,@vars) (lambda (v) (apply setter v vars)))) + ;; FIXME: Often it would be OK to skip this `let', but in general, + ;; `do' may have all kinds of side-effects. + (macroexp-let2 nil v (car args) + (gv--defsetter name setter do (cdr args) (cons v vars))))) + +;;;###autoload +(defmacro gv-define-setter (name arglist &rest body) + "Define a setter method for generalized variable NAME. +This macro is an easy-to-use substitute for `gv-define-expander' that works +well for simple place forms. +Assignments of VAL to (NAME ARGS...) are expanded by binding the argument +forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must +return a Lisp form that does the assignment. +Actually, ARGLIST may be bound to temporary variables which are introduced +automatically to preserve proper execution order of the arguments. Example: + (gv-define-setter aref (v a i) `(aset ,a ,i ,v))" + (declare (indent 2) (debug (&define name sexp body))) + `(gv-define-expander ,name + (lambda (do &rest args) + (gv--defsetter ',name (lambda ,arglist ,@body) do args)))) + +;;;###autoload +(defmacro gv-define-simple-setter (name setter &optional fix-return) + "Define a simple setter method for generalized variable NAME. +This macro is an easy-to-use substitute for `gv-define-expander' that works +well for simple place forms. Assignments of VAL to (NAME ARGS...) are +turned into calls of the form (SETTER ARGS... VAL). +If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and +instead the assignment is turned into (prog1 VAL (SETTER ARGS... VAL)) +so as to preserve the semantics of `setf'." + (declare (debug (sexp (&or symbolp lambda-expr) &optional sexp))) + (let ((set-call `(cons ',setter (append args (list val))))) + `(gv-define-setter ,name (val &rest args) + ,(if fix-return `(list 'prog1 val ,set-call) set-call)))) + +;;; CL compatibility. + +(defmacro gv-define-modify-macro (name arglist func &optional doc) + (let* ((args (copy-sequence arglist)) + (rest (memq '&rest args))) + (setq args (delq '&optional (delq '&rest args))) + `(defmacro ,name (place ,@arglist) + ,doc + (gv-letplace (getter setter) place + (macroexp-let2 nil v + ,(list '\` + (append (list func ',getter) + (mapcar (lambda (arg) (list '\, arg)) args) + (if rest (list (list '\,@ (cadr rest)))))) + (funcall setter v)))))) + +(gv-define-simple-setter gv--tree-get gv--tree-set) + +;;; Typical operations on generalized variables. + +;;;###autoload +(defmacro setf (&rest args) + "Set each PLACE to the value of its VAL. +This is a generalized version of `setq'; the PLACEs may be symbolic +references such as (car x) or (aref x i), as well as plain symbols. +For example, (setf (cadr x) y) is equivalent to (setcar (cdr x) y). +The return value is the last VAL in the list. + +\(fn PLACE VAL PLACE VAL ...)" + (declare (debug (gv-place form))) + (if (and args (null (cddr args))) + (let ((place (pop args)) + (val (car args))) + (gv-letplace (_getter setter) place + (funcall setter val))) + (let ((sets nil)) + (while args (push `(setf ,(pop args) ,(pop args)) sets)) + (cons 'progn (nreverse sets))))) + +(defmacro gv-pushnew! (val place) + "Like `gv-push!' but only adds VAL if it's not yet in PLACE. +Presence is checked with `member'. +The return value is unspecified." + (declare (debug (form gv-place))) + (macroexp-let2 macroexp-copyable-p v val + (gv-letplace (getter setter) place + `(if (member ,v ,getter) nil + ,(funcall setter `(cons ,v ,getter)))))) + +(defmacro gv-inc! (place &optional val) + "Increment PLACE by VAL (default to 1)." + (declare (debug (gv-place &optional form))) + (gv-letplace (getter setter) place + (funcall setter `(+ ,getter ,(or val 1))))) + +(defmacro gv-dec! (place &optional val) + "Decrement PLACE by VAL (default to 1)." + (declare (debug (gv-place &optional form))) + (gv-letplace (getter setter) place + (funcall setter `(- ,getter ,(or val 1))))) + +;; For Edebug, the idea is to let Edebug instrument gv-places just like it does +;; for normal expressions, and then give it a gv-expander to DTRT. +;; Maybe this should really be in edebug.el rather than here. + +(put 'gv-place 'edebug-form-spec 'edebug-match-form) +;; CL did the equivalent of: +;;(gv-define-expand edebug-after (lambda (before index place) place)) + +(put 'edebug-after 'gv-expander + (lambda (do before index place) + (gv-letplace (getter setter) place + (funcall do `(edebug-after ,before ,index ,getter) + setter)))) + +;;; The common generalized variables. + +(gv-define-simple-setter aref aset) +(gv-define-simple-setter car setcar) +(gv-define-simple-setter cdr setcdr) +;; FIXME: add compiler-macros for `cXXr' instead! +(gv-define-setter caar (val x) `(setcar (car ,x) ,val)) +(gv-define-setter cadr (val x) `(setcar (cdr ,x) ,val)) +(gv-define-setter cdar (val x) `(setcdr (car ,x) ,val)) +(gv-define-setter cddr (val x) `(setcdr (cdr ,x) ,val)) +(gv-define-setter elt (store seq n) + `(if (listp ,seq) (setcar (nthcdr ,n ,seq) ,store) + (aset ,seq ,n ,store))) +(gv-define-simple-setter get put) +(gv-define-setter gethash (val k h &optional _d) `(puthash ,k ,val ,h)) + +;; (gv-define-expand nth (lambda (idx list) `(car (nthcdr ,idx ,list)))) +(put 'nth 'gv-expander + (lambda (do idx list) + (macroexp-let2 nil c `(nthcdr ,idx ,list) + (funcall do `(car ,c) (lambda (v) `(setcar ,c ,v)))))) +(gv-define-simple-setter symbol-function fset) +(gv-define-simple-setter symbol-plist setplist) +(gv-define-simple-setter symbol-value set) + +(put 'nthcdr 'gv-expander + (lambda (do n place) + (macroexp-let2 nil idx n + (gv-letplace (getter setter) place + (funcall do `(nthcdr ,idx ,getter) + (lambda (v) `(if (<= ,idx 0) ,(funcall setter v) + (setcdr (nthcdr (1- ,idx) ,getter) ,v)))))))) + +;;; Elisp-specific generalized variables. + +(gv-define-simple-setter default-value set-default) +(gv-define-simple-setter frame-parameter set-frame-parameter 'fix) +(gv-define-simple-setter terminal-parameter set-terminal-parameter) +(gv-define-simple-setter keymap-parent set-keymap-parent) +(gv-define-simple-setter match-data set-match-data 'fix) +(gv-define-simple-setter overlay-get overlay-put) +(gv-define-setter overlay-start (store ov) + `(progn (move-overlay ,ov ,store (overlay-end ,ov)) ,store)) +(gv-define-setter overlay-end (store ov) + `(progn (move-overlay ,ov (overlay-start ,ov) ,store) ,store)) +(gv-define-simple-setter process-buffer set-process-buffer) +(gv-define-simple-setter process-filter set-process-filter) +(gv-define-simple-setter process-sentinel set-process-sentinel) +(gv-define-simple-setter process-get process-put) +(gv-define-simple-setter window-buffer set-window-buffer) +(gv-define-simple-setter window-display-table set-window-display-table 'fix) +(gv-define-simple-setter window-dedicated-p set-window-dedicated-p) +(gv-define-simple-setter window-hscroll set-window-hscroll) +(gv-define-simple-setter window-parameter set-window-parameter) +(gv-define-simple-setter window-point set-window-point) +(gv-define-simple-setter window-start set-window-start) + +;;; Some occasionally handy extensions. + +;; While several of the "places" below are not terribly useful for direct use, +;; they can show up as the output of the macro expansion of reasonable places, +;; such as struct-accessors. + +(put 'progn 'gv-expander + (lambda (do &rest exps) + (let ((start (butlast exps)) + (end (car (last exps)))) + (if (null start) (gv-get end do) + `(progn ,@start ,(gv-get end do)))))) + +(let ((let-expander + (lambda (letsym) + (lambda (do bindings &rest body) + `(,letsym ,bindings + ,@(macroexp-unprogn + (gv-get (macroexp-progn body) do))))))) + (put 'let 'gv-expander (funcall let-expander 'let)) + (put 'let* 'gv-expander (funcall let-expander 'let*))) + +(put 'if 'gv-expander + (lambda (do test then &rest else) + (let ((v (make-symbol "v"))) + (if (macroexp-small-p (funcall do 'dummy (lambda (_) 'dummy))) + ;; This duplicates the `do' code, which is a problem if that + ;; code is large, but otherwise results in more efficient code. + `(if ,test ,(gv-get then do) + ,@(macroexp-unprogn (gv-get (macroexp-progn else) do))) + (macroexp-let2 nil b test + (macroexp-let2 nil + gv `(if ,b ,(gv-letplace (getter setter) then + `(cons (lambda () ,getter) + (lambda (,v) ,(funcall setter v)))) + ,(gv-letplace (getter setter) (macroexp-progn else) + `(cons (lambda () ,getter) + (lambda (,v) ,(funcall setter v))))) + (funcall do `(funcall (car ,gv)) + (lambda (v) `(funcall (cdr ,gv) ,v))))))))) + +;;; Even more debatable extensions. + +(put 'cons 'gv-expander + (lambda (do a d) + (gv-letplace (agetter asetter) a + (gv-letplace (dgetter dsetter) d + (funcall do + `(cons ,agetter ,dgetter) + (lambda (v) `(progn + ,(funcall asetter `(car ,v)) + ,(funcall dsetter `(cdr ,v))))))))) + +(put 'logand 'gv-expander + (lambda (do place &rest masks) + (gv-letplace (getter setter) place + (macroexp-let2 macroexp-copyable-p + mask (if (cdr masks) `(logand ,@masks) (car masks)) + (funcall + do `(logand ,getter ,mask) + (lambda (v) + (funcall setter + `(logior (logand ,v ,mask) + (logand ,getter (lognot ,mask)))))))))) + +;;; Vaguely related definitions that should be moved elsewhere. + +;; (defun alist-get (key alist) +;; "Get the value associated to KEY in ALIST." +;; (declare +;; (gv-expander +;; (lambda (do) +;; (macroexp-let2 macroexp-copyable-p k key +;; (gv-letplace (getter setter) alist +;; (macroexp-let2 nil p `(assoc ,k ,getter) +;; (funcall do `(cdr ,p) +;; (lambda (v) +;; `(if ,p (setcdr ,p ,v) +;; ,(funcall setter +;; `(cons (cons ,k ,v) ,getter))))))))))) +;; (cdr (assoc key alist))) + +(provide 'gv) +;;; gv.el ends here === modified file 'lisp/emacs-lisp/macroexp.el' --- lisp/emacs-lisp/macroexp.el 2012-06-15 03:20:42 +0000 +++ lisp/emacs-lisp/macroexp.el 2012-06-22 13:42:38 +0000 @@ -263,7 +263,7 @@ ((memq (car-safe then) '(if cond)) (macroexp-if `(not ,test) else then)) (t `(if ,test ,then ,else)))) -(defmacro macroexp-let² (test var exp &rest exps) +(defmacro macroexp-let2 (test var exp &rest exps) "Bind VAR to a copyable expression that returns the value of EXP. This is like `(let ((v ,EXP)) ,EXPS) except that `v' is a new generated symbol which EXPS can find in VAR. @@ -280,6 +280,27 @@ (macroexp-let* (list (list ,var ,expsym)) ,bodysym))))) +(defun macroexp--maxsize (exp size) + (cond ((< size 0) size) + ((symbolp exp) (1- size)) + ((stringp exp) (- size (/ (length exp) 16))) + ((vectorp exp) + (dotimes (i (length exp)) + (setq size (macroexp--maxsize (aref exp i) size))) + (1- size)) + ((consp exp) + ;; We could try to be more clever with quote&function, + ;; but it is difficult to do so correctly, and it's not obvious that + ;; it would be worth the effort. + (dolist (e exp) + (setq size (macroexp--maxsize e size))) + (1- size)) + (t -1))) + +(defun macroexp-small-p (exp) + "Return non-nil if EXP can be considered small." + (> (macroexp--maxsize exp 10) 0)) + (defsubst macroexp--const-symbol-p (symbol &optional any-value) "Non-nil if SYMBOL is constant. If ANY-VALUE is nil, only return non-nil if the value of the symbol is the === modified file 'lisp/emacs-lisp/pcase.el' --- lisp/emacs-lisp/pcase.el 2012-06-18 19:23:35 +0000 +++ lisp/emacs-lisp/pcase.el 2012-06-22 13:42:38 +0000 @@ -210,7 +210,7 @@ (defun pcase--expand (exp cases) ;; (message "pid=%S (pcase--expand %S ...hash=%S)" ;; (emacs-pid) exp (sxhash cases)) - (macroexp-let² macroexp-copyable-p val exp + (macroexp-let2 macroexp-copyable-p val exp (let* ((defs ()) (seen '()) (codegen @@ -617,7 +617,7 @@ ;; A upat of the form (let VAR EXP). ;; (pcase--u1 matches code ;; (cons (cons (nth 1 upat) (nth 2 upat)) vars) rest) - (macroexp-let² + (macroexp-let2 macroexp-copyable-p sym (let* ((exp (nth 2 upat)) (found (assq exp vars))) === modified file 'lisp/emacs-lisp/smie.el' --- lisp/emacs-lisp/smie.el 2012-06-10 13:28:26 +0000 +++ lisp/emacs-lisp/smie.el 2012-06-22 13:42:38 +0000 @@ -307,7 +307,7 @@ (dolist (op (cdr (assoc first-nt first-ops-table))) (unless (member op first-ops) (setq again t) - (cl-push op (cdr first-ops)))))))) + (push op (cdr first-ops)))))))) ;; Same thing for last-ops. (setq again t) (while (prog1 again (setq again nil)) @@ -318,7 +318,7 @@ (dolist (op (cdr (assoc last-nt last-ops-table))) (unless (member op last-ops) (setq again t) - (cl-push op (cdr last-ops)))))))) + (push op (cdr last-ops)))))))) ;; Now generate the 2D precedence table. (dolist (rules bnf) (dolist (rhs (cdr rules)) @@ -601,10 +601,10 @@ ;; left side of any < constraint). (dolist (x table) (unless (nth 1 x) - (cl-setf (nth 1 x) i) + (setf (nth 1 x) i) (cl-incf i)) ;See other (cl-incf i) above. (unless (nth 2 x) - (cl-setf (nth 2 x) i) + (setf (nth 2 x) i) (cl-incf i)))) ;See other (cl-incf i) above. ;; Mark closers and openers. (dolist (x (gethash :smie-open/close-alist prec2)) @@ -613,7 +613,7 @@ (`closer (cddr (assoc token table))) (`opener (cdr (assoc token table)))))) (cl-assert (numberp (car cons))) - (cl-setf (car cons) (list (car cons))))) + (setf (car cons) (list (car cons))))) (let ((ca (gethash :smie-closer-alist prec2))) (when ca (push (cons :smie-closer-alist ca) table))) ;; (smie-check-grammar table prec2 'step3) === modified file 'lisp/emacs-lisp/syntax.el' --- lisp/emacs-lisp/syntax.el 2012-06-10 13:28:26 +0000 +++ lisp/emacs-lisp/syntax.el 2012-06-22 13:42:38 +0000 @@ -513,7 +513,7 @@ nil nil ppss)) (let ((pair (cons pt-min ppss))) (if cache-pred - (cl-push pair (cdr cache-pred)) + (push pair (cdr cache-pred)) (push pair syntax-ppss-cache)))) ;; Compute the actual return value. @@ -533,7 +533,7 @@ (let ((pair (cons pos ppss))) (if cache-pred (if (> (- (caar cache-pred) pos) syntax-ppss-max-span) - (cl-push pair (cdr cache-pred)) + (push pair (cdr cache-pred)) (setcar cache-pred pair)) (if (or (null syntax-ppss-cache) (> (- (caar syntax-ppss-cache) pos) === modified file 'lisp/emacs-lisp/timer.el' --- lisp/emacs-lisp/timer.el 2012-06-10 13:28:26 +0000 +++ lisp/emacs-lisp/timer.el 2012-06-22 13:42:38 +0000 @@ -54,13 +54,13 @@ (timer--low-seconds timer) (timer--usecs timer))) -(cl-defsetf timer--time +(gv-define-simple-setter timer--time (lambda (timer time) (or (timerp timer) (error "Invalid timer")) - (cl-setf (timer--high-seconds timer) (pop time)) - (cl-setf (timer--low-seconds timer) - (if (consp time) (car time) time)) - (cl-setf (timer--usecs timer) (or (and (consp time) (consp (cdr time)) + (setf (timer--high-seconds timer) (pop time)) + (setf (timer--low-seconds timer) + (if (consp time) (car time) time)) + (setf (timer--usecs timer) (or (and (consp time) (consp (cdr time)) (cadr time)) 0)))) @@ -70,8 +70,8 @@ TIME must be in the internal format returned by, e.g., `current-time'. If optional third argument DELTA is a positive number, make the timer fire repeatedly that many seconds apart." - (cl-setf (timer--time timer) time) - (cl-setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta)) + (setf (timer--time timer) time) + (setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta)) timer) (defun timer-set-idle-time (timer secs &optional repeat) @@ -81,10 +81,10 @@ If optional third argument REPEAT is non-nil, make the timer fire each time Emacs is idle for that many seconds." (if (consp secs) - (cl-setf (timer--time timer) secs) - (cl-setf (timer--time timer) '(0 0 0)) + (setf (timer--time timer) secs) + (setf (timer--time timer) '(0 0 0)) (timer-inc-time timer secs)) - (cl-setf (timer--repeat-delay timer) repeat) + (setf (timer--repeat-delay timer) repeat) timer) (defun timer-next-integral-multiple-of-time (time secs) @@ -124,8 +124,8 @@ (defun timer-inc-time (timer secs &optional usecs) "Increment the time set in TIMER by SECS seconds and USECS microseconds. SECS may be a fraction. If USECS is omitted, that means it is zero." - (cl-setf (timer--time timer) - (timer-relative-time (timer--time timer) secs usecs))) + (setf (timer--time timer) + (timer-relative-time (timer--time timer) secs usecs))) (defun timer-set-time-with-usecs (timer time usecs &optional delta) "Set the trigger time of TIMER to TIME plus USECS. @@ -133,9 +133,9 @@ The microsecond count from TIME is ignored, and USECS is used instead. If optional fourth argument DELTA is a positive number, make the timer fire repeatedly that many seconds apart." - (cl-setf (timer--time timer) time) - (cl-setf (timer--usecs timer) usecs) - (cl-setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta)) + (setf (timer--time timer) time) + (setf (timer--usecs timer) usecs) + (setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta)) timer) (make-obsolete 'timer-set-time-with-usecs "use `timer-set-time' and `timer-inc-time' instead." @@ -145,8 +145,8 @@ "Make TIMER call FUNCTION with optional ARGS when triggering." (or (timerp timer) (error "Invalid timer")) - (cl-setf (timer--function timer) function) - (cl-setf (timer--args timer) args) + (setf (timer--function timer) function) + (setf (timer--args timer) args) timer) (defun timer--activate (timer &optional triggered-p reuse-cell idle) @@ -170,8 +170,8 @@ (cond (last (setcdr last reuse-cell)) (idle (setq timer-idle-list reuse-cell)) (t (setq timer-list reuse-cell))) - (cl-setf (timer--triggered timer) triggered-p) - (cl-setf (timer--idle-delay timer) idle) + (setf (timer--triggered timer) triggered-p) + (setf (timer--idle-delay timer) idle) nil) (error "Invalid or uninitialized timer"))) @@ -294,7 +294,7 @@ (apply (timer--function timer) (timer--args timer))) (error nil)) (if retrigger - (cl-setf (timer--triggered timer) nil))) + (setf (timer--triggered timer) nil))) (error "Bogus timer event")))) ;; This function is incompatible with the one in levents.el. === modified file 'lisp/files.el' --- lisp/files.el 2012-06-14 19:55:28 +0000 +++ lisp/files.el 2012-06-22 13:42:38 +0000 @@ -782,10 +782,10 @@ (read-file-name-internal string pred action)) ((eq (car-safe action) 'boundaries) (let ((suffix (cdr action))) - (list* 'boundaries - (length (file-name-directory string)) - (let ((x (file-name-directory suffix))) - (if x (1- (length x)) (length suffix)))))) + `(boundaries + ,(length (file-name-directory string)) + ,@(let ((x (file-name-directory suffix))) + (if x (1- (length x)) (length suffix)))))) (t (let ((names '()) ;; If we have files like "foo.el" and "foo.elc", we could load one of === modified file 'lisp/ldefs-boot.el' --- lisp/ldefs-boot.el 2012-06-10 13:20:58 +0000 +++ lisp/ldefs-boot.el 2012-06-22 13:42:38 +0000 @@ -5,7 +5,7 @@ ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best ;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" -;;;;;; "play/5x5.el" (20355 10021)) +;;;;;; "play/5x5.el" (20244 35516)) ;;; Generated autoloads from play/5x5.el (autoload '5x5 "5x5" "\ @@ -68,7 +68,7 @@ ;;;*** ;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from progmodes/ada-mode.el (autoload 'ada-add-extensions "ada-mode" "\ @@ -88,7 +88,7 @@ ;;;*** ;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/ada-stmt.el (autoload 'ada-header "ada-stmt" "\ @@ -99,7 +99,7 @@ ;;;*** ;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/ada-xref.el (autoload 'ada-find-file "ada-xref" "\ @@ -114,7 +114,7 @@ ;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log ;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name ;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from vc/add-log.el (put 'change-log-default-name 'safe-local-variable 'string-or-null-p) @@ -253,7 +253,7 @@ ;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice ;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action) -;;;;;; "advice" "emacs-lisp/advice.el" (20355 10021)) +;;;;;; "advice" "emacs-lisp/advice.el" (20290 33419)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action 'warn "\ @@ -390,7 +390,7 @@ [DOCSTRING] [INTERACTIVE-FORM] BODY...) -\(fn FUNCTION ARGS &rest BODY)" nil (quote macro)) +\(fn FUNCTION ARGS &rest BODY)" nil t) (put 'defadvice 'doc-string-elt '3) @@ -398,7 +398,7 @@ ;;;### (autoloads (align-newline-and-indent align-unhighlight-rule ;;;;;; align-highlight-rule align-current align-entire align-regexp -;;;;;; align) "align" "align.el" (20355 10021)) +;;;;;; align) "align" "align.el" (20244 35516)) ;;; Generated autoloads from align.el (autoload 'align "align" "\ @@ -489,7 +489,7 @@ ;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation ;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from allout.el (autoload 'allout-auto-activation-helper "allout" "\ @@ -566,7 +566,7 @@ (autoload 'allout-mode-p "allout" "\ Return t if `allout-mode' is active in current buffer. -\(fn)" nil (quote macro)) +\(fn)" nil t) (autoload 'allout-mode "allout" "\ Toggle Allout outline mode. @@ -850,7 +850,7 @@ ;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation ;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el" -;;;;;; (20385 23626)) +;;;;;; (20438 17064)) ;;; Generated autoloads from allout-widgets.el (let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads)))) @@ -910,7 +910,7 @@ ;;;*** ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" -;;;;;; "net/ange-ftp.el" (20373 11301)) +;;;;;; "net/ange-ftp.el" (20451 20881)) ;;; Generated autoloads from net/ange-ftp.el (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) @@ -932,7 +932,7 @@ ;;;*** ;;;### (autoloads (animate-birthday-present animate-sequence animate-string) -;;;;;; "animate" "play/animate.el" (20355 10021)) +;;;;;; "animate" "play/animate.el" (20356 35090)) ;;; Generated autoloads from play/animate.el (autoload 'animate-string "animate" "\ @@ -965,7 +965,7 @@ ;;;*** ;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) -;;;;;; "ansi-color" "ansi-color.el" (20394 17446)) +;;;;;; "ansi-color" "ansi-color.el" (20428 57510)) ;;; Generated autoloads from ansi-color.el (autoload 'ansi-color-for-comint-mode-on "ansi-color" "\ @@ -991,7 +991,7 @@ ;;;*** ;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) -;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20355 10021)) +;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20428 57510)) ;;; Generated autoloads from progmodes/antlr-mode.el (autoload 'antlr-show-makefile-rules "antlr-mode" "\ @@ -1027,7 +1027,7 @@ ;;;*** ;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from calendar/appt.el (autoload 'appt-add "appt" "\ @@ -1050,7 +1050,7 @@ ;;;### (autoloads (apropos-documentation apropos-value apropos-library ;;;;;; apropos apropos-documentation-property apropos-command apropos-variable -;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20374 32165)) +;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20373 41604)) ;;; Generated autoloads from apropos.el (autoload 'apropos-read-pattern "apropos" "\ @@ -1158,8 +1158,8 @@ ;;;*** -;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20387 -;;;;;; 44199)) +;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from arc-mode.el (autoload 'archive-mode "arc-mode" "\ @@ -1179,7 +1179,7 @@ ;;;*** -;;;### (autoloads (array-mode) "array" "array.el" (20355 10021)) +;;;### (autoloads (array-mode) "array" "array.el" (20244 35516)) ;;; Generated autoloads from array.el (autoload 'array-mode "array" "\ @@ -1250,8 +1250,8 @@ ;;;*** -;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20357 -;;;;;; 58785)) +;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20359 +;;;;;; 18671)) ;;; Generated autoloads from textmodes/artist.el (autoload 'artist-mode "artist" "\ @@ -1456,8 +1456,8 @@ ;;;*** -;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/asm-mode.el (autoload 'asm-mode "asm-mode" "\ @@ -1485,7 +1485,7 @@ ;;;*** ;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el" -;;;;;; (20381 5411)) +;;;;;; (20428 57510)) ;;; Generated autoloads from gnus/auth-source.el (defvar auth-source-cache-expiry 7200 "\ @@ -1498,7 +1498,7 @@ ;;;*** ;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1559,7 +1559,7 @@ ;;;*** ;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/autoconf.el (autoload 'autoconf-mode "autoconf" "\ @@ -1570,7 +1570,7 @@ ;;;*** ;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) -;;;;;; "autoinsert" "autoinsert.el" (20387 44199)) +;;;;;; "autoinsert" "autoinsert.el" (20412 11425)) ;;; Generated autoloads from autoinsert.el (autoload 'auto-insert "autoinsert" "\ @@ -1610,7 +1610,7 @@ ;;;### (autoloads (batch-update-autoloads update-directory-autoloads ;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" -;;;;;; (20423 17700)) +;;;;;; (20446 34252)) ;;; Generated autoloads from emacs-lisp/autoload.el (put 'generated-autoload-file 'safe-local-variable 'stringp) @@ -1661,7 +1661,7 @@ ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode ;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) -;;;;;; "autorevert" "autorevert.el" (20373 11301)) +;;;;;; "autorevert" "autorevert.el" (20373 41604)) ;;; Generated autoloads from autorevert.el (autoload 'auto-revert-mode "autorevert" "\ @@ -1750,7 +1750,7 @@ ;;;*** ;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" -;;;;;; "avoid.el" (20369 14251)) +;;;;;; "avoid.el" (20373 41604)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1791,7 +1791,7 @@ ;;;*** ;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" -;;;;;; (20369 14251)) +;;;;;; (20373 41604)) ;;; Generated autoloads from battery.el (put 'battery-mode-line-string 'risky-local-variable t) @@ -1827,7 +1827,7 @@ ;;;*** ;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) -;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20355 10021)) +;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/benchmark.el (autoload 'benchmark-run "benchmark" "\ @@ -1839,7 +1839,7 @@ garbage collections that ran, and the time taken by garbage collection. See also `benchmark-run-compiled'. -\(fn &optional REPETITIONS &rest FORMS)" nil (quote macro)) +\(fn &optional REPETITIONS &rest FORMS)" nil t) (autoload 'benchmark-run-compiled "benchmark" "\ Time execution of compiled version of FORMS. @@ -1847,7 +1847,7 @@ byte code obtained by wrapping FORMS in a `lambda' and compiling the result. The overhead of the `lambda's is accounted for. -\(fn &optional REPETITIONS &rest FORMS)" nil (quote macro)) +\(fn &optional REPETITIONS &rest FORMS)" nil t) (autoload 'benchmark "benchmark" "\ Print the time taken for REPETITIONS executions of FORM. @@ -1860,7 +1860,7 @@ ;;;*** ;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize) -;;;;;; "bibtex" "textmodes/bibtex.el" (20355 10021)) +;;;;;; "bibtex" "textmodes/bibtex.el" (20446 34252)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -1949,7 +1949,7 @@ ;;;*** ;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/bibtex-style.el (autoload 'bibtex-style-mode "bibtex-style" "\ @@ -1961,7 +1961,7 @@ ;;;### (autoloads (binhex-decode-region binhex-decode-region-external ;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from mail/binhex.el (defconst binhex-begin-line "^:...............................................................$" "\ @@ -1985,8 +1985,8 @@ ;;;*** -;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from play/blackbox.el (autoload 'blackbox "blackbox" "\ @@ -2109,7 +2109,7 @@ ;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert ;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate ;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark" -;;;;;; "bookmark.el" (20399 35365)) +;;;;;; "bookmark.el" (20412 11425)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) (define-key ctl-x-r-map "m" 'bookmark-set) @@ -2310,7 +2310,7 @@ ;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point ;;;;;; browse-url browse-url-of-region browse-url-of-dired-file ;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function) -;;;;;; "browse-url" "net/browse-url.el" (20395 3526)) +;;;;;; "browse-url" "net/browse-url.el" (20412 11425)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function 'browse-url-default-browser "\ @@ -2626,7 +2626,7 @@ ;;;*** ;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) -;;;;;; "bs" "bs.el" (20369 14251)) +;;;;;; "bs" "bs.el" (20373 41604)) ;;; Generated autoloads from bs.el (autoload 'bs-cycle-next "bs" "\ @@ -2666,7 +2666,7 @@ ;;;*** -;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20355 10021)) +;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20244 35516)) ;;; Generated autoloads from play/bubbles.el (autoload 'bubbles "bubbles" "\ @@ -2688,7 +2688,7 @@ ;;;*** ;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference" -;;;;;; "progmodes/bug-reference.el" (20355 10021)) +;;;;;; "progmodes/bug-reference.el" (20244 35516)) ;;; Generated autoloads from progmodes/bug-reference.el (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) @@ -2712,7 +2712,7 @@ ;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile ;;;;;; compile-defun byte-compile-file byte-recompile-directory ;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) -;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20423 17700)) +;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20451 21087)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (put 'byte-compile-dynamic 'safe-local-variable 'booleanp) (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) @@ -2832,8 +2832,8 @@ ;;;*** -;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from calendar/cal-china.el (put 'calendar-chinese-time-zone 'risky-local-variable t) @@ -2842,7 +2842,7 @@ ;;;*** -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20355 10021)) +;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20244 35516)) ;;; Generated autoloads from calendar/cal-dst.el (put 'calendar-daylight-savings-starts 'risky-local-variable t) @@ -2854,7 +2854,7 @@ ;;;*** ;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el" -;;;;;; (20355 10021)) +;;;;;; (20290 33419)) ;;; Generated autoloads from calendar/cal-hebrew.el (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\ @@ -2870,8 +2870,8 @@ ;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle ;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc -;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20407 -;;;;;; 29477)) +;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) @@ -2949,14 +2949,14 @@ See Info node `(calc)Defining Functions'. -\(fn FUNC ARGS &rest BODY)" nil (quote macro)) +\(fn FUNC ARGS &rest BODY)" nil t) (put 'defmath 'doc-string-elt '3) ;;;*** -;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from calc/calc-undo.el (autoload 'calc-undo "calc-undo" "\ @@ -2966,8 +2966,8 @@ ;;;*** -;;;### (autoloads (calculator) "calculator" "calculator.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (calculator) "calculator" "calculator.el" (20428 +;;;;;; 57510)) ;;; Generated autoloads from calculator.el (autoload 'calculator "calculator" "\ @@ -2978,8 +2978,8 @@ ;;;*** -;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20388 -;;;;;; 65061)) +;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20432 +;;;;;; 42254)) ;;; Generated autoloads from calendar/calendar.el (autoload 'calendar "calendar" "\ @@ -3023,7 +3023,7 @@ ;;;*** ;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" -;;;;;; "gnus/canlock.el" (20355 10021)) +;;;;;; "gnus/canlock.el" (20244 35516)) ;;; Generated autoloads from gnus/canlock.el (autoload 'canlock-insert-header "canlock" "\ @@ -3041,7 +3041,7 @@ ;;;*** ;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/cap-words.el (autoload 'capitalized-words-mode "cap-words" "\ @@ -3080,15 +3080,15 @@ ;;;*** -;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from progmodes/cc-compat.el (put 'c-indent-level 'safe-local-variable 'integerp) ;;;*** ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" -;;;;;; (20373 11301)) +;;;;;; (20373 41604)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3100,7 +3100,7 @@ ;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region ;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install -;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20355 10021)) +;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20276 3849)) ;;; Generated autoloads from progmodes/cc-guess.el (defvar c-guess-guessed-offsets-alist nil "\ @@ -3200,7 +3200,7 @@ ;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode ;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" -;;;;;; (20416 44451)) +;;;;;; (20419 46656)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -3377,7 +3377,7 @@ ;;;*** ;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" -;;;;;; "progmodes/cc-styles.el" (20355 10021)) +;;;;;; "progmodes/cc-styles.el" (20244 35516)) ;;; Generated autoloads from progmodes/cc-styles.el (autoload 'c-set-style "cc-styles" "\ @@ -3428,7 +3428,7 @@ ;;;*** -;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20355 10021)) +;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20290 33419)) ;;; Generated autoloads from progmodes/cc-vars.el (put 'c-basic-offset 'safe-local-variable 'integerp) (put 'c-backslash-column 'safe-local-variable 'integerp) @@ -3438,7 +3438,7 @@ ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program ;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from international/ccl.el (autoload 'ccl-compile "ccl" "\ @@ -3462,7 +3462,7 @@ Optional arg VECTOR is a compiled CCL code of the CCL program. -\(fn NAME &optional VECTOR)" nil (quote macro)) +\(fn NAME &optional VECTOR)" nil t) (autoload 'define-ccl-program "ccl" "\ Set NAME the compiled code of CCL-PROGRAM. @@ -3675,7 +3675,7 @@ MAP-SET := MAP-IDs | (MAP-IDs) MAP-SET MAP-ID := integer -\(fn NAME CCL-PROGRAM &optional DOC)" nil (quote macro)) +\(fn NAME CCL-PROGRAM &optional DOC)" nil t) (put 'define-ccl-program 'doc-string-elt '3) @@ -3686,7 +3686,7 @@ If CCL-PROGRAM is a vector and optional arg NAME (symbol) is supplied, register CCL-PROGRAM by name NAME, and return NAME. -\(fn CCL-PROGRAM &optional NAME)" nil (quote macro)) +\(fn CCL-PROGRAM &optional NAME)" nil t) (autoload 'ccl-execute-with-args "ccl" "\ Execute CCL-PROGRAM with registers initialized by the remaining args. @@ -3699,7 +3699,7 @@ ;;;*** ;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el" -;;;;;; (20421 62373)) +;;;;;; (20451 21087)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -3714,7 +3714,7 @@ ;;;*** ;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode) -;;;;;; "cfengine" "progmodes/cfengine.el" (20355 10021)) +;;;;;; "cfengine" "progmodes/cfengine.el" (20356 35090)) ;;; Generated autoloads from progmodes/cfengine.el (autoload 'cfengine3-mode "cfengine" "\ @@ -3744,7 +3744,7 @@ ;;;*** ;;;### (autoloads (check-declare-directory check-declare-file) "check-declare" -;;;;;; "emacs-lisp/check-declare.el" (20378 29222)) +;;;;;; "emacs-lisp/check-declare.el" (20380 26775)) ;;; Generated autoloads from emacs-lisp/check-declare.el (autoload 'check-declare-file "check-declare" "\ @@ -3769,7 +3769,7 @@ ;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer ;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive ;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p) -;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20388 65061)) +;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20412 11425)) ;;; Generated autoloads from emacs-lisp/checkdoc.el (put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp) (put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp) @@ -3965,7 +3965,7 @@ ;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer ;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util" -;;;;;; "language/china-util.el" (20355 10021)) +;;;;;; "language/china-util.el" (20244 35516)) ;;; Generated autoloads from language/china-util.el (autoload 'decode-hz-region "china-util" "\ @@ -4003,7 +4003,7 @@ ;;;*** ;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) -;;;;;; "chistory" "chistory.el" (20355 10021)) +;;;;;; "chistory" "chistory.el" (20244 35516)) ;;; Generated autoloads from chistory.el (autoload 'repeat-matching-complex-command "chistory" "\ @@ -4042,31 +4042,8 @@ ;;;*** -;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (20406 8611)) -;;; Generated autoloads from emacs-lisp/cl.el - -(defvar custom-print-functions nil "\ -This is a list of functions that format user objects for printing. -Each function is called in turn with three arguments: the object, the -stream, and the print level (currently ignored). If it is able to -print the object it returns true; otherwise it returns nil and the -printer proceeds to the next function on the list. - -This variable is not used at present, but it is defined in hopes that -a future Emacs interpreter will be able to use it.") - -(put 'defun* 'doc-string-elt 3) - -(put 'defmacro* 'doc-string-elt 3) - -(put 'defsubst 'doc-string-elt 3) - -(put 'defstruct 'doc-string-elt 2) - -;;;*** - ;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" -;;;;;; (20355 10021)) +;;;;;; (20290 33419)) ;;; Generated autoloads from emacs-lisp/cl-indent.el (autoload 'common-lisp-indent-function "cl-indent" "\ @@ -4144,8 +4121,35 @@ ;;;*** +;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20451 21087)) +;;; Generated autoloads from emacs-lisp/cl-lib.el + +(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.2") + +(defvar cl-custom-print-functions nil "\ +This is a list of functions that format user objects for printing. +Each function is called in turn with three arguments: the object, the +stream, and the print level (currently ignored). If it is able to +print the object it returns true; otherwise it returns nil and the +printer proceeds to the next function on the list. + +This variable is not used at present, but it is defined in hopes that +a future Emacs interpreter will be able to use it.") + +(autoload 'cl--defsubst-expand "cl-macs") + +(put 'cl-defun 'doc-string-elt 3) + +(put 'cl-defmacro 'doc-string-elt 3) + +(put 'cl-defsubst 'doc-string-elt 3) + +(put 'cl-defstruct 'doc-string-elt 2) + +;;;*** + ;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/cmacexp.el (autoload 'c-macro-expand "cmacexp" "\ @@ -4165,8 +4169,8 @@ ;;;*** -;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from cmuscheme.el (autoload 'run-scheme "cmuscheme" "\ @@ -4186,7 +4190,7 @@ ;;;*** -;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20355 10021)) +;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20356 19083)) ;;; Generated autoloads from color.el (autoload 'color-name-to-rgb "color" "\ @@ -4208,7 +4212,7 @@ ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list ;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command ;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" -;;;;;; (20420 41510)) +;;;;;; (20420 52684)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ @@ -4308,7 +4312,7 @@ ;;;*** ;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from vc/compare-w.el (autoload 'compare-windows "compare-w" "\ @@ -4345,8 +4349,8 @@ ;;;;;; compilation-shell-minor-mode compilation-mode compilation-start ;;;;;; compile compilation-disable-input compile-command compilation-search-path ;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook -;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20410 -;;;;;; 5673)) +;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20428 +;;;;;; 57510)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ @@ -4528,7 +4532,7 @@ ;;;*** ;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" -;;;;;; (20388 65061)) +;;;;;; (20412 11425)) ;;; Generated autoloads from completion.el (defvar dynamic-completion-mode nil "\ @@ -4553,7 +4557,7 @@ ;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode ;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode ;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/conf-mode.el (autoload 'conf-mode "conf-mode" "\ @@ -4709,7 +4713,7 @@ ;;;*** ;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) -;;;;;; "cookie1" "play/cookie1.el" (20364 27900)) +;;;;;; "cookie1" "play/cookie1.el" (20373 41604)) ;;; Generated autoloads from play/cookie1.el (autoload 'cookie "cookie1" "\ @@ -4741,8 +4745,8 @@ ;;;*** ;;;### (autoloads (copyright-update-directory copyright copyright-fix-years -;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20387 -;;;;;; 44199)) +;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from emacs-lisp/copyright.el (put 'copyright-at-end-flag 'safe-local-variable 'booleanp) (put 'copyright-names-regexp 'safe-local-variable 'stringp) @@ -4781,7 +4785,7 @@ ;;;*** ;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) -;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20355 10021)) +;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20451 20950)) ;;; Generated autoloads from progmodes/cperl-mode.el (put 'cperl-indent-level 'safe-local-variable 'integerp) (put 'cperl-brace-offset 'safe-local-variable 'integerp) @@ -4980,7 +4984,7 @@ ;;;*** ;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/cpp.el (autoload 'cpp-highlight-buffer "cpp" "\ @@ -4999,7 +5003,7 @@ ;;;*** ;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from emulation/crisp.el (defvar crisp-mode nil "\ @@ -5025,7 +5029,7 @@ ;;;*** ;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emacs-lisp/crm.el (autoload 'completing-read-multiple "crm" "\ @@ -5060,8 +5064,8 @@ ;;;*** -;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from textmodes/css-mode.el (autoload 'css-mode "css-mode" "\ @@ -5072,7 +5076,7 @@ ;;;*** ;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" -;;;;;; (20361 20134)) +;;;;;; (20434 28080)) ;;; Generated autoloads from emulation/cua-base.el (defvar cua-mode nil "\ @@ -5132,7 +5136,7 @@ ;;;;;; customize-mode customize customize-push-and-save customize-save-variable ;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically ;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically) -;;;;;; "cus-edit" "cus-edit.el" (20399 35365)) +;;;;;; "cus-edit" "cus-edit.el" (20438 17064)) ;;; Generated autoloads from cus-edit.el (defvar custom-browse-sort-alphabetically nil "\ @@ -5444,8 +5448,8 @@ ;;;*** ;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme -;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20355 -;;;;;; 10021)) +;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20336 +;;;;;; 29137)) ;;; Generated autoloads from cus-theme.el (autoload 'customize-create-theme "cus-theme" "\ @@ -5479,7 +5483,7 @@ ;;;*** ;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from vc/cvs-status.el (autoload 'cvs-status-mode "cvs-status" "\ @@ -5490,7 +5494,7 @@ ;;;*** ;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode) -;;;;;; "cwarn" "progmodes/cwarn.el" (20355 10021)) +;;;;;; "cwarn" "progmodes/cwarn.el" (20446 34252)) ;;; Generated autoloads from progmodes/cwarn.el (autoload 'cwarn-mode "cwarn" "\ @@ -5541,7 +5545,7 @@ ;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char ;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from language/cyril-util.el (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ @@ -5570,7 +5574,7 @@ ;;;*** ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" -;;;;;; (20397 45851)) +;;;;;; (20412 11425)) ;;; Generated autoloads from dabbrev.el (put 'dabbrev-case-fold-search 'risky-local-variable t) (put 'dabbrev-case-replace 'risky-local-variable t) @@ -5617,7 +5621,7 @@ ;;;*** ;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from cedet/data-debug.el (autoload 'data-debug-new-buffer "data-debug" "\ @@ -5627,8 +5631,8 @@ ;;;*** -;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20399 -;;;;;; 35365)) +;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20446 +;;;;;; 34252)) ;;; Generated autoloads from net/dbus.el (autoload 'dbus-handle-event "dbus" "\ @@ -5641,8 +5645,8 @@ ;;;*** -;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/dcl-mode.el (autoload 'dcl-mode "dcl-mode" "\ @@ -5769,7 +5773,7 @@ ;;;*** ;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" -;;;;;; "emacs-lisp/debug.el" (20355 10021)) +;;;;;; "emacs-lisp/debug.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger 'debug) @@ -5813,7 +5817,7 @@ ;;;*** ;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from play/decipher.el (autoload 'decipher "decipher" "\ @@ -5842,8 +5846,8 @@ ;;;*** ;;;### (autoloads (delimit-columns-rectangle delimit-columns-region -;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20355 -;;;;;; 10021)) +;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from delim-col.el (autoload 'delimit-columns-customize "delim-col" "\ @@ -5867,8 +5871,8 @@ ;;;*** -;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/delphi.el (autoload 'delphi-mode "delphi" "\ @@ -5919,8 +5923,8 @@ ;;;*** -;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from delsel.el (defalias 'pending-delete-mode 'delete-selection-mode) @@ -5950,7 +5954,7 @@ ;;;*** ;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) -;;;;;; "derived" "emacs-lisp/derived.el" (20355 10021)) +;;;;;; "derived" "emacs-lisp/derived.el" (20438 17064)) ;;; Generated autoloads from emacs-lisp/derived.el (autoload 'define-derived-mode "derived" "\ @@ -6002,7 +6006,7 @@ See Info node `(elisp)Derived Modes' for more details. -\(fn CHILD PARENT NAME &optional DOCSTRING &rest BODY)" nil (quote macro)) +\(fn CHILD PARENT NAME &optional DOCSTRING &rest BODY)" nil t) (put 'define-derived-mode 'doc-string-elt '4) @@ -6017,7 +6021,7 @@ ;;;*** ;;;### (autoloads (describe-char describe-text-properties) "descr-text" -;;;;;; "descr-text.el" (20369 14251)) +;;;;;; "descr-text.el" (20434 28080)) ;;; Generated autoloads from descr-text.el (autoload 'describe-text-properties "descr-text" "\ @@ -6054,7 +6058,7 @@ ;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir ;;;;;; desktop-load-default desktop-read desktop-remove desktop-save ;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" -;;;;;; "desktop.el" (20423 17700)) +;;;;;; "desktop.el" (20451 20881)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6241,7 +6245,7 @@ ;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article ;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines) -;;;;;; "deuglify" "gnus/deuglify.el" (20355 10021)) +;;;;;; "deuglify" "gnus/deuglify.el" (20244 35516)) ;;; Generated autoloads from gnus/deuglify.el (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\ @@ -6274,7 +6278,7 @@ ;;;*** ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" -;;;;;; "calendar/diary-lib.el" (20355 10021)) +;;;;;; "calendar/diary-lib.el" (20290 33419)) ;;; Generated autoloads from calendar/diary-lib.el (autoload 'diary "diary-lib" "\ @@ -6317,7 +6321,7 @@ ;;;*** ;;;### (autoloads (diff-buffer-with-file diff-backup diff diff-command -;;;;;; diff-switches) "diff" "vc/diff.el" (20379 50083)) +;;;;;; diff-switches) "diff" "vc/diff.el" (20380 26775)) ;;; Generated autoloads from vc/diff.el (defvar diff-switches (purecopy "-c") "\ @@ -6361,7 +6365,7 @@ ;;;*** ;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el" -;;;;;; (20415 23587)) +;;;;;; (20415 57974)) ;;; Generated autoloads from vc/diff-mode.el (autoload 'diff-mode "diff-mode" "\ @@ -6393,7 +6397,7 @@ ;;;*** -;;;### (autoloads (dig) "dig" "net/dig.el" (20355 10021)) +;;;### (autoloads (dig) "dig" "net/dig.el" (20244 35516)) ;;; Generated autoloads from net/dig.el (autoload 'dig "dig" "\ @@ -6405,7 +6409,7 @@ ;;;*** ;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window -;;;;;; dired dired-listing-switches) "dired" "dired.el" (20399 35754)) +;;;;;; dired dired-listing-switches) "dired" "dired.el" (20428 57510)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -6527,7 +6531,7 @@ ;;;*** ;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from dirtrack.el (autoload 'dirtrack-mode "dirtrack" "\ @@ -6557,8 +6561,8 @@ ;;;*** -;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20432 +;;;;;; 64735)) ;;; Generated autoloads from emacs-lisp/disass.el (autoload 'disassemble "disass" "\ @@ -6577,7 +6581,7 @@ ;;;;;; standard-display-g1 standard-display-ascii standard-display-default ;;;;;; standard-display-8bit describe-current-display-table describe-display-table ;;;;;; set-display-table-slot display-table-slot make-display-table) -;;;;;; "disp-table" "disp-table.el" (20355 10021)) +;;;;;; "disp-table" "disp-table.el" (20244 35516)) ;;; Generated autoloads from disp-table.el (autoload 'make-display-table "disp-table" "\ @@ -6699,7 +6703,7 @@ ;;;*** ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from play/dissociate.el (autoload 'dissociated-press "dissociate" "\ @@ -6715,7 +6719,7 @@ ;;;*** -;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20355 10021)) +;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20244 35516)) ;;; Generated autoloads from dnd.el (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\ @@ -6736,7 +6740,7 @@ ;;;*** ;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" -;;;;;; "textmodes/dns-mode.el" (20355 10021)) +;;;;;; "textmodes/dns-mode.el" (20244 35516)) ;;; Generated autoloads from textmodes/dns-mode.el (autoload 'dns-mode "dns-mode" "\ @@ -6760,8 +6764,8 @@ ;;;*** ;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe -;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20378 -;;;;;; 29222)) +;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20377 +;;;;;; 36640)) ;;; Generated autoloads from doc-view.el (autoload 'doc-view-mode-p "doc-view" "\ @@ -6807,7 +6811,7 @@ ;;;*** -;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20355 10021)) +;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20446 34252)) ;;; Generated autoloads from play/doctor.el (autoload 'doctor "doctor" "\ @@ -6817,7 +6821,7 @@ ;;;*** -;;;### (autoloads (double-mode) "double" "double.el" (20355 10021)) +;;;### (autoloads (double-mode) "double" "double.el" (20244 35516)) ;;; Generated autoloads from double.el (autoload 'double-mode "double" "\ @@ -6833,7 +6837,7 @@ ;;;*** -;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20355 10021)) +;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20244 35516)) ;;; Generated autoloads from play/dunnet.el (autoload 'dunnet "dunnet" "\ @@ -6845,7 +6849,7 @@ ;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap ;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode" -;;;;;; "emacs-lisp/easy-mmode.el" (20423 17700)) +;;;;;; "emacs-lisp/easy-mmode.el" (20438 17064)) ;;; Generated autoloads from emacs-lisp/easy-mmode.el (defalias 'easy-mmode-define-minor-mode 'define-minor-mode) @@ -6865,7 +6869,7 @@ function adds a basic doc-string stating these facts. Optional INIT-VALUE is the initial value of the mode's variable. -Optional LIGHTER is displayed in the modeline when the mode is on. +Optional LIGHTER is displayed in the mode line when the mode is on. Optional KEYMAP is the default keymap bound to the mode keymap. If non-nil, it should be a variable name (whose value is a keymap), or an expression that returns either a keymap or a list of @@ -6975,8 +6979,8 @@ ;;;*** ;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define -;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20355 -;;;;;; 10021)) +;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20438 +;;;;;; 17064)) ;;; Generated autoloads from emacs-lisp/easymenu.el (autoload 'easy-menu-define "easymenu" "\ @@ -7085,7 +7089,7 @@ A menu item can be a list with the same format as MENU. This is a submenu. -\(fn SYMBOL MAPS DOC MENU)" nil (quote macro)) +\(fn SYMBOL MAPS DOC MENU)" nil t) (put 'easy-menu-define 'lisp-indent-function 'defun) @@ -7130,7 +7134,7 @@ ;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer ;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" -;;;;;; "progmodes/ebnf2ps.el" (20373 11301)) +;;;;;; "progmodes/ebnf2ps.el" (20373 41604)) ;;; Generated autoloads from progmodes/ebnf2ps.el (autoload 'ebnf-customize "ebnf2ps" "\ @@ -7398,14 +7402,13 @@ ;;;;;; ebrowse-electric-position-menu ebrowse-forward-in-position-stack ;;;;;; ebrowse-back-in-position-stack ebrowse-tags-search-member-use ;;;;;; ebrowse-tags-query-replace ebrowse-tags-search ebrowse-tags-loop-continue -;;;;;; ebrowse-tags-complete-symbol ebrowse-tags-find-definition-other-frame -;;;;;; ebrowse-tags-view-definition-other-frame ebrowse-tags-find-declaration-other-frame -;;;;;; ebrowse-tags-find-definition-other-window ebrowse-tags-view-definition-other-window -;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition -;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration -;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree -;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20355 -;;;;;; 10021)) +;;;;;; ebrowse-tags-find-definition-other-frame ebrowse-tags-view-definition-other-frame +;;;;;; ebrowse-tags-find-declaration-other-frame ebrowse-tags-find-definition-other-window +;;;;;; ebrowse-tags-view-definition-other-window ebrowse-tags-find-declaration-other-window +;;;;;; ebrowse-tags-find-definition ebrowse-tags-view-definition +;;;;;; ebrowse-tags-find-declaration ebrowse-tags-view-declaration +;;;;;; ebrowse-member-mode ebrowse-electric-choose-tree ebrowse-tree-mode) +;;;;;; "ebrowse" "progmodes/ebrowse.el" (20434 28080)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload 'ebrowse-tree-mode "ebrowse" "\ @@ -7480,14 +7483,6 @@ \(fn)" t nil) -(autoload 'ebrowse-tags-complete-symbol "ebrowse" "\ -Perform completion on the C++ symbol preceding point. -A second call of this function without changing point inserts the next match. -A call with prefix PREFIX reads the symbol to insert from the minibuffer with -completion. - -\(fn PREFIX)" t nil) - (autoload 'ebrowse-tags-loop-continue "ebrowse" "\ Repeat last operation on files in tree. FIRST-TIME non-nil means this is not a repetition, but the first time. @@ -7554,7 +7549,7 @@ ;;;*** ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" -;;;;;; (20400 56227)) +;;;;;; (20438 17064)) ;;; Generated autoloads from ebuff-menu.el (autoload 'electric-buffer-list "ebuff-menu" "\ @@ -7587,7 +7582,7 @@ ;;;*** ;;;### (autoloads (Electric-command-history-redo-expression) "echistory" -;;;;;; "echistory.el" (20355 10021)) +;;;;;; "echistory.el" (20244 35516)) ;;; Generated autoloads from echistory.el (autoload 'Electric-command-history-redo-expression "echistory" "\ @@ -7599,7 +7594,7 @@ ;;;*** ;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/ecomplete.el (autoload 'ecomplete-setup "ecomplete" "\ @@ -7609,7 +7604,7 @@ ;;;*** -;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20355 10021)) +;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20244 35516)) ;;; Generated autoloads from cedet/ede.el (defvar global-ede-mode nil "\ @@ -7636,7 +7631,7 @@ ;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form ;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" -;;;;;; "emacs-lisp/edebug.el" (20417 65331)) +;;;;;; "emacs-lisp/edebug.el" (20446 34252)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -7709,7 +7704,7 @@ ;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories ;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories ;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file -;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20373 11301)) +;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20373 41604)) ;;; Generated autoloads from vc/ediff.el (autoload 'ediff-files "ediff" "\ @@ -7941,7 +7936,7 @@ ;;;*** ;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from vc/ediff-help.el (autoload 'ediff-customize "ediff-help" "\ @@ -7952,7 +7947,7 @@ ;;;*** ;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from vc/ediff-mult.el (autoload 'ediff-show-registry "ediff-mult" "\ @@ -7965,7 +7960,7 @@ ;;;*** ;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) -;;;;;; "ediff-util" "vc/ediff-util.el" (20355 10021)) +;;;;;; "ediff-util" "vc/ediff-util.el" (20318 5885)) ;;; Generated autoloads from vc/ediff-util.el (autoload 'ediff-toggle-multiframe "ediff-util" "\ @@ -7986,7 +7981,7 @@ ;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro ;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" -;;;;;; (20355 10021)) +;;;;;; (20438 17064)) ;;; Generated autoloads from edmacro.el (autoload 'edit-kbd-macro "edmacro" "\ @@ -8035,7 +8030,7 @@ ;;;*** ;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" -;;;;;; "emulation/edt.el" (20355 10021)) +;;;;;; "emulation/edt.el" (20448 36271)) ;;; Generated autoloads from emulation/edt.el (autoload 'edt-set-scroll-margins "edt" "\ @@ -8053,7 +8048,7 @@ ;;;*** ;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from ehelp.el (autoload 'with-electric-help "ehelp" "\ @@ -8090,7 +8085,7 @@ ;;;*** ;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) -;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20355 10021)) +;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/eldoc.el (defvar eldoc-minor-mode-string (purecopy " ElDoc") "\ @@ -8137,7 +8132,7 @@ ;;;*** ;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode) -;;;;;; "electric" "electric.el" (20369 14251)) +;;;;;; "electric" "electric.el" (20373 41604)) ;;; Generated autoloads from electric.el (defvar electric-indent-chars '(10) "\ @@ -8207,8 +8202,8 @@ ;;;*** -;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from elide-head.el (autoload 'elide-head "elide-head" "\ @@ -8225,7 +8220,7 @@ ;;;### (autoloads (elint-initialize elint-defun elint-current-buffer ;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el" -;;;;;; (20421 62373)) +;;;;;; (20423 37562)) ;;; Generated autoloads from emacs-lisp/elint.el (autoload 'elint-file "elint" "\ @@ -8261,8 +8256,8 @@ ;;;*** ;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list -;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20355 -;;;;;; 10021)) +;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from emacs-lisp/elp.el (autoload 'elp-instrument-function "elp" "\ @@ -8297,7 +8292,7 @@ ;;;*** ;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from emacs-lock.el (autoload 'emacs-lock-mode "emacs-lock" "\ @@ -8325,7 +8320,7 @@ ;;;*** ;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug) -;;;;;; "emacsbug" "mail/emacsbug.el" (20411 26532)) +;;;;;; "emacsbug" "mail/emacsbug.el" (20432 42254)) ;;; Generated autoloads from mail/emacsbug.el (autoload 'report-emacs-bug "emacsbug" "\ @@ -8346,7 +8341,7 @@ ;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote ;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor ;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge" -;;;;;; "vc/emerge.el" (20355 10021)) +;;;;;; "vc/emerge.el" (20356 35090)) ;;; Generated autoloads from vc/emerge.el (autoload 'emerge-files "emerge" "\ @@ -8407,7 +8402,7 @@ ;;;*** ;;;### (autoloads (enriched-decode enriched-encode enriched-mode) -;;;;;; "enriched" "textmodes/enriched.el" (20355 10021)) +;;;;;; "enriched" "textmodes/enriched.el" (20276 3849)) ;;; Generated autoloads from textmodes/enriched.el (autoload 'enriched-mode "enriched" "\ @@ -8447,8 +8442,8 @@ ;;;;;; epa-sign-region epa-verify-cleartext-in-region epa-verify-region ;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file ;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys -;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20355 -;;;;;; 10021)) +;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20434 +;;;;;; 28080)) ;;; Generated autoloads from epa.el (autoload 'epa-list-keys "epa" "\ @@ -8626,7 +8621,7 @@ ;;;*** ;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify -;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20355 10021)) +;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20244 35516)) ;;; Generated autoloads from epa-dired.el (autoload 'epa-dired-do-decrypt "epa-dired" "\ @@ -8652,7 +8647,7 @@ ;;;*** ;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler) -;;;;;; "epa-file" "epa-file.el" (20355 10021)) +;;;;;; "epa-file" "epa-file.el" (20244 35516)) ;;; Generated autoloads from epa-file.el (autoload 'epa-file-handler "epa-file" "\ @@ -8674,7 +8669,7 @@ ;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt ;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode) -;;;;;; "epa-mail" "epa-mail.el" (20355 10021)) +;;;;;; "epa-mail" "epa-mail.el" (20318 5885)) ;;; Generated autoloads from epa-mail.el (autoload 'epa-mail-mode "epa-mail" "\ @@ -8744,7 +8739,7 @@ ;;;*** -;;;### (autoloads (epg-make-context) "epg" "epg.el" (20355 10021)) +;;;### (autoloads (epg-make-context) "epg" "epg.el" (20244 35516)) ;;; Generated autoloads from epg.el (autoload 'epg-make-context "epg" "\ @@ -8755,7 +8750,7 @@ ;;;*** ;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration) -;;;;;; "epg-config" "epg-config.el" (20373 11301)) +;;;;;; "epg-config" "epg-config.el" (20373 41604)) ;;; Generated autoloads from epg-config.el (autoload 'epg-configuration "epg-config" "\ @@ -8775,8 +8770,8 @@ ;;;*** -;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) -;;;;;; "erc" "erc/erc.el" (20356 2211)) +;;;### (autoloads (erc-handle-irc-url erc-tls erc-select-read-args) +;;;;;; "erc" "erc/erc.el" (20446 34252)) ;;; Generated autoloads from erc/erc.el (autoload 'erc-select-read-args "erc" "\ @@ -8784,29 +8779,6 @@ \(fn)" nil nil) -(autoload 'erc "erc" "\ -ERC is a powerful, modular, and extensible IRC client. -This function is the main entry point for ERC. - -It permits you to select connection parameters, and then starts ERC. - -Non-interactively, it takes the keyword arguments - (server (erc-compute-server)) - (port (erc-compute-port)) - (nick (erc-compute-nick)) - password - (full-name (erc-compute-full-name))) - -That is, if called with - - (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\") - -then the server and full-name will be set to those values, whereas -`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will -be invoked for the values of the other parameters. - -\(fn &key (server (erc-compute-server)) (port (erc-compute-port)) (nick (erc-compute-nick)) PASSWORD (full-name (erc-compute-full-name)))" t nil) - (defalias 'erc-select 'erc) (autoload 'erc-tls "erc" "\ @@ -8824,33 +8796,33 @@ ;;;*** -;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from erc/erc-autoaway.el (autoload 'erc-autoaway-mode "erc-autoaway") ;;;*** -;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20355 10021)) +;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20434 28080)) ;;; Generated autoloads from erc/erc-button.el (autoload 'erc-button-mode "erc-button" nil t) ;;;*** -;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20355 10021)) +;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20244 35516)) ;;; Generated autoloads from erc/erc-capab.el (autoload 'erc-capab-identify-mode "erc-capab" nil t) ;;;*** -;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20355 10021)) +;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20318 5885)) ;;; Generated autoloads from erc/erc-compat.el (autoload 'erc-define-minor-mode "erc-compat") ;;;*** ;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) -;;;;;; "erc-dcc" "erc/erc-dcc.el" (20402 11562)) +;;;;;; "erc-dcc" "erc/erc-dcc.el" (20446 34252)) ;;; Generated autoloads from erc/erc-dcc.el (autoload 'erc-dcc-mode "erc-dcc") @@ -8868,7 +8840,7 @@ \(fn)" nil nil) (defvar erc-ctcp-query-DCC-hook '(erc-ctcp-query-DCC) "\ -Hook variable for CTCP DCC queries") +Hook variable for CTCP DCC queries.") (autoload 'erc-ctcp-query-DCC "erc-dcc" "\ The function called when a CTCP DCC request is detected by the client. @@ -8883,7 +8855,7 @@ ;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list ;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action ;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from erc/erc-ezbounce.el (autoload 'erc-cmd-ezb "erc-ezbounce" "\ @@ -8945,8 +8917,8 @@ ;;;*** -;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from erc/erc-fill.el (autoload 'erc-fill-mode "erc-fill" nil t) @@ -8959,7 +8931,7 @@ ;;;*** ;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" -;;;;;; "erc/erc-identd.el" (20355 10021)) +;;;;;; "erc/erc-identd.el" (20244 35516)) ;;; Generated autoloads from erc/erc-identd.el (autoload 'erc-identd-mode "erc-identd") @@ -8981,7 +8953,7 @@ ;;;*** ;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from erc/erc-imenu.el (autoload 'erc-create-imenu-index "erc-imenu" "\ @@ -8991,20 +8963,20 @@ ;;;*** -;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20356 2211)) +;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20356 35090)) ;;; Generated autoloads from erc/erc-join.el (autoload 'erc-autojoin-mode "erc-join" nil t) ;;;*** -;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20355 10021)) +;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20244 35516)) ;;; Generated autoloads from erc/erc-list.el (autoload 'erc-list-mode "erc-list") ;;;*** ;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" -;;;;;; "erc/erc-log.el" (20355 10021)) +;;;;;; "erc/erc-log.el" (20356 35090)) ;;; Generated autoloads from erc/erc-log.el (autoload 'erc-log-mode "erc-log" nil t) @@ -9036,7 +9008,7 @@ ;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host ;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool ;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" -;;;;;; (20355 10021)) +;;;;;; (20434 28080)) ;;; Generated autoloads from erc/erc-match.el (autoload 'erc-match-mode "erc-match") @@ -9082,14 +9054,14 @@ ;;;*** -;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20355 10021)) +;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20244 35516)) ;;; Generated autoloads from erc/erc-menu.el (autoload 'erc-menu-mode "erc-menu" nil t) ;;;*** ;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from erc/erc-netsplit.el (autoload 'erc-netsplit-mode "erc-netsplit") @@ -9101,7 +9073,7 @@ ;;;*** ;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" -;;;;;; "erc/erc-networks.el" (20355 10021)) +;;;;;; "erc/erc-networks.el" (20244 35516)) ;;; Generated autoloads from erc/erc-networks.el (autoload 'erc-determine-network "erc-networks" "\ @@ -9119,7 +9091,7 @@ ;;;*** ;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" -;;;;;; "erc/erc-notify.el" (20355 10021)) +;;;;;; "erc/erc-notify.el" (20356 35090)) ;;; Generated autoloads from erc/erc-notify.el (autoload 'erc-notify-mode "erc-notify" nil t) @@ -9137,33 +9109,33 @@ ;;;*** -;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20355 10021)) +;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20244 35516)) ;;; Generated autoloads from erc/erc-page.el (autoload 'erc-page-mode "erc-page") ;;;*** -;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from erc/erc-pcomplete.el (autoload 'erc-completion-mode "erc-pcomplete" nil t) ;;;*** -;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20355 10021)) +;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20244 35516)) ;;; Generated autoloads from erc/erc-replace.el (autoload 'erc-replace-mode "erc-replace") ;;;*** -;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20355 10021)) +;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20244 35516)) ;;; Generated autoloads from erc/erc-ring.el (autoload 'erc-ring-mode "erc-ring" nil t) ;;;*** ;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) -;;;;;; "erc-services" "erc/erc-services.el" (20357 58785)) +;;;;;; "erc-services" "erc/erc-services.el" (20359 18671)) ;;; Generated autoloads from erc/erc-services.el (autoload 'erc-services-mode "erc-services" nil t) @@ -9180,14 +9152,14 @@ ;;;*** -;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20355 10021)) +;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20356 35090)) ;;; Generated autoloads from erc/erc-sound.el (autoload 'erc-sound-mode "erc-sound") ;;;*** ;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from erc/erc-speedbar.el (autoload 'erc-speedbar-browser "erc-speedbar" "\ @@ -9198,21 +9170,21 @@ ;;;*** -;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from erc/erc-spelling.el (autoload 'erc-spelling-mode "erc-spelling" nil t) ;;;*** -;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20355 10021)) +;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20434 28080)) ;;; Generated autoloads from erc/erc-stamp.el (autoload 'erc-timestamp-mode "erc-stamp" nil t) ;;;*** ;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from erc/erc-track.el (defvar erc-track-minor-mode nil "\ @@ -9238,7 +9210,7 @@ ;;;*** ;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size) -;;;;;; "erc-truncate" "erc/erc-truncate.el" (20355 10021)) +;;;;;; "erc-truncate" "erc/erc-truncate.el" (20356 35090)) ;;; Generated autoloads from erc/erc-truncate.el (autoload 'erc-truncate-mode "erc-truncate" nil t) @@ -9258,7 +9230,7 @@ ;;;*** ;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from erc/erc-xdcc.el (autoload 'erc-xdcc-mode "erc-xdcc") @@ -9270,31 +9242,10 @@ ;;;*** ;;;### (autoloads (ert-describe-test ert-run-tests-interactively -;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest) -;;;;;; "ert" "emacs-lisp/ert.el" (20355 10021)) +;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch) "ert" "emacs-lisp/ert.el" +;;;;;; (20356 35090)) ;;; Generated autoloads from emacs-lisp/ert.el -(autoload 'ert-deftest "ert" "\ -Define NAME (a symbol) as a test. - -BODY is evaluated as a `progn' when the test is run. It should -signal a condition on failure or just return if the test passes. - -`should', `should-not' and `should-error' are useful for -assertions in BODY. - -Use `ert' to run tests interactively. - -Tests that are expected to fail can be marked as such -using :expected-result. See `ert-test-result-type-p' for a -description of valid values for RESULT-TYPE. - -\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] BODY...)" nil (quote macro)) - -(put 'ert-deftest 'lisp-indent-function '2) - -(put 'ert-deftest 'doc-string-elt '3) - (put 'ert-deftest 'lisp-indent-function 2) (put 'ert-info 'lisp-indent-function 1) @@ -9341,7 +9292,7 @@ ;;;*** ;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el" -;;;;;; (20364 28960)) +;;;;;; (20373 41604)) ;;; Generated autoloads from emacs-lisp/ert-x.el (put 'ert-with-test-buffer 'lisp-indent-function 1) @@ -9353,8 +9304,8 @@ ;;;*** -;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20428 +;;;;;; 57510)) ;;; Generated autoloads from eshell/esh-mode.el (autoload 'eshell-mode "esh-mode" "\ @@ -9367,7 +9318,7 @@ ;;;*** ;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell" -;;;;;; "eshell/eshell.el" (20373 11301)) +;;;;;; "eshell/eshell.el" (20373 41604)) ;;; Generated autoloads from eshell/eshell.el (autoload 'eshell "eshell" "\ @@ -9408,7 +9359,7 @@ ;;;;;; visit-tags-table tags-table-mode find-tag-default-function ;;;;;; find-tag-hook tags-add-tables tags-compression-info-list ;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" -;;;;;; (20388 65061)) +;;;;;; (20412 11425)) ;;; Generated autoloads from progmodes/etags.el (defvar tags-file-name nil "\ @@ -9726,7 +9677,7 @@ ;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer ;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer ;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from language/ethio-util.el (autoload 'setup-ethiopic-environment-internal "ethio-util" "\ @@ -9896,7 +9847,7 @@ ;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline ;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from net/eudc.el (autoload 'eudc-set-server "eudc" "\ @@ -9952,7 +9903,7 @@ ;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline ;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) -;;;;;; "eudc-bob" "net/eudc-bob.el" (20355 10021)) +;;;;;; "eudc-bob" "net/eudc-bob.el" (20244 35516)) ;;; Generated autoloads from net/eudc-bob.el (autoload 'eudc-display-generic-binary "eudc-bob" "\ @@ -9988,7 +9939,7 @@ ;;;*** ;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) -;;;;;; "eudc-export" "net/eudc-export.el" (20355 10021)) +;;;;;; "eudc-export" "net/eudc-export.el" (20244 35516)) ;;; Generated autoloads from net/eudc-export.el (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\ @@ -10005,7 +9956,7 @@ ;;;*** ;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload 'eudc-edit-hotlist "eudc-hotlist" "\ @@ -10015,8 +9966,8 @@ ;;;*** -;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20378 -;;;;;; 29222)) +;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20451 +;;;;;; 21087)) ;;; Generated autoloads from emacs-lisp/ewoc.el (autoload 'ewoc-create "ewoc" "\ @@ -10045,7 +9996,7 @@ ;;;### (autoloads (executable-make-buffer-file-executable-if-script-p ;;;;;; executable-self-display executable-set-magic executable-interpret ;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/executable.el (autoload 'executable-command-find-posix-p "executable" "\ @@ -10088,7 +10039,7 @@ ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot ;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from expand.el (autoload 'expand-add-abbrevs "expand" "\ @@ -10137,7 +10088,7 @@ ;;;*** -;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20388 65061)) +;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20412 11425)) ;;; Generated autoloads from progmodes/f90.el (autoload 'f90-mode "f90" "\ @@ -10207,8 +10158,8 @@ ;;;### (autoloads (variable-pitch-mode buffer-face-toggle buffer-face-set ;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase ;;;;;; text-scale-set face-remap-set-base face-remap-reset-base -;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20388 -;;;;;; 65061)) +;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20446 +;;;;;; 34252)) ;;; Generated autoloads from face-remap.el (autoload 'face-remap-add-relative "face-remap" "\ @@ -10216,14 +10167,19 @@ Return a cookie which can be used to delete this remapping with `face-remap-remove-relative'. -The remaining arguments, SPECS, should be either a list of face -names, or a property list of face attribute/value pairs. The -remapping specified by SPECS takes effect alongside the -remappings from other calls to `face-remap-add-relative', as well -as the normal definition of FACE (at lowest priority). This -function tries to sort multiple remappings for the same face, so -that remappings specifying relative face attributes are applied -after remappings specifying absolute face attributes. +The remaining arguments, SPECS, should form a list of faces. +Each list element should be either a face name or a property list +of face attribute/value pairs. If more than one face is listed, +that specifies an aggregate face, in the same way as in a `face' +text property, except for possible priority changes noted below. + +The face remapping specified by SPECS takes effect alongside the +remappings from other calls to `face-remap-add-relative' for the +same FACE, as well as the normal definition of FACE (at lowest +priority). This function tries to sort multiple remappings for +the same face, so that remappings specifying relative face +attributes are applied after remappings specifying absolute face +attributes. The base (lowest priority) remapping may be set to something other than the normal definition of FACE via `face-remap-set-base'. @@ -10240,9 +10196,11 @@ (autoload 'face-remap-set-base "face-remap" "\ Set the base remapping of FACE in the current buffer to SPECS. This causes the remappings specified by `face-remap-add-relative' -to apply on top of the face specification given by SPECS. SPECS -should be either a list of face names, or a property list of face -attribute/value pairs. +to apply on top of the face specification given by SPECS. + +The remaining arguments, SPECS, should form a list of faces. +Each list element should be either a face name or a property list +of face attribute/value pairs, like in a `face' text property. If SPECS is empty, call `face-remap-reset-base' to use the normal definition of FACE as the base remapping; note that this is @@ -10321,19 +10279,23 @@ (autoload 'buffer-face-set "face-remap" "\ Enable `buffer-face-mode', using face specs SPECS. -SPECS can be any value suitable for the `face' text property, -including a face name, a list of face names, or a face-attribute -If SPECS is nil, then `buffer-face-mode' is disabled. +Each argument in SPECS should be a face, i.e. either a face name +or a property list of face attributes and values. If more than +one face is listed, that specifies an aggregate face, like in a +`face' text property. If SPECS is nil or omitted, disable +`buffer-face-mode'. -This function will make the variable `buffer-face-mode-face' -buffer local, and set it to FACE. +This function makes the variable `buffer-face-mode-face' buffer +local, and sets it to FACE. \(fn &rest SPECS)" t nil) (autoload 'buffer-face-toggle "face-remap" "\ Toggle `buffer-face-mode', using face specs SPECS. -SPECS can be any value suitable for the `face' text property, -including a face name, a list of face names, or a face-attribute +Each argument in SPECS should be a face, i.e. either a face name +or a property list of face attributes and values. If more than +one face is listed, that specifies an aggregate face, like in a +`face' text property. If `buffer-face-mode' is already enabled, and is currently using the face specs SPECS, then it is disabled; if buffer-face-mode is @@ -10356,7 +10318,7 @@ ;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue ;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts -;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20387 44199)) +;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20412 11425)) ;;; Generated autoloads from mail/feedmail.el (autoload 'feedmail-send-it "feedmail" "\ @@ -10411,7 +10373,7 @@ ;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point ;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap" -;;;;;; "ffap.el" (20395 38306)) +;;;;;; "ffap.el" (20412 11425)) ;;; Generated autoloads from ffap.el (autoload 'ffap-next "ffap" "\ @@ -10477,7 +10439,7 @@ ;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively ;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find ;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory) -;;;;;; "filecache" "filecache.el" (20355 10021)) +;;;;;; "filecache" "filecache.el" (20244 35516)) ;;; Generated autoloads from filecache.el (autoload 'file-cache-add-directory "filecache" "\ @@ -10537,7 +10499,7 @@ ;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable ;;;;;; add-dir-local-variable delete-file-local-variable-prop-line ;;;;;; add-file-local-variable-prop-line delete-file-local-variable -;;;;;; add-file-local-variable) "files-x" "files-x.el" (20355 10021)) +;;;;;; add-file-local-variable) "files-x" "files-x.el" (20356 35090)) ;;; Generated autoloads from files-x.el (autoload 'add-file-local-variable "files-x" "\ @@ -10602,8 +10564,8 @@ ;;;*** -;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20318 +;;;;;; 5885)) ;;; Generated autoloads from filesets.el (autoload 'filesets-init "filesets" "\ @@ -10614,7 +10576,7 @@ ;;;*** -;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20355 10021)) +;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20244 35516)) ;;; Generated autoloads from find-cmd.el (autoload 'find-cmd "find-cmd" "\ @@ -10634,7 +10596,7 @@ ;;;*** ;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" -;;;;;; "find-dired.el" (20355 10021)) +;;;;;; "find-dired.el" (20244 35516)) ;;; Generated autoloads from find-dired.el (autoload 'find-dired "find-dired" "\ @@ -10674,7 +10636,7 @@ ;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file ;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs) -;;;;;; "find-file" "find-file.el" (20387 44199)) +;;;;;; "find-file" "find-file.el" (20412 11425)) ;;; Generated autoloads from find-file.el (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\ @@ -10770,7 +10732,7 @@ ;;;;;; find-variable find-variable-noselect find-function-other-frame ;;;;;; find-function-other-window find-function find-function-noselect ;;;;;; find-function-search-for-symbol find-library) "find-func" -;;;;;; "emacs-lisp/find-func.el" (20355 10021)) +;;;;;; "emacs-lisp/find-func.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/find-func.el (autoload 'find-library "find-func" "\ @@ -10929,7 +10891,7 @@ ;;;*** ;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories -;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20355 10021)) +;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20244 35516)) ;;; Generated autoloads from find-lisp.el (autoload 'find-lisp-find-dired "find-lisp" "\ @@ -10950,7 +10912,7 @@ ;;;*** ;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) -;;;;;; "finder" "finder.el" (20355 10021)) +;;;;;; "finder" "finder.el" (20244 35516)) ;;; Generated autoloads from finder.el (autoload 'finder-list-keywords "finder" "\ @@ -10972,7 +10934,7 @@ ;;;*** ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" -;;;;;; "flow-ctrl.el" (20355 10021)) +;;;;;; "flow-ctrl.el" (20244 35516)) ;;; Generated autoloads from flow-ctrl.el (autoload 'enable-flow-control "flow-ctrl" "\ @@ -10994,7 +10956,7 @@ ;;;*** ;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/flow-fill.el (autoload 'fill-flowed-encode "flow-fill" "\ @@ -11010,7 +10972,7 @@ ;;;*** ;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on -;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20373 11301)) +;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20434 28080)) ;;; Generated autoloads from progmodes/flymake.el (autoload 'flymake-mode "flymake" "\ @@ -11040,7 +11002,7 @@ ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off ;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) -;;;;;; "flyspell" "textmodes/flyspell.el" (20420 41510)) +;;;;;; "flyspell" "textmodes/flyspell.el" (20434 28080)) ;;; Generated autoloads from textmodes/flyspell.el (autoload 'flyspell-prog-mode "flyspell" "\ @@ -11112,7 +11074,7 @@ ;;;### (autoloads (follow-delete-other-windows-and-split follow-mode ;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" -;;;;;; (20387 44199)) +;;;;;; (20412 11425)) ;;; Generated autoloads from follow.el (autoload 'turn-on-follow-mode "follow" "\ @@ -11180,8 +11142,8 @@ ;;;*** -;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20387 -;;;;;; 44199)) +;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from mail/footnote.el (autoload 'footnote-mode "footnote" "\ @@ -11200,7 +11162,7 @@ ;;;*** ;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) -;;;;;; "forms" "forms.el" (20392 20740)) +;;;;;; "forms" "forms.el" (20428 57510)) ;;; Generated autoloads from forms.el (autoload 'forms-mode "forms" "\ @@ -11237,7 +11199,7 @@ ;;;*** ;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el" -;;;;;; (20355 10021)) +;;;;;; (20446 34252)) ;;; Generated autoloads from progmodes/fortran.el (autoload 'fortran-mode "fortran" "\ @@ -11315,7 +11277,7 @@ ;;;*** ;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region -;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20355 10021)) +;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20244 35516)) ;;; Generated autoloads from play/fortune.el (autoload 'fortune-add-fortune "fortune" "\ @@ -11364,7 +11326,7 @@ ;;;*** ;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" -;;;;;; (20415 53309)) +;;;;;; (20415 57974)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11442,8 +11404,8 @@ ;;;*** ;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal -;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20406 -;;;;;; 8611)) +;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from emacs-lisp/generic.el (defvar generic-mode-list nil "\ @@ -11485,12 +11447,12 @@ See the file generic-x.el for some examples of `define-generic-mode'. -\(fn MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST AUTO-MODE-LIST FUNCTION-LIST &optional DOCSTRING)" nil (quote macro)) +\(fn MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST AUTO-MODE-LIST FUNCTION-LIST &optional DOCSTRING)" nil t) + +(put 'define-generic-mode 'lisp-indent-function '1) (put 'define-generic-mode 'doc-string-elt '7) -(put 'define-generic-mode 'lisp-indent-function '1) - (autoload 'generic-mode-internal "generic" "\ Go into the generic mode MODE. @@ -11522,7 +11484,7 @@ ;;;*** ;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/glasses.el (autoload 'glasses-mode "glasses" "\ @@ -11538,7 +11500,7 @@ ;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error ;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el" -;;;;;; (20355 10021)) +;;;;;; (20318 5885)) ;;; Generated autoloads from gnus/gmm-utils.el (autoload 'gmm-regexp-concat "gmm-utils" "\ @@ -11593,7 +11555,7 @@ ;;;*** ;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server -;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20414 2727)) +;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20414 21581)) ;;; Generated autoloads from gnus/gnus.el (when (fboundp 'custom-autoload) (custom-autoload 'gnus-select-method "gnus")) @@ -11646,7 +11608,7 @@ ;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group ;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize ;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" -;;;;;; "gnus/gnus-agent.el" (20355 10021)) +;;;;;; "gnus/gnus-agent.el" (20446 34252)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload 'gnus-unplugged "gnus-agent" "\ @@ -11737,7 +11699,7 @@ ;;;*** ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" -;;;;;; (20361 20134)) +;;;;;; (20373 41604)) ;;; Generated autoloads from gnus/gnus-art.el (autoload 'gnus-article-prepare-display "gnus-art" "\ @@ -11748,7 +11710,7 @@ ;;;*** ;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set) -;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20355 10021)) +;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-bookmark.el (autoload 'gnus-bookmark-set "gnus-bookmark" "\ @@ -11773,8 +11735,8 @@ ;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group ;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active -;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20355 -;;;;;; 10021)) +;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/gnus-cache.el (autoload 'gnus-jog-cache "gnus-cache" "\ @@ -11816,7 +11778,7 @@ ;;;*** ;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) -;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20355 10021)) +;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-delay.el (autoload 'gnus-delay-article "gnus-delay" "\ @@ -11852,7 +11814,7 @@ ;;;*** ;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d) -;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20355 10021)) +;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-diary.el (autoload 'gnus-user-format-function-d "gnus-diary" "\ @@ -11868,7 +11830,7 @@ ;;;*** ;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-dired.el (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\ @@ -11879,7 +11841,7 @@ ;;;*** ;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-draft.el (autoload 'gnus-draft-reminder "gnus-draft" "\ @@ -11891,8 +11853,8 @@ ;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png ;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header -;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20355 -;;;;;; 10021)) +;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/gnus-fun.el (autoload 'gnus-random-x-face "gnus-fun" "\ @@ -11937,7 +11899,7 @@ ;;;*** ;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar) -;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20355 10021)) +;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-gravatar.el (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\ @@ -11955,7 +11917,7 @@ ;;;*** ;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) -;;;;;; "gnus-group" "gnus/gnus-group.el" (20355 10021)) +;;;;;; "gnus-group" "gnus/gnus-group.el" (20438 17064)) ;;; Generated autoloads from gnus/gnus-group.el (autoload 'gnus-fetch-group "gnus-group" "\ @@ -11973,7 +11935,7 @@ ;;;*** ;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html" -;;;;;; "gnus/gnus-html.el" (20355 10021)) +;;;;;; "gnus/gnus-html.el" (20276 3849)) ;;; Generated autoloads from gnus/gnus-html.el (autoload 'gnus-article-html "gnus-html" "\ @@ -11989,7 +11951,7 @@ ;;;*** ;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias 'gnus-batch-kill 'gnus-batch-score) @@ -12004,7 +11966,7 @@ ;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate ;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-ml.el (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\ @@ -12029,7 +11991,7 @@ ;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update ;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-mlspl.el (autoload 'gnus-group-split-setup "gnus-mlspl" "\ @@ -12130,7 +12092,7 @@ ;;;*** ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) -;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20417 65331)) +;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20434 28080)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload 'gnus-msg-mail "gnus-msg" "\ @@ -12158,7 +12120,7 @@ ;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon ;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" -;;;;;; (20355 10021)) +;;;;;; (20290 33419)) ;;; Generated autoloads from gnus/gnus-picon.el (autoload 'gnus-treat-from-picon "gnus-picon" "\ @@ -12185,7 +12147,7 @@ ;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection ;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement ;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" -;;;;;; "gnus/gnus-range.el" (20355 10021)) +;;;;;; "gnus/gnus-range.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-range.el (autoload 'gnus-sorted-difference "gnus-range" "\ @@ -12253,7 +12215,7 @@ ;;;*** ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) -;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20415 53309)) +;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20415 57974)) ;;; Generated autoloads from gnus/gnus-registry.el (autoload 'gnus-registry-initialize "gnus-registry" "\ @@ -12269,8 +12231,8 @@ ;;;*** ;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate -;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20355 -;;;;;; 10021)) +;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/gnus-sieve.el (autoload 'gnus-sieve-update "gnus-sieve" "\ @@ -12298,7 +12260,7 @@ ;;;*** ;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload 'gnus-update-format "gnus-spec" "\ @@ -12309,7 +12271,7 @@ ;;;*** ;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" -;;;;;; (20361 20134)) +;;;;;; (20373 41604)) ;;; Generated autoloads from gnus/gnus-start.el (autoload 'gnus-declare-backend "gnus-start" "\ @@ -12320,7 +12282,7 @@ ;;;*** ;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" -;;;;;; (20355 10021)) +;;;;;; (20331 12564)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12332,7 +12294,7 @@ ;;;*** ;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize) -;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20355 10021)) +;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20244 35516)) ;;; Generated autoloads from gnus/gnus-sync.el (autoload 'gnus-sync-initialize "gnus-sync" "\ @@ -12348,7 +12310,7 @@ ;;;*** ;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" -;;;;;; (20420 41510)) +;;;;;; (20448 36271)) ;;; Generated autoloads from gnus/gnus-win.el (autoload 'gnus-add-configuration "gnus-win" "\ @@ -12359,7 +12321,7 @@ ;;;*** ;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el" -;;;;;; (20417 65331)) +;;;;;; (20419 46656)) ;;; Generated autoloads from net/gnutls.el (defvar gnutls-min-prime-bits 256 "\ @@ -12375,7 +12337,7 @@ ;;;*** -;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20355 10021)) +;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20356 35090)) ;;; Generated autoloads from play/gomoku.el (autoload 'gomoku "gomoku" "\ @@ -12402,8 +12364,8 @@ ;;;*** ;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address -;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20355 -;;;;;; 10021)) +;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from net/goto-addr.el (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1") @@ -12445,7 +12407,7 @@ ;;;*** ;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve) -;;;;;; "gravatar" "gnus/gravatar.el" (20355 10021)) +;;;;;; "gravatar" "gnus/gravatar.el" (20290 33419)) ;;; Generated autoloads from gnus/gravatar.el (autoload 'gravatar-retrieve "gravatar" "\ @@ -12463,7 +12425,7 @@ ;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults ;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command -;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20369 14251)) +;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20373 41604)) ;;; Generated autoloads from progmodes/grep.el (defvar grep-window-height nil "\ @@ -12626,7 +12588,7 @@ ;;;*** -;;;### (autoloads (gs-load-image) "gs" "gs.el" (20355 10021)) +;;;### (autoloads (gs-load-image) "gs" "gs.el" (20244 35516)) ;;; Generated autoloads from gs.el (autoload 'gs-load-image "gs" "\ @@ -12640,7 +12602,7 @@ ;;;*** ;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb -;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20373 11301)) +;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20373 41604)) ;;; Generated autoloads from progmodes/gud.el (autoload 'gud-gdb "gud" "\ @@ -12728,8 +12690,87 @@ ;;;*** -;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (setf gv-define-simple-setter gv-define-setter +;;;;;; gv-define-expander gv-letplace gv-get) "gv" "emacs-lisp/gv.el" +;;;;;; (20451 34840)) +;;; Generated autoloads from emacs-lisp/gv.el + +(autoload 'gv-get "gv" "\ +Build the code that applies DO to PLACE. +PLACE must be a valid generalized variable. +DO must be a function; it will be called with 2 arguments: GETTER and SETTER, +where GETTER is a (copyable) Elisp expression that returns the value of PLACE, +and SETTER is a function which returns the code to set PLACE when called +with a (not necessarily copyable) Elisp expression that returns the value to +set it to. +DO must return an Elisp expression. + +\(fn PLACE DO)" nil nil) + +(autoload 'gv-letplace "gv" "\ +Build the code manipulating the generalized variable PLACE. +GETTER will be bound to a copyable expression that returns the value +of PLACE. +SETTER will be bound to a function that takes an expression V and returns +and new expression that sets PLACE to V. +BODY should return some Elisp expression E manipulating PLACE via GETTER +and SETTER. +The returned value will then be an Elisp expression that first evaluates +all the parts of PLACE that can be evaluated and then runs E. + +\(fn (GETTER SETTER) PLACE &rest BODY)" nil t) + +(put 'gv-letplace 'lisp-indent-function '2) + +(autoload 'gv-define-expander "gv" "\ +Use HANDLER to handle NAME as a generalized var. +NAME is a symbol: the name of a function, macro, or special form. +HANDLER is a function which takes an argument DO followed by the same +arguments as NAME. DO is a function as defined in `gv-get'. + +\(fn NAME HANDLER)" nil t) + +(put 'gv-define-expander 'lisp-indent-function '1) + +(autoload 'gv-define-setter "gv" "\ +Define a setter method for generalized variable NAME. +This macro is an easy-to-use substitute for `gv-define-expander' that works +well for simple place forms. +Assignments of VAL to (NAME ARGS...) are expanded by binding the argument +forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must +return a Lisp form that does the assignment. +Actually, ARGLIST may be bound to temporary variables which are introduced +automatically to preserve proper execution order of the arguments. Example: + (gv-define-setter aref (v a i) `(aset ,a ,i ,v)) + +\(fn NAME ARGLIST &rest BODY)" nil t) + +(put 'gv-define-setter 'lisp-indent-function '2) + +(autoload 'gv-define-simple-setter "gv" "\ +Define a simple setter method for generalized variable NAME. +This macro is an easy-to-use substitute for `gv-define-expander' that works +well for simple place forms. Assignments of VAL to (NAME ARGS...) are +turned into calls of the form (SETTER ARGS... VAL). +If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and +instead the assignment is turned into (prog1 VAL (SETTER ARGS... VAL)) +so as to preserve the semantics of `setf'. + +\(fn NAME SETTER &optional FIX-RETURN)" nil t) + +(autoload 'setf "gv" "\ +Set each PLACE to the value of its VAL. +This is a generalized version of `setq'; the PLACEs may be symbolic +references such as (car x) or (aref x i), as well as plain symbols. +For example, (setf (cadr x) y) is equivalent to (setcar (cdr x) y). +The return value is the last VAL in the list. + +\(fn PLACE VAL PLACE VAL ...)" nil t) + +;;;*** + +;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20318 +;;;;;; 5885)) ;;; Generated autoloads from play/handwrite.el (autoload 'handwrite "handwrite" "\ @@ -12747,7 +12788,7 @@ ;;;*** ;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el" -;;;;;; (20355 10021)) +;;;;;; (19989 53691)) ;;; Generated autoloads from play/hanoi.el (autoload 'hanoi "hanoi" "\ @@ -12776,7 +12817,7 @@ ;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment ;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment) -;;;;;; "hashcash" "mail/hashcash.el" (20355 10021)) +;;;;;; "hashcash" "mail/hashcash.el" (20356 35090)) ;;; Generated autoloads from mail/hashcash.el (autoload 'hashcash-insert-payment "hashcash" "\ @@ -12821,7 +12862,7 @@ ;;;### (autoloads (scan-buf-previous-region scan-buf-next-region ;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer ;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string -;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20355 10021)) +;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20244 35516)) ;;; Generated autoloads from help-at-pt.el (autoload 'help-at-pt-string "help-at-pt" "\ @@ -12951,7 +12992,7 @@ ;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories ;;;;;; describe-syntax describe-variable variable-at-point describe-function-1 ;;;;;; find-lisp-object-file-name help-C-file-name describe-function) -;;;;;; "help-fns" "help-fns.el" (20355 10021)) +;;;;;; "help-fns" "help-fns.el" (20438 21557)) ;;; Generated autoloads from help-fns.el (autoload 'describe-function "help-fns" "\ @@ -13031,7 +13072,7 @@ ;;;*** ;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" -;;;;;; (20355 10021)) +;;;;;; (20253 50954)) ;;; Generated autoloads from help-macro.el (defvar three-step-help nil "\ @@ -13045,10 +13086,10 @@ ;;;*** -;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button -;;;;;; help-make-xrefs help-buffer help-setup-xref help-mode-finish -;;;;;; help-mode-setup help-mode) "help-mode" "help-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button +;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref +;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el" +;;;;;; (20446 34252)) ;;; Generated autoloads from help-mode.el (autoload 'help-mode "help-mode" "\ @@ -13138,10 +13179,17 @@ \(fn FROM TO)" nil nil) +(autoload 'help-bookmark-jump "help-mode" "\ +Jump to help-mode bookmark BOOKMARK. +Handler function for record returned by `help-bookmark-make-record'. +BOOKMARK is a bookmark name or a bookmark record. + +\(fn BOOKMARK)" nil nil) + ;;;*** ;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" -;;;;;; "emacs-lisp/helper.el" (20355 10021)) +;;;;;; "emacs-lisp/helper.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/helper.el (autoload 'Helper-describe-bindings "helper" "\ @@ -13157,7 +13205,7 @@ ;;;*** ;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" -;;;;;; "hexl.el" (20420 41510)) +;;;;;; "hexl.el" (20420 52684)) ;;; Generated autoloads from hexl.el (autoload 'hexl-mode "hexl" "\ @@ -13254,7 +13302,7 @@ ;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer ;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer ;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" -;;;;;; (20410 5673)) +;;;;;; (20412 11425)) ;;; Generated autoloads from hi-lock.el (autoload 'hi-lock-mode "hi-lock" "\ @@ -13393,7 +13441,7 @@ ;;;*** ;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/hideif.el (autoload 'hide-ifdef-mode "hideif" "\ @@ -13437,7 +13485,7 @@ ;;;*** ;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" -;;;;;; (20356 55829)) +;;;;;; (20359 18671)) ;;; Generated autoloads from progmodes/hideshow.el (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\ @@ -13503,8 +13551,8 @@ ;;;;;; highlight-compare-buffers highlight-changes-rotate-faces ;;;;;; highlight-changes-previous-change highlight-changes-next-change ;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode -;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20355 -;;;;;; 10021)) +;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from hilit-chg.el (autoload 'highlight-changes-mode "hilit-chg" "\ @@ -13639,7 +13687,7 @@ ;;;;;; hippie-expand-ignore-buffers hippie-expand-max-buffers hippie-expand-no-restriction ;;;;;; hippie-expand-dabbrev-as-symbol hippie-expand-dabbrev-skip-space ;;;;;; hippie-expand-verbose hippie-expand-try-functions-list) "hippie-exp" -;;;;;; "hippie-exp.el" (20355 10021)) +;;;;;; "hippie-exp.el" (20244 35516)) ;;; Generated autoloads from hippie-exp.el (defvar hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol) "\ @@ -13707,12 +13755,12 @@ Make it use the expansion functions in TRY-LIST. An optional second argument VERBOSE non-nil makes the function verbose. -\(fn TRY-LIST &optional VERBOSE)" nil (quote macro)) +\(fn TRY-LIST &optional VERBOSE)" nil t) ;;;*** ;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from hl-line.el (autoload 'hl-line-mode "hl-line" "\ @@ -13765,7 +13813,7 @@ ;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays ;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays ;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays" -;;;;;; "calendar/holidays.el" (20390 20388)) +;;;;;; "calendar/holidays.el" (20412 11425)) ;;; Generated autoloads from calendar/holidays.el (define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1") @@ -13913,8 +13961,8 @@ ;;;*** -;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/html2text.el (autoload 'html2text "html2text" "\ @@ -13925,7 +13973,7 @@ ;;;*** ;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer) -;;;;;; "htmlfontify" "htmlfontify.el" (20355 10021)) +;;;;;; "htmlfontify" "htmlfontify.el" (20331 12564)) ;;; Generated autoloads from htmlfontify.el (autoload 'htmlfontify-buffer "htmlfontify" "\ @@ -13956,113 +14004,14 @@ \(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t nil) ;;;*** + +;;;*** -;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter -;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20406 -;;;;;; 8611)) +;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (20412 11425)) ;;; Generated autoloads from ibuf-macs.el - -(autoload 'define-ibuffer-column "ibuf-macs" "\ -Define a column SYMBOL for use with `ibuffer-formats'. - -BODY will be called with `buffer' bound to the buffer object, and -`mark' bound to the current mark on the buffer. The original ibuffer -buffer will be bound to `ibuffer-buf'. - -If NAME is given, it will be used as a title for the column. -Otherwise, the title will default to a capitalized version of the -SYMBOL's name. PROPS is a plist of additional properties to add to -the text, such as `mouse-face'. And SUMMARIZER, if given, is a -function which will be passed a list of all the strings in its column; -it should return a string to display at the bottom. - -If HEADER-MOUSE-MAP is given, it will be used as a keymap for the -title of the column. - -Note that this macro expands into a `defun' for a function named -ibuffer-make-column-NAME. If INLINE is non-nil, then the form will be -inlined into the compiled format versions. This means that if you -change its definition, you should explicitly call -`ibuffer-recompile-formats'. - -\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil (quote macro)) - -(put 'define-ibuffer-column 'lisp-indent-function 'defun) - -(autoload 'define-ibuffer-sorter "ibuf-macs" "\ -Define a method of sorting named NAME. -DOCUMENTATION is the documentation of the function, which will be called -`ibuffer-do-sort-by-NAME'. -DESCRIPTION is a short string describing the sorting method. - -For sorting, the forms in BODY will be evaluated with `a' bound to one -buffer object, and `b' bound to another. BODY should return a non-nil -value if and only if `a' is \"less than\" `b'. - -\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil (quote macro)) - -(put 'define-ibuffer-sorter 'doc-string-elt '2) - -(put 'define-ibuffer-sorter 'lisp-indent-function '1) - -(autoload 'define-ibuffer-op "ibuf-macs" "\ -Generate a function which operates on a buffer. -OP becomes the name of the function; if it doesn't begin with -`ibuffer-do-', then that is prepended to it. -When an operation is performed, this function will be called once for -each marked buffer, with that buffer current. - -ARGS becomes the formal parameters of the function. -DOCUMENTATION becomes the docstring of the function. -INTERACTIVE becomes the interactive specification of the function. -MARK describes which type of mark (:deletion, or nil) this operation -uses. :deletion means the function operates on buffers marked for -deletion, otherwise it acts on normally marked buffers. -MODIFIER-P describes how the function modifies buffers. This is used -to set the modification flag of the Ibuffer buffer itself. Valid -values are: - nil - the function never modifiers buffers - t - the function it always modifies buffers - :maybe - attempt to discover this information by comparing the - buffer's modification flag. -DANGEROUS is a boolean which should be set if the user should be -prompted before performing this operation. -OPSTRING is a string which will be displayed to the user after the -operation is complete, in the form: - \"Operation complete; OPSTRING x buffers\" -ACTIVE-OPSTRING is a string which will be displayed to the user in a -confirmation message, in the form: - \"Really ACTIVE-OPSTRING x buffers?\" -COMPLEX means this function is special; see the source code of this -macro for exactly what it does. - -\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil (quote macro)) - -(put 'define-ibuffer-op 'doc-string-elt '3) - -(put 'define-ibuffer-op 'lisp-indent-function '2) - -(autoload 'define-ibuffer-filter "ibuf-macs" "\ -Define a filter named NAME. -DOCUMENTATION is the documentation of the function. -READER is a form which should read a qualifier from the user. -DESCRIPTION is a short string describing the filter. - -BODY should contain forms which will be evaluated to test whether or -not a particular buffer should be displayed or not. The forms in BODY -will be evaluated with BUF bound to the buffer object, and QUALIFIER -bound to the current value of the filter. - -\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil (quote macro)) - -(put 'define-ibuffer-filter 'doc-string-elt '2) - -(put 'define-ibuffer-filter 'lisp-indent-function '2) - -;;;*** ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) -;;;;;; "ibuffer" "ibuffer.el" (20383 47352)) +;;;;;; "ibuffer" "ibuffer.el" (20412 11425)) ;;; Generated autoloads from ibuffer.el (autoload 'ibuffer-list-buffers "ibuffer" "\ @@ -14103,7 +14052,7 @@ ;;;### (autoloads (icalendar-import-buffer icalendar-import-file ;;;;;; icalendar-export-region icalendar-export-file) "icalendar" -;;;;;; "calendar/icalendar.el" (20421 62373)) +;;;;;; "calendar/icalendar.el" (20434 28080)) ;;; Generated autoloads from calendar/icalendar.el (autoload 'icalendar-export-file "icalendar" "\ @@ -14155,8 +14104,8 @@ ;;;*** -;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20318 +;;;;;; 5885)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -14178,7 +14127,7 @@ ;;;*** -;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20355 10021)) +;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20356 35090)) ;;; Generated autoloads from progmodes/icon.el (autoload 'icon-mode "icon" "\ @@ -14219,7 +14168,7 @@ ;;;*** ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" -;;;;;; (20394 17446)) +;;;;;; (20428 57510)) ;;; Generated autoloads from progmodes/idlw-shell.el (autoload 'idlwave-shell "idlw-shell" "\ @@ -14245,7 +14194,7 @@ ;;;*** ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" -;;;;;; (20387 44199)) +;;;;;; (20412 11425)) ;;; Generated autoloads from progmodes/idlwave.el (autoload 'idlwave-mode "idlwave" "\ @@ -14379,8 +14328,8 @@ ;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file ;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer ;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window -;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20387 -;;;;;; 44199)) +;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20451 +;;;;;; 20881)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -14424,8 +14373,7 @@ RET Select the buffer at the front of the list of matches. If the list is empty, possibly prompt to create new buffer. -\\[ido-select-text] Select the current prompt as the buffer. -If no buffer is found, prompt for a new one. +\\[ido-select-text] Use the current input string verbatim. \\[ido-next-match] Put the first element at the end of the list. \\[ido-prev-match] Put the last element at the start of the list. @@ -14501,8 +14449,7 @@ RET Select the file at the front of the list of matches. If the list is empty, possibly prompt to create new file. -\\[ido-select-text] Select the current prompt as the buffer or file. -If no buffer or file is found, prompt for a new one. +\\[ido-select-text] Use the current input string verbatim. \\[ido-next-match] Put the first element at the end of the list. \\[ido-prev-match] Put the last element at the start of the list. @@ -14510,6 +14457,7 @@ matches all files. If there is only one match, select that file. If there is no common suffix, show a list of all matching files in a separate window. +\\[ido-magic-delete-char] Open the specified directory in Dired mode. \\[ido-edit-input] Edit input string (including directory). \\[ido-prev-work-directory] or \\[ido-next-work-directory] go to previous/next directory in work directory history. \\[ido-merge-work-directories] search for file in the work directory history. @@ -14640,7 +14588,7 @@ ;;;*** -;;;### (autoloads (ielm) "ielm" "ielm.el" (20355 10021)) +;;;### (autoloads (ielm) "ielm" "ielm.el" (20244 35516)) ;;; Generated autoloads from ielm.el (autoload 'ielm "ielm" "\ @@ -14651,7 +14599,7 @@ ;;;*** -;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20355 10021)) +;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20276 3849)) ;;; Generated autoloads from iimage.el (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1") @@ -14672,7 +14620,7 @@ ;;;;;; create-image image-type-auto-detected-p image-type-available-p ;;;;;; image-type image-type-from-file-name image-type-from-file-header ;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el" -;;;;;; (20423 43129)) +;;;;;; (20438 17064)) ;;; Generated autoloads from image.el (autoload 'image-type-from-data "image" "\ @@ -14872,7 +14820,7 @@ ;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag ;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs ;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs) -;;;;;; "image-dired" "image-dired.el" (20355 10021)) +;;;;;; "image-dired" "image-dired.el" (20244 35516)) ;;; Generated autoloads from image-dired.el (autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\ @@ -15010,7 +14958,7 @@ ;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp ;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" -;;;;;; "image-file.el" (20355 10021)) +;;;;;; "image-file.el" (20244 35516)) ;;; Generated autoloads from image-file.el (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\ @@ -15073,7 +15021,7 @@ ;;;*** ;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode -;;;;;; image-mode) "image-mode" "image-mode.el" (20420 41510)) +;;;;;; image-mode) "image-mode" "image-mode.el" (20420 52684)) ;;; Generated autoloads from image-mode.el (autoload 'image-mode "image-mode" "\ @@ -15118,7 +15066,7 @@ ;;;*** ;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar -;;;;;; imenu-sort-function) "imenu" "imenu.el" (20393 22044)) +;;;;;; imenu-sort-function) "imenu" "imenu.el" (20412 11425)) ;;; Generated autoloads from imenu.el (defvar imenu-sort-function nil "\ @@ -15235,7 +15183,7 @@ ;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion ;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) -;;;;;; "ind-util" "language/ind-util.el" (20355 10021)) +;;;;;; "ind-util" "language/ind-util.el" (20244 35516)) ;;; Generated autoloads from language/ind-util.el (autoload 'indian-compose-region "ind-util" "\ @@ -15267,7 +15215,7 @@ ;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command ;;;;;; inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp" -;;;;;; "progmodes/inf-lisp.el" (20355 10021)) +;;;;;; "progmodes/inf-lisp.el" (20356 35090)) ;;; Generated autoloads from progmodes/inf-lisp.el (defvar inferior-lisp-filter-regexp (purecopy "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'") "\ @@ -15334,7 +15282,7 @@ ;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node ;;;;;; Info-mode info-finder info-apropos Info-index Info-directory ;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual -;;;;;; info info-other-window) "info" "info.el" (20420 41510)) +;;;;;; info info-other-window) "info" "info.el" (20434 28080)) ;;; Generated autoloads from info.el (autoload 'info-other-window "info" "\ @@ -15525,7 +15473,7 @@ ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file ;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from info-look.el (autoload 'info-lookup-reset "info-look" "\ @@ -15574,7 +15522,7 @@ ;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom ;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from info-xref.el (autoload 'info-xref-check "info-xref" "\ @@ -15657,7 +15605,7 @@ ;;;*** ;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold -;;;;;; Info-tagify) "informat" "informat.el" (20355 10021)) +;;;;;; Info-tagify) "informat" "informat.el" (20244 35516)) ;;; Generated autoloads from informat.el (autoload 'Info-tagify "informat" "\ @@ -15704,7 +15652,7 @@ ;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method ;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from international/isearch-x.el (autoload 'isearch-toggle-specified-input-method "isearch-x" "\ @@ -15724,8 +15672,8 @@ ;;;*** -;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from isearchb.el (autoload 'isearchb-activate "isearchb" "\ @@ -15741,7 +15689,7 @@ ;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only ;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso ;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" -;;;;;; "international/iso-cvt.el" (20355 10021)) +;;;;;; "international/iso-cvt.el" (20244 35516)) ;;; Generated autoloads from international/iso-cvt.el (autoload 'iso-spanish "iso-cvt" "\ @@ -15832,7 +15780,7 @@ ;;;*** ;;;### (autoloads nil "iso-transl" "international/iso-transl.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from international/iso-transl.el (or key-translation-map (setq key-translation-map (make-sparse-keymap))) (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) @@ -15844,7 +15792,7 @@ ;;;;;; ispell-complete-word ispell-continue ispell-buffer ispell-comments-and-strings ;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell ;;;;;; ispell-help ispell-pdict-save ispell-word ispell-personal-dictionary) -;;;;;; "ispell" "textmodes/ispell.el" (20423 17700)) +;;;;;; "ispell" "textmodes/ispell.el" (20428 57510)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16071,8 +16019,8 @@ ;;;*** -;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20387 -;;;;;; 44199)) +;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from iswitchb.el (defvar iswitchb-mode nil "\ @@ -16100,7 +16048,7 @@ ;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region ;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku ;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) -;;;;;; "japan-util" "language/japan-util.el" (20355 10021)) +;;;;;; "japan-util" "language/japan-util.el" (20244 35516)) ;;; Generated autoloads from language/japan-util.el (autoload 'setup-japanese-environment-internal "japan-util" "\ @@ -16178,7 +16126,7 @@ ;;;*** ;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" -;;;;;; "jka-compr.el" (20355 10021)) +;;;;;; "jka-compr.el" (20318 5885)) ;;; Generated autoloads from jka-compr.el (defvar jka-compr-inhibit nil "\ @@ -16201,7 +16149,7 @@ ;;;*** -;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20415 53309)) +;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20415 57974)) ;;; Generated autoloads from progmodes/js.el (autoload 'js-mode "js" "\ @@ -16215,7 +16163,7 @@ ;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup ;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emulation/keypad.el (defvar keypad-setup nil "\ @@ -16271,7 +16219,7 @@ ;;;*** ;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from international/kinsoku.el (autoload 'kinsoku "kinsoku" "\ @@ -16292,8 +16240,8 @@ ;;;*** -;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from international/kkc.el (defvar kkc-after-update-conversion-functions nil "\ @@ -16318,7 +16266,7 @@ ;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro ;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter ;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item) -;;;;;; "kmacro" "kmacro.el" (20388 65061)) +;;;;;; "kmacro" "kmacro.el" (20412 11425)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16429,7 +16377,7 @@ ;;;*** ;;;### (autoloads (setup-korean-environment-internal) "korea-util" -;;;;;; "language/korea-util.el" (20355 10021)) +;;;;;; "language/korea-util.el" (20356 35090)) ;;; Generated autoloads from language/korea-util.el (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\ @@ -16444,7 +16392,7 @@ ;;;*** ;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from play/landmark.el (defalias 'landmark-repeat 'landmark-test-run) @@ -16476,7 +16424,7 @@ ;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string ;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string) -;;;;;; "lao-util" "language/lao-util.el" (20355 10021)) +;;;;;; "lao-util" "language/lao-util.el" (20244 35516)) ;;; Generated autoloads from language/lao-util.el (autoload 'lao-compose-string "lao-util" "\ @@ -16515,7 +16463,7 @@ ;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc ;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) -;;;;;; "latexenc" "international/latexenc.el" (20355 10021)) +;;;;;; "latexenc" "international/latexenc.el" (20244 35516)) ;;; Generated autoloads from international/latexenc.el (defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\ @@ -16547,7 +16495,7 @@ ;;;*** ;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) -;;;;;; "latin1-disp" "international/latin1-disp.el" (20355 10021)) +;;;;;; "latin1-disp" "international/latin1-disp.el" (20244 35516)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -16589,7 +16537,7 @@ ;;;*** ;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/ld-script.el (autoload 'ld-script-mode "ld-script" "\ @@ -16599,43 +16547,7 @@ ;;;*** -;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el" -;;;;;; (20355 10021)) -;;; Generated autoloads from ledit.el - -(defconst ledit-save-files t "\ -*Non-nil means Ledit should save files before transferring to Lisp.") - -(defconst ledit-go-to-lisp-string "%?lisp" "\ -*Shell commands to execute to resume Lisp job.") - -(defconst ledit-go-to-liszt-string "%?liszt" "\ -*Shell commands to execute to resume Lisp compiler job.") - -(autoload 'ledit-mode "ledit" "\ -\\Major mode for editing text and stuffing it to a Lisp job. -Like Lisp mode, plus these special commands: - \\[ledit-save-defun] -- record defun at or after point - for later transmission to Lisp job. - \\[ledit-save-region] -- record region for later transmission to Lisp job. - \\[ledit-go-to-lisp] -- transfer to Lisp job and transmit saved text. - \\[ledit-go-to-liszt] -- transfer to Liszt (Lisp compiler) job - and transmit saved text. - -\\{ledit-mode-map} -To make Lisp mode automatically change to Ledit mode, -do (setq lisp-mode-hook 'ledit-from-lisp-mode) - -\(fn)" t nil) - -(autoload 'ledit-from-lisp-mode "ledit" "\ - - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (life) "life" "play/life.el" (20355 10021)) +;;;### (autoloads (life) "life" "play/life.el" (20244 35516)) ;;; Generated autoloads from play/life.el (autoload 'life "life" "\ @@ -16649,7 +16561,7 @@ ;;;*** ;;;### (autoloads (global-linum-mode linum-mode linum-format) "linum" -;;;;;; "linum.el" (20355 10021)) +;;;;;; "linum.el" (20244 35516)) ;;; Generated autoloads from linum.el (defvar linum-format 'dynamic "\ @@ -16694,8 +16606,8 @@ ;;;*** -;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20399 -;;;;;; 35365)) +;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from loadhist.el (autoload 'unload-feature "loadhist" "\ @@ -16727,7 +16639,7 @@ ;;;*** ;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) -;;;;;; "locate" "locate.el" (20355 10021)) +;;;;;; "locate" "locate.el" (20244 35516)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches (purecopy "-al") "\ @@ -16779,7 +16691,7 @@ ;;;*** -;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20399 35365)) +;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20412 11425)) ;;; Generated autoloads from vc/log-edit.el (autoload 'log-edit "log-edit" "\ @@ -16806,8 +16718,8 @@ ;;;*** -;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20290 +;;;;;; 33419)) ;;; Generated autoloads from vc/log-view.el (autoload 'log-view-mode "log-view" "\ @@ -16817,8 +16729,8 @@ ;;;*** -;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from longlines.el (autoload 'longlines-mode "longlines" "\ @@ -16844,8 +16756,8 @@ ;;;*** ;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer -;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20355 -;;;;;; 10021)) +;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from lpr.el (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\ @@ -16941,7 +16853,7 @@ ;;;*** ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" -;;;;;; (20355 10021)) +;;;;;; (20276 3849)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -16952,8 +16864,8 @@ ;;;*** -;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from calendar/lunar.el (autoload 'lunar-phases "lunar" "\ @@ -16967,8 +16879,8 @@ ;;;*** -;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/m4-mode.el (autoload 'm4-mode "m4-mode" "\ @@ -16979,7 +16891,7 @@ ;;;*** ;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el" -;;;;;; (20421 62373)) +;;;;;; (20451 34676)) ;;; Generated autoloads from emacs-lisp/macroexp.el (autoload 'macroexpand-all "macroexp" "\ @@ -16993,7 +16905,7 @@ ;;;*** ;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro -;;;;;; name-last-kbd-macro) "macros" "macros.el" (20355 10021)) +;;;;;; name-last-kbd-macro) "macros" "macros.el" (20244 35516)) ;;; Generated autoloads from macros.el (autoload 'name-last-kbd-macro "macros" "\ @@ -17082,7 +16994,7 @@ ;;;*** ;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" -;;;;;; "mail/mail-extr.el" (20355 10021)) +;;;;;; "mail/mail-extr.el" (20356 35090)) ;;; Generated autoloads from mail/mail-extr.el (autoload 'mail-extract-address-components "mail-extr" "\ @@ -17114,7 +17026,7 @@ ;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history ;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from mail/mail-hist.el (autoload 'mail-hist-define-keys "mail-hist" "\ @@ -17146,7 +17058,7 @@ ;;;### (autoloads (mail-fetch-field mail-unquote-printable-region ;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable ;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822) -;;;;;; "mail-utils" "mail/mail-utils.el" (20355 10021)) +;;;;;; "mail-utils" "mail/mail-utils.el" (20318 5885)) ;;; Generated autoloads from mail/mail-utils.el (defvar mail-use-rfc822 nil "\ @@ -17221,8 +17133,8 @@ ;;;*** ;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup -;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20387 -;;;;;; 44199)) +;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from mail/mailabbrev.el (defvar mail-abbrevs-mode nil "\ @@ -17273,7 +17185,7 @@ ;;;### (autoloads (mail-complete mail-completion-at-point-function ;;;;;; define-mail-alias expand-mail-aliases mail-complete-style) -;;;;;; "mailalias" "mail/mailalias.el" (20355 10021)) +;;;;;; "mailalias" "mail/mailalias.el" (20244 35516)) ;;; Generated autoloads from mail/mailalias.el (defvar mail-complete-style 'angles "\ @@ -17325,7 +17237,7 @@ ;;;*** ;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from mail/mailclient.el (autoload 'mailclient-send-it "mailclient" "\ @@ -17339,7 +17251,7 @@ ;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode ;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode) -;;;;;; "make-mode" "progmodes/make-mode.el" (20392 30149)) +;;;;;; "make-mode" "progmodes/make-mode.el" (20412 11425)) ;;; Generated autoloads from progmodes/make-mode.el (autoload 'makefile-mode "make-mode" "\ @@ -17456,8 +17368,8 @@ ;;;*** -;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from makesum.el (autoload 'make-command-summary "makesum" "\ @@ -17469,7 +17381,7 @@ ;;;*** ;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el" -;;;;;; (20390 20388)) +;;;;;; (20412 11425)) ;;; Generated autoloads from man.el (defalias 'manual-entry 'man) @@ -17523,7 +17435,7 @@ ;;;*** -;;;### (autoloads (master-mode) "master" "master.el" (20355 10021)) +;;;### (autoloads (master-mode) "master" "master.el" (20244 35516)) ;;; Generated autoloads from master.el (autoload 'master-mode "master" "\ @@ -17546,7 +17458,7 @@ ;;;*** ;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from mb-depth.el (defvar minibuffer-depth-indicate-mode nil "\ @@ -17579,7 +17491,7 @@ ;;;;;; message-forward-make-body message-forward message-recover ;;;;;; message-supersede message-cancel-news message-followup message-wide-reply ;;;;;; message-reply message-news message-mail message-mode) "message" -;;;;;; "gnus/message.el" (20355 10021)) +;;;;;; "gnus/message.el" (20290 33419)) ;;; Generated autoloads from gnus/message.el (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) @@ -17745,7 +17657,7 @@ ;;;*** ;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from progmodes/meta-mode.el (autoload 'metafont-mode "meta-mode" "\ @@ -17762,7 +17674,7 @@ ;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body ;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from mail/metamail.el (autoload 'metamail-interpret-header "metamail" "\ @@ -17807,7 +17719,7 @@ ;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose ;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp" -;;;;;; "mh-e/mh-comp.el" (20355 10021)) +;;;;;; "mh-e/mh-comp.el" (20244 35516)) ;;; Generated autoloads from mh-e/mh-comp.el (autoload 'mh-smail "mh-comp" "\ @@ -17897,7 +17809,7 @@ ;;;*** -;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20355 10021)) +;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20244 35516)) ;;; Generated autoloads from mh-e/mh-e.el (put 'mh-progs 'risky-local-variable t) @@ -17914,7 +17826,7 @@ ;;;*** ;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder" -;;;;;; "mh-e/mh-folder.el" (20371 55972)) +;;;;;; "mh-e/mh-folder.el" (20373 41604)) ;;; Generated autoloads from mh-e/mh-folder.el (autoload 'mh-rmail "mh-folder" "\ @@ -17996,7 +17908,7 @@ ;;;*** ;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" -;;;;;; "midnight.el" (20355 10021)) +;;;;;; "midnight.el" (20244 35516)) ;;; Generated autoloads from midnight.el (autoload 'clean-buffer-list "midnight" "\ @@ -18023,7 +17935,7 @@ ;;;*** ;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" -;;;;;; "minibuf-eldef.el" (20355 10021)) +;;;;;; "minibuf-eldef.el" (20356 35090)) ;;; Generated autoloads from minibuf-eldef.el (defvar minibuffer-electric-default-mode nil "\ @@ -18053,7 +17965,7 @@ ;;;*** ;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el" -;;;;;; (20356 27828)) +;;;;;; (20356 35090)) ;;; Generated autoloads from misc.el (autoload 'butterfly "misc" "\ @@ -18083,7 +17995,7 @@ ;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files ;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup) -;;;;;; "misearch" "misearch.el" (20420 41510)) +;;;;;; "misearch" "misearch.el" (20420 52684)) ;;; Generated autoloads from misearch.el (add-hook 'isearch-mode-hook 'multi-isearch-setup) @@ -18165,7 +18077,7 @@ ;;;*** ;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/mixal-mode.el (autoload 'mixal-mode "mixal-mode" "\ @@ -18176,7 +18088,7 @@ ;;;*** ;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/mm-encode.el (autoload 'mm-default-file-encoding "mm-encode" "\ @@ -18187,7 +18099,7 @@ ;;;*** ;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents) -;;;;;; "mm-extern" "gnus/mm-extern.el" (20355 10021)) +;;;;;; "mm-extern" "gnus/mm-extern.el" (20244 35516)) ;;; Generated autoloads from gnus/mm-extern.el (autoload 'mm-extern-cache-contents "mm-extern" "\ @@ -18206,7 +18118,7 @@ ;;;*** ;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/mm-partial.el (autoload 'mm-inline-partial "mm-partial" "\ @@ -18220,7 +18132,7 @@ ;;;*** ;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) -;;;;;; "mm-url" "gnus/mm-url.el" (20355 10021)) +;;;;;; "mm-url" "gnus/mm-url.el" (20244 35516)) ;;; Generated autoloads from gnus/mm-url.el (autoload 'mm-url-insert-file-contents "mm-url" "\ @@ -18237,7 +18149,7 @@ ;;;*** ;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu" -;;;;;; "gnus/mm-uu.el" (20355 10021)) +;;;;;; "gnus/mm-uu.el" (20318 5885)) ;;; Generated autoloads from gnus/mm-uu.el (autoload 'mm-uu-dissect "mm-uu" "\ @@ -18257,7 +18169,7 @@ ;;;*** ;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/mml.el (autoload 'mml-to-mime "mml" "\ @@ -18282,7 +18194,7 @@ ;;;*** ;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" -;;;;;; (20355 10021)) +;;;;;; (20291 57212)) ;;; Generated autoloads from gnus/mml1991.el (autoload 'mml1991-encrypt "mml1991" "\ @@ -18299,7 +18211,7 @@ ;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt ;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) -;;;;;; "mml2015" "gnus/mml2015.el" (20355 10021)) +;;;;;; "mml2015" "gnus/mml2015.el" (20244 35516)) ;;; Generated autoloads from gnus/mml2015.el (autoload 'mml2015-decrypt "mml2015" "\ @@ -18339,15 +18251,15 @@ ;;;*** -;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20406 8611)) +;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20412 11425)) ;;; Generated autoloads from cedet/mode-local.el (put 'define-overloadable-function 'doc-string-elt 3) ;;;*** -;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/modula2.el (defalias 'modula-2-mode 'm2-mode) @@ -18381,7 +18293,7 @@ ;;;*** ;;;### (autoloads (denato-region nato-region unmorse-region morse-region) -;;;;;; "morse" "play/morse.el" (20355 10021)) +;;;;;; "morse" "play/morse.el" (20244 35516)) ;;; Generated autoloads from play/morse.el (autoload 'morse-region "morse" "\ @@ -18407,7 +18319,7 @@ ;;;*** ;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag" -;;;;;; "mouse-drag.el" (20355 10021)) +;;;;;; "mouse-drag.el" (20356 35090)) ;;; Generated autoloads from mouse-drag.el (autoload 'mouse-drag-throw "mouse-drag" "\ @@ -18454,7 +18366,7 @@ ;;;*** -;;;### (autoloads (mpc) "mpc" "mpc.el" (20378 29222)) +;;;### (autoloads (mpc) "mpc" "mpc.el" (20377 36640)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18464,7 +18376,7 @@ ;;;*** -;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20355 10021)) +;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20434 28080)) ;;; Generated autoloads from play/mpuz.el (autoload 'mpuz "mpuz" "\ @@ -18474,7 +18386,7 @@ ;;;*** -;;;### (autoloads (msb-mode) "msb" "msb.el" (20355 10021)) +;;;### (autoloads (msb-mode) "msb" "msb.el" (20356 35090)) ;;; Generated autoloads from msb.el (defvar msb-mode nil "\ @@ -18504,7 +18416,7 @@ ;;;;;; describe-current-coding-system describe-current-coding-system-briefly ;;;;;; describe-coding-system describe-character-set list-charset-chars ;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from international/mule-diag.el (autoload 'list-character-sets "mule-diag" "\ @@ -18641,7 +18553,7 @@ ;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion ;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist ;;;;;; truncate-string-to-width store-substring string-to-sequence) -;;;;;; "mule-util" "international/mule-util.el" (20355 10021)) +;;;;;; "mule-util" "international/mule-util.el" (20244 35516)) ;;; Generated autoloads from international/mule-util.el (autoload 'string-to-sequence "mule-util" "\ @@ -18750,7 +18662,7 @@ This affects the implicit sorting of lists of coding systems returned by operations such as `find-coding-systems-region'. -\(fn CODING-SYSTEMS &rest BODY)" nil (quote macro)) +\(fn CODING-SYSTEMS &rest BODY)" nil t) (put 'with-coding-priority 'lisp-indent-function 1) (autoload 'detect-coding-with-priority "mule-util" "\ @@ -18758,7 +18670,7 @@ PRIORITY-LIST is an alist of coding categories vs the corresponding coding systems ordered by priority. -\(fn FROM TO PRIORITY-LIST)" nil (quote macro)) +\(fn FROM TO PRIORITY-LIST)" nil t) (autoload 'detect-coding-with-language-environment "mule-util" "\ Detect a coding system for the text between FROM and TO with LANG-ENV. @@ -18781,8 +18693,8 @@ ;;;### (autoloads (network-connection network-connection-to-service ;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host ;;;;;; nslookup nslookup-host ping traceroute route arp netstat -;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20355 -;;;;;; 10021)) +;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from net/net-utils.el (autoload 'ifconfig "net-utils" "\ @@ -18876,8 +18788,8 @@ ;;;*** -;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20290 +;;;;;; 33419)) ;;; Generated autoloads from net/netrc.el (autoload 'netrc-credentials "netrc" "\ @@ -18890,7 +18802,7 @@ ;;;*** ;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el" -;;;;;; (20369 14251)) +;;;;;; (20373 41604)) ;;; Generated autoloads from net/network-stream.el (autoload 'open-network-stream "network-stream" "\ @@ -18981,7 +18893,7 @@ ;;;*** ;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend" -;;;;;; "net/newst-backend.el" (20355 10021)) +;;;;;; "net/newst-backend.el" (20244 35516)) ;;; Generated autoloads from net/newst-backend.el (autoload 'newsticker-running-p "newst-backend" "\ @@ -19003,7 +18915,7 @@ ;;;*** ;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el" -;;;;;; (20355 10021)) +;;;;;; (20434 28080)) ;;; Generated autoloads from net/newst-plainview.el (autoload 'newsticker-plainview "newst-plainview" "\ @@ -19014,7 +18926,7 @@ ;;;*** ;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el" -;;;;;; (20355 10021)) +;;;;;; (20434 28080)) ;;; Generated autoloads from net/newst-reader.el (autoload 'newsticker-show-news "newst-reader" "\ @@ -19025,7 +18937,7 @@ ;;;*** ;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p) -;;;;;; "newst-ticker" "net/newst-ticker.el" (20355 10021)) +;;;;;; "newst-ticker" "net/newst-ticker.el" (20428 57510)) ;;; Generated autoloads from net/newst-ticker.el (autoload 'newsticker-ticker-running-p "newst-ticker" "\ @@ -19046,7 +18958,7 @@ ;;;*** ;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el" -;;;;;; (20355 10021)) +;;;;;; (20434 28080)) ;;; Generated autoloads from net/newst-treeview.el (autoload 'newsticker-treeview "newst-treeview" "\ @@ -19057,7 +18969,7 @@ ;;;*** ;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/nndiary.el (autoload 'nndiary-generate-nov-databases "nndiary" "\ @@ -19067,8 +18979,8 @@ ;;;*** -;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/nndoc.el (autoload 'nndoc-add-type "nndoc" "\ @@ -19083,7 +18995,7 @@ ;;;*** ;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/nnfolder.el (autoload 'nnfolder-generate-active-file "nnfolder" "\ @@ -19095,7 +19007,7 @@ ;;;*** ;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" -;;;;;; (20355 10021)) +;;;;;; (20290 33419)) ;;; Generated autoloads from gnus/nnml.el (autoload 'nnml-generate-nov-databases "nnml" "\ @@ -19106,7 +19018,7 @@ ;;;*** ;;;### (autoloads (disable-command enable-command disabled-command-function) -;;;;;; "novice" "novice.el" (20399 35365)) +;;;;;; "novice" "novice.el" (20412 11425)) ;;; Generated autoloads from novice.el (define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1") @@ -19139,7 +19051,7 @@ ;;;*** ;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/nroff-mode.el (autoload 'nroff-mode "nroff-mode" "\ @@ -19154,7 +19066,7 @@ ;;;*** ;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el" -;;;;;; (20355 10021)) +;;;;;; (20446 34252)) ;;; Generated autoloads from nxml/nxml-glyph.el (autoload 'nxml-glyph-display-string "nxml-glyph" "\ @@ -19166,8 +19078,8 @@ ;;;*** -;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20369 -;;;;;; 14251)) +;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20446 +;;;;;; 34252)) ;;; Generated autoloads from nxml/nxml-mode.el (autoload 'nxml-mode "nxml-mode" "\ @@ -19229,7 +19141,7 @@ ;;;*** ;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm" -;;;;;; "nxml/nxml-uchnm.el" (20355 10021)) +;;;;;; "nxml/nxml-uchnm.el" (20244 35516)) ;;; Generated autoloads from nxml/nxml-uchnm.el (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\ @@ -19253,7 +19165,7 @@ ;;;;;; org-babel-pop-to-session-maybe org-babel-load-in-session-maybe ;;;;;; org-babel-expand-src-block-maybe org-babel-view-src-block-info ;;;;;; org-babel-execute-maybe org-babel-execute-safely-maybe) "ob" -;;;;;; "org/ob.el" (20417 65331)) +;;;;;; "org/ob.el" (20419 46656)) ;;; Generated autoloads from org/ob.el (autoload 'org-babel-execute-safely-maybe "ob" "\ @@ -19388,7 +19300,7 @@ beg-body --------- point at the beginning of the body end-body --------- point at the end of the body -\(fn FILE &rest BODY)" nil (quote macro)) +\(fn FILE &rest BODY)" nil t) (put 'org-babel-map-src-blocks 'lisp-indent-function '1) @@ -19397,7 +19309,7 @@ If FILE is nil evaluate BODY forms on source blocks in current buffer. -\(fn FILE &rest BODY)" nil (quote macro)) +\(fn FILE &rest BODY)" nil t) (put 'org-babel-map-inline-src-blocks 'lisp-indent-function '1) @@ -19406,14 +19318,14 @@ If FILE is nil evaluate BODY forms on source blocks in current buffer. -\(fn FILE &rest BODY)" nil (quote macro)) +\(fn FILE &rest BODY)" nil t) (put 'org-babel-map-call-lines 'lisp-indent-function '1) (autoload 'org-babel-map-executables "ob" "\ -\(fn FILE &rest BODY)" nil (quote macro)) +\(fn FILE &rest BODY)" nil t) (put 'org-babel-map-executables 'lisp-indent-function '1) @@ -19476,7 +19388,7 @@ ;;;*** ;;;### (autoloads (org-babel-describe-bindings) "ob-keys" "org/ob-keys.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from org/ob-keys.el (autoload 'org-babel-describe-bindings "ob-keys" "\ @@ -19487,7 +19399,7 @@ ;;;*** ;;;### (autoloads (org-babel-lob-get-info org-babel-lob-execute-maybe -;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (20355 10021)) +;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (20356 19083)) ;;; Generated autoloads from org/ob-lob.el (autoload 'org-babel-lob-ingest "ob-lob" "\ @@ -19512,7 +19424,7 @@ ;;;### (autoloads (org-babel-tangle org-babel-tangle-file org-babel-load-file ;;;;;; org-babel-tangle-lang-exts) "ob-tangle" "org/ob-tangle.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/ob-tangle.el (defvar org-babel-tangle-lang-exts '(("emacs-lisp" . "el")) "\ @@ -19554,7 +19466,7 @@ ;;;*** ;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from progmodes/octave-inf.el (autoload 'inferior-octave "octave-inf" "\ @@ -19577,7 +19489,7 @@ ;;;*** ;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" -;;;;;; (20388 65061)) +;;;;;; (20412 11425)) ;;; Generated autoloads from progmodes/octave-mod.el (autoload 'octave-mode "octave-mod" "\ @@ -19665,7 +19577,7 @@ ;;;;;; org-insert-link-global org-store-link org-run-like-in-org-mode ;;;;;; turn-on-orgstruct++ turn-on-orgstruct orgstruct-mode org-global-cycle ;;;;;; org-mode org-version org-babel-do-load-languages) "org" "org/org.el" -;;;;;; (20420 41510)) +;;;;;; (20420 52684)) ;;; Generated autoloads from org/org.el (autoload 'org-babel-do-load-languages "org" "\ @@ -19898,7 +19810,7 @@ ;;;;;; org-diary org-agenda-list-stuck-projects org-tags-view org-todo-list ;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views ;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda -;;;;;; org-agenda) "org-agenda" "org/org-agenda.el" (20420 41510)) +;;;;;; org-agenda) "org-agenda" "org/org-agenda.el" (20420 52684)) ;;; Generated autoloads from org/org-agenda.el (autoload 'org-agenda "org-agenda" "\ @@ -19945,7 +19857,7 @@ Parameters are alternating variable names and values that will be bound before running the agenda command. -\(fn CMD-KEY &rest PARAMETERS)" nil (quote macro)) +\(fn CMD-KEY &rest PARAMETERS)" nil t) (autoload 'org-batch-agenda-csv "org-agenda" "\ Run an agenda command in batch mode and send the result to STDOUT. @@ -19982,7 +19894,7 @@ priority-n The computed numerical priority agenda-day The day in the agenda where this is listed -\(fn CMD-KEY &rest PARAMETERS)" nil (quote macro)) +\(fn CMD-KEY &rest PARAMETERS)" nil t) (autoload 'org-store-agenda-views "org-agenda" "\ @@ -19992,7 +19904,7 @@ (autoload 'org-batch-store-agenda-views "org-agenda" "\ Run all custom agenda commands that have a file argument. -\(fn &rest PARAMETERS)" nil (quote macro)) +\(fn &rest PARAMETERS)" nil t) (autoload 'org-agenda-list "org-agenda" "\ Produce a daily/weekly view from all files in variable `org-agenda-files'. @@ -20152,7 +20064,7 @@ ;;;### (autoloads (org-archive-subtree-default-with-confirmation ;;;;;; org-archive-subtree-default) "org-archive" "org/org-archive.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/org-archive.el (autoload 'org-archive-subtree-default "org-archive" "\ @@ -20172,8 +20084,8 @@ ;;;### (autoloads (org-export-as-ascii org-export-region-as-ascii ;;;;;; org-replace-region-by-ascii org-export-as-ascii-to-buffer ;;;;;; org-export-as-utf8-to-buffer org-export-as-utf8 org-export-as-latin1-to-buffer -;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (20355 -;;;;;; 10021)) +;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (20345 +;;;;;; 61951)) ;;; Generated autoloads from org/org-ascii.el (autoload 'org-export-as-latin1 "org-ascii" "\ @@ -20246,8 +20158,8 @@ ;;;*** -;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (20356 +;;;;;; 19083)) ;;; Generated autoloads from org/org-attach.el (autoload 'org-attach "org-attach" "\ @@ -20259,7 +20171,7 @@ ;;;*** ;;;### (autoloads (org-bbdb-anniversaries) "org-bbdb" "org/org-bbdb.el" -;;;;;; (20355 10021)) +;;;;;; (20345 61951)) ;;; Generated autoloads from org/org-bbdb.el (autoload 'org-bbdb-anniversaries "org-bbdb" "\ @@ -20270,7 +20182,7 @@ ;;;*** ;;;### (autoloads (org-capture-import-remember-templates org-capture-insert-template-here -;;;;;; org-capture) "org-capture" "org/org-capture.el" (20355 10021)) +;;;;;; org-capture) "org-capture" "org/org-capture.el" (20356 19083)) ;;; Generated autoloads from org/org-capture.el (autoload 'org-capture "org-capture" "\ @@ -20308,7 +20220,7 @@ ;;;*** ;;;### (autoloads (org-clock-persistence-insinuate org-get-clocktable) -;;;;;; "org-clock" "org/org-clock.el" (20378 29222)) +;;;;;; "org-clock" "org/org-clock.el" (20428 57510)) ;;; Generated autoloads from org/org-clock.el (autoload 'org-get-clocktable "org-clock" "\ @@ -20326,7 +20238,7 @@ ;;;*** ;;;### (autoloads (org-datetree-find-date-create) "org-datetree" -;;;;;; "org/org-datetree.el" (20355 10021)) +;;;;;; "org/org-datetree.el" (20345 61951)) ;;; Generated autoloads from org/org-datetree.el (autoload 'org-datetree-find-date-create "org-datetree" "\ @@ -20342,7 +20254,7 @@ ;;;### (autoloads (org-export-as-docbook org-export-as-docbook-pdf-and-open ;;;;;; org-export-as-docbook-pdf org-export-region-as-docbook org-replace-region-by-docbook ;;;;;; org-export-as-docbook-to-buffer org-export-as-docbook-batch) -;;;;;; "org-docbook" "org/org-docbook.el" (20355 10021)) +;;;;;; "org-docbook" "org/org-docbook.el" (20356 19083)) ;;; Generated autoloads from org/org-docbook.el (autoload 'org-export-as-docbook-batch "org-docbook" "\ @@ -20419,7 +20331,7 @@ ;;;### (autoloads (org-insert-export-options-template org-export-as-org ;;;;;; org-export-visible org-export) "org-exp" "org/org-exp.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/org-exp.el (autoload 'org-export "org-exp" "\ @@ -20480,8 +20392,8 @@ ;;;*** ;;;### (autoloads (org-feed-show-raw-feed org-feed-goto-inbox org-feed-update -;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (20355 -;;;;;; 10021)) +;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from org/org-feed.el (autoload 'org-feed-update-all "org-feed" "\ @@ -20509,7 +20421,7 @@ ;;;*** ;;;### (autoloads (org-footnote-normalize org-footnote-action) "org-footnote" -;;;;;; "org/org-footnote.el" (20378 29222)) +;;;;;; "org/org-footnote.el" (20380 26775)) ;;; Generated autoloads from org/org-footnote.el (autoload 'org-footnote-action "org-footnote" "\ @@ -20560,7 +20472,7 @@ ;;;### (autoloads (org-freemind-to-org-mode org-freemind-from-org-sparse-tree ;;;;;; org-freemind-from-org-mode org-freemind-from-org-mode-node ;;;;;; org-freemind-show org-export-as-freemind) "org-freemind" -;;;;;; "org/org-freemind.el" (20355 10021)) +;;;;;; "org/org-freemind.el" (20356 19083)) ;;; Generated autoloads from org/org-freemind.el (autoload 'org-export-as-freemind "org-freemind" "\ @@ -20621,7 +20533,7 @@ ;;;### (autoloads (org-export-htmlize-generate-css org-export-as-html ;;;;;; org-export-region-as-html org-replace-region-by-html org-export-as-html-to-buffer ;;;;;; org-export-as-html-batch org-export-as-html-and-open) "org-html" -;;;;;; "org/org-html.el" (20355 10021)) +;;;;;; "org/org-html.el" (20356 19083)) ;;; Generated autoloads from org/org-html.el (put 'org-export-html-style-include-default 'safe-local-variable 'booleanp) @@ -20715,7 +20627,7 @@ ;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files ;;;;;; org-export-icalendar-this-file) "org-icalendar" "org/org-icalendar.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/org-icalendar.el (autoload 'org-export-icalendar-this-file "org-icalendar" "\ @@ -20743,7 +20655,7 @@ ;;;### (autoloads (org-id-store-link org-id-find-id-file org-id-find ;;;;;; org-id-goto org-id-get-with-outline-drilling org-id-get-with-outline-path-completion ;;;;;; org-id-get org-id-copy org-id-get-create) "org-id" "org/org-id.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from org/org-id.el (autoload 'org-id-get-create "org-id" "\ @@ -20812,7 +20724,7 @@ ;;;*** ;;;### (autoloads (org-indent-mode) "org-indent" "org/org-indent.el" -;;;;;; (20355 10021)) +;;;;;; (20345 61951)) ;;; Generated autoloads from org/org-indent.el (autoload 'org-indent-mode "org-indent" "\ @@ -20830,7 +20742,7 @@ ;;;*** ;;;### (autoloads (org-irc-store-link) "org-irc" "org/org-irc.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from org/org-irc.el (autoload 'org-irc-store-link "org-irc" "\ @@ -20843,7 +20755,7 @@ ;;;### (autoloads (org-export-as-pdf-and-open org-export-as-pdf org-export-as-latex ;;;;;; org-export-region-as-latex org-replace-region-by-latex org-export-as-latex-to-buffer ;;;;;; org-export-as-latex-batch) "org-latex" "org/org-latex.el" -;;;;;; (20355 10021)) +;;;;;; (20345 61951)) ;;; Generated autoloads from org/org-latex.el (autoload 'org-export-as-latex-batch "org-latex" "\ @@ -20924,7 +20836,7 @@ ;;;### (autoloads (org-lparse-region org-replace-region-by org-lparse-to-buffer ;;;;;; org-lparse-batch org-lparse-and-open) "org-lparse" "org/org-lparse.el" -;;;;;; (20417 65331)) +;;;;;; (20419 46656)) ;;; Generated autoloads from org/org-lparse.el (autoload 'org-lparse-and-open "org-lparse" "\ @@ -20981,8 +20893,8 @@ ;;;*** ;;;### (autoloads (org-mobile-create-sumo-agenda org-mobile-pull -;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (20355 -;;;;;; 10021)) +;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (20356 +;;;;;; 19083)) ;;; Generated autoloads from org/org-mobile.el (autoload 'org-mobile-push "org-mobile" "\ @@ -21008,7 +20920,7 @@ ;;;### (autoloads (org-export-as-odf-and-open org-export-as-odf org-export-odt-convert ;;;;;; org-export-as-odt org-export-as-odt-batch org-export-as-odt-and-open) -;;;;;; "org-odt" "org/org-odt.el" (20417 65331)) +;;;;;; "org-odt" "org/org-odt.el" (20419 46656)) ;;; Generated autoloads from org/org-odt.el (autoload 'org-export-as-odt-and-open "org-odt" "\ @@ -21078,7 +20990,7 @@ ;;;*** ;;;### (autoloads (org-plot/gnuplot) "org-plot" "org/org-plot.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from org/org-plot.el (autoload 'org-plot/gnuplot "org-plot" "\ @@ -21092,7 +21004,7 @@ ;;;### (autoloads (org-publish-current-project org-publish-current-file ;;;;;; org-publish-all org-publish) "org-publish" "org/org-publish.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/org-publish.el (defalias 'org-publish-project 'org-publish) @@ -21126,7 +21038,7 @@ ;;;### (autoloads (org-remember-handler org-remember org-remember-apply-template ;;;;;; org-remember-annotation org-remember-insinuate) "org-remember" -;;;;;; "org/org-remember.el" (20420 41510)) +;;;;;; "org/org-remember.el" (20420 52684)) ;;; Generated autoloads from org/org-remember.el (autoload 'org-remember-insinuate "org-remember" "\ @@ -21202,7 +21114,7 @@ ;;;*** ;;;### (autoloads (org-table-to-lisp orgtbl-mode turn-on-orgtbl) -;;;;;; "org-table" "org/org-table.el" (20417 65331)) +;;;;;; "org-table" "org/org-table.el" (20419 46656)) ;;; Generated autoloads from org/org-table.el (autoload 'turn-on-orgtbl "org-table" "\ @@ -21226,7 +21138,7 @@ ;;;*** ;;;### (autoloads (org-export-as-taskjuggler-and-open org-export-as-taskjuggler) -;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (20355 10021)) +;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (20356 19083)) ;;; Generated autoloads from org/org-taskjuggler.el (autoload 'org-export-as-taskjuggler "org-taskjuggler" "\ @@ -21254,7 +21166,7 @@ ;;;### (autoloads (org-timer-set-timer org-timer-item org-timer-change-times-in-region ;;;;;; org-timer org-timer-start) "org-timer" "org/org-timer.el" -;;;;;; (20355 10021)) +;;;;;; (20356 19083)) ;;; Generated autoloads from org/org-timer.el (autoload 'org-timer-start "org-timer" "\ @@ -21315,7 +21227,7 @@ ;;;*** ;;;### (autoloads (org-export-as-xoxo) "org-xoxo" "org/org-xoxo.el" -;;;;;; (20355 10021)) +;;;;;; (20345 61951)) ;;; Generated autoloads from org/org-xoxo.el (autoload 'org-export-as-xoxo "org-xoxo" "\ @@ -21327,7 +21239,7 @@ ;;;*** ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from outline.el (put 'outline-regexp 'safe-local-variable 'stringp) (put 'outline-heading-end-regexp 'safe-local-variable 'stringp) @@ -21391,7 +21303,7 @@ ;;;### (autoloads (list-packages describe-package package-initialize ;;;;;; package-refresh-contents package-install-file package-install-from-buffer ;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el" -;;;;;; (20394 17446)) +;;;;;; (20446 34252)) ;;; Generated autoloads from emacs-lisp/package.el (defvar package-enable-at-startup t "\ @@ -21461,7 +21373,7 @@ ;;;*** -;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20355 10021)) +;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20356 35090)) ;;; Generated autoloads from paren.el (defvar show-paren-mode nil "\ @@ -21488,7 +21400,7 @@ ;;;*** ;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" -;;;;;; (20355 10021)) +;;;;;; (20318 5885)) ;;; Generated autoloads from calendar/parse-time.el (put 'parse-time-rules 'risky-local-variable t) @@ -21501,8 +21413,8 @@ ;;;*** -;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20378 -;;;;;; 29222)) +;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20446 +;;;;;; 34252)) ;;; Generated autoloads from progmodes/pascal.el (autoload 'pascal-mode "pascal" "\ @@ -21555,7 +21467,7 @@ ;;;*** ;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache) -;;;;;; "password-cache" "password-cache.el" (20355 10021)) +;;;;;; "password-cache" "password-cache.el" (20244 35516)) ;;; Generated autoloads from password-cache.el (defvar password-cache t "\ @@ -21577,7 +21489,7 @@ ;;;*** ;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el" -;;;;;; (20421 62373)) +;;;;;; (20451 34853)) ;;; Generated autoloads from emacs-lisp/pcase.el (autoload 'pcase "pcase" "\ @@ -21612,7 +21524,7 @@ like `(,a . ,(pred (< a))) or, with more checks: `(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) -\(fn EXP &rest CASES)" nil (quote macro)) +\(fn EXP &rest CASES)" nil t) (put 'pcase 'lisp-indent-function '1) @@ -21621,7 +21533,7 @@ BODY should be an expression, and BINDINGS should be a list of bindings of the form (UPAT EXP). -\(fn BINDINGS &rest BODY)" nil (quote macro)) +\(fn BINDINGS &rest BODY)" nil t) (put 'pcase-let* 'lisp-indent-function '1) @@ -21630,14 +21542,14 @@ BODY should be a list of expressions, and BINDINGS should be a list of bindings of the form (UPAT EXP). -\(fn BINDINGS &rest BODY)" nil (quote macro)) +\(fn BINDINGS &rest BODY)" nil t) (put 'pcase-let 'lisp-indent-function '1) ;;;*** -;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from pcmpl-cvs.el (autoload 'pcomplete/cvs "pcmpl-cvs" "\ @@ -21648,7 +21560,7 @@ ;;;*** ;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) -;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20355 10021)) +;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20276 3849)) ;;; Generated autoloads from pcmpl-gnu.el (autoload 'pcomplete/gzip "pcmpl-gnu" "\ @@ -21676,7 +21588,7 @@ ;;;*** ;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) -;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20355 10021)) +;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20244 35516)) ;;; Generated autoloads from pcmpl-linux.el (autoload 'pcomplete/kill "pcmpl-linux" "\ @@ -21696,8 +21608,8 @@ ;;;*** -;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20361 -;;;;;; 20134)) +;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20373 +;;;;;; 41604)) ;;; Generated autoloads from pcmpl-rpm.el (autoload 'pcomplete/rpm "pcmpl-rpm" "\ @@ -21709,7 +21621,7 @@ ;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown ;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir -;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20376 40834)) +;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20375 3831)) ;;; Generated autoloads from pcmpl-unix.el (autoload 'pcomplete/cd "pcmpl-unix" "\ @@ -21766,8 +21678,8 @@ ;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list ;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete -;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20376 -;;;;;; 40834)) +;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20377 +;;;;;; 36816)) ;;; Generated autoloads from pcomplete.el (autoload 'pcomplete "pcomplete" "\ @@ -21826,7 +21738,7 @@ ;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status ;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" -;;;;;; "vc/pcvs.el" (20364 45187)) +;;;;;; "vc/pcvs.el" (20373 41604)) ;;; Generated autoloads from vc/pcvs.el (autoload 'cvs-checkout "pcvs" "\ @@ -21901,7 +21813,7 @@ ;;;*** -;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20355 10021)) +;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20356 35090)) ;;; Generated autoloads from vc/pcvs-defs.el (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\ @@ -21910,7 +21822,7 @@ ;;;*** ;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" -;;;;;; (20365 17199)) +;;;;;; (20373 41604)) ;;; Generated autoloads from progmodes/perl-mode.el (put 'perl-indent-level 'safe-local-variable 'integerp) (put 'perl-continued-statement-offset 'safe-local-variable 'integerp) @@ -21972,7 +21884,7 @@ ;;;*** ;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" -;;;;;; (20373 11301)) +;;;;;; (20373 41604)) ;;; Generated autoloads from textmodes/picture.el (autoload 'picture-mode "picture" "\ @@ -22053,7 +21965,7 @@ ;;;*** ;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el" -;;;;;; (20378 29222)) +;;;;;; (20380 26775)) ;;; Generated autoloads from gnus/plstore.el (autoload 'plstore-open "plstore" "\ @@ -22069,7 +21981,7 @@ ;;;*** ;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/po.el (autoload 'po-find-file-coding-system "po" "\ @@ -22080,7 +21992,7 @@ ;;;*** -;;;### (autoloads (pong) "pong" "play/pong.el" (20355 10021)) +;;;### (autoloads (pong) "pong" "play/pong.el" (20244 35516)) ;;; Generated autoloads from play/pong.el (autoload 'pong "pong" "\ @@ -22096,7 +22008,7 @@ ;;;*** -;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20355 10021)) +;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20244 35516)) ;;; Generated autoloads from gnus/pop3.el (autoload 'pop3-movemail "pop3" "\ @@ -22109,7 +22021,7 @@ ;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression ;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el" -;;;;;; (20355 10021)) +;;;;;; (20276 3849)) ;;; Generated autoloads from emacs-lisp/pp.el (autoload 'pp-to-string "pp" "\ @@ -22177,7 +22089,7 @@ ;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview ;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript ;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from printing.el (autoload 'pr-interface "printing" "\ @@ -22764,7 +22676,7 @@ ;;;*** -;;;### (autoloads (proced) "proced" "proced.el" (20355 10021)) +;;;### (autoloads (proced) "proced" "proced.el" (20428 57510)) ;;; Generated autoloads from proced.el (autoload 'proced "proced" "\ @@ -22780,7 +22692,7 @@ ;;;*** ;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog" -;;;;;; "progmodes/prolog.el" (20397 45851)) +;;;;;; "progmodes/prolog.el" (20412 11425)) ;;; Generated autoloads from progmodes/prolog.el (autoload 'prolog-mode "prolog" "\ @@ -22815,8 +22727,8 @@ ;;;*** -;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from ps-bdf.el (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\ @@ -22827,8 +22739,8 @@ ;;;*** -;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/ps-mode.el (autoload 'ps-mode "ps-mode" "\ @@ -22879,8 +22791,8 @@ ;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer ;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces ;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type -;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20355 -;;;;;; 10021)) +;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from ps-print.el (defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\ @@ -23076,94 +22988,27 @@ ;;;*** -;;;### (autoloads (jython-mode python-mode python-after-info-look -;;;;;; run-python) "python" "progmodes/python.el" (20376 40834)) +;;;### (autoloads (python-mode) "python" "progmodes/python.el" (20448 +;;;;;; 45252)) ;;; Generated autoloads from progmodes/python.el -(add-to-list 'interpreter-mode-alist (cons (purecopy "jython") 'jython-mode)) +(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) (add-to-list 'interpreter-mode-alist (cons (purecopy "python") 'python-mode)) -(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) - -(autoload 'run-python "python" "\ -Run an inferior Python process, input and output via buffer *Python*. -CMD is the Python command to run. NOSHOW non-nil means don't -show the buffer automatically. - -Interactively, a prefix arg means to prompt for the initial -Python command line (default is `python-command'). - -A new process is started if one isn't running attached to -`python-buffer', or if called from Lisp with non-nil arg NEW. -Otherwise, if a process is already running in `python-buffer', -switch to that buffer. - -This command runs the hook `inferior-python-mode-hook' after -running `comint-mode-hook'. Type \\[describe-mode] in the -process buffer for a list of commands. - -By default, Emacs inhibits the loading of Python modules from the -current working directory, for security reasons. To disable this -behavior, change `python-remove-cwd-from-path' to nil. - -\(fn &optional CMD NOSHOW NEW)" t nil) - -(autoload 'python-after-info-look "python" "\ -Set up info-look for Python. -Used with `eval-after-load'. - -\(fn)" nil nil) - (autoload 'python-mode "python" "\ Major mode for editing Python files. -Turns on Font Lock mode unconditionally since it is currently required -for correct parsing of the source. -See also `jython-mode', which is actually invoked if the buffer appears to -contain Jython code. See also `run-python' and associated Python mode -commands for running Python under Emacs. - -The Emacs commands which work with `defun's, e.g. \\[beginning-of-defun], deal -with nested `def' and `class' blocks. They take the innermost one as -current without distinguishing method and class definitions. Used multiple -times, they move over others at the same indentation level until they reach -the end of definitions at that level, when they move up a level. -\\ -Colon is electric: it outdents the line if appropriate, e.g. for -an else statement. \\[python-backspace] at the beginning of an indented statement -deletes a level of indentation to close the current block; otherwise it -deletes a character backward. TAB indents the current line relative to -the preceding code. Successive TABs, with no intervening command, cycle -through the possibilities for indentation on the basis of enclosing blocks. - -\\[fill-paragraph] fills comments and multi-line strings appropriately, but has no -effect outside them. - -Supports Eldoc mode (only for functions, using a Python process), -Info-Look and Imenu. In Outline minor mode, `class' and `def' -lines count as headers. Symbol completion is available in the -same way as in the Python shell using the `rlcompleter' module -and this is added to the Hippie Expand functions locally if -Hippie Expand mode is turned on. Completion of symbols of the -form x.y only works if the components are literal -module/attribute names, not variables. An abbrev table is set up -with skeleton expansions for compound statement templates. \\{python-mode-map} - -\(fn)" t nil) - -(autoload 'jython-mode "python" "\ -Major mode for editing Jython files. -Like `python-mode', but sets up parameters for Jython subprocesses. -Runs `jython-mode-hook' after `python-mode-hook'. +Entry to this mode calls the value of `python-mode-hook' +if that value is non-nil. \(fn)" t nil) ;;;*** ;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/qp.el (autoload 'quoted-printable-decode-region "qp" "\ @@ -23186,7 +23031,7 @@ ;;;;;; quail-defrule quail-install-decode-map quail-install-map ;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout ;;;;;; quail-define-package quail-use-package quail-title) "quail" -;;;;;; "international/quail.el" (20356 55829)) +;;;;;; "international/quail.el" (20331 16635)) ;;; Generated autoloads from international/quail.el (autoload 'quail-title "quail" "\ @@ -23336,7 +23181,7 @@ no-decode-map --- the value non-nil means that decoding map is not generated for the following translations. -\(fn &rest RULES)" nil (quote macro)) +\(fn &rest RULES)" nil t) (autoload 'quail-install-map "quail" "\ Install the Quail map MAP in the current Quail package. @@ -23417,8 +23262,7 @@ ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls ;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url -;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20355 -;;;;;; 10021)) +;;;;;; quickurl-ask) "quickurl" "net/quickurl.el" (20356 35090)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -23432,15 +23276,6 @@ in your ~/.emacs (after loading/requiring quickurl).") -(autoload 'quickurl "quickurl" "\ -Insert a URL based on LOOKUP. - -If not supplied LOOKUP is taken to be the word at point in the current -buffer, this default action can be modified via -`quickurl-grab-lookup-function'. - -\(fn &optional LOOKUP)" t nil) - (autoload 'quickurl-ask "quickurl" "\ Insert a URL, with `completing-read' prompt, based on LOOKUP. @@ -23490,7 +23325,7 @@ ;;;*** ;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" -;;;;;; "net/rcirc.el" (20371 55972)) +;;;;;; "net/rcirc.el" (20434 28080)) ;;; Generated autoloads from net/rcirc.el (autoload 'rcirc "rcirc" "\ @@ -23528,8 +23363,8 @@ ;;;*** -;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20290 +;;;;;; 33419)) ;;; Generated autoloads from net/rcompile.el (autoload 'remote-compile "rcompile" "\ @@ -23541,7 +23376,7 @@ ;;;*** ;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from emacs-lisp/re-builder.el (defalias 'regexp-builder 're-builder) @@ -23559,7 +23394,7 @@ ;;;*** -;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 2211)) +;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 35090)) ;;; Generated autoloads from recentf.el (defvar recentf-mode nil "\ @@ -23589,7 +23424,7 @@ ;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle ;;;;;; insert-rectangle yank-rectangle kill-rectangle extract-rectangle ;;;;;; delete-extract-rectangle delete-rectangle) "rect" "rect.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from rect.el (define-key ctl-x-r-map "c" 'clear-rectangle) (define-key ctl-x-r-map "k" 'kill-rectangle) @@ -23725,8 +23560,8 @@ ;;;*** -;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from textmodes/refill.el (autoload 'refill-mode "refill" "\ @@ -23747,7 +23582,7 @@ ;;;*** ;;;### (autoloads (reftex-reset-scanning-information reftex-mode -;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20355 10021)) +;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20244 35516)) ;;; Generated autoloads from textmodes/reftex.el (autoload 'turn-on-reftex "reftex" "\ @@ -23803,7 +23638,7 @@ ;;;*** ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/reftex-cite.el (autoload 'reftex-citation "reftex-cite" "\ @@ -23833,7 +23668,7 @@ ;;;*** ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" -;;;;;; (20420 41510)) +;;;;;; (20428 57510)) ;;; Generated autoloads from textmodes/reftex-global.el (autoload 'reftex-isearch-minor-mode "reftex-global" "\ @@ -23850,7 +23685,7 @@ ;;;*** ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from textmodes/reftex-index.el (autoload 'reftex-index-phrases-mode "reftex-index" "\ @@ -23883,7 +23718,7 @@ ;;;*** ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/reftex-parse.el (autoload 'reftex-all-document-files "reftex-parse" "\ @@ -23895,8 +23730,8 @@ ;;;*** -;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20355 -;;;;;; 10021)) +;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from textmodes/reftex-vars.el (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) @@ -23906,7 +23741,7 @@ ;;;*** ;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" -;;;;;; (20363 61861)) +;;;;;; (20373 41604)) ;;; Generated autoloads from emacs-lisp/regexp-opt.el (autoload 'regexp-opt "regexp-opt" "\ @@ -23937,7 +23772,7 @@ ;;;### (autoloads (remember-diary-extract-entries remember-clipboard ;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from textmodes/remember.el (autoload 'remember "remember" "\ @@ -23968,7 +23803,7 @@ ;;;*** -;;;### (autoloads (repeat) "repeat" "repeat.el" (20388 65061)) +;;;### (autoloads (repeat) "repeat" "repeat.el" (20412 11425)) ;;; Generated autoloads from repeat.el (autoload 'repeat "repeat" "\ @@ -23991,7 +23826,7 @@ ;;;*** ;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from mail/reporter.el (autoload 'reporter-submit-bug-report "reporter" "\ @@ -24023,7 +23858,7 @@ ;;;*** ;;;### (autoloads (reposition-window) "reposition" "reposition.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from reposition.el (autoload 'reposition-window "reposition" "\ @@ -24050,7 +23885,7 @@ ;;;*** ;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from reveal.el (autoload 'reveal-mode "reveal" "\ @@ -24086,7 +23921,7 @@ ;;;*** ;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" -;;;;;; (20355 10021)) +;;;;;; (20331 12564)) ;;; Generated autoloads from emacs-lisp/ring.el (autoload 'ring-p "ring" "\ @@ -24101,7 +23936,7 @@ ;;;*** -;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20402 11562)) +;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20412 11425)) ;;; Generated autoloads from net/rlogin.el (autoload 'rlogin "rlogin" "\ @@ -24150,7 +23985,7 @@ ;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers ;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers ;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory -;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20414 2727)) +;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20438 17064)) ;;; Generated autoloads from mail/rmail.el (defvar rmail-file-name (purecopy "~/RMAIL") "\ @@ -24348,7 +24183,7 @@ ;;;*** ;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen -;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20355 10021)) +;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20244 35516)) ;;; Generated autoloads from mail/rmailout.el (put 'rmail-output-file-alist 'risky-local-variable t) @@ -24413,7 +24248,7 @@ ;;;*** ;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from nxml/rng-cmpct.el (autoload 'rng-c-load-schema "rng-cmpct" "\ @@ -24425,7 +24260,7 @@ ;;;*** ;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from nxml/rng-nxml.el (autoload 'rng-nxml-mode-init "rng-nxml" "\ @@ -24438,7 +24273,7 @@ ;;;*** ;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el" -;;;;;; (20355 10021)) +;;;;;; (20290 33419)) ;;; Generated autoloads from nxml/rng-valid.el (autoload 'rng-validate-mode "rng-valid" "\ @@ -24468,8 +24303,8 @@ ;;;*** -;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from nxml/rng-xsd.el (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile) @@ -24497,7 +24332,7 @@ ;;;*** ;;;### (autoloads (robin-use-package robin-modify-package robin-define-package) -;;;;;; "robin" "international/robin.el" (20355 10021)) +;;;;;; "robin" "international/robin.el" (20428 57510)) ;;; Generated autoloads from international/robin.el (autoload 'robin-define-package "robin" "\ @@ -24511,7 +24346,7 @@ If there already exists a robin package whose name is NAME, the new one replaces the old one. -\(fn NAME DOCSTRING &rest RULES)" nil (quote macro)) +\(fn NAME DOCSTRING &rest RULES)" nil t) (autoload 'robin-modify-package "robin" "\ Change a rule in an already defined robin package. @@ -24530,7 +24365,7 @@ ;;;*** ;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region -;;;;;; rot13-string rot13) "rot13" "rot13.el" (20355 10021)) +;;;;;; rot13-string rot13) "rot13" "rot13.el" (20244 35516)) ;;; Generated autoloads from rot13.el (autoload 'rot13 "rot13" "\ @@ -24568,7 +24403,7 @@ ;;;*** ;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el" -;;;;;; (20421 62373)) +;;;;;; (20451 21022)) ;;; Generated autoloads from textmodes/rst.el (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) @@ -24599,7 +24434,7 @@ ;;;*** ;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" -;;;;;; (20375 53029)) +;;;;;; (20374 56770)) ;;; Generated autoloads from progmodes/ruby-mode.el (autoload 'ruby-mode "ruby-mode" "\ @@ -24620,8 +24455,8 @@ ;;;*** -;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from ruler-mode.el (defvar ruler-mode nil "\ @@ -24638,8 +24473,8 @@ ;;;*** -;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20451 +;;;;;; 21074)) ;;; Generated autoloads from emacs-lisp/rx.el (autoload 'rx-to-string "rx" "\ @@ -24946,12 +24781,12 @@ `(regexp REGEXP)' include REGEXP in string notation in the result. -\(fn &rest REGEXPS)" nil (quote macro)) +\(fn &rest REGEXPS)" nil t) ;;;*** -;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20318 +;;;;;; 5885)) ;;; Generated autoloads from savehist.el (defvar savehist-mode nil "\ @@ -24983,7 +24818,7 @@ ;;;*** ;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from progmodes/scheme.el (autoload 'scheme-mode "scheme" "\ @@ -24993,7 +24828,7 @@ In addition, if an inferior Scheme process is running, some additional commands will be defined, for evaluating expressions and controlling the interpreter, and the state of the process will be displayed in the -modeline of all Scheme buffers. The names of commands that interact +mode line of all Scheme buffers. The names of commands that interact with the Scheme process start with \"xscheme-\" if you use the MIT Scheme-specific `xscheme' package; for more information see the documentation for `xscheme-interaction-mode'. Use \\[run-scheme] to @@ -25025,7 +24860,7 @@ ;;;*** ;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/score-mode.el (autoload 'gnus-score-mode "score-mode" "\ @@ -25039,7 +24874,7 @@ ;;;*** ;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" -;;;;;; (20363 61861)) +;;;;;; (20373 41604)) ;;; Generated autoloads from scroll-all.el (defvar scroll-all-mode nil "\ @@ -25065,7 +24900,7 @@ ;;;*** ;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" -;;;;;; (20355 10021)) +;;;;;; (20276 3849)) ;;; Generated autoloads from scroll-lock.el (autoload 'scroll-lock-mode "scroll-lock" "\ @@ -25081,7 +24916,7 @@ ;;;*** -;;;### (autoloads nil "secrets" "net/secrets.el" (20355 10021)) +;;;### (autoloads nil "secrets" "net/secrets.el" (20318 5885)) ;;; Generated autoloads from net/secrets.el (when (featurep 'dbusbind) (autoload 'secrets-show-secrets "secrets" nil t)) @@ -25089,7 +24924,7 @@ ;;;*** ;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic" -;;;;;; "cedet/semantic.el" (20355 10021)) +;;;;;; "cedet/semantic.el" (20356 35090)) ;;; Generated autoloads from cedet/semantic.el (defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\ @@ -25143,7 +24978,7 @@ ;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name ;;;;;; mail-header-separator send-mail-function mail-interactive ;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) -;;;;;; "sendmail" "mail/sendmail.el" (20417 65331)) +;;;;;; "sendmail" "mail/sendmail.el" (20419 46656)) ;;; Generated autoloads from mail/sendmail.el (defvar mail-from-style 'default "\ @@ -25425,8 +25260,8 @@ ;;;*** ;;;### (autoloads (server-save-buffers-kill-terminal server-mode -;;;;;; server-force-delete server-start) "server" "server.el" (20370 -;;;;;; 35109)) +;;;;;; server-force-delete server-start) "server" "server.el" (20373 +;;;;;; 41604)) ;;; Generated autoloads from server.el (put 'server-host 'risky-local-variable t) @@ -25493,7 +25328,7 @@ ;;;*** -;;;### (autoloads (ses-mode) "ses" "ses.el" (20373 11301)) +;;;### (autoloads (ses-mode) "ses" "ses.el" (20428 57510)) ;;; Generated autoloads from ses.el (autoload 'ses-mode "ses" "\ @@ -25512,7 +25347,7 @@ ;;;*** ;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20428 57510)) ;;; Generated autoloads from textmodes/sgml-mode.el (autoload 'sgml-mode "sgml-mode" "\ @@ -25578,7 +25413,7 @@ ;;;*** ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" -;;;;;; (20397 18394)) +;;;;;; (20412 11425)) ;;; Generated autoloads from progmodes/sh-script.el (put 'sh-shell 'safe-local-variable 'symbolp) @@ -25642,7 +25477,7 @@ ;;;*** ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload 'list-load-path-shadows "shadow" "\ @@ -25692,8 +25527,8 @@ ;;;*** ;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group -;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20355 -;;;;;; 10021)) +;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from shadowfile.el (autoload 'shadow-define-cluster "shadowfile" "\ @@ -25732,7 +25567,7 @@ ;;;*** ;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" -;;;;;; (20402 36105)) +;;;;;; (20412 11425)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ @@ -25780,8 +25615,8 @@ ;;;*** -;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20446 +;;;;;; 34252)) ;;; Generated autoloads from gnus/shr.el (autoload 'shr-insert-document "shr" "\ @@ -25794,7 +25629,7 @@ ;;;*** ;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage) -;;;;;; "sieve" "gnus/sieve.el" (20355 10021)) +;;;;;; "sieve" "gnus/sieve.el" (20244 35516)) ;;; Generated autoloads from gnus/sieve.el (autoload 'sieve-manage "sieve" "\ @@ -25815,7 +25650,7 @@ ;;;*** ;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/sieve-mode.el (autoload 'sieve-mode "sieve-mode" "\ @@ -25830,8 +25665,8 @@ ;;;*** -;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from progmodes/simula.el (autoload 'simula-mode "simula" "\ @@ -25880,7 +25715,7 @@ ;;;*** ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new -;;;;;; define-skeleton) "skeleton" "skeleton.el" (20406 8611)) +;;;;;; define-skeleton) "skeleton" "skeleton.el" (20412 11425)) ;;; Generated autoloads from skeleton.el (defvar skeleton-filter-function 'identity "\ @@ -25891,7 +25726,7 @@ DOCUMENTATION is that of the command. SKELETON is as defined under `skeleton-insert'. -\(fn COMMAND DOCUMENTATION &rest SKELETON)" nil (quote macro)) +\(fn COMMAND DOCUMENTATION &rest SKELETON)" nil t) (put 'define-skeleton 'doc-string-elt '2) @@ -25992,7 +25827,7 @@ ;;;*** ;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff) -;;;;;; "smerge-mode" "vc/smerge-mode.el" (20415 23587)) +;;;;;; "smerge-mode" "vc/smerge-mode.el" (20415 57974)) ;;; Generated autoloads from vc/smerge-mode.el (autoload 'smerge-ediff "smerge-mode" "\ @@ -26020,7 +25855,7 @@ ;;;*** ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/smiley.el (autoload 'smiley-region "smiley" "\ @@ -26038,7 +25873,7 @@ ;;;*** ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" -;;;;;; "mail/smtpmail.el" (20402 11562)) +;;;;;; "mail/smtpmail.el" (20412 11425)) ;;; Generated autoloads from mail/smtpmail.el (autoload 'smtpmail-send-it "smtpmail" "\ @@ -26053,7 +25888,7 @@ ;;;*** -;;;### (autoloads (snake) "snake" "play/snake.el" (20355 10021)) +;;;### (autoloads (snake) "snake" "play/snake.el" (20244 35516)) ;;; Generated autoloads from play/snake.el (autoload 'snake "snake" "\ @@ -26077,7 +25912,7 @@ ;;;*** ;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from net/snmp-mode.el (autoload 'snmp-mode "snmp-mode" "\ @@ -26106,8 +25941,8 @@ ;;;*** -;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from calendar/solar.el (autoload 'sunrise-sunset "solar" "\ @@ -26122,8 +25957,8 @@ ;;;*** -;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20428 +;;;;;; 57510)) ;;; Generated autoloads from play/solitaire.el (autoload 'solitaire "solitaire" "\ @@ -26200,7 +26035,7 @@ ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields ;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs -;;;;;; sort-lines sort-subr) "sort" "sort.el" (20355 10021)) +;;;;;; sort-lines sort-subr) "sort" "sort.el" (20331 12564)) ;;; Generated autoloads from sort.el (put 'sort-fold-case 'safe-local-variable 'booleanp) @@ -26344,8 +26179,8 @@ ;;;*** -;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from gnus/spam.el (autoload 'spam-initialize "spam" "\ @@ -26361,7 +26196,7 @@ ;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file ;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" -;;;;;; "gnus/spam-report.el" (20355 10021)) +;;;;;; "gnus/spam-report.el" (20244 35516)) ;;; Generated autoloads from gnus/spam-report.el (autoload 'spam-report-process-queue "spam-report" "\ @@ -26404,7 +26239,7 @@ ;;;*** ;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" -;;;;;; "speedbar.el" (20399 35365)) +;;;;;; "speedbar.el" (20434 28080)) ;;; Generated autoloads from speedbar.el (defalias 'speedbar 'speedbar-frame-mode) @@ -26428,8 +26263,8 @@ ;;;*** -;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from play/spook.el (autoload 'spook "spook" "\ @@ -26448,7 +26283,7 @@ ;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix ;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect ;;;;;; sql-mode sql-help sql-add-product-keywords) "sql" "progmodes/sql.el" -;;;;;; (20355 10021)) +;;;;;; (20318 5885)) ;;; Generated autoloads from progmodes/sql.el (autoload 'sql-add-product-keywords "sql" "\ @@ -26944,7 +26779,7 @@ ;;;*** ;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from cedet/srecode/srt-mode.el (autoload 'srecode-template-mode "srecode/srt-mode" "\ @@ -26957,7 +26792,7 @@ ;;;*** ;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from gnus/starttls.el (autoload 'starttls-open-stream "starttls" "\ @@ -26984,8 +26819,8 @@ ;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes ;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke ;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke -;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20355 -;;;;;; 10021)) +;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20428 +;;;;;; 57510)) ;;; Generated autoloads from strokes.el (autoload 'strokes-global-set-stroke "strokes" "\ @@ -27099,7 +26934,7 @@ ;;;*** ;;;### (autoloads (studlify-buffer studlify-word studlify-region) -;;;;;; "studly" "play/studly.el" (20355 10021)) +;;;;;; "studly" "play/studly.el" (19765 60663)) ;;; Generated autoloads from play/studly.el (autoload 'studlify-region "studly" "\ @@ -27120,7 +26955,7 @@ ;;;*** ;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from progmodes/subword.el (autoload 'subword-mode "subword" "\ @@ -27176,7 +27011,7 @@ ;;;*** ;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" -;;;;;; (20355 10021)) +;;;;;; (20276 3849)) ;;; Generated autoloads from mail/supercite.el (autoload 'sc-cite-original "supercite" "\ @@ -27208,8 +27043,8 @@ ;;;*** -;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from t-mouse.el (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") @@ -27237,7 +27072,7 @@ ;;;*** -;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20355 10021)) +;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20244 35516)) ;;; Generated autoloads from tabify.el (autoload 'untabify "tabify" "\ @@ -27272,7 +27107,7 @@ ;;;;;; table-recognize table-insert-row-column table-insert-column ;;;;;; table-insert-row table-insert table-point-left-cell-hook ;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) -;;;;;; "table" "textmodes/table.el" (20355 10021)) +;;;;;; "table" "textmodes/table.el" (20434 28080)) ;;; Generated autoloads from textmodes/table.el (defvar table-cell-map-hook nil "\ @@ -27860,7 +27695,7 @@ ;;;*** -;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20355 10021)) +;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20244 35516)) ;;; Generated autoloads from talk.el (autoload 'talk-connect "talk" "\ @@ -27875,7 +27710,7 @@ ;;;*** -;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20387 44199)) +;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20412 11425)) ;;; Generated autoloads from tar-mode.el (autoload 'tar-mode "tar-mode" "\ @@ -27899,7 +27734,7 @@ ;;;*** ;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" -;;;;;; "progmodes/tcl.el" (20355 10021)) +;;;;;; "progmodes/tcl.el" (20356 35090)) ;;; Generated autoloads from progmodes/tcl.el (autoload 'tcl-mode "tcl" "\ @@ -27947,7 +27782,7 @@ ;;;*** -;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20355 10021)) +;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20244 35516)) ;;; Generated autoloads from net/telnet.el (autoload 'telnet "telnet" "\ @@ -27973,7 +27808,7 @@ ;;;*** ;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el" -;;;;;; (20397 18394)) +;;;;;; (20451 20881)) ;;; Generated autoloads from term.el (autoload 'make-term "term" "\ @@ -28015,8 +27850,8 @@ ;;;*** -;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from terminal.el (autoload 'terminal-emulator "terminal" "\ @@ -28053,7 +27888,7 @@ ;;;*** ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emacs-lisp/testcover.el (autoload 'testcover-this-defun "testcover" "\ @@ -28063,7 +27898,7 @@ ;;;*** -;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20355 10021)) +;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20244 35516)) ;;; Generated autoloads from play/tetris.el (autoload 'tetris "tetris" "\ @@ -28094,7 +27929,7 @@ ;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command ;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp ;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" -;;;;;; (20364 45187)) +;;;;;; (20446 34252)) ;;; Generated autoloads from textmodes/tex-mode.el (defvar tex-shell-file-name nil "\ @@ -28396,7 +28231,7 @@ ;;;*** ;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) -;;;;;; "texinfmt" "textmodes/texinfmt.el" (20355 10021)) +;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 28080)) ;;; Generated autoloads from textmodes/texinfmt.el (autoload 'texinfo-format-buffer "texinfmt" "\ @@ -28436,7 +28271,7 @@ ;;;*** ;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) -;;;;;; "texinfo" "textmodes/texinfo.el" (20355 10021)) +;;;;;; "texinfo" "textmodes/texinfo.el" (20244 35516)) ;;; Generated autoloads from textmodes/texinfo.el (defvar texinfo-open-quote (purecopy "``") "\ @@ -28522,7 +28357,7 @@ ;;;### (autoloads (thai-composition-function thai-compose-buffer ;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el" -;;;;;; (20355 10021)) +;;;;;; (20276 3849)) ;;; Generated autoloads from language/thai-util.el (autoload 'thai-compose-region "thai-util" "\ @@ -28551,7 +28386,7 @@ ;;;### (autoloads (list-at-point number-at-point symbol-at-point ;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) -;;;;;; "thingatpt" "thingatpt.el" (20416 44451)) +;;;;;; "thingatpt" "thingatpt.el" (20419 46656)) ;;; Generated autoloads from thingatpt.el (autoload 'forward-thing "thingatpt" "\ @@ -28614,7 +28449,7 @@ ;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked ;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from thumbs.el (autoload 'thumbs-find-thumb "thumbs" "\ @@ -28652,8 +28487,8 @@ ;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer ;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region ;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription -;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20355 -;;;;;; 10021)) +;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from language/tibet-util.el (autoload 'tibetan-char-p "tibet-util" "\ @@ -28727,7 +28562,7 @@ ;;;*** ;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" -;;;;;; (20373 11301)) +;;;;;; (20373 41604)) ;;; Generated autoloads from textmodes/tildify.el (autoload 'tildify-region "tildify" "\ @@ -28752,7 +28587,7 @@ ;;;### (autoloads (emacs-init-time emacs-uptime display-time-world ;;;;;; display-time-mode display-time display-time-day-and-date) -;;;;;; "time" "time.el" (20387 44199)) +;;;;;; "time" "time.el" (20412 11425)) ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ @@ -28818,7 +28653,7 @@ ;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day ;;;;;; time-add time-subtract time-since days-to-time time-less-p ;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from calendar/time-date.el (autoload 'date-to-time "time-date" "\ @@ -28932,7 +28767,7 @@ ;;;*** ;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" -;;;;;; "time-stamp.el" (20355 10021)) +;;;;;; "time-stamp.el" (20244 35516)) ;;; Generated autoloads from time-stamp.el (put 'time-stamp-format 'safe-local-variable 'stringp) (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p) @@ -28975,18 +28810,18 @@ ;;;### (autoloads (timeclock-when-to-leave-string timeclock-workday-elapsed-string ;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out ;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in -;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el" -;;;;;; (20355 10021)) +;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el" +;;;;;; (20428 57510)) ;;; Generated autoloads from calendar/timeclock.el -(autoload 'timeclock-modeline-display "timeclock" "\ -Toggle display of the amount of time left today in the modeline. +(autoload 'timeclock-mode-line-display "timeclock" "\ +Toggle display of the amount of time left today in the mode line. If `timeclock-use-display-time' is non-nil (the default), then -the function `display-time-mode' must be active, and the modeline +the function `display-time-mode' must be active, and the mode line will be updated whenever the time display is updated. Otherwise, the timeclock will use its own sixty second timer to do its -updating. With prefix ARG, turn modeline display on if and only -if ARG is positive. Returns the new status of timeclock modeline +updating. With prefix ARG, turn mode line display on if and only +if ARG is positive. Returns the new status of timeclock mode line display (non-nil means on). \(fn &optional ARG)" t nil) @@ -29076,7 +28911,7 @@ ;;;*** ;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" -;;;;;; "international/titdic-cnv.el" (20355 10021)) +;;;;;; "international/titdic-cnv.el" (20290 33419)) ;;; Generated autoloads from international/titdic-cnv.el (autoload 'titdic-convert "titdic-cnv" "\ @@ -29099,7 +28934,7 @@ ;;;*** ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" -;;;;;; "tmm.el" (20356 55829)) +;;;;;; "tmm.el" (20432 55251)) ;;; Generated autoloads from tmm.el (define-key global-map "\M-`" 'tmm-menubar) (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) @@ -29139,7 +28974,7 @@ ;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities ;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) -;;;;;; "todo-mode" "calendar/todo-mode.el" (20355 10021)) +;;;;;; "todo-mode" "calendar/todo-mode.el" (20244 35516)) ;;; Generated autoloads from calendar/todo-mode.el (autoload 'todo-add-category "todo-mode" "\ @@ -29199,7 +29034,7 @@ ;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu ;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame) -;;;;;; "tool-bar" "tool-bar.el" (20355 10021)) +;;;;;; "tool-bar" "tool-bar.el" (20290 33419)) ;;; Generated autoloads from tool-bar.el (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\ @@ -29270,7 +29105,7 @@ ;;;*** ;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" -;;;;;; (20399 35365)) +;;;;;; (20412 11425)) ;;; Generated autoloads from emulation/tpu-edt.el (defvar tpu-edt-mode nil "\ @@ -29300,7 +29135,7 @@ ;;;*** ;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emulation/tpu-mapper.el (autoload 'tpu-mapper "tpu-mapper" "\ @@ -29334,7 +29169,7 @@ ;;;*** -;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20355 10021)) +;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/tq.el (autoload 'tq-create "tq" "\ @@ -29348,7 +29183,7 @@ ;;;*** ;;;### (autoloads (trace-function-background trace-function trace-buffer) -;;;;;; "trace" "emacs-lisp/trace.el" (20355 10021)) +;;;;;; "trace" "emacs-lisp/trace.el" (20244 35516)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer (purecopy "*trace-output*") "\ @@ -29385,7 +29220,7 @@ ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion ;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers ;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp" -;;;;;; "net/tramp.el" (20373 11301)) +;;;;;; "net/tramp.el" (20446 34252)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -29405,7 +29240,7 @@ (custom-autoload 'tramp-syntax "tramp" t) -(defconst tramp-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) "\\`/\\([^[/:]\\{2,\\}\\|[^/]\\{2,\\}]\\):" "\\`/\\([^[/:]+\\|[^/]+]\\):") "\ +(defconst tramp-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) "\\`/\\([^[/|:]\\{2,\\}\\|[^/|]\\{2,\\}]\\):" "\\`/\\([^[/|:]+\\|[^/|]+]\\):") "\ Value for `tramp-file-name-regexp' for unified remoting. Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and Tramp. See `tramp-file-name-structure' for more explanations. @@ -29417,7 +29252,7 @@ XEmacs uses a separate filename syntax for Tramp and EFS. See `tramp-file-name-structure' for more explanations.") -(defconst tramp-file-name-regexp-url "\\`/[^/:]+://" "\ +(defconst tramp-file-name-regexp-url "\\`/[^/|:]+://" "\ Value for `tramp-file-name-regexp' for URL-like remoting. See `tramp-file-name-structure' for more explanations.") @@ -29518,7 +29353,7 @@ ;;;*** ;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el" -;;;;;; (20355 10021)) +;;;;;; (20438 17064)) ;;; Generated autoloads from net/tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ @@ -29528,8 +29363,8 @@ ;;;*** -;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20369 -;;;;;; 14251)) +;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20373 +;;;;;; 41604)) ;;; Generated autoloads from tutorial.el (autoload 'help-with-tutorial "tutorial" "\ @@ -29554,7 +29389,7 @@ ;;;*** ;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el" -;;;;;; (20355 10021)) +;;;;;; (19765 60663)) ;;; Generated autoloads from language/tv-util.el (autoload 'tai-viet-composition-function "tv-util" "\ @@ -29565,7 +29400,7 @@ ;;;*** ;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" -;;;;;; "textmodes/two-column.el" (20364 31990)) +;;;;;; "textmodes/two-column.el" (20373 41604)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -29616,7 +29451,7 @@ ;;;;;; type-break type-break-mode type-break-keystroke-threshold ;;;;;; type-break-good-break-interval type-break-good-rest-interval ;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from type-break.el (defvar type-break-mode nil "\ @@ -29798,7 +29633,7 @@ ;;;*** -;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20355 10021)) +;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20244 35516)) ;;; Generated autoloads from mail/uce.el (autoload 'uce-reply-to-uce "uce" "\ @@ -29816,7 +29651,7 @@ ;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string ;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region ;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize" -;;;;;; "international/ucs-normalize.el" (20355 10021)) +;;;;;; "international/ucs-normalize.el" (20244 35516)) ;;; Generated autoloads from international/ucs-normalize.el (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\ @@ -29882,7 +29717,7 @@ ;;;*** ;;;### (autoloads (ununderline-region underline-region) "underline" -;;;;;; "textmodes/underline.el" (20355 10021)) +;;;;;; "textmodes/underline.el" (20244 35516)) ;;; Generated autoloads from textmodes/underline.el (autoload 'underline-region "underline" "\ @@ -29903,7 +29738,7 @@ ;;;*** ;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" -;;;;;; (20369 14251)) +;;;;;; (20373 41604)) ;;; Generated autoloads from mail/unrmail.el (autoload 'batch-unrmail "unrmail" "\ @@ -29922,8 +29757,8 @@ ;;;*** -;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from emacs-lisp/unsafep.el (autoload 'unsafep "unsafep" "\ @@ -29936,7 +29771,7 @@ ;;;*** ;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url" -;;;;;; "url/url.el" (20394 17446)) +;;;;;; "url/url.el" (20451 20881)) ;;; Generated autoloads from url/url.el (autoload 'url-retrieve "url" "\ @@ -29984,7 +29819,7 @@ ;;;*** ;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url/url-auth.el" (20355 10021)) +;;;;;; "url-auth" "url/url-auth.el" (20244 35516)) ;;; Generated autoloads from url/url-auth.el (autoload 'url-get-authentication "url-auth" "\ @@ -30026,7 +29861,7 @@ ;;;*** ;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache) -;;;;;; "url-cache" "url/url-cache.el" (20355 10021)) +;;;;;; "url-cache" "url/url-cache.el" (20276 3849)) ;;; Generated autoloads from url/url-cache.el (autoload 'url-store-in-cache "url-cache" "\ @@ -30047,7 +29882,7 @@ ;;;*** -;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20355 10021)) +;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20244 35516)) ;;; Generated autoloads from url/url-cid.el (autoload 'url-cid "url-cid" "\ @@ -30058,7 +29893,7 @@ ;;;*** ;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav" -;;;;;; "url/url-dav.el" (20355 10021)) +;;;;;; "url/url-dav.el" (20356 35090)) ;;; Generated autoloads from url/url-dav.el (autoload 'url-dav-supported-p "url-dav" "\ @@ -30073,8 +29908,8 @@ ;;;*** -;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from url/url-file.el (autoload 'url-file "url-file" "\ @@ -30085,7 +29920,7 @@ ;;;*** ;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url/url-gw.el" (20355 10021)) +;;;;;; "url/url-gw.el" (20244 35516)) ;;; Generated autoloads from url/url-gw.el (autoload 'url-gateway-nslookup-host "url-gw" "\ @@ -30105,7 +29940,7 @@ ;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file ;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el" -;;;;;; (20355 10021)) +;;;;;; (20446 34252)) ;;; Generated autoloads from url/url-handlers.el (defvar url-handler-mode nil "\ @@ -30160,7 +29995,7 @@ ;;;*** ;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p -;;;;;; url-http) "url-http" "url/url-http.el" (20415 53309)) +;;;;;; url-http) "url-http" "url/url-http.el" (20415 57974)) ;;; Generated autoloads from url/url-http.el (autoload 'url-http "url-http" "\ @@ -30229,7 +30064,7 @@ ;;;*** -;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20355 10021)) +;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20244 35516)) ;;; Generated autoloads from url/url-irc.el (autoload 'url-irc "url-irc" "\ @@ -30239,8 +30074,8 @@ ;;;*** -;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20356 +;;;;;; 35090)) ;;; Generated autoloads from url/url-ldap.el (autoload 'url-ldap "url-ldap" "\ @@ -30254,7 +30089,7 @@ ;;;*** ;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from url/url-mailto.el (autoload 'url-mail "url-mailto" "\ @@ -30270,7 +30105,7 @@ ;;;*** ;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url/url-misc.el" (20355 10021)) +;;;;;; url-man) "url-misc" "url/url-misc.el" (20244 35516)) ;;; Generated autoloads from url/url-misc.el (autoload 'url-man "url-misc" "\ @@ -30302,7 +30137,7 @@ ;;;*** ;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from url/url-news.el (autoload 'url-news "url-news" "\ @@ -30319,7 +30154,7 @@ ;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable ;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from url/url-ns.el (autoload 'isPlainHostName "url-ns" "\ @@ -30360,7 +30195,7 @@ ;;;*** ;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url/url-parse.el" (20395 38306)) +;;;;;; "url/url-parse.el" (20412 11425)) ;;; Generated autoloads from url/url-parse.el (autoload 'url-recreate-url "url-parse" "\ @@ -30412,7 +30247,7 @@ ;;;*** ;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from url/url-privacy.el (autoload 'url-setup-privacy-info "url-privacy" "\ @@ -30423,7 +30258,7 @@ ;;;*** ;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el" -;;;;;; (20355 10021)) +;;;;;; (20336 29137)) ;;; Generated autoloads from url/url-queue.el (autoload 'url-queue-retrieve "url-queue" "\ @@ -30443,8 +30278,8 @@ ;;;;;; url-percentage url-display-percentage url-pretty-length url-strip-leading-spaces ;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message ;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args -;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20402 -;;;;;; 11562)) +;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20412 +;;;;;; 11425)) ;;; Generated autoloads from url/url-util.el (defvar url-debug nil "\ @@ -30606,7 +30441,7 @@ ;;;*** ;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) -;;;;;; "userlock" "userlock.el" (20355 10021)) +;;;;;; "userlock" "userlock.el" (20244 35516)) ;;; Generated autoloads from userlock.el (autoload 'ask-user-about-lock "userlock" "\ @@ -30636,7 +30471,7 @@ ;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion ;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion) -;;;;;; "utf-7" "international/utf-7.el" (20355 10021)) +;;;;;; "utf-7" "international/utf-7.el" (20244 35516)) ;;; Generated autoloads from international/utf-7.el (autoload 'utf-7-post-read-conversion "utf-7" "\ @@ -30661,7 +30496,7 @@ ;;;*** -;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20355 10021)) +;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20244 35516)) ;;; Generated autoloads from gnus/utf7.el (autoload 'utf7-encode "utf7" "\ @@ -30673,7 +30508,7 @@ ;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal ;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from mail/uudecode.el (autoload 'uudecode-decode-region-external "uudecode" "\ @@ -30703,8 +30538,8 @@ ;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers ;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff ;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook -;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20421 -;;;;;; 62373)) +;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20420 +;;;;;; 52684)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -30982,7 +30817,7 @@ ;;;*** ;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el" -;;;;;; (20356 55829)) +;;;;;; (20432 54738)) ;;; Generated autoloads from vc/vc-annotate.el (autoload 'vc-annotate "vc-annotate" "\ @@ -31019,7 +30854,7 @@ ;;;*** -;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20377 8374)) +;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20428 57510)) ;;; Generated autoloads from vc/vc-arch.el (defun vc-arch-registered (file) (if (vc-find-root file "{arch}/=tagging-method") @@ -31029,7 +30864,7 @@ ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20406 55122)) +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20412 11425)) ;;; Generated autoloads from vc/vc-bzr.el (defconst vc-bzr-admin-dirname ".bzr" "\ @@ -31045,7 +30880,7 @@ ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20377 8374)) +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20428 57510)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) "Return non-nil if file F is registered with CVS." @@ -31056,7 +30891,7 @@ ;;;*** -;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20377 8374)) +;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20377 36640)) ;;; Generated autoloads from vc/vc-dir.el (autoload 'vc-dir "vc-dir" "\ @@ -31081,7 +30916,7 @@ ;;;*** ;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el" -;;;;;; (20364 45187)) +;;;;;; (20373 41604)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -31104,7 +30939,7 @@ ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20378 29222)) +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20428 57510)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) "Return non-nil if FILE is registered with git." @@ -31115,7 +30950,7 @@ ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20377 8374)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20377 36640)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." @@ -31126,7 +30961,7 @@ ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20377 8374)) +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20428 57510)) ;;; Generated autoloads from vc/vc-mtn.el (defconst vc-mtn-admin-dir "_MTN" "\ @@ -31143,7 +30978,7 @@ ;;;*** ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el" -;;;;;; (20355 10021)) +;;;;;; (20432 42254)) ;;; Generated autoloads from vc/vc-rcs.el (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -31157,7 +30992,7 @@ ;;;*** ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el" -;;;;;; (20355 10021)) +;;;;;; (20432 42254)) ;;; Generated autoloads from vc/vc-sccs.el (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -31174,7 +31009,7 @@ ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20355 10021)) +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20318 5885)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) (let ((admin-dir (cond ((and (eq system-type 'windows-nt) @@ -31188,7 +31023,7 @@ ;;;*** ;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20434 28080)) ;;; Generated autoloads from progmodes/vera-mode.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode)) @@ -31246,7 +31081,7 @@ ;;;*** ;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el" -;;;;;; (20420 41510)) +;;;;;; (20420 52684)) ;;; Generated autoloads from progmodes/verilog-mode.el (autoload 'verilog-mode "verilog-mode" "\ @@ -31385,7 +31220,7 @@ ;;;*** ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" -;;;;;; (20419 20644)) +;;;;;; (20428 57510)) ;;; Generated autoloads from progmodes/vhdl-mode.el (autoload 'vhdl-mode "vhdl-mode" "\ @@ -31402,7 +31237,7 @@ brackets and removed if the queried string is left empty. Prompts for mandatory arguments remain in the code if the queried string is left empty. They can be queried again by `C-c C-t C-q'. Enabled - electrification is indicated by `/e' in the modeline. + electrification is indicated by `/e' in the mode line. Typing `M-SPC' after a keyword inserts a space without calling the template generator. Automatic template generation (i.e. @@ -31429,7 +31264,7 @@ Double striking of some keys inserts cumbersome VHDL syntax elements. Stuttering can be disabled (enabled) by typing `C-c C-m C-s' or by option `vhdl-stutter-mode'. Enabled stuttering is indicated by `/s' in - the modeline. The stuttering keys and their effects are: + the mode line. The stuttering keys and their effects are: ;; --> \" : \" [ --> ( -- --> comment ;;; --> \" := \" [[ --> [ --CR --> comment-out code @@ -31939,7 +31774,7 @@ ;;;*** -;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20355 10021)) +;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20107 60012)) ;;; Generated autoloads from emulation/vi.el (autoload 'vi-mode "vi" "\ @@ -31994,7 +31829,7 @@ ;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion ;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer ;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" -;;;;;; "language/viet-util.el" (20355 10021)) +;;;;;; "language/viet-util.el" (20244 35516)) ;;; Generated autoloads from language/viet-util.el (autoload 'viet-encode-viscii-char "viet-util" "\ @@ -32042,7 +31877,7 @@ ;;;;;; view-mode view-buffer-other-frame view-buffer-other-window ;;;;;; view-buffer view-file-other-frame view-file-other-window ;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting) -;;;;;; "view" "view.el" (20355 10021)) +;;;;;; "view" "view.el" (20331 12564)) ;;; Generated autoloads from view.el (defvar view-remove-frame-by-deleting t "\ @@ -32296,8 +32131,8 @@ ;;;*** -;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from emulation/vip.el (autoload 'vip-setup "vip" "\ @@ -32313,7 +32148,7 @@ ;;;*** ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" -;;;;;; (20355 10021)) +;;;;;; (20356 35090)) ;;; Generated autoloads from emulation/viper.el (autoload 'toggle-viper-mode "viper" "\ @@ -32330,7 +32165,7 @@ ;;;*** ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from emacs-lisp/warnings.el (defvar warning-prefix-function nil "\ @@ -32420,7 +32255,7 @@ ;;;*** ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from wdired.el (autoload 'wdired-change-to-wdired-mode "wdired" "\ @@ -32436,7 +32271,7 @@ ;;;*** -;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20355 10021)) +;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20356 35090)) ;;; Generated autoloads from net/webjump.el (autoload 'webjump "webjump" "\ @@ -32453,7 +32288,7 @@ ;;;*** ;;;### (autoloads (which-function-mode which-func-mode) "which-func" -;;;;;; "progmodes/which-func.el" (20412 47398)) +;;;;;; "progmodes/which-func.el" (20428 57510)) ;;; Generated autoloads from progmodes/which-func.el (put 'which-func-format 'risky-local-variable t) (put 'which-func-current 'risky-local-variable t) @@ -32489,7 +32324,7 @@ ;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region ;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options ;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode -;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20421 62373)) +;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20434 28080)) ;;; Generated autoloads from whitespace.el (autoload 'whitespace-mode "whitespace" "\ @@ -32888,7 +32723,7 @@ ;;;*** ;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse -;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20355 10021)) +;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20276 3849)) ;;; Generated autoloads from wid-browse.el (autoload 'widget-browse-at "wid-browse" "\ @@ -32918,7 +32753,7 @@ ;;;### (autoloads (widget-setup widget-insert widget-delete widget-create ;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20373 -;;;;;; 11301)) +;;;;;; 41604)) ;;; Generated autoloads from wid-edit.el (autoload 'widgetp "wid-edit" "\ @@ -32961,8 +32796,8 @@ ;;;*** ;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right -;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20355 -;;;;;; 10021)) +;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20253 +;;;;;; 50954)) ;;; Generated autoloads from windmove.el (autoload 'windmove-left "windmove" "\ @@ -33015,7 +32850,7 @@ ;;;*** ;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el" -;;;;;; (20355 10021)) +;;;;;; (20244 35516)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -33034,7 +32869,7 @@ ;;;*** ;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file -;;;;;; woman woman-locale) "woman" "woman.el" (20370 35109)) +;;;;;; woman woman-locale) "woman" "woman.el" (20373 41604)) ;;; Generated autoloads from woman.el (defvar woman-locale nil "\ @@ -33083,7 +32918,7 @@ ;;;*** ;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" -;;;;;; (20355 10021)) +;;;;;; (20331 12564)) ;;; Generated autoloads from emulation/ws-mode.el (autoload 'wordstar-mode "ws-mode" "\ @@ -33195,7 +33030,7 @@ ;;;*** -;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20374 32165)) +;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20373 41604)) ;;; Generated autoloads from net/xesam.el (autoload 'xesam-search "xesam" "\ @@ -33215,7 +33050,7 @@ ;;;*** ;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" -;;;;;; (20378 29222)) +;;;;;; (20380 26775)) ;;; Generated autoloads from xml.el (autoload 'xml-parse-file "xml" "\ @@ -33241,7 +33076,7 @@ ;;;*** ;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok" -;;;;;; "nxml/xmltok.el" (20355 10021)) +;;;;;; "nxml/xmltok.el" (20244 35516)) ;;; Generated autoloads from nxml/xmltok.el (autoload 'xmltok-get-declared-encoding-position "xmltok" "\ @@ -33259,8 +33094,8 @@ ;;;*** -;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20355 -;;;;;; 10021)) +;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20244 +;;;;;; 35516)) ;;; Generated autoloads from xt-mouse.el (defvar xterm-mouse-mode nil "\ @@ -33290,7 +33125,7 @@ ;;;*** ;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" -;;;;;; "gnus/yenc.el" (20355 10021)) +;;;;;; "gnus/yenc.el" (20244 35516)) ;;; Generated autoloads from gnus/yenc.el (autoload 'yenc-decode-region "yenc" "\ @@ -33306,7 +33141,7 @@ ;;;*** ;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism -;;;;;; yow) "yow" "play/yow.el" (20364 42504)) +;;;;;; yow) "yow" "play/yow.el" (20373 41604)) ;;; Generated autoloads from play/yow.el (autoload 'yow "yow" "\ @@ -33332,7 +33167,7 @@ ;;;*** -;;;### (autoloads (zone) "zone" "play/zone.el" (20392 31071)) +;;;### (autoloads (zone) "zone" "play/zone.el" (20428 57510)) ;;; Generated autoloads from play/zone.el (autoload 'zone "zone" "\ @@ -33417,54 +33252,55 @@ ;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el" ;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" ;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el" -;;;;;; "cus-dep.el" "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" -;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el" -;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" -;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" -;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cust-print.el" -;;;;;; "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el" -;;;;;; "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.el" -;;;;;; "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" "emacs-lisp/gulp.el" -;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/regi.el" -;;;;;; "emacs-lisp/smie.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el" -;;;;;; "emulation/cua-gmrk.el" "emulation/cua-rect.el" "emulation/edt-lk201.el" -;;;;;; "emulation/edt-mapper.el" "emulation/edt-pc.el" "emulation/edt-vt100.el" -;;;;;; "emulation/tpu-extras.el" "emulation/viper-cmd.el" "emulation/viper-ex.el" -;;;;;; "emulation/viper-init.el" "emulation/viper-keym.el" "emulation/viper-macs.el" -;;;;;; "emulation/viper-mous.el" "emulation/viper-util.el" "erc/erc-backend.el" -;;;;;; "erc/erc-goodies.el" "erc/erc-ibuffer.el" "erc/erc-lang.el" -;;;;;; "eshell/em-alias.el" "eshell/em-banner.el" "eshell/em-basic.el" -;;;;;; "eshell/em-cmpl.el" "eshell/em-dirs.el" "eshell/em-glob.el" -;;;;;; "eshell/em-hist.el" "eshell/em-ls.el" "eshell/em-pred.el" -;;;;;; "eshell/em-prompt.el" "eshell/em-rebind.el" "eshell/em-script.el" -;;;;;; "eshell/em-smart.el" "eshell/em-term.el" "eshell/em-unix.el" -;;;;;; "eshell/em-xtra.el" "eshell/esh-arg.el" "eshell/esh-cmd.el" -;;;;;; "eshell/esh-ext.el" "eshell/esh-groups.el" "eshell/esh-io.el" -;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el" -;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "foldout.el" -;;;;;; "format-spec.el" "fringe.el" "generic-x.el" "gnus/compface.el" -;;;;;; "gnus/gnus-async.el" "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" -;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el" -;;;;;; "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-int.el" -;;;;;; "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el" -;;;;;; "gnus/gnus-score.el" "gnus/gnus-setup.el" "gnus/gnus-srvr.el" -;;;;;; "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el" -;;;;;; "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" -;;;;;; "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el" -;;;;;; "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el" -;;;;;; "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-util.el" -;;;;;; "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el" "gnus/nnagent.el" -;;;;;; "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el" -;;;;;; "gnus/nngateway.el" "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" -;;;;;; "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" -;;;;;; "gnus/nnmh.el" "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" -;;;;;; "gnus/nnrss.el" "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" -;;;;;; "gnus/nnweb.el" "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" -;;;;;; "gnus/rfc2047.el" "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" -;;;;;; "gnus/shr-color.el" "gnus/sieve-manage.el" "gnus/smime.el" -;;;;;; "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" -;;;;;; "ibuf-ext.el" "international/cp51932.el" "international/eucjp-ms.el" -;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el" +;;;;;; "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el" +;;;;;; "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el" +;;;;;; "emacs-lisp/authors.el" "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" +;;;;;; "emacs-lisp/byte-opt.el" "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" +;;;;;; "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" +;;;;;; "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-custom.el" +;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el" +;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" +;;;;;; "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" +;;;;;; "emacs-lisp/regi.el" "emacs-lisp/smie.el" "emacs-lisp/tcover-ses.el" +;;;;;; "emacs-lisp/tcover-unsafep.el" "emulation/cua-gmrk.el" "emulation/cua-rect.el" +;;;;;; "emulation/edt-lk201.el" "emulation/edt-mapper.el" "emulation/edt-pc.el" +;;;;;; "emulation/edt-vt100.el" "emulation/tpu-extras.el" "emulation/viper-cmd.el" +;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el" +;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el" +;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el" +;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el" +;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el" +;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el" +;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el" +;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el" +;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el" +;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el" +;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el" +;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el" +;;;;;; "ezimage.el" "finder-inf.el" "foldout.el" "format-spec.el" +;;;;;; "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" +;;;;;; "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cus.el" +;;;;;; "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el" +;;;;;; "gnus/gnus-ems.el" "gnus/gnus-int.el" "gnus/gnus-logic.el" +;;;;;; "gnus/gnus-mh.el" "gnus/gnus-salt.el" "gnus/gnus-score.el" +;;;;;; "gnus/gnus-setup.el" "gnus/gnus-srvr.el" "gnus/gnus-topic.el" +;;;;;; "gnus/gnus-undo.el" "gnus/gnus-util.el" "gnus/gnus-uu.el" +;;;;;; "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el" +;;;;;; "gnus/mail-parse.el" "gnus/mail-prsvr.el" "gnus/mail-source.el" +;;;;;; "gnus/mailcap.el" "gnus/messcompat.el" "gnus/mm-bodies.el" +;;;;;; "gnus/mm-decode.el" "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" +;;;;;; "gnus/mml-smime.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" +;;;;;; "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el" +;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" +;;;;;; "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" +;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" +;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" +;;;;;; "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" +;;;;;; "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el" +;;;;;; "gnus/sieve-manage.el" "gnus/smime.el" "gnus/spam-stat.el" +;;;;;; "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el" +;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el" +;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el" ;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el" ;;;;;; "international/uni-category.el" "international/uni-combining.el" ;;;;;; "international/uni-comment.el" "international/uni-decimal.el" @@ -33543,7 +33379,7 @@ ;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" ;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" ;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el" -;;;;;; "w32-vars.el" "x-dnd.el") (20424 38645 32667)) +;;;;;; "w32-vars.el" "x-dnd.el") (20451 34928 615251)) ;;;*** === modified file 'lisp/loadup.el' --- lisp/loadup.el 2012-06-13 13:18:59 +0000 +++ lisp/loadup.el 2012-06-22 13:42:38 +0000 @@ -252,6 +252,21 @@ ;For other systems, you must edit ../src/Makefile.in. (load "site-load" t) +;; ¡¡¡ Big Ugly Hack !!! +;; src/boostrap-emacs is mostly used to compile .el files, so it needs +;; macroexp, bytecomp, cconv, and byte-opt to be fast. Generally this is done +;; by compiling those files first, but this only makes a difference if those +;; files are not preloaded. As it so happens, macroexp.el tends to be +;; accidentally preloaded in src/boostrap-emacs because cl.el and cl-macs.el +;; require it. So lets unload it here, if needed, to make sure the +;; byte-compiled version is used. +(if (or (not (fboundp 'macroexpand-all)) + (byte-code-function-p (symbol-function 'macroexpand-all))) + nil + (fmakunbound 'macroexpand-all) + (setq features (delq 'macroexp features)) + (autoload 'macroexpand-all "macroexp")) + ;; Determine which last version number to use ;; based on the executables that now exist. (if (and (or (equal (nth 3 command-line-args) "dump") === modified file 'lisp/scroll-bar.el' --- lisp/scroll-bar.el 2012-01-19 07:21:25 +0000 +++ lisp/scroll-bar.el 2012-06-22 13:42:38 +0000 @@ -123,9 +123,10 @@ This command applies to all frames that exist and frames to be created in the future." - :variable (eq (get-scroll-bar-mode) - (or previous-scroll-bar-mode - default-frame-scroll-bars))) + :variable ((get-scroll-bar-mode) + . (lambda (v) (set-scroll-bar-mode + (if v (or previous-scroll-bar-mode + default-frame-scroll-bars)))))) (defun toggle-scroll-bar (arg) "Toggle whether or not the selected frame has vertical scroll bars. === modified file 'lisp/simple.el' --- lisp/simple.el 2012-06-02 19:21:34 +0000 +++ lisp/simple.el 2012-06-22 13:42:38 +0000 @@ -5425,7 +5425,9 @@ The value of `normal-auto-fill-function' specifies the function to use for `auto-fill-function' when turning Auto Fill mode on." - :variable (eq auto-fill-function normal-auto-fill-function)) + :variable (auto-fill-function + . (lambda (v) (setq auto-fill-function + (if v normal-auto-fill-function))))) ;; This holds a document string used to document auto-fill-mode. (defun auto-fill-function () @@ -5538,7 +5540,8 @@ filled in. \\[quoted-insert] still inserts characters in overwrite mode; this is supposed to make it easier to insert characters when necessary." - :variable (eq overwrite-mode 'overwrite-mode-textual)) + :variable (overwrite-mode + . (lambda (v) (setq overwrite-mode (if v 'overwrite-mode-textual))))) (define-minor-mode binary-overwrite-mode "Toggle Binary Overwrite mode. @@ -5557,7 +5560,8 @@ Note that Binary Overwrite mode is not its own minor mode; it is a specialization of overwrite mode, entered by setting the `overwrite-mode' variable to `overwrite-mode-binary'." - :variable (eq overwrite-mode 'overwrite-mode-binary)) + :variable (overwrite-mode + . (lambda (v) (setq overwrite-mode (if v 'overwrite-mode-binary))))) (define-minor-mode line-number-mode "Toggle line number display in the mode line (Line Number mode). @@ -6780,8 +6784,10 @@ have both Backspace, Delete and F1 keys. See also `normal-erase-is-backspace'." - :variable (eq (terminal-parameter - nil 'normal-erase-is-backspace) 1) + :variable ((eq (terminal-parameter nil 'normal-erase-is-backspace) 1) + . (lambda (v) + (setf (terminal-parameter nil 'normal-erase-is-backspace) + (if v 1 0)))) (let ((enabled (eq 1 (terminal-parameter nil 'normal-erase-is-backspace)))) === modified file 'lisp/subr.el' --- lisp/subr.el 2012-06-19 06:49:50 +0000 +++ lisp/subr.el 2012-06-22 13:42:38 +0000 @@ -26,6 +26,9 @@ ;;; Code: +;; Beware: while this file has tag `utf-8', before it's compiled, it gets +;; loaded as "raw-text", so non-ASCII chars won't work right during bootstrap. + (defvar custom-declare-variable-list nil "Record `defcustom' calls made before `custom.el' is loaded to handle them. Each element of this list holds the arguments to one call to `defcustom'.") @@ -144,29 +147,33 @@ `(closure (t) (&rest args) (apply ',fun ,@(mapcar (lambda (arg) `',arg) args) args))) -(if (null (featurep 'cl)) - (progn - ;; If we reload subr.el after having loaded CL, be careful not to - ;; overwrite CL's extended definition of `dolist', `dotimes', - ;; `declare', `push' and `pop'. -(defmacro push (newelt listname) - "Add NEWELT to the list stored in the symbol LISTNAME. -This is equivalent to (setq LISTNAME (cons NEWELT LISTNAME)). -LISTNAME must be a symbol." - (declare (debug (form sexp))) - (list 'setq listname - (list 'cons newelt listname))) +(defmacro push (newelt place) + "Add NEWELT to the list stored in the generalized variable PLACE. +This is morally equivalent to (setf PLACE (cons NEWELT PLACE)), +except that PLACE is only evaluated once (after NEWELT)." + (declare (debug (form gv-place))) + (if (symbolp place) + ;; Important special case, to avoid triggering GV too early in + ;; the bootstrap. + (list 'setq place + (list 'cons newelt place)) + (require 'macroexp) + (macroexp-let2 macroexp-copyable-p v newelt + (gv-letplace (getter setter) place + (funcall setter `(cons ,v ,getter)))))) -(defmacro pop (listname) - "Return the first element of LISTNAME's value, and remove it from the list. -LISTNAME must be a symbol whose value is a list. +(defmacro pop (place) + "Return the first element of PLACE's value, and remove it from the list. +PLACE must be a generalized variable whose value is a list. If the value is nil, `pop' returns nil but does not actually change the list." - (declare (debug (sexp))) + (declare (debug (gv-place))) (list 'car - (list 'prog1 listname - (list 'setq listname (list 'cdr listname))))) -)) + (if (symbolp place) + ;; So we can use `pop' in the bootstrap before `gv' can be used. + (list 'prog1 place (list 'setq place (list 'cdr place))) + (gv-letplace (getter setter) place + `(prog1 ,getter ,(funcall setter `(cdr ,getter))))))) (defmacro when (cond &rest body) "If COND yields non-nil, do BODY, else return nil. @@ -189,8 +196,7 @@ (if (null (featurep 'cl)) (progn ;; If we reload subr.el after having loaded CL, be careful not to - ;; overwrite CL's extended definition of `dolist', `dotimes', - ;; `declare', `push' and `pop'. + ;; overwrite CL's extended definition of `dolist', `dotimes', `declare'. (defmacro dolist (spec &rest body) "Loop over a list. === modified file 'lisp/winner.el' --- lisp/winner.el 2012-01-19 07:21:25 +0000 +++ lisp/winner.el 2012-06-22 13:42:38 +0000 @@ -138,7 +138,7 @@ ;; Consult `winner-currents'. (defun winner-configuration (&optional frame) (or (cdr (assq (or frame (selected-frame)) winner-currents)) - (letf (((selected-frame) frame)) + (with-selected-frame frame (winner-conf)))) @@ -248,7 +248,7 @@ ((window-minibuffer-p (selected-window)) (other-window 1))) (when (/= minisize (window-height miniwin)) - (letf (((selected-window) miniwin) ) + (with-selected-window miniwin (setf (window-height) minisize))))) @@ -261,7 +261,7 @@ ;; Format of entries: (buffer (mark . mark-active) (window . point) ..) (defun winner-make-point-alist () - (letf (((current-buffer))) + (save-current-buffer (loop with alist for win in (winner-window-list) for entry = @@ -282,10 +282,10 @@ (entry (or (cdr (assq win (cddr entry))) (cdr (assq nil (cddr entry))) - (letf (((current-buffer) buf)) + (with-current-buffer buf (push (cons nil (point)) (cddr entry)) (point)))) - (t (letf (((current-buffer) buf)) + (t (with-current-buffer buf (push (list buf (cons (mark t) (winner-active-region)) (cons nil (point))) @@ -320,7 +320,7 @@ (push win xwins))) ; delete this window ;; Restore marks - (letf (((current-buffer))) + (save-current-buffer (loop for buf in buffers for entry = (cadr (assq buf winner-point-alist)) do (progn (set-buffer buf) ------------------------------------------------------------ revno: 108680 committer: Glenn Morris branch nick: trunk timestamp: Fri 2012-06-22 00:38:26 -0700 message: Further speed up rpm completion, by caching the installed packages * lisp/pcmpl-rpm.el (pcmpl-rpm-cache): New option. (pcmpl-rpm-cache-stamp-file): New constant. (pcmpl-rpm-cache-time, pcmpl-rpm-packages): New variables. (pcmpl-rpm-packages): Optionally cache list of packages. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 07:30:33 +0000 +++ lisp/ChangeLog 2012-06-22 07:38:26 +0000 @@ -14,6 +14,11 @@ 2012-06-22 Glenn Morris + * pcmpl-rpm.el (pcmpl-rpm-cache): New option. + (pcmpl-rpm-cache-stamp-file): New constant. + (pcmpl-rpm-cache-time, pcmpl-rpm-packages): New variables. + (pcmpl-rpm-packages): Optionally cache list of packages. + * pcmpl-rpm.el (pcmpl-rpm): New group. (pcmpl-rpm-query-options): New option. (pcmpl-rpm-packages): No need to inline it. === modified file 'lisp/pcmpl-rpm.el' --- lisp/pcmpl-rpm.el 2012-06-22 07:01:32 +0000 +++ lisp/pcmpl-rpm.el 2012-06-22 07:38:26 +0000 @@ -48,16 +48,37 @@ :type '(repeat string) :group 'pcmpl-rpm) +(defcustom pcmpl-rpm-cache t + "Whether to cache the list of installed packages." + :version "24.2" + :type 'boolean + :group 'pcmpl-rpm) + +(defconst pcmpl-rpm-cache-stamp-file "/var/lib/rpm/Packages" + "File used to check that the list of installed packages is up-to-date.") + +(defvar pcmpl-rpm-cache-time nil + "Time at which the list of installed packages was updated.") + +(defvar pcmpl-rpm-packages nil + "List of installed packages.") + ;; Functions: -;; TODO ;; This can be slow, so: -;; Consider caching the result (cf woman). ;; Consider printing an explanatory message before running -qa. (defun pcmpl-rpm-packages () "Return a list of all installed rpm packages." - (split-string (apply 'pcomplete-process-result "rpm" - (append '("-q" "-a") pcmpl-rpm-query-options)))) + (if (and pcmpl-rpm-cache + pcmpl-rpm-cache-time + (let ((mtime (nth 5 (file-attributes pcmpl-rpm-cache-stamp-file)))) + (and mtime (not (time-less-p pcmpl-rpm-cache-time mtime))))) + pcmpl-rpm-packages + (setq pcmpl-rpm-cache-time (current-time) + pcmpl-rpm-packages + (split-string (apply 'pcomplete-process-result "rpm" + (append '("-q" "-a") + pcmpl-rpm-query-options)))))) ;; Should this use pcmpl-rpm-query-options? ;; I don't think it would speed it up at all (?). ------------------------------------------------------------ revno: 108679 committer: Chong Yidong branch nick: trunk timestamp: Fri 2012-06-22 15:30:33 +0800 message: Misc doc fixes for Dired. * dired-aux.el (dired-do-create-files): Doc fix (Bug#11327). (dired-create-files): Doc fix (Bug#11329). (dired-do-copy): Doc fix (Bug#11334). (dired-mark-read-string): Doc fix (Bug#11553). * dired.el (dired-recursive-copies, dired-recursive-deletes): Doc fix (Bug#11326). (dired-make-relative): Doc fix (Bug#11332). Remove unused arg. (dired-dwim-target): Doc fix. * wdired.el (wdired-mode): Doc fix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 07:01:32 +0000 +++ lisp/ChangeLog 2012-06-22 07:30:33 +0000 @@ -1,3 +1,17 @@ +2012-06-22 Chong Yidong + + * dired-aux.el (dired-do-create-files): Doc fix (Bug#11327). + (dired-create-files): Doc fix (Bug#11329). + (dired-do-copy): Doc fix (Bug#11334). + (dired-mark-read-string): Doc fix (Bug#11553). + + * dired.el (dired-recursive-copies, dired-recursive-deletes): Doc + fix (Bug#11326). + (dired-make-relative): Doc fix (Bug#11332). Remove unused arg. + (dired-dwim-target): Doc fix. + + * wdired.el (wdired-mode): Doc fix. + 2012-06-22 Glenn Morris * pcmpl-rpm.el (pcmpl-rpm): New group. === modified file 'lisp/dired-aux.el' --- lisp/dired-aux.el 2012-04-17 01:52:00 +0000 +++ lisp/dired-aux.el 2012-06-22 07:30:33 +0000 @@ -395,16 +395,15 @@ INITIAL, if non-nil, is the initial minibuffer input. OP-SYMBOL is an operation symbol (see `dired-no-confirm'). -ARG is normally the prefix argument for the calling command. -FILES should be a list of file names. - -DEFAULT-VALUE, if non-nil, should be a \"standard\" value or list -of such values, available via history commands. Note that if the -user enters empty input, this function returns the empty string, -not DEFAULT-VALUE. - -Optional argument COLLECTION is a collection of possible completions, -suitable for use by `completing-read'." +ARG is normally the prefix argument for the calling command; +it is passed as the first argument to `dired-mark-prompt'. +FILES should be a list of marked files' names. + +Optional arg DEFAULT-VALUE is a default value or list of default +values, passed as the seventh arg to `completing-read'. + +Optional arg COLLECTION is a collection of possible completions, +passed as the second arg to `completing-read'." (dired-mark-pop-up nil op-symbol files 'completing-read (format prompt (dired-mark-prompt arg files)) @@ -1408,9 +1407,9 @@ argument, the name of an old file, and returning either the corresponding new file name or nil to skip. -Optional MARKER-CHAR is a character with which to mark every -newfile's entry, or t to use the current marker character if the -old file was marked." +If optional argument MARKER-CHAR is non-nil, mark each +newly-created file's Dired entry with the character MARKER-CHAR, +or with the current marker character if MARKER-CHAR is t." (let (dired-create-files-failures failures skipped (success-count 0) (total (length fn-list))) (let (to overwrite-query @@ -1513,10 +1512,11 @@ &optional marker-char op1 how-to) "Create a new file for each marked file. -Prompts user for target, which is a directory in which to create - the new files. Target may also be a plain file if only one marked - file exists. The way the default for the target directory is - computed depends on the value of `dired-dwim-target-directory'. +Prompt user for a target directory in which to create the new + files. The target may also be a non-directory file, if only + one file is marked. The initial suggestion for target is the + Dired buffer's current directory (or, if `dired-dwim-target' is + non-nil, the current directory of a neighboring Dired window). OP-SYMBOL is the symbol for the operation. Function `dired-mark-pop-up' will determine whether pop-ups are appropriate for this OP-SYMBOL. FILE-CREATOR and OPERATION as in `dired-create-files'. @@ -1721,16 +1721,21 @@ ;;;###autoload (defun dired-do-copy (&optional arg) "Copy all marked (or next ARG) files, or copy the current file. -This normally preserves the last-modified date when copying. -When operating on just the current file, you specify the new name. -When operating on multiple or marked files, you specify a directory, -and new copies of these files are made in that directory -with the same names that the files currently have. The default -suggested for the target directory depends on the value of -`dired-dwim-target', which see. - -This command copies symbolic links by creating new ones, -like `cp -d'." +When operating on just the current file, prompt for the new name. + +When operating on multiple or marked files, prompt for a target +directory, and make the new copies in that directory, with the +same names as the original files. The initial suggestion for the +target directory is the Dired buffer's current directory (or, if +`dired-dwim-target' is non-nil, the current directory of a +neighboring Dired window). + +If `dired-copy-preserve-time' is non-nil, this command preserves +the modification time of each old file in the copy, similar to +the \"-p\" option for the \"cp\" shell command. + +This command copies symbolic links by creating new ones, similar +to the \"-d\" option for the \"cp\" shell command." (interactive "P") (let ((dired-recursive-copies dired-recursive-copies)) (dired-do-create-files 'copy (function dired-copy-file) @@ -1996,9 +2001,10 @@ ;;;###autoload (defun dired-insert-subdir (dirname &optional switches no-error-if-not-dir-p) - "Insert this subdirectory into the same dired buffer. -If it is already present, overwrites previous entry, - else inserts it at its natural place (as `ls -lR' would have done). + "Insert this subdirectory into the same Dired buffer. +If it is already present, overwrite the previous entry; + otherwise, insert it at its natural place (as `ls -lR' would + have done). With a prefix arg, you may edit the `ls' switches used for this listing. You can add `R' to the switches to expand the whole tree starting at this subdirectory. === modified file 'lisp/dired.el' --- lisp/dired.el 2012-06-02 10:56:09 +0000 +++ lisp/dired.el 2012-06-22 07:30:33 +0000 @@ -170,8 +170,9 @@ (defcustom dired-dwim-target nil "If non-nil, Dired tries to guess a default target directory. -This means: if there is a dired buffer displayed in the next window, -use its current subdir, instead of the current subdir of this dired buffer. +This means: if there is a Dired buffer displayed in the next +window, use its current directory, instead of this Dired buffer's +current directory. The target is used in the prompt for file copy, rename etc." :type 'boolean @@ -2209,10 +2210,11 @@ ;; dired-get-filename. (concat (or dir default-directory) file)) -(defun dired-make-relative (file &optional dir _ignore) +(defun dired-make-relative (file &optional dir) "Convert FILE (an absolute file name) to a name relative to DIR. -If this is impossible, return FILE unchanged. -DIR must be a directory name, not a file name." +If DIR is omitted or nil, it defaults to `default-directory'. +If FILE is not in the directory tree of DIR, return FILE +unchanged." (or dir (setq dir default-directory)) ;; This case comes into play if default-directory is set to ;; use ~. @@ -2220,8 +2222,6 @@ (setq dir (expand-file-name dir))) (if (string-match (concat "^" (regexp-quote dir)) file) (substring file (match-end 0)) -;;; (or no-error -;;; (error "%s: not in directory tree growing at %s" file dir)) file)) ;;; Functions for finding the file name in a dired buffer line. @@ -2467,8 +2467,6 @@ dired-subdir-alist)))) cur-dir)))) -;(defun dired-get-subdir-min (elt) -; (cdr elt)) ;; can't use macro, must be redefinable for other alist format in dired-nstd. (defalias 'dired-get-subdir-min 'cdr) @@ -2730,12 +2728,14 @@ ;; Deleting files (defcustom dired-recursive-deletes 'top - "Decide whether recursive deletes are allowed. -A value of nil means no recursive deletes. -`always' means delete recursively without asking. This is DANGEROUS! -`top' means ask for each directory at top level, but delete its subdirectories -without asking. -Anything else means ask for each directory." + "Whether Dired deletes directories recursively. +If nil, Dired will not delete non-empty directories. +`always' means to delete non-empty directories recursively, +without asking. This is dangerous! +`top' means to ask for each top-level directory specified by the +Dired deletion command, and delete its subdirectories without +asking. +Any other value means to ask for each directory." :type '(choice :tag "Delete non-empty directories" (const :tag "Yes" always) (const :tag "No--only delete empty directories" nil) @@ -3577,11 +3577,11 @@ ;;;; Drag and drop support (defcustom dired-recursive-copies 'top - "Decide whether recursive copies are allowed. -A value of nil means no recursive copies. -`always' means copy recursively without asking. -`top' means ask for each directory at top level. -Anything else means ask for each directory." + "Whether Dired copies directories recursively. +If nil, never copy recursively. +`always' means to copy recursively without asking. +`top' means to ask for each directory at top level. +Any other value means to ask for each directory." :type '(choice :tag "Copy directories" (const :tag "No recursive copies" nil) (const :tag "Ask for each directory" t) @@ -3739,7 +3739,7 @@ ;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command ;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown ;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff -;;;;;; dired-diff) "dired-aux" "dired-aux.el" "de7e4c64718c8ba8438a6397a460bf23") +;;;;;; dired-diff) "dired-aux" "dired-aux.el" "91d39bd8f7e9ce93dc752fe74bea78c2") ;;; Generated autoloads from dired-aux.el (autoload 'dired-diff "dired-aux" "\ @@ -3979,16 +3979,21 @@ (autoload 'dired-do-copy "dired-aux" "\ Copy all marked (or next ARG) files, or copy the current file. -This normally preserves the last-modified date when copying. -When operating on just the current file, you specify the new name. -When operating on multiple or marked files, you specify a directory, -and new copies of these files are made in that directory -with the same names that the files currently have. The default -suggested for the target directory depends on the value of -`dired-dwim-target', which see. - -This command copies symbolic links by creating new ones, -like `cp -d'. +When operating on just the current file, prompt for the new name. + +When operating on multiple or marked files, prompt for a target +directory, and make the new copies in that directory, with the +same names as the original files. The initial suggestion for the +target directory is the Dired buffer's current directory (or, if +`dired-dwim-target' is non-nil, the current directory of a +neighboring Dired window). + +If `dired-copy-preserve-time' is non-nil, this command preserves +the modification time of each old file in the copy, similar to +the \"-p\" option for the \"cp\" shell command. + +This command copies symbolic links by creating new ones, similar +to the \"-d\" option for the \"cp\" shell command. \(fn &optional ARG)" t nil) @@ -4091,9 +4096,10 @@ \(fn DIRNAME &optional SWITCHES NO-ERROR-IF-NOT-DIR-P)" t nil) (autoload 'dired-insert-subdir "dired-aux" "\ -Insert this subdirectory into the same dired buffer. -If it is already present, overwrites previous entry, - else inserts it at its natural place (as `ls -lR' would have done). +Insert this subdirectory into the same Dired buffer. +If it is already present, overwrite the previous entry; + otherwise, insert it at its natural place (as `ls -lR' would + have done). With a prefix arg, you may edit the `ls' switches used for this listing. You can add `R' to the switches to expand the whole tree starting at this subdirectory. === modified file 'lisp/wdired.el' --- lisp/wdired.el 2012-01-19 07:21:25 +0000 +++ lisp/wdired.el 2012-06-22 07:30:33 +0000 @@ -184,8 +184,8 @@ (defun wdired-mode () - "\\File Names Editing mode. - + "Writable Dired mode. +\\ Press \\[wdired-finish-edit] to make the changes to take effect and exit. To abort the edit, use \\[wdired-abort-changes]. ------------------------------------------------------------ revno: 108678 committer: Chong Yidong branch nick: trunk timestamp: Fri 2012-06-22 15:28:28 +0800 message: * xdisp.c (x_consider_frame_title): Revert last change. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-22 06:51:06 +0000 +++ src/ChangeLog 2012-06-22 07:28:28 +0000 @@ -1,3 +1,7 @@ +2012-06-22 Chong Yidong + + * xdisp.c (x_consider_frame_title): Revert last change. + 2012-06-22 Eli Zaretskii * alloc.c (NSTATICS): Enlarge to 0x650. Otherwise, Emacs compiled === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-19 06:49:50 +0000 +++ src/xdisp.c 2012-06-22 07:28:28 +0000 @@ -10967,6 +10967,8 @@ Frame Titles ***********************************************************************/ +#ifdef HAVE_WINDOW_SYSTEM + /* Set the title of FRAME, if it has changed. The title format is Vicon_title_format if FRAME is iconified, otherwise it is frame_title_format. */ @@ -11037,6 +11039,8 @@ } } +#endif /* not HAVE_WINDOW_SYSTEM */ + /*********************************************************************** Menu Bars @@ -11063,6 +11067,7 @@ /* Update all frame titles based on their buffer names, etc. We do this before the menu bars so that the buffer-menu will show the up-to-date frame titles. */ +#ifdef HAVE_WINDOW_SYSTEM if (windows_or_buffers_changed || update_mode_lines) { Lisp_Object tail, frame; @@ -11075,6 +11080,7 @@ x_consider_frame_title (frame); } } +#endif /* HAVE_WINDOW_SYSTEM */ /* Update the menu bar item lists, if appropriate. This has to be done before any actual redisplay or generation of display lines. */ ------------------------------------------------------------ revno: 108677 committer: Glenn Morris branch nick: trunk timestamp: Fri 2012-06-22 00:01:32 -0700 message: Try to speed up pcomplete's calling of rpm -qa Ref: http://lists.gnu.org/archive/html/emacs-devel/2012-04/msg00174.html * lisp/pcmpl-rpm.el (pcmpl-rpm): New group. (pcmpl-rpm-query-options): New option. (pcmpl-rpm-packages): No need to inline it. Use pcmpl-rpm-query-options. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-22 01:50:35 +0000 +++ lisp/ChangeLog 2012-06-22 07:01:32 +0000 @@ -1,5 +1,10 @@ 2012-06-22 Glenn Morris + * pcmpl-rpm.el (pcmpl-rpm): New group. + (pcmpl-rpm-query-options): New option. + (pcmpl-rpm-packages): No need to inline it. + Use pcmpl-rpm-query-options. + * calendar/calendar.el (calendar-in-read-only-buffer): Avoid some needless mode changes. === modified file 'lisp/pcmpl-rpm.el' --- lisp/pcmpl-rpm.el 2012-04-07 18:52:43 +0000 +++ lisp/pcmpl-rpm.el 2012-06-22 07:01:32 +0000 @@ -27,18 +27,40 @@ (require 'pcomplete) +(defgroup pcmpl-rpm nil + "Options for rpm completion." + :group 'pcomplete + :prefix "pcmpl-rpm-") + +;; rpm -qa can be slow. Adding --nodigest --nosignature is MUCH faster. +(defcustom pcmpl-rpm-query-options + (let (opts) + (with-temp-buffer + (when (ignore-errors (call-process "rpm" nil t nil "--help")) + (if (search-backward "--nodigest " nil 'move) + (setq opts '("--nodigest"))) + (goto-char (point-min)) + (if (search-forward "--nosignature " nil t) + (push "--nosignature" opts)))) + opts) + "List of extra options to add to an rpm query command." + :version "24.2" + :type '(repeat string) + :group 'pcmpl-rpm) + ;; Functions: -;; FIXME rpm -qa can be slow, so: -;; Adding --nodigest --nosignature is MUCH faster. -;; (Probably need to test --help for those options though.) +;; TODO +;; This can be slow, so: ;; Consider caching the result (cf woman). ;; Consider printing an explanatory message before running -qa. -;; -;; Seems pointless for this to be a defsubst. -(defsubst pcmpl-rpm-packages () - (split-string (pcomplete-process-result "rpm" "-q" "-a"))) +(defun pcmpl-rpm-packages () + "Return a list of all installed rpm packages." + (split-string (apply 'pcomplete-process-result "rpm" + (append '("-q" "-a") pcmpl-rpm-query-options)))) +;; Should this use pcmpl-rpm-query-options? +;; I don't think it would speed it up at all (?). (defun pcmpl-rpm-all-query (flag) (message "Querying all packages with `%s'..." flag) (let ((pkgs (pcmpl-rpm-packages)) ------------------------------------------------------------ revno: 108676 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2012-06-22 09:51:06 +0300 message: Enlarge NSTATICS to 0x650. src/alloc.c (NSTATICS): Enlarge to 0x650. Otherwise, Emacs compiled with -DENABLE_CHECKING -DXASSERTS -DGLYPH_DEBUG=1 -DBYTE_CODE_METER aborts in staticpro during startup. (Without -DBYTE_CODE_METER, staticidx goes up to 1597 out of 1600 = 0x640.) diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-20 21:20:06 +0000 +++ src/ChangeLog 2012-06-22 06:51:06 +0000 @@ -1,3 +1,10 @@ +2012-06-22 Eli Zaretskii + + * alloc.c (NSTATICS): Enlarge to 0x650. Otherwise, Emacs compiled + with -DENABLE_CHECKING -DXASSERTS -DGLYPH_DEBUG=1 -DBYTE_CODE_METER + aborts in staticpro during startup. (Without -DBYTE_CODE_METER, + staticidx goes up to 1597 out of 1600 = 0x640.) + 2012-06-20 Paul Eggert * fileio.c (Fdefault_file_modes): Block input while fiddling with umask. === modified file 'src/alloc.c' --- src/alloc.c 2012-06-19 16:56:28 +0000 +++ src/alloc.c 2012-06-22 06:51:06 +0000 @@ -431,7 +431,7 @@ /* Addresses of staticpro'd variables. Initialize it to a nonzero value; otherwise some compilers put it into BSS. */ -#define NSTATICS 0x640 +#define NSTATICS 0x650 static Lisp_Object *staticvec[NSTATICS] = {&Vpurify_flag}; /* Index of next unused slot in staticvec. */