mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 09:14:18 +00:00
upstream
This commit is contained in:
commit
b648c26ec6
349 changed files with 11970 additions and 7598 deletions
99
ChangeLog
99
ChangeLog
|
|
@ -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
22
INSTALL
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
2
README
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
)
|
||||
|
|
@ -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)
|
||||
)
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
1
autogen/aclocal.m4
vendored
|
|
@ -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])
|
||||
|
|
|
|||
|
|
@ -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
258
autogen/configure
vendored
|
|
@ -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
|
||||
|
|
|
|||
174
configure.ac
174
configure.ac
|
|
@ -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.])
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
78
etc/NEWS
78
etc/NEWS
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
2
etc/TODO
2
etc/TODO
|
|
@ -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 |
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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 ‎ 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
|
||||
("‌" ?\u200C) ;; (ucs-insert #x200C) named: فاصلهی مجازی
|
||||
("/" ?\u200C) ;;
|
||||
("/" ?\u200C) ;;
|
||||
("‍" ?\u200D) ;; (ucs-insert #x200D) named: اتصالِ مجازی
|
||||
("J" ?\u200D) ;;
|
||||
("J" ?\u200D) ;;
|
||||
("‎" ?\u200E) ;; (ucs-insert #x200E) named: نشانهی چپبهراست
|
||||
("‏" ?\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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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! */
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
3
lib/stat-time.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include <config.h>
|
||||
#define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE
|
||||
#include "stat-time.h"
|
||||
|
|
@ -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
3
lib/timespec.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include <config.h>
|
||||
#define _GL_TIMESPEC_INLINE _GL_EXTERN_INLINE
|
||||
#include "timespec.h"
|
||||
|
|
@ -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
3
lib/u64.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include <config.h>
|
||||
#define _GL_U64_INLINE _GL_EXTERN_INLINE
|
||||
#include "u64.h"
|
||||
27
lib/u64.h
27
lib/u64.h
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <config.h>
|
||||
|
||||
#define _GL_UTIMENS_INLINE _GL_EXTERN_INLINE
|
||||
#include "utimens.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
645
lisp/ChangeLog
645
lisp/ChangeLog
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
153
lisp/align.el
153
lisp/align.el
|
|
@ -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"))))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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 ()
|
||||
|
|
|
|||
|
|
@ -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 ()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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")))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 ")")))
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
191
lisp/color.el
191
lisp/color.el
|
|
@ -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₁ C₂) 2.0))
|
||||
(G (* 0.5 (- 1 (sqrt (/ (expt C̄ 7.0) (+ (expt C̄ 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₁ L₂) 2.0))
|
||||
(C̄′ (/ (+ C′₁ C′₂) 2.0))
|
||||
(h̄′ (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 (- h̄′ (degrees-to-radians 30)))))
|
||||
(* 0.24 (cos (* h̄′ 2)))
|
||||
(* 0.32 (cos (+ (* h̄′ 3) (degrees-to-radians 6))))
|
||||
(- (* 0.20 (cos (- (* h̄′ 4) (degrees-to-radians 63)))))))
|
||||
(Δθ (* (degrees-to-radians 30) (exp (- (expt (/ (- h̄′ (degrees-to-radians 275)) (degrees-to-radians 25)) 2.0)))))
|
||||
(Rc (* 2 (sqrt (/ (expt C̄′ 7.0) (+ (expt C̄′ 7.0) (expt 25.0 7.0))))))
|
||||
(Sl (+ 1 (/ (* 0.015 (expt (- L̄′ 50) 2.0)) (sqrt (+ 20 (expt (- L̄′ 50) 2.0))))))
|
||||
(Sc (+ 1 (* C̄′ 0.045)))
|
||||
(Sh (+ 1 (* 0.015 C̄′ 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₁ C₂) 2.0))
|
||||
(G (* 0.5 (- 1 (sqrt (/ (expt C̄ 7.0)
|
||||
(+ (expt C̄ 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₁ L₂) 2.0))
|
||||
(C̄′ (/ (+ C′₁ C′₂) 2.0))
|
||||
(h̄′ (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 (- h̄′ (degrees-to-radians 30)))))
|
||||
(* 0.24 (cos (* h̄′ 2)))
|
||||
(* 0.32 (cos (+ (* h̄′ 3) (degrees-to-radians 6))))
|
||||
(- (* 0.20 (cos (- (* h̄′ 4) (degrees-to-radians 63)))))))
|
||||
(Δθ (* (degrees-to-radians 30)
|
||||
(exp (- (expt (/ (- h̄′ (degrees-to-radians 275))
|
||||
(degrees-to-radians 25)) 2.0)))))
|
||||
(Rc (* 2 (sqrt (/ (expt C̄′ 7.0) (+ (expt C̄′ 7.0) (expt 25.0 7.0))))))
|
||||
(Sl (+ 1 (/ (* 0.015 (expt (- L̄′ 50) 2.0))
|
||||
(sqrt (+ 20 (expt (- L̄′ 50) 2.0))))))
|
||||
(Sc (+ 1 (* C̄′ 0.045)))
|
||||
(Sh (+ 1 (* 0.015 C̄′ 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."
|
||||
|
|
|
|||
|
|
@ -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'.
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in a new issue