This commit is contained in:
Joakim Verona 2012-08-15 21:49:40 +02:00
commit b648c26ec6
349 changed files with 11970 additions and 7598 deletions

View file

@ -1,3 +1,102 @@
2012-08-14 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:
2012-08-05 extern-inline: also ignore -Wmissing-declarations
2012-08-10 Juanma Barranquero <lekktu@gmail.com>
* lib/makefile.w32-in (STAT_TIME_H): New macro.
(FTOASTR_C, $(BLD)/stat-time.$(O), $(BLD)/timespec.$(O))
($(BLD)/u64.$(O)): Update dependencies.
2012-08-10 Glenn Morris <rgm@gnu.org>
* configure.ac (DIRECTORY_SEP): Move here from src/lisp.h.
2012-08-08 Dmitry Antipov <dmantipov@yandex.ru>
* configure.ac (--disable-features): Rename to --without-all.
(OPTION_DEFAULT_ON): Change to use with_features.
* INSTALL: Fix description.
2012-08-07 Dmitry Antipov <dmantipov@yandex.ru>
* configure.ac: New option --disable-features.
(OPTION_DEFAULT_ON): Change to use enable_features.
* INSTALL: Explain --disable-features.
2012-08-07 Glenn Morris <rgm@gnu.org>
* configure.ac: Require automake 1.11 (fairly arbitrarily).
* autogen.sh (automake_min): Get it from configure.ac.
2012-08-06 Glenn Morris <rgm@gnu.org>
* configure.ac (BROKEN_GETWD) [unixware]: New define.
* configure.ac (GNU_LIBRARY_PENDING_OUTPUT_COUNT): Remove.
(PENDING_OUTPUT_COUNT): Absorb GNU_LIBRARY_PENDING_OUTPUT_COUNT.
(DISPNEW_NEEDS_STDIO_EXT): New define.
2012-08-05 Michael Albinus <michael.albinus@gmx.de>
* INSTALL: Explain how to completely disable D-Bus. (Bug#12112)
2012-08-05 Ulrich Müller <ulm@gentoo.org>
* configure.ac: Disable paxctl if binaries don't have a
PT_PAX_FLAGS program header. (Bug#11979)
2012-08-03 Eli Zaretskii <eliz@gnu.org>
* lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/stat-time.$(O),
$(BLD)/timespec.$(O), and $(BLD)/u64.$(O).
(SHA512_H): Don't mention u64.h twice.
($(BLD)/stat-time.$(O), ($(BLD)/timespec.$(O), ($(BLD)/u64.$(O)):
New targets.
2012-08-03 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:
2012-08-02 stat-time, timespec, u64: support naive out-of-dir builds
2012-08-02 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* lib/Makefile.am (DEFAULT_INCLUDES): Add -I$(top_srcdir)/lib for
out-of-tree build.
2012-08-02 Glenn Morris <rgm@gnu.org>
* make-dist: Remove src/s.
* lib/makefile.w32-in (MS_W32_H): Update for new ms-w32.h location.
2012-08-02 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib (Bug#12116), incorporating:
2012-08-01 extern-inline: new module
2012-08-01 stat-time, timespec, u64, utimens: use extern-inline
* lib/stat-time.c, lib/timespec.c, lib/u64.c, m4/extern-inline.m4:
New files. The new .c files are for instantiating extern inline
functions.
Port to Solaris 8.
Without this change, 'configure' fails because the recently-added
wait3 prototype in config.h messes up later 'configure' tests.
Fix this problem by droping wait3 and WRETCODE, as they're
no longer needed on hosts that are current porting targets.
* configure.ac (wait3, WRETCODE): Remove, fixing a FIXME.
All uses changed to waitpid and WEXITSTATUS.
Avoid needless autoheader after autogen.sh.
* src/stamp-h.in: Remove from bzr repository; no longer needed there.
* .bzrignore: Add it.
* autogen.sh: Create it.
2012-08-01 Glenn Morris <rgm@gnu.org>
* configure.ac (DOS_NT, MSDOS): New system type templates.
2012-08-01 Ulrich Müller <ulm@gentoo.org>
* configure.ac (LIB_STANDARD, START_FILES) [FreeBSD]:

22
INSTALL
View file

@ -280,6 +280,12 @@ You can tell configure where to search for GTK by specifying
`--with-pkg-config-prog=PATH' where PATH is the pathname to
pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
inconvenient for Emacs when running as daemon or running via a remote
ssh connection. In order to completely prevent the use of D-Bus, configure
Emacs with the options `--without-dbus --without-gconf --without-gsettings'.
The Emacs mail reader RMAIL is configured to be able to read mail from
a POP3 server by default. Versions of the POP protocol older than
POP3 are not supported. For Kerberos-authenticated POP add
@ -313,6 +319,22 @@ systems which support that.
Use --without-sound to disable sound support.
Use --without-all if you want to build a small executable with the minimal
dependencies on external libraries, at the cost of disabling most of the
features that are normally enabled by default. Using --without-all is
equivalent to --without-sound --without-dbus --without-libotf
--without-selinux --without-xft --without-gsettings --without-gnutls
--without-rsvg --without-xml2 --without-gconf --without-imagemagick
--without-m17n-flt --without-jpeg --without-tiff --without-gif
--without-png --without-gpm. Note that --without-all leaves X support
enabled, and using the GTK2 or GTK3 toolkit creates a lot of library
dependencies. So if you want to build a small executable with very basic
X support, use --without-all --with-x-toolkit=no. For the smallest possible
executable without X, use --without-all --without-x. If you want to build
with just a few features enabled, you can combine --without-all with
--with-FEATURE. For example, you can use --without-all --with-dbus
to build with DBus support and nothing more.
Use --with-wide-int to implement Emacs values with the type 'long long',
even on hosts where a narrower type would do. With this option, on a
typical 32-bit host, Emacs integers have 62 bits instead of 30.

View file

@ -9,7 +9,8 @@ when building from a release. You will need:
autoconf - at least the version specified near the start of
configure.ac (in the AC_PREREQ command).
automake - we recommend at least version 1.11.
automake - at least the version specified near the start of
configure.ac (in the AM_INIT_AUTOMAKE command).
makeinfo - not strictly necessary, but highly recommended, so that
you can build the manuals.

2
README
View file

@ -2,7 +2,7 @@ Copyright (C) 2001-2012 Free Software Foundation, Inc.
See the end of the file for license conditions.
This directory tree holds version 24.1.50 of GNU Emacs, the extensible,
This directory tree holds version 24.2.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU

View file

@ -1,10 +1,21 @@
Here are some of the cpp macros used, together with some short explanation
of their use. Feel free to add more macros and more categories.
Most of these are from config.in, so it's probably better to put the
explanations in that file. Ideally, everything would be defined and
documented in config.in, and this file would not be necessary.
** Distinguishing OSes **
AIX
_AIX
BSD4_2
BSD_SYSTEM
CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
GNU_LINUX
HPUX
IRIX6_5
MSDOS Compiling the MS-DOS port.
__MSDOS__ Ditto.
__DJGPP_MINOR__ Minor version number of the DJGPP library; used only in msdos.c and dosfns.c.
@ -13,6 +24,10 @@ WINDOWSNT Compiling the native MS-Windows (W32) port.
__MINGW32__ Compiling the W32 port with the MinGW port of GCC.
_MSC_VER Compiling the W32 port with the Microsoft C compiler.
DARWIN_OS Compiling on Mac OS X or pure Darwin (and using s/darwin.h).
SOLARIS2
USG
USG5
USG5_4
** Distinguishing GUIs **
@ -25,6 +40,9 @@ HAVE_X_WINDOWS Compile support for X Window system
(It looks like, nowadays, if HAVE_X11 is set, HAVE_X_WINDOWS must
be, and vice versa. At least, this is true for configure, and
msdos; not sure about nt.)
HAVE_X11R6
HAVE_X11R6_XIM
HAVE_X11XTR6
USE_LUCID Use the Lucid toolkit for menus&scrollbars. Requires HAVE_X11.
USE_MOTIF Use the Motif toolkit for menus&scrollbars. Requires HAVE_X11.
USE_GTK Use the Gtk toolkit for menus&scrollbars. Requires HAVE_X11.
@ -45,12 +63,12 @@ HAVE_PROCFS The /proc filesystem is supported.
REL_ALLOC Compile in the relocatable memory allocator ralloc.c.
SYSTEM_MALLOC Use the system library's malloc.
subprocesses System can use subprocesses (for M-x shell for example). Defined by default, only MSDOS undefines it.
DEBUG_LISP_OBJECT_TYPE Define it in lisp.h enable compile time checks on Lisp_Object use.
subprocesses System can use subprocesses (for M-x shell for example).
Defined by default, only MSDOS undefines it.
DEBUG_LISP_OBJECT_TYPE Define it in lisp.h enable compile time checks
on Lisp_Object use.
** System specific macros, described in detail in src/s/template.h
CLASH_DETECTION
COFF
** System specific macros
FIRST_PTY_LETTER
HAVE_PTYS
INTERRUPT_INPUT
@ -59,15 +77,16 @@ SEPCHAR
SYSTEM_TYPE
** Misc macros
USER_FULL_NAME If defined, overrides the default pw->pw_gecos for getting at the full user name. Only MSDOS overrides the default.
USER_FULL_NAME If defined, overrides the default pw->pw_gecos for
getting at the full user name. Only MSDOS overrides the default.
** Defines from src/s/*.h. Some of these might not be used in the code anymore, so they can be removed. The HAVE_* definitions are probably handled by autoconf, so it might be possible to just remove them from src/s/*.h.
** Miscellaneous defines. Some of these might not be used in the code
anymore, so they can be removed.
AIX
AMPERSAND_FULL_NAME
BROKEN_DATAGRAM_SOCKETS
BROKEN_FIONREAD
BROKEN_GETWD
BROKEN_GET_CURRENT_DIR_NAME
BROKEN_NON_BLOCKING_CONNECT
BROKEN_PTY_READ_AFTER_EAGAIN
@ -76,105 +95,338 @@ BROKEN_SIGAIO
BROKEN_SIGIO
BROKEN_SIGPOLL
BROKEN_SIGPTY
BSD4_2
BSD_SYSTEM
CLASH_DETECTION
DATA_SEG_BITS
DATA_START
DBL_MIN_REPLACEMENT
DEFAULT_SOUND_DEVICE
DEVICE_SEP
DIRECTORY_SEP
DONT_REOPEN_PTY
DOUG_LEA_MALLOC
DebPrint
EMACSDEBUG
EMACS_CONFIGURATION
EMACS_CONFIG_OPTIONS
EMACS_INT
EMACS_UINT
FLOAT_CHECK_DOMAIN
GC_LISP_OBJECT_ALIGNMENT
GC_MARK_SECONDARY_STACK
GC_MARK_STACK
GC_SETJMP_WORKS
GMALLOC_INHIBIT_VALLOC
GNU_LIBRARY_PENDING_OUTPUT_COUNT
GNU_LINUX
GNU_MALLOC
HAVE_AIX_SMT_EXP
HAVE_ALARM
HAVE_ALLOCA
HAVE_ALLOCA_H
HAVE_ALSA
HAVE_ATTRIBUTE_ALIGNED
HAVE_BDFFONT
HAVE_BOXES
HAVE_C99_STRTOLD
HAVE_CBRT
HAVE_CFMAKERAW
HAVE_CFSETSPEED
HAVE_CLOCK_GETTIME
HAVE_CLOCK_SETTIME
HAVE_CLOSEDIR
HAVE_COFF_H
HAVE_COM_ERR_H
HAVE_COPYSIGN
HAVE_DBUS
HAVE_DBUS_TYPE_IS_VALID
HAVE_DBUS_VALIDATE_BUS_NAME
HAVE_DBUS_VALIDATE_INTERFACE
HAVE_DBUS_VALIDATE_MEMBER
HAVE_DBUS_VALIDATE_PATH
HAVE_DBUS_WATCH_GET_UNIX_FD
HAVE_DECL_GETENV
HAVE_DECL_LOCALTIME_R
HAVE_DECL_STRMODE
HAVE_DECL_STRTOIMAX
HAVE_DECL_STRTOLL
HAVE_DECL_STRTOULL
HAVE_DECL_STRTOUMAX
HAVE_DECL_SYS_SIGLIST
HAVE_DECL_TZNAME
HAVE_DECL___SYS_SIGLIST
HAVE_DES_H
HAVE_DEV_PTMX
HAVE_DIALOGS
HAVE_DIFFTIME
HAVE_DIRENT_H
HAVE_DUP2
HAVE_ENDGRENT
HAVE_ENDPWENT
HAVE_ENVIRON_DECL
HAVE_EUIDACCESS
HAVE_FCNTL_H
HAVE_FMOD
HAVE_FORK
HAVE_FPATHCONF
HAVE_FREEIFADDRS
HAVE_FREETYPE
HAVE_FREXP
HAVE_FSEEKO
HAVE_FSYNC
HAVE_FUTIMENS
HAVE_FUTIMES
HAVE_FUTIMESAT
HAVE_GAI_STRERROR
HAVE_GCONF
HAVE_GETADDRINFO
HAVE_GETCWD
HAVE_GETDELIM
HAVE_GETGRENT
HAVE_GETHOSTNAME
HAVE_GETIFADDRS
HAVE_GETLINE
HAVE_GETLOADAVG
HAVE_GETOPT_H
HAVE_GETOPT_LONG_ONLY
HAVE_GETPAGESIZE
HAVE_GETPEERNAME
HAVE_GETPT
HAVE_GETPWENT
HAVE_GETRLIMIT
HAVE_GETRUSAGE
HAVE_GETSOCKNAME
HAVE_GETTIMEOFDAY
HAVE_GETWD
HAVE_GET_CURRENT_DIR_NAME
HAVE_GHOSTSCRIPT
HAVE_GIF
HAVE_GNUTLS
HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY
HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION
HAVE_GPM
HAVE_GRANTPT
HAVE_GSETTINGS
HAVE_GTK3
HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE
HAVE_GTK_DIALOG_GET_ACTION_AREA
HAVE_GTK_FILE_SELECTION_NEW
HAVE_GTK_MAIN
HAVE_GTK_MULTIDISPLAY
HAVE_GTK_ORIENTABLE_SET_ORIENTATION
HAVE_GTK_WIDGET_GET_MAPPED
HAVE_GTK_WIDGET_GET_SENSITIVE
HAVE_GTK_WIDGET_GET_WINDOW
HAVE_GTK_WIDGET_SET_HAS_WINDOW
HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
HAVE_G_TYPE_INIT
HAVE_H_ERRNO
HAVE_IFADDRS_H
HAVE_IMAGEMAGICK
HAVE_INET_SOCKETS
HAVE_INTTYPES_H
HAVE_INVERSE_HYPERBOLIC
HAVE_JPEG
HAVE_KERBEROSIV_DES_H
HAVE_KERBEROSIV_KRB_H
HAVE_KERBEROS_DES_H
HAVE_KERBEROS_KRB_H
HAVE_KRB5_ERROR_E_TEXT
HAVE_KRB5_ERROR_TEXT
HAVE_KRB5_H
HAVE_KRB_H
HAVE_LANGINFO_CODESET
HAVE_LIBCOM_ERR
HAVE_LIBCRYPTO
HAVE_LIBDES
HAVE_LIBDES425
HAVE_LIBDGC
HAVE_LIBDNET
HAVE_LIBHESIOD
HAVE_LIBK5CRYPTO
HAVE_LIBKRB
HAVE_LIBKRB4
HAVE_LIBKRB5
HAVE_LIBKSTAT
HAVE_LIMITS_H
HAVE_LIBLOCKFILE
HAVE_LIBM
HAVE_LIBMAIL
HAVE_LIBOTF
HAVE_LIBPERFSTAT
HAVE_LIBPNG_PNG_H
HAVE_LIBPTHREADS
HAVE_LIBRESOLV
HAVE_LIBSELINUX
HAVE_LIBXEXT
HAVE_LIBXML2
HAVE_LIBXMU
HAVE_LINUX_VERSION_H
HAVE_LOCALTIME_R
HAVE_LOCAL_SOCKETS
HAVE_LOGB
HAVE_LONG_FILE_NAMES
HAVE_LONG_LONG_INT
HAVE_LRAND48
HAVE_LSTAT
HAVE_LUTIMES
HAVE_M17N_FLT
HAVE_MACHINE_SOUNDCARD_H
HAVE_MACH_MACH_H
HAVE_MAGICKEXPORTIMAGEPIXELS
HAVE_MAGICKMERGEIMAGELAYERS
HAVE_MAILLOCK_H
HAVE_MALLOC_MALLOC_H
HAVE_MATHERR
HAVE_MBSTATE_T
HAVE_MEMCMP
HAVE_MEMMOVE
HAVE_MEMORY_H
HAVE_MEMSET
HAVE_MENUS
HAVE_MKTIME
HAVE_MKSTEMP
HAVE_MMAP
HAVE_MOUSE
HAVE_MULTILINGUAL_MENU
HAVE_NANOTIME
HAVE_NET_IF_DL_H
HAVE_NET_IF_H
HAVE_NLIST_H
HAVE_OTF_GET_VARIATION_GLYPHS
HAVE_PERSONALITY_LINUX32
HAVE_PNG
HAVE_PNG_H
HAVE_POSIX_MEMALIGN
HAVE_PROCFS
HAVE_PSELECT
HAVE_PSTAT_GETDYNAMIC
HAVE_PTHREAD
HAVE_PTHREAD_H
HAVE_PTHREAD_SIGMASK
HAVE_PTYS
HAVE_PTY_H
HAVE_PWD_H
HAVE_RANDOM
HAVE_READLINK
HAVE_READLINKAT
HAVE_RECVFROM
HAVE_RES_INIT
HAVE_RINT
HAVE_RSVG
HAVE_SELECT
HAVE_SENDTO
HAVE_SEQPACKET
HAVE_SETITIMER
HAVE_SETLOCALE
HAVE_SETPGID
HAVE_SETRLIMIT
HAVE_SETSID
HAVE_SHARED_GAME_DIR
HAVE_SHUTDOWN
HAVE_SIGNED_${GLTYPE}
HAVE_SIGNED_SIG_ATOMIC_T
HAVE_SIGNED_WCHAR_T
HAVE_SIGNED_WINT_T
HAVE_SIGSET_T
HAVE_SIZE_T
HAVE_SNPRINTF
HAVE_SOCKETS
HAVE_SOUND
HAVE_SOUNDCARD_H
HAVE_SPEED_T
HAVE_STDINT_H
HAVE_STDIO_EXT_H
HAVE_STDLIB_H
HAVE_STRFTIME
HAVE_STLIB_H_1
HAVE_STRINGS_H
HAVE_STRING_H
HAVE_STRNCASECMP
HAVE_STRSIGNAL
HAVE_STRTOIMAX
HAVE_STRTOLL
HAVE_STRTOULL
HAVE_STRTOUMAX
HAVE_STRUCT_ERA_ENTRY
HAVE_STRUCT_IFREQ_IFR_ADDR
HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN
HAVE_STRUCT_IFREQ_IFR_BROADADDR
HAVE_STRUCT_IFREQ_IFR_FLAGS
HAVE_STRUCT_IFREQ_IFR_HWADDR
HAVE_STRUCT_IFREQ_IFR_NETMASK
HAVE_STRUCT_NLIST_N_UN_N_NAME
HAVE_STRUCT_STAT_ST_ATIMENSEC
HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
HAVE_STRUCT_TIMEZONE
HAVE_STRUCT_TM_TM_ZONE
HAVE_STRUCT_UTIMBUF
HAVE_ST_DM_MODE
HAVE_SYMLINK
HAVE_SYNC
HAVE_SYS_BITYPES_H
HAVE_SYS_INTTYPES_H
HAVE_SYS_LOADAVG_H
HAVE_SYS_PARAM_H
HAVE_SYS_RESOURCE_H
HAVE_SYS_SELECT_H
HAVE_SYS_SOCKET_H
HAVE_SYS_SOUNDCARD_H
HAVE_SYS_STAT_H
HAVE_SYS_SYSTEMINFO_H
HAVE_SYS_TIMEB_H
HAVE_SYS_TIME_H
HAVE_SYS_TYPES_H
HAVE_SYS_UN_H
HAVE_SYS_UTSNAME_H
HAVE_SYS_VLIMIT_H
HAVE_SYS_WAIT_H
HAVE_TCATTR
HAVE_TERM_H
HAVE_TIFF
HAVE_TIMEVAL
HAVE_TM_GMTOFF
HAVE_TM_ZONE
HAVE_TOUCHLOCK
HAVE_TZNAME
HAVE_TZSET
HAVE_UNISTD_H
HAVE_UNSIGNED_LONG_LONG_INT
HAVE_UTIL_H
HAVE_UTIMENSAT
HAVE_UTIMES
HAVE_UTIME_H
HAVE_UTMP_H
HAVE_VFORK
HAVE_VFORK_H
HAVE_WCHAR_H
HAVE_WCHAR_T
HAVE_WINDOW_SYSTEM
HAVE_WINSOCK2_H
HAVE_WORKING_FORK
HAVE_WORKING_UTIMES
HAVE_WORKING_VFORK
HAVE_WS2TCPIP_H
HAVE_XAW3D
HAVE_XFT
HAVE_XIM
HAVE_XKBGETKEYBOARD
HAVE_XPM
HAVE_XRMSETDATABASE
HPUX
HAVE_XSCREENNUMBEROFSCREEN
HAVE_XSCREENRESOURCESTRING
HAVE_X_I18N
HAVE_X_MENU
HAVE_X_SM
HAVE_X_WINDOWS
HAVE__BOOL
HAVE__FTIME
HAVE___BUILTIN_UNWIND_INIT
HAVE___EXECUTABLE_START
HAVE___FPENDING
INTERNAL_TERMINAL
IS_ANY_SEP
IS_DIRECTORY_SEP
LINKER
LINUX_VERSION_CODE
LNOFLSH
LOCALTIME_CACHE
MAIL_USE_FLOCK
MAIL_USE_LOCKF
MAIL_USE_POP
MAIL_USE_SYSTEM_LOCK
MAXPATHLEN
MIN_PTY_KERNEL_VERSION -- only used on Mac
MODE_LINE_BINARY_TEXT
MUST_UNDEF__STDC__
NLIST_STRUCT
NO_ABORT
NO_EDITRES
@ -184,7 +436,6 @@ NSIG
NSIG_MINIMUM
NULL_DEVICE
ORDINARY_LINK
O_APPEND
O_RDONLY
O_RDWR
PAGESIZE
@ -197,7 +448,6 @@ PTY_TTY_NAME_SPRINTF
PURESIZE
RUN_TIME_REMAP
SA_RESTART
SEGMENT_MASK
SETPGRP_RELEASES_CTTY
SETUP_SLAVE_PTY
SIGALRM
@ -208,11 +458,9 @@ SIGNALS_VIA_CHARACTERS
SIGPIPE
SIGQUIT
SIGTRAP
SOLARIS2
STDC_HEADERS
SYSTEM_PURESIZE_EXTRA
SYSTEM_MALLOC
SYSV_SYSTEM_DIR
TAB3
TABDLY
TERM
@ -221,101 +469,173 @@ TIOCSIGSEND
TM_IN_SYS_TIME
ULIMIT_BREAK_VALUE
UNIX98_PTYS
USE_CRT_DLL
USE_TOOLKIT_SCROLL_BARS
USG
USG5
USG_SUBTTY_WORKS
VALBITS
WRETCODE
XOS_NEEDS_TIME_H
_AIX
_ARCH_PPC64
_FILE_OFFSET_BITS
_LP64
_MALLOC_INTERNAL
_longjmp
_setjmp
abort
alloca
close
emacs
free
gmtime
localtime
malloc
random
read
realloc
select
umask
vfork
src/sysdep.c:
write
src/syssignal.h:
signal
sigmask
sigsetmask
lib/dup2.c:
dup2
lib/signal.h:
signal
lib/sigprocmask.c:
signal
lib/stdio.h:
fdopen
fopen
fwrite
popen
rename
lib/stdlib.h:
calloc
srandom (conf_post.h may undo)
lib/strftime.c:
tzname
tzset
lib/sys/stat.h:
mkdir
lib/unistd.h:
chown
dup
dup2
ftruncate
isatty
link
lseek
pipe
rmdir
sleep
unlink
MS DOS stuff:
_NAIVE_DOS_REGS
MS stuff:
USE_CRT_DLL
ms-w32.h:
DebPrint
EMACSDEBUG
MUST_UNDEF__STDC__
_VARARGS_
_WINSOCKAPI_
_WINSOCK_H
_longjmp
_setjmp
_start
abort
access
alloca
brk
calloc
chdir
chmod
chown
close
creat
ctime
dup
dup2
edata
emacs
etext
execlp
execvp
execvp (also emacsclient.c [WINDOWSNT])
fdopen
fileno
fopen
free
fsync
ftruncate
fwrite
getdefdir
getdisk
getenv
getpid
getuid
gmtime
index
isatty
kill
link
linux
localtime
logb
lseek
malloc
mkdir
mktemp
open
pclose
pipe
popen
random
read
realloc
rename
rindex
rmdir
sbrk
select
sigmask
signal
sigsetmask
sleep
spawnve
srandom
strdup
stricmp
strnicmp
strupr
sys_nerr
system
temacs
tzname
tzset
umask
unix
unlink
utimbuf
utime
vfork
wait
wait (also movemail.c [WINDOWSNT])
write
xfree
lib-src/ntlib:
access
chdir
chmod
creat
dup
dup2
execlp
execvp
fdopen
fileno
fopen
getpid
index
isatty
logb
lseek
mkdir
mktemp
open
pclose
pipe
popen
rmdir
rindex
sleep
umask
unlink
utime

View file

@ -1,3 +1,23 @@
2012-08-14 Paul Eggert <eggert@cs.ucla.edu>
Use bool for Emacs Lisp booleans.
* merge-gnulib (GNULIB_MODULES): Add stdbool. This documents a
new direct dependency; stdbool was already being used indirectly
via other gnulib modules.
2012-08-11 Glenn Morris <rgm@gnu.org>
* bzrmerge.el (bzrmerge-resolve): Disable local eval:.
2012-08-07 Dmitry Antipov <dmantipov@yandex.ru>
* coccinelle/overlay.cocci, coccinelle/symbol.cocci: Remove.
2012-08-02 Paul Eggert <eggert@cs.ucla.edu>
Port to Solaris 8.
* CPP-DEFINES (WRETCODE): Remove.
2012-08-01 Dmitry Antipov <dmantipov@yandex.ru>
* coccinelle/overlay.cocci: Semantic patch to replace direct

View file

@ -34,7 +34,6 @@ Eli Zaretskii
src/msdos.[ch]
src/dosfns.[ch]
src/w16select.c
src/s/msdos.h
lisp/term/internal.el
lisp/term/pc-win.el
lisp/dos-fns.el
@ -183,7 +182,6 @@ src/print.c
src/process.c
src/ralloc.c
src/region-cache.c
src/s/
src/scroll.c
src/search.c
src/sound.c

View file

@ -160,7 +160,8 @@ Type `y' to skip this revision,
(unless (file-exists-p file) (error "Bzrmerge-resolve: Can't find %s" file))
(with-demoted-errors
(let ((exists (find-buffer-visiting file)))
(with-current-buffer (let ((enable-local-variables :safe))
(with-current-buffer (let ((enable-local-variables :safe)
(enable-local-eval nil))
(find-file-noselect file))
(if (buffer-modified-p)
(error "Unsaved changes in %s" (current-buffer)))

View file

@ -1,28 +0,0 @@
// Change direct access to Lisp_Object fields of struct
// Lisp_Overlay to MVAR. Beginning M denotes "misc", and
// MVAR is likely to be used for other second-class objects.
@@
struct Lisp_Overlay *V;
Lisp_Object O;
@@
(
- V->start
+ MVAR (V, start)
|
- V->end
+ MVAR (V, end)
|
- V->plist
+ MVAR (V, plist)
|
- XOVERLAY (O)->start
+ MVAR (XOVERLAY (O), start)
|
- XOVERLAY (O)->end
+ MVAR (XOVERLAY (O), end)
|
- XOVERLAY (O)->plist
+ MVAR (XOVERLAY (O), plist)
)

View file

@ -1,32 +0,0 @@
// Change direct access to Lisp_Object fields of struct Lisp_Symbol to SVAR.
@@
struct Lisp_Symbol *S;
Lisp_Object O;
@@
(
- S->xname
+ SVAR (S, xname)
|
- S->val.value
+ SVAR (S, val.value)
|
- S->function
+ SVAR (S, function)
|
- S->plist
+ SVAR (S, plist)
|
- XSYMBOL (O)->xname
+ SVAR (XSYMBOL (O), xname)
|
- XSYMBOL (O)->val.value
+ SVAR (XSYMBOL (O), val.value)
|
- XSYMBOL (O)->function
+ SVAR (XSYMBOL (O), function)
|
- XSYMBOL (O)->plist
+ SVAR (XSYMBOL (O), plist)
)

View file

@ -32,7 +32,7 @@ GNULIB_MODULES='
filemode getloadavg getopt-gnu gettime gettimeofday
ignore-value intprops largefile lstat
manywarnings mktime pselect pthread_sigmask readlink
socklen stat-time stdalign stdarg stdio
socklen stat-time stdalign stdarg stdbool stdio
strftime strtoimax strtoumax symlink sys_stat
sys_time time timespec-add timespec-sub utimens
warnings

View file

@ -36,8 +36,9 @@ progs="autoconf automake"
## Minimum versions we need:
autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
## FIXME how to determine this from the sources?
automake_min=1.11
## This will need improving if more options are ever added to the
## AM_INIT_AUTOMAKE call.
automake_min=`sed -n 's/^ *AM_INIT_AUTOMAKE(\([0-9\.]*\)).*/\1/p' configure.ac`
## $1 = program, eg "autoconf".
@ -209,6 +210,10 @@ echo "Your system has the required tools, running autoreconf..."
## Let autoreconf figure out what, if anything, needs doing.
autoreconf -i -I m4 || exit $?
## Create a timestamp, so that './autogen.sh; make' doesn't
## cause 'make' to needlessly run 'autoheader'.
echo timestamp > src/stamp-h.in || exit
echo "You can now run \`./configure'."
exit 0

View file

@ -66,9 +66,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/c-strtod.m4 \
$(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/dup2.m4 \
$(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/extensions.m4 \
$(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/getloadavg.m4 \
$(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettime.m4 \
$(top_srcdir)/m4/gettimeofday.m4 \
$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/filemode.m4 \
$(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
$(top_srcdir)/m4/gnulib-common.m4 \
$(top_srcdir)/m4/gnulib-comp.m4 \
$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inttypes.m4 \
@ -111,16 +111,17 @@ am__DEPENDENCIES_1 =
am__libgnu_a_SOURCES_DIST = allocator.c c-ctype.h c-ctype.c \
c-strcase.h c-strcasecmp.c c-strncasecmp.c careadlinkat.c \
md5.c sha1.c sha256.c sha512.c dtoastr.c dtotimespec.c \
filemode.c gettext.h gettime.c strftime.c timespec-add.c \
timespec-sub.c utimens.c
filemode.c gettext.h gettime.c stat-time.c strftime.c \
timespec.c timespec-add.c timespec-sub.c u64.c utimens.c
am__objects_1 =
am_libgnu_a_OBJECTS = allocator.$(OBJEXT) c-ctype.$(OBJEXT) \
c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \
careadlinkat.$(OBJEXT) md5.$(OBJEXT) sha1.$(OBJEXT) \
sha256.$(OBJEXT) sha512.$(OBJEXT) dtoastr.$(OBJEXT) \
dtotimespec.$(OBJEXT) filemode.$(OBJEXT) $(am__objects_1) \
gettime.$(OBJEXT) strftime.$(OBJEXT) timespec-add.$(OBJEXT) \
timespec-sub.$(OBJEXT) utimens.$(OBJEXT)
gettime.$(OBJEXT) stat-time.$(OBJEXT) strftime.$(OBJEXT) \
timespec.$(OBJEXT) timespec-add.$(OBJEXT) \
timespec-sub.$(OBJEXT) u64.$(OBJEXT) utimens.$(OBJEXT)
libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__depfiles_maybe = depfiles
@ -874,12 +875,12 @@ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t getopt.h \
time.h time.h-t unistd.h unistd.h-t
noinst_LIBRARIES = libgnu.a
AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
libgnu_a_SOURCES = allocator.c c-ctype.h c-ctype.c c-strcase.h \
c-strcasecmp.c c-strncasecmp.c careadlinkat.c md5.c sha1.c \
sha256.c sha512.c dtoastr.c dtotimespec.c filemode.c \
$(am__append_1) gettime.c strftime.c timespec-add.c \
timespec-sub.c utimens.c
$(am__append_1) gettime.c stat-time.c strftime.c timespec.c \
timespec-add.c timespec-sub.c u64.c utimens.c
libgnu_a_LIBADD = $(gl_LIBOBJS)
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libgnu_a_SOURCES = ftoastr.c dup2.c getloadavg.c getopt.c \
@ -968,6 +969,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat-time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@
@ -980,6 +982,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-add.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-sub.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/u64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimens.Po@am__quote@
.c.o:

1
autogen/aclocal.m4 vendored
View file

@ -991,6 +991,7 @@ m4_include([m4/clock_time.m4])
m4_include([m4/dup2.m4])
m4_include([m4/environ.m4])
m4_include([m4/extensions.m4])
m4_include([m4/extern-inline.m4])
m4_include([m4/filemode.m4])
m4_include([m4/getloadavg.m4])
m4_include([m4/getopt.m4])

View file

@ -53,6 +53,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define if FIONREAD should not be used. */
#undef BROKEN_FIONREAD
/* Define if getwd should not be used. */
#undef BROKEN_GETWD
/* Define if get_current_dir_name should not be used. */
#undef BROKEN_GET_CURRENT_DIR_NAME
@ -123,11 +126,20 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
#undef DGUX
/* Character that separates directories in a file name. */
#undef DIRECTORY_SEP
/* Define if dispnew.c should include stdio_ext.h. */
#undef DISPNEW_NEEDS_STDIO_EXT
/* Define if process.c does not need to close a pty to make it a controlling
terminal (it is already a controlling terminal of the subprocess, because
we did ioctl TIOCSCTTY). */
#undef DONT_REOPEN_PTY
/* Define if the system is MS DOS or MS Windows. */
#undef DOS_NT
/* Define to 1 if you are using the GNU C Library. */
#undef DOUG_LEA_MALLOC
@ -201,9 +213,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
whether the gnulib module scanf shall be considered present. */
#undef GNULIB_SCANF
/* Value of PENDING_OUTPUT_COUNT if using the GNU C library. */
#undef GNU_LIBRARY_PENDING_OUTPUT_COUNT
/* Define if ths system is compatible with GNU/Linux. */
#undef GNU_LINUX
@ -1150,6 +1159,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to support POP mail retrieval. */
#undef MAIL_USE_POP
/* Define if the system is MS DOS. */
#undef MSDOS
/* Define if system's imake configuration file defines `NeedWidePrototypes' as
`NO'. */
#undef NARROWPROTO
@ -1416,9 +1428,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# endif
#endif
/* Some platforms redefine this. */
#undef WRETCODE
/* Define this to check for malloc buffer overrun. */
#undef XMALLOC_OVERRUN_CHECK
@ -1530,6 +1539,36 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
configuration information. */
#undef config_opsysfile
/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
_GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
_GL_INLINE_HEADER_BEGIN contains useful stuff to put
in an include file, before uses of _GL_INLINE.
It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
when FOO is an inline function in the header; see
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
_GL_INLINE_HEADER_END contains useful stuff to put
in the same include file, after uses of _GL_INLINE. */
#if __GNUC__ ? __GNUC_STDC_INLINE__ : 199901L <= __STDC_VERSION__
# define _GL_INLINE inline
# define _GL_EXTERN_INLINE extern inline
# if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
# define _GL_INLINE_HEADER_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
_Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"")
# define _GL_INLINE_HEADER_END \
_Pragma ("GCC diagnostic pop")
# endif
#else
# define _GL_INLINE static inline
# define _GL_EXTERN_INLINE static inline
#endif
#ifndef _GL_INLINE_HEADER_BEGIN
# define _GL_INLINE_HEADER_BEGIN
# define _GL_INLINE_HEADER_END
#endif
/* A replacement for va_copy, if needed. */
#define gl_va_copy(a,b) ((a) = (b))
@ -1632,9 +1671,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define as `fork' if `vfork' does not work. */
#undef vfork
/* Some platforms redefine this. */
#undef wait3
#include <conf_post.h>
#endif /* EMACS_CONFIG_H */

258
autogen/configure vendored
View file

@ -1356,6 +1356,7 @@ lisp_frag
ns_frag'
ac_user_opts='
enable_option_checking
with_all
with_pop
with_kerberos
with_kerberos5
@ -2072,6 +2073,8 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--without-all omit almost all features and build small executable
with minimal dependencies
--without-pop don't support POP mail retrieval with movemail
--with-kerberos support Kerberos-authenticated POP
--with-kerberos5 support Kerberos version 5 authenticated POP
@ -3998,13 +4001,22 @@ docdir='${datadir}/emacs/${version}/etc'
gamedir='${localstatedir}/games/emacs'
# Check whether --with-all was given.
if test "${with_all+set}" = set; then :
withval=$with_all; with_features=$withval
else
with_features=yes
fi
# Check whether --with-pop was given.
if test "${with_pop+set}" = set; then :
withval=$with_pop;
else
with_pop=yes
with_pop=$with_features
fi
if test "$with_pop" = yes; then
@ -4102,7 +4114,7 @@ fi
if test "${with_sound+set}" = set; then :
withval=$with_sound;
else
with_sound=yes
with_sound=$with_features
fi
@ -4111,7 +4123,7 @@ fi
if test "${with_sync_input+set}" = set; then :
withval=$with_sync_input;
else
with_sync_input=yes
with_sync_input=$with_features
fi
if test "$with_sync_input" = yes; then
@ -4161,7 +4173,7 @@ fi
if test "${with_xpm+set}" = set; then :
withval=$with_xpm;
else
with_xpm=yes
with_xpm=$with_features
fi
@ -4169,7 +4181,7 @@ fi
if test "${with_jpeg+set}" = set; then :
withval=$with_jpeg;
else
with_jpeg=yes
with_jpeg=$with_features
fi
@ -4177,7 +4189,7 @@ fi
if test "${with_tiff+set}" = set; then :
withval=$with_tiff;
else
with_tiff=yes
with_tiff=$with_features
fi
@ -4185,7 +4197,7 @@ fi
if test "${with_gif+set}" = set; then :
withval=$with_gif;
else
with_gif=yes
with_gif=$with_features
fi
@ -4193,7 +4205,7 @@ fi
if test "${with_png+set}" = set; then :
withval=$with_png;
else
with_png=yes
with_png=$with_features
fi
@ -4201,7 +4213,7 @@ fi
if test "${with_rsvg+set}" = set; then :
withval=$with_rsvg;
else
with_rsvg=yes
with_rsvg=$with_features
fi
@ -4209,7 +4221,7 @@ fi
if test "${with_xml2+set}" = set; then :
withval=$with_xml2;
else
with_xml2=yes
with_xml2=$with_features
fi
@ -4217,7 +4229,7 @@ fi
if test "${with_imagemagick+set}" = set; then :
withval=$with_imagemagick;
else
with_imagemagick=yes
with_imagemagick=$with_features
fi
@ -4226,7 +4238,7 @@ fi
if test "${with_xft+set}" = set; then :
withval=$with_xft;
else
with_xft=yes
with_xft=$with_features
fi
@ -4234,7 +4246,7 @@ fi
if test "${with_libotf+set}" = set; then :
withval=$with_libotf;
else
with_libotf=yes
with_libotf=$with_features
fi
@ -4242,7 +4254,7 @@ fi
if test "${with_m17n_flt+set}" = set; then :
withval=$with_m17n_flt;
else
with_m17n_flt=yes
with_m17n_flt=$with_features
fi
@ -4251,7 +4263,7 @@ fi
if test "${with_toolkit_scroll_bars+set}" = set; then :
withval=$with_toolkit_scroll_bars;
else
with_toolkit_scroll_bars=yes
with_toolkit_scroll_bars=$with_features
fi
@ -4259,7 +4271,7 @@ fi
if test "${with_xaw3d+set}" = set; then :
withval=$with_xaw3d;
else
with_xaw3d=yes
with_xaw3d=$with_features
fi
@ -4267,7 +4279,7 @@ fi
if test "${with_xim+set}" = set; then :
withval=$with_xim;
else
with_xim=yes
with_xim=$with_features
fi
@ -4284,7 +4296,7 @@ fi
if test "${with_gpm+set}" = set; then :
withval=$with_gpm;
else
with_gpm=yes
with_gpm=$with_features
fi
@ -4292,7 +4304,7 @@ fi
if test "${with_dbus+set}" = set; then :
withval=$with_dbus;
else
with_dbus=yes
with_dbus=$with_features
fi
@ -4300,15 +4312,26 @@ fi
if test "${with_gconf+set}" = set; then :
withval=$with_gconf;
else
with_gconf=yes
with_gconf=$with_features
fi
<<<<<<< TREE
=======
# Check whether --with-gsettings was given.
if test "${with_gsettings+set}" = set; then :
withval=$with_gsettings;
else
with_gsettings=$with_features
fi
>>>>>>> MERGE-SOURCE
# Check whether --with-selinux was given.
if test "${with_selinux+set}" = set; then :
withval=$with_selinux;
else
with_selinux=yes
with_selinux=$with_features
fi
@ -4316,7 +4339,7 @@ fi
if test "${with_gnutls+set}" = set; then :
withval=$with_gnutls;
else
with_gnutls=yes
with_gnutls=$with_features
fi
@ -4327,7 +4350,7 @@ fi
if test "${with_makeinfo+set}" = set; then :
withval=$with_makeinfo;
else
with_makeinfo=yes
with_makeinfo=$with_features
fi
@ -4338,7 +4361,7 @@ fi
if test "${with_compress_info+set}" = set; then :
withval=$with_compress_info;
else
with_compress_info=yes
with_compress_info=$with_features
fi
if test $with_compress_info = yes; then
@ -7125,6 +7148,7 @@ esac
# Code from module environ:
# Code from module extensions:
# Code from module extern-inline:
# Code from module filemode:
# Code from module getloadavg:
# Code from module getopt-gnu:
@ -7998,7 +8022,34 @@ $as_echo "no" >&6; }
fi
<<<<<<< TREE
=======
if test "X$PAXCTL" != X; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether binaries have a PT_PAX_FLAGS header" >&5
$as_echo_n "checking whether binaries have a PT_PAX_FLAGS header... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }; PAXCTL=""; fi
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
fi
>>>>>>> MERGE-SOURCE
## Need makeinfo >= 4.7 (?) to build the manuals.
# Extract the first word of "makeinfo", so it can be a program name with args.
@ -13453,7 +13504,11 @@ fi
done
if test $opsys != unixware; then
if test $opsys = unixware; then
$as_echo "#define BROKEN_GETWD 1" >>confdefs.h
else
for ac_func in getwd
do :
ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd"
@ -15124,6 +15179,10 @@ $as_echo "#define USER_FULL_NAME pw->pw_gecos" >>confdefs.h
$as_echo "#define DIRECTORY_SEP '/'" >>confdefs.h
$as_echo "#define IS_DEVICE_SEP(_c_) 0" >>confdefs.h
@ -15231,35 +15290,35 @@ esac
case $opsys in
aix4-2 )
$as_echo "#define PTY_ITERATION int c; for (c = 0; !c ; c++) " >>confdefs.h
$as_echo "#define PTY_ITERATION int c; for (c = 0; !c ; c++)" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptc\"); " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptc\");" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd)); " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd));" >>confdefs.h
;;
cygwin )
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++) " >>confdefs.h
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++)" >>confdefs.h
$as_echo "#define PTY_OPEN do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0) " >>confdefs.h
$as_echo "#define PTY_OPEN do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0)" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF /**/" >>confdefs.h
;;
darwin )
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++) " >>confdefs.h
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++)" >>confdefs.h
$as_echo "#define FIRST_PTY_LETTER 'p'" >>confdefs.h
$as_echo "#define PTY_OPEN do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0) " >>confdefs.h
$as_echo "#define PTY_OPEN do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF /**/" >>confdefs.h
;;
@ -15273,17 +15332,17 @@ case $opsys in
$as_echo "#define UNIX98_PTYS 1" >>confdefs.h
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++) " >>confdefs.h
$as_echo "#define PTY_ITERATION int i; for (i = 0; i < 1; i++)" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); sigunblock (sigmask (SIGCHLD)); } " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); sigunblock (sigmask (SIGCHLD)); }" >>confdefs.h
if test "x$ac_cv_func_getpt" = xyes; then
$as_echo "#define PTY_OPEN fd = getpt ()" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h
else
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptmx\"); " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptmx\");" >>confdefs.h
fi
else
@ -15295,9 +15354,9 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
hpux*)
$as_echo "#define FIRST_PTY_LETTER 'p'" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ptym/pty%c%x\", c, i); " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ptym/pty%c%x\", c, i);" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/pty/tty%c%x\", c, i); " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/pty/tty%c%x\", c, i);" >>confdefs.h
;;
@ -15306,21 +15365,21 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
$as_echo "#define FIRST_PTY_LETTER 'q'" >>confdefs.h
$as_echo "#define PTY_OPEN { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); } " >>confdefs.h
$as_echo "#define PTY_OPEN { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF /**/" >>confdefs.h
;;
sol2* )
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); } " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
;;
unixware )
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal(\"could not grant slave pty\"); sigunblock(sigmask(SIGCLD)); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); } " >>confdefs.h
$as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal(\"could not grant slave pty\"); sigunblock(sigmask(SIGCLD)); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
;;
esac
@ -15330,7 +15389,7 @@ case $opsys in
sol2* | unixware )
$as_echo "#define FIRST_PTY_LETTER 'z'" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptmx\"); " >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptmx\");" >>confdefs.h
$as_echo "#define SETUP_SLAVE_PTY if (ioctl (xforkin, I_PUSH, \"ptem\") == -1) fatal (\"ioctl I_PUSH ptem\"); if (ioctl (xforkin, I_PUSH, \"ldterm\") == -1) fatal (\"ioctl I_PUSH ldterm\"); if (ioctl (xforkin, I_PUSH, \"ttcompat\") == -1) fatal (\"ioctl I_PUSH ttcompat\");" >>confdefs.h
@ -15384,23 +15443,42 @@ esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C library" >&5
$as_echo_n "checking whether we are using the GNU C library... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <features.h>
#ifndef __GNU_LIBRARY__
# error "this is not the GNU C library"
#endif
case $opsys in
cygwin | darwin | freebsd | netbsd | openbsd )
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)" >>confdefs.h
int
main ()
{
;;
;
return 0;
}
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
emacs_glibc=yes
else
emacs_glibc=no
fi
rm -f conftest.err conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_glibc" >&5
$as_echo "$emacs_glibc" >&6; }
unixware)
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)" >>confdefs.h
if test $emacs_glibc = yes; then
;;
emacs_pending_output=unknown
gnu | gnu-linux | gnu-kfreebsd )
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of pending output formalism" >&5
case $opsys in
gnu | gnu-linux | gnu-kfreebsd )
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of pending output formalism" >&5
$as_echo_n "checking for style of pending output formalism... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
@ -15418,8 +15496,6 @@ main ()
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
emacs_pending_output=new
else
emacs_pending_output=unknown
fi
rm -f conftest.err conftest.$ac_ext
@ -15457,21 +15533,52 @@ $as_echo "$emacs_pending_output" >&6; }
case $emacs_pending_output in
new)
$as_echo "#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)" >>confdefs.h
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)" >>confdefs.h
;;
uclibc)
$as_echo "#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufpos - (FILE)->__bufstart)" >>confdefs.h
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufpos - (FILE)->__bufstart)" >>confdefs.h
;;
old)
$as_echo "#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) ((FILE)->_pptr - (FILE)->_pbase)" >>confdefs.h
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_pptr - (FILE)->_pbase)" >>confdefs.h
;;
esac
;;
esac
esac
if test $emacs_pending_output = unknown; then
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufp - (FILE)->__buffer)" >>confdefs.h
fi
else
case $opsys in
cygwin | darwin | freebsd | netbsd | openbsd )
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)" >>confdefs.h
;;
unixware)
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)" >>confdefs.h
;;
*)
if test x$ac_cv_header_stdio_ext_h = xyes && \
test x$ac_cv_func___fpending = xyes; then
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) __fpending (FILE)" >>confdefs.h
$as_echo "#define DISPNEW_NEEDS_STDIO_EXT 1" >>confdefs.h
else
$as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)" >>confdefs.h
fi
;;
esac
fi
@ -15640,17 +15747,6 @@ $as_echo "#define TIOCSIGSEND TIOCSIGNAL" >>confdefs.h
;;
esac
case $opsys in
irix6-5 | sol2* | unixware )
$as_echo "#define wait3(status, options, rusage) waitpid ((pid_t) -1, (status), (options))" >>confdefs.h
$as_echo "#define WRETCODE(w) (w >> 8)" >>confdefs.h
;;
esac
case $opsys in
hpux* | sol2* )
@ -15673,6 +15769,8 @@ esac
case $opsys in
aix4-2)
$as_echo "#define USG /**/" >>confdefs.h
@ -16769,6 +16867,10 @@ $as_echo "#define HAVE_ENVIRON_DECL 1" >>confdefs.h
HAVE_DECL_ENVIRON=0
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_dm_mode in struct stat" >&5
$as_echo_n "checking for st_dm_mode in struct stat... " >&6; }
if test "${ac_cv_struct_st_dm_mode+set}" = set; then :
@ -19687,6 +19789,7 @@ fi
# Persuade glibc <stdlib.h> to declare getloadavg().
@ -22317,6 +22420,11 @@ fi
<<<<<<< TREE
=======
>>>>>>> MERGE-SOURCE
if test $gl_cv_have_include_next = yes; then
gl_cv_next_unistd_h='<'unistd.h'>'
else

View file

@ -22,11 +22,12 @@ dnl You should have received a copy of the GNU General Public License
dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ(2.65)
AC_INIT(emacs, 24.1.50)
AC_INIT(emacs, 24.2.50)
AC_CONFIG_HEADER(src/config.h:src/config.in)
AC_CONFIG_SRCDIR(src/lisp.h)
AC_CONFIG_AUX_DIR(build-aux)
AM_INIT_AUTOMAKE
dnl Fairly arbitrary, older versions might work too.
AM_INIT_AUTOMAKE(1.11)
dnl Support for --program-prefix, --program-suffix and
dnl --program-transform-name options
@ -47,6 +48,14 @@ archlibdir='${libexecdir}/emacs/${version}/${configuration}'
docdir='${datadir}/emacs/${version}/etc'
gamedir='${localstatedir}/games/emacs'
dnl Special option to disable the most of other options.
AC_ARG_WITH(all,
[AS_HELP_STRING([--without-all],
[omit almost all features and build
small executable with minimal dependencies])],
with_features=$withval,
with_features=yes)
dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
dnl Create a new --with option that defaults to being disabled.
dnl NAME is the base name of the option. The shell variable with_NAME
@ -62,8 +71,8 @@ AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
])dnl
dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
dnl Create a new --with option that defaults to being enabled. NAME
dnl is the base name of the option. The shell variable with_NAME
dnl Create a new --with option that defaults to $enable_features.
dnl NAME is the base name of the option. The shell variable with_NAME
dnl will be set either to 'no' (for a plain --without-NAME) or to
dnl 'yes' (if the option is not specified). Note that the shell
dnl variable name is constructed as autoconf does, by replacing
@ -71,7 +80,7 @@ dnl non-alphanumeric characters with "_".
dnl HELP-STRING is the help text for the option.
AC_DEFUN([OPTION_DEFAULT_ON], [dnl
AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=yes])dnl
m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
])dnl
OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
@ -733,6 +742,12 @@ AC_PATH_PROG(GZIP_PROG, gzip)
if test $opsys = gnu-linux; then
AC_PATH_PROG(PAXCTL, paxctl,,
[$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
if test "X$PAXCTL" != X; then
AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
else AC_MSG_RESULT(no); PAXCTL=""; fi])
fi
fi
## Need makeinfo >= 4.7 (?) to build the manuals.
@ -2779,10 +2794,11 @@ getpwent endpwent getgrent endgrent \
touchlock \
cfmakeraw cfsetspeed copysign __executable_start)
dnl FIXME Fragile: something else may test for getwd as a dependency.
dnl Change to defining BROKEN_xxx ?
dnl getwd appears to be buggy on SVR4.2, so we don't use it.
if test $opsys != unixware; then
if test $opsys = unixware; then
dnl In case some other test ends up checking for getwd.
AC_DEFINE(BROKEN_GETWD, 1, [Define if getwd should not be used.])
else
AC_CHECK_FUNCS(getwd)
fi
@ -3227,6 +3243,9 @@ AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
AC_DEFINE(DIRECTORY_SEP, ['/'],
[Character that separates directories in a file name.])
dnl Only used on MS platforms.
AH_TEMPLATE(DEVICE_SEP, [Character that separates a device in a file name.])
@ -3424,31 +3443,31 @@ AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
case $opsys in
aix4-2 )
AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)] )
AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
dnl You allocate a pty by opening /dev/ptc to get the master side.
dnl To get the name of the slave side, you just ttyname() the master side.
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));] )
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
;;
cygwin )
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
dnl multi-line AC_DEFINEs are hard. :(
AC_DEFINE(PTY_OPEN, [ do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0)] )
AC_DEFINE(PTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_OPEN, [ do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0)])
AC_DEFINE(PTY_NAME_SPRINTF, [])
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
;;
darwin )
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
dnl Not used, because PTY_ITERATION is defined.
AC_DEFINE(FIRST_PTY_LETTER, ['p'])
dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
dnl But we don't have to block SIGCHLD because it is blocked in the
dnl implementation of grantpt.
AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)] )
AC_DEFINE(PTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)])
AC_DEFINE(PTY_NAME_SPRINTF, [])
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
;;
gnu | freebsd | netbsd | openbsd )
@ -3459,16 +3478,16 @@ case $opsys in
dnl if HAVE_GRANTPT
if test "x$ac_cv_func_grantpt" = xyes; then
AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
dnl to prevent sigchld_handler from intercepting the child's death.
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); sigunblock (sigmask (SIGCHLD)); }] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); sigunblock (sigmask (SIGCHLD)); }])
dnl if HAVE_GETPT
if test "x$ac_cv_func_getpt" = xyes; then
AC_DEFINE(PTY_OPEN, [fd = getpt ()])
AC_DEFINE(PTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_NAME_SPRINTF, [])
else
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");] )
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
fi
else
AC_DEFINE(FIRST_PTY_LETTER, ['p'])
@ -3477,8 +3496,8 @@ case $opsys in
hpux*)
AC_DEFINE(FIRST_PTY_LETTER, ['p'])
AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);] )
AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
;;
irix6-5 )
@ -3495,11 +3514,11 @@ case $opsys in
AC_DEFINE(PTY_ITERATION, [])
dnl Not used, because PTY_ITERATION is defined.
AC_DEFINE(FIRST_PTY_LETTER, ['q'])
AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }] )
AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
dnl No need to get the pty name at all.
AC_DEFINE(PTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_NAME_SPRINTF, [])
dnl No need to use sprintf to get the tty name--we get that from _getpty.
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
;;
sol2* )
@ -3509,12 +3528,12 @@ case $opsys in
dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
dnl from intercepting that death. If any child but grantpt's should die
dnl within, it should be caught after sigrelse(2).
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
;;
unixware )
dnl Comments are as per sol2*.
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal("could not grant slave pty"); sigunblock(sigmask(SIGCLD)); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }] )
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal("could not grant slave pty"); sigunblock(sigmask(SIGCLD)); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
;;
esac
@ -3524,7 +3543,7 @@ case $opsys in
dnl This change means that we don't loop through allocate_pty too
dnl many times in the (rare) event of a failure.
AC_DEFINE(FIRST_PTY_LETTER, ['z'])
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");] )
AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
dnl Push various streams modules onto a PTY channel. Used in process.c.
AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (xforkin, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (xforkin, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
;;
@ -3561,31 +3580,32 @@ esac
dnl Used in dispnew.c
AH_TEMPLATE(PENDING_OUTPUT_COUNT, [Number of chars of output in the
buffer of a stdio stream.])
buffer of a stdio stream.])
dnl FIXME just PENDING_OUTPUT_COUNT should suffice.
AH_TEMPLATE(GNU_LIBRARY_PENDING_OUTPUT_COUNT, [Value of
PENDING_OUTPUT_COUNT if using the GNU C library.])
AC_MSG_CHECKING([whether we are using the GNU C library])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
#include <features.h>
#ifndef __GNU_LIBRARY__
# error "this is not the GNU C library"
#endif
]], [[]])], emacs_glibc=yes, emacs_glibc=no)
AC_MSG_RESULT([$emacs_glibc])
case $opsys in
cygwin | darwin | freebsd | netbsd | openbsd )
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_p - (FILE)->_bf._base)])
;;
if test $emacs_glibc = yes; then
unixware)
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__ptr - (FILE)->__base)])
;;
emacs_pending_output=unknown
gnu | gnu-linux | gnu-kfreebsd )
AC_MSG_CHECKING([for style of pending output formalism])
dnl In autoconf 2.67 and later, we could use a single test
dnl since the preprocessed output is accessible in "conftest.i".
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
case $opsys in
gnu | gnu-linux | gnu-kfreebsd )
AC_MSG_CHECKING([for style of pending output formalism])
dnl In autoconf 2.67 and later, we could use a single test
dnl since the preprocessed output is accessible in "conftest.i".
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
#if !defined (_IO_STDIO_H) && !defined (_STDIO_USES_IOSTREAM)
# error "stdio definitions not found"
#endif
]], [[]])], emacs_pending_output=new, emacs_pending_output=unknown)
]], [[]])], emacs_pending_output=new, [])
if test $emacs_pending_output = unknown; then
case $opsys in
@ -3605,22 +3625,51 @@ case $opsys in
case $emacs_pending_output in
new)
dnl New C libio names.
AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
[((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)])
;;
uclibc)
dnl Using the uClibc library.
AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
[((FILE)->__bufpos - (FILE)->__bufstart)])
;;
old)
dnl Old C++ iostream names.
AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
[((FILE)->_pptr - (FILE)->_pbase)])
;;
esac
;;
esac
esac dnl opsys
if test $emacs_pending_output = unknown; then
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__bufp - (FILE)->__buffer)])
fi
else dnl !emacs_glibc
case $opsys in
cygwin | darwin | freebsd | netbsd | openbsd )
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_p - (FILE)->_bf._base)])
;;
unixware)
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__ptr - (FILE)->__base)])
;;
*)
dnl HAVE_STDIO_EXT_H && HAVE___FPENDING
if test x$ac_cv_header_stdio_ext_h = xyes && \
test x$ac_cv_func___fpending = xyes; then
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [__fpending (FILE)])
AC_DEFINE(DISPNEW_NEEDS_STDIO_EXT, 1,
[Define if dispnew.c should include stdio_ext.h.])
else
AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_ptr - (FILE)->_base)])
fi
;;
esac
fi dnl emacs_glibc
dnl Used in vm-limit.c
@ -3657,7 +3706,7 @@ case $opsys in
darwin) AC_DEFINE(TAB3, OXTABS) ;;
gnu | freebsd | netbsd | openbsd )
AC_DEFINE(TABDLY, OXTABS, [Undocumented.] )
AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
AC_DEFINE(TAB3, OXTABS)
;;
@ -3753,23 +3802,6 @@ case $opsys in
;;
esac
dnl Used in process.c.
case $opsys in
irix6-5 | sol2* | unixware )
dnl It is possible to receive SIGCHLD when there are no children
dnl waiting, because a previous waitsys(2) cleaned up the carcass
dnl of child without clearing the SIGCHLD pending info. So, use a
dnl non-blocking wait3 instead, which maps to waitpid(2) in SysVr4.
AC_DEFINE(wait3(status, options, rusage),
[waitpid ((pid_t) -1, (status), (options))],
[Some platforms redefine this.])
dnl FIXME this makes no sense, because WRETCODE is only used in
dnl process.c, which includes syswait.h aftet config.h, and the
dnl former unconditionally redefines WRETCODE.
AC_DEFINE(WRETCODE(w), [(w >> 8)], [Some platforms redefine this.])
;;
esac
case $opsys in
hpux* | sol2* )
@ -3791,6 +3823,8 @@ dnl Define symbols to identify the version of Unix this is.
dnl Define all the symbols that apply correctly.
AH_TEMPLATE(BSD4_2, [Define if the system is compatible with BSD 4.2.])
AH_TEMPLATE(BSD_SYSTEM, [Define if the system is compatible with BSD 4.2.])
AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
AH_TEMPLATE(USG5, [Define if the system is compatible with System V.])
AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])

View file

@ -1,4 +1,20 @@
2012-07-21 Eli Zaretskii <eliz@gnu.org>
2012-08-14 Eli Zaretskii <eliz@gnu.org>
* building.texi (Debugger Operation): Correct and improve
documentation of the GUD Tooltip mode.
2012-07-31 Chong Yidong <cyd@gnu.org>
* emacs.texi: Fix ISBN (Bug#12080).
2012-08-05 Chong Yidong <cyd@gnu.org>
* display.texi (Faces): Document frame-background-mode (Bug#7774).
* custom.texi (Face Customization): Move discussion of face
inheritance here, from Faces section.
2012-07-28 Eli Zaretskii <eliz@gnu.org>
* frames.texi (Mouse Commands): Fix the description of mouse-2.
(Bug#11958)

View file

@ -365,7 +365,7 @@ flow control.
@item
Fabián E. Gallina rewrote @file{python.el}, the major mode for the
Python programming language used in Emacs 24.2 onwards.
Python programming language used in Emacs 24.3 onwards.
@item
Kevin Gallo added multiple-frame support for Windows NT and wrote
@ -715,7 +715,7 @@ the current window on which point is; @file{cap-words.el}, a minor mode
for motion in ``CapitalizedWordIdentifiers''; @file{latin1-disp.el}, a
package that lets you display ISO 8859 characters on Latin-1 terminals
by setting up appropriate display tables; the version of
@file{python.el} used prior to Emacs 24.2; @file{smiley.el}, a
@file{python.el} used prior to Emacs 24.3; @file{smiley.el}, a
facility for displaying smiley faces; @file{sym-comp.el}, a library
for performing mode-dependent symbol completion; @file{benchmark.el}
for timing code execution; and @file{tool-bar.el}, a mode to control

View file

@ -588,19 +588,25 @@ to recompile and restart the program.
GUD Tooltip mode is a global minor mode that adds tooltip support to
GUD. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
disabled by default. If enabled, you can move the mouse cursor over a
variable to show its value in a tooltip (@pxref{Tooltips}); this takes
effect in the GUD interaction buffer, and in all source buffers with
major modes listed in the variable @code{gud-tooltip-modes}. If the
variable @code{gud-tooltip-echo-area} is non-@code{nil}, values are
shown in the echo area instead of a tooltip.
variable, a function, or a macro (collectively called
@dfn{identifiers}) to show their values in tooltips
(@pxref{Tooltips}). Alternatively, mark an identifier or an
expression by dragging the mouse over it, then leave the mouse in the
marked area to have the value of the expression displayed in a
tooltip. The GUD Tooltip mode takes effect in the GUD interaction
buffer, and in all source buffers with major modes listed in the
variable @code{gud-tooltip-modes}. If the variable
@code{gud-tooltip-echo-area} is non-@code{nil}, or if you turned off
the tooltip mode, values are shown in the echo area instead of a
tooltip.
When using GUD Tooltip mode with @kbd{M-x gud-gdb}, you should note
that displaying an expression's value in GDB can sometimes expand a
macro, potentially causing side effects in the debugged program. If
you use the @kbd{M-x gdb} interface, this problem does not occur, as
there is special code to avoid side-effects; furthermore, you can
display macro definitions associated with an identifier when the
program is not executing.
When using GUD Tooltip mode with @kbd{M-x gud-gdb}, displaying an
expression's value in GDB can sometimes expand a macro, potentially
causing side effects in the debugged program. For that reason, using
tooltips in @code{gud-gdb} is disabled. If you use the @kbd{M-x gdb}
interface, this problem does not occur, as there is special code to
avoid side-effects; furthermore, you can display macro definitions
associated with an identifier when the program is not executing.
@node Commands of GUD
@subsection Commands of GUD

View file

@ -450,11 +450,14 @@ attribute; an empty checkbox, @samp{[ ]}, means that the face does not
specify any special value for the attribute. You can activate a
checkbox to specify or unspecify its attribute.
Most faces only specify a few attributes (in the above example,
@code{font-lock-comment-face} only specifies the foreground color).
Emacs has a special face, @code{default}, whose attributes are all
specified; it determines the attributes left unspecified by other
faces.
A face does not have to specify every single attribute; in fact,
most faces only specify a few attributes. In the above example,
@code{font-lock-comment-face} only specifies the foreground color.
Any unspecified attribute is taken from the special face named
@code{default}, whose attributes are all specified. The
@code{default} face is the face used to display any text that does not
have an explicitly-assigned face; furthermore, its background color
attribute serves as the background color of the frame.
The @samp{Hide Unused Attributes} button, at the end of the
attribute list, hides the unspecified attributes of the face. When

View file

@ -475,18 +475,26 @@ type @kbd{M-x list-faces-display}. With a prefix argument, this
prompts for a regular expression, and displays only faces with names
matching that regular expression (@pxref{Regexps}).
@vindex frame-background-mode
It's possible for a given face to look different in different
frames. For instance, some text terminals do not support all face
attributes, particularly font, height, and width, and some support a
limited range of colors.
limited range of colors. In addition, most Emacs faces are defined so
that their attributes are different on light and dark frame
backgrounds, for reasons of legibility. By default, Emacs
automatically chooses which set of face attributes to display on each
frame, based on the frame's current background color. However, you
can override this by giving the variable @code{frame-background-mode}
a non-@code{nil} value. A value of @code{dark} makes Emacs treat all
frames as if they have a dark background, whereas a value of
@code{light} makes it treat all frames as if they have a light
background.
@cindex background color
@cindex default face
You can customize a face to alter its appearance, and save those
changes for future Emacs sessions. @xref{Face Customization}. A face
does not have to specify every single attribute; often it inherits
most attributes from another face. Any ultimately unspecified
attribute is taken from the face named @code{default}.
You can customize a face to alter its attributes, and save those
customizations for future Emacs sessions. @xref{Face Customization},
for details.
The @code{default} face is the default for displaying text, and all
of its attributes are specified. Its background color is also used as

View file

@ -94,7 +94,7 @@ developing GNU and promoting software freedom.''
Published by the Free Software Foundation @*
51 Franklin Street, Fifth Floor @*
Boston, MA 02110-1301 USA @*
ISBN 978-0-9831592-3-0
ISBN 978-0-9831592-4-7
@sp 2
Cover art by Etienne Suvasa; cover design by Matt Lee.

View file

@ -1,4 +1,4 @@
@c It would be nicer to generate this using configure and @version@.
@c However, that would mean emacsver.texi would always be newer
@c then the info files in release tarfiles.
@set EMACSVER 24.1.50
@set EMACSVER 24.2.50

View file

@ -1,3 +1,29 @@
2012-08-06 Eli Zaretskii <eliz@gnu.org>
* functions.texi (Closures): Put the main index entry for
"closures" here. (Bug#12138)
* variables.texi (Lexical Binding): Disambiguate the index entry
for "closures".
2012-08-05 Chong Yidong <cyd@gnu.org>
* display.texi (Defining Faces): Move documentation of
frame-background-mode to the Emacs manual (Bug#7774).
2012-08-04 Chong Yidong <cyd@gnu.org>
* syntax.texi (Syntax Basics): Rearrange the text for clarity.
Fix description of syntax table inheritance.
(Syntax Table Functions): Don't refer to internal contents of
syntax table, since that is not explained yet. Copyedits.
(Standard Syntax Tables): Node deleted.
(Syntax Table Internals): Misc clarifications. Improve table
formatting.
* keymaps.texi (Inheritance and Keymaps):
* text.texi (Sticky Properties): Tweak index entry.
2012-07-28 Eli Zaretskii <eliz@gnu.org>
* nonascii.texi (Character Sets): Fix a typo. (Bug#12062)
@ -4029,7 +4055,7 @@
* functions.texi (Function Safety): Texinfo usage fix.
2009-01-04 Eduard Wiebe <usenet@pusto.de> (tiny patch)
2009-01-04 Eduard Wiebe <usenet@pusto.de> (tiny change)
* objects.texi (General Escape Syntax): Fix typo.

View file

@ -2040,14 +2040,6 @@ function, which is used to apply customized face settings.
specify a face to use. In the vast majority of cases, this is not
necessary; it is preferable to simply use faces directly.
@defopt frame-background-mode
This option, if non-@code{nil}, specifies the background type to use for
interpreting face definitions. If it is @code{dark}, then Emacs treats
all frames as if they had a dark background, regardless of their actual
background colors. If it is @code{light}, then Emacs treats all frames
as if they had a light background.
@end defopt
@node Face Attributes
@subsection Face Attributes
@cindex face attributes

View file

@ -1241,7 +1241,6 @@ Syntax Tables
* Motion and Syntax:: Moving over characters with certain syntaxes.
* Parsing Expressions:: Parsing balanced expressions
using the syntax table.
* Standard Syntax Tables:: Syntax tables used by various major modes.
* Syntax Table Internals:: How syntax table information is stored.
* Categories:: Another way of classifying character syntax.

View file

@ -1100,8 +1100,9 @@ named function that you create (e.g.@: with @code{defun}), as well as
any anonymous function that you create using the @code{lambda} macro
or the @code{function} special form or the @code{#'} syntax
(@pxref{Anonymous Functions}), is automatically converted into a
closure.
@dfn{closure}.
@cindex closure
A closure is a function that also carries a record of the lexical
environment that existed when the function was defined. When it is
invoked, any lexical variable references within its definition use the

View file

@ -371,7 +371,7 @@ definition is a keymap; the same symbol appears in the new copy.
@node Inheritance and Keymaps
@section Inheritance and Keymaps
@cindex keymap inheritance
@cindex inheriting a keymap's bindings
@cindex inheritance, keymap
A keymap can inherit the bindings of another keymap, which we call the
@dfn{parent keymap}. Such a keymap looks like this:

View file

@ -23,7 +23,6 @@ Mode}) and the various complex movement commands (@pxref{Motion}).
* Motion and Syntax:: Moving over characters with certain syntaxes.
* Parsing Expressions:: Parsing balanced expressions
using the syntax table.
* Standard Syntax Tables:: Syntax tables used by various major modes.
* Syntax Table Internals:: How syntax table information is stored.
* Categories:: Another way of classifying character syntax.
@end menu
@ -31,43 +30,65 @@ Mode}) and the various complex movement commands (@pxref{Motion}).
@node Syntax Basics
@section Syntax Table Concepts
A syntax table is a char-table (@pxref{Char-Tables}). The element at
index @var{c} describes the character with code @var{c}. The element's
value should be a list that encodes the syntax of the character in
question.
A syntax table is a data structure which can be used to look up the
@dfn{syntax class} and other syntactic properties of each character.
Syntax tables are used by Lisp programs for scanning and moving across
text.
Syntax tables are used only for moving across text, not for the Emacs
Lisp reader. Emacs Lisp uses built-in syntactic rules when reading Lisp
expressions, and these rules cannot be changed. (Some Lisp systems
provide ways to redefine the read syntax, but we decided to leave this
feature out of Emacs Lisp for simplicity.)
Each buffer has its own major mode, and each major mode has its own
idea of the syntactic class of various characters. For example, in
Lisp mode, the character @samp{;} begins a comment, but in C mode, it
terminates a statement. To support these variations, Emacs makes the
syntax table local to each buffer. Typically, each major mode has its
own syntax table and installs that table in each buffer that uses that
mode. Changing this table alters the syntax in all those buffers as
well as in any buffers subsequently put in that mode. Occasionally
several similar modes share one syntax table. @xref{Example Major
Modes}, for an example of how to set up a syntax table.
A syntax table can inherit the data for some characters from the
standard syntax table, while specifying other characters itself. The
``inherit'' syntax class means ``inherit this character's syntax from
the standard syntax table''. Just changing the standard syntax for a
character affects all syntax tables that inherit from it.
Internally, a syntax table is a char-table (@pxref{Char-Tables}).
The element at index @var{c} describes the character with code
@var{c}; its value is a cons cell which specifies the syntax of the
character in question. @xref{Syntax Table Internals}, for details.
However, instead of using @code{aset} and @code{aref} to modify and
inspect syntax table contents, you should usually use the higher-level
functions @code{char-syntax} and @code{modify-syntax-entry}, which are
described in @ref{Syntax Table Functions}.
@defun syntax-table-p object
This function returns @code{t} if @var{object} is a syntax table.
@end defun
Each buffer has its own major mode, and each major mode has its own
idea of the syntax class of various characters. For example, in Lisp
mode, the character @samp{;} begins a comment, but in C mode, it
terminates a statement. To support these variations, the syntax table
is local to each buffer. Typically, each major mode has its own
syntax table, which it installs in all buffers that use that mode.
For example, the variable @code{emacs-lisp-mode-syntax-table} holds
the syntax table used by Emacs Lisp mode, and
@code{c-mode-syntax-table} holds the syntax table used by C mode.
Changing a major mode's syntax table alters the syntax in all of that
mode's buffers, as well as in any buffers subsequently put in that
mode. Occasionally, several similar modes share one syntax table.
@xref{Example Major Modes}, for an example of how to set up a syntax
table.
@cindex standard syntax table
@cindex inheritance, syntax table
A syntax table can @dfn{inherit} from another syntax table, which is
called its @dfn{parent syntax table}. A syntax table can leave the
syntax class of some characters unspecified, by giving them the
``inherit'' syntax class; such a character then acquires the syntax
class specified by the parent syntax table (@pxref{Syntax Class
Table}). Emacs defines a @dfn{standard syntax table}, which is the
default parent syntax table, and is also the syntax table used by
Fundamental mode.
@defun standard-syntax-table
This function returns the standard syntax table, which is the syntax
table used in Fundamental mode.
@end defun
Syntax tables are not used by the Emacs Lisp reader, which has its
own built-in syntactic rules which cannot be changed. (Some Lisp
systems provide ways to redefine the read syntax, but we decided to
leave this feature out of Emacs Lisp for simplicity.)
@node Syntax Descriptors
@section Syntax Descriptors
@cindex syntax class
The syntactic role of a character is called its @dfn{syntax class}.
The @dfn{syntax class} of a character describes its syntactic role.
Each syntax table specifies the syntax class of each character. There
is no necessary relationship between the class of a character in one
syntax table and its class in any other table.
@ -81,21 +102,23 @@ independent of what syntax that character currently has. Thus,
syntax, regardless of whether the @samp{\} character actually has that
syntax in the current syntax table.
@ifnottex
@xref{Syntax Class Table}, for a list of syntax classes.
@xref{Syntax Class Table}, for a list of syntax classes and their
designator characters.
@end ifnottex
@cindex syntax descriptor
A @dfn{syntax descriptor} is a Lisp string that describes the syntax
classes and other syntactic properties of a character. When you want
to modify the syntax of a character, that is done by calling the
function @code{modify-syntax-entry} and passing a syntax descriptor as
one of its arguments (@pxref{Syntax Table Functions}).
class and other syntactic properties of a character. When you want to
modify the syntax of a character, that is done by calling the function
@code{modify-syntax-entry} and passing a syntax descriptor as one of
its arguments (@pxref{Syntax Table Functions}).
The first character in a syntax descriptor designates the syntax
class. The second character specifies a matching character (e.g.@: in
Lisp, the matching character for @samp{(} is @samp{)}); if there is no
matching character, put a space there. Then come the characters for
any desired flags.
The first character in a syntax descriptor must be a syntax class
designator character. The second character, if present, specifies a
matching character (e.g.@: in Lisp, the matching character for
@samp{(} is @samp{)}); a space specifies that there is no matching
character. Then come characters specifying additional syntax
properties (@pxref{Syntax Flags}).
If no matching character or flags are needed, only one character
(specifying the syntax class) is sufficient.
@ -348,7 +371,6 @@ character does not have the @samp{b} flag.
@end table
@item
@c Emacs 19 feature
@samp{p} identifies an additional ``prefix character'' for Lisp syntax.
These characters are treated as whitespace when they appear between
expressions. When they appear within an expression, they are handled
@ -366,21 +388,20 @@ prefix (@samp{'}). @xref{Motion and Syntax}.
altering syntax tables.
@defun make-syntax-table &optional table
This function creates a new syntax table, with all values initialized
to @code{nil}. If @var{table} is non-@code{nil}, it becomes the
parent of the new syntax table, otherwise the standard syntax table is
the parent. Like all char-tables, a syntax table inherits from its
parent. Thus the original syntax of all characters in the returned
syntax table is determined by the parent. @xref{Char-Tables}.
This function creates a new syntax table. If @var{table} is
non-@code{nil}, the parent of the new syntax table is @var{table};
otherwise, the parent is the standard syntax table.
Most major mode syntax tables are created in this way.
In the new syntax table, all characters are initially given the
``inherit'' (@samp{@@}) syntax class, i.e.@: their syntax is inherited
from the parent table (@pxref{Syntax Class Table}).
@end defun
@defun copy-syntax-table &optional table
This function constructs a copy of @var{table} and returns it. If
@var{table} is not supplied (or is @code{nil}), it returns a copy of the
standard syntax table. Otherwise, an error is signaled if @var{table} is
not a syntax table.
@var{table} is omitted or @code{nil}, it returns a copy of the
standard syntax table. Otherwise, an error is signaled if @var{table}
is not a syntax table.
@end defun
@deffn Command modify-syntax-entry char syntax-descriptor &optional table
@ -393,11 +414,11 @@ between @var{min} and @var{max}, inclusive.
The syntax is changed only for @var{table}, which defaults to the
current buffer's syntax table, and not in any other syntax table.
The argument @var{syntax-descriptor} is a syntax descriptor for the
desired syntax (i.e.@: a string beginning with a class designator
character, and optionally containing a matching character and syntax
flags). An error is signaled if the first character is not one of the
seventeen syntax class designators. @xref{Syntax Descriptors}.
The argument @var{syntax-descriptor} is a syntax descriptor, i.e.@: a
string whose first character is a syntax class designator and whose
second and subsequent characters optionally specify a matching
character and syntax flags. @xref{Syntax Descriptors}. An error is
signaled if @var{syntax-descriptor} is not a valid syntax descriptor.
This function always returns @code{nil}. The old syntax information in
the table for this character is discarded.
@ -438,38 +459,37 @@ the table for this character is discarded.
@defun char-syntax character
This function returns the syntax class of @var{character}, represented
by its mnemonic designator character. This returns @emph{only} the
class, not any matching parenthesis or flags.
by its designator character (@pxref{Syntax Class Table}). This
returns @emph{only} the class, not its matching character or syntax
flags.
An error is signaled if @var{char} is not a character.
The following examples apply to C mode. The first example shows that
the syntax class of space is whitespace (represented by a space). The
second example shows that the syntax of @samp{/} is punctuation. This
does not show the fact that it is also part of comment-start and -end
sequences. The third example shows that open parenthesis is in the class
of open parentheses. This does not show the fact that it has a matching
character, @samp{)}.
The following examples apply to C mode. (We use @code{string} to make
it easier to see the character returned by @code{char-syntax}.)
@example
@group
;; Space characters have whitespace syntax class.
(string (char-syntax ?\s))
@result{} " "
@end group
@group
;; Forward slash characters have punctuation syntax. Note that this
;; @code{char-syntax} call does not reveal that it is also part of
;; comment-start and -end sequences.
(string (char-syntax ?/))
@result{} "."
@end group
@group
;; Open parenthesis characters have open parenthesis syntax. Note
;; that this @code{char-syntax} call does not reveal that it has a
;; matching character, @samp{)}.
(string (char-syntax ?\())
@result{} "("
@end group
@end example
We use @code{string} to make it easier to see the character returned by
@code{char-syntax}.
@end defun
@defun set-syntax-table table
@ -905,135 +925,70 @@ The behavior of @code{parse-partial-sexp} is also affected by
You can use @code{forward-comment} to move forward or backward over
one comment or several comments.
@node Standard Syntax Tables
@section Some Standard Syntax Tables
Most of the major modes in Emacs have their own syntax tables. Here
are several of them:
@defun standard-syntax-table
This function returns the standard syntax table, which is the syntax
table used in Fundamental mode.
@end defun
@defvar text-mode-syntax-table
The value of this variable is the syntax table used in Text mode.
@end defvar
@defvar c-mode-syntax-table
The value of this variable is the syntax table for C-mode buffers.
@end defvar
@defvar emacs-lisp-mode-syntax-table
The value of this variable is the syntax table used in Emacs Lisp mode
by editing commands. (It has no effect on the Lisp @code{read}
function.)
@end defvar
@node Syntax Table Internals
@section Syntax Table Internals
@cindex syntax table internals
Lisp programs don't usually work with the elements directly; the
Lisp-level syntax table functions usually work with syntax descriptors
(@pxref{Syntax Descriptors}). Nonetheless, here we document the
internal format. This format is used mostly when manipulating
syntax properties.
Syntax tables are implemented as char-tables (@pxref{Char-Tables}),
but most Lisp programs don't work directly with their elements.
Syntax tables do not store syntax data as syntax descriptors
(@pxref{Syntax Descriptors}); they use an internal format, which is
documented in this section. This internal format can also be assigned
as syntax properties (@pxref{Syntax Properties}).
Each element of a syntax table is a cons cell of the form
@code{(@var{syntax-code} . @var{matching-char})}. The @sc{car},
@var{syntax-code}, is an integer that encodes the syntax class, and any
flags. The @sc{cdr}, @var{matching-char}, is non-@code{nil} if
a character to match was specified.
@cindex syntax code
Each entry in a syntax table is a cons cell of the form
@code{(@var{syntax-code} . @var{matching-char})}. @var{syntax-code}
is an integer that encodes the syntax class and syntax flags,
according to the table below. @var{matching-char}, if non-@code{nil},
specifies a matching character (similar to the second character in a
syntax descriptor).
This table gives the value of @var{syntax-code} which corresponds
to each syntactic type.
@multitable @columnfractions .05 .3 .3 .31
@multitable @columnfractions .2 .3 .2 .3
@item
@tab
@i{Integer} @i{Class}
@tab
@i{Integer} @i{Class}
@tab
@i{Integer} @i{Class}
@i{Syntax code} @tab @i{Class} @tab @i{Syntax code} @tab @i{Class}
@item
@tab
0 @ @ whitespace
@tab
5 @ @ close parenthesis
@tab
10 @ @ character quote
0 @tab whitespace @tab 8 @tab paired delimiter
@item
@tab
1 @ @ punctuation
@tab
6 @ @ expression prefix
@tab
11 @ @ comment-start
1 @tab punctuation @tab 9 @tab escape
@item
@tab
2 @ @ word
@tab
7 @ @ string quote
@tab
12 @ @ comment-end
2 @tab word @tab 10 @tab character quote
@item
@tab
3 @ @ symbol
@tab
8 @ @ paired delimiter
@tab
13 @ @ inherit
3 @tab symbol @tab 11 @tab comment-start
@item
@tab
4 @ @ open parenthesis
@tab
9 @ @ escape
@tab
14 @ @ generic comment
4 @tab open parenthesis @tab 12 @tab comment-end
@item
@tab
15 @ generic string
5 @tab close parenthesis @tab 13 @tab inherit
@item
6 @tab expression prefix @tab 14 @tab generic comment
@item
7 @tab string quote @tab 15 @tab generic string
@end multitable
For example, the usual syntax value for @samp{(} is @code{(4 . 41)}.
(41 is the character code for @samp{)}.)
@noindent
For example, in the standard syntax table, the entry for @samp{(} is
@code{(4 . 41)}. (41 is the character code for @samp{)}.)
The flags are encoded in higher order bits, starting 16 bits from the
least significant bit. This table gives the power of two which
Syntax flags are encoded in higher order bits, starting 16 bits from
the least significant bit. This table gives the power of two which
corresponds to each syntax flag.
@multitable @columnfractions .05 .3 .3 .3
@multitable @columnfractions .15 .3 .15 .3
@item
@tab
@i{Prefix} @i{Flag}
@tab
@i{Prefix} @i{Flag}
@tab
@i{Prefix} @i{Flag}
@i{Prefix} @tab @i{Flag} @tab @i{Prefix} @tab @i{Flag}
@item
@tab
@samp{1} @ @ @code{(lsh 1 16)}
@tab
@samp{4} @ @ @code{(lsh 1 19)}
@tab
@samp{b} @ @ @code{(lsh 1 21)}
@samp{1} @tab @code{(lsh 1 16)} @tab @samp{p} @tab @code{(lsh 1 20)}
@item
@tab
@samp{2} @ @ @code{(lsh 1 17)}
@tab
@samp{p} @ @ @code{(lsh 1 20)}
@tab
@samp{n} @ @ @code{(lsh 1 22)}
@samp{2} @tab @code{(lsh 1 17)} @tab @samp{b} @tab @code{(lsh 1 21)}
@item
@tab
@samp{3} @ @ @code{(lsh 1 18)}
@samp{3} @tab @code{(lsh 1 18)} @tab @samp{n} @tab @code{(lsh 1 22)}
@item
@samp{4} @tab @code{(lsh 1 19)}
@end multitable
@defun string-to-syntax @var{desc}
This function returns the internal form corresponding to the syntax
descriptor @var{desc}, a cons cell @code{(@var{syntax-code}
Given a syntax descriptor @var{desc}, this function returns the
corresponding internal form, a cons cell @code{(@var{syntax-code}
. @var{matching-char})}.
@end defun

View file

@ -3382,7 +3382,7 @@ of the text.
@node Sticky Properties
@subsection Stickiness of Text Properties
@cindex sticky text properties
@cindex inheritance of text properties
@cindex inheritance, text property
Self-inserting characters normally take on the same properties as the
preceding character. This is called @dfn{inheritance} of properties.

View file

@ -967,11 +967,11 @@ wants the current value of a variable, it looks first in the lexical
environment; if the variable is not specified in there, it looks in
the symbol's value cell, where the dynamic value is stored.
@cindex closures
@cindex closures, example of using
Lexical bindings have indefinite extent. Even after a binding
construct has finished executing, its lexical environment can be
``kept around'' in Lisp objects called @dfn{closures}. A closure is
created when you create a named or anonymous function with lexical
created when you define a named or anonymous function with lexical
binding enabled. @xref{Closures}, for details.
When a closure is called as a function, any lexical variable

View file

@ -1,5 +1,5 @@
.\" See section COPYING for copyright and redistribution information.
.TH EMACS 1 "2007 April 13" "GNU Emacs 24.1.50"
.TH EMACS 1 "2007 April 13" "GNU Emacs 24.2.50"
.
.
.SH NAME

View file

@ -1,3 +1,27 @@
2012-08-06 Aurélien Aptel <aurelien.aptel@gmail.com>
* url.texi (Parsed URLs): Adjust to the code's use of defstruct
(bug#12096).
2012-08-01 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi (Simplification modes, Conversions)
(Operating on Selections): Mention "basic" simplification.
(The Calc Mode Line): Mention the mode line display for Basic
simplification mode.
(Simplify Formulas): Refer to 'algebraic' rather than 'default'
simplifications.
(Basic Simplifications): Rename from "Limited Simplifications"
Replace "limited" by "basic" throughout.
(Algebraic Simplifications): Indicate that the algebraic
simplifications are done by default.
(Unsafe Simplifications): Mention `m E'.
(Simplification of Units): Mention `m U'.
(Trigonometric/Hyperbolic Functions, Reducing and Mapping)
(Kinds of Declarations, Functions for Declarations): Mention
"algebraic simplifications" instead of `a s'.
(Algebraic Entry): Remove mention of default simplifications.
2012-07-30 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi (Getting Started, Tutorial): Change simulated

View file

@ -10123,7 +10123,7 @@ formula that goes onto the stack. (Thus @kbd{' pi @key{RET}} pushes
the variable @samp{pi}, but @kbd{' pi M-@key{RET}} pushes 3.1415.)
If you finish your algebraic entry by pressing @key{LFD} (or @kbd{C-j})
instead of @key{RET}, Calc disables the default simplifications
instead of @key{RET}, Calc disables simplification
(as if by @kbd{m O}; @pxref{Simplification Modes}) while the entry
is being pushed on the stack. Thus @kbd{' 1+2 @key{RET}} pushes 3
on the stack, but @kbd{' 1+2 @key{LFD}} pushes the formula @expr{1+2};
@ -12569,7 +12569,7 @@ are ``normalized'' when being taken from or pushed onto the stack.
Some normalizations are unavoidable, such as rounding floating-point
results to the current precision, and reducing fractions to simplest
form. Others, such as simplifying a formula like @expr{a+a} (or @expr{2+3}),
are done by default but can be turned off when necessary.
are done automatically but can be turned off when necessary.
When you press a key like @kbd{+} when @expr{2} and @expr{3} are on the
stack, Calc pops these numbers, normalizes them, creates the formula
@ -12603,9 +12603,9 @@ A constant is a number or other numeric object (such as a constant
error form or modulo form), or a vector all of whose
elements are constant.
@kindex m L
@pindex calc-limited-simplify-mode
The @kbd{m L} (@code{calc-limited-simplify-mode}) command does limited
@kindex m I
@pindex calc-basic-simplify-mode
The @kbd{m I} (@code{calc-basic-simplify-mode}) command does some basic
simplifications for all formulas. This includes many easy and
fast algebraic simplifications such as @expr{a+0} to @expr{a}, and
@expr{a + 2 a} to @expr{3 a}, as well as evaluating functions like
@ -12613,30 +12613,28 @@ fast algebraic simplifications such as @expr{a+0} to @expr{a}, and
@kindex m B
@pindex calc-bin-simplify-mode
The @kbd{m B} (@code{calc-bin-simplify-mode}) mode applies the limited
The @kbd{m B} (@code{calc-bin-simplify-mode}) mode applies the basic
simplifications to a result and then, if the result is an integer,
uses the @kbd{b c} (@code{calc-clip}) command to clip the integer according
to the current binary word size. @xref{Binary Functions}. Real numbers
are rounded to the nearest integer and then clipped; other kinds of
results (after the default simplifications) are left alone.
results (after the basic simplifications) are left alone.
@kindex m D
@pindex calc-default-simplify-mode
The @kbd{m D} (@code{calc-default-simplify-mode}) mode does standard
@kindex m A
@pindex calc-alg-simplify-mode
The @kbd{m A} (@code{calc-alg-simplify-mode}) mode does standard
algebraic simplifications. @xref{Algebraic Simplifications}.
@kindex m E
@pindex calc-ext-simplify-mode
The @kbd{m E} (@code{calc-ext-simplify-mode}) mode does ``extended''
algebraic simplification, as by the @kbd{a e} (@code{calc-simplify-extended})
command. @xref{Unsafe Simplifications}.
The @kbd{m E} (@code{calc-ext-simplify-mode}) mode does ``extended'', or
``unsafe'', algebraic simplification. @xref{Unsafe Simplifications}.
@kindex m U
@pindex calc-units-simplify-mode
The @kbd{m U} (@code{calc-units-simplify-mode}) mode does units
simplification; it applies the command @kbd{u s}
(@code{calc-simplify-units}), which in turn
is a superset of @kbd{a s}. In this mode, variable names which
simplification. @xref{Simplification of Units}. These include the
algebraic simplifications, plus variable names which
are identifiable as unit names (like @samp{mm} for ``millimeters'')
are simplified with their unit definitions in mind.
@ -12853,8 +12851,8 @@ roots (if any) will be included in the list.
only when certain values are integers (such as @samp{(x^y)^z}
shown above).
Another command that makes use of declarations is @kbd{a s}, when
simplifying equations and inequalities. It will cancel @code{x}
Calc's algebraic simplifications also make use of declarations when
simplifying equations and inequalities. They will cancel @code{x}
from both sides of @samp{a x = b x} only if it is sure @code{x}
is non-zero, say, because it has a @code{pos} declaration.
To declare specifically that @code{x} is real and non-zero,
@ -12992,10 +12990,10 @@ i.e., is mathematically equal to a real number times @expr{i}.
The @code{dpos} function checks for positive (but nonzero) reals.
The @code{dneg} function checks for negative reals. The @code{dnonneg}
function checks for nonnegative reals, i.e., reals greater than or
equal to zero. Note that the @kbd{a s} command can simplify an
expression like @expr{x > 0} to 1 or 0 using @code{dpos}, and that
@kbd{a s} is effectively applied to all conditions in rewrite rules,
so the actual functions @code{dpos}, @code{dneg}, and @code{dnonneg}
equal to zero. Note that Calc's algebraic simplifications, which are
effectively applied to all conditions in rewrite rules, can simplify
an expression like @expr{x > 0} to 1 or 0 using @code{dpos}.
So the actual functions @code{dpos}, @code{dneg}, and @code{dnonneg}
are rarely necessary.
@ignore
@ -13021,7 +13019,7 @@ also the set of objects considered ``true'' in conditional contexts.)
The @code{deven} function returns 1 if its argument is known to be
an even integer (or integer-valued float); it returns 0 if its argument
is known not to be even (because it is known to be odd or a non-integer).
The @kbd{a s} command uses this to simplify a test of the form
Calc's algebraic simplifications use this to simplify a test of the form
@samp{x % 2 = 0}. There is also an analogous @code{dodd} function.
@ignore
@ -15648,7 +15646,7 @@ The exact sequence of events is as follows: When Calc tries a
rule, it first matches the pattern as usual. It then substitutes
@samp{#1}, @samp{#2}, etc., in the conditions, if any. Next, the
conditions are simplified and evaluated in order from left to right,
as if by the @w{@kbd{a s}} algebra command (@pxref{Simplifying Formulas}).
using the algebraic simplifications (@pxref{Simplifying Formulas}).
Each result is true if it is a nonzero number, or an expression
that can be proven to be nonzero (@pxref{Declarations}). If the
results of all conditions are true, the expression (such as
@ -15876,8 +15874,8 @@ Default simplifications for numeric arguments only (@kbd{m N}).
@item BinSimp@var{w}
Binary-integer simplification mode; word size @var{w} (@kbd{m B}, @kbd{b w}).
@item LimSimp
Limited simplification mode (@kbd{m L}).
@item BasicSimp
Basic simplification mode (@kbd{m I}).
@item ExtSimp
Extended algebraic simplification mode (@kbd{m E}).
@ -16716,10 +16714,10 @@ produced!) Integers and fractions are generally unaffected by this
operation. Vectors and formulas are cleaned by cleaning each component
number (i.e., pervasively).
If the simplification mode is set below the limited level, it is raised
to the limited level for the purposes of this command. Thus, @kbd{c c}
applies the limited simplifications even if their automatic application
is disabled. @xref{Simplification Modes}.
If the simplification mode is set below basic simplification, it is raised
for the purposes of this command. Thus, @kbd{c c} applies the basic
simplifications even if their automatic application is disabled.
@xref{Simplification Modes}.
@cindex Roundoff errors, correcting
A numeric prefix argument to @kbd{c c} sets the floating-point precision
@ -18328,7 +18326,7 @@ reason why changing built-in variables is a bad idea. Arguments of
the form @expr{x} plus a multiple of @cpiover{2} are also simplified.
Calc includes similar formulas for @code{cos} and @code{tan}.
The @kbd{a s} command knows all angles which are integer multiples of
Calc's algebraic simplifications know all angles which are integer multiples of
@cpiover{12}, @cpiover{10}, or @cpiover{8} radians. In Degrees mode,
analogous simplifications occur for integer multiples of 15 or 18
degrees, and for arguments plus multiples of 90 degrees.
@ -22126,7 +22124,7 @@ now to take the cosine of the selected part.)
@kindex j v
@pindex calc-sel-evaluate
The @kbd{j v} (@code{calc-sel-evaluate}) command performs the
limited simplifications on the selected sub-formula.
basic simplifications on the selected sub-formula.
These simplifications would normally be done automatically
on all results, but may have been partially inhibited by
previous selection-related operations, or turned off altogether
@ -22178,9 +22176,9 @@ but which also substitutes stored values for variables in the formula.
Use @kbd{a v} if you want the variables to ignore their stored values.
If you give a numeric prefix argument of 2 to @kbd{a v}, it simplifies
as if in Algebraic Simplification mode. This is equivalent to typing
@kbd{a s}; @pxref{Simplifying Formulas}. If you give a numeric prefix
of 3 or more, it uses Extended Simplification mode (@kbd{a e}).
using Calc's algebraic simplifications; @pxref{Simplifying Formulas}.
If you give a numeric prefix of 3 or more, it uses Extended
Simplification mode (@kbd{a e}).
If you give a negative prefix argument @mathit{-1}, @mathit{-2}, or @mathit{-3},
it simplifies in the corresponding mode but only works on the top-level
@ -22253,8 +22251,8 @@ If inequalities with opposite direction (e.g., @samp{<} and @samp{>})
are mapped, the direction of the second inequality is reversed to
match the first: Using @kbd{a M +} on @samp{a < b} and @samp{a > 2}
reverses the latter to get @samp{2 < a}, which then allows the
combination @samp{a + 2 < b + a}, which the @kbd{a s} command can
then simplify to get @samp{2 < b}.
combination @samp{a + 2 < b + a}, which the algebraic simplifications
can reduce to @samp{2 < b}.
Using @kbd{a M *}, @kbd{a M /}, @kbd{a M n}, or @kbd{a M &} to negate
or invert an inequality will reverse the direction of the inequality.
@ -22334,19 +22332,20 @@ and rewrite rules. @xref{Rearranging with Selections}.
@xref{Rewrite Rules}.
@xref{Simplification Modes}, for commands to control what level of
simplification occurs automatically. Normally only the default
algebraic simplifications occur. If you have turned on a
simplification mode which does not do these default simplifications,
you can still perform them on a formula with the @kbd{a s} command.
simplification occurs automatically. Normally the algebraic
simplifications described below occur. If you have turned on a
simplification mode which does not do these algebraic simplifications,
you can still apply them to a formula with the @kbd{a s}
(@code{calc-simplify}) [@code{simplify}] command.
There are some simplifications that, while sometimes useful, are never
done automatically. For example, the @kbd{I} prefix can be given to
@kbd{a s}; the @kbd{I a s} command will change any trigonometric
function to the appropriate combination of @samp{sin}s and @samp{cos}s
before simplifying. This can be useful in simplifying even mildly
complicated trigonometric expressions. For example, while @kbd{a s}
can reduce @samp{sin(x) csc(x)} to @samp{1}, it will not simplify
@samp{sin(x)^2 csc(x)}. The command @kbd{I a s} can be used to
complicated trigonometric expressions. For example, while the algebraic
simplifications can reduce @samp{sin(x) csc(x)} to @samp{1}, they will not
simplify @samp{sin(x)^2 csc(x)}. The command @kbd{I a s} can be used to
simplify this latter expression; it will transform @samp{sin(x)^2
csc(x)} into @samp{sin(x)}. However, @kbd{I a s} will also perform
some ``simplifications'' which may not be desired; for example, it
@ -22357,21 +22356,22 @@ combinations of @samp{sinh}s and @samp{cosh}s before simplifying.
@menu
* Limited Simplifications::
* Basic Simplifications::
* Algebraic Simplifications::
* Unsafe Simplifications::
* Simplification of Units::
@end menu
@node Limited Simplifications, Algebraic Simplifications, Simplifying Formulas, Simplifying Formulas
@subsection Limited Simplifications
@node Basic Simplifications, Algebraic Simplifications, Simplifying Formulas, Simplifying Formulas
@subsection Basic Simplifications
@noindent
@cindex Limited simplifications
This section describes a limited set of simplifications. These, as
well as those described in the next section, are normally applied to
all results. You can type @kbd{m L} to restrict the simplifications
done on the stack to this limited set.
@cindex Basic simplifications
This section describes basic simplifications which Calc performs in many
situations. For example, both binary simplifications and algebraic
simplifications begin by performing these basic simplifications. You
can type @kbd{m I} to restrict the simplifications done on the stack to
these simplifications.
The most basic simplification is the evaluation of functions.
For example, @expr{2 + 3} is evaluated to @expr{5}, and @expr{@tfn{sqrt}(9)}
@ -22391,7 +22391,7 @@ operator) do not evaluate their arguments, @code{if} (the @code{? :}
operator) does not evaluate all of its arguments, and @code{evalto}
does not evaluate its lefthand argument.
Most commands apply at least these limited simplifications to all
Most commands apply at least these basic simplifications to all
arguments they take from the stack, perform a particular operation,
then simplify the result before pushing it back on the stack. In the
common special case of regular arithmetic commands like @kbd{+} and
@ -22400,7 +22400,7 @@ and collected into a suitable function call, which is then simplified
(the arguments being simplified first as part of the process, as
described above).
Even the limited set of simplifications are too numerous to describe
Even the basic set of simplifications are too numerous to describe
completely here, but this section will describe the ones that apply to the
major arithmetic operators. This list will be rather technical in
nature, and will probably be interesting to you only if you are
@ -22412,14 +22412,14 @@ a serious user of Calc's algebra facilities.
As well as the simplifications described here, if you have stored
any rewrite rules in the variable @code{EvalRules} then these rules
will also be applied before any built-in default simplifications.
will also be applied before any of the basic simplifications.
@xref{Automatic Rewrites}, for details.
@tex
\bigskip
@end tex
And now, on with the limited set of simplifications:
And now, on with the basic simplifications:
Arithmetic operators like @kbd{+} and @kbd{*} always take two
arguments in Calc's internal form. Sums and products of three or
@ -22438,11 +22438,11 @@ commutative law (@expr{a + b} to @expr{b + a}) except in a few
special cases described below. Some algebra programs always
rearrange terms into a canonical order, which enables them to
see that @expr{a b + b a} can be simplified to @expr{2 a b}.
Calc assumes you have put the terms into the order you want
and generally leaves that order alone, with the consequence
that formulas like the above will only be simplified if you
explicitly give the @kbd{a s} command. @xref{Algebraic
Simplifications}.
If you are using Basic Simplification mode, Calc assumes you have put
the terms into the order you want and generally leaves that order alone,
with the consequence that formulas like the above will only be
simplified if you explicitly give the @kbd{a s} command.
@xref{Algebraic Simplifications}.
Differences @expr{a - b} are treated like sums @expr{a + (-b)}
for purposes of simplification; one of the default simplifications
@ -22473,9 +22473,8 @@ for adjacent terms in a larger sum. Thus @expr{a + b + b + c}
is simplified to @expr{a + 2 b + c}, but @expr{a + b + c + b}
is not simplified. The reason is that comparing all terms of a
sum with one another would require time proportional to the
square of the number of terms; Calc relegates potentially slow
operations like this to commands that have to be invoked
explicitly, like @kbd{a s}.
square of the number of terms; Calc omits potentially slow
operations like this in basic simplification mode.
Finally, @expr{a + 0} and @expr{0 + a} are simplified to @expr{a}.
A consequence of the above rules is that @expr{0 - a} is simplified
@ -22672,9 +22671,9 @@ and @expr{b} are known to be real.
Functions like @code{sin} and @code{arctan} generally don't have
any default simplifications beyond simply evaluating the functions
for suitable numeric arguments and infinity. The @kbd{a s} command
described in the next section does provide some simplifications for
these functions, though.
for suitable numeric arguments and infinity. The algebraic
simplifications described in the next section do provide some
simplifications for these functions, though.
One important simplification that does occur is that
@expr{@tfn{ln}(@tfn{e})} is simplified to 1, and @expr{@tfn{ln}(@tfn{e}^x)} is
@ -22689,25 +22688,23 @@ and reversing the inequality. While it might seem reasonable to simplify
@expr{!!x} to @expr{x}, this would not be valid in general because
@expr{!!2} is 1, not 2.
Most other Calc functions have few if any default simplifications
Most other Calc functions have few if any basic simplifications
defined, aside of course from evaluation when the arguments are
suitable numbers.
@node Algebraic Simplifications, Unsafe Simplifications, Limited Simplifications, Simplifying Formulas
@node Algebraic Simplifications, Unsafe Simplifications, Basic Simplifications, Simplifying Formulas
@subsection Algebraic Simplifications
@noindent
@cindex Algebraic simplifications
@kindex a s
@kindex I a s
@kindex H a s
@pindex calc-simplify
@tindex simplify
@kindex m A
This section describes all simplifications that are performed by
the default algebraic simplification mode. If you have switched to a different
simplification mode, you can switch back with the @kbd{m D} command.
Even in other simplification modes, the @kbd{a s} command will use
these algebraic simplifications to simplifies the formula.
the algebraic simplification mode, which is the default simplification
mode. If you have switched to a different simplification mode, you can
switch back with the @kbd{m A} command. Even in other simplification
modes, the @kbd{a s} command will use these algebraic simplifications to
simplify the formula.
There is a variable, @code{AlgSimpRules}, in which you can put rewrites
to be applied. Its use is analogous to @code{EvalRules},
@ -22715,7 +22712,7 @@ but without the special restrictions. Basically, the simplifier does
@samp{@w{a r} AlgSimpRules} with an infinite repeat count on the whole
expression being simplified, then it traverses the expression applying
the built-in rules described below. If the result is different from
the original expression, the process repeats with the limited
the original expression, the process repeats with the basic
simplifications (including @code{EvalRules}), then @code{AlgSimpRules},
then the built-in simplifications, and so on.
@ -22731,8 +22728,8 @@ commuted to @expr{-x + 2}.
Also, terms of sums are combined by the distributive law, as in
@expr{x + y + 2 x} to @expr{y + 3 x}. This always occurs for
adjacent terms, but @kbd{a s} compares all pairs of terms including
non-adjacent ones.
adjacent terms, but Calc's algebraic simplifications compare all pairs
of terms including non-adjacent ones.
@tex
\bigskip
@ -22740,7 +22737,7 @@ non-adjacent ones.
Products are sorted into a canonical order using the commutative
law. For example, @expr{b c a} is commuted to @expr{a b c}.
This allows easier comparison of products; for example, the limited
This allows easier comparison of products; for example, the basic
simplifications will not change @expr{x y + y x} to @expr{2 x y},
but the algebraic simplifications; it first rewrites the sum to
@expr{x y + x y} which can then be recognized as a sum of identical
@ -22799,10 +22796,10 @@ simplified successfully.
Integer powers of the variable @code{i} are simplified according
to the identity @expr{i^2 = -1}. If you store a new value other
than the complex number @expr{(0,1)} in @code{i}, this simplification
will no longer occur. This is not done by the limited
will no longer occur. This is not done by the basic
simplifications; in case someone (unwisely) wants to use the name
@code{i} for a variable unrelated to complex numbers, they can use
limited simplifications.
basic simplification mode.
Square roots of integer or rational arguments are simplified in
several ways. (Note that these will be left unevaluated only in
@ -22935,21 +22932,26 @@ as is @expr{x^2 >= 0} if @expr{x} is known to be real.
@cindex Unsafe simplifications
@cindex Extended simplification
@kindex a e
@kindex m E
@pindex calc-simplify-extended
@ignore
@mindex esimpl@idots
@end ignore
@tindex esimplify
The @kbd{a e} (@code{calc-simplify-extended}) [@code{esimplify}] command
is like @kbd{a s}
except that it applies some additional simplifications which are not
``safe'' in all cases. Use this only if you know the values in your
formula lie in the restricted ranges for which these simplifications
are valid. The symbolic integrator uses @kbd{a e};
one effect of this is that the integrator's results must be used with
caution. Where an integral table will often attach conditions like
``for positive @expr{a} only,'' Calc (like most other symbolic
integration programs) will simply produce an unqualified result.
Calc is capable of performing some simplifications which may sometimes
be desired but which are not ``safe'' in all cases. The @kbd{a e}
(@code{calc-simplify-extended}) [@code{esimplify}] command
applies the algebraic simplifications as well as these extended, or
``unsafe'', simplifications. Use this only if you know the values in
your formula lie in the restricted ranges for which these
simplifications are valid. You can use Extended Simplification mode
(@kbd{m E}) to have these simplifications done automatically.
The symbolic integrator uses these extended simplifications; one effect
of this is that the integrator's results must be used with caution.
Where an integral table will often attach conditions like ``for positive
@expr{a} only,'' Calc (like most other symbolic integration programs)
will simply produce an unqualified result.
Because @kbd{a e}'s simplifications are unsafe, it is sometimes better
to type @kbd{C-u -3 a v}, which does extended simplification only
@ -22957,21 +22959,20 @@ on the top level of the formula without affecting the sub-formulas.
In fact, @kbd{C-u -3 j v} allows you to target extended simplification
to any specific part of a formula.
The variable @code{ExtSimpRules} contains rewrites to be applied by
the @kbd{a e} command. These are applied in addition to
The variable @code{ExtSimpRules} contains rewrites to be applied when
the extended simplifications are used. These are applied in addition to
@code{EvalRules} and @code{AlgSimpRules}. (The @kbd{a r AlgSimpRules}
step described above is simply followed by an @kbd{a r ExtSimpRules} step.)
Following is a complete list of ``unsafe'' simplifications performed
by @kbd{a e}.
Following is a complete list of the ``unsafe'' simplifications.
@tex
\bigskip
@end tex
Inverse trigonometric or hyperbolic functions, called with their
corresponding non-inverse functions as arguments, are simplified
by @kbd{a e}. For example, @expr{@tfn{arcsin}(@tfn{sin}(x))} changes
corresponding non-inverse functions as arguments, are simplified.
For example, @expr{@tfn{arcsin}(@tfn{sin}(x))} changes
to @expr{x}. Also, @expr{@tfn{arcsin}(@tfn{cos}(x))} and
@expr{@tfn{arccos}(@tfn{sin}(x))} both change to @expr{@tfn{pi}/2 - x}.
These simplifications are unsafe because they are valid only for
@ -23011,8 +23012,8 @@ simplifications are safe if @expr{x} is known to be real).
Common factors are canceled from products on both sides of an
equation, even if those factors may be zero: @expr{a x / b x}
to @expr{a / b}. Such factors are never canceled from
inequalities: Even @kbd{a e} is not bold enough to reduce
@expr{a x < b x} to @expr{a < b} (or @expr{a > b}, depending
inequalities: Even the extended simplifications are not bold enough to
reduce @expr{a x < b x} to @expr{a < b} (or @expr{a > b}, depending
on whether you believe @expr{x} is positive or negative).
The @kbd{a M /} command can be used to divide a factor out of
both sides of an inequality.
@ -23021,13 +23022,14 @@ both sides of an inequality.
@subsection Simplification of Units
@noindent
The simplifications described in this section are applied by the
@kbd{u s} (@code{calc-simplify-units}) command. These are in addition
to the regular @kbd{a s} (but not @kbd{a e}) simplifications described
earlier. @xref{Basic Operations on Units}.
The simplifications described in this section (as well as the algebraic
simplifications) are applied when units need to be simplified. They can
be applied using the @kbd{u s} (@code{calc-simplify-units}) command, or
will be done automatically in Units Simplification mode (@kbd{m U}).
@xref{Basic Operations on Units}.
The variable @code{UnitSimpRules} contains rewrites to be applied by
the @kbd{u s} command. These are applied in addition to @code{EvalRules}
units simplifications. These are applied in addition to @code{EvalRules}
and @code{AlgSimpRules}.
Scalar mode is automatically put into effect when simplifying units.
@ -23581,10 +23583,11 @@ forever!)
@vindex IntegSimpRules
Another set of rules, stored in @code{IntegSimpRules}, are applied
every time the integrator uses @kbd{a s} to simplify an intermediate
result. For example, putting the rule @samp{twice(x) := 2 x} into
@code{IntegSimpRules} would tell Calc to convert the @code{twice}
function into a form it knows whenever integration is attempted.
every time the integrator uses algebraic simplifications to simplify an
intermediate result. For example, putting the rule
@samp{twice(x) := 2 x} into @code{IntegSimpRules} would tell Calc to
convert the @code{twice} function into a form it knows whenever
integration is attempted.
One more way to influence the integrator is to define a function with
the @kbd{Z F} command (@pxref{Algebraic Definitions}). Calc's
@ -23602,8 +23605,8 @@ above to try to hint at a more direct path to the desired result, or
you can use @code{IntegAfterRules}. This is an extra rule set that
runs after the main integrator returns its result; basically, Calc does
an @kbd{a r IntegAfterRules} on the result before showing it to you.
(It also does an @kbd{a s}, without @code{IntegSimpRules}, after that
to further simplify the result.) For example, Calc's integrator
(It also does algebraic simplifications, without @code{IntegSimpRules},
after that to further simplify the result.) For example, Calc's integrator
sometimes produces expressions of the form @samp{ln(1+x) - ln(1-x)};
the default @code{IntegAfterRules} rewrite this into the more readable
form @samp{2 arctanh(x)}. Note that, unlike @code{IntegRules},
@ -25414,7 +25417,7 @@ The limits of a sum do not need to be integers. For example,
@samp{sum(a_k, k, 0, 2 n, n)} produces @samp{a_0 + a_n + a_(2 n)}.
Calc computes the number of iterations using the formula
@samp{1 + (@var{high} - @var{low}) / @var{step}}, which must,
after simplification as if by @kbd{a s}, evaluate to an integer.
after algebraic simplification, evaluate to an integer.
If the number of iterations according to the above formula does
not come out to an integer, the sum is invalid and will be left
@ -26038,7 +26041,7 @@ rule, this is an additional condition that must be satisfied before
the rule is accepted. Once @var{old} has been successfully matched
to the target expression, @var{cond} is evaluated (with all the
meta-variables substituted for the values they matched) and simplified
with @kbd{a s} (@code{calc-simplify}). If the result is a nonzero
with Calc's algebraic simplifications. If the result is a nonzero
number or any other object known to be nonzero (@pxref{Declarations}),
the rule is accepted. If the result is zero or if it is a symbolic
formula that is not known to be nonzero, the rule is rejected.
@ -26718,7 +26721,7 @@ whereas @samp{eval(cons(2+3, []))} will be converted to @samp{[5]}.
@end ignore
@tindex evalsimp
The formula @expr{x} has meta-variables substituted in the usual
way, then algebraically simplified as if by the @kbd{a s} command.
way, then algebraically simplified.
@item evalextsimp(x)
@ignore
@ -26741,15 +26744,15 @@ There are also some special functions you can use in conditions.
@end ignore
@tindex let
The expression @expr{x} is evaluated with meta-variables substituted.
The @kbd{a s} command's simplifications are @emph{not} applied by
The algebraic simplifications are @emph{not} applied by
default, but @expr{x} can include calls to @code{evalsimp} or
@code{evalextsimp} as described above to invoke higher levels
of simplification. The
result of @expr{x} is then bound to the meta-variable @expr{v}. As
usual, if this meta-variable has already been matched to something
else the two values must be equal; if the meta-variable is new then
it is bound to the result of the expression. This variable can then
appear in later conditions, and on the righthand side of the rule.
of simplification. The result of @expr{x} is then bound to the
meta-variable @expr{v}. As usual, if this meta-variable has already
been matched to something else the two values must be equal; if the
meta-variable is new then it is bound to the result of the expression.
This variable can then appear in later conditions, and on the righthand
side of the rule.
In fact, @expr{v} may be any pattern in which case the result of
evaluating @expr{x} is matched to that pattern, binding any
meta-variables that appear in that pattern. Note that @code{let}
@ -27499,17 +27502,19 @@ with @code{apply} as the top-level pattern must be tested against
@cindex @code{AlgSimpRules} variable
@vindex AlgSimpRules
Suppose you want @samp{sin(a + b)} to be expanded out not all the time,
but only when @kbd{a s} is used to simplify the formula. The variable
@code{AlgSimpRules} holds rules for this purpose. The @kbd{a s} command
will apply @code{EvalRules} and @code{AlgSimpRules} to the formula, as
well as all of its built-in simplifications.
but only when algebraic simplifications are used to simplify the
formula. The variable @code{AlgSimpRules} holds rules for this purpose.
The @kbd{a s} command will apply @code{EvalRules} and
@code{AlgSimpRules} to the formula, as well as all of its built-in
simplifications.
Most of the special limitations for @code{EvalRules} don't apply to
@code{AlgSimpRules}. Calc simply does an @kbd{a r AlgSimpRules}
command with an infinite repeat count as the first step of @kbd{a s}.
It then applies its own built-in simplifications throughout the
formula, and then repeats these two steps (along with applying the
default simplifications) until no further changes are possible.
command with an infinite repeat count as the first step of algebraic
simplifications. It then applies its own built-in simplifications
throughout the formula, and then repeats these two steps (along with
applying the default simplifications) until no further changes are
possible.
@cindex @code{ExtSimpRules} variable
@cindex @code{UnitSimpRules} variable
@ -27689,7 +27694,7 @@ to hit the apostrophe key every time you wish to enter units.
@tindex usimplify
The @kbd{u s} (@code{calc-simplify-units}) [@code{usimplify}] command
simplifies a units
expression. It uses @kbd{a s} (@code{calc-simplify}) to simplify the
expression. It uses Calc's algebraic simplifications to simplify the
expression first as a regular algebraic formula; it then looks for
features that can be further simplified by converting one object's units
to be compatible with another's. For example, @samp{5 m + 23 mm} will
@ -28773,7 +28778,7 @@ Edit @code{AlgSimpRules}. @xref{Algebraic Simplifications}.
@item s D
Edit @code{Decls}. @xref{Declarations}.
@item s E
Edit @code{EvalRules}. @xref{Limited Simplifications}.
Edit @code{EvalRules}. @xref{Basic Simplifications}.
@item s F
Edit @code{FitRules}. @xref{Curve Fitting}.
@item s G
@ -28943,19 +28948,16 @@ to select the lefthand side, execute your commands, then type
All current modes apply when an @samp{=>} operator is computed,
including the current simplification mode. Recall that the
formula @samp{x + y + x} is not handled by Calc's default
simplifications, but the @kbd{a s} command will reduce it to
the simpler form @samp{y + 2 x}. You can also type @kbd{m A}
to enable an Algebraic Simplification mode in which the
equivalent of @kbd{a s} is used on all of Calc's results.
If you enter @samp{x + y + x =>} normally, the result will
be @samp{x + y + x => x + y + x}. If you change to
Algebraic Simplification mode, the result will be
@samp{x + y + x => y + 2 x}. However, just pressing @kbd{a s}
once will have no effect on @samp{x + y + x => x + y + x},
formula @samp{arcsin(sin(x))} will not be handled by Calc's algebraic
simplifications, but Calc's unsafe simplifications will reduce it to
@samp{x}. If you enter @samp{arcsin(sin(x)) =>} normally, the result
will be @samp{arcsin(sin(x)) => arcsin(sin(x))}. If you change to
Extended Simplification mode, the result will be
@samp{arcsin(sin(x)) => x}. However, just pressing @kbd{a e}
once will have no effect on @samp{arcsin(sin(x)) => arcsin(sin(x))},
because the righthand side depends only on the lefthand side
and the current mode settings, and the lefthand side is not
affected by commands like @kbd{a s}.
affected by commands like @kbd{a e}.
The ``let'' command (@kbd{s l}) has an interesting interaction
with the @samp{=>} operator. The @kbd{s l} command evaluates the
@ -33756,8 +33758,9 @@ will be the same as @code{lessp}. But whereas @code{lessp} considers
other types of objects to be unordered, @code{beforep} puts any two
objects into a definite, consistent order. The @code{beforep}
function is used by the @kbd{V S} vector-sorting command, and also
by @kbd{a s} to put the terms of a product into canonical order:
This allows @samp{x y + y x} to be simplified easily to @samp{2 x y}.
by Calc's algebraic simplifications to put the terms of a product into
canonical order: This allows @samp{x y + y x} to be simplified easily to
@samp{2 x y}.
@end defun
@defun equal x y
@ -34426,10 +34429,9 @@ sub-formula that is @code{eq} to @var{old} replaced by @var{new}.
@end defun
@defun simplify expr
Simplify the expression @var{expr} by applying various algebraic rules.
This is what the @w{@kbd{a s}} (@code{calc-simplify}) command uses. This
always returns a copy of the expression; the structure @var{expr} points
to remains unchanged in memory.
Simplify the expression @var{expr} by applying Calc's algebraic
simplifications. This always returns a copy of the expression; the
structure @var{expr} points to remains unchanged in memory.
More precisely, here is what @code{simplify} does: The expression is
first normalized and evaluated by calling @code{normalize}. If any
@ -36562,7 +36564,7 @@ A plain @kbd{C-u} prefix means to prompt for the step size.
@c 7
@item
A prefix argument specifies simplification level and depth.
1=Default, 2=like @kbd{a s}, 3=like @kbd{a e}.
1=Basic simplifications, 2=Algebraic simplifications, 3=Extended simplifications
@c 8
@item

View file

@ -3146,12 +3146,17 @@
% hopefully nobody will notice/care.
\edef\ecsize{\csname\curfontsize ecsize\endcsname}%
\edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
\ifx\curfontstyle\bfstylename
% bold:
\font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
\ifmonospace
% typewriter:
\font\thisecfont = ectt\ecsize \space at \nominalsize
\else
% regular:
\font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
\ifx\curfontstyle\bfstylename
% bold:
\font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
\else
% regular:
\font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
\fi
\fi
\thisecfont
}

View file

@ -126,10 +126,10 @@ directory in @code{user-emacs-directory}, which is normally
@section Parsed URLs
@cindex parsed URLs
The library functions typically operate on @dfn{parsed} versions of
URLs. These are actually vectors of the form:
URLs. These are actually CL structures (vectors) of the form:
@example
[@var{type} @var{user} @var{password} @var{host} @var{port} @var{file} @var{target} @var{attributes} @var{full}]
[cl-struct-url @var{type} @var{user} @var{password} @var{host} @var{port} @var{filename} @var{target} @var{attributes} @var{fullness} @var{use-cookies}]
@end example
@noindent where
@ -144,16 +144,19 @@ is the user password associated with it, or @code{nil};
is the host name associated with it, or @code{nil};
@item port
is the port number associated with it, or @code{nil};
@item file
@item filename
is the ``file'' part of it, or @code{nil}. This doesn't necessarily
actually refer to a file;
@item target
is the target part, or @code{nil};
@item attributes
is the attributes associated with it, or @code{nil};
@item full
@item fullness
is @code{t} for a fully-specified URL, with a host part indicated by
@samp{//} after the scheme part.
@item use-cookies
is @code{nil} to neither send or store cookies to the server, @code{t}
otherwise.
@end table
@findex url-type
@ -161,23 +164,21 @@ is @code{t} for a fully-specified URL, with a host part indicated by
@findex url-password
@findex url-host
@findex url-port
@findex url-file
@findex url-filename
@findex url-target
@findex url-attributes
@findex url-full
@findex url-set-type
@findex url-set-user
@findex url-set-password
@findex url-set-host
@findex url-set-port
@findex url-set-file
@findex url-set-target
@findex url-set-attributes
@findex url-set-full
@findex url-fullness
These attributes have accessors named @code{url-@var{part}}, where
@var{part} is the name of one of the elements above, e.g.,
@code{url-host}. Similarly, there are setters of the form
@code{url-set-@var{part}}.
@code{url-host}. These attributes can be set with the same accessors
using @code{setf}:
@example
(setf (url-port url) 80)
@end example
If @var{port} is @var{nil}, @code{url-port} returns the default port
of the protocol.
There are functions for parsing and unparsing between the string and
vector forms.

View file

@ -1,3 +1,12 @@
2012-08-09 Chong Yidong <cyd@gnu.org>
* images/splash.svg, images/splash.png: Tweak SVG paths to improve
legibility.
2012-08-08 Dmitry Antipov <dmantipov@yandex.ru>
* NEWS: Mention --without-all and --enable-link-time-optimization.
2012-07-31 Jan Djärv <jan.h.d@swipnet.se>
* TODO (NS port): Add text about event loop.

View file

@ -21,7 +21,13 @@ When you add a new item, please add it without either +++ or ---
so we will look at it and add it to the manual.
* Installation Changes in Emacs 24.2
* Installation Changes in Emacs 24.3
** New configure option '--without-all' to disable additonal features.
This disables most of the features that are normally enabled by default.
** New configure option '--enable-link-time-optimization' to utilize
an appropriate feature provided by GCC since version 4.5.0.
** New configure option '--enable-gcc-warnings', intended for developers.
If building with GCC, this enables compile-time checks that warn about
@ -55,7 +61,7 @@ Lisp_Object type no longer uses a union to implement the compile time
check that this option enables.
* Startup Changes in Emacs 24.2
* Startup Changes in Emacs 24.3
** Emacs no longer searches for `leim-list.el' files beneath the standard
lisp/ directory. There should not be any there anyway. If you have
@ -65,7 +71,7 @@ been adding them there, put them somewhere else, eg site-lisp.
** The `--no-site-lisp' command line option now works for Nextstep builds.
* Changes in Emacs 24.2
* Changes in Emacs 24.3
** Help changes
@ -110,6 +116,10 @@ treated as images.
*** Images displayed via ImageMagick now support transparency and the
:background image spec property.
** Internationalization changes
*** New language environment: Persian.
** Face underlining can now use a wave.
See the "Face Attributes" section of the Elisp manual.
@ -144,8 +154,11 @@ local variables on remote hosts.
** `insert-char' is now a command, and `ucs-insert' an obsolete alias
for it.
** The entry for PCL-CVS has been removed from the Tools menu.
The PCL-CVS commands are still available via the keyboard.
* Editing Changes in Emacs 24.2
* Editing Changes in Emacs 24.3
** New option `delete-trailing-lines' specifies whether the M-x
delete-trailing-whitespace command should delete trailing lines at the
@ -163,7 +176,7 @@ prompts for a column number.
** `mouse-avoidance-banish-position' can now be used to customize
`mouse-avoidance-mode' further.
** `M-=' is now bound to `count-words', not `count-words-region'.
** `C-u M-=' now counts lines/words/characters in the entire buffer.
** `C-M-f' and `C-M-b' will now move to the path name separator
character when doing minibuffer filename prompts.
@ -176,7 +189,7 @@ It copies the region-rectangle as the last rectangle kill.
** New input method `vietnamese-vni'.
* Changes in Specialized Modes and Packages in Emacs 24.2
* Changes in Specialized Modes and Packages in Emacs 24.3
** Term changes
@ -187,18 +200,32 @@ ANSI terminal colors and styles by customizing the corresponding
`term-color-<COLOR>', `term-color-underline' and `term-color-bold'
faces.
** CL's main entry is now (require 'cl-lib).
** CL
*** CL's main entry is now (require 'cl-lib).
`cl-lib' is like the old `cl' except that it uses the namespace cleanly,
i.e. all its definitions have the "cl-" prefix.
i.e. all its definitions have the "cl-" prefix (and internal definitions use
the "cl--" prefix).
If `cl' provided a feature under the name `foo', then `cl-lib' provides it
under the name `cl-foo' instead, with the exceptions of the few definitions
that had to use `foo*' to avoid conflicts with pre-existing Elisp entities,
which have not been renamed to `cl-foo*' but just `cl-foo'.
The old `cl' is now deprecated and is nothing more than a bunch of aliases that
The old `cl' is now deprecated and is just a bunch of aliases that
provide the old non-prefixed names.
*** `cl-flet' is not like `flet' (which is deprecated).
Instead it obeys the behavior of Common-Lisp's `flet'.
*** `cl-labels' is slightly different from `labels'.
The difference is that it relies on the `lexical-binding' machinery (as opposed
to the `lexical-let' machinery used previously) to capture definitions in
closures, so such closures will only work if `lexical-binding' is in use.
*** `progv' was rewritten to use the `let' machinery.
A side effect is that vars without corresponding value are bound to nil
rather than making them unbound.
** Desktop
*** `desktop-path' no longer includes the "." directory. Desktop
@ -475,9 +502,17 @@ inefficiency, and not namespace-clean.
*** cust-print.el
* New Modes and Packages in Emacs 24.2
* New Modes and Packages in Emacs 24.3
* Incompatible Lisp Changes in Emacs 24.2
* Incompatible Lisp Changes in Emacs 24.3
** The function `x-select-font' can return a font spec, instead of a
font name as a string. Whether it returns a font spec or a font name
depends on the graphical library.
** If the NEWTEXT arg to `replace-match' contains a substring "\?",
that substring is inserted literally even if the LITERAL arg is
non-nil, instead of causing an error to be signaled.
+++
** Docstrings starting with `*' no longer indicate user options.
@ -535,10 +570,12 @@ are deprecated and will be removed eventually.
*** `last-input-char' and `last-command-char'
* Lisp changes in Emacs 24.2
* Lisp changes in Emacs 24.3
** New functions `autoloadp' and `autoload-do-load'.
** New function `posnp' to test if an object is a `posn'.
** `function-get' fetches the property of a function, following aliases.
** `toggle-read-only' accepts a second argument specifying whether to
@ -558,9 +595,14 @@ The interpretation of the DECLS is determined by `defun-declarations-alist'.
** New error type and new function `user-error'. Doesn't trigger the debugger.
** The functions get-lru-window, get-mru-window and get-largest-window
** Window changes
*** The functions get-lru-window, get-mru-window and get-largest-window
now accept a third argument to avoid choosing the selected window.
*** New display action alist `inhibit-switch-frame', if non-nil, tells
display action functions to avoid changing which frame is selected.
** Completion
*** New function `completion-table-with-quoting' to handle completion
@ -582,7 +624,7 @@ by the underlying C implementation.
** `automount-dir-prefix' is obsolete.
** `buffer-has-markers-at' is obsolete.
* Changes in Emacs 24.2 on non-free operating systems
* Changes in Emacs 24.3 on non-free operating systems
** New configure.bat options on MS-Windows:
@ -593,6 +635,12 @@ is detected.
Emacs now supports mouse highlight, help-echo (in the echo area), and
mouse-autoselect-window.
** On MS-Windows Vista and later Emacs now supports symbolic links.
* Changes in Emacs 24.2
** This is mainly a bug-fix release.
* Installation Changes in Emacs 24.1
@ -1161,7 +1209,7 @@ buffer was used.
The search is performed using `customize-apropos'.
To turn off the search field, set `custom-search-field' to nil.
*** Custom options now start out hidden if at their default values.
*** Options in customize group buffers start out hidden if not customized.
Use the arrow to the left of the option name to toggle visibility.
*** custom-buffer-sort-alphabetically now defaults to t.

View file

@ -443,8 +443,8 @@ Thus, you could start by adding this to config.h:
#define LIBS_SYSTEM -lresolv
Then if this gives you an error for redefining a macro, and you see that
the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h
again to say this:
config.h already defines LIBS_SYSTEM as -lfoo -lbar at some other point
(possibly in an included file) you could change it to say this:
#define LIBS_SYSTEM -lresolv -lfoo -lbar

View file

@ -18,7 +18,7 @@ to the FSF.
"which form of concurrency" we'll want.
** Overhaul of customize: sounds wonderful.
** better support for dynamic embedded graphics: I like this idea (my
mpc.el code could use it for the volume widget), tho I wonder if the
mpc.el code could use it for the volume widget), though I wonder if the
resulting efficiency will be sufficient.
** Spread Semantic.
** Improve the "code snippets" support: consolidate skeleton.el, tempo.el,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -1,3 +1,8 @@
2012-08-06 Mohsen BANAN <libre@mohsen.1.banan.byname.net>
* quail/persian.el: Add some mappings. (Bug#11812)
(farsi-isiri-9147, farsi-transliterate-banan): Doc fixes.
2012-07-30 Paul Eggert <eggert@cs.ucla.edu>
Update .PHONY listings in makefiles.

View file

@ -532,7 +532,7 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'."
(define-obsolete-function-alias
'hangul-input-method-inactivate
'hangul-input-method-deactivate "24.2")
'hangul-input-method-deactivate "24.3")
(defun hangul-input-method-help ()
"Describe the current Hangul input method."

View file

@ -1,9 +1,9 @@
;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*-
;; Copyright (C) 2011-2012 Free Software Foundation, Inc.
;; Copyright (C) 2011-2012 Free Software Foundation, Inc.
;; Author: Mohsen BANAN <libre@mohsen.1.banan.byname.net>
;; http://mohsen.1.banan.byname.net/contact
;; Author: Mohsen BANAN <libre@mohsen.1.banan.byname.net>
;; X-URL: http://mohsen.1.banan.byname.net/contact
;; Keywords: multilingual, input method, Farsi, Persian, keyboard
@ -22,8 +22,6 @@
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;; This is a Halaal Poly-Existential intended to remain perpetually Halaal.
;;; Commentary:
;;
;; This file contains a collection of input methods for
@ -31,7 +29,7 @@
;;
;; At this time, the following input methods are specified:
;;
;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147
;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIRI-9147
;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi
;;
;; Additional documentation for these input methods can be found at:
@ -50,18 +48,26 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; The keyboard mapping defined here is based on:
;; فنّاوریِ اطلاعات - چیدمان حروف و علائم فارسی بر صفحه کلید رایانه
;; استاندارد ملی ایران ۹۱۴۷ چاپ اول
;;
;; Institute of Standards and Industrial Research of Iran
;; Information Technology Layout of Persian Letters and Symbols
;; on Computer Keyboards
;; ISIRI 9147 -- 1st edition
;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147
;; Published at: http://www.isiri.org/portal/files/std/9147.pdf
;; Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-9147
;;
;; The specification is also republished at
;; http://www.farsiweb.ir/wiki/Image:Isiri-9147.pdf
;; and various other sites.
;;
;; ISIRI-6219 is also relevant.
;; Specification of Iran's Persian Character Set is also relevant:
;; فنّاوریِ اطلاعات -- تبادل و شیوه‌ی نمایش اطلاعاتِ فارسی بر اساس یونی کُد
;; استاندارد ملی ایران ۶۲۱۹ نسخهی نهایی
;;
;; Institute of Standards and Industrial Research of Iran
;; Information Technology Persian Information Interchange and Display Mechanism, using Unicode
;; ISIRI-6219 Final Version
;; Published at: http://www.isiri.org/portal/files/std/6219.htm
;; Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-6219
;;
;; Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the
;; exception of the Backslash, Alt-Backslash, Shift-Space and
@ -92,10 +98,10 @@
(quail-define-package
"farsi-isiri-9147" "Farsi" " ف" nil "Farsi input method.
Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
" nil t t t t nil nil nil nil nil t)
"farsi-isiri-9147" "Persian" " ف" nil
"Farsi keyboard based on ISIRI-9147.
See http://www.persoarabic.org/PLPC/120036 for additional documentation."
nil t t t t nil nil nil nil nil t)
;; Note: the rows of keys below are enclosed in Left-To-Right Override
;; embedding, to prevent them from being reordered by the Emacs
@ -305,11 +311,11 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
;;
;; For some persian characters there are multiple ways of inputting
;; the same character. For example both ``i'' and ``y'' produce ی.
;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural.
;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural.
;;
;; The more frequently used keys are mapped to lower case. The less frequently used letter moves to
;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ح and ``H''
;; is ه.
;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ه and ``H''
;; is ح.
;;
;; Multi-character input is based on \, &, and / prefix
;; characters. The letter 'h' is used as a postfix for the following two character mappings:
@ -317,29 +323,30 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
;;
;;
;; Prefix letter \ is used for two character inputs when an alternate form of a letter
;; is desired for example \% is: ‌÷ when % is: ٪.
;; is desired for example '\-' is: '÷' when '-' is: '-'.
;;
;; Prefix letter & is used for multi-character inputs when special characters are
;; desired based on their abbreviate name. For example you can enter &lrm; to enter the
;; ``LEFT-TO-RIGHT MARK'' character.
;;
;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER''
;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER''
;; and // is /.
;;
;; The letter 'h' is used in a number of two character postfix mappings,
;; for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you
;; need to repeat the ``s''. For example: سحر = 's' 's' 'h' 'r'.
;; need to repeat the ``s''. For example: سهم = 's' 's' 'h' 'm'.
;;
(quail-define-package
"farsi-transliterate-banan" "Farsi" "ب" t
"farsi-transliterate-banan" "Persian" "ب" t
"Intuitive transliteration keyboard layout for persian/farsi.
" nil t t t t nil nil nil nil nil t)
See http://www.persoarabic.org/PLPC/120036 for additional documentation."
nil t t t t nil nil nil nil nil t)
(quail-define-rules
;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی
;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی
("W" ) ;; hamzeh
("A" ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه
("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف
@ -352,7 +359,8 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("cc" )
("j" )
("ch" )
("h" )
("H" )
("hh" )
("kh" )
("d" )
("Z" )
@ -370,6 +378,9 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("X" )
("w" )
("q" )
("G" )
("Gh" )
("GG" )
("f" )
("Q" )
("gh" )
@ -383,13 +394,13 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("v" )
("u" )
("V" )
("H" ?ه)
("h" ?ه)
("y" )
("i" )
("I" )
;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی
;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی
("F" )
("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل
("K" ) ;; Arabic kaf
@ -416,8 +427,8 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ به‌اضافه
("-" ?\u2212) ;; (ucs-insert #x2212) named: علامتِ منها
("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب
("\\%" ?\u007F) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم
("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر
("\\-" ?\u00F7) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم
("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر
("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی
(">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر
@ -425,24 +436,25 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک
;;; Space
("." ?.) ;;
(":" ?\u003A) ;; (ucs-insert #x003A): named:
("!" ?\u0021) ;; (ucs-insert #x0021)! named:
("\\." ?\u2026) ;; (ucs-insert #x2026)… named:
("\\-" ?\u2010) ;; (ucs-insert #x2010) named:
("-" ?\u002D) ;; (ucs-insert #x002D)- named:
(":" ?\u003A) ;; (ucs-insert #x003A): named:
("!" ?\u0021) ;; (ucs-insert #x0021)! named:
("\\." ?\u2026) ;; (ucs-insert #x2026)… named:
("\\-" ?\u2010) ;; (ucs-insert #x2010) named:
("-" ?\u002D) ;; (ucs-insert #x002D)- named:
("|" ?|)
;;("\\\\" ?\)
("//" ?/)
("*" ?\u002A) ;; (ucs-insert #x002A)* named:
("(" ?\u0028) ;; (ucs-insert #x0028)( named:
(")" ?\u0029) ;; (ucs-insert #x0029)) named:
("[" ?\u005B) ;; (ucs-insert #x005B)[ named:
("[" ?\u005D) ;; (ucs-insert #x005D)] named:
("{" ?\u007B) ;; (ucs-insert #x007B){ named:
("}" ?\u007D) ;; (ucs-insert #x007D)} named:
("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named:
("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named:
("*" ?\u002A) ;; (ucs-insert #x002A)* named:
("(" ?\u0028) ;; (ucs-insert #x0028)( named:
(")" ?\u0029) ;; (ucs-insert #x0029)) named:
("[" ?\u005B) ;; (ucs-insert #x005B)[ named:
("[" ?\u005D) ;; (ucs-insert #x005D)] named:
("{" ?\u007B) ;; (ucs-insert #x007B){ named:
("}" ?\u007D) ;; (ucs-insert #x007D)} named:
("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named:
("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named:
("N" ?\u00AB) ;; (ucs-insert #x00AB)« named:
("M" ?\u00BB) ;; (ucs-insert #x00BB)» named:
;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی
("," ) ;; farsi
@ -455,9 +467,9 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
;; LF
;; CR
("&zwnj;" ?\u200C) ;; (ucs-insert #x200C) named: فاصله‌ی مجازی
("/" ?\u200C) ;;
("/" ?\u200C) ;;
("&zwj;" ?\u200D) ;; (ucs-insert #x200D) named: اتصالِ مجازی
("J" ?\u200D) ;;
("J" ?\u200D) ;;
("&lrm;" ?\u200E) ;; (ucs-insert #x200E) named: نشانه‌ی چپ‌به‌راست
("&rlm;" ?\u200F) ;; (ucs-insert #x200F) named: نشانه‌ی راست‌به‌چپ
("&ls;" ?\u2028) ;; (ucs-insert #x2028) named: جداکننده‌ی سطرها
@ -468,7 +480,7 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپ‌به‌راست
("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راست‌به‌چپ
("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانه‌ی ترتیبِ بایت‌ها
;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانه‌هایِ فارسی
("^" ) ;; zbar ;; زبر فارسى
@ -481,12 +493,12 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("@" ) ;; ساکن فارسى
("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی
("`" ) ;; همزه فارسى بالا
("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین
("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین
("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصوره‌ی فارسی
;;;;;;;;;;; isiri-6219 Table 8 - Forbidden Characters -- جدول ۸ - نویسه‌هایِ ممنوع
;; ;; he ye (ucs-insert 1728) kills emacs-24.0.90
;; ;; he ye (ucs-insert 1728) (ucs-insert #x06c0) kills emacs-24.0.90
;; arabic digits 0-9
@ -496,7 +508,7 @@ Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards.
("\\~" ?~)
("\\@" ?@)
("\\#" ?#)
("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named:
("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named:
("\\^" ?^)
("\\1" ?1)
("\\2" ?2)

View file

@ -114,7 +114,7 @@ While this input method is active, the variable
(define-obsolete-function-alias
'ucs-input-inactivate
'ucs-input-deactivate "24.2")
'ucs-input-deactivate "24.3")
(defun ucs-input-help ()
(interactive)

View file

@ -1,3 +1,54 @@
2012-08-15 Paul Eggert <eggert@cs.ucla.edu>
* etags.c (Pascal_functions): Fix parenthesization typo.
2012-08-14 Paul Eggert <eggert@cs.ucla.edu>
* make-docfile.c (enum global_type): Sort values roughly in
decreasing alignment, except put functions last.
(compare_globals): Use this new property of enum global_type.
(write_globals): Use bool, not int, for booleans.
2012-08-10 Glenn Morris <rgm@gnu.org>
* make-docfile.c (IF_LINT):
* emacsclient.c (IF_LINT): Remove (in config.h now).
* make-docfile.c (main):
(fopen) [!WINDOWSNT]:
(chdir) [!DOS_NT]: No more need to undef.
* movemail.c (DIRECTORY_SEP, IS_DIRECTORY_SEP):
* make-docfile.c (DIRECTORY_SEP, IS_DIRECTORY_SEP):
* emacsclient.c (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_DEVICE_SEP):
Remove (they are in config.h now).
* ebrowse.c (PATH_LIST_SEPARATOR):
Remove, and replace with SEPCHAR from config.h.
2012-08-03 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in (LOCAL_FLAGS): Remove WINDOWSNT and DOS_NT,
they are always defined in config.h.
2012-08-03 Eli Zaretskii <eliz@gnu.org>
* ntlib.c (lstat): New function, calls 'stat'.
2012-08-02 Paul Eggert <eggert@cs.ucla.edu>
Use C99-style 'extern inline' if available.
* profile.c (SYSTIME_INLINE): Define.
2012-08-02 Glenn Morris <rgm@gnu.org>
* makefile.w32-in (MS_W32_H): Update for new ms-w32.h location.
2012-08-01 Glenn Morris <rgm@gnu.org>
* Makefile.in (config_h): New variable.
Use throughout in place of ../src/config.h.
2012-08-01 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in (CONFIG_H): Update dependencies.

View file

@ -178,6 +178,9 @@ ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
# Configuration files for .o files to depend on.
config_h = ../src/config.h $(srcdir)/../src/conf_post.h
all: ${EXE_FILES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
.PHONY: all need-blessmail maybe-blessmail
@ -289,19 +292,19 @@ test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
$(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
./test-distrib ${srcdir}/testfile
../lib/libgnu.a: ../src/config.h
../lib/libgnu.a: $(config_h)
cd ../lib && $(MAKE) libgnu.a
regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h ../src/config.h
regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h $(config_h)
${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
${srcdir}/../src/regex.c
etags${EXEEXT}: ${srcdir}/etags.c regex.o ../src/config.h
etags${EXEEXT}: ${srcdir}/etags.c regex.o $(config_h)
$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" \
-DVERSION="\"${version}\"" ${srcdir}/etags.c \
regex.o $(LOADLIBES) -o etags
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h ../src/config.h
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h $(config_h)
$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
${srcdir}/ebrowse.c $(LOADLIBES) -o ebrowse
@ -312,30 +315,30 @@ ctags${EXEEXT}: etags${EXEEXT}
-DVERSION="\"${version}\"" ${srcdir}/etags.c \
regex.o $(LOADLIBES) -o ctags
profile${EXEEXT}: ${srcdir}/profile.c ../src/config.h
profile${EXEEXT}: ${srcdir}/profile.c $(config_h)
$(CC) ${ALL_CFLAGS} ${srcdir}/profile.c \
$(LOADLIBES) $(LIB_CLOCK_GETTIME) -o profile
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c $(config_h)
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \
-o make-docfile
movemail${EXEEXT}: ${srcdir}/movemail.c pop.o ../src/config.h
movemail${EXEEXT}: ${srcdir}/movemail.c pop.o $(config_h)
$(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c pop.o \
$(LOADLIBES) $(LIBS_MOVE) -o movemail
pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h ../src/config.h
pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h $(config_h)
$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(config_h)
$(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c \
-DVERSION="\"${version}\"" \
$(LOADLIBES) -o emacsclient
hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
hexl${EXEEXT}: ${srcdir}/hexl.c $(config_h)
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
update-game-score${EXEEXT}: ${srcdir}/update-game-score.c ../src/config.h
update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(config_h)
$(CC) ${ALL_CFLAGS} -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
${srcdir}/update-game-score.c $(LOADLIBES) -o update-game-score

View file

@ -43,17 +43,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define READ_CHUNK_SIZE (100 * 1024)
/* The character used as a separator in path lists (like $PATH). */
#if defined (__MSDOS__)
#define PATH_LIST_SEPARATOR ';'
#define FILENAME_EQ(X,Y) (strcasecmp (X,Y) == 0)
#else
#if defined (WINDOWSNT)
#define PATH_LIST_SEPARATOR ';'
#define FILENAME_EQ(X,Y) (stricmp (X,Y) == 0)
#else
#define PATH_LIST_SEPARATOR ':'
#define FILENAME_EQ(X,Y) (streq (X,Y))
#endif
#endif
@ -3417,7 +3412,7 @@ add_search_path (char *path_list)
char *start = path_list;
struct search_path *p;
while (*path_list && *path_list != PATH_LIST_SEPARATOR)
while (*path_list && *path_list != SEPCHAR)
++path_list;
p = (struct search_path *) xmalloc (sizeof *p);
@ -3434,7 +3429,7 @@ add_search_path (char *path_list)
else
search_path = search_path_tail = p;
while (*path_list == PATH_LIST_SEPARATOR)
while (*path_list == SEPCHAR)
++path_list;
}
}

View file

@ -1,5 +1,6 @@
/* Client process that communicates with GNU Emacs acting as server.
Copyright (C) 1986-1987, 1994, 1999-2012 Free Software Foundation, Inc.
Copyright (C) 1986-1987, 1994, 1999-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -112,13 +113,6 @@ char *(getcwd) (char *, size_t);
/* Additional space when allocating buffers for filenames, etc. */
#define EXTRA_SPACE 100
/* Use this to suppress gcc's `...may be used before initialized' warnings. */
#ifdef lint
# define IF_LINT(Code) Code
#else
# define IF_LINT(Code) /* empty */
#endif
#ifdef min
#undef min
#endif
@ -213,21 +207,6 @@ xmalloc (size_t size)
/* From sysdep.c */
#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
/* From lisp.h */
#ifndef DIRECTORY_SEP
#define DIRECTORY_SEP '/'
#endif
#ifndef IS_DIRECTORY_SEP
#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
#endif
#ifndef IS_DEVICE_SEP
#ifndef DEVICE_SEP
#define IS_DEVICE_SEP(_c_) 0
#else
#define IS_DEVICE_SEP(_c_) ((_c_) == DEVICE_SEP)
#endif
#endif
char *get_current_dir_name (void);
/* Return the current working directory. Returns NULL on errors.

View file

@ -4651,7 +4651,7 @@ Pascal_functions (FILE *inf)
/* Check if this is an "extern" declaration. */
if (*dbp == '\0')
continue;
if (lowcase (*dbp == 'e'))
if (lowcase (*dbp) == 'e')
{
if (nocase_tail ("extern")) /* superfluous, really! */
{

View file

@ -1,6 +1,7 @@
/* Generate doc-string file for GNU Emacs from source files.
Copyright (C) 1985-1986, 1992-1994, 1997, 1999-2012
Free Software Foundation, Inc.
Copyright (C) 1985-1986, 1992-1994, 1997, 1999-2012
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -35,22 +36,26 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
/* Defined to be emacs_main, sys_fopen, etc. in config.h. */
#undef main
#undef fopen
#undef chdir
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h> /* config.h unconditionally includes this anyway */
#ifdef MSDOS
#include <fcntl.h>
#endif /* MSDOS */
#ifdef WINDOWSNT
/* Defined to be sys_fopen in ms-w32.h, but only #ifdef emacs, so this
is really just insurance. */
#undef fopen
#include <fcntl.h>
#include <direct.h>
#endif /* WINDOWSNT */
#ifdef DOS_NT
/* Defined to be sys_chdir in ms-w32.h, but only #ifdef emacs, so this
is really just insurance.
Similarly, msdos defines this as sys_chdir, but we're not linking with the
file where that function is defined. */
#undef chdir
#define READ_TEXT "rt"
#define READ_BINARY "rb"
#else /* not DOS_NT */
@ -58,33 +63,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define READ_BINARY "r"
#endif /* not DOS_NT */
#ifndef DIRECTORY_SEP
#define DIRECTORY_SEP '/'
#endif
#ifndef IS_DIRECTORY_SEP
#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
#endif
/* Use this to suppress gcc's `...may be used before initialized' warnings. */
#ifdef lint
# define IF_LINT(Code) Code
#else
# define IF_LINT(Code) /* empty */
#endif
static int scan_file (char *filename);
static int scan_lisp_file (const char *filename, const char *mode);
static int scan_c_file (char *filename, const char *mode);
static void start_globals (void);
static void write_globals (void);
#ifdef MSDOS
/* s/msdos.h defines this as sys_chdir, but we're not linking with the
file where that function is defined. */
#undef chdir
#endif
#include <unistd.h>
/* Stdio stream for output to the DOC file. */
@ -561,14 +545,15 @@ write_c_args (FILE *out, char *func, char *buf, int minargs, int maxargs)
putc (')', out);
}
/* The types of globals. */
/* The types of globals. These are sorted roughly in decreasing alignment
order to avoid allocation gaps, except that functions are last. */
enum global_type
{
FUNCTION,
INVALID,
LISP_OBJECT,
EMACS_INTEGER,
BOOLEAN,
LISP_OBJECT,
INVALID
FUNCTION,
};
/* A single global. */
@ -617,13 +602,8 @@ compare_globals (const void *a, const void *b)
const struct global *ga = a;
const struct global *gb = b;
if (ga->type == FUNCTION)
{
if (gb->type != FUNCTION)
return 1;
}
else if (gb->type == FUNCTION)
return -1;
if (ga->type != gb->type)
return ga->type - gb->type;
return strcmp (ga->name, gb->name);
}
@ -650,7 +630,7 @@ write_globals (void)
type = "EMACS_INT";
break;
case BOOLEAN:
type = "int";
type = "bool";
break;
case LISP_OBJECT:
type = "Lisp_Object";

View file

@ -23,8 +23,7 @@ ALL = $(BLD)/test-distrib.exe $(BLD)/make-docfile.exe $(BLD)/hexl.exe\
.PHONY: make-docfile
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DNO_LDAV=1 \
-DNO_ARCHIVES=1 -I../lib \
LOCAL_FLAGS = -DNO_LDAV=1 -DNO_ARCHIVES=1 -I../lib \
-I../nt/inc -I../src $(EMACS_EXTRA_C_FLAGS)
LIBS = $(BASE_LIBS) $(ADVAPI32)
@ -360,7 +359,7 @@ SRC = $(EMACS_ROOT)/src
NT_INC = $(EMACS_ROOT)/nt/inc
GNU_LIB = $(EMACS_ROOT)/lib
MS_W32_H = $(SRC)/s/ms-w32.h \
MS_W32_H = $(NT_INC)/ms-w32.h \
$(NT_INC)/sys/stat.h
CONF_POST_H = $(SRC)/conf_post.h \
$(MS_W32_H)

View file

@ -22,7 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will
cause loss of mail* if you do it on a system that does not normally
use flock as its way of interlocking access to inbox files. The
use flock/lockf as its way of interlocking access to inbox files. The
setting of MAIL_USE_FLOCK and MAIL_USE_LOCKF *must agree* with the
system's own conventions. It is not a choice that is up to you.
@ -109,6 +109,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/locking.h>
#endif
/* If your system uses the `flock' or `lockf' system call for mail locking,
define MAIL_USE_SYSTEM_LOCK. If your system type should always define
MAIL_USE_LOCKF or MAIL_USE_FLOCK but configure does not do this,
please make a bug report. */
#ifdef MAIL_USE_LOCKF
#define MAIL_USE_SYSTEM_LOCK
#endif
@ -275,13 +280,6 @@ main (int argc, char **argv)
else
#endif
{
#ifndef DIRECTORY_SEP
#define DIRECTORY_SEP '/'
#endif
#ifndef IS_DIRECTORY_SEP
#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
#endif
/* Use a lock file named after our first argument with .lock appended:
If it exists, the mail file is locked. */
/* Note: this locking mechanism is *required* by the mailer
@ -290,20 +288,13 @@ main (int argc, char **argv)
On systems that use a lock file, extracting the mail without locking
WILL occasionally cause loss of mail due to timing errors!
So, if creation of the lock file fails
due to access permission on the mail spool directory,
you simply MUST change the permission
and/or make movemail a setgid program
So, if creation of the lock file fails due to access
permission on the mail spool directory, you simply MUST
change the permission and/or make movemail a setgid program
so it can create lock files properly.
You might also wish to verify that your system is one
which uses lock files for this purpose. Some systems use other methods.
If your system uses the `flock' system call for mail locking,
define MAIL_USE_SYSTEM_LOCK in config.h or the s-*.h file
and recompile movemail. If the s- file for your system
should define MAIL_USE_SYSTEM_LOCK but does not, send a bug report
to bug-gnu-emacs@prep.ai.mit.edu so we can fix it. */
You might also wish to verify that your system is one which
uses lock files for this purpose. Some systems use other methods. */
inname_len = strlen (inname);
lockname = xmalloc (inname_len + sizeof ".lock");
@ -560,8 +551,8 @@ main (int argc, char **argv)
wait (&wait_status);
if (!WIFEXITED (wait_status))
exit (EXIT_FAILURE);
else if (WRETCODE (wait_status) != 0)
exit (WRETCODE (wait_status));
else if (WEXITSTATUS (wait_status) != 0)
exit (WEXITSTATUS (wait_status));
#if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
#ifdef MAIL_USE_MAILLOCK

View file

@ -1,5 +1,9 @@
/* Utility and Unix shadow routines for GNU Emacs support programs on NT.
Copyright (C) 1994, 2001-2012 Free Software Foundation, Inc.
Copyright (C) 1994, 2001-2012 Free Software Foundation, Inc.
Author: Geoff Voelker (voelker@cs.washington.edu)
Created: 10-8-94
This file is part of GNU Emacs.
@ -14,11 +18,7 @@ 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
Geoff Voelker (voelker@cs.washington.edu) 10-8-94
*/
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <windows.h>
#include <stdlib.h>
@ -260,6 +260,7 @@ is_exec (const char * name)
stricmp (p, ".cmd") == 0));
}
/* FIXME? This is in config.nt now - is this still needed? */
#define IS_DIRECTORY_SEP(x) ((x) == '/' || (x) == '\\')
/* We need this because nt/inc/sys/stat.h defines struct stat that is
@ -374,3 +375,9 @@ stat (const char * path, struct stat * buf)
return 0;
}
int
lstat (const char * path, struct stat * buf)
{
return stat (path, buf);
}

View file

@ -30,6 +30,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
*/
#include <config.h>
#define SYSTIME_INLINE EXTERN_INLINE
#include <inttypes.h>
#include <stdio.h>

View file

@ -5,6 +5,6 @@ MOSTLYCLEANFILES =
noinst_LIBRARIES =
AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
include gnulib.mk

View file

@ -465,6 +465,7 @@ EXTRA_libgnu_a_SOURCES += stat.c
## begin gnulib module stat-time
libgnu_a_SOURCES += stat-time.c
EXTRA_DIST += stat-time.h
@ -1092,6 +1093,7 @@ EXTRA_libgnu_a_SOURCES += time_r.c
## begin gnulib module timespec
libgnu_a_SOURCES += timespec.c
EXTRA_DIST += timespec.h
@ -1111,6 +1113,7 @@ libgnu_a_SOURCES += timespec-sub.c
## begin gnulib module u64
libgnu_a_SOURCES += u64.c
EXTRA_DIST += u64.h

View file

@ -1,5 +1,5 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft Windows API.
# Copyright (C) 2011 Free Software Foundation, Inc.
# Copyright (C) 2011-2012 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@ -39,6 +39,9 @@ GNULIBOBJS = $(BLD)/c-ctype.$(O) \
$(BLD)/sha1.$(O) \
$(BLD)/sha256.$(O) \
$(BLD)/sha512.$(O) \
$(BLD)/stat-time.$(O) \
$(BLD)/timespec.$(O) \
$(BLD)/u64.$(O) \
$(BLD)/filemode.$(O)
#
@ -71,7 +74,7 @@ NT_INC = $(EMACS_ROOT)/nt/inc
C_CTYPE_H = $(GNU_LIB)/c-ctype.h \
$(NT_INC)/stdbool.h
MS_W32_H = $(SRC)/s/ms-w32.h \
MS_W32_H = $(NT_INC)/ms-w32.h \
$(NT_INC)/sys/stat.h
CONF_POST_H = $(SRC)/conf_post.h \
$(MS_W32_H)
@ -83,8 +86,7 @@ FTOASTR_H = $(GNU_LIB)/ftoastr.h \
$(GNU_LIB)/intprops.h
FTOASTR_C = $(GNU_LIB)/ftoastr.c \
$(CONFIG_H) \
$(FTOASTR_H) \
$(GNU_LIB)/ftoastr.h
$(FTOASTR_H)
GETOPT_INT_H = $(GNU_LIB)/getopt_int.h \
$(GNU_LIB)/getopt.h
MD5_H = $(GNU_LIB)/md5.h \
@ -96,8 +98,9 @@ SHA256_H = $(GNU_LIB)/sha256.h \
U64_H = $(GNU_LIB)/u64.h \
$(NT_INC)/stdint.h
SHA512_H = $(GNU_LIB)/sha512.h \
$(U64_H) \
$(GNU_LIB)/u64.h
$(U64_H)
STAT_TIME_H = $(GNU_LIB)/stat-time.h \
$(NT_INC)/sys/stat.h
$(BLD)/c-ctype.$(O) : \
$(GNU_LIB)/c-ctype.c \
@ -196,6 +199,21 @@ $(BLD)/sha512.$(O) : \
$(CONFIG_H) \
$(SHA512_H)
$(BLD)/stat-time.$(O) : \
$(GNU_LIB)/stat-time.c \
$(CONFIG_H) \
$(STAT_TIME_H)
$(BLD)/timespec.$(O) : \
$(GNU_LIB)/timespec.c \
$(GNU_LIB)/timespec.h \
$(CONFIG_H)
$(BLD)/u64.$(O) : \
$(GNU_LIB)/u64.c \
$(CONFIG_H) \
$(U64_H)
$(BLD)/filemode.$(O) : \
$(GNU_LIB)/filemode.c \
$(CONFIG_H) \

3
lib/stat-time.c Normal file
View file

@ -0,0 +1,3 @@
#include <config.h>
#define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE
#include "stat-time.h"

View file

@ -23,6 +23,11 @@
#include <sys/stat.h>
#include <time.h>
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_STAT_TIME_INLINE
# define _GL_STAT_TIME_INLINE _GL_INLINE
#endif
/* 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,
@ -46,7 +51,7 @@
#endif
/* Return the nanosecond component of *ST's access time. */
static inline long int
_GL_STAT_TIME_INLINE long int
get_stat_atime_ns (struct stat const *st)
{
# if defined STAT_TIMESPEC
@ -59,7 +64,7 @@ get_stat_atime_ns (struct stat const *st)
}
/* Return the nanosecond component of *ST's status change time. */
static inline long int
_GL_STAT_TIME_INLINE long int
get_stat_ctime_ns (struct stat const *st)
{
# if defined STAT_TIMESPEC
@ -72,7 +77,7 @@ get_stat_ctime_ns (struct stat const *st)
}
/* Return the nanosecond component of *ST's data modification time. */
static inline long int
_GL_STAT_TIME_INLINE long int
get_stat_mtime_ns (struct stat const *st)
{
# if defined STAT_TIMESPEC
@ -85,7 +90,7 @@ get_stat_mtime_ns (struct stat const *st)
}
/* Return the nanosecond component of *ST's birth time. */
static inline long int
_GL_STAT_TIME_INLINE long int
get_stat_birthtime_ns (struct stat const *st)
{
# if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
@ -100,7 +105,7 @@ get_stat_birthtime_ns (struct stat const *st)
}
/* Return *ST's access time. */
static inline struct timespec
_GL_STAT_TIME_INLINE struct timespec
get_stat_atime (struct stat const *st)
{
#ifdef STAT_TIMESPEC
@ -114,7 +119,7 @@ get_stat_atime (struct stat const *st)
}
/* Return *ST's status change time. */
static inline struct timespec
_GL_STAT_TIME_INLINE struct timespec
get_stat_ctime (struct stat const *st)
{
#ifdef STAT_TIMESPEC
@ -128,7 +133,7 @@ get_stat_ctime (struct stat const *st)
}
/* Return *ST's data modification time. */
static inline struct timespec
_GL_STAT_TIME_INLINE struct timespec
get_stat_mtime (struct stat const *st)
{
#ifdef STAT_TIMESPEC
@ -143,7 +148,7 @@ get_stat_mtime (struct stat const *st)
/* 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
_GL_STAT_TIME_INLINE struct timespec
get_stat_birthtime (struct stat const *st)
{
struct timespec t;
@ -186,4 +191,6 @@ get_stat_birthtime (struct stat const *st)
return t;
}
_GL_INLINE_HEADER_END
#endif

3
lib/timespec.c Normal file
View file

@ -0,0 +1,3 @@
#include <config.h>
#define _GL_TIMESPEC_INLINE _GL_EXTERN_INLINE
#include "timespec.h"

View file

@ -21,6 +21,11 @@
# include <time.h>
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_TIMESPEC_INLINE
# define _GL_TIMESPEC_INLINE _GL_INLINE
#endif
/* Return negative, zero, positive if A < B, A == B, A > B, respectively.
For each time stamp T, this code assumes that either:
@ -49,7 +54,7 @@
The (int) cast avoids a gcc -Wconversion warning. */
static inline int
_GL_TIMESPEC_INLINE int
timespec_cmp (struct timespec a, struct timespec b)
{
return (a.tv_sec < b.tv_sec ? -1
@ -59,7 +64,7 @@ timespec_cmp (struct timespec a, struct timespec b)
/* Return -1, 0, 1, depending on the sign of A. A.tv_nsec must be
nonnegative. */
static inline int
_GL_TIMESPEC_INLINE int
timespec_sign (struct timespec a)
{
return a.tv_sec < 0 ? -1 : a.tv_sec || a.tv_nsec;
@ -73,7 +78,7 @@ struct timespec dtotimespec (double)
_GL_ATTRIBUTE_CONST;
/* Return an approximation to A, of type 'double'. */
static inline double
_GL_TIMESPEC_INLINE double
timespectod (struct timespec a)
{
return a.tv_sec + a.tv_nsec / 1e9;
@ -82,4 +87,6 @@ timespectod (struct timespec a)
void gettime (struct timespec *);
int settime (struct timespec const *);
_GL_INLINE_HEADER_END
#endif

3
lib/u64.c Normal file
View file

@ -0,0 +1,3 @@
#include <config.h>
#define _GL_U64_INLINE _GL_EXTERN_INLINE
#include "u64.h"

View file

@ -19,6 +19,11 @@
#include <stdint.h>
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_U64_INLINE
# define _GL_U64_INLINE _GL_INLINE
#endif
/* Return X rotated left by N bits, where 0 < N < 64. */
#define u64rol(x, n) u64or (u64shl (x, n), u64shr (x, 64 - n))
@ -54,7 +59,7 @@ typedef struct { uint32_t lo, hi; } u64;
/* Given the high and low-order 32-bit quantities HI and LO, return a u64
value representing (HI << 32) + LO. */
static inline u64
_GL_U64_INLINE u64
u64hilo (uint32_t hi, uint32_t lo)
{
u64 r;
@ -64,7 +69,7 @@ u64hilo (uint32_t hi, uint32_t lo)
}
/* Return a u64 value representing LO. */
static inline u64
_GL_U64_INLINE u64
u64lo (uint32_t lo)
{
u64 r;
@ -74,7 +79,7 @@ u64lo (uint32_t lo)
}
/* Return a u64 value representing SIZE. */
static inline u64
_GL_U64_INLINE u64
u64size (size_t size)
{
u64 r;
@ -84,14 +89,14 @@ u64size (size_t size)
}
/* Return X < Y. */
static inline int
_GL_U64_INLINE int
u64lt (u64 x, u64 y)
{
return x.hi < y.hi || (x.hi == y.hi && x.lo < y.lo);
}
/* Return X & Y. */
static inline u64
_GL_U64_INLINE u64
u64and (u64 x, u64 y)
{
u64 r;
@ -101,7 +106,7 @@ u64and (u64 x, u64 y)
}
/* Return X | Y. */
static inline u64
_GL_U64_INLINE u64
u64or (u64 x, u64 y)
{
u64 r;
@ -111,7 +116,7 @@ u64or (u64 x, u64 y)
}
/* Return X ^ Y. */
static inline u64
_GL_U64_INLINE u64
u64xor (u64 x, u64 y)
{
u64 r;
@ -121,7 +126,7 @@ u64xor (u64 x, u64 y)
}
/* Return X + Y. */
static inline u64
_GL_U64_INLINE u64
u64plus (u64 x, u64 y)
{
u64 r;
@ -131,7 +136,7 @@ u64plus (u64 x, u64 y)
}
/* Return X << N. */
static inline u64
_GL_U64_INLINE u64
u64shl (u64 x, int n)
{
u64 r;
@ -149,7 +154,7 @@ u64shl (u64 x, int n)
}
/* Return X >> N. */
static inline u64
_GL_U64_INLINE u64
u64shr (u64 x, int n)
{
u64 r;
@ -167,3 +172,5 @@ u64shr (u64 x, int n)
}
#endif
_GL_INLINE_HEADER_END

View file

@ -21,6 +21,7 @@
#include <config.h>
#define _GL_UTIMENS_INLINE _GL_EXTERN_INLINE
#include "utimens.h"
#include <assert.h>

View file

@ -1,3 +1,22 @@
/* Set file access and modification times.
Copyright 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 <http://www.gnu.org/licenses/>. */
/* Written by Paul Eggert. */
#include <time.h>
int fdutimens (int, char const *, struct timespec const [2]);
int utimens (char const *, struct timespec const [2]);
@ -7,13 +26,21 @@ int lutimens (char const *, struct timespec const [2]);
# include <fcntl.h>
# include <sys/stat.h>
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_UTIMENS_INLINE
# define _GL_UTIMENS_INLINE _GL_INLINE
#endif
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
_GL_UTIMENS_INLINE int
lutimensat (int dir, char const *file, struct timespec const times[2])
{
return utimensat (dir, file, times, AT_SYMLINK_NOFOLLOW);
}
_GL_INLINE_HEADER_END
#endif

View file

@ -1,3 +1,631 @@
2012-08-15 Stefan Monnier <monnier@iro.umontreal.ca>
* vc/vc-mtn.el (vc-mtn-revision-completion-table): Handle completion
for composite selectors.
* vc/vc.el (vc-diff-build-argument-list-internal): Don't prevent
operation just because we can't find a previous revision.
2012-08-15 Chong Yidong <cyd@gnu.org>
* frame.el (set-frame-font): Accept font objects.
2012-08-15 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/tex-mode.el (tex-insert-quote): ~ is a space (bug#12137).
2012-08-15 Wolfgang Jenkner <wjenkner@inode.at>
* man.el (Man-overstrike-face, Man-underline-face)
(Man-reverse-face): Remove variables.
(Man-overstrike, Man-underline, Man-reverse): New faces.
(Man-fontify-manpage): Use them instead of the variables.
(Man-cleanup-manpage): Comment change.
(Man-ansi-color-map): New variable.
(Man-fontify-manpage): Use it.
Call ansi-color-apply-on-region to replace ad hoc code (bug#12147).
Implement ANSI SGR parameters 22-27 (bug#12146).
* ansi-color.el (ansi-colors): Doc fix.
(ansi-color-context, ansi-color-context-region): Doc fix.
(ansi-color--find-face): New function.
(ansi-color-apply, ansi-color-apply-on-region): Use it.
Rename the local variable `face' to `codes' since it is now a list of
ansi codes. Doc fix.
(ansi-color-get-face): Remove.
(ansi-color-parse-sequence): New function, derived from
ansi-color-get-face.
(ansi-color-apply-sequence): Use it. Rewrite, and support ansi
codes 22-27.
2012-08-14 Stefan Monnier <monnier@iro.umontreal.ca>
* subr.el (read-passwd): Allow use from a minibuffer.
2012-08-14 Eli Zaretskii <eliz@gnu.org>
* tooltip.el (tooltip-identifier-from-point): Don't treat tokens
inside comments and strings as identifiers.
* progmodes/gud.el (gud-tooltip-print-command): Quote the
expression to evaluate. This allows to evaluate expressions with
embedded whitespace.
(gud-tooltip-tips): Add a blank before the newline in the
message-box text, for the benefit of message-box emulation on
MS-Windows.
* progmodes/gdb-mi.el (gdb-tooltip-print): Don't ignore error
messages from GDB, pop them up in a tooltip to give feedback to
user.
(gdb-tooltip-print-1): Quote the expression to evaluate.
This allows to evaluate expressions with embedded whitespace.
(gdb-inferior-io--init-proc): Don't send "-inferior-tty" command
if the TTY name is nil or empty (which happens when communicating
with the inferior via pipes, e.g. on MS-Windows).
(gdb-internals): If GDB sends a "&\n" empty debugging message,
don't send that to the GUD buffer.
2012-08-14 Glenn Morris <rgm@gnu.org>
* emacs-lisp/bytecomp.el (byte-compile-setq-default):
Optimize away setq-default with no args, as for setq. (Bug#12195)
2012-08-14 Chong Yidong <cyd@gnu.org>
* minibuffer.el (read-file-name): Doc fix (Bug#10881).
* emacs-lisp/regexp-opt.el (regexp-opt-charset): Doc fix
(Bug#12085).
2012-08-14 Glenn Morris <rgm@gnu.org>
* emacs-lisp/bytecomp.el (byte-recompile-file): Doc fix.
2012-08-14 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-open-shell): Cache the shell name.
(tramp-find-shell, tramp-open-connection-setup-interactive-shell):
Use cached shell name.
2012-08-14 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-shell-send-string):
(python-shell-send-setup-code): Do not use `format' with `message'.
2012-08-14 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el: Improve percent literals (bug#6286).
(ruby-percent-literal-beg-re): New constant.
(ruby-syntax-general-delimiters-goto-beg): Rename to
`ruby-syntax-enclosing-percent-literal', improve literal type check.
(ruby-syntax-propertize-general-delimiters): Rename to
`ruby-syntax-propertize-percent-literal', it's a shorter and more
popular term. Adjust comments everywhere.
(ruby-syntax-propertize-percent-literal): Only propertize when not
inside a simple string or comment. When the literal is unclosed,
leave the text after it unpropertized.
(ruby-syntax-methods-before-regexp): New constant.
(ruby-syntax-propertize-function): Use it to recognize regexps.
Don't look at the text after regexp, just use the whitelist.
2012-08-14 Andreas Schwab <schwab@linux-m68k.org>
* emacs-lisp/bytecomp.el (byte-recompile-file): When LOAD is
non-nil always load the compiled file if it exists. (Bug#12197)
2012-08-14 Chong Yidong <cyd@gnu.org>
* hi-lock.el (hi-lock-mode): Do not unilaterally enable font lock.
(hi-lock-set-pattern): When deciding whether to use font lock or
overlays, look at font-lock-mode instead of font-lock-fontified
(Bug#12168).
(hi-lock-mode, hi-lock-line-face-buffer, hi-lock-unface-buffer)
(hi-lock-face-buffer, hi-lock-face-phrase-buffer): Doc fix.
2012-08-14 Daiki Ueno <ueno@unixuser.org>
* subr.el (internal--after-with-selected-window): Fix typo
(Bug#12193).
2012-08-14 Fabián Ezequiel Gallina <fgallina@cuca>
Use `completion-table-dynamic' for completion functions.
* progmodes/python.el
(python-shell-completion--do-completion-at-point)
(python-shell-completion--get-completions):
Remove functions.
(python-shell-completion-complete-at-point): New function.
(python-completion-complete-at-point): Use it.
2012-08-13 Jambunathan K <kjambunathan@gmail.com>
* vc/vc-dir.el (vc-dir-hide-state): New command (bug#12159).
(vc-dir-hide-up-to-date): Route it to `vc-dir-hide-state'.
2012-08-13 Stefan Monnier <monnier@iro.umontreal.ca>
* subr.el (function-get): Refine `autoload' arg so it can also
autoload functions for gv.el (bug#12191).
* emacs-lisp/edebug.el (get-edebug-spec): Adjust so it only
autoloads macros.
* color.el (color-xyz-to-lab, color-lab-to-xyz, color-cie-de2000):
Prefer pcase-let over destructuring-bind.
* vc/diff-mode.el (diff-remove-trailing-whitespace): Same.
Also, remove whitespace as we go, rather than after accumulating the
various places.
* subr.el (internal--before-with-selected-window)
(internal--after-with-selected-window): Fix typo seleted->selected.
(with-selected-window): Adjust callers.
Reported by Dmitry Gutov <dgutov@yandex.ru>.
2012-08-13 Bastien Guerry <bzg@gnu.org>
* window.el (special-display-popup-frame): Small docstring
enhancement. (Bug#12172)
2012-08-13 Andreas Schwab <schwab@linux-m68k.org>
* tar-mode.el (tar-header-data-end): Only ignore size for files of
type 1-6.
(tar-header-block-summarize, tar-get-descriptor): Handle pax
extended headers.
* files.el (hack-local-variables-filter): Remove useless eval.
2012-08-13 Martin Rudalics <rudalics@gmx.at>
* subr.el (with-selected-window): Fix last change.
2012-08-12 Stefan Monnier <monnier@iro.umontreal.ca>
* subr.el (internal--before-with-seleted-window)
(internal--after-with-seleted-window): New functions.
(with-selected-window): Use them, to replace dependency on
tty-top-frame.
2012-08-12 Nobuyoshi Nakada <nobu@ruby-lang.org>
* progmodes/ruby-mode.el (ruby-mode-map): Remove unnecessary
binding for `newline'.
(ruby-move-to-block): When moving backward, stop at block opening,
not indentation.
* progmodes/ruby-mode.el (ruby-brace-to-do-end)
(ruby-do-end-to-brace, ruby-toggle-block): New functions.
* progmodes/ruby-mode.el (ruby-mode-map): Add binding for
`ruby-toggle-block'.
2012-08-12 Stefan Monnier <monnier@iro.umontreal.ca>
* ibuffer.el (ibuffer-do-toggle-read-only):
* dired.el (dired-toggle-read-only):
* buff-menu.el (Buffer-menu-toggle-read-only):
* bindings.el (mode-line-toggle-read-only):
* bs.el (bs-toggle-readonly): Call toggle-read-only interactively.
2012-08-12 Andreas Schwab <schwab@linux-m68k.org>
* descr-text.el (describe-char): Put the overlays over the
"displayed as" character.
2012-08-12 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-units.el (math-default-units-table): Give an
initial value.
(math-put-default-units): Add options to put composite units and
unit systems in the default units table.
(calc-convert-units): Send composite units to
`math-put-default-units' when appropriate.
2012-08-11 Glenn Morris <rgm@gnu.org>
* emacs-lisp/copyright.el (copyright-update-directory): Logic fix.
* tutorial.el (help-with-tutorial):
* emacs-lisp/copyright.el (copyright-update-directory):
* emacs-lisp/autoload.el (autoload-find-generated-file)
(autoload-find-file): Disable local eval: (for insurance).
* files.el (hack-local-variables-filter): If an eval: form is not
known to be safe, and enable-local-variables is :safe, then ignore
the form totally, as is done for non-eval forms. (Bug#12155)
2012-08-10 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/rx.el (rx-constituents): Don't define as constant.
(rx-form): Simplify.
2012-08-09 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-expr-beg, ruby-parse-partial):
?, _, and : are symbol constituents, ! is not (but kinda should be).
(ruby-syntax-propertize-heredoc): Use ruby-singleton-class-p.
(ruby-syntax-propertize-function): Adjust for changes in
`ruby-syntax-propertize-heredoc'.
2012-08-09 Nobuyoshi Nakada <nobu@ruby-lang.org>
* progmodes/ruby-mode.el (ruby-mode-map): Remove deprecated
binding (use `M-;' instead).
(ruby-singleton-class-p): New function.
(ruby-expr-beg, ruby-in-here-doc-p) Use it.
2012-08-10 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/cl-macs.el (cl-loop): Improve debug spec.
2012-08-10 Chong Yidong <cyd@gnu.org>
* progmodes/python.el (python-shell-get-process-name): Don't mess
with same-window-buffer-names.
* eshell/eshell.el (eshell-add-to-window-buffer-names)
(eshell-remove-from-window-buffer-names): Make obsolete.
(eshell-buffer-name, eshell-unload-hook): Don't use them.
(eshell): Just use pop-to-buffer-same-window instead.
2012-08-10 Chong Yidong <cyd@gnu.org>
* bindings.el: Bind M-= back to count-words-region.
* simple.el (count-words-region): Accept a prefix arg for acting
on the entire buffer.
(count-words--buffer-message): New helper function.
2012-08-10 Stefan Monnier <monnier@iro.umontreal.ca>
* term/x-win.el (x-menu-bar-open): Always pass last-nonmenu-event.
* subr.el (eventp): `nil' is not an event, and eventp is not hot.
(event-start, event-end): Use posn-at-point to return a more
informative posn.
(posnp): New function.
* mouse.el (popup-menu-normalize-position): Use it.
2012-08-10 Masatake YAMATO <yamato@redhat.com>
* mouse.el (popup-menu-normalize-position): New function.
(popup-menu): Use `popup-menu-normalize-position' to normalize
the form for POSITION argument.
* term/x-win.el (x-menu-bar-open):
Use the value returend from (posn-at-point) as position
passed to `popup-menu'.
2012-08-09 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calccomp.el (math-compose-expr): Add extra argument
indicating that parentheses should be put around products in
denominators. Give multiplication precedence over division during
composition.
2012-08-09 Chong Yidong <cyd@gnu.org>
* man.el (Man-switches, Man-sed-command, Man-awk-command)
(Man-mode-hook, Man-cooked-hook, Man-untabify-command-args)
(Man-untabify-command, manual-program): Convert to defcustom
(Bug#10429).
* vc/add-log.el (change-log-mode): Bind comment-start to nil.
* descr-text.el (describe-char): Don't insert extra newlines
(Bug#10127).
* vc/log-view.el (log-view-diff): Use use-region-p (Bug#10133).
(log-view-diff-changeset, log-view-minor-wrap): Likewise.
* align.el (align-region): Delete temporary markers (Bug#10047).
Plus some code cleanups.
2012-08-09 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-pdbtrack-tracked-buffer)
(python-pdbtrack-buffers-to-kill, python-shell-internal-buffer)
(python-shell-internal-last-output): Use make-local-variable
instead of make-variable-buffer-local.
2012-08-09 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el: Enhancements to forward-sexp.
(python-nav-forward-sexp): Rename from
python-nav-forward-sexp-function.
(python-nav--forward-sexp, python-nav--backward-sexp):
New functions.
2012-08-09 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-menu.el (calc-modes-menu): Add entries for matrix
modes and simplification modes.
2012-08-09 Stefan Monnier <monnier@iro.umontreal.ca>
* delsel.el (delete-selection-pre-hook): Don't propagate the
file-supersession signals (bug#12161).
2012-08-08 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/cl.el (cl-map-keymap-recursively, cl-map-intervals)
(cl-map-extents): Add compatibility aliases (bug#12135).
2012-08-08 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-find-file-exists-command): Protect the
tests by `ignore-error'.
(tramp-find-shell): Open also a new shell, when cache is already
set. Reported by Carsten Bormann <cabo@tzi.org>. (Bug#12148)
2012-08-08 Juri Linkov <juri@jurta.org>
* bookmark.el: Add `defaults' property to the bookmark record.
(bookmark-current-buffer): Doc fix.
(bookmark-make-record): Add `defaults' property with default values
to the bookmark record.
(bookmark-minibuffer-read-name-map): Remove key binding "\C-u"
with `bookmark-insert-current-bookmark'.
(bookmark-set): Get `defaults' property from the bookmark record
and use it in `read-from-minibuffer'.
(bookmark-insert-current-bookmark): Remove function.
* info.el (Info-bookmark-make-record): Add `defaults' property
with values of canonical Info node name, the current Info file
name and the current Info node name. (Bug#12107)
2012-08-08 Juri Linkov <juri@jurta.org>
* files.el (basic-save-buffer): Use `buffer-name' as the default
of `read-file-name' when buffer is not visiting a file (bug#12128).
2012-08-08 Juri Linkov <juri@jurta.org>
* info.el (Info-isearch-search): Doc fix.
(Info-search): Change search-failed message from "initial node" to
"end of node" (bug#12078).
(Info-isearch-search): Change `isearch-string-state' to
`isearch--state-string'.
2012-08-08 Glenn Morris <rgm@gnu.org>
* language/persian.el: Remove file.
* language/misc-lang.el: Move unique part of persian.el here.
* loadup.el: Remove language/persian.
2012-08-08 Óscar Fuentes <ofv@wanadoo.es>
* vc/diff-mode.el (diff-remove-trailing-whitespace): New function.
2012-08-08 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el Fixed defsubst warning.
(python-syntax-context) Rename from python-info-ppss-context.
(python-syntax-context-type): Rename from
python-info-ppss-context-type.
(python-syntax-comment-or-string-p): Rename from
python-info-ppss-comment-or-string-p.
2012-08-08 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-misc.el (calc-record-why): Don't record a message twice.
2012-08-07 Andreas Schwab <schwab@linux-m68k.org>
* emacs-lisp/lisp-mode.el (eval-defun-1): Handle standard value of
a defcustom that is quoted with backquote.
* calc/calc-prog.el (math-do-defmath): Use backquote forms.
Fix handling of interactive spec when the body uses return.
(math-do-arg-check, math-define-function-body): Use backquote forms.
* calc/calc-ext.el (math-defcache): Likewise.
* calc/calc-rewr.el (math-rwfail, math-rweval): Likewise.
* allout.el (allout-new-exposure): Likewise.
* calc/calcalg2.el (math-tracing-integral): Likewise.
* info.el (Info-last-menu-item): Likewise.
* emulation/vip.el (vip-loop): Likewise.
* textmodes/artist.el (artist-funcall): Likewise.
* menu-bar.el (menu-bar-make-mm-toggle, menu-bar-make-toggle):
Construct menu-item directly.
* progmodes/autoconf.el (font-lock-syntactic-keywords):
Don't declare.
2012-08-07 Chong Yidong <cyd@gnu.org>
* simple.el (deactivate-mark): Preserve text properties when
saving the primary selection (Bug#8384).
2012-08-07 Kevin Ryde <user42@zip.com.au>
* woman.el (woman0-if): Quietly treat ".if v" as false (Bug#12109).
(woman-parse-numeric-value): On a bad .IP line, issue a warning
and continue processing (Bug#12110).
2012-08-06 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/cperl-mode.el (cperl-mode): Yet another fix for
syntax-propertize-function (bug#10095).
2012-08-06 Stefan Monnier <monnier@iro.umontreal.ca>
* help-fns.el (help-fns--key-bindings, help-fns--signature)
(help-fns--parent-mode, help-fns--obsolete): New funs, extracted from
describe-function-1.
(describe-function-1): Use them. Move compiler macro after sig.
(help-fns--compiler-macro): Use function-get. Assume we're already in
standard-output. Adjust layout to new call order.
* emacs-lisp/cl-macs.el (cl--sm-macroexpand): Fix handling of
re-binding a symbol that has a symbol-macro (bug#12119).
2012-08-06 Mohsen BANAN <libre@mohsen.1.banan.byname.net>
* language/persian.el: New file. (Bug#11812)
* loadup.el: Add language/persian.el.
2012-08-06 Chong Yidong <cyd@gnu.org>
* window.el (window--maybe-raise-frame): New function.
(window--display-buffer): Split off from here.
(display-buffer-reuse-window, display-buffer-pop-up-frame)
(display-buffer-pop-up-window, display-buffer-use-some-window):
Obey an inhibit-switch-frame action alist entry.
(display-buffer): Update doc.
* replace.el (occur-after-change-function): Avoid losing focus by
using the inhibit-switch-frame display parameter (Bug#12139).
2012-08-06 Fabián Ezequiel Gallina <fgallina@cuca>
Make internal shell process buffer names start with space.
* progmodes/python.el (python-shell-make-comint): Add optional
argument INTERNAL.
(run-python-internal): Use it.
(python-shell-internal-get-or-create-process): Check for new
internal buffer names.
2012-08-06 Glenn Morris <rgm@gnu.org>
* eshell/esh-ext.el (eshell/addpath): Use dolist and mapconcat.
Do less getting and setting of environment variables.
2012-08-05 Chong Yidong <cyd@gnu.org>
* proced.el (proced): Add substitution string to docstring to
trigger autoloading of the proced library on C-h f (Bug#1768).
* emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
Don't show defvars which have no second argument (Bug#8638).
* imenu.el (imenu-generic-expression): Move documentation here
from imenu--generic-function.
(imenu--generic-function): Refer to imenu-generic-expression.
2012-08-05 Vegard Øye <vegard_oye@hotmail.com> (tiny change)
* emulation/viper-init.el (viper-deflocalvar): Add docstring and
indentation declaration.
(viper-loop): Add indentation declaration (Bug#7025).
2012-08-05 Chong Yidong <cyd@gnu.org>
* help-fns.el (describe-variable): Add hyperlink for
directory-local variables files. Improve buffer-local and
permanent-local reporting; suggested by MON KEY (Bug#6644).
* help-mode.el (help-dir-local-var-def): New button type.
* files.el (kill-buffer-hook): Provide a defvar.
2012-08-05 Glenn Morris <rgm@gnu.org>
* eshell/esh-ext.el (eshell/addpath):
Also update eshell-path-env. (Bug#12013)
2012-08-05 Chong Yidong <cyd@gnu.org>
* wdired.el (wdired-mode, wdired-change-to-wdired-mode): Doc fixes.
* fringe.el (fringe-styles): Add docstring.
(fringe--check-mode): New function.
(set-fringe-mode, set-fringe-style): Use it.
(fringe-mode, set-fringe-style): Doc fixes (Bug#6480).
* files.el (set-auto-mode): Fix invalid setq call.
2012-08-04 Stefan Monnier <monnier@iro.umontreal.ca>
* isearch.el: Misc simplification; use defstruct.
(isearch-mode-map): Dense maps now work like sparse ones.
(isearch--state): New defstruct.
(isearch-string-state, isearch-message-state, isearch-point-state)
(isearch-success-state, isearch-forward-state)
(isearch-other-end-state, isearch-word-state, isearch-error-state)
(isearch-wrapped-state, isearch-barrier-state)
(isearch-case-fold-search-state, isearch-pop-fun-state): Remove,
replaced by defstruct's accessors.
(isearch--set-state): Rename from isearch-top-state and change
calling convention.
(isearch-push-state): Use new isearch--get-state.
(isearch-toggle-word): Disable regexp when enabling word.
(isearch-message-prefix): Remove unused arg _c-q-hack.
(isearch-message-suffix): Remove unused arg _ellipsis.
2012-08-04 Andreas Schwab <schwab@linux-m68k.org>
* simple.el (list-processes--refresh): For a server use :host or
:local as the address.
(list-processes): Doc fix.
2012-08-04 Michal Nazarewicz <mina86@mina86.com> (tiny change)
* lisp/mpc.el: Support password in host argument.
(mpc--proc-connect): Parse and use new password element.
Set mpc-proc variable instead of returning process.
(mpc-proc): Adjust accordingly.
2012-08-03 Eli Zaretskii <eliz@gnu.org>
* whitespace.el (whitespace-display-mappings): Use Unicode
codepoints, instead of emacs-mule codepoints. See
http://lists.gnu.org/archive/html/help-gnu-emacs/2012-07/msg00366.html
for the details.
* files.el (file-truename): Don't skip symlink-chasing part on
windows-nt. Incorporate the resolution of 8+3 short aliases on
Windows into the loop that recursively chases symlinks.
Compare directory and its parent case-insensitively on MS-Windows and
MS-DOS.
2012-08-03 Chong Yidong <cyd@gnu.org>
* menu-bar.el (menu-bar-tools-menu): Remove PCL-CVS.
* sort.el (sort-regexp-fields): Doc fix.
2012-08-03 Tassilo Horn <tsdh@gnu.org>
* textmodes/reftex.el (reftex-compile-variables): Make keyvals
labels regex position point at the expected place.
2012-08-03 MON KEY <monkey@sandpframing.com>
* net/imap.el (imap-interactive-login, imap-authenticate)
(imap-mailbox-lsub, imap-mailbox-list)
(imap-mailbox-status-asynch, imap-mailbox-acl-delete)
(imap-fetch, imap-message-flag-permanent-p, imap-envelope-from)
(imap-parse-response): Doc fix.
2012-08-03 João Távora <joaotavora@gmail.com>
* textmodes/tex-mode.el (latex-forward-sexp): Terminate the loop
if sexp scanning does not move point (Bug#5734).
2012-08-02 Tassilo Horn <tsdh@gnu.org>
* textmodes/reftex-vars.el (reftex-default-label-alist-entries):
Add listings, minted, and ctable packages.
(reftex-label-alist-builtin): Move listings, minted, and ctable
entries before LaTeX.
(reftex-label-alist): Docfix.
2012-08-02 Bastien Guerry <bzg@gnu.org>
* replace.el (occur): Fix docstring (bug#12122).
2012-08-02 Glenn Morris <rgm@gnu.org>
* emacs-lisp/authors.el (authors-renamed-files-alist): Add ms-w32.h.
2012-08-02 Paul Eggert <eggert@cs.ucla.edu>
Obsolete alias inactivate-current-input-method-function (Bug#10150).
* international/mule-cmds.el: Create
inactivate-current-input-method-function as an obsolete alias for
deactivate-current-input-method-function. See Katsumi Yamaoka in
<http://bugs.gnu.org/10150#46>.
2012-08-01 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-mode.el (calc-set-simplify-mode): Use `cond' instead
of nested `if's.
2012-08-01 Glenn Morris <rgm@gnu.org>
* progmodes/autoconf.el (autoconf-definition-regexp):
@ -154,9 +782,8 @@
* register.el (copy-to-register, copy-rectangle-to-register):
Deactivate the mark, and use indicate-copied-region (Bug#10056).
(append-to-register, prepend-to-register): Call
2012-07-29 Juri Linkov <juri@jurta.org>
(append-to-register, prepend-to-register):
Call 2012-07-29 Juri Linkov <juri@jurta.org>
* simple.el (async-shell-command-buffer): New defcustom.
(shell-command): Use it. (Bug#4719)
@ -173,7 +800,7 @@
* progmodes/gdb-mi.el (gdb-place-breakpoints): Fix the call to
gdb-get-location.
2012-07-25 Leo Liu <sdl.web@gmail.com>
2012-07-28 Leo Liu <sdl.web@gmail.com>
* progmodes/cc-menus.el (cc-imenu-objc-function): Avoid leaving nil in
the alist (bug#12029).
@ -220,7 +847,7 @@
2012-07-27 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-mode-map): Added keybinding for
* progmodes/python.el (python-mode-map): Add keybinding for
run-python.
(python-shell-make-comint): Fix pop-to-buffer call.
(run-python): Autoload. New arg SHOW.
@ -236,8 +863,8 @@
2012-07-27 Tassilo Horn <tsdh@gnu.org>
* textmodes/reftex-vars.el (reftex-label-alist-builtin): Add
support for the lstlisting and minted environments, and for the
* textmodes/reftex-vars.el (reftex-label-alist-builtin):
Add support for the lstlisting and minted environments, and for the
ctable macro.
* textmodes/reftex.el (reftex-compile-variables): Also recognize
labels written in keyvals syntax.
@ -252,8 +879,8 @@
* makefile.w32-in ($(lisp)/calendar/cal-loaddefs.el)
($(lisp)/calendar/diary-loaddefs.el)
($(lisp)/calendar/hol-loaddefs.el, $(lisp)/mh-e/mh-loaddefs.el)
($(lisp)/net/tramp-loaddefs.el): Depend on update-subdirs. Fixes
failures in parallel bootstrap because subdirs.el is being
($(lisp)/net/tramp-loaddefs.el): Depend on update-subdirs.
Fixes failures in parallel bootstrap because subdirs.el is being
rewritten while the autoload files are built at the same time,
which needs to load subdirs.el.

View file

@ -1295,7 +1295,8 @@ aligner would have dealt with are."
(report (and (not func) align-large-region beg end
(>= (- end beg) align-large-region)))
(rule-index 1)
(rule-count (length rules)))
(rule-count (length rules))
markers)
(if (and align-indent-before-aligning real-beg end-mark)
(indent-region real-beg end-mark nil))
(while rules
@ -1315,14 +1316,14 @@ aligner would have dealt with are."
(thissep (if rulesep (cdr rulesep) separate))
same (eol 0)
search-start
group group-c
groups group-c
spacing spacing-c
tab-stop tab-stop-c
repeat repeat-c
valid valid-c
first
regions index
last-point b e
last-point
save-match-data
exclude-p
align-props)
@ -1386,7 +1387,7 @@ aligner would have dealt with are."
(when (or (not func)
(funcall func beg end rule))
(unwind-protect
(let (exclude-areas)
(let (rule-beg exclude-areas)
;; determine first of all where the exclusions
;; lie in this region
(when exclude-rules
@ -1451,11 +1452,10 @@ aligner would have dealt with are."
;; lookup the `group' attribute the first time
;; that we need it
(unless group-c
(setq group (or (cdr (assq 'group rule)) 1))
(if (listp group)
(setq first (car group))
(setq first group group (list group)))
(setq group-c t))
(setq groups (or (cdr (assq 'group rule)) 1))
(unless (listp groups)
(setq groups (list groups)))
(setq first (car groups)))
(unless spacing-c
(setq spacing (cdr (assq 'spacing rule))
@ -1464,19 +1464,19 @@ aligner would have dealt with are."
(unless tab-stop-c
(setq tab-stop
(let ((rule-ts (assq 'tab-stop rule)))
(if rule-ts
(cdr rule-ts)
(if (symbolp align-to-tab-stop)
(symbol-value align-to-tab-stop)
align-to-tab-stop)))
(cond (rule-ts
(cdr rule-ts))
((symbolp align-to-tab-stop)
(symbol-value align-to-tab-stop))
(t
align-to-tab-stop)))
tab-stop-c t))
;; test whether we have found a match on the same
;; line as a previous match
(if (> (point) eol)
(progn
(setq same nil)
(align--set-marker eol (line-end-position))))
(when (> (point) eol)
(setq same nil)
(align--set-marker eol (line-end-position)))
;; lookup the `repeat' attribute the first time
(or repeat-c
@ -1492,7 +1492,7 @@ aligner would have dealt with are."
;; match, and save the match-data, since either
;; the `valid' form, or the code that searches for
;; section separation, might alter it
(setq b (match-beginning first)
(setq rule-beg (match-beginning first)
save-match-data (match-data))
;; unless the `valid' attribute is set, and tells
@ -1504,15 +1504,13 @@ aligner would have dealt with are."
;; section. If so, we should align what we've
;; collected so far, and then begin collecting
;; anew for the next alignment section
(if (and last-point
(align-new-section-p last-point b
thissep))
(progn
(align-regions regions align-props
rule func)
(setq regions nil)
(setq align-props nil)))
(align--set-marker last-point b t)
(when (and last-point
(align-new-section-p last-point rule-beg
thissep))
(align-regions regions align-props rule func)
(setq regions nil)
(setq align-props nil))
(align--set-marker last-point rule-beg t)
;; restore the match data
(set-match-data save-match-data)
@ -1522,62 +1520,60 @@ aligner would have dealt with are."
(let ((excls exclude-areas))
(setq exclude-p nil)
(while excls
(if (and (< (match-beginning (car group))
(if (and (< (match-beginning (car groups))
(cdar excls))
(> (match-end (car (last group)))
(> (match-end (car (last groups)))
(caar excls)))
(setq exclude-p t
excls nil)
(setq excls (cdr excls)))))
;; go through the list of parenthesis groups
;; matching whitespace text to be
;; contracted/expanded (or possibly
;; justified, if the `justify' attribute was
;; set)
;; go through the parenthesis groups
;; matching whitespace to be contracted or
;; expanded (or possibly justified, if the
;; `justify' attribute was set)
(unless exclude-p
(let ((g group))
(while g
;; we have to use markers, since
;; `align-areas' may modify the buffer
(setq b (copy-marker
(match-beginning (car g)) t)
e (copy-marker (match-end (car g)) t))
;; record this text region for alignment
(dolist (g groups)
;; We must use markers, since
;; `align-areas' may modify the buffer.
;; Avoid polluting the markers.
(let* ((group-beg (copy-marker
(match-beginning g) t))
(group-end (copy-marker
(match-end g) t))
(region (cons group-beg group-end))
(props (cons (if (listp spacing)
(car spacing)
spacing)
(if (listp tab-stop)
(car tab-stop)
tab-stop))))
(push group-beg markers)
(push group-end markers)
(setq index (if same (1+ index) 0))
(let ((region (cons b e))
(props (cons
(if (listp spacing)
(car spacing)
spacing)
(if (listp tab-stop)
(car tab-stop)
tab-stop))))
(if (nth index regions)
(setcar (nthcdr index regions)
(cons region
(nth index regions)))
(if regions
(progn
(nconc regions
(list (list region)))
(nconc align-props (list props)))
(setq regions
(list (list region)))
(setq align-props (list props)))))
;; if any further rule matches are
;; found before `eol', then they are
;; on the same line as this one; this
;; can only happen if the `repeat'
;; attribute is non-nil
(if (listp spacing)
(setq spacing (cdr spacing)))
(if (listp tab-stop)
(setq tab-stop (cdr tab-stop)))
(setq same t g (cdr g))))
(cond
((nth index regions)
(setcar (nthcdr index regions)
(cons region
(nth index regions))))
(regions
(nconc regions
(list (list region)))
(nconc align-props (list props)))
(t
(setq regions
(list (list region)))
(setq align-props (list props)))))
;; If any further rule matches are found
;; before `eol', they are on the same
;; line as this one; this can only
;; happen if the `repeat' attribute is
;; non-nil.
(if (listp spacing)
(setq spacing (cdr spacing)))
(if (listp tab-stop)
(setq tab-stop (cdr tab-stop)))
(setq same t))
;; if `repeat' has not been set, move to
;; the next line; don't bother searching
@ -1598,6 +1594,11 @@ aligner would have dealt with are."
(setq case-fold-search current-case-fold)))))))
(setq rules (cdr rules)
rule-index (1+ rule-index)))
;; This function can use a lot of temporary markers, so instead of
;; waiting for the next GC we delete them immediately (Bug#10047).
(set-marker end-mark nil)
(dolist (m markers)
(set-marker m nil))
(if report
(message "Aligning...done"))))

View file

@ -1415,7 +1415,7 @@ their settings before allout-mode was started."
;;;_ = allout-exposure-change-functions
(define-obsolete-variable-alias 'allout-exposure-change-hook
'allout-exposure-change-functions "24.2")
'allout-exposure-change-functions "24.3")
(defcustom allout-exposure-change-functions nil
"Abnormal hook run after allout outline subtree exposure changes.
It is run at the conclusion of `allout-flag-region'.
@ -1429,11 +1429,11 @@ Functions on the hook must take three arguments:
This hook might be invoked multiple times by a single command."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-structure-added-functions
(define-obsolete-variable-alias 'allout-structure-added-hook
'allout-structure-added-functions "24.2")
'allout-structure-added-functions "24.3")
(defcustom allout-structure-added-functions nil
"Abnormal hook run after adding items to an Allout outline.
Functions on the hook should take two arguments:
@ -1444,11 +1444,11 @@ Functions on the hook should take two arguments:
This hook might be invoked multiple times by a single command."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-structure-deleted-functions
(define-obsolete-variable-alias 'allout-structure-deleted-hook
'allout-structure-deleted-functions "24.2")
'allout-structure-deleted-functions "24.3")
(defcustom allout-structure-deleted-functions nil
"Abnormal hook run after deleting subtrees from an Allout outline.
Functions on the hook must take two arguments:
@ -1462,11 +1462,11 @@ specifically edits that native allout routines do not control.
This hook might be invoked multiple times by a single command."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-structure-shifted-functions
(define-obsolete-variable-alias 'allout-structure-shifted-hook
'allout-structure-shifted-functions "24.2")
'allout-structure-shifted-functions "24.3")
(defcustom allout-structure-shifted-functions nil
"Abnormal hook run after shifting items in an Allout outline.
Functions on the hook should take two arguments:
@ -1480,14 +1480,14 @@ that native allout routines do not control.
This hook might be invoked multiple times by a single command."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-after-copy-or-kill-hook
(defcustom allout-after-copy-or-kill-hook nil
"Normal hook run after copying outline text.."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-post-undo-hook
(defcustom allout-post-undo-hook nil
@ -1496,7 +1496,7 @@ The item that's current when the hook is run *may* be the one
that was affected by the undo.."
:type 'hook
:group 'allout
:version "24.2")
:version "24.3")
;;;_ = allout-outside-normal-auto-fill-function
(defvar allout-outside-normal-auto-fill-function nil
@ -5312,11 +5312,11 @@ Examples:
Expose children and grandchildren of first topic at current
level, and expose children of subsequent topics at current
level *except* for the last, which should be opened completely."
(list 'save-excursion
'(if (not (or (allout-goto-prefix-doublechecked)
(allout-next-heading)))
(error "allout-new-exposure: Can't find any outline topics"))
(list 'allout-expose-topic (list 'quote spec))))
`(save-excursion
(if (not (or (allout-goto-prefix-doublechecked)
(allout-next-heading)))
(error "allout-new-exposure: Can't find any outline topics"))
(allout-expose-topic ',spec)))
;;;_ #7 Systematic outline presentation -- copying, printing, flattening

View file

@ -83,7 +83,7 @@
"Translating SGR control sequences to faces.
This translation effectively colorizes strings and regions based upon
SGR control sequences embedded in the text. SGR (Select Graphic
Rendition) control sequences are defined in section 3.8.117 of the
Rendition) control sequences are defined in section 8.3.117 of the
ECMA-48 standard \(identical to ISO/IEC 6429), which is freely available
as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>."
:version "21.1"
@ -236,9 +236,10 @@ This is a good function to put in `comint-output-filter-functions'."
;; Working with strings
(defvar ansi-color-context nil
"Context saved between two calls to `ansi-color-apply'.
This is a list of the form (FACES FRAGMENT) or nil. FACES is a list of
faces the last call to `ansi-color-apply' ended with, and FRAGMENT is a
string starting with an escape sequence, possibly the start of a new
This is a list of the form (CODES FRAGMENT) or nil. CODES
represents the state the last call to `ansi-color-apply' ended
with, currently a list of ansi codes, and FRAGMENT is a string
starting with an escape sequence, possibly the start of a new
escape sequence.")
(make-variable-buffer-local 'ansi-color-context)
@ -270,6 +271,20 @@ This function can be added to `comint-preoutput-filter-functions'."
(setq ansi-color-context (if fragment (list nil fragment))))
result))
(defun ansi-color--find-face (codes)
"Return the face corresponding to CODES."
(let (faces)
(while codes
(let ((face (ansi-color-get-face-1 (pop codes))))
;; In the (default underline) face, say, the value of the
;; "underline" attribute of the `default' face wins.
(unless (eq face 'default)
(push face faces))))
;; Avoid some long-lived conses in the common case.
(if (cdr faces)
(nreverse faces)
(car faces))))
(defun ansi-color-apply (string)
"Translates SGR control sequences into text properties.
Delete all other control sequences without processing them.
@ -280,12 +295,12 @@ are given in `ansi-color-faces-vector' and `ansi-color-names-vector'.
See function `ansi-color-apply-sequence' for details.
Every call to this function will set and use the buffer-local variable
`ansi-color-context' to save partial escape sequences and current face.
`ansi-color-context' to save partial escape sequences and current ansi codes.
This information will be used for the next call to `ansi-color-apply'.
Set `ansi-color-context' to nil if you don't want this.
This function can be added to `comint-preoutput-filter-functions'."
(let ((face (car ansi-color-context))
(let ((codes (car ansi-color-context))
(start 0) end escape-sequence result
colorized-substring)
;; If context was saved and is a string, prepend it.
@ -296,8 +311,8 @@ This function can be added to `comint-preoutput-filter-functions'."
(while (setq end (string-match ansi-color-regexp string start))
(setq escape-sequence (match-string 1 string))
;; Colorize the old block from start to end using old face.
(when face
(put-text-property start end 'font-lock-face face string))
(when codes
(put-text-property start end 'font-lock-face (ansi-color--find-face codes) string))
(setq colorized-substring (substring string start end)
start (match-end 0))
;; Eliminate unrecognized ANSI sequences.
@ -306,10 +321,10 @@ This function can be added to `comint-preoutput-filter-functions'."
(replace-match "" nil nil colorized-substring)))
(push colorized-substring result)
;; Create new face, by applying escape sequence parameters.
(setq face (ansi-color-apply-sequence escape-sequence face)))
(setq codes (ansi-color-apply-sequence escape-sequence codes)))
;; if the rest of the string should have a face, put it there
(when face
(put-text-property start (length string) 'font-lock-face face string))
(when codes
(put-text-property start (length string) 'font-lock-face (ansi-color--find-face codes) string))
;; save context, add the remainder of the string to the result
(let (fragment)
(if (string-match "\033" string start)
@ -317,17 +332,18 @@ This function can be added to `comint-preoutput-filter-functions'."
(setq fragment (substring string pos))
(push (substring string start pos) result))
(push (substring string start) result))
(setq ansi-color-context (if (or face fragment) (list face fragment))))
(setq ansi-color-context (if (or codes fragment) (list codes fragment))))
(apply 'concat (nreverse result))))
;; Working with regions
(defvar ansi-color-context-region nil
"Context saved between two calls to `ansi-color-apply-on-region'.
This is a list of the form (FACES MARKER) or nil. FACES is a list of
faces the last call to `ansi-color-apply-on-region' ended with, and
MARKER is a buffer position within an escape sequence or the last
position processed.")
This is a list of the form (CODES MARKER) or nil. CODES
represents the state the last call to `ansi-color-apply-on-region'
ended with, currently a list of ansi codes, and MARKER is a
buffer position within an escape sequence or the last position
processed.")
(make-variable-buffer-local 'ansi-color-context-region)
(defun ansi-color-filter-region (begin end)
@ -365,13 +381,14 @@ between BEGIN and END, using overlays. The colors used are given
in `ansi-color-faces-vector' and `ansi-color-names-vector'. See
`ansi-color-apply-sequence' for details.
Every call to this function will set and use the buffer-local variable
`ansi-color-context-region' to save position and current face. This
information will be used for the next call to
`ansi-color-apply-on-region'. Specifically, it will override BEGIN, the
start of the region and set the face with which to start. Set
`ansi-color-context-region' to nil if you don't want this."
(let ((face (car ansi-color-context-region))
Every call to this function will set and use the buffer-local
variable `ansi-color-context-region' to save position and current
ansi codes. This information will be used for the next call to
`ansi-color-apply-on-region'. Specifically, it will override
BEGIN, the start of the region and set the face with which to
start. Set `ansi-color-context-region' to nil if you don't want
this."
(let ((codes (car ansi-color-context-region))
(start-marker (or (cadr ansi-color-context-region)
(copy-marker begin)))
(end-marker (copy-marker end))
@ -388,28 +405,27 @@ start of the region and set the face with which to start. Set
;; Colorize the old block from start to end using old face.
(funcall ansi-color-apply-face-function
start-marker (match-beginning 0)
face)
(ansi-color--find-face codes))
;; store escape sequence and new start position
(setq escape-sequence (match-string 1)
start-marker (copy-marker (match-end 0)))
;; delete the escape sequence
(replace-match "")
;; create new face by applying all the parameters in the escape
;; sequence
(setq face (ansi-color-apply-sequence escape-sequence face)))
;; Update the list of ansi codes.
(setq codes (ansi-color-apply-sequence escape-sequence codes)))
;; search for the possible start of a new escape sequence
(if (re-search-forward "\033" end-marker t)
(progn
;; if the rest of the region should have a face, put it there
(funcall ansi-color-apply-face-function
start-marker (point) face)
;; save face and point
start-marker (point) (ansi-color--find-face codes))
;; save codes and point
(setq ansi-color-context-region
(list face (copy-marker (match-beginning 0)))))
(list codes (copy-marker (match-beginning 0)))))
;; if the rest of the region should have a face, put it there
(funcall ansi-color-apply-face-function
start-marker end-marker face)
(setq ansi-color-context-region (if face (list face)))))))
start-marker end-marker (ansi-color--find-face codes))
(setq ansi-color-context-region (if codes (list codes)))))))
(defun ansi-color-apply-overlay-face (beg end face)
"Make an overlay from BEG to END, and apply face FACE.
@ -497,32 +513,56 @@ XEmacs uses `set-extent-face', Emacs uses `overlay-put'."
;; Helper functions
(defun ansi-color-apply-sequence (escape-sequence faces)
"Apply ESCAPE-SEQ to FACES and return the new list of faces.
(defsubst ansi-color-parse-sequence (escape-seq)
"Return the list of all the parameters in ESCAPE-SEQ.
ESCAPE-SEQ is an escape sequences parsed by `ansi-color-get-face'.
ESCAPE-SEQ is a SGR control sequences such as \\033[34m. The parameter
34 is used by `ansi-color-get-face-1' to return a face definition.
If the new faces start with the symbol `default', then the new
faces are returned. If the faces start with something else,
they are appended to the front of the FACES list, and the new
list of faces is returned.
Returns nil only if there's no match for `ansi-color-parameter-regexp'."
(let ((i 0)
codes val)
(while (string-match ansi-color-parameter-regexp escape-seq i)
(setq i (match-end 0)
val (string-to-number (match-string 1 escape-seq) 10))
;; It so happens that (string-to-number "") => 0.
(push val codes))
(nreverse codes)))
If `ansi-color-get-face' returns nil, then we either got a
null-sequence, or we stumbled upon some garbage. In either
case we return nil."
(let ((new-faces (ansi-color-get-face escape-sequence)))
(cond ((null new-faces)
nil)
((eq (car new-faces) 'default)
(cdr new-faces))
(t
;; Like (append NEW-FACES FACES)
;; but delete duplicates in FACES.
(let ((modified-faces (copy-sequence faces)))
(dolist (face (nreverse new-faces))
(setq modified-faces (delete face modified-faces))
(push face modified-faces))
modified-faces)))))
(defun ansi-color-apply-sequence (escape-sequence codes)
"Apply ESCAPE-SEQ to CODES and return the new list of codes.
ESCAPE-SEQ is an escape sequence parsed by `ansi-color-parse-sequence'.
If the new codes resulting from ESCAPE-SEQ start with 0, then the
old codes are discarded and the remaining new codes are
processed. Otherwise, for each new code: if it is 21-25 or 27-29
delete appropriate parameters from the list of codes; any other
code that makes sense is added to the list of codes. Finally,
the so changed list of codes is returned."
(let ((new-codes (ansi-color-parse-sequence escape-sequence)))
(while new-codes
(setq codes
(let ((new (pop new-codes)))
(cond ((zerop new)
nil)
((or (<= new 20)
(>= new 30))
(if (memq new codes)
codes
(cons new codes)))
;; The standard says `21 doubly underlined' while
;; http://en.wikipedia.org/wiki/ANSI_escape_code claims
;; `21 Bright/Bold: off or Underline: Double'.
((/= new 26)
(remq (- new 20)
(cond ((= new 22)
(remq 1 codes))
((= new 25)
(remq 6 codes))
(t codes))))
(t codes)))))
codes))
(defun ansi-color-make-color-map ()
"Creates a vector of face definitions and returns it.
@ -588,28 +628,6 @@ ANSI-CODE is used as an index into the vector."
(aref ansi-color-map ansi-code)
(args-out-of-range nil)))
(defun ansi-color-get-face (escape-seq)
"Create a new face by applying all the parameters in ESCAPE-SEQ.
Should any of the parameters result in the default face (usually this is
the parameter 0), then the effect of all previous parameters is canceled.
ESCAPE-SEQ is a SGR control sequences such as \\033[34m. The parameter
34 is used by `ansi-color-get-face-1' to return a face definition."
(let ((i 0)
f val)
(while (string-match ansi-color-parameter-regexp escape-seq i)
(setq i (match-end 0)
val (ansi-color-get-face-1
(string-to-number (match-string 1 escape-seq) 10)))
(cond ((not val))
((eq val 'default)
(setq f (list val)))
(t
(unless (member val f)
(push val f)))))
f))
(provide 'ansi-color)
;;; ansi-color.el ends here

View file

@ -88,44 +88,44 @@ include key-binding information in its output."
'((t (:inherit bold)))
"Face for the symbol name in Apropos output."
:group 'apropos
:version "24.2")
:version "24.3")
(defface apropos-keybinding
'((t (:inherit underline)))
"Face for lists of keybinding in Apropos output."
:group 'apropos
:version "24.2")
:version "24.3")
(defface apropos-property
'((t (:inherit font-lock-builtin-face)))
"Face for property name in apropos output, or nil for none."
:group 'apropos
:version "24.2")
:version "24.3")
(defface apropos-function-button
'((t (:inherit (font-lock-function-name-face button))))
"Button face indicating a function, macro, or command in Apropos."
:group 'apropos
:version "24.2")
:version "24.3")
(defface apropos-variable-button
'((t (:inherit (font-lock-variable-name-face button))))
"Button face indicating a variable in Apropos."
:group 'apropos
:version "24.2")
:version "24.3")
(defface apropos-misc-button
'((t (:inherit (font-lock-constant-face button))))
"Button face indicating a miscellaneous object type in Apropos."
:group 'apropos
:version "24.2")
:version "24.3")
(defcustom apropos-match-face 'match
"Face for matching text in Apropos documentation/value, or nil for none.
This applies when you look for matches in the documentation or variable value
for the pattern; the part that matches gets displayed in this font."
:group 'apropos
:version "24.2")
:version "24.3")
(defcustom apropos-sort-by-scores nil
"Non-nil means sort matches by scores; best match is shown first.

View file

@ -40,8 +40,7 @@ corresponding to the mode line clicked."
(interactive "e")
(save-selected-window
(select-window (posn-window (event-start event)))
(toggle-read-only nil t)
(force-mode-line-update)))
(call-interactively 'toggle-read-only)))
(defun mode-line-toggle-modified (event)
"Toggle the buffer-modified flag from the mode-line."
@ -144,7 +143,7 @@ message to display when the mouse is moved over the mode line.
If the text at the mouse position has a `help-echo' text
property, that overrides this variable."
:type '(choice (const :tag "No help" :value nil) string)
:version "24.2"
:version "24.3"
:group 'mode-line)
(defvar mode-line-front-space '(:eval (if (display-graphic-p) " " "-"))
@ -793,7 +792,7 @@ if `inhibit-field-text-motion' is non-nil."
(define-key ctl-x-map "\C-o" 'delete-blank-lines)
(define-key esc-map " " 'just-one-space)
(define-key esc-map "z" 'zap-to-char)
(define-key esc-map "=" 'count-words)
(define-key esc-map "=" 'count-words-region)
(define-key ctl-x-map "=" 'what-cursor-position)
(define-key esc-map ":" 'eval-expression)
;; Define ESC ESC : like ESC : for people who type ESC ESC out of habit.

View file

@ -277,8 +277,8 @@ through a file easier.")
(defvar bookmark-current-buffer nil
"The buffer in which a bookmark is currently being set or renamed.
Functions that insert strings into the minibuffer use this to know
the source buffer for that information; see `bookmark-yank-word' and
`bookmark-insert-current-bookmark' for example.")
the source buffer for that information; see `bookmark-yank-word'
for example.")
(defvar bookmark-yank-point 0
@ -473,6 +473,12 @@ equivalently just return ALIST without NAME.")
(defun bookmark-make-record ()
"Return a new bookmark record (NAME . ALIST) for the current location."
(let ((record (funcall bookmark-make-record-function)))
;; Set up defaults.
(bookmark-prop-set
record 'defaults
(delq nil (delete-dups (append (bookmark-prop-get record 'defaults)
(list bookmark-current-bookmark
(bookmark-buffer-name))))))
;; Set up default name.
(if (stringp (car record))
;; The function already provided a default name.
@ -738,10 +744,6 @@ This expects to be called from `point-min' in a bookmark file."
(let ((map (make-sparse-keymap)))
(set-keymap-parent map minibuffer-local-map)
(define-key map "\C-w" 'bookmark-yank-word)
;; This C-u binding might not be very useful any more now that we
;; provide access to the default via the standard M-n binding.
;; Maybe we should just remove it? --Stef-08
(define-key map "\C-u" 'bookmark-insert-current-bookmark)
map))
;;;###autoload
@ -772,7 +774,19 @@ the list of bookmarks.)"
(interactive (list nil current-prefix-arg))
(unwind-protect
(let* ((record (bookmark-make-record))
(default (car record)))
;; `defaults' is a transient element of the
;; extensible format described above in the section
;; `File format stuff'. Bookmark record functions
;; can use it to specify a list of default values
;; accessible via M-n while reading a bookmark name.
(defaults (bookmark-prop-get record 'defaults))
(default (if (consp defaults) (car defaults) defaults)))
(if defaults
;; Don't store default values in the record.
(setq record (assq-delete-all 'defaults record))
;; When no defaults in the record, use its first element.
(setq defaults (car record) default defaults))
(bookmark-maybe-load-default-file)
;; Don't set `bookmark-yank-point' and `bookmark-current-buffer'
@ -788,7 +802,7 @@ the list of bookmarks.)"
(format "Set bookmark (%s): " default)
nil
bookmark-minibuffer-read-name-map
nil nil default))))
nil nil defaults))))
(and (string-equal str "") (setq str default))
(bookmark-store str (cdr record) no-overwrite)
@ -888,18 +902,6 @@ Lines beginning with `#' are ignored."
(bookmark-edit-annotation-mode bookmark-name-or-record))
(defun bookmark-insert-current-bookmark ()
"Insert into the bookmark name currently being set the value of
`bookmark-current-bookmark' in `bookmark-current-buffer', defaulting
to the buffer's file name if `bookmark-current-bookmark' is nil."
(interactive)
(let ((str
(with-current-buffer bookmark-current-buffer
(or bookmark-current-bookmark
(bookmark-buffer-name)))))
(insert str)))
(defun bookmark-buffer-name ()
"Return the name of the current buffer in a form usable as a bookmark name.
If the buffer is associated with a file or directory, use that name."

View file

@ -962,7 +962,7 @@ Default is `bs--current-sort-function'."
Uses function `toggle-read-only'."
(interactive)
(with-current-buffer (bs--current-buffer)
(toggle-read-only))
(call-interactively 'toggle-read-only))
(bs--update-current-line))
(defun bs-clear-modified ()

View file

@ -57,23 +57,23 @@ the name column is assigned width `Buffer-menu-buffer+size-width'
minus `Buffer-menu-size-width'. This use is deprecated."
:type 'number
:group 'Buffer-menu
:version "24.2")
:version "24.3")
(make-obsolete-variable 'Buffer-menu-buffer+size-width
"`Buffer-menu-name-width' and `Buffer-menu-size-width'"
"24.2")
"24.3")
(defcustom Buffer-menu-name-width 19
"Width of buffer size column in the Buffer Menu."
:type 'number
:group 'Buffer-menu
:version "24.2")
:version "24.3")
(defcustom Buffer-menu-size-width 7
"Width of buffer name column in the Buffer Menu."
:type 'number
:group 'Buffer-menu
:version "24.2")
:version "24.3")
(defcustom Buffer-menu-mode-width 16
"Width of mode name column in the Buffer Menu."
@ -518,10 +518,10 @@ The current window remains selected."
"Toggle read-only status of buffer on this line.
This behaves like invoking \\[toggle-read-only] in that buffer."
(interactive)
(let (read-only)
(with-current-buffer (Buffer-menu-buffer t)
(toggle-read-only)
(setq read-only buffer-read-only))
(let ((read-only
(with-current-buffer (Buffer-menu-buffer t)
(call-interactively 'toggle-read-only)
buffer-read-only)))
(tabulated-list-set-col 1 (if read-only "%" " ") t)))
(defun Buffer-menu-bury ()

View file

@ -70,7 +70,7 @@ opinions.
Summary of changes to "Calc"
------- -- ------- -- ----
Emacs 24.2
Emacs 24.3
Algebraic simplification mode is now the default.
To restrict to the limited simplifications given by the former

View file

@ -1997,51 +1997,36 @@ calc-kill calc-kill-region calc-yank))))
(cache-val (intern (concat (symbol-name name) "-cache")))
(last-prec (intern (concat (symbol-name name) "-last-prec")))
(last-val (intern (concat (symbol-name name) "-last"))))
(list 'progn
; (list 'defvar cache-prec (if init (math-numdigs (nth 1 init)) -100))
(list 'defvar cache-prec
`(cond
((consp ,init) (math-numdigs (nth 1 ,init)))
(,init
(nth 1 (math-numdigs (eval ,init))))
(t
-100)))
(list 'defvar cache-val
`(cond
((consp ,init) ,init)
(,init (eval ,init))
(t ,init)))
(list 'defvar last-prec -100)
(list 'defvar last-val nil)
(list 'setq 'math-cache-list
(list 'cons
(list 'quote cache-prec)
(list 'cons
(list 'quote last-prec)
'math-cache-list)))
(list 'defun
name ()
(list 'or
(list '= last-prec 'calc-internal-prec)
(list 'setq
last-val
(list 'math-normalize
(list 'progn
(list 'or
(list '>= cache-prec
'calc-internal-prec)
(list 'setq
cache-val
(list 'let
'((calc-internal-prec
(+ calc-internal-prec
4)))
form)
cache-prec
'(+ calc-internal-prec 2)))
cache-val))
last-prec 'calc-internal-prec))
last-val))))
`(progn
; (defvar ,cache-prec ,(if init (math-numdigs (nth 1 init)) -100))
(defvar ,cache-prec (cond
((consp ,init) (math-numdigs (nth 1 ,init)))
(,init
(nth 1 (math-numdigs (eval ,init))))
(t
-100)))
(defvar ,cache-val (cond ((consp ,init) ,init)
(,init (eval ,init))
(t ,init)))
(defvar ,last-prec -100)
(defvar ,last-val nil)
(setq math-cache-list
(cons ',cache-prec
(cons ',last-prec
math-cache-list)))
(defun ,name ()
(or (= ,last-prec calc-internal-prec)
(setq ,last-val
(math-normalize
(progn (or (>= ,cache-prec calc-internal-prec)
(setq ,cache-val
(let ((calc-internal-prec
(+ calc-internal-prec 4)))
,form)
,cache-prec (+ calc-internal-prec 2)))
,cache-val))
,last-prec calc-internal-prec))
,last-val))))
(put 'math-defcache 'lisp-indent-hook 2)
;;; Betcha didn't know that pi = 16 atan(1/5) - 4 atan(1/239). [F] [Public]

View file

@ -1201,6 +1201,63 @@
:keys "v ."
:style toggle
:selected (not calc-full-vectors)]
(list "Simplification"
["No simplification mode"
(progn
(require 'calc-mode)
(calc-no-simplify-mode t))
:keys "m O"
:style radio
:selected (eq calc-simplify-mode 'none)
:help "No simplifications are done automatically"]
["Numeric simplification mode"
(progn
(require 'calc-mode)
(calc-num-simplify-mode t))
:keys "m N"
:style radio
:selected (eq calc-simplify-mode 'num)
:help "Only numeric simplifications are done automatically"]
["Basic simplification mode"
(progn
(require 'calc-mode)
(calc-basic-simplify-mode t))
:keys "m I"
:style radio
:selected (eq calc-simplify-mode nil)
:help "Only basic simplifications are done automatically"]
["Binary simplification mode"
(progn
(require 'calc-mode)
(calc-bin-simplify-mode t))
:keys "m B"
:style radio
:selected (eq calc-simplify-mode 'binary)
:help "Basic simplifications with binary clipping are done automatically"]
["Algebraic simplification mode"
(progn
(require 'calc-mode)
(calc-alg-simplify-mode t))
:keys "m A"
:style radio
:selected (eq calc-simplify-mode 'alg)
:help "Standard algebraic simplifications are done automatically"]
["Extended simplification mode"
(progn
(require 'calc-mode)
(calc-ext-simplify-mode t))
:keys "m E"
:style radio
:selected (eq calc-simplify-mode 'ext)
:help "Extended (unsafe) simplifications are done automatically"]
["Units simplification mode"
(progn
(require 'calc-mode)
(calc-units-simplify-mode t))
:keys "m U"
:style radio
:selected (eq calc-simplify-mode 'units)
:help "Algebraic and unit simplifications are done automatically"])
(list "Angle Measure"
["Radians"
(progn
@ -1412,6 +1469,45 @@
:style radio
:selected (eq calc-algebraic-mode 'total)
:help "All regular letters and punctuation begin algebraic entry"])
(list "Matrix"
["Off"
(progn
(require 'calc-mode)
(calc-matrix-mode -1))
:style radio
:selected (eq calc-matrix-mode nil)
:help "Variables are not assumed to be matrix or scalar"]
["Matrix mode"
(progn
(require 'calc-mode)
(calc-matrix-mode -2))
:style radio
:selected (eq calc-matrix-mode 'matrix)
:help "Variables are assumed to be matrices"]
["Square matrix mode"
(progn
(require 'calc-mode)
(calc-matrix-mode '(4)))
:style radio
:selected (eq calc-matrix-mode 'sqmatrix)
:help "Variables are assumed to be square matrices"]
["Dimensioned matrix mode"
(let ((dim (string-to-number (read-from-minibuffer "Dimension: "))))
(if (natnump dim)
(progn
(require 'calc-mode)
(calc-matrix-mode dim))
(error "The dimension must be a positive integer")))
:style radio
:selected (and (integerp calc-matrix-mode) (> calc-matrix-mode 0))
:help "Variables are assumed to be NxN matrices"]
["Scalar mode"
(progn
(require 'calc-mode)
(calc-matrix-mode 0))
:style radio
:selected (eq calc-matrix-mode 'scalar)
:help "Variables are assumed to be scalars"])
(list "Language"
["Normal"
(progn

View file

@ -305,7 +305,8 @@ Calc user interface as before (either C-x * C or C-x * K; initially C-x * C).
(string-match "\\`\\*" (car stuff)))
(setq stuff (cons '* (cons (substring (car stuff) 1)
(cdr stuff)))))))
(setq calc-next-why (cons stuff calc-next-why))
(unless (member stuff calc-next-why)
(setq calc-next-why (cons stuff calc-next-why)))
nil)
;; True if A is a constant or vector of constants. [P x] [Public]

View file

@ -497,11 +497,11 @@
(defun calc-set-simplify-mode (mode arg msg)
(calc-change-mode 'calc-simplify-mode
(if arg
(and (> (prefix-numeric-value arg) 0)
mode)
(and (not (eq calc-simplify-mode mode))
mode)))
(cond
(arg mode)
((eq calc-simplify-mode mode)
'alg)
(t mode)))
(message "%s" (if (eq calc-simplify-mode mode)
msg
"Algebraic simplification occurs by default")))

View file

@ -1792,89 +1792,63 @@ Redefine the corresponding command."
(defun math-do-defmath (func args body)
(require 'calc-macs)
(let* ((fname (intern (concat "calcFunc-" (symbol-name func))))
(doc (if (stringp (car body)) (list (car body))))
(doc (if (stringp (car body))
(prog1 (list (car body))
(setq body (cdr body)))))
(clargs (mapcar 'math-clean-arg args))
(body (math-define-function-body
(if (stringp (car body)) (cdr body) body)
clargs)))
(list 'progn
(if (and (consp (car body))
(eq (car (car body)) 'interactive))
(let ((inter (car body)))
(setq body (cdr body))
(if (or (> (length inter) 2)
(integerp (nth 1 inter)))
(let ((hasprefix nil) (hasmulti nil))
(if (stringp (nth 1 inter))
(progn
(cond ((equal (nth 1 inter) "p")
(setq hasprefix t))
((equal (nth 1 inter) "m")
(setq hasmulti t))
(t (error
"Can't handle interactive code string \"%s\""
(nth 1 inter))))
(setq inter (cdr inter))))
(if (not (integerp (nth 1 inter)))
(error
"Expected an integer in interactive specification"))
(append (list 'defun
(intern (concat "calc-"
(symbol-name func)))
(if (or hasprefix hasmulti)
'(&optional n)
()))
doc
(if (or hasprefix hasmulti)
'((interactive "P"))
'((interactive)))
(list
(append
'(calc-slow-wrapper)
(and hasmulti
(list
(list 'setq
'n
(list 'if
'n
(list 'prefix-numeric-value
'n)
(nth 1 inter)))))
(list
(list 'calc-enter-result
(if hasmulti 'n (nth 1 inter))
(nth 2 inter)
(if hasprefix
(list 'append
(list 'quote (list fname))
(list 'calc-top-list-n
(nth 1 inter))
(list 'and
'n
(list
'list
(list
'math-normalize
(list
'prefix-numeric-value
'n)))))
(list 'cons
(list 'quote fname)
(list 'calc-top-list-n
(if hasmulti
'n
(nth 1 inter)))))))))))
(append (list 'defun
(intern (concat "calc-" (symbol-name func)))
args)
doc
(list
inter
(cons 'calc-wrapper body))))))
(append (list 'defun fname clargs)
doc
(math-do-arg-list-check args nil nil)
body))))
(inter (if (and (consp (car body))
(eq (car (car body)) 'interactive))
(prog1 (car body)
(setq body (cdr body))))))
(setq body (math-define-function-body body clargs))
`(progn
,(if inter
(if (or (> (length inter) 2)
(integerp (nth 1 inter)))
(let ((hasprefix nil) (hasmulti nil))
(when (stringp (nth 1 inter))
(cond ((equal (nth 1 inter) "p")
(setq hasprefix t))
((equal (nth 1 inter) "m")
(setq hasmulti t))
(t (error
"Can't handle interactive code string \"%s\""
(nth 1 inter))))
(setq inter (cdr inter)))
(unless (integerp (nth 1 inter))
(error "Expected an integer in interactive specification"))
`(defun ,(intern (concat "calc-" (symbol-name func)))
,(if (or hasprefix hasmulti) '(&optional n) ())
,@doc
(interactive ,@(if (or hasprefix hasmulti) '("P")))
(calc-slow-wrapper
,@(if hasmulti
`((setq n (if n
(prefix-numeric-value n)
,(nth 1 inter)))))
(calc-enter-result
,(if hasmulti 'n (nth 1 inter))
,(nth 2 inter)
,(if hasprefix
`(append '(,fname)
(calc-top-list-n ,(nth 1 inter))
(and n
(list
(math-normalize
(prefix-numeric-value n)))))
`(cons ',fname
(calc-top-list-n
,(if hasmulti
'n
(nth 1 inter)))))))))
`(defun ,(intern (concat "calc-" (symbol-name func))) ,clargs
,@doc
,inter
(calc-wrapper ,@body))))
(defun ,fname ,clargs
,@doc
,@(math-do-arg-list-check args nil nil)
,@body))))
(defun math-clean-arg (arg)
(if (consp arg)
@ -1887,56 +1861,42 @@ Redefine the corresponding command."
(list (cons 'and
(cons var
(if (cdr chk)
(setq chk (list (cons 'progn chk)))
`((progn ,@chk))
chk)))))
(and (consp arg)
(let* ((rest (math-do-arg-check (nth 1 arg) var is-opt is-rest))
(qual (car arg))
(qqual (list 'quote qual))
(qual-name (symbol-name qual))
(chk (intern (concat "math-check-" qual-name))))
(if (fboundp chk)
(append rest
(list
(when (consp arg)
(let* ((rest (math-do-arg-check (nth 1 arg) var is-opt is-rest))
(qual (car arg))
(qual-name (symbol-name qual))
(chk (intern (concat "math-check-" qual-name))))
(if (fboundp chk)
(append rest
(if is-rest
`((setq ,var (mapcar ',chk ,var)))
`((setq ,var (,chk ,var)))))
(if (fboundp (setq chk (intern (concat "math-" qual-name))))
(append rest
(if is-rest
`((mapcar #'(lambda (x)
(or (,chk x)
(math-reject-arg x ',qual)))
,var))
`((or (,chk ,var)
(math-reject-arg ,var ',qual)))))
(if (and (string-match "\\`not-\\(.*\\)\\'" qual-name)
(fboundp (setq chk (intern
(concat "math-"
(math-match-substring
qual-name 1))))))
(append rest
(if is-rest
(list 'setq var
(list 'mapcar (list 'quote chk) var))
(list 'setq var (list chk var)))))
(if (fboundp (setq chk (intern (concat "math-" qual-name))))
(append rest
(list
(if is-rest
(list 'mapcar
(list 'function
(list 'lambda '(x)
(list 'or
(list chk 'x)
(list 'math-reject-arg
'x qqual))))
var)
(list 'or
(list chk var)
(list 'math-reject-arg var qqual)))))
(if (and (string-match "\\`not-\\(.*\\)\\'" qual-name)
(fboundp (setq chk (intern
(concat "math-"
(math-match-substring
qual-name 1))))))
(append rest
(list
(if is-rest
(list 'mapcar
(list 'function
(list 'lambda '(x)
(list 'and
(list chk 'x)
(list 'math-reject-arg
'x qqual))))
var)
(list 'and
(list chk var)
(list 'math-reject-arg var qqual)))))
(error "Unknown qualifier `%s'" qual-name))))))))
`((mapcar #'(lambda (x)
(and (,chk x)
(math-reject-arg x ',qual)))
,var))
`((and
(,chk ,var)
(math-reject-arg ,var ',qual)))))
(error "Unknown qualifier `%s'" qual-name))))))))
(defun math-do-arg-list-check (args is-opt is-rest)
(cond ((null args) nil)
@ -1980,7 +1940,7 @@ Redefine the corresponding command."
(defun math-define-function-body (body env)
(let ((body (math-define-body body env)))
(if (math-body-refers-to body 'math-return)
(list (cons 'catch (cons '(quote math-return) body)))
`((catch 'math-return ,@body))
body)))
;; The variable math-exp-env is local to math-define-body, but is

View file

@ -1439,21 +1439,19 @@
(put 'calcFunc-vxor 'math-rewrite-default '(vec))
(defmacro math-rwfail (&optional back)
(list 'setq 'pc
(list 'and
(if back
'(setq btrack (cdr btrack))
'btrack)
''((backtrack)))))
`(setq pc (and ,(if back
'(setq btrack (cdr btrack))
'btrack)
'((backtrack)))))
;; This monstrosity is necessary because the use of static vectors of
;; registers makes rewrite rules non-reentrant. Yucko!
(defmacro math-rweval (form)
(list 'let '((orig (car rules)))
'(setcar rules (quote (nil nil nil no-phase)))
(list 'unwind-protect
form
'(setcar rules orig))))
`(let ((orig (car rules)))
(setcar rules '(nil nil nil no-phase))
(unwind-protect
,form
(setcar rules orig))))
(defvar math-rewrite-phase 1)

View file

@ -404,7 +404,7 @@ If EXPR is nil, return nil."
(math-composition-to-string cexpr))))))
(defvar math-default-units-table
(make-hash-table :test 'equal)
#s(hash-table test equal data (1 (1)))
"A table storing previously converted units.")
(defun math-get-default-units (expr)
@ -418,22 +418,24 @@ If EXPR is nil, return nil."
(math-make-unit-string (cadr default-units))
(math-make-unit-string (car default-units)))))
(defun math-put-default-units (expr)
"Put the units in EXPR in the default units table."
(let ((units (math-get-units expr)))
(unless (eq units 1)
(let* ((standard-units (math-get-standard-units expr))
(default-units (gethash
standard-units
math-default-units-table)))
(cond
((not default-units)
(puthash standard-units (list units) math-default-units-table))
((not (equal units (car default-units)))
(puthash standard-units
(list units (car default-units))
math-default-units-table)))))))
(defun math-put-default-units (expr &optional comp std)
"Put the units in EXPR in the default units table.
If COMP or STD is non-nil, put that in the units table instead."
(let* ((new-units (or comp std (math-get-units expr)))
(standard-units (math-get-standard-units
(cond
(comp (math-simplify-units expr))
(std expr)
(t new-units))))
(default-units (gethash standard-units math-default-units-table)))
(unless (eq standard-units 1)
(cond
((not default-units)
(puthash standard-units (list new-units) math-default-units-table))
((not (equal new-units (car default-units)))
(puthash standard-units
(list new-units (car default-units))
math-default-units-table))))))
(defun calc-convert-units (&optional old-units new-units)
(interactive)
@ -457,47 +459,48 @@ If EXPR is nil, return nil."
(when (eq (car-safe uold) 'error)
(error "Bad format in units expression: %s" (nth 1 uold)))
(setq expr (math-mul expr uold))))
(unless new-units
(setq defunits (math-get-default-units expr))
(setq new-units
(read-string (concat
(if uoldname
(concat "Old units: "
uoldname
", new units")
"New units")
(if defunits
(concat
" (default "
defunits
"): ")
": "))))
(if (and
(string= new-units "")
defunits)
(setq new-units defunits)))
(when (string-match "\\` */" new-units)
(setq new-units (concat "1" new-units)))
(setq units (math-read-expr new-units))
(when (eq (car-safe units) 'error)
(error "Bad format in units expression: %s" (nth 2 units)))
(if calc-ensure-consistent-units
(math-check-unit-consistency expr units))
(math-put-default-units units)
(let ((unew (math-units-in-expr-p units t))
(std (and (eq (car-safe units) 'var)
(assq (nth 1 units) math-standard-units-systems))))
(if std
(calc-enter-result 1 "cvun" (math-simplify-units
(math-to-standard-units expr
(nth 1 std))))
(unless unew
(setq defunits (math-get-default-units expr))
(if (equal defunits "1")
(progn
(calc-enter-result 1 "cvun" (math-simplify-units expr))
(message "All units in expression cancel"))
(unless new-units
(setq new-units
(read-string (concat
(if uoldname
(concat "Old units: "
uoldname
", new units")
"New units")
(if defunits
(concat
" (default "
defunits
"): ")
": "))))
(if (and
(string= new-units "")
defunits)
(setq new-units defunits)))
(when (string-match "\\` */" new-units)
(setq new-units (concat "1" new-units)))
(setq units (math-read-expr new-units))
(when (eq (car-safe units) 'error)
(error "Bad format in units expression: %s" (nth 2 units)))
(if calc-ensure-consistent-units
(math-check-unit-consistency expr units))
(let ((unew (math-units-in-expr-p units t))
(std (and (eq (car-safe units) 'var)
(assq (nth 1 units) math-standard-units-systems)))
(comp (eq (car-safe units) '+)))
(unless (or unew std)
(error "No units specified"))
(calc-enter-result 1 "cvun"
(math-convert-units
expr units
(and uoldname (not (equal uoldname "1"))))))))))
(let ((res
(if std
(math-simplify-units (math-to-standard-units expr (nth 1 std)))
(math-convert-units expr units (and uoldname (not (equal uoldname "1")))))))
(math-put-default-units res (if comp units))
(calc-enter-result 1 "cvun" res)))))))
(defun calc-autorange-units (arg)
(interactive "P")

View file

@ -667,21 +667,18 @@
(defvar math-integral-limit)
(defmacro math-tracing-integral (&rest parts)
(list 'and
'trace-buffer
(list 'with-current-buffer
'trace-buffer
'(goto-char (point-max))
(list 'and
'(bolp)
'(insert (make-string (- math-integral-limit
math-integ-level) 32)
(format "%2d " math-integ-depth)
(make-string math-integ-level 32)))
;;(list 'condition-case 'err
(cons 'insert parts)
;; '(error (insert (prin1-to-string err))))
'(sit-for 0))))
`(and trace-buffer
(with-current-buffer trace-buffer
(goto-char (point-max))
(and (bolp)
(insert (make-string (- math-integral-limit
math-integ-level) 32)
(format "%2d " math-integ-depth)
(make-string math-integ-level 32)))
;;(condition-case err
(insert ,@parts)
;; (error (insert (prin1-to-string err))))
(sit-for 0))))
;;; The following wrapper caches results and avoids infinite recursion.
;;; Each cache entry is: ( A B ) Integral of A is B;

View file

@ -86,8 +86,11 @@
(setq sn (math-to-underscores sn)))
sn)))
(defun math-compose-expr (a prec)
(let ((math-compose-level (1+ math-compose-level))
;;; Give multiplication precendence when composing to avoid
;;; writing a*(b c) instead of a b c
(defun math-compose-expr (a prec &optional div)
(let ((calc-multiplication-has-precedence t)
(math-compose-level (1+ math-compose-level))
(math-expr-opers (math-expr-ops))
spfn)
(cond
@ -591,7 +594,9 @@
(or (= (length a) 3) (eq (car a) 'calcFunc-if))
(/= (nth 3 op) -1))
(cond
((> prec (or (nth 4 op) (min (nth 2 op) (nth 3 op))))
((or
(> prec (or (nth 4 op) (min (nth 2 op) (nth 3 op))))
(and div (eq (car a) '*)))
(if (and (memq calc-language '(tex latex))
(not (math-tex-expr-is-flat a)))
(if (eq (car-safe a) '/)
@ -631,7 +636,7 @@
nil)
math-compose-level))
(lhs (math-compose-expr (nth 1 a) (nth 2 op)))
(rhs (math-compose-expr (nth 2 a) (nth 3 op))))
(rhs (math-compose-expr (nth 2 a) (nth 3 op) (eq (nth 1 op) '/))))
(and (equal (car op) "^")
(eq (math-comp-first-char lhs) ?-)
(setq lhs (list 'horiz "(" lhs ")")))

View file

@ -68,7 +68,7 @@
(defcustom cal-html-holidays t
"If non-nil, include holidays as well as diary entries."
:version "24.2"
:version "24.3"
:type 'boolean
:group 'calendar-html)
@ -92,7 +92,7 @@
"</STYLE>\n\n")
"Default cal-html css style. You can override this with a \"cal.css\" file."
:type 'string
:version "24.2" ; added SPAN.HOLIDAY
:version "24.3" ; added SPAN.HOLIDAY
:group 'calendar-html)
;;; End customizable variables.

View file

@ -239,7 +239,7 @@ This definition is the heart of the calendar!")
(autoload 'holiday-in-range "holidays")
(define-obsolete-function-alias 'cal-tex-list-holidays 'holiday-in-range "24.2")
(define-obsolete-function-alias 'cal-tex-list-holidays 'holiday-in-range "24.3")
(autoload 'diary-list-entries "diary-lib")

View file

@ -268,7 +268,7 @@ The time is bracketed by <> if you are clocked in, otherwise by [].")
;;; User Functions:
(define-obsolete-function-alias 'timeclock-modeline-display
'timeclock-mode-line-display "24.2")
'timeclock-mode-line-display "24.3")
;;;###autoload
(defun timeclock-mode-line-display (&optional arg)
@ -649,7 +649,7 @@ arguments of `completing-read'."
(mapcar 'list timeclock-reason-list)))
(define-obsolete-function-alias 'timeclock-update-modeline
'timeclock-update-mode-line "24.2")
'timeclock-update-mode-line "24.3")
(defun timeclock-update-mode-line ()
"Update the `timeclock-mode-string' displayed in the mode line.

View file

@ -1,3 +1,7 @@
2012-08-07 Andreas Schwab <schwab@linux-m68k.org>
* ede/base.el (ede-with-projectfile): Use backquote forms.
2012-07-29 Paul Eggert <eggert@cs.ucla.edu>
inaccessable -> inaccessible spelling fix (Bug#10052)

View file

@ -285,22 +285,18 @@ All specific project types must derive from this project."
;;
(defmacro ede-with-projectfile (obj &rest forms)
"For the project in which OBJ resides, execute FORMS."
(list 'save-window-excursion
(list 'let* (list
(list 'pf
(list 'if (list 'obj-of-class-p
obj 'ede-target)
;; @todo -I think I can change
;; this to not need ede-load-project-file
;; but I'm not sure how to test well.
(list 'ede-load-project-file
(list 'oref obj 'path))
obj))
'(dbka (get-file-buffer (oref pf file))))
'(if (not dbka) (find-file (oref pf file))
(switch-to-buffer dbka))
(cons 'progn forms)
'(if (not dbka) (kill-buffer (current-buffer))))))
`(save-window-excursion
(let* ((pf (if (obj-of-class-p ,obj ede-target)
;; @todo -I think I can change
;; this to not need ede-load-project-file
;; but I'm not sure how to test well.
(ede-load-project-file (oref ,obj path))
,obj))
(dbka (get-file-buffer (oref pf file))))
(if (not dbka) (find-file (oref pf file))
(switch-to-buffer dbka))
,@forms
(if (not dbka) (kill-buffer (current-buffer))))))
(put 'ede-with-projectfile 'lisp-indent-function 1)
;;; The EDE persistent cache.

View file

@ -1,4 +1,4 @@
;;; color.el --- Color manipulation library -*- coding: utf-8; -*-
;;; color.el --- Color manipulation library -*- coding: utf-8; lexical-binding:t -*-
;; Copyright (C) 2010-2012 Free Software Foundation, Inc.
@ -85,7 +85,7 @@ resulting list."
(g-step (/ (- (nth 1 stop) g) (1+ step-number)))
(b-step (/ (- (nth 2 stop) b) (1+ step-number)))
result)
(dotimes (n step-number)
(dotimes (_ step-number)
(push (list (setq r (+ r r-step))
(setq g (+ g g-step))
(setq b (+ b b-step)))
@ -226,44 +226,44 @@ RED, BLUE and GREEN must be between 0 and 1, inclusive."
"Convert CIE XYZ to CIE L*a*b*.
WHITE-POINT specifies the (X Y Z) white point for the
conversion. If omitted or nil, use `color-d65-xyz'."
(destructuring-bind (Xr Yr Zr) (or white-point color-d65-xyz)
(let* ((xr (/ X Xr))
(yr (/ Y Yr))
(zr (/ Z Zr))
(fx (if (> xr color-cie-ε)
(expt xr (/ 1 3.0))
(/ (+ (* color-cie-κ xr) 16) 116.0)))
(fy (if (> yr color-cie-ε)
(expt yr (/ 1 3.0))
(/ (+ (* color-cie-κ yr) 16) 116.0)))
(fz (if (> zr color-cie-ε)
(expt zr (/ 1 3.0))
(/ (+ (* color-cie-κ zr) 16) 116.0))))
(list
(- (* 116 fy) 16) ; L
(* 500 (- fx fy)) ; a
(* 200 (- fy fz)))))) ; b
(pcase-let* ((`(,Xr ,Yr ,Zr) (or white-point color-d65-xyz))
(xr (/ X Xr))
(yr (/ Y Yr))
(zr (/ Z Zr))
(fx (if (> xr color-cie-ε)
(expt xr (/ 1 3.0))
(/ (+ (* color-cie-κ xr) 16) 116.0)))
(fy (if (> yr color-cie-ε)
(expt yr (/ 1 3.0))
(/ (+ (* color-cie-κ yr) 16) 116.0)))
(fz (if (> zr color-cie-ε)
(expt zr (/ 1 3.0))
(/ (+ (* color-cie-κ zr) 16) 116.0))))
(list
(- (* 116 fy) 16) ; L
(* 500 (- fx fy)) ; a
(* 200 (- fy fz))))) ; b
(defun color-lab-to-xyz (L a b &optional white-point)
"Convert CIE L*a*b* to CIE XYZ.
WHITE-POINT specifies the (X Y Z) white point for the
conversion. If omitted or nil, use `color-d65-xyz'."
(destructuring-bind (Xr Yr Zr) (or white-point color-d65-xyz)
(let* ((fy (/ (+ L 16) 116.0))
(fz (- fy (/ b 200.0)))
(fx (+ (/ a 500.0) fy))
(xr (if (> (expt fx 3.0) color-cie-ε)
(expt fx 3.0)
(/ (- (* fx 116) 16) color-cie-κ)))
(yr (if (> L (* color-cie-κ color-cie-ε))
(expt (/ (+ L 16) 116.0) 3.0)
(/ L color-cie-κ)))
(zr (if (> (expt fz 3) color-cie-ε)
(expt fz 3.0)
(/ (- (* 116 fz) 16) color-cie-κ))))
(list (* xr Xr) ; X
(* yr Yr) ; Y
(* zr Zr))))) ; Z
(pcase-let* ((`(,Xr ,Yr ,Zr) (or white-point color-d65-xyz))
(fy (/ (+ L 16) 116.0))
(fz (- fy (/ b 200.0)))
(fx (+ (/ a 500.0) fy))
(xr (if (> (expt fx 3.0) color-cie-ε)
(expt fx 3.0)
(/ (- (* fx 116) 16) color-cie-κ)))
(yr (if (> L (* color-cie-κ color-cie-ε))
(expt (/ (+ L 16) 116.0) 3.0)
(/ L color-cie-κ)))
(zr (if (> (expt fz 3) color-cie-ε)
(expt fz 3.0)
(/ (- (* 116 fz) 16) color-cie-κ))))
(list (* xr Xr) ; X
(* yr Yr) ; Y
(* zr Zr)))) ; Z
(defun color-srgb-to-lab (red green blue)
"Convert RGB to CIE L*a*b*."
@ -277,67 +277,72 @@ conversion. If omitted or nil, use `color-d65-xyz'."
"Return the CIEDE2000 color distance between COLOR1 and COLOR2.
Both COLOR1 and COLOR2 should be in CIE L*a*b* format, as
returned by `color-srgb-to-lab' or `color-xyz-to-lab'."
(destructuring-bind (L a b) color1
(destructuring-bind (L a b) color2
(let* ((kL (or kL 1))
(kC (or kC 1))
(kH (or kH 1))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
( (/ (+ C C) 2.0))
(G (* 0.5 (- 1 (sqrt (/ (expt 7.0) (+ (expt 7.0) (expt 25 7.0)))))))
(a (* (+ 1 G) a))
(a (* (+ 1 G) a))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(h (if (and (= b 0) (= a 0))
0
(let ((v (atan b a)))
(if (< v 0)
(+ v (* 2 float-pi))
v))))
(h (if (and (= b 0) (= a 0))
0
(let ((v (atan b a)))
(if (< v 0)
(+ v (* 2 float-pi))
v))))
(ΔL (- L L))
(ΔC (- C C))
(Δh (cond ((= (* C C) 0)
0)
((<= (abs (- h h)) float-pi)
(- h h))
((> (- h h) float-pi)
(- (- h h) (* 2 float-pi)))
((< (- h h) (- float-pi))
(+ (- h h) (* 2 float-pi)))))
(ΔH (* 2 (sqrt (* C C)) (sin (/ Δh 2.0))))
( (/ (+ L L) 2.0))
( (/ (+ C C) 2.0))
( (cond ((= (* C C) 0)
(+ h h))
((<= (abs (- h h)) float-pi)
(/ (+ h h) 2.0))
((< (+ h h) (* 2 float-pi))
(/ (+ h h (* 2 float-pi)) 2.0))
((>= (+ h h) (* 2 float-pi))
(/ (+ h h (* -2 float-pi)) 2.0))))
(T (+ 1
(- (* 0.17 (cos (- (degrees-to-radians 30)))))
(* 0.24 (cos (* 2)))
(* 0.32 (cos (+ (* 3) (degrees-to-radians 6))))
(- (* 0.20 (cos (- (* 4) (degrees-to-radians 63)))))))
(Δθ (* (degrees-to-radians 30) (exp (- (expt (/ (- (degrees-to-radians 275)) (degrees-to-radians 25)) 2.0)))))
(Rc (* 2 (sqrt (/ (expt 7.0) (+ (expt 7.0) (expt 25.0 7.0))))))
(Sl (+ 1 (/ (* 0.015 (expt (- 50) 2.0)) (sqrt (+ 20 (expt (- 50) 2.0))))))
(Sc (+ 1 (* 0.045)))
(Sh (+ 1 (* 0.015 T)))
(Rt (- (* (sin (* Δθ 2)) Rc))))
(pcase-let*
((`(,L ,a ,b) color1)
(`(,L ,a ,b) color2)
(kL (or kL 1))
(kC (or kC 1))
(kH (or kH 1))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
( (/ (+ C C) 2.0))
(G (* 0.5 (- 1 (sqrt (/ (expt 7.0)
(+ (expt 7.0) (expt 25 7.0)))))))
(a (* (+ 1 G) a))
(a (* (+ 1 G) a))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(C (sqrt (+ (expt a 2.0) (expt b 2.0))))
(h (if (and (= b 0) (= a 0))
0
(let ((v (atan b a)))
(if (< v 0)
(+ v (* 2 float-pi))
v))))
(h (if (and (= b 0) (= a 0))
0
(let ((v (atan b a)))
(if (< v 0)
(+ v (* 2 float-pi))
v))))
(ΔL (- L L))
(ΔC (- C C))
(Δh (cond ((= (* C C) 0)
0)
((<= (abs (- h h)) float-pi)
(- h h))
((> (- h h) float-pi)
(- (- h h) (* 2 float-pi)))
((< (- h h) (- float-pi))
(+ (- h h) (* 2 float-pi)))))
(ΔH (* 2 (sqrt (* C C)) (sin (/ Δh 2.0))))
( (/ (+ L L) 2.0))
( (/ (+ C C) 2.0))
( (cond ((= (* C C) 0)
(+ h h))
((<= (abs (- h h)) float-pi)
(/ (+ h h) 2.0))
((< (+ h h) (* 2 float-pi))
(/ (+ h h (* 2 float-pi)) 2.0))
((>= (+ h h) (* 2 float-pi))
(/ (+ h h (* -2 float-pi)) 2.0))))
(T (+ 1
(- (* 0.17 (cos (- (degrees-to-radians 30)))))
(* 0.24 (cos (* 2)))
(* 0.32 (cos (+ (* 3) (degrees-to-radians 6))))
(- (* 0.20 (cos (- (* 4) (degrees-to-radians 63)))))))
(Δθ (* (degrees-to-radians 30)
(exp (- (expt (/ (- (degrees-to-radians 275))
(degrees-to-radians 25)) 2.0)))))
(Rc (* 2 (sqrt (/ (expt 7.0) (+ (expt 7.0) (expt 25.0 7.0))))))
(Sl (+ 1 (/ (* 0.015 (expt (- 50) 2.0))
(sqrt (+ 20 (expt (- 50) 2.0))))))
(Sc (+ 1 (* 0.045)))
(Sh (+ 1 (* 0.015 T)))
(Rt (- (* (sin (* Δθ 2)) Rc))))
(sqrt (+ (expt (/ ΔL (* Sl kL)) 2.0)
(expt (/ ΔC (* Sc kC)) 2.0)
(expt (/ ΔH (* Sh kH)) 2.0)
(* Rt (/ ΔC (* Sc kC)) (/ ΔH (* Sh kH)))))))))
(* Rt (/ ΔC (* Sc kC)) (/ ΔH (* Sh kH)))))))
(defun color-clamp (value)
"Make sure VALUE is a number between 0.0 and 1.0 inclusive."

View file

@ -3046,7 +3046,7 @@ See `comint-word'."
(defun comint--unquote-argument (str)
(car (comint--unquote&requote-argument str)))
(define-obsolete-function-alias 'comint--unquote&expand-filename
#'comint--unquote-argument "24.2")
#'comint--unquote-argument "24.3")
(defun comint-match-partial-filename ()
"Return the unquoted&expanded filename at point, or nil if none is found.
@ -3073,7 +3073,7 @@ Magic characters are those in `comint-file-name-quote-list'."
filename
(save-match-data
(replace-regexp-in-string "\\\\\\(.\\)" "\\1" filename t))))
(make-obsolete 'comint-unquote-filename nil "24.2")
(make-obsolete 'comint-unquote-filename nil "24.3")
(defun comint--requote-argument (upos qstr)
;; See `completion-table-with-quoting'.

View file

@ -1541,7 +1541,7 @@ that option."
This button will have a menu with all three reset operations."
:type 'boolean
:group 'custom-buffer
:version "24.2")
:version "24.3")
(defcustom custom-buffer-verbose-help t
"If non-nil, include explanatory text in the customization buffer."

View file

@ -204,7 +204,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(delete-by-moving-to-trash auto-save boolean "23.1")
(auto-save-visited-file-name auto-save boolean)
;; filelock.c
(create-lockfiles files boolean "24.2")
(create-lockfiles files boolean "24.3")
(temporary-file-directory
;; Darwin section added 24.1, does not seem worth :version bump.
files directory nil

View file

@ -611,7 +611,7 @@ property, or (ii) an alias for another customizable variable."
(or (get variable 'standard-value)
(get variable 'custom-autoload))))
(define-obsolete-function-alias 'user-variable-p 'custom-variable-p "24.2")
(define-obsolete-function-alias 'user-variable-p 'custom-variable-p "24.3")
(defun custom-note-var-changed (variable)
"Inform Custom that VARIABLE has been set (changed).

View file

@ -89,7 +89,8 @@ any selection."
;; head of the kill-ring that really comes from the
;; currently active region we are going to delete.
;; That would make yank a no-op.
(when (and (string= (buffer-substring-no-properties (point) (mark))
(when (and (string= (buffer-substring-no-properties
(point) (mark))
(car kill-ring))
(fboundp 'mouse-region-match)
(mouse-region-match))
@ -102,16 +103,15 @@ any selection."
(setq this-command 'ignore))))
(type
(delete-active-region)
(if (and overwrite-mode (eq this-command 'self-insert-command))
(if (and overwrite-mode
(eq this-command 'self-insert-command))
(let ((overwrite-mode nil))
(self-insert-command (prefix-numeric-value current-prefix-arg))
(self-insert-command
(prefix-numeric-value current-prefix-arg))
(setq this-command 'ignore)))))
(file-supersession
;; If ask-user-about-supersession-threat signals an error,
;; stop safe_run_hooks from clearing out pre-command-hook.
(and (eq inhibit-quit 'pre-command-hook)
(setq inhibit-quit 'delete-selection-dummy))
(signal 'file-supersession (cdr data)))
(file-supersession (message "%s" (cadr data)) (ding))
(text-read-only
;; This signal may come either from `delete-active-region' or
;; `self-insert-command' (when `overwrite-mode' is non-nil).

View file

@ -679,23 +679,17 @@ relevant to POS."
(when (cadr elt)
(insert (format formatter (car elt)))
(dolist (clm (cdr elt))
(if (eq (car-safe clm) 'insert-text-button)
(progn (insert " ") (eval clm))
(when (>= (+ (current-column)
(or (string-match-p "\n" clm)
(string-width clm))
1)
(window-width))
(insert "\n")
(indent-to (1+ max-width)))
(unless (zerop (length clm))
(insert " " clm))))
(cond ((eq (car-safe clm) 'insert-text-button)
(insert " ")
(eval clm))
((not (zerop (length clm)))
(insert " " clm))))
(insert "\n"))))
(when overlays
(save-excursion
(goto-char (point-min))
(re-search-forward "character:[ \t\n]+")
(re-search-forward "(displayed as ")
(let ((end (+ (point) (length char-description))))
(mapc (lambda (props)
(let ((o (make-overlay (point) end)))

View file

@ -1961,9 +1961,9 @@ If the current buffer can be edited with Wdired, (i.e. the major
mode is `dired-mode'), call `wdired-change-to-wdired-mode'.
Otherwise, call `toggle-read-only'."
(interactive)
(if (eq major-mode 'dired-mode)
(if (derived-mode-p 'dired-mode)
(wdired-change-to-wdired-mode)
(toggle-read-only nil t)))
(call-interactively 'toggle-read-only)))
(defun dired-next-line (arg)
"Move down lines then position at filename.
@ -3476,7 +3476,7 @@ The idea is to set this buffer-locally in special dired buffers.")
(force-mode-line-update)))
(define-obsolete-function-alias 'dired-sort-set-modeline
'dired-sort-set-mode-line "24.2")
'dired-sort-set-mode-line "24.3")
(defun dired-sort-toggle-or-edit (&optional arg)
"Toggle sorting by date, and refresh the Dired buffer.

Some files were not shown because too many files have changed in this diff Show more