mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 10:27:41 +00:00
Merge from mainline.
This commit is contained in:
commit
4ef23ecf04
21 changed files with 368 additions and 221 deletions
|
|
@ -164,13 +164,17 @@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
|
|||
GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
|
||||
GNULIB_FCLOSE = @GNULIB_FCLOSE@
|
||||
GNULIB_FFLUSH = @GNULIB_FFLUSH@
|
||||
GNULIB_FGETC = @GNULIB_FGETC@
|
||||
GNULIB_FGETS = @GNULIB_FGETS@
|
||||
GNULIB_FOPEN = @GNULIB_FOPEN@
|
||||
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
||||
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
||||
GNULIB_FPURGE = @GNULIB_FPURGE@
|
||||
GNULIB_FPUTC = @GNULIB_FPUTC@
|
||||
GNULIB_FPUTS = @GNULIB_FPUTS@
|
||||
GNULIB_FREAD = @GNULIB_FREAD@
|
||||
GNULIB_FREOPEN = @GNULIB_FREOPEN@
|
||||
GNULIB_FSCANF = @GNULIB_FSCANF@
|
||||
GNULIB_FSEEK = @GNULIB_FSEEK@
|
||||
GNULIB_FSEEKO = @GNULIB_FSEEKO@
|
||||
GNULIB_FSTATAT = @GNULIB_FSTATAT@
|
||||
|
|
@ -180,6 +184,8 @@ GNULIB_FTELLO = @GNULIB_FTELLO@
|
|||
GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
|
||||
GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
|
||||
GNULIB_FWRITE = @GNULIB_FWRITE@
|
||||
GNULIB_GETC = @GNULIB_GETC@
|
||||
GNULIB_GETCHAR = @GNULIB_GETCHAR@
|
||||
GNULIB_GETCWD = @GNULIB_GETCWD@
|
||||
GNULIB_GETDELIM = @GNULIB_GETDELIM@
|
||||
GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
|
||||
|
|
@ -191,6 +197,7 @@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
|
|||
GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
|
||||
GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
|
||||
GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
|
||||
GNULIB_GETS = @GNULIB_GETS@
|
||||
GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
|
||||
GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
|
||||
GNULIB_GRANTPT = @GNULIB_GRANTPT@
|
||||
|
|
@ -230,6 +237,7 @@ GNULIB_PUTENV = @GNULIB_PUTENV@
|
|||
GNULIB_PUTS = @GNULIB_PUTS@
|
||||
GNULIB_PWRITE = @GNULIB_PWRITE@
|
||||
GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
|
||||
GNULIB_READ = @GNULIB_READ@
|
||||
GNULIB_READLINK = @GNULIB_READLINK@
|
||||
GNULIB_READLINKAT = @GNULIB_READLINKAT@
|
||||
GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
|
||||
|
|
@ -239,11 +247,13 @@ GNULIB_RENAME = @GNULIB_RENAME@
|
|||
GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
|
||||
GNULIB_RMDIR = @GNULIB_RMDIR@
|
||||
GNULIB_RPMATCH = @GNULIB_RPMATCH@
|
||||
GNULIB_SCANF = @GNULIB_SCANF@
|
||||
GNULIB_SETENV = @GNULIB_SETENV@
|
||||
GNULIB_SLEEP = @GNULIB_SLEEP@
|
||||
GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
|
||||
GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
|
||||
GNULIB_STAT = @GNULIB_STAT@
|
||||
GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
|
||||
GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
|
||||
GNULIB_STRPTIME = @GNULIB_STRPTIME@
|
||||
GNULIB_STRTOD = @GNULIB_STRTOD@
|
||||
|
|
@ -257,6 +267,7 @@ GNULIB_TIME_R = @GNULIB_TIME_R@
|
|||
GNULIB_TMPFILE = @GNULIB_TMPFILE@
|
||||
GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
|
||||
GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
|
||||
GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
|
||||
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
||||
GNULIB_UNLINK = @GNULIB_UNLINK@
|
||||
GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
|
||||
|
|
@ -268,8 +279,10 @@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
|||
GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
|
||||
GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
|
||||
GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
|
||||
GNULIB_VFSCANF = @GNULIB_VFSCANF@
|
||||
GNULIB_VPRINTF = @GNULIB_VPRINTF@
|
||||
GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
|
||||
GNULIB_VSCANF = @GNULIB_VSCANF@
|
||||
GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
|
||||
GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
|
||||
GNULIB_WCTOMB = @GNULIB_WCTOMB@
|
||||
|
|
@ -544,6 +557,7 @@ REPLACE_PREAD = @REPLACE_PREAD@
|
|||
REPLACE_PRINTF = @REPLACE_PRINTF@
|
||||
REPLACE_PUTENV = @REPLACE_PUTENV@
|
||||
REPLACE_PWRITE = @REPLACE_PWRITE@
|
||||
REPLACE_READ = @REPLACE_READ@
|
||||
REPLACE_READLINK = @REPLACE_READLINK@
|
||||
REPLACE_REALLOC = @REPLACE_REALLOC@
|
||||
REPLACE_REALPATH = @REPLACE_REALPATH@
|
||||
|
|
@ -556,6 +570,7 @@ REPLACE_SLEEP = @REPLACE_SLEEP@
|
|||
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
|
||||
REPLACE_SPRINTF = @REPLACE_SPRINTF@
|
||||
REPLACE_STAT = @REPLACE_STAT@
|
||||
REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
|
||||
REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
|
||||
REPLACE_STRTOD = @REPLACE_STRTOD@
|
||||
REPLACE_SYMLINK = @REPLACE_SYMLINK@
|
||||
|
|
@ -1108,20 +1123,27 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
|
|||
-e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
|
||||
-e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
|
||||
-e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
|
||||
-e 's|@''GNULIB_FGETC''@|$(GNULIB_FGETC)|g' \
|
||||
-e 's|@''GNULIB_FGETS''@|$(GNULIB_FGETS)|g' \
|
||||
-e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
|
||||
-e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
|
||||
-e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
|
||||
-e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
|
||||
-e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
|
||||
-e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
|
||||
-e 's|@''GNULIB_FREAD''@|$(GNULIB_FREAD)|g' \
|
||||
-e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
|
||||
-e 's|@''GNULIB_FSCANF''@|$(GNULIB_FSCANF)|g' \
|
||||
-e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
|
||||
-e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
|
||||
-e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
|
||||
-e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
|
||||
-e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
|
||||
-e 's|@''GNULIB_GETC''@|$(GNULIB_GETC)|g' \
|
||||
-e 's|@''GNULIB_GETCHAR''@|$(GNULIB_GETCHAR)|g' \
|
||||
-e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
|
||||
-e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
|
||||
-e 's|@''GNULIB_GETS''@|$(GNULIB_GETS)|g' \
|
||||
-e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
|
||||
-e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
|
||||
-e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
|
||||
|
|
@ -1134,14 +1156,18 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
|
|||
-e 's|@''GNULIB_REMOVE''@|$(GNULIB_REMOVE)|g' \
|
||||
-e 's|@''GNULIB_RENAME''@|$(GNULIB_RENAME)|g' \
|
||||
-e 's|@''GNULIB_RENAMEAT''@|$(GNULIB_RENAMEAT)|g' \
|
||||
-e 's|@''GNULIB_SCANF''@|$(GNULIB_SCANF)|g' \
|
||||
-e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
|
||||
-e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
|
||||
-e 's|@''GNULIB_STDIO_H_NONBLOCKING''@|$(GNULIB_STDIO_H_NONBLOCKING)|g' \
|
||||
-e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
|
||||
-e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
|
||||
-e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
|
||||
-e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
|
||||
-e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
|
||||
-e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
|
||||
-e 's|@''GNULIB_VFSCANF''@|$(GNULIB_VFSCANF)|g' \
|
||||
-e 's|@''GNULIB_VSCANF''@|$(GNULIB_VSCANF)|g' \
|
||||
-e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
|
||||
-e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
|
||||
-e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
|
||||
|
|
@ -1183,6 +1209,7 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
|
|||
-e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
|
||||
-e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
|
||||
-e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
|
||||
-e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
|
||||
-e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
|
||||
-e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
|
||||
-e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
|
||||
|
|
@ -1397,6 +1424,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
|
||||
-e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
|
||||
-e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
|
||||
-e 's|@''GNULIB_READ''@|$(GNULIB_READ)|g' \
|
||||
-e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
|
||||
-e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
|
||||
-e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
|
||||
|
|
@ -1405,6 +1433,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
|
||||
-e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
|
||||
-e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
|
||||
-e 's|@''GNULIB_UNISTD_H_NONBLOCKING''@|$(GNULIB_UNISTD_H_NONBLOCKING)|g' \
|
||||
-e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
|
||||
-e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
|
||||
-e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
|
||||
|
|
@ -1465,6 +1494,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
|
||||
-e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
|
||||
-e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
|
||||
-e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
|
||||
-e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
|
||||
-e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
|
||||
-e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
|
||||
|
|
|
|||
44
autogen/configure
vendored
44
autogen/configure
vendored
|
|
@ -683,6 +683,7 @@ REPLACE_VDPRINTF
|
|||
REPLACE_VASPRINTF
|
||||
REPLACE_TMPFILE
|
||||
REPLACE_STDIO_WRITE_FUNCS
|
||||
REPLACE_STDIO_READ_FUNCS
|
||||
REPLACE_SPRINTF
|
||||
REPLACE_SNPRINTF
|
||||
REPLACE_RENAMEAT
|
||||
|
|
@ -726,11 +727,15 @@ GNULIB_VPRINTF
|
|||
GNULIB_VFPRINTF_POSIX
|
||||
GNULIB_VFPRINTF
|
||||
GNULIB_VDPRINTF
|
||||
GNULIB_VSCANF
|
||||
GNULIB_VFSCANF
|
||||
GNULIB_VASPRINTF
|
||||
GNULIB_TMPFILE
|
||||
GNULIB_STDIO_H_SIGPIPE
|
||||
GNULIB_STDIO_H_NONBLOCKING
|
||||
GNULIB_SPRINTF_POSIX
|
||||
GNULIB_SNPRINTF
|
||||
GNULIB_SCANF
|
||||
GNULIB_RENAMEAT
|
||||
GNULIB_RENAME
|
||||
GNULIB_REMOVE
|
||||
|
|
@ -743,20 +748,27 @@ GNULIB_POPEN
|
|||
GNULIB_PERROR
|
||||
GNULIB_OBSTACK_PRINTF_POSIX
|
||||
GNULIB_OBSTACK_PRINTF
|
||||
GNULIB_GETS
|
||||
GNULIB_GETLINE
|
||||
GNULIB_GETDELIM
|
||||
GNULIB_GETCHAR
|
||||
GNULIB_GETC
|
||||
GNULIB_FWRITE
|
||||
GNULIB_FTELLO
|
||||
GNULIB_FTELL
|
||||
GNULIB_FSEEKO
|
||||
GNULIB_FSEEK
|
||||
GNULIB_FSCANF
|
||||
GNULIB_FREOPEN
|
||||
GNULIB_FREAD
|
||||
GNULIB_FPUTS
|
||||
GNULIB_FPUTC
|
||||
GNULIB_FPURGE
|
||||
GNULIB_FPRINTF_POSIX
|
||||
GNULIB_FPRINTF
|
||||
GNULIB_FOPEN
|
||||
GNULIB_FGETS
|
||||
GNULIB_FGETC
|
||||
GNULIB_FFLUSH
|
||||
GNULIB_FCLOSE
|
||||
GNULIB_DPRINTF
|
||||
|
|
@ -864,6 +876,7 @@ REPLACE_SYMLINK
|
|||
REPLACE_SLEEP
|
||||
REPLACE_RMDIR
|
||||
REPLACE_READLINK
|
||||
REPLACE_READ
|
||||
REPLACE_PWRITE
|
||||
REPLACE_PREAD
|
||||
REPLACE_LSEEK
|
||||
|
|
@ -922,6 +935,7 @@ GNULIB_USLEEP
|
|||
GNULIB_UNLINKAT
|
||||
GNULIB_UNLINK
|
||||
GNULIB_UNISTD_H_SIGPIPE
|
||||
GNULIB_UNISTD_H_NONBLOCKING
|
||||
GNULIB_UNISTD_H_GETOPT
|
||||
GNULIB_TTYNAME_R
|
||||
GNULIB_SYMLINKAT
|
||||
|
|
@ -930,6 +944,7 @@ GNULIB_SLEEP
|
|||
GNULIB_RMDIR
|
||||
GNULIB_READLINKAT
|
||||
GNULIB_READLINK
|
||||
GNULIB_READ
|
||||
GNULIB_PWRITE
|
||||
GNULIB_PREAD
|
||||
GNULIB_PIPE2
|
||||
|
|
@ -14025,6 +14040,7 @@ _ACEOF
|
|||
GNULIB_PIPE2=0;
|
||||
GNULIB_PREAD=0;
|
||||
GNULIB_PWRITE=0;
|
||||
GNULIB_READ=0;
|
||||
GNULIB_READLINK=0;
|
||||
GNULIB_READLINKAT=0;
|
||||
GNULIB_RMDIR=0;
|
||||
|
|
@ -14033,6 +14049,7 @@ _ACEOF
|
|||
GNULIB_SYMLINKAT=0;
|
||||
GNULIB_TTYNAME_R=0;
|
||||
GNULIB_UNISTD_H_GETOPT=0;
|
||||
GNULIB_UNISTD_H_NONBLOCKING=0;
|
||||
GNULIB_UNISTD_H_SIGPIPE=0;
|
||||
GNULIB_UNLINK=0;
|
||||
GNULIB_UNLINKAT=0;
|
||||
|
|
@ -14091,6 +14108,7 @@ _ACEOF
|
|||
REPLACE_LSEEK=0;
|
||||
REPLACE_PREAD=0;
|
||||
REPLACE_PWRITE=0;
|
||||
REPLACE_READ=0;
|
||||
REPLACE_READLINK=0;
|
||||
REPLACE_RMDIR=0;
|
||||
REPLACE_SLEEP=0;
|
||||
|
|
@ -15087,20 +15105,27 @@ $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
|
|||
GNULIB_DPRINTF=0;
|
||||
GNULIB_FCLOSE=0;
|
||||
GNULIB_FFLUSH=0;
|
||||
GNULIB_FGETC=0;
|
||||
GNULIB_FGETS=0;
|
||||
GNULIB_FOPEN=0;
|
||||
GNULIB_FPRINTF=0;
|
||||
GNULIB_FPRINTF_POSIX=0;
|
||||
GNULIB_FPURGE=0;
|
||||
GNULIB_FPUTC=0;
|
||||
GNULIB_FPUTS=0;
|
||||
GNULIB_FREAD=0;
|
||||
GNULIB_FREOPEN=0;
|
||||
GNULIB_FSCANF=0;
|
||||
GNULIB_FSEEK=0;
|
||||
GNULIB_FSEEKO=0;
|
||||
GNULIB_FTELL=0;
|
||||
GNULIB_FTELLO=0;
|
||||
GNULIB_FWRITE=0;
|
||||
GNULIB_GETC=0;
|
||||
GNULIB_GETCHAR=0;
|
||||
GNULIB_GETDELIM=0;
|
||||
GNULIB_GETLINE=0;
|
||||
GNULIB_GETS=0;
|
||||
GNULIB_OBSTACK_PRINTF=0;
|
||||
GNULIB_OBSTACK_PRINTF_POSIX=0;
|
||||
GNULIB_PERROR=0;
|
||||
|
|
@ -15113,11 +15138,15 @@ $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
|
|||
GNULIB_REMOVE=0;
|
||||
GNULIB_RENAME=0;
|
||||
GNULIB_RENAMEAT=0;
|
||||
GNULIB_SCANF=0;
|
||||
GNULIB_SNPRINTF=0;
|
||||
GNULIB_SPRINTF_POSIX=0;
|
||||
GNULIB_STDIO_H_NONBLOCKING=0;
|
||||
GNULIB_STDIO_H_SIGPIPE=0;
|
||||
GNULIB_TMPFILE=0;
|
||||
GNULIB_VASPRINTF=0;
|
||||
GNULIB_VFSCANF=0;
|
||||
GNULIB_VSCANF=0;
|
||||
GNULIB_VDPRINTF=0;
|
||||
GNULIB_VFPRINTF=0;
|
||||
GNULIB_VFPRINTF_POSIX=0;
|
||||
|
|
@ -15161,6 +15190,7 @@ $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
|
|||
REPLACE_RENAMEAT=0;
|
||||
REPLACE_SNPRINTF=0;
|
||||
REPLACE_SPRINTF=0;
|
||||
REPLACE_STDIO_READ_FUNCS=0;
|
||||
REPLACE_STDIO_WRITE_FUNCS=0;
|
||||
REPLACE_TMPFILE=0;
|
||||
REPLACE_VASPRINTF=0;
|
||||
|
|
@ -17619,6 +17649,19 @@ $as_echo "$gl_cv_next_stdio_h" >&6; }
|
|||
|
||||
|
||||
|
||||
|
||||
GNULIB_FSCANF=1
|
||||
GNULIB_SCANF=1
|
||||
GNULIB_VFSCANF=1
|
||||
GNULIB_VSCANF=1
|
||||
GNULIB_FGETC=1
|
||||
GNULIB_GETC=1
|
||||
GNULIB_GETCHAR=1
|
||||
GNULIB_FGETS=1
|
||||
GNULIB_GETS=1
|
||||
GNULIB_FREAD=1
|
||||
|
||||
|
||||
GNULIB_FPRINTF=1
|
||||
GNULIB_PRINTF=1
|
||||
GNULIB_VFPRINTF=1
|
||||
|
|
@ -17633,6 +17676,7 @@ $as_echo "$gl_cv_next_stdio_h" >&6; }
|
|||
|
||||
|
||||
|
||||
|
||||
# Code from module stdlib:
|
||||
|
||||
|
||||
|
|
|
|||
3
etc/NEWS
3
etc/NEWS
|
|
@ -779,6 +779,9 @@ sc.el, x-menu.el, rnews.el, rnewspost.el
|
|||
|
||||
* Lisp changes in Emacs 24.1
|
||||
|
||||
** `glyphless-char-table' can now distinguish between graphical and
|
||||
text terminal display, via a char-table entry that is a cons cell.
|
||||
|
||||
** `open-network-stream' can now be used to open an encrypted stream.
|
||||
It now accepts an optional `:type' parameter for initiating a TLS
|
||||
connection, directly or via STARTTLS. To do STARTTLS, additional
|
||||
|
|
|
|||
|
|
@ -1,3 +1,37 @@
|
|||
2011-04-19 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* calendar/cal-tex.el (cal-tex-list-holidays, cal-tex-cursor-month)
|
||||
(cal-tex-cursor-week, cal-tex-cursor-week2, cal-tex-cursor-week-iso)
|
||||
(cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
|
||||
(cal-tex-cursor-filofax-daily, cal-tex-mini-calendar)
|
||||
* calendar/cal-html.el (cal-html-insert-minical):
|
||||
* calendar/diary-lib.el (diary-list-entries-1, diary-list-entries)
|
||||
(calendar-mark-date-pattern):
|
||||
Prefix "unused" locals.
|
||||
|
||||
* calendar/cal-dst.el (dst-adjust-time): Remove never-implemented
|
||||
optional argument `style'.
|
||||
|
||||
* calendar/appt.el (appt-make-list):
|
||||
* calendar/cal-china.el (calendar-chinese-date-string):
|
||||
* calendar/cal-hebrew.el (calendar-hebrew-list-yahrzeits)
|
||||
(diary-hebrew-yahrzeit):
|
||||
* calendar/cal-tex.el (cal-tex-last-blank-p, cal-tex-cursor-week2):
|
||||
* calendar/calendar.el (calendar-generate-window):
|
||||
* calendar/time-date.el (time-to-days):
|
||||
Remove unused local variables.
|
||||
|
||||
2011-04-18 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* emacs-lisp/tabulated-list.el (tabulated-list-mode): Use a custom
|
||||
glyphless-char-display table.
|
||||
(tabulated-list-glyphless-char-display): New var.
|
||||
|
||||
2011-04-18 Sam Steingold <sds@gnu.org>
|
||||
|
||||
* vc/add-log.el (change-log-font-lock-keywords): Add "Thanks to"
|
||||
to acknowledgments.
|
||||
|
||||
2011-04-17 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* calendar/diary-lib.el (diary-sexp-entry):
|
||||
|
|
|
|||
|
|
@ -509,7 +509,6 @@ Any appointments made with `appt-add' are not affected by this function."
|
|||
;; entry begins with a time, add it to the
|
||||
;; appt-time-msg-list. Then sort the list.
|
||||
(let ((entry-list diary-entries-list)
|
||||
(new-time-string "")
|
||||
time-string)
|
||||
;; Below, we assume diary-entries-list was in date
|
||||
;; order. It is, unless something on
|
||||
|
|
|
|||
|
|
@ -575,8 +575,7 @@ Defaults to today's date if DATE is not given."
|
|||
;; Remainder of (1+(floor month))/12, with
|
||||
;; 12 instead of 0.
|
||||
(1+ (mod (floor month) 12))
|
||||
1)))
|
||||
(m-cycle (% (+ (* year 5) (floor month)) 60)))
|
||||
1))))
|
||||
(format "Cycle %s, year %s (%s), %smonth %s%s, day %s (%s)"
|
||||
cycle
|
||||
year (calendar-chinese-sexagesimal-name year)
|
||||
|
|
|
|||
|
|
@ -445,16 +445,12 @@ Fractional part of DATE is local standard time of day."
|
|||
(or (<= dst-starts date) (< date dst-ends))))))
|
||||
|
||||
;; used by calc, lunar, solar.
|
||||
(defun dst-adjust-time (date time &optional style)
|
||||
(defun dst-adjust-time (date time)
|
||||
"Adjust, to account for dst on DATE, decimal fraction standard TIME.
|
||||
Returns a list (date adj-time zone) where `date' and `adj-time' are the values
|
||||
adjusted for `zone'; here `date' is a list (month day year), `adj-time' is a
|
||||
decimal fraction time, and `zone' is a string.
|
||||
|
||||
Optional parameter STYLE forces the result time to be standard time when its
|
||||
value is 'standard and daylight saving time (if available) when its value is
|
||||
'daylight.
|
||||
|
||||
Conversion to daylight saving time is done according to
|
||||
`calendar-daylight-savings-starts', `calendar-daylight-savings-ends',
|
||||
`calendar-daylight-savings-starts-time',
|
||||
|
|
|
|||
|
|
@ -764,8 +764,6 @@ from the cursor position."
|
|||
(message "Computing Yahrzeits...")
|
||||
(let* ((h-date (calendar-hebrew-from-absolute
|
||||
(calendar-absolute-from-gregorian death-date)))
|
||||
(h-month (calendar-extract-month h-date))
|
||||
(h-day (calendar-extract-day h-date))
|
||||
(h-year (calendar-extract-year h-date))
|
||||
(i (1- start-year)))
|
||||
(calendar-in-read-only-buffer calendar-hebrew-yahrzeit-buffer
|
||||
|
|
@ -900,8 +898,6 @@ use when highlighting the day in the calendar."
|
|||
(+ (calendar-absolute-from-gregorian
|
||||
(diary-make-date death-month death-day death-year))
|
||||
(if after-sunset 1 0))))
|
||||
(h-month (calendar-extract-month h-date))
|
||||
(h-day (calendar-extract-day h-date))
|
||||
(h-year (calendar-extract-year h-date))
|
||||
(d (calendar-absolute-from-gregorian date))
|
||||
(yr (calendar-extract-year (calendar-hebrew-from-absolute d)))
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ Contains links to previous and next month and year, and current minical."
|
|||
(insert cal-html-e-tablerow-string)
|
||||
;; Initial empty slots.
|
||||
(insert cal-html-b-tablerow-string)
|
||||
(dotimes (i blank-days)
|
||||
(dotimes (_i blank-days)
|
||||
(insert
|
||||
cal-html-b-tabledata-string
|
||||
cal-html-e-tabledata-string))
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ This definition is the heart of the calendar!")
|
|||
3)))
|
||||
holidays in-range a)
|
||||
(calendar-increment-month displayed-month displayed-year 1)
|
||||
(dotimes (idummy number-of-intervals)
|
||||
(dotimes (_idummy number-of-intervals)
|
||||
(setq holidays (append holidays (calendar-holiday-list)))
|
||||
(calendar-increment-month displayed-month displayed-year 3))
|
||||
(dolist (hol holidays)
|
||||
|
|
@ -525,7 +525,7 @@ indicates a buffer position to use instead of point."
|
|||
(cal-tex-insert-day-names)
|
||||
(cal-tex-nl ".2cm")
|
||||
(cal-tex-insert-blank-days month year cal-tex-day-prefix)
|
||||
(dotimes (idummy n)
|
||||
(dotimes (_idummy n)
|
||||
(cal-tex-insert-days month year diary-list holidays cal-tex-day-prefix)
|
||||
(when (= (calendar-week-end-day)
|
||||
(calendar-day-of-week
|
||||
|
|
@ -642,7 +642,7 @@ in the calendar starting in MONTH YEAR."
|
|||
;; start of the last week in the month.
|
||||
(catch 'found
|
||||
(let ((last-day (calendar-last-day-of-month month year))
|
||||
day dow)
|
||||
dow)
|
||||
(dotimes (i 7)
|
||||
(if (memq (setq dow (calendar-day-of-week
|
||||
(list month (- last-day i) year)))
|
||||
|
|
@ -717,7 +717,7 @@ entries are not shown). The calendar shows the hours 8-12am, 1-5pm."
|
|||
(cal-tex-e-center)
|
||||
(cal-tex-hspace "-.2in")
|
||||
(cal-tex-b-parbox "l" "7in")
|
||||
(dotimes (jdummy 7)
|
||||
(dotimes (_jdummy 7)
|
||||
(cal-tex-week-hours date holidays "3.1")
|
||||
(setq date (cal-tex-incr-date date)))
|
||||
(cal-tex-e-parbox)
|
||||
|
|
@ -749,7 +749,6 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(calendar-cursor-to-date t event)))))
|
||||
(month (calendar-extract-month date))
|
||||
(year (calendar-extract-year date))
|
||||
(d date)
|
||||
(d1 (calendar-absolute-from-gregorian date))
|
||||
(d2 (+ (* 7 n) d1))
|
||||
(holidays (if cal-tex-holidays
|
||||
|
|
@ -773,7 +772,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-e-center)
|
||||
(cal-tex-hspace "-.2in")
|
||||
(cal-tex-b-parbox "l" "\\textwidth")
|
||||
(dotimes (jdummy 3)
|
||||
(dotimes (_jdummy 3)
|
||||
(cal-tex-week-hours date holidays "5")
|
||||
(setq date (cal-tex-incr-date date)))
|
||||
(cal-tex-e-parbox)
|
||||
|
|
@ -801,7 +800,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(insert "}")
|
||||
(cal-tex-nl)
|
||||
(cal-tex-b-parbox "l" "\\textwidth")
|
||||
(dotimes (jdummy 4)
|
||||
(dotimes (_jdummy 4)
|
||||
(cal-tex-week-hours date holidays "5")
|
||||
(setq date (cal-tex-incr-date date)))
|
||||
(cal-tex-e-parbox)
|
||||
|
|
@ -863,7 +862,7 @@ position to use instead of point."
|
|||
(cal-tex-nl ".5cm")
|
||||
(cal-tex-e-center)
|
||||
(cal-tex-b-parbox "l" "\\textwidth")
|
||||
(dotimes (j 7)
|
||||
(dotimes (_j 7)
|
||||
(cal-tex-b-parbox "t" "\\textwidth")
|
||||
(cal-tex-b-parbox "t" "\\textwidth")
|
||||
(cal-tex-rule "0pt" "\\textwidth" ".2mm")
|
||||
|
|
@ -1112,7 +1111,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-month-name (calendar-extract-month d))
|
||||
(calendar-extract-year d))))))
|
||||
(insert "%\n")
|
||||
(dotimes (jdummy 7)
|
||||
(dotimes (_jdummy 7)
|
||||
(if (zerop (mod i 2))
|
||||
(insert "\\rightday")
|
||||
(insert "\\leftday"))
|
||||
|
|
@ -1216,7 +1215,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-month-name (calendar-extract-month d))
|
||||
(calendar-extract-year d))))))
|
||||
(insert "%\n")
|
||||
(dotimes (jdummy 3)
|
||||
(dotimes (_jdummy 3)
|
||||
(insert "\\leftday")
|
||||
(cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
|
||||
(cal-tex-arg (number-to-string (calendar-extract-day date)))
|
||||
|
|
@ -1247,7 +1246,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-month-name (calendar-extract-month d))
|
||||
(calendar-extract-year d))))))
|
||||
(insert "%\n")
|
||||
(dotimes (jdummy 2)
|
||||
(dotimes (_jdummy 2)
|
||||
(insert "\\rightday")
|
||||
(cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
|
||||
(cal-tex-arg (number-to-string (calendar-extract-day date)))
|
||||
|
|
@ -1256,7 +1255,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-arg (eval cal-tex-daily-string))
|
||||
(insert "%\n")
|
||||
(setq date (cal-tex-incr-date date)))
|
||||
(dotimes (jdummy 2)
|
||||
(dotimes (_jdummy 2)
|
||||
(insert "\\weekend")
|
||||
(cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
|
||||
(cal-tex-arg (number-to-string (calendar-extract-day date)))
|
||||
|
|
@ -1362,7 +1361,7 @@ Optional EVENT indicates a buffer position to use instead of point."
|
|||
(cal-tex-newpage)
|
||||
(setq date (cal-tex-incr-date date)))
|
||||
(insert "%\n")
|
||||
(dotimes (jdummy 2)
|
||||
(dotimes (_jdummy 2)
|
||||
(insert "\\lefthead")
|
||||
(cal-tex-arg (calendar-date-string date))
|
||||
(insert "\\weekend")
|
||||
|
|
@ -1523,7 +1522,7 @@ Optional string COLSEP gives the column separation (default \"1mm\")."
|
|||
(if (= i 6)
|
||||
"\\\\[0.7mm]\n"
|
||||
" & "))))
|
||||
(dotimes (idummy blank-days)
|
||||
(dotimes (_idummy blank-days)
|
||||
(setq str (concat str " & ")))
|
||||
(dotimes (i last)
|
||||
(setq str (concat str (number-to-string (1+ i)))
|
||||
|
|
|
|||
|
|
@ -1363,7 +1363,6 @@ Optional integers MON and YR are used instead of today's date."
|
|||
(year (calendar-extract-year today))
|
||||
(today-visible (or (not mon)
|
||||
(<= (abs (calendar-interval mon yr month year)) 1)))
|
||||
(day-in-week (calendar-day-of-week today))
|
||||
(in-calendar-window (eq (window-buffer (selected-window))
|
||||
(get-buffer calendar-buffer))))
|
||||
(calendar-generate (or mon month) (or yr year))
|
||||
|
|
|
|||
|
|
@ -710,7 +710,7 @@ MONTHS is an array of month names. SYMBOL marks diary entries of the type
|
|||
in question. ABSFUNC is a function that converts absolute dates to dates
|
||||
of the appropriate type."
|
||||
(let ((gdate original-date))
|
||||
(dotimes (idummy number)
|
||||
(dotimes (_idummy number)
|
||||
(diary-list-entries-2
|
||||
(funcall absfunc (calendar-absolute-from-gregorian gdate))
|
||||
diary-nonmarking-symbol file-glob-attrs list-only months symbol gdate)
|
||||
|
|
@ -820,7 +820,7 @@ LIST-ONLY is non-nil, in which case it just returns the list."
|
|||
(set (make-local-variable 'diary-selective-display) t)
|
||||
(overlay-put ol 'invisible 'diary)
|
||||
(overlay-put ol 'evaporate t)))
|
||||
(dotimes (idummy number)
|
||||
(dotimes (_idummy number)
|
||||
(let ((sexp-found (diary-list-sexp-entries date))
|
||||
(entry-found (diary-list-entries-2
|
||||
date diary-nonmarking-symbol
|
||||
|
|
@ -1509,7 +1509,7 @@ passed to `calendar-mark-visible-date' as MARK."
|
|||
(let ((m displayed-month)
|
||||
(y displayed-year))
|
||||
(calendar-increment-month m y -1)
|
||||
(dotimes (idummy 3)
|
||||
(dotimes (_idummy 3)
|
||||
(calendar-mark-month m y month day year color)
|
||||
(calendar-increment-month m y 1)))))
|
||||
|
||||
|
|
|
|||
|
|
@ -243,8 +243,6 @@ DATE1 and DATE2 should be date-time strings."
|
|||
TIME should be a time value.
|
||||
The Gregorian date Sunday, December 31, 1bce is imaginary."
|
||||
(let* ((tim (decode-time time))
|
||||
(month (nth 4 tim))
|
||||
(day (nth 3 tim))
|
||||
(year (nth 5 tim)))
|
||||
(+ (time-to-day-in-year time) ; Days this year
|
||||
(* 365 (1- year)) ; + Days in prior years
|
||||
|
|
|
|||
|
|
@ -143,6 +143,15 @@ If ADVANCE is non-nil, move forward by one line afterwards."
|
|||
map)
|
||||
"Local keymap for `tabulated-list-mode' sort buttons.")
|
||||
|
||||
(defvar tabulated-list-glyphless-char-display
|
||||
(let ((table (make-char-table 'glyphless-char-display nil)))
|
||||
(set-char-table-parent table glyphless-char-display)
|
||||
;; Some text terminals can't display the unicode arrows; be safe.
|
||||
(aset table 9650 (cons nil "^"))
|
||||
(aset table 9660 (cons nil "v"))
|
||||
table)
|
||||
"The `glyphless-char-display' table in Tabulated List buffers.")
|
||||
|
||||
(defun tabulated-list-init-header ()
|
||||
"Set up header line for the Tabulated List buffer."
|
||||
(let ((x tabulated-list-padding)
|
||||
|
|
@ -341,7 +350,9 @@ as the ewoc pretty-printer."
|
|||
(setq truncate-lines t)
|
||||
(setq buffer-read-only t)
|
||||
(set (make-local-variable 'revert-buffer-function)
|
||||
'tabulated-list-revert))
|
||||
'tabulated-list-revert)
|
||||
(set (make-local-variable 'glyphless-char-display)
|
||||
tabulated-list-glyphless-char-display))
|
||||
|
||||
(put 'tabulated-list-mode 'mode-class 'special)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
2011-04-18 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus-registry.el: Eliminate cl functions.
|
||||
(gnus-registry-sort-addresses): New function that replaces mapcan.
|
||||
(gnus-registry-action, gnus-registry-spool-action)
|
||||
(gnus-registry-split-fancy-with-parent)
|
||||
(gnus-registry-fetch-recipients-fast): Use it.
|
||||
(gnus-registry-import-eld): Replace delete* with dolist + delq.
|
||||
|
||||
* registry.el (initialize-instance, registry-lookup)
|
||||
(registry-lookup-breaks-before-lexbind, registry-lookup-secondary)
|
||||
(registry-lookup-secondary-value, registry-search, registry-delete)
|
||||
(registry-insert, registry-reindex, registry-size, registry-prune):
|
||||
Use eval-and-compile.
|
||||
|
||||
2011-04-16 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* registry.el (registry-reindex): New method to recreate the secondary
|
||||
|
|
|
|||
|
|
@ -303,15 +303,9 @@ This is not required after changing `gnus-registry-cache-file'."
|
|||
(defun gnus-registry-action (action data-header from &optional to method)
|
||||
(let* ((id (mail-header-id data-header))
|
||||
(subject (mail-header-subject data-header))
|
||||
(recipients (sort (mapcan 'gnus-registry-extract-addresses
|
||||
(list
|
||||
(or (ignore-errors
|
||||
(mail-header "Cc" data-header))
|
||||
"")
|
||||
(or (ignore-errors
|
||||
(mail-header "To" data-header))
|
||||
"")))
|
||||
'string-lessp))
|
||||
(recipients (gnus-registry-sort-addresses
|
||||
(or (ignore-errors (mail-header "Cc" data-header)) "")
|
||||
(or (ignore-errors (mail-header "To" data-header)) "")))
|
||||
(sender (nth 0 (gnus-registry-extract-addresses
|
||||
(mail-header-from data-header))))
|
||||
(from (gnus-group-guess-full-name-from-command-method from))
|
||||
|
|
@ -329,11 +323,9 @@ This is not required after changing `gnus-registry-cache-file'."
|
|||
(defun gnus-registry-spool-action (id group &optional subject sender recipients)
|
||||
(let ((to (gnus-group-guess-full-name-from-command-method group))
|
||||
(recipients (or recipients
|
||||
(sort (mapcan 'gnus-registry-extract-addresses
|
||||
(list
|
||||
(or (message-fetch-field "cc") "")
|
||||
(or (message-fetch-field "to") "")))
|
||||
'string-lessp)))
|
||||
(gnus-registry-sort-addresses
|
||||
(or (message-fetch-field "cc") "")
|
||||
(or (message-fetch-field "to") ""))))
|
||||
(subject (or subject (message-fetch-field "subject")))
|
||||
(sender (or sender (message-fetch-field "from"))))
|
||||
(when (and (stringp id) (string-match "\r$" id))
|
||||
|
|
@ -409,11 +401,9 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
|
|||
;; these may not be used, but the code is cleaner having them up here
|
||||
(sender (gnus-string-remove-all-properties
|
||||
(message-fetch-field "from")))
|
||||
(recipients (sort (mapcan 'gnus-registry-extract-addresses
|
||||
(list
|
||||
(or (message-fetch-field "cc") "")
|
||||
(or (message-fetch-field "to") "")))
|
||||
'string-lessp))
|
||||
(recipients (gnus-registry-sort-addresses
|
||||
(or (message-fetch-field "cc") "")
|
||||
(or (message-fetch-field "to") "")))
|
||||
(subject (gnus-string-remove-all-properties
|
||||
(gnus-registry-simplify-subject
|
||||
(message-fetch-field "subject"))))
|
||||
|
|
@ -719,6 +709,11 @@ Addresses without a name will say \"noname\"."
|
|||
(format "%s <%s>" name addr))))
|
||||
(mail-extract-address-components text t)))
|
||||
|
||||
(defun gnus-registry-sort-addresses (&rest addresses)
|
||||
"Return a normalized and sorted list of ADDRESSES."
|
||||
(sort (apply 'nconc (mapcar 'gnus-registry-extract-addresses addresses))
|
||||
'string-lessp))
|
||||
|
||||
(defun gnus-registry-simplify-subject (subject)
|
||||
(if (stringp subject)
|
||||
(gnus-simplify-subject subject)
|
||||
|
|
@ -738,15 +733,9 @@ Addresses without a name will say \"noname\"."
|
|||
(gnus-registry-fetch-header-fast "from" article))
|
||||
|
||||
(defun gnus-registry-fetch-recipients-fast (article)
|
||||
(sort (mapcan 'gnus-registry-extract-addresses
|
||||
(list
|
||||
(or (ignore-errors
|
||||
(gnus-registry-fetch-header-fast "Cc" article))
|
||||
"")
|
||||
(or (ignore-errors
|
||||
(gnus-registry-fetch-header-fast "To" article))
|
||||
"")))
|
||||
'string-lessp))
|
||||
(gnus-registry-sort-addresses
|
||||
(or (ignore-errors (gnus-registry-fetch-header-fast "Cc" article)) "")
|
||||
(or (ignore-errors (gnus-registry-fetch-header-fast "To" article)) "")))
|
||||
|
||||
(defun gnus-registry-fetch-header-fast (article header)
|
||||
"Fetch the HEADER quickly, using the internal gnus-data-list function"
|
||||
|
|
@ -982,7 +971,8 @@ only the last one's marks are returned."
|
|||
collect p))
|
||||
extra-cell key val)
|
||||
;; remove all the strings from the entry
|
||||
(delete* nil rest :test (lambda (a b) (stringp b)))
|
||||
(dolist (elem rest)
|
||||
(if (stringp elem) (setq rest (delq elem rest))))
|
||||
(gnus-registry-set-id-key id 'group groups)
|
||||
;; just use the first extra element
|
||||
(setq rest (car-safe rest))
|
||||
|
|
|
|||
|
|
@ -131,58 +131,60 @@
|
|||
:type hash-table
|
||||
:documentation "The data hashtable.")))
|
||||
|
||||
(defmethod initialize-instance :AFTER ((this registry-db) slots)
|
||||
"Set value of data slot of THIS after initialization."
|
||||
(with-slots (data tracker) this
|
||||
(unless (member :data slots)
|
||||
(setq data (make-hash-table :size 10000 :rehash-size 2.0 :test 'equal)))
|
||||
(unless (member :tracker slots)
|
||||
(setq tracker (make-hash-table :size 100 :rehash-size 2.0)))))
|
||||
(eval-and-compile
|
||||
(defmethod initialize-instance :AFTER ((this registry-db) slots)
|
||||
"Set value of data slot of THIS after initialization."
|
||||
(with-slots (data tracker) this
|
||||
(unless (member :data slots)
|
||||
(setq data
|
||||
(make-hash-table :size 10000 :rehash-size 2.0 :test 'equal)))
|
||||
(unless (member :tracker slots)
|
||||
(setq tracker (make-hash-table :size 100 :rehash-size 2.0)))))
|
||||
|
||||
(defmethod registry-lookup ((db registry-db) keys)
|
||||
"Search for KEYS in the registry-db THIS.
|
||||
(defmethod registry-lookup ((db registry-db) keys)
|
||||
"Search for KEYS in the registry-db THIS.
|
||||
Returns a alist of the key followed by the entry in a list, not a cons cell."
|
||||
(let ((data (oref db :data)))
|
||||
(delq nil
|
||||
(mapcar
|
||||
(lambda (k)
|
||||
(when (gethash k data)
|
||||
(list k (gethash k data))))
|
||||
keys))))
|
||||
(let ((data (oref db :data)))
|
||||
(delq nil
|
||||
(mapcar
|
||||
(lambda (k)
|
||||
(when (gethash k data)
|
||||
(list k (gethash k data))))
|
||||
keys))))
|
||||
|
||||
(defmethod registry-lookup-breaks-before-lexbind ((db registry-db) keys)
|
||||
"Search for KEYS in the registry-db THIS.
|
||||
(defmethod registry-lookup-breaks-before-lexbind ((db registry-db) keys)
|
||||
"Search for KEYS in the registry-db THIS.
|
||||
Returns a alist of the key followed by the entry in a list, not a cons cell."
|
||||
(let ((data (oref db :data)))
|
||||
(delq nil
|
||||
(loop for key in keys
|
||||
when (gethash key data)
|
||||
collect (list key (gethash key data))))))
|
||||
(let ((data (oref db :data)))
|
||||
(delq nil
|
||||
(loop for key in keys
|
||||
when (gethash key data)
|
||||
collect (list key (gethash key data))))))
|
||||
|
||||
(defmethod registry-lookup-secondary ((db registry-db) tracksym
|
||||
&optional create)
|
||||
"Search for TRACKSYM in the registry-db THIS.
|
||||
(defmethod registry-lookup-secondary ((db registry-db) tracksym
|
||||
&optional create)
|
||||
"Search for TRACKSYM in the registry-db THIS.
|
||||
When CREATE is not nil, create the secondary index hashtable if needed."
|
||||
(let ((h (gethash tracksym (oref db :tracker))))
|
||||
(if h
|
||||
h
|
||||
(when create
|
||||
(puthash tracksym
|
||||
(make-hash-table :size 800 :rehash-size 2.0 :test 'equal)
|
||||
(oref db :tracker))
|
||||
(gethash tracksym (oref db :tracker))))))
|
||||
(let ((h (gethash tracksym (oref db :tracker))))
|
||||
(if h
|
||||
h
|
||||
(when create
|
||||
(puthash tracksym
|
||||
(make-hash-table :size 800 :rehash-size 2.0 :test 'equal)
|
||||
(oref db :tracker))
|
||||
(gethash tracksym (oref db :tracker))))))
|
||||
|
||||
(defmethod registry-lookup-secondary-value ((db registry-db) tracksym val
|
||||
&optional set)
|
||||
"Search for TRACKSYM with value VAL in the registry-db THIS.
|
||||
(defmethod registry-lookup-secondary-value ((db registry-db) tracksym val
|
||||
&optional set)
|
||||
"Search for TRACKSYM with value VAL in the registry-db THIS.
|
||||
When SET is not nil, set it for VAL (use t for an empty list)."
|
||||
;; either we're asked for creation or there should be an existing index
|
||||
(when (or set (registry-lookup-secondary db tracksym))
|
||||
;; set the entry if requested,
|
||||
(when set
|
||||
(puthash val (if (eq t set) '() set)
|
||||
(registry-lookup-secondary db tracksym t)))
|
||||
(gethash val (registry-lookup-secondary db tracksym))))
|
||||
;; either we're asked for creation or there should be an existing index
|
||||
(when (or set (registry-lookup-secondary db tracksym))
|
||||
;; set the entry if requested,
|
||||
(when set
|
||||
(puthash val (if (eq t set) '() set)
|
||||
(registry-lookup-secondary db tracksym t)))
|
||||
(gethash val (registry-lookup-secondary db tracksym)))))
|
||||
|
||||
(defun registry--match (mode entry check-list)
|
||||
;; for all members
|
||||
|
|
@ -204,129 +206,133 @@ When SET is not nil, set it for VAL (use t for an empty list)."
|
|||
(or found
|
||||
(registry--match mode entry (cdr-safe check-list))))))
|
||||
|
||||
(defmethod registry-search ((db registry-db) &rest spec)
|
||||
"Search for SPEC across the registry-db THIS.
|
||||
(eval-and-compile
|
||||
(defmethod registry-search ((db registry-db) &rest spec)
|
||||
"Search for SPEC across the registry-db THIS.
|
||||
For example calling with :member '(a 1 2) will match entry '((a 3 1)).
|
||||
Calling with :all t (any non-nil value) will match all.
|
||||
Calling with :regex '\(a \"h.llo\") will match entry '((a \"hullo\" \"bye\").
|
||||
The test order is to check :all first, then :member, then :regex."
|
||||
(when db
|
||||
(let ((all (plist-get spec :all))
|
||||
(member (plist-get spec :member))
|
||||
(regex (plist-get spec :regex)))
|
||||
(loop for k being the hash-keys of (oref db :data) using (hash-values v)
|
||||
when (or
|
||||
;; :all non-nil returns all
|
||||
all
|
||||
;; member matching
|
||||
(and member (registry--match :member v member))
|
||||
;; regex matching
|
||||
(and regex (registry--match :regex v regex)))
|
||||
collect k))))
|
||||
(when db
|
||||
(let ((all (plist-get spec :all))
|
||||
(member (plist-get spec :member))
|
||||
(regex (plist-get spec :regex)))
|
||||
(loop for k being the hash-keys of (oref db :data)
|
||||
using (hash-values v)
|
||||
when (or
|
||||
;; :all non-nil returns all
|
||||
all
|
||||
;; member matching
|
||||
(and member (registry--match :member v member))
|
||||
;; regex matching
|
||||
(and regex (registry--match :regex v regex)))
|
||||
collect k))))
|
||||
|
||||
(defmethod registry-delete ((db registry-db) keys assert &rest spec)
|
||||
"Delete KEYS from the registry-db THIS.
|
||||
(defmethod registry-delete ((db registry-db) keys assert &rest spec)
|
||||
"Delete KEYS from the registry-db THIS.
|
||||
If KEYS is nil, use SPEC to do a search.
|
||||
Updates the secondary ('tracked') indices as well.
|
||||
With assert non-nil, errors out if the key does not exist already."
|
||||
(let* ((data (oref db :data))
|
||||
(keys (or keys
|
||||
(apply 'registry-search db spec)))
|
||||
(tracked (oref db :tracked)))
|
||||
(let* ((data (oref db :data))
|
||||
(keys (or keys
|
||||
(apply 'registry-search db spec)))
|
||||
(tracked (oref db :tracked)))
|
||||
|
||||
(dolist (key keys)
|
||||
(let ((entry (gethash key data)))
|
||||
(when assert
|
||||
(assert entry nil
|
||||
"Key %s does not exists in database" key))
|
||||
;; clean entry from the secondary indices
|
||||
(dolist (tr tracked)
|
||||
;; is this tracked symbol indexed?
|
||||
(when (registry-lookup-secondary db tr)
|
||||
;; for every value in the entry under that key...
|
||||
(dolist (val (cdr-safe (assq tr entry)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value db tr val)))
|
||||
(when (member key value-keys)
|
||||
;; override the previous value
|
||||
(registry-lookup-secondary-value
|
||||
db tr val
|
||||
;; with the indexed keys MINUS the current key
|
||||
;; (we pass t when the list is empty)
|
||||
(or (delete key value-keys) t)))))))
|
||||
(remhash key data)))
|
||||
keys))
|
||||
(dolist (key keys)
|
||||
(let ((entry (gethash key data)))
|
||||
(when assert
|
||||
(assert entry nil
|
||||
"Key %s does not exists in database" key))
|
||||
;; clean entry from the secondary indices
|
||||
(dolist (tr tracked)
|
||||
;; is this tracked symbol indexed?
|
||||
(when (registry-lookup-secondary db tr)
|
||||
;; for every value in the entry under that key...
|
||||
(dolist (val (cdr-safe (assq tr entry)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value
|
||||
db tr val)))
|
||||
(when (member key value-keys)
|
||||
;; override the previous value
|
||||
(registry-lookup-secondary-value
|
||||
db tr val
|
||||
;; with the indexed keys MINUS the current key
|
||||
;; (we pass t when the list is empty)
|
||||
(or (delete key value-keys) t)))))))
|
||||
(remhash key data)))
|
||||
keys))
|
||||
|
||||
(defmethod registry-insert ((db registry-db) key entry)
|
||||
"Insert ENTRY under KEY into the registry-db THIS.
|
||||
(defmethod registry-insert ((db registry-db) key entry)
|
||||
"Insert ENTRY under KEY into the registry-db THIS.
|
||||
Updates the secondary ('tracked') indices as well.
|
||||
Errors out if the key exists already."
|
||||
|
||||
(assert (not (gethash key (oref db :data))) nil
|
||||
"Key already exists in database")
|
||||
(assert (not (gethash key (oref db :data))) nil
|
||||
"Key already exists in database")
|
||||
|
||||
(assert (< (registry-size db)
|
||||
(oref db :max-hard))
|
||||
nil
|
||||
"max-hard size limit reached")
|
||||
(assert (< (registry-size db)
|
||||
(oref db :max-hard))
|
||||
nil
|
||||
"max-hard size limit reached")
|
||||
|
||||
;; store the entry
|
||||
(puthash key entry (oref db :data))
|
||||
;; store the entry
|
||||
(puthash key entry (oref db :data))
|
||||
|
||||
;; store the secondary indices
|
||||
(dolist (tr (oref db :tracked))
|
||||
;; for every value in the entry under that key...
|
||||
(dolist (val (cdr-safe (assq tr entry)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value db tr val)))
|
||||
(pushnew key value-keys :test 'equal)
|
||||
(registry-lookup-secondary-value db tr val value-keys))))
|
||||
entry)
|
||||
|
||||
(defmethod registry-reindex ((db registry-db))
|
||||
"Rebuild the secondary indices of registry-db THIS."
|
||||
(let ((count 0)
|
||||
(expected (* (length (oref db :tracked)) (registry-size db))))
|
||||
;; store the secondary indices
|
||||
(dolist (tr (oref db :tracked))
|
||||
(let (values)
|
||||
(maphash
|
||||
(lambda (key v)
|
||||
(incf count)
|
||||
(when (and (< 0 expected)
|
||||
(= 0 (mod count 1000)))
|
||||
(message "reindexing: %d of %d (%.2f%%)"
|
||||
count expected (/ (* 1000 count) expected)))
|
||||
(dolist (val (cdr-safe (assq tr v)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value db tr val)))
|
||||
(push key value-keys)
|
||||
(registry-lookup-secondary-value db tr val value-keys))))
|
||||
(oref db :data))))))
|
||||
;; for every value in the entry under that key...
|
||||
(dolist (val (cdr-safe (assq tr entry)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value db tr val)))
|
||||
(pushnew key value-keys :test 'equal)
|
||||
(registry-lookup-secondary-value db tr val value-keys))))
|
||||
entry)
|
||||
|
||||
(defmethod registry-size ((db registry-db))
|
||||
"Returns the size of the registry-db object THIS.
|
||||
(defmethod registry-reindex ((db registry-db))
|
||||
"Rebuild the secondary indices of registry-db THIS."
|
||||
(let ((count 0)
|
||||
(expected (* (length (oref db :tracked)) (registry-size db))))
|
||||
(dolist (tr (oref db :tracked))
|
||||
(let (values)
|
||||
(maphash
|
||||
(lambda (key v)
|
||||
(incf count)
|
||||
(when (and (< 0 expected)
|
||||
(= 0 (mod count 1000)))
|
||||
(message "reindexing: %d of %d (%.2f%%)"
|
||||
count expected (/ (* 1000 count) expected)))
|
||||
(dolist (val (cdr-safe (assq tr v)))
|
||||
(let* ((value-keys (registry-lookup-secondary-value db tr val)))
|
||||
(push key value-keys)
|
||||
(registry-lookup-secondary-value db tr val value-keys))))
|
||||
(oref db :data))))))
|
||||
|
||||
(defmethod registry-size ((db registry-db))
|
||||
"Returns the size of the registry-db object THIS.
|
||||
This is the key count of the :data slot."
|
||||
(hash-table-count (oref db :data)))
|
||||
(hash-table-count (oref db :data)))
|
||||
|
||||
(defmethod registry-prune ((db registry-db))
|
||||
"Prunes the registry-db object THIS.
|
||||
(defmethod registry-prune ((db registry-db))
|
||||
"Prunes the registry-db object THIS.
|
||||
Removes only entries without the :precious keys."
|
||||
(let* ((precious (oref db :precious))
|
||||
(precious-p (lambda (entry-key) (cdr (memq (car entry-key) precious))))
|
||||
(data (oref db :data))
|
||||
(limit (oref db :max-soft))
|
||||
(size (registry-size db))
|
||||
(candidates (loop for k being the hash-keys of data
|
||||
using (hash-values v)
|
||||
when (notany precious-p v)
|
||||
collect k))
|
||||
(candidates-count (length candidates))
|
||||
;; are we over max-soft?
|
||||
(prune-needed (> size limit)))
|
||||
(let* ((precious (oref db :precious))
|
||||
(precious-p (lambda (entry-key)
|
||||
(cdr (memq (car entry-key) precious))))
|
||||
(data (oref db :data))
|
||||
(limit (oref db :max-soft))
|
||||
(size (registry-size db))
|
||||
(candidates (loop for k being the hash-keys of data
|
||||
using (hash-values v)
|
||||
when (notany precious-p v)
|
||||
collect k))
|
||||
(candidates-count (length candidates))
|
||||
;; are we over max-soft?
|
||||
(prune-needed (> size limit)))
|
||||
|
||||
;; while we have more candidates than we need to remove...
|
||||
(while (and (> candidates-count (- size limit)) candidates)
|
||||
(decf candidates-count)
|
||||
(setq candidates (cdr candidates)))
|
||||
;; while we have more candidates than we need to remove...
|
||||
(while (and (> candidates-count (- size limit)) candidates)
|
||||
(decf candidates-count)
|
||||
(setq candidates (cdr candidates)))
|
||||
|
||||
(registry-delete db candidates nil)))
|
||||
(registry-delete db candidates nil))))
|
||||
|
||||
(ert-deftest registry-instantiation-test ()
|
||||
(should (registry-db "Testing")))
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ Note: The search is conducted only within 10%, at the beginning of the file."
|
|||
;; Note that the FSF does not use "Patches by"; our convention
|
||||
;; is to put the name of the author of the changes at the top
|
||||
;; of the change log entry.
|
||||
("\\(^\\( +\\|\t\\)\\| \\)\\(Patch\\(es\\)? by\\|Report\\(ed by\\| from\\)\\|Suggest\\(ed by\\|ion from\\)\\)"
|
||||
("\\(^\\( +\\|\t\\)\\| \\)\\(Thanks to\\|Patch\\(es\\)? by\\|Report\\(ed by\\| from\\)\\|Suggest\\(ed by\\|ion from\\)\\)"
|
||||
3 'change-log-acknowledgement))
|
||||
"Additional expressions to highlight in Change Log mode.")
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,16 @@
|
|||
alignof(EMACS_INT) < sizeof (EMACS_INT).
|
||||
(check_sblock, check_string_bytes, check_string_free_list): Protoize.
|
||||
|
||||
2011-04-18 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* xdisp.c (lookup_glyphless_char_display)
|
||||
(produce_glyphless_glyph): Handle cons cell entry in
|
||||
glyphless-char-display.
|
||||
(Vglyphless_char_display): Document it.
|
||||
|
||||
* term.c (produce_glyphless_glyph): Handle cons cell entry in
|
||||
glyphless-char-display.
|
||||
|
||||
2011-04-17 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* xdisp.c (get_next_display_element): Remove unnecessary ifdefs.
|
||||
|
|
|
|||
|
|
@ -1936,6 +1936,8 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
|
|||
{
|
||||
if (! STRINGP (acronym) && CHAR_TABLE_P (Vglyphless_char_display))
|
||||
acronym = CHAR_TABLE_REF (Vglyphless_char_display, it->c);
|
||||
if (CONSP (acronym))
|
||||
acronym = XCDR (acronym);
|
||||
buf[0] = '[';
|
||||
str = STRINGP (acronym) ? SSDATA (acronym) : "";
|
||||
for (len = 0; len < 6 && str[len] && ASCII_BYTE_P (str[len]); len++)
|
||||
|
|
|
|||
42
src/xdisp.c
42
src/xdisp.c
|
|
@ -5540,9 +5540,19 @@ lookup_glyphless_char_display (int c, struct it *it)
|
|||
|
||||
if (CHAR_TABLE_P (Vglyphless_char_display)
|
||||
&& CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display)) >= 1)
|
||||
glyphless_method = (c >= 0
|
||||
? CHAR_TABLE_REF (Vglyphless_char_display, c)
|
||||
: XCHAR_TABLE (Vglyphless_char_display)->extras[0]);
|
||||
{
|
||||
if (c >= 0)
|
||||
{
|
||||
glyphless_method = CHAR_TABLE_REF (Vglyphless_char_display, c);
|
||||
if (CONSP (glyphless_method))
|
||||
glyphless_method = FRAME_WINDOW_P (it->f)
|
||||
? XCAR (glyphless_method)
|
||||
: XCDR (glyphless_method);
|
||||
}
|
||||
else
|
||||
glyphless_method = XCHAR_TABLE (Vglyphless_char_display)->extras[0];
|
||||
}
|
||||
|
||||
retry:
|
||||
if (NILP (glyphless_method))
|
||||
{
|
||||
|
|
@ -22315,6 +22325,8 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
|
|||
{
|
||||
if (! STRINGP (acronym) && CHAR_TABLE_P (Vglyphless_char_display))
|
||||
acronym = CHAR_TABLE_REF (Vglyphless_char_display, it->c);
|
||||
if (CONSP (acronym))
|
||||
acronym = XCAR (acronym);
|
||||
str = STRINGP (acronym) ? SSDATA (acronym) : "";
|
||||
}
|
||||
else
|
||||
|
|
@ -26950,17 +26962,21 @@ cursor shapes. */);
|
|||
Fput (Qglyphless_char_display, Qchar_table_extra_slots, make_number (1));
|
||||
|
||||
DEFVAR_LISP ("glyphless-char-display", Vglyphless_char_display,
|
||||
doc: /* Char-table to control displaying of glyphless characters.
|
||||
Each element, if non-nil, is an ASCII acronym string (displayed in a box)
|
||||
or one of these symbols:
|
||||
hex-code: display the hexadecimal code of a character in a box
|
||||
empty-box: display as an empty box
|
||||
thin-space: display as 1-pixel width space
|
||||
zero-width: don't display
|
||||
doc: /* Char-table defining glyphless characters.
|
||||
Each element, if non-nil, should be one of the following:
|
||||
an ASCII acronym string: display this string in a box
|
||||
`hex-code': display the hexadecimal code of a character in a box
|
||||
`empty-box': display as an empty box
|
||||
`thin-space': display as 1-pixel width space
|
||||
`zero-width': don't display
|
||||
An element may also be a cons cell (GRAPHICAL . TEXT), which specifies the
|
||||
display method for graphical terminals and text terminals respectively.
|
||||
GRAPHICAL and TEXT should each have one of the values listed above.
|
||||
|
||||
It has one extra slot to control the display of a character for which
|
||||
no font is found. The value of the slot is `hex-code' or `empty-box'.
|
||||
The default is `empty-box'. */);
|
||||
The char-table has one extra slot to control the display of a character for
|
||||
which no font is found. This slot only takes effect on graphical terminals.
|
||||
Its value should be an ASCII acronym string, `hex-code', `empty-box', or
|
||||
`thin-space'. The default is `empty-box'. */);
|
||||
Vglyphless_char_display = Fmake_char_table (Qglyphless_char_display, Qnil);
|
||||
Fset_char_table_extra_slot (Vglyphless_char_display, make_number (0),
|
||||
Qempty_box);
|
||||
|
|
|
|||
Loading…
Reference in a new issue