mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
merged from trunk
This commit is contained in:
commit
c05c21ed10
220
ChangeLog
220
ChangeLog
@ -1,3 +1,214 @@
|
||||
2010-06-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (install-arch-indep): Delete any old info .gz files first.
|
||||
|
||||
2010-06-11 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (--without-compress-info): New option.
|
||||
(GZIP_INFO): New output variable.
|
||||
|
||||
* Makefile.in (GZIP_INFO): New, set by configure.
|
||||
(install-arch-indep): Don't gzip info pages if GZIP_INFO is nil.
|
||||
Handle man pages in the same way.
|
||||
|
||||
2010-06-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (install-arch-indep): Gzip the info files too.
|
||||
|
||||
* make-dist: Remove references to non-existent directories and files.
|
||||
|
||||
2010-06-08 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in: Include <strings.h> and <string.h> instead of
|
||||
"strings.h" and "string.h".
|
||||
|
||||
2010-06-06 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in: Remove code dealing with BSTRING.
|
||||
|
||||
2010-06-03 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in (AC_PREREQ): Require autoconf 2.65.
|
||||
|
||||
* configure.in (unxec): Do not define and substitute.
|
||||
(UNEXEC_OBJ): New output variable, replaces cpp UNEXEC.
|
||||
|
||||
2010-06-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (AH_BOTTOM): Remove NOT_C_CODE test, it is always true.
|
||||
|
||||
2010-06-02 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
Fix alloca definition when using gcc on non-gnu systems.
|
||||
* configure.in: Use the code sequence indicated by "info autoconf"
|
||||
for alloca (bug#6170).
|
||||
|
||||
2010-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* .bzrignore: Ignore new files from trunk, which appear if you use
|
||||
colocated branches (i.e. "bzr switch").
|
||||
|
||||
2010-05-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in: Simplify some of the $canonical tests.
|
||||
|
||||
2010-05-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* config.bat: Do not preprocess src/Makefile.in.
|
||||
|
||||
* configure.in: Do not preprocess src/Makefile.in.
|
||||
(cpp_undefs, CPP_NEED_TRADITIONAL): Remove.
|
||||
(AC_EGREP_CPP): Test no longer needed.
|
||||
|
||||
* make-dist: No more Makefile.c files.
|
||||
|
||||
2010-05-26 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (YMF_PASS_LDFLAGS): Remove.
|
||||
(PRE_EDIT_LDFLAGS, POST_EDIT_LDFLAGS): New output variables.
|
||||
|
||||
* configure.in (CPPFLAGS, CFLAGS, REAL_CFLAGS):
|
||||
Add $GNUSTEP_LOCAL_HEADERS.
|
||||
(LDFLAGS, LD_SWITCH_SYSTEM_TEMACS): Add $GNUSTEP_LOCAL_LIBRARIES.
|
||||
|
||||
* configure.in (NS_IMPL_GNUSTEP_INC, NS_IMPL_GNUSTEP_TEMACS_LDFLAGS)
|
||||
(GNUSTEP_MAKEFILES): Remove.
|
||||
(LD_SWITCH_SYSTEM_TEMACS): Move NS_IMPL_GNUSTEP_TEMACS_LDFLAGS
|
||||
stuff to here.
|
||||
|
||||
2010-05-25 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (LD_SWITCH_SYSTEM): Move some gnu-linux stuff...
|
||||
(LD_SWITCH_SYSTEM_TEMACS): ... to here.
|
||||
|
||||
* configure.in (LD_SWITCH_SYSTEM_EXTRA): Remove.
|
||||
(LD_SWITCH_SYSTEM_TEMACS): Put darwin stuff from LD_SWITCH_SYSTEM_EXTRA
|
||||
here instead.
|
||||
|
||||
2010-05-24 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* make-dist: Look for version in src/emacs.c.
|
||||
Use lisp/subr.el rather than lisp/version.el for location check.
|
||||
|
||||
2010-05-21 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (MKDEPDIR): Parallel build tweak.
|
||||
|
||||
* configure.in (ns_frag): New output file.
|
||||
|
||||
* configure.in (OLDXMENU): Set to "nothing" if !HAVE_X11 || USE_GTK.
|
||||
(OLDXMENU_TARGET): Set to empty if USE_GTK.
|
||||
|
||||
* configure.in (cannot_dump): New output variable.
|
||||
|
||||
2010-05-20 enami tsugutomo <tsugutomo.enami@jp.sony.com>
|
||||
|
||||
* configure.in: On NetBSD, if terminfo is found, use it in
|
||||
preference to termcap. (Bug#6190)
|
||||
|
||||
2010-05-20 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* make-dist (src): Include *.mk.
|
||||
* config.bat: Concatenate deps.mk onto the end of src/Makefile.
|
||||
* configure.in (DEPFLAGS, MKDEPDIR): New output variables.
|
||||
(deps_frag): New output file.
|
||||
(AUTO_DEPEND): Remove this definition.
|
||||
|
||||
* configure.in (--with-gtk, --with-gcc): Remove option stubs.
|
||||
|
||||
2010-05-19 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (LINKER, YMF_PASS_LDFLAGS): New output variables.
|
||||
(ORDINARY_LINK): New AC_DEFINE.
|
||||
(LIB_GCC): No need to set if ORDINARY_LINK.
|
||||
|
||||
2010-05-18 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (POST_ALLOC_OBJ) [cygwin]: Omit vm-limit.o.
|
||||
(POST_ALLOC_OBJ) [!cygwin]: Set to empty.
|
||||
|
||||
* config.bat (RALLOC_OBJ): Edit to empty if sys_malloc.
|
||||
* configure.in (REL_ALLOC): Unset on gnu, gnu-linux if DOUG_LEA_MALLOC.
|
||||
(RALLOC_OBJ): New output variable.
|
||||
|
||||
* config.bat (GMALLOC_OBJ, VMLIMIT_OBJ): Edit to empty if sys_malloc.
|
||||
* configure.in (GMALLOC_OBJ, VMLIMIT_OBJ): New output variables.
|
||||
|
||||
2010-05-17 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* Makefile.in (src): Provide the name of the VCS file that witnesses
|
||||
a pull.
|
||||
($(srcdir)/src/config.in): Handle accidental removal of src/config.in.
|
||||
|
||||
2010-05-17 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (OLDXMENU_DEPS): New output variable.
|
||||
|
||||
2010-05-16 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (ns_appbindir, ns_appresdir): Set using $ns_appdir.
|
||||
|
||||
* configure.in (ns_appdir, ns_appbindir): Add trailing "/" to value.
|
||||
* Makefile.in (install-arch-dep): Update for above change.
|
||||
|
||||
* Makefile.in (ns_appdir): Remove.
|
||||
(install-arch-dep): Test $ns_appresdir instead of $ns_appdir.
|
||||
|
||||
* configure.in (TEMACS_LDFLAGS2): New output variable.
|
||||
|
||||
* configure.in (NS_IMPL_GNUSTEP_TEMACS_LDFLAGS): New output variable.
|
||||
(START_FILES): Set to empty if NS_IMPL_GNUSTEP.
|
||||
(GNUSTEP_SYSTEM_HEADERS, GNUSTEP_SYSTEM_LIBRARIES): Do not output,
|
||||
nothing uses.
|
||||
|
||||
2010-05-16 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in: Remove references to usg5-4 and bsd-common, $opsys
|
||||
does not use them.
|
||||
(X11R5_INHIBIT_I18N): Remove, unused.
|
||||
|
||||
2010-05-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (LIBXMENU): Set to empty if !HAVE_X_WINDOWS.
|
||||
|
||||
* configure.in (FONT_OBJ): Set to empty if !HAVE_X_WINDOWS.
|
||||
|
||||
2010-05-15 Ken Raeburn <raeburn@raeburn.org>
|
||||
|
||||
* configure.in: Look for version string in its new location.
|
||||
|
||||
2010-05-15 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* config.bat: Remove support for DJGPP v1.x.
|
||||
|
||||
2010-05-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (OLDXMENU_TARGET): New output variable.
|
||||
|
||||
* Makefile.in (install-arch-dep): Update odd NS rule for Emacs version.
|
||||
|
||||
* Makefile.in (install-arch-indep): Remove references to RCS, CVS,
|
||||
and other files that no longer exist.
|
||||
|
||||
2010-05-14 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (cpp_undefs): Add mktime, register, X11.
|
||||
|
||||
* configure.in (GPM_MOUSE_SUPPORT): Remove.
|
||||
(MOUSE_SUPPORT, TOOLTIP_SUPPORT, WINDOW_SUPPORT): New output variables.
|
||||
(HAVE_WINDOW_SYSTEM, HAVE_MOUSE): Move out of AC_BOTTOM.
|
||||
|
||||
* configure.in (NS_IMPL_GNUSTEP_INC): New output variable.
|
||||
(GNUSTEP_MAKEFILES): Do not output.
|
||||
|
||||
2010-05-13 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in: Fix some paren typos.
|
||||
|
||||
* configure.in (OLDXMENU, LIBXMENU): Set to empty if !HAVE_MENUS.
|
||||
|
||||
* configure.in (LD_SWITCH_X_SITE, C_SWITCH_X_SITE): Do not define.
|
||||
|
||||
2010-05-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.in (LIB_SRC_EXTRA_INSTALLABLES): Remove, unused.
|
||||
@ -1950,6 +2161,10 @@
|
||||
|
||||
Update copyright year(s) in many files.
|
||||
|
||||
2006-04-01 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2006-04-01 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
|
||||
|
||||
* configure.in (HAVE_XAW3D): Disable Xaw3d check if
|
||||
@ -3910,6 +4125,11 @@
|
||||
* make-dist: Unset EMACS_UNIBYTE, so Emacs runs in its default state.
|
||||
Quote $EMACS, in case it's a program with args.
|
||||
|
||||
1999-06-15 Gerd Moellmann <gerd@gnu.org>
|
||||
|
||||
* configure.in (HAVE_GIF): Use libungif instead of libgif
|
||||
because the former doesn't contain patented compression code.
|
||||
|
||||
1999-05-29 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* configure.in: Delete the Kerberos stuff.
|
||||
|
26
INSTALL
26
INSTALL
@ -1,6 +1,7 @@
|
||||
GNU Emacs Installation Guide
|
||||
Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
|
||||
2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
2005, 2006, 2007, 2008, 2009, 2010
|
||||
Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
@ -686,8 +687,8 @@ when running make in the subdirectories.
|
||||
|
||||
CONFIGURATION BY HAND
|
||||
|
||||
Instead of running the `configure' program, you have to perform the
|
||||
following steps.
|
||||
This should not be necessary and is not recommended. Instead of
|
||||
running the `configure' program, you have to perform the following steps.
|
||||
|
||||
1) Copy `./src/config.in' to `./src/config.h'.
|
||||
|
||||
@ -701,22 +702,15 @@ the appropriate system and architecture description files.
|
||||
2) Edit `./src/config.h' to set the right options for your system. If
|
||||
you need to override any of the definitions in the s/*.h and m/*.h
|
||||
files for your system and machine, do so by editing config.h, not by
|
||||
changing the s/*.h and m/*.h files. Occasionally you may need to
|
||||
redefine parameters used in `./lib-src/movemail.c'.
|
||||
changing the s/*.h and m/*.h files.
|
||||
|
||||
3) Create src/Makefile and lib-src/Makefile from the corresponding
|
||||
`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
|
||||
then edit in appropriate substitutions for the @...@ constructs,
|
||||
and then copy the shell commands near the end of `configure'
|
||||
that run cpp to construct `Makefile'.
|
||||
|
||||
4) Create `Makefile' files in various other directories
|
||||
from the corresponding `Makefile.in' files. This isn't so hard,
|
||||
just a matter of substitution.
|
||||
3) Create `Makefile' files in various directories from the
|
||||
corresponding `Makefile.in' files. This isn't so hard, just a matter
|
||||
of editing in appropriate substitutions for the @...@ constructs.
|
||||
|
||||
The `configure' script is built from `configure.in' by the `autoconf'
|
||||
program. You need version 2.51 or newer of `autoconf' to rebuild
|
||||
`configure'.
|
||||
program. You need at least the version of autoconf specified in the
|
||||
AC_PREREQ(...) command to rebuild `configure' from `configure.in'.
|
||||
|
||||
BUILDING GNU EMACS BY HAND
|
||||
|
||||
|
45
Makefile.in
45
Makefile.in
@ -164,7 +164,6 @@ VPATH=@srcdir@
|
||||
x_default_search_path=@x_default_search_path@
|
||||
|
||||
# Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
|
||||
ns_appdir=@ns_appdir@
|
||||
ns_appbindir=@ns_appbindir@
|
||||
ns_appresdir=@ns_appresdir@
|
||||
|
||||
@ -244,6 +243,8 @@ INSTALL_STRIP =
|
||||
|
||||
# We use gzip to compress installed .el files.
|
||||
GZIP_PROG = @GZIP_PROG@
|
||||
# If non-nil, gzip the installed Info and man pages.
|
||||
GZIP_INFO = @GZIP_INFO@
|
||||
|
||||
# ============================= Targets ==============================
|
||||
|
||||
@ -280,6 +281,9 @@ all: ${SUBDIR} leim
|
||||
removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
|
||||
|
||||
# Generate epaths.h from epaths.in. This target is invoked by `configure'.
|
||||
# See comments in configure.in for why it is done this way, as opposed
|
||||
# to just letting configure generate epaths.h from epaths.in in a
|
||||
# similar way to how Makefile is made from Makefile.in.
|
||||
epaths-force: FRC
|
||||
@(lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
|
||||
buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \
|
||||
@ -336,9 +340,13 @@ src: Makefile FRC
|
||||
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
|
||||
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \
|
||||
fi;
|
||||
if [ -r .bzr/checkout/dirstate ]; then \
|
||||
vcswitness="$$(pwd)/.bzr/checkout/dirstate"; \
|
||||
fi; \
|
||||
cd $@; $(MAKE) all $(MFLAGS) \
|
||||
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
|
||||
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS=""
|
||||
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="" \
|
||||
VCSWITNESS="$$vcswitness"
|
||||
|
||||
blessmail: Makefile src FRC
|
||||
cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
|
||||
@ -370,7 +378,11 @@ $(srcdir)/configure: $(AUTOCONF_INPUTS)
|
||||
cd ${srcdir} && autoconf
|
||||
|
||||
$(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
|
||||
@true
|
||||
@ # Usually, there's no need to rebuild src/config.in just
|
||||
@ # because stamp-h.in has changed (since building stamp-h.in
|
||||
@ # refreshes config.in as well), but if config.in is missing
|
||||
@ # then we really need to do something more.
|
||||
[ -r "$@" ] || ( cd ${srcdir} && autoheader )
|
||||
$(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
|
||||
cd ${srcdir} && autoheader
|
||||
rm -f $(srcdir)/src/stamp-h.in
|
||||
@ -418,17 +430,22 @@ install-arch-dep: mkdir
|
||||
${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \
|
||||
else true; fi ; \
|
||||
done
|
||||
if test "${ns_appdir}" != ""; then \
|
||||
if test "${ns_appresdir}" != ""; then \
|
||||
( cd ${ns_appresdir} ; \
|
||||
if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\
|
||||
if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \
|
||||
rm -fr share ) ; \
|
||||
( cd ${ns_appbindir}/libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
|
||||
( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
|
||||
rm -fr emacs ) ; \
|
||||
( cd ${ns_appbindir}/bin ; rm -f emacs emacs-23* ; \
|
||||
( cd ${ns_appbindir}bin ; rm -f emacs emacs-24* ; \
|
||||
ln -sf ../libexec/* .) ; \
|
||||
else true ; fi
|
||||
|
||||
## FIXME is the emacs-24* bit above really necessary and correct?
|
||||
## What if I have 24.1 and 24.2 installed at the same time?
|
||||
## In any case, it should use something like echo $version | sed 's/\..*//'
|
||||
## instead of hard-coding a version.
|
||||
|
||||
## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
|
||||
## Needs to be the user running install, so configure can't set it.
|
||||
set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
|
||||
@ -476,11 +493,8 @@ install-arch-indep: mkdir info install-etc
|
||||
| (cd $${dest}; umask 022; \
|
||||
tar -xvf - && cat > /dev/null) || exit 1; \
|
||||
find $${dest} -exec chown $${installuser} {} ';' ;\
|
||||
for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \
|
||||
for subdir in `find $${dest} -type d -print` ; do \
|
||||
chmod a+rx $${subdir} ; \
|
||||
rm -rf $${subdir}/RCS ; \
|
||||
rm -rf $${subdir}/CVS ; \
|
||||
rm -f $${subdir}/.cvsignore ; \
|
||||
rm -f $${subdir}/.gitignore ; \
|
||||
rm -f $${subdir}/.arch-inventory ; \
|
||||
rm -f $${subdir}/.DS_Store ; \
|
||||
@ -492,7 +506,6 @@ install-arch-indep: mkdir info install-etc
|
||||
rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \
|
||||
$${subdir}/[mM]akefile ; \
|
||||
rm -f $${subdir}/ChangeLog* ; \
|
||||
rm -f $${subdir}/dired.todo ; \
|
||||
done) ; \
|
||||
done
|
||||
-rm -f $(DESTDIR)${lispdir}/subdirs.el
|
||||
@ -569,6 +582,10 @@ install-arch-indep: mkdir info install-etc
|
||||
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
|
||||
${INSTALL_DATA} $$f $(DESTDIR)${infodir}/$$f; \
|
||||
chmod a+r $(DESTDIR)${infodir}/$$f; \
|
||||
if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
|
||||
rm -f $(DESTDIR)${infodir}/$$f.gz; \
|
||||
${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \
|
||||
else true; fi; \
|
||||
done; \
|
||||
done); \
|
||||
else true; fi
|
||||
@ -588,7 +605,11 @@ install-arch-indep: mkdir info install-etc
|
||||
for page in ${MAN_PAGES}; do \
|
||||
(cd $${thisdir}; \
|
||||
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
|
||||
chmod a+r $(DESTDIR)${man1dir}/$${page}); \
|
||||
chmod a+r $(DESTDIR)${man1dir}/$${page}; \
|
||||
if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
|
||||
rm -f $(DESTDIR)${man1dir}/$${page}.gz; \
|
||||
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \
|
||||
else true; fi ); \
|
||||
done
|
||||
|
||||
## Install those items from etc/ that need to end up elsewhere.
|
||||
|
@ -22,7 +22,9 @@ NS_IMPL_GNUSTEP Compile support for GNUstep implementation of NS GUI API.
|
||||
NS_IMPL_COCOA Compile support for Cocoa (Apple) implementation of NS GUI API.
|
||||
HAVE_X11 Compile support for the X11 GUI.
|
||||
HAVE_X_WINDOWS Compile support for X Window system
|
||||
X11 ?? Makefile.in suggests it's equivalent to HAVE_X11
|
||||
(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.)
|
||||
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.
|
||||
@ -47,7 +49,6 @@ subprocesses System can use subprocesses (for M-x shell for example). Define
|
||||
USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type instead of the default int.
|
||||
|
||||
** System specific macros, decribed in detail in src/s/template.h
|
||||
BSTRING
|
||||
CLASH_DETECTION
|
||||
COFF
|
||||
FIRST_PTY_LETTER
|
||||
@ -84,6 +85,9 @@ BCOPY_DOWNWARD_SAFE
|
||||
BCOPY_UPWARD_SAFE
|
||||
BITS_PER_EMACS_INT
|
||||
BITS_PER_LONG
|
||||
BITS_PER_CHAR
|
||||
BITS_PER_SHORT
|
||||
BITS_PER_INT
|
||||
BROKEN_DATAGRAM_SOCKETS
|
||||
BROKEN_FIONREAD
|
||||
BROKEN_GET_CURRENT_DIR_NAME
|
||||
@ -98,7 +102,6 @@ BSD4_2
|
||||
BSD4_3
|
||||
BSD_SYSTEM
|
||||
CLASH_DETECTION
|
||||
C_SWITCH_X_SYSTEM
|
||||
DATA_SEG_BITS
|
||||
DATA_START
|
||||
DBL_MIN_REPLACEMENT
|
||||
@ -114,7 +117,6 @@ EMACS_CONFIGURATION
|
||||
EMACS_CONFIG_OPTIONS
|
||||
EMACS_INT
|
||||
EMACS_UINT
|
||||
END_FILES_1
|
||||
FILE_SYSTEM_CASE
|
||||
FLOAT_CHECK_DOMAIN
|
||||
FSCALE
|
||||
@ -128,12 +130,10 @@ GNU_LIBRARY_PENDING_OUTPUT_COUNT
|
||||
GNU_LINUX
|
||||
GNU_MALLOC
|
||||
HAVE_AIX_SMT_EXP
|
||||
HAVE_ALLOCA
|
||||
HAVE_BCMP
|
||||
HAVE_BCOPY
|
||||
HAVE_CBRT
|
||||
HAVE_CLOSEDIR
|
||||
HAVE_CRTIN
|
||||
HAVE_DUP2
|
||||
HAVE_EUIDACCESS
|
||||
HAVE_FMOD
|
||||
@ -154,9 +154,6 @@ HAVE_INDEX
|
||||
HAVE_INET_SOCKETS
|
||||
HAVE_INVERSE_HYPERBOLIC
|
||||
HAVE_LIBKSTAT
|
||||
HAVE_LIBNCURSES
|
||||
HAVE_LIBPTHREADS
|
||||
HAVE_LIBXMU
|
||||
HAVE_LIMITS_H
|
||||
HAVE_LINUX_VERSION_H
|
||||
HAVE_LOGB
|
||||
@ -228,7 +225,6 @@ MIN_PTY_KERNEL_VERSION -- only used on Mac
|
||||
MODE_LINE_BINARY_TEXT
|
||||
MUST_UNDEF__STDC__
|
||||
NLIST_STRUCT
|
||||
NOT_C_CODE
|
||||
NO_ABORT
|
||||
NO_EDITRES
|
||||
NO_MATHERR
|
||||
@ -266,8 +262,6 @@ SIGQUIT
|
||||
SIGTRAP
|
||||
SIGTYPE
|
||||
SOLARIS2
|
||||
START_FILES
|
||||
START_FILES_1
|
||||
STDC_HEADERS
|
||||
SYMS_SYSTEM
|
||||
SYSTEM_PURESIZE_EXTRA
|
||||
@ -282,7 +276,6 @@ TIME_WITH_SYS_TIME
|
||||
TIOCSIGSEND
|
||||
TM_IN_SYS_TIME
|
||||
ULIMIT_BREAK_VALUE
|
||||
UNEXEC
|
||||
UNIX98_PTYS
|
||||
USE_CRT_DLL
|
||||
USE_TOOLKIT_SCROLL_BARS
|
||||
|
@ -1,3 +1,43 @@
|
||||
2010-06-12 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* unidata/bidimirror.awk: New file.
|
||||
|
||||
* unidata/BidiMirroring.txt: New file from
|
||||
http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt.
|
||||
|
||||
* unidata/Makefile.in: (../../src/bidimirror.h): New target.
|
||||
(all): Depend on ../../src/biditype.h and ../../src/bidimirror.h.
|
||||
|
||||
* unidata/makefile.w32-in (../../src/bidimirror.h): New target.
|
||||
(all): Depend on ../../src/biditype.h and ../../src/bidimirror.h.
|
||||
|
||||
* unidata/biditype.awk: New file.
|
||||
|
||||
* unidata/Makefile.in (../../src/biditype.h): New target.
|
||||
|
||||
* unidata/makefile.w32-in (../../src/biditype.h): New target.
|
||||
|
||||
2010-06-09 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* unidata/UnicodeData.txt: Update from
|
||||
http://www.unicode.org/Public/6.0.0/ucd/UnicodeData-6.0.0d5.txt
|
||||
|
||||
2010-05-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* quick-install-emacs (AVOID): No more Makefile.c files.
|
||||
|
||||
* notes/cpp: Remove file.
|
||||
|
||||
2010-05-15 Ken Raeburn <raeburn@raeburn.org>
|
||||
|
||||
* admin.el (set-version, set-copyright): Update emacs.c instead of
|
||||
version.el.
|
||||
|
||||
* make-tarball.txt: Update filename list in step 6.
|
||||
|
||||
* quick-install-emacs: Scan emacs.c instead of version.el for
|
||||
version string.
|
||||
|
||||
2010-05-07 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 23.2 released.
|
||||
|
@ -60,8 +60,8 @@ Root must be the root of an Emacs source tree."
|
||||
(interactive "DEmacs root directory: \nsVersion number: ")
|
||||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(set-version-in-file root "lisp/version.el" version
|
||||
(rx (and "emacs-version" (0+ space)
|
||||
(set-version-in-file root "src/emacs.c" version
|
||||
(rx (and "emacs_version" (0+ (not (in ?\")))
|
||||
?\" (submatch (1+ (not (in ?\")))) ?\")))
|
||||
(set-version-in-file root "README" version
|
||||
(rx (and "version" (1+ space)
|
||||
@ -184,8 +184,8 @@ Root must be the root of an Emacs source tree."
|
||||
(format-time-string "%Y")))))
|
||||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(set-version-in-file root "lisp/version.el" copyright
|
||||
(rx (and "emacs-copyright" (0+ space)
|
||||
(set-version-in-file root "src/emacs.c" copyright
|
||||
(rx (and "emacs_copyright" (0+ (not (in ?\")))
|
||||
?\" (submatch (1+ (not (in ?\")))) ?\")))
|
||||
(set-version-in-file root "lib-src/ebrowse.c" copyright
|
||||
(rx (and "emacs_copyright" (0+ (not (in ?\")))
|
||||
|
@ -31,7 +31,7 @@ For each step, check for possible errors.
|
||||
make bootstrap
|
||||
|
||||
6. Commit configure, README, doc/emacs/emacs.texi,
|
||||
doc/lispref/elisp.texi, etc/AUTHORS, lisp/version.el, nt/emacs.rc,
|
||||
doc/lispref/elisp.texi, etc/AUTHORS, src/emacs.c, nt/emacs.rc,
|
||||
and lisp/cus-edit.el (if modified). Copy lisp/loaddefs.el to
|
||||
lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. For a release,
|
||||
also commit the ChangeLog files in all directories.
|
||||
|
@ -149,6 +149,23 @@ Discard mails matching:
|
||||
|
||||
^X-GNU-PR-Message: (transcript|closed)
|
||||
|
||||
** Not receiving messages in response to your control commands?
|
||||
The messages debbugs sends out in response to control-server commands
|
||||
always have headers To: your@email, and Cc: tracker@debbugs.gnu.org
|
||||
(the latter is an alias for the emacs-bug-tracker mailing list).
|
||||
These are also the addresses to which a copy of the response is sent.
|
||||
(In general, there need not be any relation between the To: and Cc:
|
||||
headers visible in a message and where debbugs actually sends it.)
|
||||
If you used an X-Debbugs-No-Ack header, however, a copy is _not_ sent
|
||||
to you, but the To: header is unchanged. If you are subscribed to the
|
||||
emacs-bug-tracker mailing list and have duplicate suppression turned
|
||||
on, the presence of your address in the To: header will cause Mailman
|
||||
to not send you a list copy, because it thinks you have received a
|
||||
direct copy. If you used X-Debbugs-No-Ack, this is not the case, and
|
||||
you won't get any copy at all. If this bothers you, don't use both
|
||||
X-Debbugs-No-Ack and Mailman duplicate suppression for the
|
||||
emacs-bug-tracker mailing list, just pick one or the other.
|
||||
|
||||
** How to avoid multiple copies of mails.
|
||||
If you reply to reports in the normal way, this should work fine.
|
||||
Basically, reply only to the numbered bug address (and any individual
|
||||
@ -553,9 +570,13 @@ All discarded messages are stored in /var/lib/mailman/spam.
|
||||
If a non-spam message accidentally gets discarded, just do:
|
||||
|
||||
cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive
|
||||
chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/*
|
||||
... check it works ...
|
||||
mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
|
||||
|
||||
Also check that the sender was not added to the auto-discard/reject list
|
||||
in the debbugs-submit Mailman interface.
|
||||
|
||||
** Administrivia
|
||||
|
||||
The debbugs-submit list should have the administrivia option off,
|
||||
|
40
admin/notes/bzr
Normal file
40
admin/notes/bzr
Normal file
@ -0,0 +1,40 @@
|
||||
NOTES ON COMMITTING TO EMACS'S BAZAAR REPO -*- outline -*-
|
||||
|
||||
* Install changes only on one branch, let them get merged elsewhere if needed.
|
||||
In particular, install bug-fixes only on the release branch (if there
|
||||
is one) and let them get synced to the trunk; do not install them by
|
||||
hand on the trunk as well. E.g. if there is an active "emacs-23" branch
|
||||
and you have a bug-fix appropriate for the next Emacs-23.x release,
|
||||
install it only on the emacs-23 branch, not on the trunk as well.
|
||||
|
||||
Installing things manually into more than one branch makes merges more
|
||||
difficult.
|
||||
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01124.html
|
||||
|
||||
* Backporting a bug-fix from the trunk to a branch (e.g. "emacs-23").
|
||||
Label the commit as a backport, e.g. by starting the commit message with
|
||||
"Backport:". This is helpful for the person merging the release branch
|
||||
to the trunk.
|
||||
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00262.html
|
||||
|
||||
* Installing changes from your personal branches.
|
||||
If your branch has only a single commit, or many different real
|
||||
commits, it is fine to do a merge. If your branch has only a very
|
||||
small number of "real" commits, but several "merge from trunks", it is
|
||||
preferred that you take your branch's diff, apply it to the trunk, and
|
||||
commit directly, not merge. This keeps the history cleaner.
|
||||
|
||||
In general, when working on some feature in a separate branch, it is
|
||||
preferable not to merge from trunk until you are done with the
|
||||
feature. Unless you really need some change that was done on the
|
||||
trunk while you were developing on the branch, you don't really need
|
||||
those merges; just merge once, when you are done with the feature, and
|
||||
Bazaar will take care of the rest. Bazaar is much better in this than
|
||||
CVS, so interim merges are unnecessary.
|
||||
|
||||
Or use shelves; or rebase; or do something else. See the thread for
|
||||
yet another fun excursion into the exciting world of version control.
|
||||
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00086.html
|
@ -1,14 +0,0 @@
|
||||
ttn 2003-04-09
|
||||
|
||||
we use a C preprocesor not only in the normal compilation of .c files
|
||||
into object files, but also for creating src/Makefile.
|
||||
(delimited by comment "start of cpp stuff"). some cpp implementations
|
||||
insert whitespace in between tokens.
|
||||
|
||||
during makefile creation, the preprocessor symbol NOT_C_CODE is defined.
|
||||
this should not be defined for normal .c file compilation.
|
||||
|
||||
there has been discussion on eliminating this use of cpp and relying
|
||||
solely on autoconf processing. rms says to leave it be.
|
||||
|
||||
;;; arch-tag: d654291e-9fc8-41b7-ab0c-d3cde842a8e0
|
@ -6,11 +6,6 @@ See the end of the file for license conditions.
|
||||
New font handling mechanism with font backend method
|
||||
----------------------------------------------------
|
||||
|
||||
The configure script, if invoked with "--enable-font-backend", checks
|
||||
if libraries freetype and fontconfig exist. If they are both
|
||||
available, macro "USE_FONT_BACKEND" is defined in src/config.h. In
|
||||
that case, the existence of Xft library is checked too.
|
||||
|
||||
The new files are:
|
||||
font.h -- header providing font-backend related structures
|
||||
(most important ones are "struct font" and "struct
|
||||
@ -44,10 +39,6 @@ Fontconfig are also available on w32, what we need may be:
|
||||
ftw32font.c -- font-driver on w32 directly using FreeType fonts
|
||||
utilizing methods provided by ftfont.c.
|
||||
|
||||
And, for those to work, macterm.c and macfns.c must be changed by the
|
||||
similar way as xterm.c and xfns.c (the parts "#ifdef USE_FONT_BACKEND"
|
||||
... "#endif" should be checked).
|
||||
|
||||
It may be interesting if Emacs supports a frame buffer directly and
|
||||
has these font driver.
|
||||
ftfbfont.c -- font-driver on FB for FreeType fonts.
|
||||
|
@ -17,8 +17,6 @@ not include any files that end up in the release tarball.
|
||||
|
||||
** Make the ChangeLog entry in the name of the author(s), not your own name.
|
||||
|
||||
** If appropriate, add an entry to lisp/Makefile.in ELCFILES.
|
||||
|
||||
** If appropriate, check that the file compiles OK and that Emacs
|
||||
builds fine with it. Address any compilation warnings.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#!/bin/sh
|
||||
### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
|
||||
|
||||
## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
## Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
||||
## 2010 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Miles Bader <miles@gnu.org>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
PUBLIC_LIBSRC_BINARIES='b2m emacsclient etags ctags ebrowse'
|
||||
PUBLIC_LIBSRC_SCRIPTS='grep-changelog rcs-checkin'
|
||||
|
||||
AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ Makefile.c$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
|
||||
AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
|
||||
|
||||
# Prune old binaries lying around in the source tree
|
||||
PRUNE=no
|
||||
@ -171,7 +171,7 @@ test x"$SRC" = x && { SRC="`get_config_var srcdir`" || exit 4 ; }
|
||||
test x"$prefix" = x && { prefix="`get_config_var prefix`" || exit 4 ; }
|
||||
test x"$ARCH" = x && { ARCH="`get_config_var host`" || exit 4 ; }
|
||||
|
||||
VERSION=`grep 'defconst[ ]*emacs-version' $SRC/lisp/version.el \
|
||||
VERSION=`grep 'char emacs_version' $SRC/src/emacs.c \
|
||||
| sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
|
||||
|
||||
DST_SHARE="$prefix/share/emacs/$VERSION"
|
||||
|
597
admin/unidata/BidiMirroring.txt
Normal file
597
admin/unidata/BidiMirroring.txt
Normal file
@ -0,0 +1,597 @@
|
||||
# BidiMirroring-6.0.0.txt
|
||||
# Date: 2009-11-10, 17:09:00 PST [KW]
|
||||
#
|
||||
# Bidi_Mirroring_Glyph Property
|
||||
#
|
||||
# This file is an informative contributory data file in the
|
||||
# Unicode Character Database.
|
||||
#
|
||||
# Copyright (c) 1991-2009 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# This data file lists characters that have the Bidi_Mirrored=True property
|
||||
# value, for which there is another Unicode character that typically has a glyph
|
||||
# that is the mirror image of the original character's glyph.
|
||||
#
|
||||
# The repertoire covered by the file is Unicode 6.0.0.
|
||||
#
|
||||
# The file contains a list of lines with mappings from one code point
|
||||
# to another one for character-based mirroring.
|
||||
# Note that for "real" mirroring, a rendering engine needs to select
|
||||
# appropriate alternative glyphs, and that many Unicode characters do not
|
||||
# have a mirror-image Unicode character.
|
||||
#
|
||||
# Each mapping line contains two fields, separated by a semicolon (';').
|
||||
# Each of the two fields contains a code point represented as a
|
||||
# variable-length hexadecimal value with 4 to 6 digits.
|
||||
# A comment indicates where the characters are "BEST FIT" mirroring.
|
||||
#
|
||||
# Code points for which Bidi_Mirrored=True, but for which no appropriate
|
||||
# characters exist with mirrored glyphs, are
|
||||
# listed as comments at the end of the file.
|
||||
#
|
||||
# Formally, the default value of the Bidi_Mirroring_Glyph property
|
||||
# for each code point is the code point itself, unless a mapping to
|
||||
# some other character is specified in this data file. When a code
|
||||
# point has the default value for the Bidi_Mirroring_Glyph property,
|
||||
# that means that no other character exists whose glyph is suitable
|
||||
# for character-based mirroring.
|
||||
#
|
||||
# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm,
|
||||
# at http://www.unicode.org/unicode/reports/tr9/
|
||||
#
|
||||
# This file was originally created by Markus Scherer.
|
||||
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler.
|
||||
#
|
||||
# ############################################################
|
||||
|
||||
0028; 0029 # LEFT PARENTHESIS
|
||||
0029; 0028 # RIGHT PARENTHESIS
|
||||
003C; 003E # LESS-THAN SIGN
|
||||
003E; 003C # GREATER-THAN SIGN
|
||||
005B; 005D # LEFT SQUARE BRACKET
|
||||
005D; 005B # RIGHT SQUARE BRACKET
|
||||
007B; 007D # LEFT CURLY BRACKET
|
||||
007D; 007B # RIGHT CURLY BRACKET
|
||||
00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON
|
||||
0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS
|
||||
0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON
|
||||
0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS
|
||||
169B; 169C # OGHAM FEATHER MARK
|
||||
169C; 169B # OGHAM REVERSED FEATHER MARK
|
||||
2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
|
||||
2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
|
||||
207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
|
||||
207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
|
||||
208D; 208E # SUBSCRIPT LEFT PARENTHESIS
|
||||
208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
|
||||
2208; 220B # ELEMENT OF
|
||||
2209; 220C # NOT AN ELEMENT OF
|
||||
220A; 220D # SMALL ELEMENT OF
|
||||
220B; 2208 # CONTAINS AS MEMBER
|
||||
220C; 2209 # DOES NOT CONTAIN AS MEMBER
|
||||
220D; 220A # SMALL CONTAINS AS MEMBER
|
||||
2215; 29F5 # DIVISION SLASH
|
||||
223C; 223D # TILDE OPERATOR
|
||||
223D; 223C # REVERSED TILDE
|
||||
2243; 22CD # ASYMPTOTICALLY EQUAL TO
|
||||
2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
|
||||
2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
|
||||
2254; 2255 # COLON EQUALS
|
||||
2255; 2254 # EQUALS COLON
|
||||
2264; 2265 # LESS-THAN OR EQUAL TO
|
||||
2265; 2264 # GREATER-THAN OR EQUAL TO
|
||||
2266; 2267 # LESS-THAN OVER EQUAL TO
|
||||
2267; 2266 # GREATER-THAN OVER EQUAL TO
|
||||
2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
|
||||
2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
|
||||
226A; 226B # MUCH LESS-THAN
|
||||
226B; 226A # MUCH GREATER-THAN
|
||||
226E; 226F # [BEST FIT] NOT LESS-THAN
|
||||
226F; 226E # [BEST FIT] NOT GREATER-THAN
|
||||
2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
|
||||
2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
|
||||
2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
|
||||
2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
|
||||
2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
|
||||
2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
|
||||
2276; 2277 # LESS-THAN OR GREATER-THAN
|
||||
2277; 2276 # GREATER-THAN OR LESS-THAN
|
||||
2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN
|
||||
2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN
|
||||
227A; 227B # PRECEDES
|
||||
227B; 227A # SUCCEEDS
|
||||
227C; 227D # PRECEDES OR EQUAL TO
|
||||
227D; 227C # SUCCEEDS OR EQUAL TO
|
||||
227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
|
||||
227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
|
||||
2280; 2281 # [BEST FIT] DOES NOT PRECEDE
|
||||
2281; 2280 # [BEST FIT] DOES NOT SUCCEED
|
||||
2282; 2283 # SUBSET OF
|
||||
2283; 2282 # SUPERSET OF
|
||||
2284; 2285 # [BEST FIT] NOT A SUBSET OF
|
||||
2285; 2284 # [BEST FIT] NOT A SUPERSET OF
|
||||
2286; 2287 # SUBSET OF OR EQUAL TO
|
||||
2287; 2286 # SUPERSET OF OR EQUAL TO
|
||||
2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
|
||||
2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
|
||||
228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
|
||||
228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
|
||||
228F; 2290 # SQUARE IMAGE OF
|
||||
2290; 228F # SQUARE ORIGINAL OF
|
||||
2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
|
||||
2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
|
||||
2298; 29B8 # CIRCLED DIVISION SLASH
|
||||
22A2; 22A3 # RIGHT TACK
|
||||
22A3; 22A2 # LEFT TACK
|
||||
22A6; 2ADE # ASSERTION
|
||||
22A8; 2AE4 # TRUE
|
||||
22A9; 2AE3 # FORCES
|
||||
22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
|
||||
22B0; 22B1 # PRECEDES UNDER RELATION
|
||||
22B1; 22B0 # SUCCEEDS UNDER RELATION
|
||||
22B2; 22B3 # NORMAL SUBGROUP OF
|
||||
22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
|
||||
22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
|
||||
22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
|
||||
22B6; 22B7 # ORIGINAL OF
|
||||
22B7; 22B6 # IMAGE OF
|
||||
22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
|
||||
22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
|
||||
22CB; 22CC # LEFT SEMIDIRECT PRODUCT
|
||||
22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
|
||||
22CD; 2243 # REVERSED TILDE EQUALS
|
||||
22D0; 22D1 # DOUBLE SUBSET
|
||||
22D1; 22D0 # DOUBLE SUPERSET
|
||||
22D6; 22D7 # LESS-THAN WITH DOT
|
||||
22D7; 22D6 # GREATER-THAN WITH DOT
|
||||
22D8; 22D9 # VERY MUCH LESS-THAN
|
||||
22D9; 22D8 # VERY MUCH GREATER-THAN
|
||||
22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
|
||||
22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
|
||||
22DC; 22DD # EQUAL TO OR LESS-THAN
|
||||
22DD; 22DC # EQUAL TO OR GREATER-THAN
|
||||
22DE; 22DF # EQUAL TO OR PRECEDES
|
||||
22DF; 22DE # EQUAL TO OR SUCCEEDS
|
||||
22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
|
||||
22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
|
||||
22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
|
||||
22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
|
||||
22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
|
||||
22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
|
||||
22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
|
||||
22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
|
||||
22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
|
||||
22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
|
||||
22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
|
||||
22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
|
||||
22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
|
||||
22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
|
||||
22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
|
||||
22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
|
||||
22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE
|
||||
22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
|
||||
22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
|
||||
22F6; 22FD # ELEMENT OF WITH OVERBAR
|
||||
22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR
|
||||
22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE
|
||||
22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
|
||||
22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
|
||||
22FD; 22F6 # CONTAINS WITH OVERBAR
|
||||
22FE; 22F7 # SMALL CONTAINS WITH OVERBAR
|
||||
2308; 2309 # LEFT CEILING
|
||||
2309; 2308 # RIGHT CEILING
|
||||
230A; 230B # LEFT FLOOR
|
||||
230B; 230A # RIGHT FLOOR
|
||||
2329; 232A # LEFT-POINTING ANGLE BRACKET
|
||||
232A; 2329 # RIGHT-POINTING ANGLE BRACKET
|
||||
2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT
|
||||
2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT
|
||||
276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
|
||||
276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
|
||||
276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
|
||||
276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
|
||||
276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
|
||||
276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
|
||||
2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
|
||||
2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
|
||||
2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET
|
||||
2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET
|
||||
2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
|
||||
2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
|
||||
27C3; 27C4 # OPEN SUBSET
|
||||
27C4; 27C3 # OPEN SUPERSET
|
||||
27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER
|
||||
27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER
|
||||
27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET
|
||||
27C9; 27C8 # SUPERSET PRECEDING SOLIDUS
|
||||
27D5; 27D6 # LEFT OUTER JOIN
|
||||
27D6; 27D5 # RIGHT OUTER JOIN
|
||||
27DD; 27DE # LONG RIGHT TACK
|
||||
27DE; 27DD # LONG LEFT TACK
|
||||
27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
|
||||
27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
|
||||
27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK
|
||||
27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK
|
||||
27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
|
||||
27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
|
||||
27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET
|
||||
27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET
|
||||
27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
|
||||
27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
|
||||
27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
|
||||
27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
|
||||
27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS
|
||||
27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
|
||||
2983; 2984 # LEFT WHITE CURLY BRACKET
|
||||
2984; 2983 # RIGHT WHITE CURLY BRACKET
|
||||
2985; 2986 # LEFT WHITE PARENTHESIS
|
||||
2986; 2985 # RIGHT WHITE PARENTHESIS
|
||||
2987; 2988 # Z NOTATION LEFT IMAGE BRACKET
|
||||
2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET
|
||||
2989; 298A # Z NOTATION LEFT BINDING BRACKET
|
||||
298A; 2989 # Z NOTATION RIGHT BINDING BRACKET
|
||||
298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR
|
||||
298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR
|
||||
298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
|
||||
298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
|
||||
298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
|
||||
2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
|
||||
2991; 2992 # LEFT ANGLE BRACKET WITH DOT
|
||||
2992; 2991 # RIGHT ANGLE BRACKET WITH DOT
|
||||
2993; 2994 # LEFT ARC LESS-THAN BRACKET
|
||||
2994; 2993 # RIGHT ARC GREATER-THAN BRACKET
|
||||
2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET
|
||||
2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET
|
||||
2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET
|
||||
2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET
|
||||
29B8; 2298 # CIRCLED REVERSE SOLIDUS
|
||||
29C0; 29C1 # CIRCLED LESS-THAN
|
||||
29C1; 29C0 # CIRCLED GREATER-THAN
|
||||
29C4; 29C5 # SQUARED RISING DIAGONAL SLASH
|
||||
29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH
|
||||
29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR
|
||||
29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE
|
||||
29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK
|
||||
29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK
|
||||
29D4; 29D5 # TIMES WITH LEFT HALF BLACK
|
||||
29D5; 29D4 # TIMES WITH RIGHT HALF BLACK
|
||||
29D8; 29D9 # LEFT WIGGLY FENCE
|
||||
29D9; 29D8 # RIGHT WIGGLY FENCE
|
||||
29DA; 29DB # LEFT DOUBLE WIGGLY FENCE
|
||||
29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE
|
||||
29F5; 2215 # REVERSE SOLIDUS OPERATOR
|
||||
29F8; 29F9 # BIG SOLIDUS
|
||||
29F9; 29F8 # BIG REVERSE SOLIDUS
|
||||
29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET
|
||||
29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET
|
||||
2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS
|
||||
2A2C; 2A2B # MINUS SIGN WITH RISING DOTS
|
||||
2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE
|
||||
2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE
|
||||
2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
|
||||
2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
|
||||
2A3C; 2A3D # INTERIOR PRODUCT
|
||||
2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT
|
||||
2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION
|
||||
2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION
|
||||
2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE
|
||||
2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE
|
||||
2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO
|
||||
2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO
|
||||
2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
|
||||
2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
|
||||
2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
|
||||
2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
|
||||
2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
|
||||
2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
|
||||
2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
|
||||
2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
|
||||
2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
|
||||
2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
|
||||
2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
|
||||
2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
|
||||
2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN
|
||||
2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN
|
||||
2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
|
||||
2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
|
||||
2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN
|
||||
2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN
|
||||
2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
|
||||
2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
|
||||
2AA1; 2AA2 # DOUBLE NESTED LESS-THAN
|
||||
2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN
|
||||
2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE
|
||||
2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE
|
||||
2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
|
||||
2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
|
||||
2AAA; 2AAB # SMALLER THAN
|
||||
2AAB; 2AAA # LARGER THAN
|
||||
2AAC; 2AAD # SMALLER THAN OR EQUAL TO
|
||||
2AAD; 2AAC # LARGER THAN OR EQUAL TO
|
||||
2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
|
||||
2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
|
||||
2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN
|
||||
2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN
|
||||
2ABB; 2ABC # DOUBLE PRECEDES
|
||||
2ABC; 2ABB # DOUBLE SUCCEEDS
|
||||
2ABD; 2ABE # SUBSET WITH DOT
|
||||
2ABE; 2ABD # SUPERSET WITH DOT
|
||||
2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW
|
||||
2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW
|
||||
2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW
|
||||
2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW
|
||||
2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE
|
||||
2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
|
||||
2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN
|
||||
2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN
|
||||
2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR
|
||||
2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR
|
||||
2ACF; 2AD0 # CLOSED SUBSET
|
||||
2AD0; 2ACF # CLOSED SUPERSET
|
||||
2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO
|
||||
2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO
|
||||
2AD3; 2AD4 # SUBSET ABOVE SUPERSET
|
||||
2AD4; 2AD3 # SUPERSET ABOVE SUBSET
|
||||
2AD5; 2AD6 # SUBSET ABOVE SUBSET
|
||||
2AD6; 2AD5 # SUPERSET ABOVE SUPERSET
|
||||
2ADE; 22A6 # SHORT LEFT TACK
|
||||
2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE
|
||||
2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE
|
||||
2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
|
||||
2AEC; 2AED # DOUBLE STROKE NOT SIGN
|
||||
2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN
|
||||
2AF7; 2AF8 # TRIPLE NESTED LESS-THAN
|
||||
2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN
|
||||
2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
|
||||
2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
|
||||
2E02; 2E03 # LEFT SUBSTITUTION BRACKET
|
||||
2E03; 2E02 # RIGHT SUBSTITUTION BRACKET
|
||||
2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET
|
||||
2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET
|
||||
2E09; 2E0A # LEFT TRANSPOSITION BRACKET
|
||||
2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET
|
||||
2E0C; 2E0D # LEFT RAISED OMISSION BRACKET
|
||||
2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET
|
||||
2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET
|
||||
2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET
|
||||
2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL
|
||||
2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL
|
||||
2E22; 2E23 # TOP LEFT HALF BRACKET
|
||||
2E23; 2E22 # TOP RIGHT HALF BRACKET
|
||||
2E24; 2E25 # BOTTOM LEFT HALF BRACKET
|
||||
2E25; 2E24 # BOTTOM RIGHT HALF BRACKET
|
||||
2E26; 2E27 # LEFT SIDEWAYS U BRACKET
|
||||
2E27; 2E26 # RIGHT SIDEWAYS U BRACKET
|
||||
2E28; 2E29 # LEFT DOUBLE PARENTHESIS
|
||||
2E29; 2E28 # RIGHT DOUBLE PARENTHESIS
|
||||
3008; 3009 # LEFT ANGLE BRACKET
|
||||
3009; 3008 # RIGHT ANGLE BRACKET
|
||||
300A; 300B # LEFT DOUBLE ANGLE BRACKET
|
||||
300B; 300A # RIGHT DOUBLE ANGLE BRACKET
|
||||
300C; 300D # [BEST FIT] LEFT CORNER BRACKET
|
||||
300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
|
||||
300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
|
||||
300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
|
||||
3010; 3011 # LEFT BLACK LENTICULAR BRACKET
|
||||
3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
|
||||
3014; 3015 # LEFT TORTOISE SHELL BRACKET
|
||||
3015; 3014 # RIGHT TORTOISE SHELL BRACKET
|
||||
3016; 3017 # LEFT WHITE LENTICULAR BRACKET
|
||||
3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
|
||||
3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
|
||||
3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
|
||||
301A; 301B # LEFT WHITE SQUARE BRACKET
|
||||
301B; 301A # RIGHT WHITE SQUARE BRACKET
|
||||
FE59; FE5A # SMALL LEFT PARENTHESIS
|
||||
FE5A; FE59 # SMALL RIGHT PARENTHESIS
|
||||
FE5B; FE5C # SMALL LEFT CURLY BRACKET
|
||||
FE5C; FE5B # SMALL RIGHT CURLY BRACKET
|
||||
FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET
|
||||
FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET
|
||||
FE64; FE65 # SMALL LESS-THAN SIGN
|
||||
FE65; FE64 # SMALL GREATER-THAN SIGN
|
||||
FF08; FF09 # FULLWIDTH LEFT PARENTHESIS
|
||||
FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS
|
||||
FF1C; FF1E # FULLWIDTH LESS-THAN SIGN
|
||||
FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN
|
||||
FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET
|
||||
FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET
|
||||
FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET
|
||||
FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET
|
||||
FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS
|
||||
FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS
|
||||
FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
|
||||
FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
|
||||
|
||||
# The following characters have no appropriate mirroring character.
|
||||
# For these characters it is up to the rendering system
|
||||
# to provide mirrored glyphs.
|
||||
|
||||
# 2140; DOUBLE-STRUCK N-ARY SUMMATION
|
||||
# 2201; COMPLEMENT
|
||||
# 2202; PARTIAL DIFFERENTIAL
|
||||
# 2203; THERE EXISTS
|
||||
# 2204; THERE DOES NOT EXIST
|
||||
# 2211; N-ARY SUMMATION
|
||||
# 2216; SET MINUS
|
||||
# 221A; SQUARE ROOT
|
||||
# 221B; CUBE ROOT
|
||||
# 221C; FOURTH ROOT
|
||||
# 221D; PROPORTIONAL TO
|
||||
# 221F; RIGHT ANGLE
|
||||
# 2220; ANGLE
|
||||
# 2221; MEASURED ANGLE
|
||||
# 2222; SPHERICAL ANGLE
|
||||
# 2224; DOES NOT DIVIDE
|
||||
# 2226; NOT PARALLEL TO
|
||||
# 222B; INTEGRAL
|
||||
# 222C; DOUBLE INTEGRAL
|
||||
# 222D; TRIPLE INTEGRAL
|
||||
# 222E; CONTOUR INTEGRAL
|
||||
# 222F; SURFACE INTEGRAL
|
||||
# 2230; VOLUME INTEGRAL
|
||||
# 2231; CLOCKWISE INTEGRAL
|
||||
# 2232; CLOCKWISE CONTOUR INTEGRAL
|
||||
# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
|
||||
# 2239; EXCESS
|
||||
# 223B; HOMOTHETIC
|
||||
# 223E; INVERTED LAZY S
|
||||
# 223F; SINE WAVE
|
||||
# 2240; WREATH PRODUCT
|
||||
# 2241; NOT TILDE
|
||||
# 2242; MINUS TILDE
|
||||
# 2244; NOT ASYMPTOTICALLY EQUAL TO
|
||||
# 2245; APPROXIMATELY EQUAL TO
|
||||
# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
|
||||
# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
|
||||
# 2248; ALMOST EQUAL TO
|
||||
# 2249; NOT ALMOST EQUAL TO
|
||||
# 224A; ALMOST EQUAL OR EQUAL TO
|
||||
# 224B; TRIPLE TILDE
|
||||
# 224C; ALL EQUAL TO
|
||||
# 225F; QUESTIONED EQUAL TO
|
||||
# 2260; NOT EQUAL TO
|
||||
# 2262; NOT IDENTICAL TO
|
||||
# 228C; MULTISET
|
||||
# 22A7; MODELS
|
||||
# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
|
||||
# 22AC; DOES NOT PROVE
|
||||
# 22AD; NOT TRUE
|
||||
# 22AE; DOES NOT FORCE
|
||||
# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
|
||||
# 22B8; MULTIMAP
|
||||
# 22BE; RIGHT ANGLE WITH ARC
|
||||
# 22BF; RIGHT TRIANGLE
|
||||
# 22F5; ELEMENT OF WITH DOT ABOVE
|
||||
# 22F8; ELEMENT OF WITH UNDERBAR
|
||||
# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES
|
||||
# 22FF; Z NOTATION BAG MEMBERSHIP
|
||||
# 2320; TOP HALF INTEGRAL
|
||||
# 2321; BOTTOM HALF INTEGRAL
|
||||
# 27CC; LONG DIVISION
|
||||
# 27C0; THREE DIMENSIONAL ANGLE
|
||||
# 27D3; LOWER RIGHT CORNER WITH DOT
|
||||
# 27D4; UPPER LEFT CORNER WITH DOT
|
||||
# 27DC; LEFT MULTIMAP
|
||||
# 299B; MEASURED ANGLE OPENING LEFT
|
||||
# 299C; RIGHT ANGLE VARIANT WITH SQUARE
|
||||
# 299D; MEASURED RIGHT ANGLE WITH DOT
|
||||
# 299E; ANGLE WITH S INSIDE
|
||||
# 299F; ACUTE ANGLE
|
||||
# 29A0; SPHERICAL ANGLE OPENING LEFT
|
||||
# 29A1; SPHERICAL ANGLE OPENING UP
|
||||
# 29A2; TURNED ANGLE
|
||||
# 29A3; REVERSED ANGLE
|
||||
# 29A4; ANGLE WITH UNDERBAR
|
||||
# 29A5; REVERSED ANGLE WITH UNDERBAR
|
||||
# 29A6; OBLIQUE ANGLE OPENING UP
|
||||
# 29A7; OBLIQUE ANGLE OPENING DOWN
|
||||
# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
|
||||
# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
|
||||
# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
|
||||
# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
|
||||
# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
|
||||
# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
|
||||
# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
|
||||
# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
|
||||
# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT
|
||||
# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
|
||||
# 29C9; TWO JOINED SQUARES
|
||||
# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE
|
||||
# 29DC; INCOMPLETE INFINITY
|
||||
# 29E1; INCREASES AS
|
||||
# 29E3; EQUALS SIGN AND SLANTED PARALLEL
|
||||
# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
|
||||
# 29E5; IDENTICAL TO AND SLANTED PARALLEL
|
||||
# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
|
||||
# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
|
||||
# 29F4; RULE-DELAYED
|
||||
# 29F6; SOLIDUS WITH OVERBAR
|
||||
# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE
|
||||
# 2A0A; MODULO TWO SUM
|
||||
# 2A0B; SUMMATION WITH INTEGRAL
|
||||
# 2A0C; QUADRUPLE INTEGRAL OPERATOR
|
||||
# 2A0D; FINITE PART INTEGRAL
|
||||
# 2A0E; INTEGRAL WITH DOUBLE STROKE
|
||||
# 2A0F; INTEGRAL AVERAGE WITH SLASH
|
||||
# 2A10; CIRCULATION FUNCTION
|
||||
# 2A11; ANTICLOCKWISE INTEGRATION
|
||||
# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
|
||||
# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
|
||||
# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE
|
||||
# 2A15; INTEGRAL AROUND A POINT OPERATOR
|
||||
# 2A16; QUATERNION INTEGRAL OPERATOR
|
||||
# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
|
||||
# 2A18; INTEGRAL WITH TIMES SIGN
|
||||
# 2A19; INTEGRAL WITH INTERSECTION
|
||||
# 2A1A; INTEGRAL WITH UNION
|
||||
# 2A1B; INTEGRAL WITH OVERBAR
|
||||
# 2A1C; INTEGRAL WITH UNDERBAR
|
||||
# 2A1E; LARGE LEFT TRIANGLE OPERATOR
|
||||
# 2A1F; Z NOTATION SCHEMA COMPOSITION
|
||||
# 2A20; Z NOTATION SCHEMA PIPING
|
||||
# 2A21; Z NOTATION SCHEMA PROJECTION
|
||||
# 2A24; PLUS SIGN WITH TILDE ABOVE
|
||||
# 2A26; PLUS SIGN WITH TILDE BELOW
|
||||
# 2A29; MINUS SIGN WITH COMMA ABOVE
|
||||
# 2A3E; Z NOTATION RELATIONAL COMPOSITION
|
||||
# 2A57; SLOPING LARGE OR
|
||||
# 2A58; SLOPING LARGE AND
|
||||
# 2A6A; TILDE OPERATOR WITH DOT ABOVE
|
||||
# 2A6B; TILDE OPERATOR WITH RISING DOTS
|
||||
# 2A6C; SIMILAR MINUS SIMILAR
|
||||
# 2A6D; CONGRUENT WITH DOT ABOVE
|
||||
# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
|
||||
# 2A70; APPROXIMATELY EQUAL OR EQUAL TO
|
||||
# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR
|
||||
# 2A74; DOUBLE COLON EQUAL
|
||||
# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE
|
||||
# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE
|
||||
# 2A85; LESS-THAN OR APPROXIMATE
|
||||
# 2A86; GREATER-THAN OR APPROXIMATE
|
||||
# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO
|
||||
# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
|
||||
# 2A89; LESS-THAN AND NOT APPROXIMATE
|
||||
# 2A8A; GREATER-THAN AND NOT APPROXIMATE
|
||||
# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL
|
||||
# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL
|
||||
# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
|
||||
# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
|
||||
# 2A9D; SIMILAR OR LESS-THAN
|
||||
# 2A9E; SIMILAR OR GREATER-THAN
|
||||
# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
|
||||
# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
|
||||
# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR
|
||||
# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
|
||||
# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
|
||||
# 2AB5; PRECEDES ABOVE NOT EQUAL TO
|
||||
# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO
|
||||
# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO
|
||||
# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO
|
||||
# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO
|
||||
# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO
|
||||
# 2AC7; SUBSET OF ABOVE TILDE OPERATOR
|
||||
# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR
|
||||
# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO
|
||||
# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO
|
||||
# 2ACB; SUBSET OF ABOVE NOT EQUAL TO
|
||||
# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO
|
||||
# 2ADC; FORKING
|
||||
# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE
|
||||
# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
|
||||
# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
|
||||
# 2AF3; PARALLEL WITH TILDE OPERATOR
|
||||
# 2AFB; TRIPLE SOLIDUS BINARY RELATION
|
||||
# 2AFD; DOUBLE SOLIDUS OPERATOR
|
||||
# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
|
||||
# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
|
||||
# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
|
||||
# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
|
||||
# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
|
||||
|
||||
# EOF
|
@ -23,7 +23,7 @@ EMACS = ../../src/emacs
|
||||
DSTDIR = ../../lisp/international
|
||||
RUNEMACS = ${EMACS} -Q --multibyte -batch
|
||||
|
||||
all: ${DSTDIR}/charprop.el
|
||||
all: ${DSTDIR}/charprop.el ../../src/biditype.h ../../src/bidimirror.h
|
||||
|
||||
.el.elc:
|
||||
${RUNEMACS} -batch -f batch-byte-compile $<
|
||||
@ -37,6 +37,12 @@ ${DSTDIR}/charprop.el: unidata-gen.elc unidata.txt
|
||||
cd ${DSTDIR}; \
|
||||
${RUNEMACS} -batch --load $${ELC} -f unidata-gen-files $${DATA}
|
||||
|
||||
../../src/biditype.h: UnicodeData.txt
|
||||
gawk -F";" -f biditype.awk $< > $@
|
||||
|
||||
../../src/bidimirror.h: BidiMirroring.txt
|
||||
gawk -F"[; ]+" -f bidimirror.awk $< > $@
|
||||
|
||||
install: charprop.el
|
||||
cp charprop.el ${DSTDIR}
|
||||
cp `sed -n 's/^;; FILE: //p' < charprop.el` ${DSTDIR}
|
||||
|
File diff suppressed because it is too large
Load Diff
37
admin/unidata/bidimirror.awk
Normal file
37
admin/unidata/bidimirror.awk
Normal file
@ -0,0 +1,37 @@
|
||||
# Generate data for bidi_mirroring_table, see src/bidi.c:bidi_initialize.
|
||||
|
||||
# Copyright (C) 2010, Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Written by Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
BEGIN {
|
||||
printf " struct {\n int from, to;\n } bidi_mirror[] = {\n";
|
||||
first = 1;
|
||||
}
|
||||
|
||||
$1 !~ /^#/ && NF >= 2 {
|
||||
if (!first)
|
||||
printf ",\n";
|
||||
else
|
||||
first = 0;
|
||||
printf "\t{ 0x%s, 0x%s }", $1, $2;
|
||||
}
|
||||
|
||||
END {
|
||||
printf " };\n";
|
||||
}
|
93
admin/unidata/biditype.awk
Normal file
93
admin/unidata/biditype.awk
Normal file
@ -0,0 +1,93 @@
|
||||
# Generate data for filling bidi_type_table, see src/bidi.c:bidi_initialize.
|
||||
|
||||
# Copyright (C) 2010, Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Written by Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
function trtype(type)
|
||||
{
|
||||
# Types are listed in the order of decresing use in UnicodeData.txt:
|
||||
if (type == "ON")
|
||||
return "NEUTRAL_ON";
|
||||
else if (type == "NSM")
|
||||
return "WEAK_NSM";
|
||||
else if (type == "AL")
|
||||
return "STRONG_AL";
|
||||
else if (type == "R")
|
||||
return "STRONG_R";
|
||||
else if (type == "BN")
|
||||
return "WEAK_BN";
|
||||
else if (type == "EN")
|
||||
return "WEAK_EN";
|
||||
else if (type == "ET")
|
||||
return "WEAK_ET";
|
||||
else if (type == "AN")
|
||||
return "WEAK_AN";
|
||||
else if (type == "WS")
|
||||
return "NEUTRAL_WS";
|
||||
else if (type == "CS")
|
||||
return "WEAK_CS";
|
||||
else if (type == "ES")
|
||||
return "WEAK_ES";
|
||||
else if (type == "B")
|
||||
return "NEUTRAL_B";
|
||||
else if (type == "S")
|
||||
return "NEUTRAL_S";
|
||||
else if (type == "LRE" || type == "RLE" || type == "LRO" || type == "RLO" || type == "PDF")
|
||||
return type;
|
||||
else if (type == "L")
|
||||
return "STRONG_L";
|
||||
else
|
||||
{
|
||||
printf "Unknown type: %s\n", type > "/dev/stderr";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
otype = "";
|
||||
startcode = "";
|
||||
endcode = "";
|
||||
printf " struct {\n int from, to;\n bidi_type_t type;\n } bidi_type[] = {\n";
|
||||
first = 1;
|
||||
}
|
||||
|
||||
{ code = $1;
|
||||
ntype = $5;
|
||||
if (ntype != otype)
|
||||
{
|
||||
# Don't output data for L, as that's the default value, see bidi.c.
|
||||
if (otype != "L" && startcode != "")
|
||||
{
|
||||
if (!first)
|
||||
printf ",\n";
|
||||
else
|
||||
first = 0;
|
||||
printf "\t{ 0x%s, 0x%s, %s }", startcode, endcode, trtype(otype);
|
||||
}
|
||||
otype = ntype;
|
||||
startcode = code;
|
||||
endcode = code;
|
||||
}
|
||||
else
|
||||
endcode = code;
|
||||
}
|
||||
|
||||
END {
|
||||
printf " };\n";
|
||||
}
|
@ -29,7 +29,7 @@ EMACSLOADPATH = $(lisp);$(lisp)/international;$(lisp)/emacs-lisp
|
||||
# Quote EMACS so it could be a file name with embedded whitespace
|
||||
RUNEMACS = "$(EMACS)" -Q --multibyte -batch
|
||||
|
||||
all: $(DSTDIR)/charprop.el
|
||||
all: $(DSTDIR)/charprop.el ../../src/biditype.h ../../src/bidimirror.h
|
||||
|
||||
.el.elc:
|
||||
$(RUNEMACS) -f batch-byte-compile $<
|
||||
@ -50,6 +50,16 @@ charprop-CMD: unidata-gen.elc unidata.txt
|
||||
|
||||
${DSTDIR}/charprop.el: charprop-$(SHELLTYPE)
|
||||
|
||||
clean:
|
||||
- $(DEL) unidata-gen.elc unidata.txt
|
||||
../../src/biditype.h: UnicodeData.txt
|
||||
gawk -F";" -f biditype.awk -v BINMODE=2 $< > biditype.h
|
||||
$(CP) biditype.h $@
|
||||
$(DEL) biditype.h
|
||||
|
||||
../../src/bidimirror.h: BidiMirroring.txt
|
||||
gawk -F"[; ]+" -f bidimirror.awk -v BINMODE=2 $< > bidimirror.h
|
||||
$(CP) bidimirror.h $@
|
||||
$(DEL) bidimirror.h
|
||||
|
||||
clean:
|
||||
- $(DEL) unidata-gen.elc unidata.txt biditype.h bidimirror.h
|
||||
|
||||
|
42
config.bat
42
config.bat
@ -23,7 +23,7 @@ rem ----------------------------------------------------------------------
|
||||
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
|
||||
rem
|
||||
rem + msdos version 3 or better.
|
||||
rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).
|
||||
rem + DJGPP version 2.0 or later (version 2.03 or later recommended).
|
||||
rem + make utility that allows breaking of the 128 chars limit on
|
||||
rem command lines. ndmake (as of version 4.5) won't work due to a
|
||||
rem line length limit. The make that comes with DJGPP does work (and is
|
||||
@ -125,11 +125,10 @@ rm -f junk.c junk junk.exe
|
||||
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
|
||||
Goto End
|
||||
:go32Ok
|
||||
set djgpp_ver=1
|
||||
If ErrorLevel 20 set djgpp_ver=2
|
||||
set djgpp_ver=2
|
||||
If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!
|
||||
If Not ErrorLevel 20 Goto End
|
||||
rm -f junk.c junk junk.exe
|
||||
rem The v1.x build does not need djecho
|
||||
if "%DJGPP_VER%" == "1" Goto djechoOk
|
||||
rem DJECHO is used by the top-level Makefile in the v2.x build
|
||||
Echo Checking whether 'djecho' is available...
|
||||
redir -o Nul -eo djecho -o junk.$$$ foo
|
||||
@ -159,12 +158,7 @@ sed -e '' config.in > config.tmp
|
||||
if "%X11%" == "" goto src4
|
||||
sed -f ../msdos/sed2x.inp <config.in >config.tmp
|
||||
:src4
|
||||
if "%DJGPP_VER%" == "2" Goto src41
|
||||
sed -f ../msdos/sed2.inp <config.tmp >config.h2
|
||||
goto src42
|
||||
:src41
|
||||
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
|
||||
:src42
|
||||
Rem See if DECL_ALIGN can be supported with this GCC
|
||||
rm -f junk.c junk.o junk junk.exe
|
||||
echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c
|
||||
@ -196,15 +190,10 @@ rem On my system dir.h gets in the way. It's a VMS file so who cares.
|
||||
if exist dir.h ren dir.h vmsdir.h
|
||||
|
||||
rem Create "makefile" from "makefile.in".
|
||||
rm -f Makefile junk.c
|
||||
sed -e "1,/== start of cpp stuff ==/s@^##*[ ].*$@@" <Makefile.in >junk.c
|
||||
If "%DJGPP_VER%" == "1" Goto mfV1
|
||||
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
|
||||
goto mfDone
|
||||
:mfV1
|
||||
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
|
||||
:mfDone
|
||||
rm -f junk.c
|
||||
rm -f Makefile makefile.tmp
|
||||
copy Makefile.in + deps.mk makefile.tmp
|
||||
sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile
|
||||
rm -f makefile.tmp
|
||||
|
||||
if "%X11%" == "" goto src5
|
||||
mv Makefile makefile.tmp
|
||||
@ -212,6 +201,13 @@ sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
|
||||
rm -f makefile.tmp
|
||||
:src5
|
||||
|
||||
if "%sys_malloc%" == "" goto src5a
|
||||
sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp
|
||||
sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2
|
||||
sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile
|
||||
rm -f makefile.tmp makefile.tmp2
|
||||
:src5a
|
||||
|
||||
if "%nodebug%" == "" goto src6
|
||||
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
|
||||
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
|
||||
@ -221,12 +217,7 @@ cd ..
|
||||
rem ----------------------------------------------------------------------
|
||||
Echo Configuring the library source directory...
|
||||
cd lib-src
|
||||
If "%DJGPP_VER%" == "2" goto libsrc-v2
|
||||
sed -f ../msdos/sed3.inp <Makefile.in >Makefile
|
||||
Goto libsrc2
|
||||
:libsrc-v2
|
||||
sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile
|
||||
:libsrc2
|
||||
if "%X11%" == "" goto libsrc2a
|
||||
mv Makefile makefile.tmp
|
||||
sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile
|
||||
@ -272,7 +263,6 @@ rem ----------------------------------------------------------------------
|
||||
Echo Configuring the main directory...
|
||||
If Exist .dir-locals.el update .dir-locals.el _dir-locals.el
|
||||
If Exist src\.dbxinit update src/.dbxinit src/_dbxinit
|
||||
If "%DJGPP_VER%" == "1" goto mainv1
|
||||
Echo Looking for the GDB init file...
|
||||
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
|
||||
If Exist src\_gdbinit goto gdbinitOk
|
||||
@ -287,8 +277,6 @@ goto End
|
||||
:gdbinitOk
|
||||
Echo Looking for the GDB init file...found
|
||||
copy msdos\mainmake.v2 Makefile >nul
|
||||
:mainv1
|
||||
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
|
||||
rem ----------------------------------------------------------------------
|
||||
goto End
|
||||
:SmallEnv
|
||||
|
627
configure.in
627
configure.in
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,27 @@
|
||||
2010-06-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* ack.texi (Acknowledgments):
|
||||
* emacs.texi (Acknowledgments): Update for notifications.el.
|
||||
|
||||
2010-05-31 Daiki Ueno <ueno@unixuser.org>
|
||||
|
||||
* dired.texi (Operating on Files): Mention encryption commands
|
||||
(Bug#6315).
|
||||
|
||||
2010-05-29 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* basic.texi (Moving Point): Update due to renaming of commands bound
|
||||
to arrows. Document bidi-aware behavior of C-<right> and C-<left>.
|
||||
|
||||
2010-05-18 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* display.texi (Fringes): Document reversal of fringe arrows for R2L
|
||||
paragraphs.
|
||||
(Line Truncation): Fix wording for bidi display.
|
||||
|
||||
* basic.texi (Moving Point): Document bidi-aware behavior of the arrow
|
||||
keys.
|
||||
|
||||
2010-05-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* building.texi (GDB Graphical Interface): Remove misleading comparison
|
||||
@ -127,7 +151,7 @@
|
||||
|
||||
* custom.texi (Init Examples): Add xref to Mail Header.
|
||||
|
||||
* emacs.texi (Top): Fix xrefs.
|
||||
* emacs.texi (Top): Fix xrefs.
|
||||
|
||||
2010-03-30 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
@ -1695,7 +1719,7 @@
|
||||
(Fortran Columns): Mention font-locking.
|
||||
(Fortran Abbrev): Word syntax not relevant with new-style abbrev.
|
||||
|
||||
2008-08-23 Johan Bockgard <bojohan@muon>
|
||||
2008-08-23 Johan Bockgård <bojohan@muon>
|
||||
|
||||
* basic.texi (Moving Point): Fix <prior>/<next> confusion.
|
||||
|
||||
|
@ -226,6 +226,10 @@ for compiled Emacs Lisp code.
|
||||
Mathias Dahl wrote @file{image-dired.el}, a package for viewing image
|
||||
files as ``thumbnails.''
|
||||
|
||||
@item
|
||||
Julien Danjou wrote an implementation of ``Desktop Notifications''
|
||||
(@file{notifications.el}).
|
||||
|
||||
@item
|
||||
Vivek Dasmohapatra wrote @file{htmlfontify.el}, to convert a buffer or
|
||||
source tree to HTML.
|
||||
|
@ -146,6 +146,8 @@ keyboard commands that move point in more sophisticated ways.
|
||||
@findex move-end-of-line
|
||||
@findex forward-char
|
||||
@findex backward-char
|
||||
@findex right-char
|
||||
@findex left-char
|
||||
@findex next-line
|
||||
@findex previous-line
|
||||
@findex beginning-of-buffer
|
||||
@ -161,19 +163,33 @@ Move to the beginning of the line (@code{move-beginning-of-line}).
|
||||
@itemx @key{End}
|
||||
Move to the end of the line (@code{move-end-of-line}).
|
||||
@item C-f
|
||||
@itemx @key{right}
|
||||
Move forward one character (@code{forward-char}).
|
||||
@item @key{right}
|
||||
Move one character to the right (@code{right-char}). This
|
||||
moves one character forward in text that is read in the usual
|
||||
left-to-right direction, but one character @emph{backward} if the text
|
||||
is read right-to-left, as needed for right-to-left scripts such as
|
||||
Arabic. @xref{Bidirectional Editing}.
|
||||
@item C-b
|
||||
@itemx @key{left}
|
||||
Move backward one character (@code{backward-char}).
|
||||
@item @key{left}
|
||||
Move one character to the left (@code{left-char}). This
|
||||
moves one character backward in left-to-right text and one character
|
||||
forward in right-to-left text.
|
||||
@item M-f
|
||||
@itemx M-@key{right}
|
||||
@itemx C-@key{right}
|
||||
Move forward one word (@code{forward-word}).
|
||||
@item C-@key{right}
|
||||
Move one word to the right (@code{right-word}). This moves one word
|
||||
forward in left-to-right text and one word backward in right-to-left
|
||||
text.
|
||||
@item M-b
|
||||
@itemx M-@key{left}
|
||||
@itemx C-@key{left}
|
||||
Move backward one word (@code{backward-word}).
|
||||
@item C-@key{left}
|
||||
Move one word to the left (@code{left-word}). This moves one word
|
||||
backward in left-to-right text and one word forward in right-to-left
|
||||
text.
|
||||
@item C-n
|
||||
@itemx @key{down}
|
||||
Move down one screen line (@code{next-line}). This command attempts
|
||||
|
@ -688,6 +688,34 @@ suitable guess made using the variables @code{lpr-command} and
|
||||
Compress the specified files (@code{dired-do-compress}). If the file
|
||||
appears to be a compressed file already, uncompress it instead.
|
||||
|
||||
@findex epa-dired-do-decrypt
|
||||
@kindex :d @r{(Dired)}
|
||||
@cindex decrypting files (in Dired)
|
||||
@item :d
|
||||
Decrypt the specified files (@code{epa-dired-do-decrypt}).
|
||||
@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
|
||||
|
||||
@findex epa-dired-do-verify
|
||||
@kindex :v @r{(Dired)}
|
||||
@cindex verifying digital signatures on files (in Dired)
|
||||
@item :v
|
||||
Verify digital signatures on the specified files (@code{epa-dired-do-verify}).
|
||||
@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
|
||||
|
||||
@findex epa-dired-do-sign
|
||||
@kindex :s @r{(Dired)}
|
||||
@cindex signing files (in Dired)
|
||||
@item :s
|
||||
Digitally sign the specified files (@code{epa-dired-do-sign}).
|
||||
@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
|
||||
|
||||
@findex epa-dired-do-encrypt
|
||||
@kindex :e @r{(Dired)}
|
||||
@cindex encrypting files (in Dired)
|
||||
@item :e
|
||||
Encrypt the specified files (@code{epa-dired-do-encrypt}).
|
||||
@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
|
||||
|
||||
@findex dired-do-load
|
||||
@kindex L @r{(Dired)}
|
||||
@cindex loading several files (in Dired)
|
||||
|
@ -804,7 +804,10 @@ line, when one line of text is split into multiple lines on the
|
||||
screen. The left fringe shows a curving arrow for each screen line
|
||||
except the first, indicating that ``this is not the real beginning.''
|
||||
The right fringe shows a curving arrow for each screen line except the
|
||||
last, indicating that ``this is not the real end.''
|
||||
last, indicating that ``this is not the real end.'' If the line's
|
||||
direction is right-to-left (@pxref{Bidirectional Editing}), the
|
||||
meaning of the curving arrows in the left and right fringes are
|
||||
swapped.
|
||||
|
||||
The fringes indicate line truncation with short horizontal arrows
|
||||
meaning ``there's more text on this line which is scrolled
|
||||
@ -1191,8 +1194,8 @@ can display long lines by @dfn{truncation}. This means that all the
|
||||
characters that do not fit in the width of the screen or window do not
|
||||
appear at all. On graphical displays, a small straight arrow in the
|
||||
fringe indicates truncation at either end of the line. On text-only
|
||||
terminals, @samp{$} appears in the first column when there is text
|
||||
truncated to the left, and in the last column when there is text
|
||||
terminals, @samp{$} appears in the leftmost column when there is text
|
||||
truncated to the left, and in the rightmost column when there is text
|
||||
truncated to the right.
|
||||
|
||||
@vindex truncate-lines
|
||||
|
@ -1354,33 +1354,34 @@ Broadey, Vincent Broman, David M.@: Brown, Georges Brun-Cottan, Joe
|
||||
Buehler, W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky,
|
||||
Chong Yidong, Chris Chase, Bob Chassell, Andrew Choi, Sacha Chua, James
|
||||
Clark, Mike Clarkson, Glynn Clements, Daniel Colascione, Andrew Csillag,
|
||||
Baoqiu Cui, Doug Cutting, Mathias Dahl, Satyaki Das, Vivek Dasmohapatra,
|
||||
Michael DeCorte, Gary Delp, Matthieu Devin, Eri Ding, Jan Dj@"{a}rv,
|
||||
Carsten Dominik, Scott Draves, Benjamin Drieu, Viktor Dukhovni, Dmitry
|
||||
Dzhus, John Eaton, Rolf Ebert, Paul Eggert, Stephen Eglen, Torbj@"orn
|
||||
Einarsson, Tsugutomo Enami, Hans Henrik Eriksen, Michael Ernst, Ata
|
||||
Etemadi, Frederick Farnbach, Oscar Figueiredo, Fred Fish, Karl Fogel,
|
||||
Gary Foster, Romain Francoise, Noah Friedman, Andreas Fuchs, Hallvard
|
||||
Furuseth, Keith Gabryelski, Peter S.@: Galbraith, Kevin Gallagher, Kevin
|
||||
Gallo, Juan Le@'{o}n Lahoz Garc@'{@dotless{i}}a, Howard Gayle, Daniel
|
||||
German, Stephen Gildea, Julien Gilles, David Gillespie, Bob Glickstein,
|
||||
Deepak Goel, Boris Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai
|
||||
Gro@ss{}johann, Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug
|
||||
Gwyn, Ken'ichi Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John
|
||||
Heidemann, Jon K.@: Hellan, Jesper Harder, Magnus Henoch, Markus
|
||||
Heritsch, Karl Heuer, Manabu Higashida, Anders Holst, Jeffrey C.@:
|
||||
Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim Hove, Denis Howe,
|
||||
Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Philip Jackson, Pavel
|
||||
Janik, Paul Jarc, Ulf Jasper, Michael K. Johnson, Kyle Jones, Terry
|
||||
Jones, Simon Josefsson, Arne J@o{}rgensen, Tomoji Kagatani, Brewster
|
||||
Kahle, Tokuya Kameshima, Lute Kamstra, David Kastrup, David Kaufman,
|
||||
Henry Kautz, Taichi Kawabata, Howard Kaye, Michael Kifer, Richard King,
|
||||
Peter Kleiweg, Karel Kl@'{@dotless{i}}@v{c}, Shuhei Kobayashi, Pavel
|
||||
Kobiakov, Larry K.@: Kolodney, David M.@: Koppelman, Koseki Yoshinori,
|
||||
Robert Krawitz, Sebastian Kremer, Ryszard Kubiak, David K@aa{}gedal, Daniel
|
||||
LaLiberte, Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus,
|
||||
Vinicius Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg,
|
||||
Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov,
|
||||
Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki Das,
|
||||
Vivek Dasmohapatra, Michael DeCorte, Gary Delp, Matthieu Devin, Eri
|
||||
Ding, Jan Dj@"{a}rv, Carsten Dominik, Scott Draves, Benjamin Drieu,
|
||||
Viktor Dukhovni, Dmitry Dzhus, John Eaton, Rolf Ebert, Paul Eggert,
|
||||
Stephen Eglen, Torbj@"orn Einarsson, Tsugutomo Enami, Hans Henrik
|
||||
Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar
|
||||
Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain Francoise, Noah
|
||||
Friedman, Andreas Fuchs, Hallvard Furuseth, Keith Gabryelski, Peter S.@:
|
||||
Galbraith, Kevin Gallagher, Kevin Gallo, Juan Le@'{o}n Lahoz
|
||||
Garc@'{@dotless{i}}a, Howard Gayle, Daniel German, Stephen Gildea,
|
||||
Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris
|
||||
Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai Gro@ss{}johann,
|
||||
Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug Gwyn, Ken'ichi
|
||||
Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John Heidemann, Jon
|
||||
K.@: Hellan, Jesper Harder, Magnus Henoch, Markus Heritsch, Karl Heuer,
|
||||
Manabu Higashida, Anders Holst, Jeffrey C.@: Honig, Tassilo Horn, Kurt
|
||||
Hornik, Tom Houlder, Joakim Hove, Denis Howe, Lars Ingebrigtsen, Andrew
|
||||
Innes, Seiichiro Inoue, Philip Jackson, Pavel Janik, Paul Jarc, Ulf
|
||||
Jasper, Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson,
|
||||
Arne J@o{}rgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima,
|
||||
Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi
|
||||
Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
|
||||
Kl@'{@dotless{i}}@v{c}, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@:
|
||||
Kolodney, David M.@: Koppelman, Koseki Yoshinori, Robert Krawitz,
|
||||
Sebastian Kremer, Ryszard Kubiak, David K@aa{}gedal, Daniel LaLiberte,
|
||||
Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius
|
||||
Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Lars
|
||||
Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov,
|
||||
Francis Litterio, Emilio C. Lopes, K@'{a}roly L@H{o}rentey, Dave Love,
|
||||
Sascha L@"{u}decke, Eric Ludlam, Alan Mackenzie, Christopher J.@:
|
||||
Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon
|
||||
|
@ -1,3 +1,23 @@
|
||||
2010-06-02 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* searching.texi (Regexp Special): Remove obsolete information
|
||||
about matching non-ASCII characters, and suggest using char
|
||||
classes (Bug#6283).
|
||||
|
||||
2010-05-30 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* minibuf.texi (Basic Completion): Add missing "@end defun".
|
||||
|
||||
2010-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* minibuf.texi (Basic Completion): Document completion-boundaries.
|
||||
(Programmed Completion): Document the new fourth method for boundaries.
|
||||
|
||||
2010-05-22 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* display.texi (Image Cache): Update documentation about image
|
||||
caching.
|
||||
|
||||
2010-05-08 Štěpán Němec <stepnem@gmail.com> (tiny change)
|
||||
|
||||
* windows.texi (Textual Scrolling):
|
||||
|
@ -4730,29 +4730,35 @@ cache, it can always be displayed, even if the value of
|
||||
efficiently. When Emacs displays an image, it searches the image
|
||||
cache for an existing image specification @code{equal} to the desired
|
||||
specification. If a match is found, the image is displayed from the
|
||||
cache; otherwise, Emacs loads the image normally.
|
||||
cache. Otherwise, Emacs loads the image normally.
|
||||
|
||||
Occasionally, you may need to tell Emacs to refresh the images
|
||||
associated with a given image specification. For example, suppose you
|
||||
display an image using a specification that contains a @code{:file}
|
||||
property. The image is automatically cached, and subsequent displays
|
||||
of that image, with the same image specification, will use the image
|
||||
cache. If the image file changes in the meantime, Emacs would be
|
||||
displaying the old version of the image. In such a situation, you can
|
||||
``refresh'' the image by calling @code{image-refresh}.
|
||||
@defun image-flush spec &optional frame
|
||||
This function removes the image with specification @var{spec} from the
|
||||
image cache of frame @var{frame}. Image specifications are compared
|
||||
using @code{equal}. If @var{frame} is @code{nil}, it defaults to the
|
||||
selected frame. If @var{frame} is @code{t}, the image is flushed on
|
||||
all existing frames.
|
||||
|
||||
In Emacs' current implementation, each graphical terminal possesses
|
||||
an image cache, which is shared by all the frames on that terminal
|
||||
In Emacs' current implementation, each graphical terminal possesses an
|
||||
image cache, which is shared by all the frames on that terminal
|
||||
(@pxref{Multiple Terminals}). Thus, refreshing an image in one frame
|
||||
also refreshes it in all other frames on the same terminal.
|
||||
|
||||
@defun image-refresh spec &optional frame
|
||||
This function refreshes any images with image specifications
|
||||
@code{equal} to @var{spec} on frame @var{frame}. If @var{frame} is
|
||||
@code{nil}, it defaults to the selected frame. If @var{frame} is
|
||||
@code{t}, the refresh is applied to all existing frames.
|
||||
@end defun
|
||||
|
||||
One use for @code{image-flush} is to tell Emacs about a change in an
|
||||
image file. If an image specification contains a @code{:file}
|
||||
property, the image is cached based on the file's contents when the
|
||||
image is first displayed. Even if the file subsequently changes,
|
||||
Emacs continues displaying the old version of the image. Calling
|
||||
@code{image-flush} flushes the image from the cache, forcing Emacs to
|
||||
re-read the file the next time it needs to display that image.
|
||||
|
||||
Another use for @code{image-flush} is for memory conservation. If
|
||||
your Lisp program creates a large number of temporary images over a
|
||||
period much shorter than @code{image-cache-eviction-delay} (see
|
||||
below), you can opt to flush unused images yourself, instead of
|
||||
waiting for Emacs to do it automatically.
|
||||
|
||||
@defun clear-image-cache &optional filter
|
||||
This function clears an image cache, removing all the images stored in
|
||||
it. If @var{filter} is omitted or @code{nil}, it clears the cache for
|
||||
@ -4768,9 +4774,12 @@ period of time, Emacs removes it from the cache and frees the
|
||||
associated memory.
|
||||
|
||||
@defvar image-cache-eviction-delay
|
||||
This variable specifies the number of seconds an image can remain in the
|
||||
cache without being displayed. When an image is not displayed for this
|
||||
length of time, Emacs removes it from the image cache.
|
||||
This variable specifies the number of seconds an image can remain in
|
||||
the cache without being displayed. When an image is not displayed for
|
||||
this length of time, Emacs removes it from the image cache.
|
||||
|
||||
Under some circumstances, if the number of images in the cache grows
|
||||
too large, the actual eviction delay may be shorter than this.
|
||||
|
||||
If the value is @code{nil}, Emacs does not remove images from the cache
|
||||
except when you explicitly clear it. This mode can be useful for
|
||||
|
@ -814,6 +814,25 @@ the values @var{string}, @var{predicate} and @code{lambda}; whatever
|
||||
it returns, @code{test-completion} returns in turn.
|
||||
@end defun
|
||||
|
||||
@defun completion-boundaries string collection predicate suffix
|
||||
This function returns the boundaries of the field on which @var{collection}
|
||||
will operate, assuming that @var{string} holds the text before point
|
||||
and @var{suffix} holds the text after point.
|
||||
|
||||
Normally completion operates on the whole string, so for all normal
|
||||
collections, this will always return @code{(0 . (length
|
||||
@var{suffix}))}. But more complex completion such as completion on
|
||||
files is done one field at a time. For example, completion of
|
||||
@code{"/usr/sh"} will include @code{"/usr/share/"} but not
|
||||
@code{"/usr/share/doc"} even if @code{"/usr/share/doc"} exists.
|
||||
Also @code{all-completions} on @code{"/usr/sh"} will not include
|
||||
@code{"/usr/share/"} but only @code{"share/"}. So if @var{string} is
|
||||
@code{"/usr/sh"} and @var{suffix} is @code{"e/doc"},
|
||||
@code{completion-boundaries} will return @code{(5 . 1)} which tells us
|
||||
that the @var{collection} will only return completion information that
|
||||
pertains to the area after @code{"/usr/"} and before @code{"/doc"}.
|
||||
@end defun
|
||||
|
||||
If you store a completion alist in a variable, you should mark the
|
||||
variable as ``risky'' with a non-@code{nil}
|
||||
@code{risky-local-variable} property. @xref{File Local Variables}.
|
||||
@ -1618,13 +1637,14 @@ containing all the intended possible completions. In such a case, you
|
||||
can supply your own function to compute the completion of a given
|
||||
string. This is called @dfn{programmed completion}. Emacs uses
|
||||
programmed completion when completing file names (@pxref{File Name
|
||||
Completion}).
|
||||
Completion}), among many other cases.
|
||||
|
||||
To use this feature, pass a symbol with a function definition as the
|
||||
@var{collection} argument to @code{completing-read}. The function
|
||||
To use this feature, pass a function as the @var{collection}
|
||||
argument to @code{completing-read}. The function
|
||||
@code{completing-read} arranges to pass your completion function along
|
||||
to @code{try-completion} and @code{all-completions}, which will then let
|
||||
your function do all the work.
|
||||
to @code{try-completion}, @code{all-completions}, and other basic
|
||||
completion functions, which will then let your function do all
|
||||
the work.
|
||||
|
||||
The completion function should accept three arguments:
|
||||
|
||||
@ -1638,10 +1658,14 @@ none. Your function should call the predicate for each possible match,
|
||||
and ignore the possible match if the predicate returns @code{nil}.
|
||||
|
||||
@item
|
||||
A flag specifying the type of operation.
|
||||
A flag specifying the type of operation. The best way to think about
|
||||
it is that the function stands for an object (in the
|
||||
``object-oriented'' sense of the word), and this third argument
|
||||
specifies which method to run.
|
||||
@end itemize
|
||||
|
||||
There are three flag values for three operations:
|
||||
There are currently four methods, i.e. four flag values, one for
|
||||
each of the four different basic operations:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@ -1663,6 +1687,13 @@ string.
|
||||
@code{lambda} specifies @code{test-completion}. The completion
|
||||
function should return @code{t} if the specified string is an exact
|
||||
match for some possibility; @code{nil} otherwise.
|
||||
|
||||
@item
|
||||
@code{(boundaries . SUFFIX)} specifies @code{completion-boundaries}.
|
||||
The function should return a value of the form @code{(boundaries
|
||||
START . END)} where START is the position of the beginning boundary in
|
||||
in the string to complete, and END is the position of the end boundary
|
||||
in SUFFIX.
|
||||
@end itemize
|
||||
|
||||
It would be consistent and clean for completion functions to allow
|
||||
|
@ -362,7 +362,7 @@ the two brackets are what this character alternative can match.
|
||||
|
||||
Thus, @samp{[ad]} matches either one @samp{a} or one @samp{d}, and
|
||||
@samp{[ad]*} matches any string composed of just @samp{a}s and @samp{d}s
|
||||
(including the empty string), from which it follows that @samp{c[ad]*r}
|
||||
(including the empty string). It follows that @samp{c[ad]*r}
|
||||
matches @samp{cr}, @samp{car}, @samp{cdr}, @samp{caddaar}, etc.
|
||||
|
||||
You can also include character ranges in a character alternative, by
|
||||
@ -400,20 +400,11 @@ is @samp{@var{c}..?\377}, the other is @samp{@var{c1}..@var{c2}}, where
|
||||
@var{c1} is the first character of the charset to which @var{c2}
|
||||
belongs.
|
||||
|
||||
You cannot always match all non-@acronym{ASCII} characters with the regular
|
||||
expression @code{"[\200-\377]"}. This works when searching a unibyte
|
||||
buffer or string (@pxref{Text Representations}), but not in a multibyte
|
||||
buffer or string, because many non-@acronym{ASCII} characters have codes
|
||||
above octal 0377. However, the regular expression @code{"[^\000-\177]"}
|
||||
does match all non-@acronym{ASCII} characters (see below regarding @samp{^}),
|
||||
in both multibyte and unibyte representations, because only the
|
||||
@acronym{ASCII} characters are excluded.
|
||||
|
||||
A character alternative can also specify named
|
||||
character classes (@pxref{Char Classes}). This is a POSIX feature whose
|
||||
syntax is @samp{[:@var{class}:]}. Using a character class is equivalent
|
||||
to mentioning each of the characters in that class; but the latter is
|
||||
not feasible in practice, since some classes include thousands of
|
||||
A character alternative can also specify named character classes
|
||||
(@pxref{Char Classes}). This is a POSIX feature whose syntax is
|
||||
@samp{[:@var{class}:]}. Using a character class is equivalent to
|
||||
mentioning each of the characters in that class; but the latter is not
|
||||
feasible in practice, since some classes include thousands of
|
||||
different characters.
|
||||
|
||||
@item @samp{[^ @dots{} ]}
|
||||
@ -431,6 +422,10 @@ A complemented character alternative can match a newline, unless newline is
|
||||
mentioned as one of the characters not to match. This is in contrast to
|
||||
the handling of regexps in programs such as @code{grep}.
|
||||
|
||||
You can specify named character classes, just like in character
|
||||
alternatives. For instance, @samp{[^[:ascii:]]} matches any
|
||||
non-@acronym{ASCII} character. @xref{Char Classes}.
|
||||
|
||||
@item @samp{^}
|
||||
@cindex beginning of line in regexp
|
||||
When matching a buffer, @samp{^} matches the empty string, but only at the
|
||||
|
@ -1,3 +1,21 @@
|
||||
2010-06-07 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* gnus.texi (Interactive): Explain effect of gnus-expert-user better.
|
||||
|
||||
2010-05-26 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* eshell.texi (Built-ins): Describe, how to disable a built-in command
|
||||
by an alias. (Bug#6226)
|
||||
|
||||
2010-05-16 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* calc.texi (Manipulating Vectors): Mention that vectors can
|
||||
be used to determine bins for `calc-histogram'.
|
||||
|
||||
2010-05-13 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* calc.texi: Remove "\turnoffactive" commands throughout.
|
||||
|
||||
2010-05-08 Štěpán Němec <stepnem@gmail.com> (tiny change)
|
||||
|
||||
* url.texi (HTTP language/coding, Customization):
|
||||
@ -2299,10 +2317,6 @@
|
||||
|
||||
* gnus-news.texi, gnus-coding.texi, sasl.texi: New files.
|
||||
|
||||
2007-10-28 Emanuele Giaquinta <e.giaquinta@glauco.it> (tiny change)
|
||||
|
||||
* gnus-faq.texi ([5.12]): Remove reference to discontinued service.
|
||||
|
||||
2007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* gnus.texi (Sorting the Summary Buffer): Remove
|
||||
@ -3838,19 +3852,6 @@
|
||||
|
||||
* org.texi (Progress logging): New section.
|
||||
|
||||
2006-05-29 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* viper.texi (Viper Specials):
|
||||
* gnus.texi (Example Setup):
|
||||
* faq.texi (Backspace invokes help):
|
||||
* dired-x.texi (Optional Installation Dired Jump):
|
||||
* calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
|
||||
follow coding conventions.
|
||||
|
||||
2006-05-18 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
|
||||
|
||||
2006-06-06 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi (ASCII export): Document indentation adaptation.
|
||||
@ -3898,6 +3899,15 @@
|
||||
|
||||
* org.texi: Small typo fixes.
|
||||
|
||||
2006-05-29 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* viper.texi (Viper Specials):
|
||||
* gnus.texi (Example Setup):
|
||||
* faq.texi (Backspace invokes help):
|
||||
* dired-x.texi (Optional Installation Dired Jump):
|
||||
* calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
|
||||
follow coding conventions.
|
||||
|
||||
2006-05-29 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (Frequently Asked Questions): Disable zsh zle.
|
||||
@ -4454,10 +4464,6 @@
|
||||
|
||||
* gnus.texi (Article Washing): Additions.
|
||||
|
||||
2006-01-08 Alex Schroeder <alex@gnu.org>
|
||||
|
||||
* pgg.texi (Caching passphrase): Rewording.
|
||||
|
||||
2006-01-13 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi (Agenda commands): Document tags command.
|
||||
|
@ -76,7 +76,6 @@
|
||||
@newcount@calcpageno
|
||||
@newtoks@calcoldeverypar @calcoldeverypar=@everypar
|
||||
@everypar={@calceverypar@the@calcoldeverypar}
|
||||
@ifx@turnoffactive@undefinedzzz@def@turnoffactive{}@fi
|
||||
@ifx@ninett@undefinedzzz@font@ninett=cmtt9@fi
|
||||
@catcode`@\=0 \catcode`\@=11
|
||||
\r@ggedbottomtrue
|
||||
@ -1804,7 +1803,6 @@ or, in large mathematical notation,
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ 2 + { 3 \times 4 \times 5 \over 6 \times 7^8 } - 9 $$
|
||||
\afterdisplay
|
||||
@ -3358,7 +3356,6 @@ Suppose we had the following set of equations:
|
||||
@end group
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplayh
|
||||
$$ \openup1\jot \tabskip=0pt plus1fil
|
||||
\halign to\displaywidth{\tabskip=0pt
|
||||
@ -3385,7 +3382,6 @@ This can be cast into the matrix equation,
|
||||
@end group
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \pmatrix{ 1 & 2 & 3 \cr 4 & 5 & 6 \cr 7 & 6 & 0 }
|
||||
\times
|
||||
@ -3457,7 +3453,6 @@ in terms of @expr{a} and @expr{b}.
|
||||
@end group
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \eqalign{ x &+ a y = 6 \cr
|
||||
x &+ b y = 10}
|
||||
@ -3483,7 +3478,6 @@ on the left by the transpose of @expr{A}:
|
||||
@samp{trn(A)*A*X = trn(A)*B}.
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
$A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}.
|
||||
@end tex
|
||||
Now
|
||||
@ -3506,7 +3500,6 @@ system:
|
||||
@end group
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplayh
|
||||
$$ \openup1\jot \tabskip=0pt plus1fil
|
||||
\halign to\displaywidth{\tabskip=0pt
|
||||
@ -3778,7 +3771,6 @@ m = (N sum(x y) - sum(x) sum(y)) / (N sum(x^2) - sum(x)^2)
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ m = {N \sum x y - \sum x \sum y \over
|
||||
N \sum x^2 - \left( \sum x \right)^2} $$
|
||||
@ -3820,7 +3812,6 @@ respectively. (We could have used @kbd{*} to compute @samp{sum(x^2)} and
|
||||
@samp{sum(x y)}.)
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
These are $\sum x$, $\sum x^2$, $\sum y$, and $\sum x y$,
|
||||
respectively. (We could have used \kbd{*} to compute $\sum x^2$ and
|
||||
$\sum x y$.)
|
||||
@ -3874,7 +3865,6 @@ b = (sum(y) - m sum(x)) / N
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ b = {\sum y - m \sum x \over N} $$
|
||||
\afterdisplay
|
||||
@ -5223,7 +5213,6 @@ down to the formula,
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \displaylines{
|
||||
\qquad {h \over 3} (f(a) + 4 f(a+h) + 2 f(a+2h) + 4 f(a+3h) + \cdots
|
||||
@ -5245,7 +5234,6 @@ h * (f(a) + f(a+h) + f(a+2h) + f(a+3h) + ...
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ h (f(a) + f(a+h) + f(a+2h) + f(a+3h) + \cdots
|
||||
+ f(a+(n-2)h) + f(a+(n-1)h)) $$
|
||||
@ -5686,7 +5674,6 @@ cos(x) = 1 - x^2 / 2! + x^4 / 4! - x^6 / 6! + ...
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \cos x = 1 - {x^2 \over 2!} + {x^4 \over 4!} - {x^6 \over 6!} + \cdots $$
|
||||
\afterdisplay
|
||||
@ -5704,7 +5691,6 @@ cos(x) = 1 - x^2 / 2! + O(x^3)
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \cos x = 1 - {x^2 \over 2!} + O(x^3) $$
|
||||
\afterdisplay
|
||||
@ -6336,7 +6322,6 @@ s(n+1,m) = s(n,m-1) - n s(n,m) for n >= m >= 1.
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \eqalign{ s(n,n) &= 1 \qquad \hbox{for } n \ge 0, \cr
|
||||
s(n,0) &= 0 \qquad \hbox{for } n > 0, \cr
|
||||
@ -6875,7 +6860,6 @@ get the row sum. Similarly, use @kbd{[1 1] r 4 *} to get the column sum.
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \eqalign{ x &+ a y = 6 \cr
|
||||
x &+ b y = 10}
|
||||
@ -6939,7 +6923,6 @@ which we can solve using Calc's @samp{/} command.
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplayh
|
||||
$$ \openup1\jot \tabskip=0pt plus1fil
|
||||
\halign to\displaywidth{\tabskip=0pt
|
||||
@ -7074,7 +7057,6 @@ the first job is to form the matrix that describes the problem.
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ m \times x + b \times 1 = y $$
|
||||
\afterdisplay
|
||||
@ -7865,7 +7847,6 @@ So the result when we take the modulo after every step is,
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ 3 (3 a + b - 511 m) + c - 511 n $$
|
||||
\afterdisplay
|
||||
@ -7881,7 +7862,6 @@ the distributive law yields
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ 9 a + 3 b + c - 511\times3 m - 511 n $$
|
||||
\afterdisplay
|
||||
@ -7899,7 +7879,6 @@ term. So we can take it out to get an equivalent formula with
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ 9 a + 3 b + c - 511 n^{\prime} $$
|
||||
\afterdisplay
|
||||
@ -14408,7 +14387,6 @@ $$ \sin\left( a^2 \over b_i \right) $$
|
||||
@end group
|
||||
@end example
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ [3 + 4i, {3 \over 4}, 3 \pm 4, [ 3 \ldots \infty)] $$
|
||||
@end tex
|
||||
@sp 1
|
||||
@ -14434,7 +14412,6 @@ $$ [|a|, \left| a \over b \right|,
|
||||
@end group
|
||||
@end example
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ [\sin{a}, \sin{2 a}, \sin(2 + a), \sin\left( {a \over b} \right)] $$
|
||||
@end tex
|
||||
@sp 2
|
||||
@ -14467,7 +14444,6 @@ First with @samp{\def\evalto@{@}}, then with @samp{\def\evalto#1\to@{@}}:
|
||||
@end group
|
||||
@end example
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ 2 + 3 \to 5 $$
|
||||
$$ 5 $$
|
||||
@end tex
|
||||
@ -14482,7 +14458,6 @@ First with standard @code{\to}, then with @samp{\let\to\Rightarrow}:
|
||||
@end group
|
||||
@end example
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$
|
||||
{\let\to\Rightarrow
|
||||
$$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$}
|
||||
@ -14499,7 +14474,6 @@ Matrices normally, then changing @code{\matrix} to @code{\pmatrix}:
|
||||
@end group
|
||||
@end example
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \matrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
|
||||
$$ \pmatrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
|
||||
@end tex
|
||||
@ -17935,7 +17909,6 @@ ddb(cost, salv, life, per) = --------, book = cost - depreciation so far
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \code{fv}(r, n, p) = p { (1 + r)^n - 1 \over r } $$
|
||||
$$ \code{fvb}(r, n, p) = p { ((1 + r)^n - 1) (1 + r) \over r } $$
|
||||
$$ \code{fvl}(r, n, p) = p (1 + r)^n $$
|
||||
@ -18591,7 +18564,6 @@ letter gamma). You can obtain these using the @kbd{H f G} [@code{gammag}]
|
||||
and @kbd{H I f G} [@code{gammaG}] commands.
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
The functions corresponding to the integrals that define $P(a,x)$
|
||||
and $Q(a,x)$ but without the normalizing $1/\Gamma(a)$
|
||||
factor are called $\gamma(a,x)$ and $\Gamma(a,x)$, respectively.
|
||||
@ -20058,6 +20030,20 @@ range are ignored. (You can tell if elements have been ignored by noting
|
||||
that the counts in the result vector don't add up to the length of the
|
||||
input vector.)
|
||||
|
||||
If no prefix is given, then you will be prompted for a vector which
|
||||
will be used to determine the bins. (If a positive integer is given at
|
||||
this prompt, it will be still treated as if it were given as a
|
||||
prefix.) Each bin will consist of the interval of numbers closest to
|
||||
the corresponding number of this new vector; if the vector
|
||||
@expr{[a, b, c, ...]} is entered at the prompt, the bins will be
|
||||
@expr{(-inf, (a+b)/2]}, @expr{((a+b)/2, (b+c)/2]}, etc. The result of
|
||||
this command will be a vector counting how many elements of the
|
||||
original vector are in each bin.
|
||||
|
||||
The result will then be a vector with the same length as this new vector;
|
||||
each element of the new vector will be replaced by the number of
|
||||
elements of the original vector which are closest to it.
|
||||
|
||||
@kindex H v H
|
||||
@kindex H V H
|
||||
With the Hyperbolic flag, @kbd{H V H} pulls two vectors from the stack.
|
||||
@ -20559,7 +20545,6 @@ this is the weighted mean of the @expr{x} values with weights
|
||||
@texline @math{1 /\sigma^2}.
|
||||
@infoline @expr{1 / s^2}.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \mu = { \displaystyle \sum { x_i \over \sigma_i^2 } \over
|
||||
\displaystyle \sum { 1 \over \sigma_i^2 } } $$
|
||||
@end tex
|
||||
@ -20593,7 +20578,6 @@ root of the reciprocal of the sum of the reciprocals of the squares
|
||||
of the input errors. (I.e., the variance is the reciprocal of the
|
||||
sum of the reciprocals of the variances.)
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sigma_\mu^2 = {1 \over \displaystyle \sum {1 \over \sigma_i^2}} $$
|
||||
@end tex
|
||||
If the inputs are plain
|
||||
@ -20603,7 +20587,6 @@ out to be equivalent to calculating the standard deviation and
|
||||
then assuming each value's error is equal to this standard
|
||||
deviation.)
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sigma_\mu^2 = {\sigma^2 \over N} $$
|
||||
@end tex
|
||||
|
||||
@ -20636,7 +20619,6 @@ command computes the harmonic mean of the data values. This is
|
||||
defined as the reciprocal of the arithmetic mean of the reciprocals
|
||||
of the values.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ { N \over \displaystyle \sum {1 \over x_i} } $$
|
||||
@end tex
|
||||
|
||||
@ -20650,7 +20632,6 @@ is the @var{n}th root of the product of the values. This is also
|
||||
equal to the @code{exp} of the arithmetic mean of the logarithms
|
||||
of the data values.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \exp \left ( \sum { \ln x_i } \right ) =
|
||||
\left ( \prod { x_i } \right)^{1 / N} $$
|
||||
@end tex
|
||||
@ -20662,7 +20643,6 @@ mean'' of two numbers taken from the stack. This is computed by
|
||||
replacing the two numbers with their arithmetic mean and geometric
|
||||
mean, then repeating until the two values converge.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ a_{i+1} = { a_i + b_i \over 2 } , \qquad b_{i+1} = \sqrt{a_i b_i} $$
|
||||
@end tex
|
||||
|
||||
@ -20685,7 +20665,6 @@ deviation, whose value is the square root of the sum of the squares of
|
||||
the differences between the values and the mean of the @expr{N} values,
|
||||
divided by @expr{N-1}.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sigma^2 = {1 \over N - 1} \sum (x_i - \mu)^2 $$
|
||||
@end tex
|
||||
|
||||
@ -20712,7 +20691,6 @@ is used when the input represents a sample of the set of all
|
||||
data values, so that the mean computed from the input is itself
|
||||
only an estimate of the true mean.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sigma^2 = {1 \over N} \sum (x_i - \mu)^2 $$
|
||||
@end tex
|
||||
|
||||
@ -20777,7 +20755,6 @@ are composed of error forms, the error for a given data point
|
||||
is taken as the square root of the sum of the squares of the two
|
||||
input errors.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sigma_{x\!y}^2 = {1 \over N-1} \sum (x_i - \mu_x) (y_i - \mu_y) $$
|
||||
$$ \sigma_{x\!y}^2 =
|
||||
{\displaystyle {1 \over N-1}
|
||||
@ -20805,7 +20782,6 @@ This is defined by the covariance of the vectors divided by the
|
||||
product of their standard deviations. (There is no difference
|
||||
between sample or population statistics here.)
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ r_{x\!y} = { \sigma_{x\!y}^2 \over \sigma_x^2 \sigma_y^2 } $$
|
||||
@end tex
|
||||
|
||||
@ -24361,8 +24337,6 @@ For example, suppose the data matrix
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \pmatrix{ 1 & 2 & 3 & 4 & 5 \cr
|
||||
5 & 7 & 9 & 11 & 13 }
|
||||
@ -24422,7 +24396,6 @@ chi^2 = sum((y_i - (a + b x_i))^2, i, 1, N)
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \chi^2 = \sum_{i=1}^N (y_i - (a + b x_i))^2 $$
|
||||
\afterdisplay
|
||||
@ -24613,7 +24586,6 @@ chi^2 = sum(((y_i - (a + b x_i)) / sigma_i)^2, i, 1, N)
|
||||
@end example
|
||||
@end ifnottex
|
||||
@tex
|
||||
\turnoffactive
|
||||
\beforedisplay
|
||||
$$ \chi^2 = \sum_{i=1}^N \left(y_i - (a + b x_i) \over \sigma_i\right)^2 $$
|
||||
\afterdisplay
|
||||
@ -25388,7 +25360,6 @@ any later ones are answered by reading additional elements from
|
||||
the stack. Thus, @kbd{' k^2 @key{RET} ' k @key{RET} 1 @key{RET} 5 @key{RET} a + @key{RET}}
|
||||
produces the result 55.
|
||||
@tex
|
||||
\turnoffactive
|
||||
$$ \sum_{k=1}^5 k^2 = 55 $$
|
||||
@end tex
|
||||
|
||||
|
@ -369,6 +369,17 @@ eshell/ls is a compiled Lisp function in `em-ls.el'
|
||||
/bin/ls
|
||||
@end example
|
||||
|
||||
If you want to discard a given built-in command, you could declare an
|
||||
alias, @ref{Aliases}. Eample:
|
||||
|
||||
@example
|
||||
~ $ which sudo
|
||||
eshell/sudo is a compiled Lisp function in `em-unix.el'
|
||||
~ $ alias sudo '*sudo $*'
|
||||
~ $ which sudo
|
||||
sudo is an alias, defined as "*sudo $*"
|
||||
@end example
|
||||
|
||||
Some of the built-in commands have a special behaviour in Eshell:
|
||||
|
||||
@table @code
|
||||
|
@ -22906,8 +22906,11 @@ default.
|
||||
@item gnus-expert-user
|
||||
@vindex gnus-expert-user
|
||||
If this variable is non-@code{nil}, you will seldom be asked any
|
||||
questions by Gnus. It will simply assume you know what you're doing, no
|
||||
matter how strange.
|
||||
questions by Gnus. It will simply assume you know what you're doing,
|
||||
no matter how strange. For example, quitting Gnus, exiting a group
|
||||
without an update, catching up with a group, deleting expired
|
||||
articles, and replying by mail to a news message will not require
|
||||
confirmation.
|
||||
|
||||
@item gnus-interactive-catchup
|
||||
@vindex gnus-interactive-catchup
|
||||
|
@ -1,3 +1,20 @@
|
||||
2010-06-09 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* NEWS: Add notifications.el.
|
||||
|
||||
2010-05-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* MACHINES: Remove some old information no longer of relevance.
|
||||
Switch to outline-mode.
|
||||
|
||||
2010-05-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* PROBLEMS: Remove old information no longer of relevance.
|
||||
|
||||
2010-05-24 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* NEWS: Add sections for Emacs-23.3.
|
||||
|
||||
2010-05-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* PROBLEMS: Document gcc-4.5 bug (Bug#6031).
|
||||
@ -43,8 +60,7 @@
|
||||
|
||||
2010-03-24 Francesc Rocher <rocher@member.fsf.org>
|
||||
|
||||
* MORE.STUFF: Remove CEDET entry, now distributed as part of
|
||||
Emacs.
|
||||
* MORE.STUFF: Remove CEDET entry, now distributed as part of Emacs.
|
||||
|
||||
2010-03-22 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
|
@ -627,8 +627,7 @@ CPU-specific headers in the subdirectories of `src'):
|
||||
|
||||
- In src/s/SYSTEM-NAME.h add "#define SYSTEM_MALLOC".
|
||||
|
||||
- In src/m/MACHINE-NAME.h add "#define CANNOT_DUMP" and
|
||||
"#define CANNOT_UNEXEC".
|
||||
- In src/m/MACHINE-NAME.h add "#define CANNOT_DUMP"
|
||||
|
||||
- Configure with a different --prefix= option. If you use GCC,
|
||||
version 2.7.2 is preferred, as some malloc debugging packages
|
||||
|
326
etc/MACHINES
326
etc/MACHINES
@ -6,9 +6,9 @@ See the end of the file for license conditions.
|
||||
|
||||
This is a list of the status of GNU Emacs on various machines and systems.
|
||||
|
||||
For each system and machine, we give the configuration name you should
|
||||
pass to the `configure' script to prepare to build Emacs for that
|
||||
system/machine.
|
||||
Information about older releases, and platforms that are no longer
|
||||
supported, has been removed. Consult older versions of this file if
|
||||
you are interested in this information.
|
||||
|
||||
The `configure' script uses the configuration name to decide which
|
||||
machine and operating system description files `src/config.h' should
|
||||
@ -25,16 +25,10 @@ configuration name(s) should select your new machine description and
|
||||
system description files.
|
||||
|
||||
Some obsolete platforms are unsupported beginning with Emacs 23.1, see
|
||||
the full list at the end of this file.
|
||||
the list at the end of this file.
|
||||
|
||||
|
||||
Here are the configurations Emacs is intended to work with, with the
|
||||
corresponding configuration names. You can postpend version numbers
|
||||
to operating system names (i.e. sunos4.1) or architecture names (i.e.
|
||||
hppa1.1). If you leave out the version number, the `configure' script
|
||||
will configure Emacs for the latest version it knows about.
|
||||
|
||||
Alpha (DEC) running GNU/Linux (alpha-dec-linux-gnu)
|
||||
** Alpha (DEC) running GNU/Linux (alpha-dec-linux-gnu)
|
||||
|
||||
DEC C compiler version 5.9 (DEC C V5.9-005 on Digital UNIX V4.0f)
|
||||
is reported to produce bogus binaries of Emacs 21.2 when the
|
||||
@ -47,125 +41,26 @@ Alpha (DEC) running GNU/Linux (alpha-dec-linux-gnu)
|
||||
versions fail to build with a message "Invalid dimension for the
|
||||
charset-ID 160".
|
||||
|
||||
Note that the X11 libraries on GNU/Linux systems for the Alpha are
|
||||
said to have bugs that prevent Emacs from working with X (as of
|
||||
November 1995). Recent releases work (July 2000).
|
||||
** Apple Macintosh running Mac OS X
|
||||
|
||||
Apple Macintosh running Mac OS X
|
||||
** Apple PowerPC Macintosh running GNU/Linux
|
||||
|
||||
For installation instructions see the file nextstep/INSTALL.
|
||||
|
||||
Apple PowerPC Macintosh running GNU/Linux
|
||||
|
||||
There are special considerations for a variety of this system which
|
||||
is known as the ``Yellow Dog [GNU/]Linux'': Emacs may crash during
|
||||
dumping. To solve this, edit the header file src/m/macppc.h in the
|
||||
Emacs distribution, and remove the "#if 0" and "#endif" directives
|
||||
which surround the following block near the end of the file:
|
||||
|
||||
#if 0 /* This breaks things on PPC GNU/Linux except for Yellowdog,
|
||||
even with identical GCC, as, ld. Let's take it out until we
|
||||
know what's really going on here. */
|
||||
/* GCC 2.95 and newer on GNU/Linux PPC changed the load address to
|
||||
0x10000000. */
|
||||
#if defined __linux__
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
|
||||
#define DATA_SEG_BITS 0x10000000
|
||||
#endif
|
||||
#endif
|
||||
#endif /* 0 */
|
||||
|
||||
After that, reconfigure and rebuild Emacs. It should now build
|
||||
successfully.
|
||||
|
||||
Cubix QBx/386 (i386-cubix-sysv)
|
||||
|
||||
Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c
|
||||
due to a compiler bug.
|
||||
|
||||
Motorola Delta 147 (m68k-motorola-sysv)
|
||||
|
||||
The EMacs 19.26 pretest was reported to work.
|
||||
|
||||
Motorola Delta boxes running System V/68 release 3.
|
||||
Tested on 147 board with SVR3V7, no X and gcc.
|
||||
Tested on 167 board with SVR3V7, no X, cc, gnucc and gcc.
|
||||
Reports say it works with X too.
|
||||
|
||||
The installation script chooses the compiler itself. gnucc is
|
||||
preferred.
|
||||
|
||||
Fujitsu DS/90 (sparc-fujitsu-sysv4)
|
||||
|
||||
Changes merged in 20.3.
|
||||
|
||||
HP 9000 series 700 or 800 (Spectrum) (hppa1.0-hp-hpux or hppa1.1-hp-hpux
|
||||
or ...hpux9shr)
|
||||
|
||||
Use hppa1.1 for the 700 series and hppa1.0 for the 800
|
||||
series machines. (Emacs may not actually care which one you use.)
|
||||
** HP 9000 series 700 or 800 (Spectrum) (hppa1.0-hp-hpux or hppa1.1-hp-hpux)
|
||||
|
||||
Emacs 20 may work on HPUX 10. You need patch PHSS_6202 to install
|
||||
the Xaw and Xmu libraries. On HPUX 10.20 you may need to compile with GCC;
|
||||
when Emacs was compiled with HP's C compiler, HP92453-01 A.10.32.03,
|
||||
the subprocess features failed to work.
|
||||
|
||||
19.26 is believed to work on HPUX 9 provided you compile with GCC.
|
||||
As of version 19.16, Emacs was reported to build (using GCC) and run
|
||||
on HP 9000/700 series machines running HP/UX versions 8.07 and 9.01.
|
||||
The HP compiler is known to fail on some versions if you use +O3,
|
||||
but it may work with lower optimization levels.
|
||||
|
||||
Use hppa1.1-hp-hpux9shr to use shared libraries on HPUX version 9.
|
||||
You may need to create the X libraries libXaw.a and libXmu.a from
|
||||
the MIT X distribute, and you may need to edit src/Makefile's
|
||||
definition of LIBXT to look like this:
|
||||
|
||||
LIBXT= $(LIBW) -lXmu -lXt $(LIBXTR6) -lXext
|
||||
|
||||
Some people report trouble using the GNU memory allocator under
|
||||
HP/UX version 9. The problems often manifest as lots of ^@'s in the
|
||||
buffer.
|
||||
|
||||
We are told that these problems go away if you obtain the latest
|
||||
patches for the HP/UX C compiler. James J Dempsey
|
||||
<jjd@spserv.bbn.com> says that this set of versions works for him:
|
||||
/bin/cc:
|
||||
HP92453-01 A.09.28 HP C Compiler
|
||||
/lib/ccom:
|
||||
HP92453-01 A.09.28 HP C Compiler
|
||||
HP-UX SLLIC/OPTIMIZER HP-UX.09.00.23 02/18/93
|
||||
Ucode Code Generator - HP-UX.09.00.23.5 (patch) 2/18/93
|
||||
|
||||
For 700 series machines, the HP-UX patch needed is known as
|
||||
PHSS_2653. (Perhaps for 800 series machines as well; we don't
|
||||
know.) If you are on the Internet, you should be able to obtain
|
||||
this patch by using telnet to access the machine
|
||||
support.mayfield.hp.com and logging in as "hpslreg" and following
|
||||
the instructions there. Or you may be able to use this
|
||||
web site:
|
||||
|
||||
HP Patch Server: http://support.mayfield.hp.com/patches/html/patches.html
|
||||
HP Support Line: http://support.mayfield.hp.com
|
||||
|
||||
Please do not ask FSF for further support on this. If you have any
|
||||
trouble obtaining the patch, contact HP Software Support.
|
||||
|
||||
If your buffer fills up with nulls (^@) at some point, it could well
|
||||
be that problem. That problem does not happen when people use GCC
|
||||
to compile Emacs. On the other hand, the HP compiler version 9.34
|
||||
was reported to work for the 19.26 pretest. 9.65 was also reported to work.
|
||||
|
||||
If you turn on the DSUSP character (delayed suspend),
|
||||
Emacs 19.26 does not know how to turn it off on HPUX.
|
||||
You need to turn it off manually.
|
||||
If you turn on the DSUSP character (delayed suspend), Emacs 19.26
|
||||
does not know how to turn it off on HPUX. You need to turn it off manually.
|
||||
|
||||
If you are running HP/UX release 8.0 or later, you need the optional
|
||||
"C/ANSI C" software in order to build Emacs (older releases of HP/UX
|
||||
do not require any special software). If the file "/etc/filesets/C"
|
||||
exists on your machine, you have this software, otherwise you do not.
|
||||
|
||||
IBM RS/6000 (rs6000-ibm-aix*)
|
||||
** IBM RS/6000 (rs6000-ibm-aix*)
|
||||
|
||||
Emacs 19.26 is believed to work; its pretest was tested.
|
||||
|
||||
@ -180,32 +75,22 @@ IBM RS/6000 (rs6000-ibm-aix*)
|
||||
persons say that the tty VMIN and VTIME settings have been
|
||||
corrupted; if you have a fix, please send it to us.
|
||||
|
||||
Compiling with -O using the IBM compiler has been known
|
||||
to make Emacs work incorrectly. It's reported that on
|
||||
AIX 3.2.5 with an IBM compiler earlier than 1.03.00.14,
|
||||
cc -O fails for some files. You need to install any
|
||||
PTF containing APAR #IX42810 to bring the compiler to
|
||||
the 1.03.00.14 level to allow optimized compiles.
|
||||
|
||||
There are reports that IBM compiler versions earlier than 1.03.00.02
|
||||
fail even without -O. However, another report said that compiler
|
||||
version 1.02.01.00 did work, on AIX 3.2.4, with Emacs 19.31.
|
||||
Compiling with -O using the IBM compiler has been known to make
|
||||
Emacs work incorrectly. There are reports that IBM compiler versions
|
||||
earlier than 1.03.00.02 fail even without -O.
|
||||
|
||||
As of 19.11, if you strip the Emacs executable, it ceases to work.
|
||||
|
||||
If anyone can fix the above problems, or confirm that they don't happen
|
||||
with certain versions of various programs, we would appreciate it.
|
||||
|
||||
IBM System/390 running GNU/Linux (s390-*-linux-gnu)
|
||||
** IBM System/390 running GNU/Linux (s390-*-linux-gnu)
|
||||
|
||||
As of Emacs 21.2, a 31-bit only version is supported on this
|
||||
system.
|
||||
As of Emacs 21.2, a 31-bit only version is supported on this system.
|
||||
|
||||
Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
i386-*-sol2.4, i386-intsys-sysv,
|
||||
i386-*-sysv4, i386-*-sysv4.2, i386-*-cygwin,
|
||||
i386-*-msdos, i386-*-windowsnt.
|
||||
i386... can be replaced with i486... or i586...)
|
||||
** Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
i386-*-cygwin, i386-*-msdos, i386-*-windowsnt.
|
||||
i386 can be replaced with i486, i586, or i686)
|
||||
|
||||
In the above configurations, * means that the manufacturer's name
|
||||
you specify does not matter, and you can use any name you like
|
||||
@ -214,12 +99,9 @@ Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
Use i386-*-linux-gnu for GNU/Linux systems; Emacs runs as of version 19.26.
|
||||
Use i386-*-cygwin for Cygwin; Emacs builds as of version 22.1, in both X11
|
||||
and non-X11 modes. (The Cygwin site has source and binaries for 21.2.)
|
||||
Use i386-intsys-sysv for Integrated Solutions 386 machines.
|
||||
It may also be correct for Microport systems.
|
||||
|
||||
On GNU/Linux systems, Emacs 19.23 was said to work properly with libc
|
||||
version 4.5.21, but not with 4.5.19. If your system uses QMAGIC
|
||||
for the executable format, you must edit config.h to define LINUX_QMAGIC.
|
||||
version 4.5.21, but not with 4.5.19.
|
||||
|
||||
On GNU/Linux, configure may fail to put these definitions in config.h:
|
||||
|
||||
@ -232,26 +114,11 @@ Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
It is possible that this problem happens only with X11R6.
|
||||
Newer system versions have fixed it.
|
||||
|
||||
The 19.26 pretest was reported to work on SVR4.3 and on Freebsd.
|
||||
|
||||
19.29 is reported to crash when using Motif on Solaris 2.5.
|
||||
The reasons are not yet known.
|
||||
|
||||
For System V release 4, use i386-*-sysv4.
|
||||
For System V release 4.2, use i386-*-sysv4.2.
|
||||
|
||||
If you are using SCO Unix, see notes at end under SCO.
|
||||
|
||||
On NetBSD and FreeBSD, at one time, it was necessary to use
|
||||
GNU make, not the system's make. Assuming it's installed as gmake,
|
||||
do `gmake install MAKE=gmake'. However, more recently it is
|
||||
reported that using the system Make on NetBSD 1.3.1 works ok.
|
||||
|
||||
If you are using System V release 4.2, you may find that `cc -E'
|
||||
puts spurious spaces in `src/xmakefile'. If that happens,
|
||||
specify CPP=/lib/cpp as an option when you run make.
|
||||
There is no problem if you compile with GCC.
|
||||
|
||||
Note that use of Linux with GCC 2.4 and the DLL 4.4 libraries
|
||||
requires the experimental "net 2" network patches (no relation to
|
||||
Berkeley Net 2). There is a report that (some version of) Linux
|
||||
@ -259,16 +126,6 @@ Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
but no coherent explanation of why that might be so. If it is so,
|
||||
in current versions of Linux, something else should probably be changed.
|
||||
|
||||
Some versions have sys/sioctl.h, and require it in sysdep.c.
|
||||
But some versions do not have sys/sioctl.h.
|
||||
For a given version of the system, this may depend on whether you have
|
||||
X Windows or TCP/IP. Define or undefine NO_SIOCTL_H in config.h
|
||||
according to whether you have the file.
|
||||
|
||||
Likewise, some versions have been known to need sys/ttold.h, sys/stream.h,
|
||||
and sys/ptem.h included in sysdep.c. If your system has these files,
|
||||
try defining NEED_PTEM_H in config.h if you have trouble without it.
|
||||
|
||||
You may find that adding -I/usr/X/include or -I/usr/netinclude or both
|
||||
to CFLAGS avoids compilation errors on certain systems.
|
||||
|
||||
@ -276,14 +133,13 @@ Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
|
||||
but define `struct tc' instead; add `#define tchars tc'
|
||||
to config.h to solve this problem.
|
||||
|
||||
Iris 4D (mips-sgi-irix6.*)
|
||||
** Iris 4D (mips-sgi-irix6.*)
|
||||
|
||||
Emacs 21.3 is reported to work on IRIX 6.5.x.
|
||||
|
||||
You can build a 64-bit executable (with larger maximum buffer size)
|
||||
on Irix 6.5 by specifying the 64-bit ABI using the `-64' compiler
|
||||
flag or otherwise (see cc(1)). This may work on earlier Irix 6
|
||||
systems if you edit src/s/irix6-0.h following irix6-5.h.
|
||||
flag or otherwise (see cc(1)).
|
||||
|
||||
If compiling with GCC on Irix 6 yields an error "conflicting types
|
||||
for `initstate'", install GCC 2.95 or a newer version, and this
|
||||
@ -292,36 +148,7 @@ Iris 4D (mips-sgi-irix6.*)
|
||||
could also try reinstalling the same version of GCC, and telling us
|
||||
whether that fixes the problem.
|
||||
|
||||
NCR Intel system (i386-ncr-sysv4.2)
|
||||
|
||||
This system works in 19.31, but if you don't link it with GNU ld,
|
||||
you may need to set LD_RUN_PATH at link time to specify where
|
||||
to find the X libraries.
|
||||
|
||||
Prime EXL (i386-prime-sysv)
|
||||
|
||||
Minor changes merged in 19.1.
|
||||
|
||||
Siemens Nixdorf RM600 and RM400 (mips-siemens-sysv4)
|
||||
|
||||
Changes merged in 19.29. The version configured with
|
||||
`--with-x' works without any modifications, but `--with-x-toolkit'
|
||||
works only if the Athena library and the Toolkit library are linked
|
||||
statically. For this, edit `src/Makefile' after the `configure' run
|
||||
and modify the lines with `-lXaw' and `-lXt' as follows:
|
||||
|
||||
LIBW= /usr/lib/libXaw.a
|
||||
LIBXT= $(LIBW) -lXmu /usr/lib/libXt.a $(LIBXTR6) -lXext
|
||||
|
||||
In addition, `--with-x-toolkit=motif' works only
|
||||
if the Motif library and the Toolkit library are linked statically.
|
||||
To do this, edit `src/Makefile' after the `configure' run
|
||||
and modify the lines with `-lXm' and `-lXt' as follows:
|
||||
|
||||
LIBW= /usr/lib/libXm.a /usr/ccs/lib/libgen.a
|
||||
LIBXT= $(LIBW) -lXmu /usr/lib/libXt.a $(LIBXTR6) -lXext
|
||||
|
||||
Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
|
||||
** Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
|
||||
i386-sun-solaris2.*, sparc*-*-linux-gnu)
|
||||
|
||||
To build a 32-bit Emacs (i.e. if you are having any sort of problem
|
||||
@ -369,16 +196,6 @@ Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
|
||||
As of release 2.95, GCC doesn't work properly with the 64-bit ABI
|
||||
(applicable on UltraSPARC), but that isn't the default mode.
|
||||
|
||||
Emacs 20.3 fails to build on Solaris 2.5 if you use GCC 2.7.2.3.
|
||||
Installing GCC 2.8 fixes the problem.
|
||||
|
||||
19.32 works on Solaris 2.4 and 2.5. On Solaris 2.5
|
||||
you may need one of these patches to prevent Emacs from crashing
|
||||
when it starts up:
|
||||
103093-03: [README] SunOS 5.5: kernel patch (2140557 bytes)
|
||||
102832-01: [README] OpenWindows 3.5: Xview Jumbo Patch (4181613 bytes)
|
||||
103242-04: [README] SunOS 5.5: linker patch (595363 bytes)
|
||||
|
||||
There are reports that using SunSoft cc with -xO4 -xdepend produces
|
||||
bad code for some part of Emacs.
|
||||
|
||||
@ -390,11 +207,6 @@ Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
|
||||
for transferring text between clients. The Cut, Paste and Copy items
|
||||
in the menu bar Edit menu work with the clipboard.
|
||||
|
||||
A user reported irreproducible segmentation faults when using 19.29
|
||||
on Solaris 2.3 and 2.4 after compiling it with the Sun compiler.
|
||||
The problem went away when GCC 2.7.0 was used instead. We do not know
|
||||
whether anything in Emacs is partly to blame for this.
|
||||
|
||||
If you compile with Sun's ANSI compiler acc, you need additional options
|
||||
when linking temacs, such as
|
||||
/usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1
|
||||
@ -416,40 +228,23 @@ Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
|
||||
|
||||
If you have trouble using open-network-stream, get the distribution
|
||||
of `bind' (the BSD name-server), build libresolv.a, and link Emacs
|
||||
with -lresolv, by copying the #definition of LIBS_SYSTEM in
|
||||
src/s/sunos4-1.h to src/config.h. This problem is due to obsolete
|
||||
software in the nonshared standard library.
|
||||
with -lresolv, by editing LIBRESOLV in src/Makefile. This problem is
|
||||
due to obsolete software in the nonshared standard library.
|
||||
|
||||
Note that Emacs on a Sun is not really as big as it looks.
|
||||
As dumped, it includes around 200k of zeros between the
|
||||
original text section and the original data section
|
||||
(now remapped as part of the text). These are never
|
||||
swapped in.
|
||||
Note that Emacs on a Sun is not really as big as it looks. As
|
||||
dumped, it includes around 200k of zeros between the original text
|
||||
section and the original data section (now remapped as part of the
|
||||
text). These are never swapped in.
|
||||
|
||||
SuperH (sh[34]*-*-linux-gnu)
|
||||
** SuperH (sh[34]*-*-linux-gnu)
|
||||
|
||||
Emacs 23.0.60 was reported to work on GNU/Linux (October 2008).
|
||||
Tested on a little-endian sh4 system (cpu type SH7751R) running
|
||||
Gentoo Linux 2008.0.
|
||||
|
||||
Tadpole 68K (m68k-tadpole-sysv)
|
||||
* Here are notes about some of the systems supported:
|
||||
|
||||
Changes merged in 19.1.
|
||||
|
||||
You may need to edit Makefile to change the variables LIBDIR and
|
||||
BINDIR from /usr/local to /usr/contrib.
|
||||
|
||||
To give movemail access to /usr/mail, you may need to execute
|
||||
|
||||
chmod 2755 etc/movemail; chgrp mail etc/movemail
|
||||
|
||||
Vaxen running Berkeley Unix (vax-dec-bsd4.1, vax-dec-bsd4.2, vax-dec-bsd4.3)
|
||||
|
||||
Works.
|
||||
|
||||
Here are notes about some of the systems supported:
|
||||
|
||||
Linux (actually GNU/Linux)
|
||||
** Linux (actually GNU/Linux)
|
||||
|
||||
Most of the complete systems which use the Linux kernel are close
|
||||
enough to the GNU system to be considered variant GNU systems. We
|
||||
@ -468,58 +263,22 @@ Linux (actually GNU/Linux)
|
||||
people to write more free software. See the file LINUX-GNU in this
|
||||
directory for more explanation.
|
||||
|
||||
Microport
|
||||
** Mac OS X
|
||||
|
||||
See under "Intel 386".
|
||||
For installation instructions see the file nextstep/INSTALL.
|
||||
|
||||
MSDOS
|
||||
** MSDOS
|
||||
|
||||
For installation on MSDOS, see the file INSTALL (search for `MSDOG',
|
||||
near the end of the file). See the "MS-DOS" chapter of the manual
|
||||
for information about using Emacs on MSDOS.
|
||||
For installation on MSDOS, see the file msdos/INSTALL.
|
||||
See the "MS-DOS" chapter of the manual for information about using
|
||||
Emacs on MSDOS.
|
||||
|
||||
System V rel 4.0.3 and 4.0.4 (usg5.4)
|
||||
|
||||
Supported, including shared libraries for ELF, but ptys do not work
|
||||
because TIOCGPGRP fails to work on ptys (but Dell 2.2 seems to have
|
||||
fixed this). This failure is probably due to a misunderstanding of
|
||||
the consequences of the POSIX spec: many system designers mistakenly
|
||||
think that POSIX requires this feature to fail. This is untrue;
|
||||
ptys are an extension, and POSIX says that extensions *when used*
|
||||
may change the action of standard facilities in any fashion.
|
||||
|
||||
If you get compilation errors about wrong number of
|
||||
arguments to getpgrp, define GETPGRP_NO_ARG.
|
||||
|
||||
The standard C preprocessor may generate xmakefile incorrectly. However,
|
||||
/lib/cpp will work, so use `make CPP=/lib/cpp'. Standard cpp
|
||||
seems to work OK under Dell 2.2.
|
||||
|
||||
Some versions 3 and earlier of V.4, on the Intel 386 and 860, had
|
||||
problems in the X11 libraries. These prevent Emacs from working
|
||||
with X. You can use Emacs with X provided your copy of X is based
|
||||
on X11 release 4 or newer, or is Dell's 2.2 (which is a 4.0.3).
|
||||
Unfortunately, the only way you can tell whether your X11 library is
|
||||
new enough is to try compiling Emacs to use X. If emacs runs, your
|
||||
X11 library is new enough.
|
||||
|
||||
In this context, GSV4 and GSV4i are alternate names for X11R4.
|
||||
OL2.* is X11R3 based. OL3 is in between X11R3 and X11R4, and may or
|
||||
may not work, depending on who made the Unix system. If the library
|
||||
libXol is part of the X distribution, then you have X11R3 and Emacs
|
||||
won't work with X.
|
||||
|
||||
Most versions of V.4 support sockets. If `/usr/lib/libsocket.so'
|
||||
exists, your system supports them. If yours does not, you must add
|
||||
#undef HAVE_SOCKETS in config.h, after the inclusion of s-usg5-4.h.
|
||||
(Any system that supports Internet should implement sockets.)
|
||||
|
||||
Windows NT/95/98/ME/2000
|
||||
** MS-Windows NT/95/98/ME/2000
|
||||
|
||||
For installation on all versions of the MS-Windows platform, see the
|
||||
file nt/INSTALL.
|
||||
|
||||
X86_64 GNU/Linux
|
||||
** X86_64 GNU/Linux
|
||||
|
||||
No special procedures should be needed to build a 64-bit Emacs. To
|
||||
build a 32-bit Emacs, first ensure that the necessary 32-bit system
|
||||
@ -530,6 +289,9 @@ X86_64 GNU/Linux
|
||||
|
||||
(using the location of the 32-bit X libraries on your system).
|
||||
|
||||
|
||||
* Obsolete platforms
|
||||
|
||||
Support for the following obsolete platforms was removed in Emacs 23.1
|
||||
(the names in parentheses state the files in src/ that were removed):
|
||||
|
||||
@ -622,7 +384,7 @@ Support for the following obsolete platforms was removed in Emacs 23.1
|
||||
|
||||
|
||||
Local variables:
|
||||
mode: text
|
||||
mode: outline
|
||||
fill-prefix: " "
|
||||
End:
|
||||
|
||||
|
68
etc/NEWS
68
etc/NEWS
@ -24,6 +24,13 @@ so we will look at it and add it to the manual.
|
||||
|
||||
* Installation Changes in Emacs 24.1
|
||||
|
||||
** Configure links against libselinux if it is found.
|
||||
You can disable this by using --without-selinux.
|
||||
|
||||
---
|
||||
** By default, the installed Info and man pages are compressed.
|
||||
You can disable this by configuring --without-compress-info.
|
||||
|
||||
---
|
||||
** There are new configure options:
|
||||
--with-mmdf, --with-mail-unlink, --with-mailhost.
|
||||
@ -34,15 +41,16 @@ lib-src/Makefile by hand in order to use the associated features.
|
||||
** There is a new configure option --with-crt-dir.
|
||||
This is only useful if your crt*.o files are in a non-standard location.
|
||||
|
||||
** Configure links against libselinux if it is found.
|
||||
You can disable this by using --without-selinux.
|
||||
|
||||
|
||||
* Startup Changes in Emacs 24.1
|
||||
|
||||
|
||||
* Changes in Emacs 24.1
|
||||
|
||||
** New emacsclient argument --parent-id ID can be used to open a
|
||||
client frame in parent X window ID, via XEmbed. This works like the
|
||||
--parent-id argument to Emacs.
|
||||
|
||||
** Completion can cycle, depending on completion-cycle-threshold.
|
||||
|
||||
** auto-mode-case-fold is now enabled by default.
|
||||
@ -63,6 +71,9 @@ according to the value of this variable. Possible values are
|
||||
default), Emacs determines the base direction of each paragraph from
|
||||
its text, as specified by the Unicode Bidirectional Algorithm.
|
||||
|
||||
The function `current-bidi-paragraph-direction' returns the actual
|
||||
value of paragraph base direction at point.
|
||||
|
||||
Reordering of bidirectional text for display in Emacs is a "Full
|
||||
bidirectionality" class implementation of the Unicode Bidirectional
|
||||
Algorithm.
|
||||
@ -106,16 +117,20 @@ scroll a line instead of full screen.
|
||||
** New property `scroll-command' should be set on a command's symbol to
|
||||
define it as a scroll command affected by `scroll-preserve-screen-position.
|
||||
|
||||
** Trash changes
|
||||
|
||||
*** `delete-by-moving-to-trash' now only affects commands that specify
|
||||
trashing. This avoids inadvertently trashing temporary files.
|
||||
|
||||
*** Calling `delete-file' or `delete-directory' with a prefix argument
|
||||
now forces true deletion, regardless of `delete-by-moving-to-trash'.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 24.1
|
||||
|
||||
** completion-at-point is now an alias for complete-symbol.
|
||||
|
||||
** mouse-region-delete-keys has been deleted.
|
||||
|
||||
** If delete-file is called with a prefix argument, it really deletes,
|
||||
regardless of the value of `delete-by-moving-to-trash'.
|
||||
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 24.1
|
||||
|
||||
@ -144,10 +159,23 @@ Use the arrow to the left of the option name to toggle visibility.
|
||||
*** The color widget now has a "Choose" button, which allows you to
|
||||
choose a color via list-colors-display.
|
||||
|
||||
** Dired-x
|
||||
|
||||
*** dired-jump and dired-jump-other-window called with a prefix argument
|
||||
read a file name from the minibuffer instead of using buffer-file-name.
|
||||
|
||||
** VC and related modes
|
||||
|
||||
*** New VC commands: vc-log-incoming, vc-log-outgoing, vc-find-conflicted-file.
|
||||
|
||||
**** vc-log-incoming for Git runs "git fetch" so that the necessary
|
||||
data is available locally.
|
||||
|
||||
**** vc-log-incoming and vc-log-outgoing for Git require version 1.7 (or newer).
|
||||
|
||||
*** New key bindings: C-x v I and C-x v O bound to vc-log-incoming and
|
||||
vc-log-outgoing, respectively.
|
||||
|
||||
*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots.
|
||||
|
||||
*** Special markup can be added to log-edit buffers.
|
||||
@ -159,6 +187,11 @@ with headers of the form:
|
||||
Some backends handle some of those headers specially, but any unknown header
|
||||
is just left as is in the message, so it is not lost.
|
||||
|
||||
**** vc-git handles Author: and Date:
|
||||
**** vc-hg handles Author: and Date:
|
||||
**** vc-bzr handles Author:, Date: and Fixes:
|
||||
**** vc-mtn handles Author: and Date:
|
||||
|
||||
** Directory local variables can apply to file-less buffers.
|
||||
For example, adding "(diff-mode . ((mode . whitespace)))" to your
|
||||
.dir-locals.el file, will turn on `whitespace-mode' for *vc-diff* buffers.
|
||||
@ -207,9 +240,16 @@ threads simultaneously.
|
||||
|
||||
* New Modes and Packages in Emacs 24.1
|
||||
|
||||
** smie.el is a package providing a simple generic indentation engine.
|
||||
|
||||
** secrets.el is an implementation of the Secret Service API, an
|
||||
interface to password managers like GNOME Keyring or KDE Wallet. The
|
||||
Secret Service API requires D-Bus for communication.
|
||||
Secret Service API requires D-Bus for communication. The command
|
||||
`secrets-show-secrets' offers a buffer with a visualization of the
|
||||
secrets.
|
||||
|
||||
** notifications.el provides an implementation of the Desktop
|
||||
Notifications API. It requires D-Bus for communication.
|
||||
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 24.1
|
||||
@ -221,10 +261,14 @@ Secret Service API requires D-Bus for communication.
|
||||
|
||||
* Lisp changes in Emacs 24.1
|
||||
|
||||
** frame-local variables cannot be let-bound any more.
|
||||
** prog-mode is a new major-mode meant to be the parent of programming mode.
|
||||
** define-minor-mode accepts a new keyword :variable.
|
||||
|
||||
** delete-file now accepts an optional second arg, FORCE, which says
|
||||
to always delete and ignore the value of delete-by-moving-to-trash.
|
||||
** `delete-file' and `delete-directory now accept optional arg TRASH.
|
||||
Trashing is performed if TRASH and `delete-by-moving-to-trash' are
|
||||
both non-nil. Interactively, TRASH defaults to t, unless a prefix
|
||||
argument is supplied (see Trash changes, above).
|
||||
|
||||
** buffer-substring-filters is obsoleted by filter-buffer-substring-functions.
|
||||
|
||||
@ -241,6 +285,10 @@ by the Graphic Control Extension of the image.
|
||||
|
||||
*** `image-extension-data' is renamed to `image-metadata'.
|
||||
|
||||
** Isearch
|
||||
|
||||
*** New hook `isearch-update-post-hook' that runs in `isearch-update'.
|
||||
|
||||
** Progress reporters can now "spin".
|
||||
The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can
|
||||
now be nil, or omitted. This makes a "non-numeric" reporter. Each
|
||||
|
27
etc/NEWS.23
27
etc/NEWS.23
@ -14,6 +14,33 @@ for changes in older Emacs versions.
|
||||
You can narrow news to a specific version by calling `view-emacs-news'
|
||||
with a prefix argument or by typing C-u C-h C-n.
|
||||
|
||||
|
||||
* Installation Changes in Emacs 23.3
|
||||
|
||||
* Startup Changes in Emacs 23.3
|
||||
|
||||
* Changes in Emacs 23.3
|
||||
|
||||
|
||||
* Editing Changes in Emacs 23.3
|
||||
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 23.3
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 23.3
|
||||
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 23.3
|
||||
|
||||
|
||||
* Lisp changes in Emacs 23.3
|
||||
|
||||
** New function byte-to-string, like char-to-string but for bytes.
|
||||
|
||||
|
||||
* Changes in Emacs 23.3 on non-free operating systems
|
||||
|
||||
|
||||
* Installation Changes in Emacs 23.2
|
||||
|
||||
|
660
etc/PROBLEMS
660
etc/PROBLEMS
@ -9,7 +9,9 @@ See the end of the file for license conditions.
|
||||
This file describes various problems that have been encountered
|
||||
in compiling, installing and running GNU Emacs. Try doing C-c C-t
|
||||
and browsing through the outline headers. (See C-h m for help on
|
||||
Outline mode.)
|
||||
Outline mode.) Information about systems that are no longer supported,
|
||||
and old Emacs releases, has been removed. Consult older versions of
|
||||
this file if you are interested in that information.
|
||||
|
||||
* Mule-UCS doesn't work in Emacs 23.
|
||||
|
||||
@ -85,18 +87,10 @@ it's loaded very early in the startup procedure.)
|
||||
Similarly, any other .el file for which there's no corresponding .elc
|
||||
file could fail to load if it is compressed.
|
||||
|
||||
The solution is to uncompress all .el files which don't have a .elc
|
||||
file.
|
||||
The solution is to uncompress all .el files that don't have a .elc file.
|
||||
|
||||
Another possible reason for such failures is stale *.elc files
|
||||
lurking somewhere on your load-path. The following command will
|
||||
print any duplicate Lisp files that are present in load-path:
|
||||
|
||||
emacs -q -batch -f list-load-path-shadows
|
||||
|
||||
If this command prints any file names, some of these files are stale,
|
||||
and should be deleted or their directories removed from your
|
||||
load-path.
|
||||
lurking somewhere on your load-path -- see the next section.
|
||||
|
||||
** Emacs prints an error at startup after upgrading from an earlier version.
|
||||
|
||||
@ -273,8 +267,7 @@ than the corresponding .el file.
|
||||
|
||||
These control the actions of Emacs.
|
||||
~/.emacs is your Emacs init file.
|
||||
EMACSLOADPATH overrides which directories the function
|
||||
"load" will search.
|
||||
EMACSLOADPATH overrides which directories the function "load" will search.
|
||||
|
||||
If you observe strange problems, check for these and get rid
|
||||
of them, then try again.
|
||||
@ -420,8 +413,7 @@ For example, (system-name) returns some variation on
|
||||
|
||||
You need to configure your machine with a fully qualified domain name,
|
||||
(i.e. a name with at least one ".") either in /etc/hosts,
|
||||
/etc/hostname, the NIS, or wherever your system calls for specifying
|
||||
this.
|
||||
/etc/hostname, the NIS, or wherever your system calls for specifying this.
|
||||
|
||||
If you cannot fix the configuration, you can set the Lisp variable
|
||||
mail-host-address to the value you want.
|
||||
@ -487,13 +479,7 @@ causes it.
|
||||
else
|
||||
{
|
||||
|
||||
** PSGML
|
||||
|
||||
*** Old versions of the PSGML package use the obsolete variables
|
||||
`before-change-function' and `after-change-function', which are no
|
||||
longer used by Emacs. Please use PSGML 1.2.3 or later.
|
||||
|
||||
*** PSGML conflicts with sgml-mode.
|
||||
** PSGML conflicts with sgml-mode.
|
||||
|
||||
PSGML package uses the same names of some variables (like keymap)
|
||||
as built-in sgml-mode.el because it was created as a replacement
|
||||
@ -503,38 +489,6 @@ HTML page and then start to work with SGML or XML file. html-mode
|
||||
(from sgml-mode.el) is used for HTML file and loading of psgml.el
|
||||
(for sgml-mode or xml-mode) will cause an error.
|
||||
|
||||
*** Versions of the PSGML package earlier than 1.0.3 (stable) or 1.1.2
|
||||
(alpha) fail to parse DTD files correctly in Emacs 20.3 and later.
|
||||
Here is a patch for psgml-parse.el from PSGML 1.0.1 and, probably,
|
||||
earlier versions.
|
||||
|
||||
--- psgml-parse.el 1998/08/21 19:18:18 1.1
|
||||
+++ psgml-parse.el 1998/08/21 19:20:00
|
||||
@@ -2383,7 +2383,7 @@ (defun sgml-push-to-entity (entity &opti
|
||||
(setq sgml-buffer-parse-state nil))
|
||||
(cond
|
||||
((stringp entity) ; a file name
|
||||
- (save-excursion (insert-file-contents entity))
|
||||
+ (insert-file-contents entity)
|
||||
(setq default-directory (file-name-directory entity)))
|
||||
((consp (sgml-entity-text entity)) ; external id?
|
||||
(let* ((extid (sgml-entity-text entity))
|
||||
|
||||
** AUCTeX
|
||||
|
||||
You should not be using a version older than 11.52 if you can avoid
|
||||
it.
|
||||
|
||||
*** Emacs 21 freezes when visiting a TeX file with AUCTeX installed.
|
||||
|
||||
Emacs 21 needs version 10 or later of AUCTeX; upgrading should solve
|
||||
these problems.
|
||||
|
||||
*** No colors in AUCTeX with Emacs 21.
|
||||
|
||||
Upgrade to AUC TeX version 10 or later, and make sure it is
|
||||
byte-compiled with Emacs 21.
|
||||
|
||||
** PCL-CVS
|
||||
|
||||
*** Lines are not updated or new lines are added in the buffer upon commit.
|
||||
@ -568,8 +522,7 @@ terminal type.
|
||||
|
||||
The cause of this is a shell startup file that sets the TERMCAP
|
||||
environment variable. The terminal emulator uses that variable to
|
||||
provide the information on the special terminal type that Emacs
|
||||
emulates.
|
||||
provide the information on the special terminal type that Emacs emulates.
|
||||
|
||||
Rewrite your shell startup file so that it does not change TERMCAP
|
||||
in such a case. You could use the following conditional which sets
|
||||
@ -642,16 +595,6 @@ To work around the problem, you could either (a) set the variable
|
||||
invoking `df'; (b) use `df' from the GNU Fileutils package; or
|
||||
(c) use CVS, which is Free Software, instead of ClearCase.
|
||||
|
||||
*** Versions of the W3 package released before Emacs 21.1 don't run
|
||||
under Emacs 21. This fixed in W3 version 4.0pre.47.
|
||||
|
||||
*** The LDAP support rely on ldapsearch program from OpenLDAP version 2.
|
||||
|
||||
It can fail to work with ldapsearch program from OpenLDAP version 1.
|
||||
Version 1 of OpenLDAP is now deprecated. If you are still using it,
|
||||
please upgrade to version 2. As a temporary workaround, remove
|
||||
argument "-x" from the variable `ldap-ldapsearch-args'.
|
||||
|
||||
*** ps-print commands fail to find prologue files ps-prin*.ps.
|
||||
|
||||
This can happen if you use an old version of X-Symbol package: it
|
||||
@ -878,8 +821,7 @@ To circumvent this problem, set x-use-underline-position-properties
|
||||
to nil in your `.emacs'.
|
||||
|
||||
To see what is the value of UNDERLINE_POSITION defined by the font,
|
||||
type `xlsfonts -lll FONT' and look at the font's UNDERLINE_POSITION
|
||||
property.
|
||||
type `xlsfonts -lll FONT' and look at the font's UNDERLINE_POSITION property.
|
||||
|
||||
** When using Exceed, fonts sometimes appear too tall.
|
||||
|
||||
@ -929,12 +871,6 @@ mule-unicode-2500-33ff:-gnu-unifont-*-iso10646-1,\
|
||||
mule-unicode-e000-ffff:-gnu-unifont-*-iso10646-1,\
|
||||
mule-unicode-0100-24ff:-gnu-unifont-*-iso10646-1
|
||||
|
||||
*** Athena/Lucid toolkit limitations
|
||||
|
||||
The Athena/Lucid toolkit cannot display UTF-8 strings in the menu, so
|
||||
if you have UTF-8 buffer names, the buffer menu won't display the
|
||||
names properly. The GTK+ toolkit works properly.
|
||||
|
||||
** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters.
|
||||
|
||||
Emacs directly supports the Unicode BMP whose code points are in the
|
||||
@ -969,8 +905,7 @@ To see what glyphs are included in a font, use `xfd', like this:
|
||||
|
||||
xfd -fn -schumacher-clean-medium-r-normal--12-120-75-75-c-60-iso8859-1
|
||||
|
||||
If this shows only ASCII glyphs, the font is indeed the source of the
|
||||
problem.
|
||||
If this shows only ASCII glyphs, the font is indeed the source of the problem.
|
||||
|
||||
The solution is to remove the corresponding lines from the appropriate
|
||||
`fonts.alias' file, then run `mkfontdir' in that directory, and then run
|
||||
@ -1076,8 +1011,7 @@ have made the key binding correctly.
|
||||
|
||||
If C-h c reports an event that doesn't have the Alt modifier, it may
|
||||
be because your X server has no key for the Alt modifier. The X
|
||||
server that comes from MIT does not set up the Alt modifier by
|
||||
default.
|
||||
server that comes from MIT does not set up the Alt modifier by default.
|
||||
|
||||
If your keyboard has keys named Alt, you can enable them as follows:
|
||||
|
||||
@ -1219,8 +1153,7 @@ menu placement.
|
||||
|
||||
On some systems, even with Motif 1.2 emulation, Emacs occasionally
|
||||
locks up, grabbing all mouse and keyboard events. We still don't know
|
||||
what causes these problems; they are not reproducible by Emacs
|
||||
developers.
|
||||
what causes these problems; they are not reproducible by Emacs developers.
|
||||
|
||||
*** Motif: The Motif version of Emacs paints the screen a solid color.
|
||||
|
||||
@ -1387,15 +1320,6 @@ One cause of such problems is having (setq term-file-prefix nil) in
|
||||
your .emacs file. Another cause is a bad value of EMACSLOADPATH in
|
||||
the environment.
|
||||
|
||||
*** Emacs fails to get default settings from X Windows server.
|
||||
|
||||
The X library in X11R4 has a bug; it interchanges the 2nd and 3rd
|
||||
arguments to XGetDefaults. Define the macro XBACKWARDS in config.h to
|
||||
tell Emacs to compensate for this.
|
||||
|
||||
I don't believe there is any way Emacs can determine for itself
|
||||
whether this problem is present on a given system.
|
||||
|
||||
*** X Windows doesn't work if DISPLAY uses a hostname.
|
||||
|
||||
People have reported kernel bugs in certain systems that cause Emacs
|
||||
@ -1407,12 +1331,6 @@ You may be able to compensate for the bug by doing (set-input-mode nil nil).
|
||||
However, that has the disadvantage of turning off interrupts, so that
|
||||
you are unable to quit out of a Lisp program by typing C-g.
|
||||
|
||||
The easy way to do this is to put
|
||||
|
||||
(setq x-sigio-bug t)
|
||||
|
||||
in your site-init.el file.
|
||||
|
||||
*** Prevent double pastes in X
|
||||
|
||||
The problem: a region, such as a command, is pasted twice when you copy
|
||||
@ -1564,8 +1482,7 @@ In this case, there is no obvious bug in Emacs, and most likely you
|
||||
need more padding, or possibly the terminal manual is wrong.
|
||||
|
||||
2) The characters sent are incorrect, due to an obscure aspect
|
||||
of the terminal behavior not described in an obvious way
|
||||
by termcap.
|
||||
of the terminal behavior not described in an obvious way by termcap.
|
||||
|
||||
This case is hard. It will be necessary to think of a way for
|
||||
Emacs to distinguish between terminals with this kind of behavior
|
||||
@ -1591,8 +1508,7 @@ in termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c.
|
||||
Some versions of rlogin (and possibly telnet) do not pass flow
|
||||
control characters to the remote system to which they connect.
|
||||
On such systems, emacs on the remote system cannot disable flow
|
||||
control on the local system. Sometimes `rlogin -8' will avoid this
|
||||
problem.
|
||||
control on the local system. Sometimes `rlogin -8' will avoid this problem.
|
||||
|
||||
One way to cure this is to disable flow control on the local host
|
||||
(the one running rlogin, not the one running rlogind) using the
|
||||
@ -1611,8 +1527,7 @@ following to your .emacs (on the host running rlogind):
|
||||
|
||||
(enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
|
||||
|
||||
See the entry about spontaneous display of I-search (above) for more
|
||||
info.
|
||||
See the entry about spontaneous display of I-search (above) for more info.
|
||||
|
||||
** Output from Control-V is slow.
|
||||
|
||||
@ -2010,8 +1925,8 @@ Definitions" to make them defined.
|
||||
|
||||
** Solaris
|
||||
|
||||
We list bugs in current versions here. Solaris 2.x and 4.x are covered in the
|
||||
section on legacy systems.
|
||||
We list bugs in current versions here. See also the section on legacy
|
||||
systems.
|
||||
|
||||
*** On Solaris, C-x doesn't get through to Emacs when you use the console.
|
||||
|
||||
@ -2025,7 +1940,7 @@ may not work if you have used the unshared system libraries. This
|
||||
is because the unshared libraries fail to use YP for host name lookup.
|
||||
As a result, the host name you specify may not be recognized.
|
||||
|
||||
*** Solaris 2,6: Emacs crashes with SIGBUS or SIGSEGV on Solaris after you delete a frame.
|
||||
*** Solaris 2.6: Emacs crashes with SIGBUS or SIGSEGV on Solaris after you delete a frame.
|
||||
|
||||
We suspect that this is a bug in the X libraries provided by
|
||||
Sun. There is a report that one of these patches fixes the bug and
|
||||
@ -2341,8 +2256,7 @@ selection".
|
||||
|
||||
Of this does not work, please inform bug-gnu-emacs@gnu.org. Then
|
||||
please call support for your X-server and see if you can get a fix.
|
||||
If you do, please send it to bug-gnu-emacs@gnu.org so we can list it
|
||||
here.
|
||||
If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here.
|
||||
|
||||
* Build-time problems
|
||||
|
||||
@ -2373,18 +2287,6 @@ The solution is to tell configure to use the correct C preprocessor
|
||||
for your C compiler (CPP="/opt/SUNWspro/bin/cc -E" in the above
|
||||
example).
|
||||
|
||||
*** `configure' fails with ``"junk.c", line 660: invalid input token: 8.elc''
|
||||
|
||||
The final stage of the Emacs configure process uses the C preprocessor
|
||||
to generate the Makefiles. Errors of this form can occur if the C
|
||||
preprocessor inserts extra whitespace into its output. The solution
|
||||
is to find the switches that stop your preprocessor from inserting extra
|
||||
whitespace, add them to CPPFLAGS, and re-run configure. For example,
|
||||
this error can occur on Solaris 10 when using the Sun Studio compiler
|
||||
``Sun C 5.8'' with its preprocessor CPP="/opt/SUNWspro/bin/cc -E".
|
||||
The relevant switch in this case is "-Xs" (``compile assuming
|
||||
(pre-ANSI) K & R C style code'').
|
||||
|
||||
** Compilation
|
||||
|
||||
*** Building Emacs over NFS fails with ``Text file busy''.
|
||||
@ -2427,46 +2329,6 @@ you are working on the host called `marvin'. Then an entry in the
|
||||
|
||||
The solution is to remove this line from `etc/fstab'.
|
||||
|
||||
*** Building Emacs with GCC 2.9x fails in the `src' directory.
|
||||
|
||||
This may happen if you use a development version of GNU `cpp' from one
|
||||
of the GCC snapshots between Oct 2000 and Feb 2001, or from a released
|
||||
version of GCC newer than 2.95.2 which was prepared around those
|
||||
dates; similar problems were reported with some snapshots of GCC 3.1
|
||||
around Sep 30 2001. The preprocessor in those versions is
|
||||
incompatible with a traditional Unix cpp (e.g., it expands ".." into
|
||||
". .", which breaks relative file names that reference the parent
|
||||
directory; or inserts TAB characters before lines that set Make
|
||||
variables).
|
||||
|
||||
The solution is to make sure the preprocessor is run with the
|
||||
`-traditional' option. The `configure' script does that automatically
|
||||
when it detects the known problems in your cpp, but you might hit some
|
||||
unknown ones. To force the `configure' script to use `-traditional',
|
||||
run the script like this:
|
||||
|
||||
CPP='gcc -E -traditional' ./configure ...
|
||||
|
||||
(replace the ellipsis "..." with any additional arguments you pass to
|
||||
the script).
|
||||
|
||||
Note that this problem does not pertain to the MS-Windows port of
|
||||
Emacs, since it doesn't use the preprocessor to generate Makefiles.
|
||||
|
||||
*** src/Makefile and lib-src/Makefile are truncated--most of the file missing.
|
||||
*** Compiling wakeup, in lib-src, says it can't make wakeup.c.
|
||||
|
||||
This can happen if configure uses GNU sed version 2.03. That version
|
||||
had a bug. GNU sed version 2.05 works properly.To solve the
|
||||
problem, install the current version of GNU Sed, then rerun Emacs's
|
||||
configure script.
|
||||
|
||||
*** Compiling lib-src says there is no rule to make test-distrib.c.
|
||||
|
||||
This results from a bug in a VERY old version of GNU Sed. To solve
|
||||
the problem, install the current version of GNU Sed, then rerun
|
||||
Emacs's configure script.
|
||||
|
||||
*** Building a 32-bit executable on a 64-bit GNU/Linux architecture.
|
||||
|
||||
First ensure that the necessary 32-bit system libraries and include
|
||||
@ -2597,31 +2459,6 @@ A solution is to link with GCC, like this:
|
||||
Since the .o object files already exist, this will not recompile Emacs
|
||||
with GCC, but just restart by trying again to link temacs.
|
||||
|
||||
*** AIX 1.3 ptf 0013: Link failure.
|
||||
|
||||
There is a real duplicate definition of the function `_slibc_free' in
|
||||
the library /lib/libc_s.a (just do nm on it to verify). The
|
||||
workaround/fix is:
|
||||
|
||||
cd /lib
|
||||
ar xv libc_s.a NLtmtime.o
|
||||
ar dv libc_s.a NLtmtime.o
|
||||
|
||||
*** AIX 4.1.2: Linker error messages such as
|
||||
ld: 0711-212 SEVERE ERROR: Symbol .__quous, found in the global symbol table
|
||||
of archive /usr/lib/libIM.a, was not defined in archive member shr.o.
|
||||
|
||||
This is a problem in libIM.a. You can work around it by executing
|
||||
these shell commands in the src subdirectory of the directory where
|
||||
you build Emacs:
|
||||
|
||||
cp /usr/lib/libIM.a .
|
||||
chmod 664 libIM.a
|
||||
ranlib libIM.a
|
||||
|
||||
Then change -lIM to ./libIM.a in the command to link temacs (in
|
||||
Makefile).
|
||||
|
||||
*** Sun with acc: Link failure when using acc on a Sun.
|
||||
|
||||
To use acc, you need additional options just before the libraries, such as
|
||||
@ -2650,7 +2487,7 @@ The fix is to install a newer version of ncurses, such as version 4.2.
|
||||
** Bootstrapping
|
||||
|
||||
Bootstrapping (compiling the .el files) is normally only necessary
|
||||
with CVS builds, since the .elc files are pre-compiled in releases.
|
||||
with development builds, since the .elc files are pre-compiled in releases.
|
||||
|
||||
*** "No rule to make target" with Ubuntu 8.04 make 3.81-3build1
|
||||
|
||||
@ -2762,32 +2599,28 @@ nonprinting characters, you can fix them:
|
||||
|
||||
*** temacs prints "Pure Lisp storage exhausted".
|
||||
|
||||
This means that the Lisp code loaded from the .elc and .el
|
||||
files during temacs -l loadup inc dump took up more
|
||||
space than was allocated.
|
||||
This means that the Lisp code loaded from the .elc and .el files
|
||||
during temacs -l loadup inc dump took up more space than was allocated.
|
||||
|
||||
This could be caused by
|
||||
1) adding code to the preloaded Lisp files
|
||||
2) adding more preloaded files in loadup.el
|
||||
3) having a site-init.el or site-load.el which loads files.
|
||||
Note that ANY site-init.el or site-load.el is nonstandard;
|
||||
if you have received Emacs from some other site
|
||||
and it contains a site-init.el or site-load.el file, consider
|
||||
deleting that file.
|
||||
if you have received Emacs from some other site and it contains a
|
||||
site-init.el or site-load.el file, consider deleting that file.
|
||||
4) getting the wrong .el or .elc files
|
||||
(not from the directory you expected).
|
||||
5) deleting some .elc files that are supposed to exist.
|
||||
This would cause the source files (.el files) to be
|
||||
loaded instead. They take up more room, so you lose.
|
||||
6) a bug in the Emacs distribution which underestimates
|
||||
the space required.
|
||||
6) a bug in the Emacs distribution which underestimates the space required.
|
||||
|
||||
If the need for more space is legitimate, change the definition
|
||||
of PURESIZE in puresize.h.
|
||||
|
||||
But in some of the cases listed above, this problem is a consequence
|
||||
of something else that is wrong. Be sure to check and fix the real
|
||||
problem.
|
||||
of something else that is wrong. Be sure to check and fix the real problem.
|
||||
|
||||
*** Linux: Emacs crashes when dumping itself on Mac PPC running Yellow Dog GNU/Linux.
|
||||
|
||||
@ -2910,111 +2743,13 @@ of its files pure after dumping, but the variables declared static and
|
||||
not initialized are not supposed to be pure. On these systems you
|
||||
may need to add "#define static" to the m- or the s- file.
|
||||
|
||||
* Emacs 19 problems
|
||||
|
||||
** Error messages `Wrong number of arguments: #<subr where-is-internal>, 5'.
|
||||
|
||||
This typically results from having the powerkey library loaded.
|
||||
Powerkey was designed for Emacs 19.22. It is obsolete now because
|
||||
Emacs 19 now has this feature built in; and powerkey also calls
|
||||
where-is-internal in an obsolete way.
|
||||
|
||||
So the fix is to arrange not to load powerkey.
|
||||
|
||||
* Runtime problems on legacy systems
|
||||
|
||||
This section covers bugs reported on very old hardware or software.
|
||||
If you are using hardware and an operating system shipped after 2000,
|
||||
it is unlikely you will see any of these.
|
||||
|
||||
** Ancient operating systems
|
||||
|
||||
AIX 4.2 was end-of-lifed on Dec 31st, 1999.
|
||||
|
||||
*** AIX: You get this compiler error message:
|
||||
|
||||
Processing include file ./XMenuInt.h
|
||||
1501-106: (S) Include file X11/Xlib.h not found.
|
||||
|
||||
This means your system was installed with only the X11 runtime i.d
|
||||
libraries. You have to find your sipo (bootable tape) and install
|
||||
X11Dev... with smit.
|
||||
|
||||
(This report must be ancient. Bootable tapes are long dead.)
|
||||
|
||||
*** AIX 3.2.4: Releasing Ctrl/Act key has no effect, if Shift is down.
|
||||
|
||||
Due to a feature of AIX, pressing or releasing the Ctrl/Act key is
|
||||
ignored when the Shift, Alt or AltGr keys are held down. This can
|
||||
lead to the keyboard being "control-locked"--ordinary letters are
|
||||
treated as control characters.
|
||||
|
||||
You can get out of this "control-locked" state by pressing and
|
||||
releasing Ctrl/Act while not pressing or holding any other keys.
|
||||
|
||||
*** AIX 3.2.5: You get this message when running Emacs:
|
||||
|
||||
Could not load program emacs
|
||||
Symbol smtcheckinit in csh is undefined
|
||||
Error was: Exec format error
|
||||
|
||||
or this one:
|
||||
|
||||
Could not load program .emacs
|
||||
Symbol _system_con in csh is undefined
|
||||
Symbol _fp_trapsta in csh is undefined
|
||||
Error was: Exec format error
|
||||
|
||||
These can happen when you try to run on AIX 3.2.5 a program that was
|
||||
compiled with 3.2.4. The fix is to recompile.
|
||||
|
||||
*** AIX 4.2: Emacs gets a segmentation fault at startup.
|
||||
|
||||
If you are using IBM's xlc compiler, compile emacs.c
|
||||
without optimization; that should avoid the problem.
|
||||
|
||||
*** ISC Unix
|
||||
|
||||
**** ISC: display-time causes kernel problems on ISC systems.
|
||||
|
||||
Under Interactive Unix versions 3.0.1 and 4.0 (and probably other
|
||||
versions), display-time causes the loss of large numbers of STREVENT
|
||||
cells. Eventually the kernel's supply of these cells is exhausted.
|
||||
This makes emacs and the whole system run slow, and can make other
|
||||
processes die, in particular pcnfsd.
|
||||
|
||||
Other emacs functions that communicate with remote processes may have
|
||||
the same problem. Display-time seems to be far the worst.
|
||||
|
||||
The only known fix: Don't run display-time.
|
||||
|
||||
**** Sunos 5.3: Subprocesses remain, hanging but not zombies.
|
||||
|
||||
A bug in Sunos 5.3 causes Emacs subprocesses to remain after Emacs
|
||||
exits. Sun patch # 101415-02 is part of the fix for this, but it only
|
||||
applies to ptys, and doesn't fix the problem with subprocesses
|
||||
communicating through pipes.
|
||||
|
||||
*** Irix
|
||||
|
||||
*** Irix 6.2: No visible display on mips-sgi-irix6.2 when compiling with GCC 2.8.1.
|
||||
|
||||
This problem went away after installing the latest IRIX patches
|
||||
as of 8 Dec 1998.
|
||||
|
||||
The same problem has been reported on Irix 6.3.
|
||||
|
||||
*** Irix 6.3: substituting environment variables in file names
|
||||
in the minibuffer gives peculiar error messages such as
|
||||
|
||||
Substituting nonexistent environment variable ""
|
||||
|
||||
This is not an Emacs bug; it is caused by something in SGI patch
|
||||
003082 August 11, 1998.
|
||||
|
||||
*** OPENSTEP
|
||||
|
||||
**** OPENSTEP 4.2: Compiling syntax.c with gcc 2.7.2.1 fails.
|
||||
*** OPENSTEP 4.2: Compiling syntax.c with gcc 2.7.2.1 fails.
|
||||
|
||||
The compiler was reported to crash while compiling syntax.c with the
|
||||
following message:
|
||||
@ -3052,81 +2787,6 @@ called. The problem does not happen if you compile with GCC.
|
||||
This can happen if you configure Emacs without specifying the precise
|
||||
version of Solaris that you are using.
|
||||
|
||||
**** Solaris 2.3 and 2.4: Unpredictable segmentation faults.
|
||||
|
||||
A user reported that this happened in 19.29 when it was compiled with
|
||||
the Sun compiler, but not when he recompiled with GCC 2.7.0.
|
||||
|
||||
We do not know whether something in Emacs is partly to blame for this.
|
||||
|
||||
**** Solaris 2.4: Emacs dumps core on startup.
|
||||
|
||||
Bill Sebok says that the cause of this is Solaris 2.4 vendor patch
|
||||
102303-05, which extends the Solaris linker to deal with the Solaris
|
||||
Common Desktop Environment's linking needs. You can fix the problem
|
||||
by removing this patch and installing patch 102049-02 instead.
|
||||
However, that linker version won't work with CDE.
|
||||
|
||||
Solaris 2.5 comes with a linker that has this bug. It is reported that if
|
||||
you install all the latest patches (as of June 1996), the bug is fixed.
|
||||
We suspect the crucial patch is one of these, but we don't know
|
||||
for certain.
|
||||
|
||||
103093-03: [README] SunOS 5.5: kernel patch (2140557 bytes)
|
||||
102832-01: [README] OpenWindows 3.5: Xview Jumbo Patch (4181613 bytes)
|
||||
103242-04: [README] SunOS 5.5: linker patch (595363 bytes)
|
||||
|
||||
(One user reports that the bug was fixed by those patches together
|
||||
with patches 102980-04, 103279-01, 103300-02, and 103468-01.)
|
||||
|
||||
If you can determine which patch does fix the bug, please tell
|
||||
bug-gnu-emacs@gnu.org.
|
||||
|
||||
Meanwhile, the GNU linker links Emacs properly on both Solaris 2.4 and
|
||||
Solaris 2.5.
|
||||
|
||||
**** Solaris 2.4: Dired hangs and C-g does not work. Or Emacs hangs
|
||||
forever waiting for termination of a subprocess that is a zombie.
|
||||
|
||||
casper@fwi.uva.nl says the problem is in X11R6. Rebuild libX11.so
|
||||
after changing the file xc/config/cf/sunLib.tmpl. Change the lines
|
||||
|
||||
#if ThreadedX
|
||||
#define SharedX11Reqs -lthread
|
||||
#endif
|
||||
|
||||
to:
|
||||
|
||||
#if OSMinorVersion < 4
|
||||
#if ThreadedX
|
||||
#define SharedX11Reqs -lthread
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Be sure also to edit x/config/cf/sun.cf so that OSMinorVersion is 4
|
||||
(as it should be for Solaris 2.4). The file has three definitions for
|
||||
OSMinorVersion: the first is for x86, the second for SPARC under
|
||||
Solaris, and the third for SunOS 4. Make sure to update the
|
||||
definition for your type of machine and system.
|
||||
|
||||
Then do `make Everything' in the top directory of X11R6, to rebuild
|
||||
the makefiles and rebuild X. The X built this way work only on
|
||||
Solaris 2.4, not on 2.3.
|
||||
|
||||
For multithreaded X to work it is necessary to install patch
|
||||
101925-02 to fix problems in header files [2.4]. You need
|
||||
to reinstall gcc or re-run just-fixinc after installing that
|
||||
patch.
|
||||
|
||||
However, Frank Rust <frust@iti.cs.tu-bs.de> used a simpler solution:
|
||||
he changed
|
||||
#define ThreadedX YES
|
||||
to
|
||||
#define ThreadedX NO
|
||||
in sun.cf and did `make World' to rebuild X11R6. Removing all
|
||||
`-DXTHREAD*' flags and `-lthread' entries from lib/X11/Makefile and
|
||||
typing 'make install' in that directory also seemed to work.
|
||||
|
||||
**** Solaris 2.x: GCC complains "64 bit integer types not supported".
|
||||
|
||||
This suggests that GCC is not installed correctly. Most likely you
|
||||
@ -3172,23 +2832,11 @@ lists the supported locales; any locale other than "C" or "POSIX"
|
||||
should do.
|
||||
|
||||
pen@lysator.liu.se says (Feb 1998) that the Compose key does work
|
||||
if you link with the MIT X11 libraries instead of the Solaris X11
|
||||
libraries.
|
||||
|
||||
*** HP/UX versions before 11.0
|
||||
|
||||
HP/UX 9 was end-of-lifed in December 1998.
|
||||
HP/UX 10 was end-of-lifed in May 1999.
|
||||
|
||||
**** HP/UX 9: Emacs crashes with SIGBUS or SIGSEGV after you delete a frame.
|
||||
|
||||
We think this is due to a bug in the X libraries provided by HP. With
|
||||
the alternative X libraries in /usr/contrib/mitX11R5/lib, the problem
|
||||
does not happen.
|
||||
if you link with the MIT X11 libraries instead of the Solaris X11 libraries.
|
||||
|
||||
*** HP/UX 10: Large file support is disabled.
|
||||
|
||||
See the comments in src/s/hpux10.h.
|
||||
(HP/UX 10 was end-of-lifed in May 1999.)
|
||||
See the comments in src/s/hpux10-20.h.
|
||||
|
||||
*** HP/UX: Emacs is slow using X11R5.
|
||||
|
||||
@ -3199,165 +2847,7 @@ libXmu.a, libXext.a and others. HP/UX normally doesn't come with
|
||||
those libraries installed. To get good performance, you need to
|
||||
install them and rebuild Emacs.
|
||||
|
||||
*** Ultrix and Digital Unix
|
||||
|
||||
**** Ultrix 4.2: `make install' fails on install-doc with `Error 141'.
|
||||
|
||||
This happens on Ultrix 4.2 due to failure of a pipeline of tar
|
||||
commands. We don't know why they fail, but the bug seems not to be in
|
||||
Emacs. The workaround is to run the shell command in install-doc by
|
||||
hand.
|
||||
|
||||
**** Digital Unix 4.0: Garbled display on non-X terminals when Emacs runs.
|
||||
|
||||
So far it appears that running `tset' triggers this problem (when TERM
|
||||
is vt100, at least). If you do not run `tset', then Emacs displays
|
||||
properly. If someone can tell us precisely which effect of running
|
||||
`tset' actually causes the problem, we may be able to implement a fix
|
||||
in Emacs.
|
||||
|
||||
**** Ultrix: `expand-file-name' fails to work on any but the machine you dumped Emacs on.
|
||||
|
||||
On Ultrix, if you use any of the functions which look up information
|
||||
in the passwd database before dumping Emacs (say, by using
|
||||
expand-file-name in site-init.el), then those functions will not work
|
||||
in the dumped Emacs on any host but the one Emacs was dumped on.
|
||||
|
||||
The solution? Don't use expand-file-name in site-init.el, or in
|
||||
anything it loads. Yuck - some solution.
|
||||
|
||||
I'm not sure why this happens; if you can find out exactly what is
|
||||
going on, and perhaps find a fix or a workaround, please let us know.
|
||||
Perhaps the YP functions cache some information, the cache is included
|
||||
in the dumped Emacs, and is then inaccurate on any other host.
|
||||
|
||||
*** SVr4
|
||||
|
||||
**** SVr4: On some variants of SVR4, Emacs does not work at all with X.
|
||||
|
||||
Try defining BROKEN_FIONREAD in your config.h file. If this solves
|
||||
the problem, please send a bug report to tell us this is needed; be
|
||||
sure to say exactly what type of machine and system you are using.
|
||||
|
||||
**** SVr4: After running emacs once, subsequent invocations crash.
|
||||
|
||||
Some versions of SVR4 have a serious bug in the implementation of the
|
||||
mmap () system call in the kernel; this causes emacs to run correctly
|
||||
the first time, and then crash when run a second time.
|
||||
|
||||
Contact your vendor and ask for the mmap bug fix; in the mean time,
|
||||
you may be able to work around the problem by adding a line to your
|
||||
operating system description file (whose name is reported by the
|
||||
configure script) that reads:
|
||||
#define SYSTEM_MALLOC
|
||||
This makes Emacs use memory less efficiently, but seems to work around
|
||||
the kernel bug.
|
||||
|
||||
*** Irix 5 and earlier
|
||||
|
||||
Exactly when Irix-5 end-of-lifed is obscure. But since Irix 6.0
|
||||
shipped in 1994, it has been some years.
|
||||
|
||||
**** Irix 5.2: unexelfsgi.c can't find cmplrs/stsupport.h.
|
||||
|
||||
The file cmplrs/stsupport.h was included in the wrong file set in the
|
||||
Irix 5.2 distribution. You can find it in the optional fileset
|
||||
compiler_dev, or copy it from some other Irix 5.2 system. A kludgy
|
||||
workaround is to change unexelfsgi.c to include sym.h instead of
|
||||
syms.h.
|
||||
|
||||
**** Irix 5.3: "out of virtual swap space".
|
||||
|
||||
This message occurs when the system runs out of swap space due to too
|
||||
many large programs running. The solution is either to provide more
|
||||
swap space or to reduce the number of large programs being run. You
|
||||
can check the current status of the swap space by executing the
|
||||
command `swap -l'.
|
||||
|
||||
You can increase swap space by changing the file /etc/fstab. Adding a
|
||||
line like this:
|
||||
|
||||
/usr/swap/swap.more swap swap pri=3 0 0
|
||||
|
||||
where /usr/swap/swap.more is a file previously created (for instance
|
||||
by using /etc/mkfile), will increase the swap space by the size of
|
||||
that file. Execute `swap -m' or reboot the machine to activate the
|
||||
new swap area. See the manpages for `swap' and `fstab' for further
|
||||
information.
|
||||
|
||||
The objectserver daemon can use up lots of memory because it can be
|
||||
swamped with NIS information. It collects information about all users
|
||||
on the network that can log on to the host.
|
||||
|
||||
If you want to disable the objectserver completely, you can execute
|
||||
the command `chkconfig objectserver off' and reboot. That may disable
|
||||
some of the window system functionality, such as responding CDROM
|
||||
icons.
|
||||
|
||||
You can also remove NIS support from the objectserver. The SGI `admin'
|
||||
FAQ has a detailed description on how to do that; see question 35
|
||||
("Why isn't the objectserver working?"). The admin FAQ can be found at
|
||||
ftp://viz.tamu.edu/pub/sgi/faq/.
|
||||
|
||||
**** Irix 5.3: Emacs crashes in utmpname.
|
||||
|
||||
This problem is fixed in Patch 3175 for Irix 5.3.
|
||||
It is also fixed in Irix versions 6.2 and up.
|
||||
|
||||
**** Irix 6.0: Make tries (and fails) to build a program named unexelfsgi.
|
||||
|
||||
A compiler bug inserts spaces into the string "unexelfsgi . o"
|
||||
in src/Makefile. Edit src/Makefile, after configure is run,
|
||||
find that string, and take out the spaces.
|
||||
|
||||
Compiler fixes in Irix 6.0.1 should eliminate this problem.
|
||||
|
||||
*** SCO Unix and UnixWare
|
||||
|
||||
**** SCO 3.2v4: Unusable default font.
|
||||
|
||||
The Open Desktop environment comes with default X resource settings
|
||||
that tell Emacs to use a variable-width font. Emacs cannot use such
|
||||
fonts, so it does not work.
|
||||
|
||||
This is caused by the file /usr/lib/X11/app-defaults/ScoTerm, which is
|
||||
the application-specific resource file for the `scoterm' terminal
|
||||
emulator program. It contains several extremely general X resources
|
||||
that affect other programs besides `scoterm'. In particular, these
|
||||
resources affect Emacs also:
|
||||
|
||||
*Font: -*-helvetica-medium-r-*--12-*-p-*
|
||||
*Background: scoBackground
|
||||
*Foreground: scoForeground
|
||||
|
||||
The best solution is to create an application-specific resource file for
|
||||
Emacs, /usr/lib/X11/sco/startup/Emacs, with the following contents:
|
||||
|
||||
Emacs*Font: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
|
||||
Emacs*Background: white
|
||||
Emacs*Foreground: black
|
||||
|
||||
(These settings mimic the Emacs defaults, but you can change them to
|
||||
suit your needs.) This resource file is only read when the X server
|
||||
starts up, so you should restart it by logging out of the Open Desktop
|
||||
environment or by running `scologin stop; scologin start` from the shell
|
||||
as root. Alternatively, you can put these settings in the
|
||||
/usr/lib/X11/app-defaults/Emacs resource file and simply restart Emacs,
|
||||
but then they will not affect remote invocations of Emacs that use the
|
||||
Open Desktop display.
|
||||
|
||||
These resource files are not normally shared across a network of SCO
|
||||
machines; you must create the file on each machine individually.
|
||||
|
||||
**** SCO 4.2.0: Regular expressions matching bugs on SCO systems.
|
||||
|
||||
On SCO, there are problems in regexp matching when Emacs is compiled
|
||||
with the system compiler. The compiler version is "Microsoft C
|
||||
version 6", SCO 4.2.0h Dev Sys Maintenance Supplement 01/06/93; Quick
|
||||
C Compiler Version 1.00.46 (Beta). The solution is to compile with
|
||||
GCC.
|
||||
|
||||
**** UnixWare 2.1: Error 12 (virtual memory exceeded) when dumping Emacs.
|
||||
*** UnixWare 2.1: Error 12 (virtual memory exceeded) when dumping Emacs.
|
||||
|
||||
Paul Abrahams (abrahams@acm.org) reports that with the installed
|
||||
virtual memory settings for UnixWare 2.1.2, an Error 12 occurs during
|
||||
@ -3380,21 +2870,7 @@ According to Martin Sohnius, you can also retune this in the kernel:
|
||||
(He recommends you not change the stack limit, though.)
|
||||
These changes take effect when you reboot.
|
||||
|
||||
*** Linux 1.x
|
||||
|
||||
**** Linux 1.0-1.04: Typing C-c C-c in Shell mode kills your X server.
|
||||
|
||||
This happens with Linux kernel 1.0 thru 1.04, approximately. The workaround is
|
||||
to define SIGNALS_VIA_CHARACTERS in config.h and recompile Emacs.
|
||||
Newer Linux kernel versions don't have this problem.
|
||||
|
||||
**** Linux 1.3: Output from subprocess (such as man or diff) is randomly
|
||||
truncated on GNU/Linux systems.
|
||||
|
||||
This is due to a kernel bug which seems to be fixed in Linux version
|
||||
1.3.75.
|
||||
|
||||
** Windows 3.1, 95, 98, and ME
|
||||
** MS-Windows 95, 98, ME, and NT
|
||||
|
||||
*** MS-Windows NT/95: Problems running Perl under Emacs
|
||||
|
||||
@ -3476,8 +2952,7 @@ http://www.gnu.org/software/emacs/windows/.
|
||||
When a program you are trying to run is not found on the PATH,
|
||||
Windows might respond by crashing or locking up your system. In
|
||||
particular, this has been reported when trying to compile a Java
|
||||
program in JDEE when javac.exe is installed, but not on the system
|
||||
PATH.
|
||||
program in JDEE when javac.exe is installed, but not on the system PATH.
|
||||
|
||||
** MS-DOS
|
||||
|
||||
@ -3542,7 +3017,7 @@ your system works as before.
|
||||
*** MS-DOS: Emacs crashes at startup.
|
||||
|
||||
Some users report that Emacs 19.29 requires dpmi memory management,
|
||||
and crashes on startup if the system does not have it. We don't yet
|
||||
and crashes on startup if the system does not have it. We don't
|
||||
know why this happens--perhaps these machines don't have enough real
|
||||
memory, or perhaps something is wrong in Emacs or the compiler.
|
||||
However, arranging to use dpmi support is a workaround.
|
||||
@ -3566,7 +3041,7 @@ This is an unfortunate side-effect of the support for Unix-style
|
||||
device names such as /dev/null in the DJGPP runtime library. A
|
||||
work-around is to rename the problem directory to another name.
|
||||
|
||||
*** MS-DOS+DJGPP: Problems on MS-DOG if DJGPP v2.0 is used to compile Emacs.
|
||||
*** MS-DOS+DJGPP: Problems on MS-DOS if DJGPP v2.0 is used to compile Emacs.
|
||||
|
||||
There are two DJGPP library bugs which cause problems:
|
||||
|
||||
@ -3588,8 +3063,7 @@ the Lisp files it needs to load at startup. Redirect Emacs stdout
|
||||
and stderr to a file to see the error message printed by Emacs.
|
||||
|
||||
Another manifestation of this problem is that Emacs is unable to load
|
||||
the support for editing program sources in languages such as C and
|
||||
Lisp.
|
||||
the support for editing program sources in languages such as C and Lisp.
|
||||
|
||||
This can happen if the Emacs distribution was unzipped without LFN
|
||||
support, thus causing long filenames to be truncated to the first 6
|
||||
@ -3619,7 +3093,7 @@ shortcut keys entirely by adding this line to ~/.OWdefaults:
|
||||
|
||||
OpenWindows.WindowMenuAccelerators: False
|
||||
|
||||
**** twm: A position you specified in .Xdefaults is ignored, using twm.
|
||||
*** twm: A position you specified in .Xdefaults is ignored, using twm.
|
||||
|
||||
twm normally ignores "program-specified" positions.
|
||||
You can tell it to obey them with this command in your `.twmrc' file:
|
||||
@ -3642,62 +3116,6 @@ This problem seems to be a matter of configuring the DECserver to use
|
||||
|
||||
* Build problems on legacy systems
|
||||
|
||||
** BSD/386 1.0: --with-x-toolkit option configures wrong.
|
||||
|
||||
This problem is due to bugs in the shell in version 1.0 of BSD/386.
|
||||
The workaround is to edit the configure file to use some other shell,
|
||||
such as bash.
|
||||
|
||||
** Digital Unix 4.0: Emacs fails to build, giving error message
|
||||
Invalid dimension for the charset-ID 160
|
||||
|
||||
This is due to a bug or an installation problem in GCC 2.8.0.
|
||||
Installing a more recent version of GCC fixes the problem.
|
||||
|
||||
** Digital Unix 4.0: Failure in unexec while dumping emacs.
|
||||
|
||||
This problem manifests itself as an error message
|
||||
|
||||
unexec: Bad address, writing data section to ...
|
||||
|
||||
The user suspects that this happened because his X libraries
|
||||
were built for an older system version,
|
||||
|
||||
./configure --x-includes=/usr/include --x-libraries=/usr/shlib
|
||||
|
||||
made the problem go away.
|
||||
|
||||
** Sunos 4.1.1: there are errors compiling sysdep.c.
|
||||
|
||||
If you get errors such as
|
||||
|
||||
"sysdep.c", line 2017: undefined structure or union
|
||||
"sysdep.c", line 2017: undefined structure or union
|
||||
"sysdep.c", line 2019: nodename undefined
|
||||
|
||||
This can result from defining LD_LIBRARY_PATH. It is very tricky
|
||||
to use that environment variable with Emacs. The Emacs configure
|
||||
script links many test programs with the system libraries; you must
|
||||
make sure that the libraries available to configure are the same
|
||||
ones available when you build Emacs.
|
||||
|
||||
** SunOS 4.1.1: You get this error message from GNU ld:
|
||||
|
||||
/lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment
|
||||
|
||||
The problem is in the Sun shared C library, not in GNU ld.
|
||||
|
||||
The solution is to install Patch-ID# 100267-03 from Sun.
|
||||
|
||||
** Sunos 4.1: Undefined symbols when linking using --with-x-toolkit.
|
||||
|
||||
If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace,
|
||||
_iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after
|
||||
-lXaw in the command that links temacs.
|
||||
|
||||
This problem seems to arise only when the international language
|
||||
extensions to X11R5 are installed.
|
||||
|
||||
** SunOS: Emacs gets error message from linker on Sun.
|
||||
|
||||
If the error message says that a symbol such as `f68881_used' or
|
||||
@ -3782,7 +3200,7 @@ In the XCONS, etc., macros in lisp.h you must replace (a).u.val with
|
||||
This problem will only happen if USE_LISP_UNION_TYPE is manually
|
||||
defined in lisp.h.
|
||||
|
||||
*** C compilers lose on returning unions.
|
||||
** C compilers lose on returning unions.
|
||||
|
||||
I hear that some C compilers cannot handle returning a union type.
|
||||
Most of the functions in GNU Emacs return type Lisp_Object, which is
|
||||
|
17
etc/TODO
17
etc/TODO
@ -40,9 +40,9 @@ make it.
|
||||
fix_submap_inheritance hack and to more cleanly express the
|
||||
relationship between minibuffer-local-*-map): I've had this locally
|
||||
for a long time, but the details of the semantics is somewhat ... delicate.
|
||||
*** prog-mode (a parent-mode, like text-mode). Could/should provide
|
||||
a better fill-paragraph default that uses syntax-tables to recognize
|
||||
string/comment boundaries.
|
||||
*** Derive from prog-mode in more places, close bug#5532.
|
||||
*** prog-mode could/should provide a better fill-paragraph default
|
||||
that uses syntax-tables to recognize string/comment boundaries.
|
||||
*** provide more completion-at-point-functions. Make existing
|
||||
in-buffer completion use completion-at-point.
|
||||
*** "functional" function-key-map that would make it easy to add (and
|
||||
@ -181,7 +181,14 @@ dired buffers and DTRT WRT `auto-revert-mode'.
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html
|
||||
|
||||
* Important features:
|
||||
|
||||
** Extended text-properties (to make overlays "obsolete")
|
||||
*** Several text-property planes
|
||||
This would get us rid of font-lock-face property (and I'd be happy to
|
||||
get rid of char-property-alias-alist as well) since font-lock would
|
||||
simply use the `face' property in the `font-lock' plane.
|
||||
Each property would come with an Elisp merge-function. The merge
|
||||
would be performed in add-text-properties.
|
||||
*** zero-width text-properties.
|
||||
** Having tabs above a window to switch buffers in it.
|
||||
|
||||
** "Perspectives" are named persistent window configurations. We have
|
||||
@ -403,7 +410,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
|
||||
the whole menu bar. In the mean time, it should process other messages.
|
||||
|
||||
** Get some major packages installed: W3 (development version needs
|
||||
significant work), PSGML, _possibly_ Cedet and ECB.
|
||||
significant work), PSGML, _possibly_ ECB.
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html
|
||||
Check the assignments file for other packages which might go in and
|
||||
have been missed.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-05-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (install): Remove references to CVS-related files.
|
||||
|
||||
2010-05-07 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* Version 23.2 released.
|
||||
|
@ -237,8 +237,6 @@ install: all
|
||||
tar -chf - quail/* ja-dic \
|
||||
| (cd ${INSTALLDIR}; umask 0; tar -xvf - && cat > /dev/null) ;\
|
||||
fi; \
|
||||
rm -rf ${INSTALLDIR}/CVS ${INSTALLDIR}/*/CVS; \
|
||||
rm -f ${INSTALLDIR}/.cvsignore ${INSTALLDIR}/*/.cvsignore; \
|
||||
rm -f ${INSTALLDIR}/.gitignore ${INSTALLDIR}/*/.gitignore; \
|
||||
rm -f ${INSTALLDIR}/.arch-inventory ${INSTALLDIR}/*/.arch-inventory; \
|
||||
rm -f ${INSTALLDIR}/\#* ${INSTALLDIR}/*/\#* ; \
|
||||
|
@ -1,3 +1,30 @@
|
||||
2010-06-11 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* makefile.w32-in (lisp2): Fix references to vc/vc-hooks.elc
|
||||
and vc/ediff-hook.elc.
|
||||
|
||||
2010-06-06 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* ntlib.h: Remove code dealing with BSTRING.
|
||||
|
||||
2010-05-29 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* emacsclient.c (longopts, decode_options, print_help_and_exit):
|
||||
New arg `-parent-id'.
|
||||
(main): Send parent-id to Emacs.
|
||||
|
||||
2010-05-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (distclean): No more Makefile.c.
|
||||
|
||||
2010-05-22 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* Makefile.in (STAMP_INST_SCRIPTS, STAMP_SCRIPS): New (Bug #6246).
|
||||
(all): Depend onSTAMP_INST_SCRIPTS, STAMP_SCRIPS (Bug #6246).
|
||||
(stamp-rcs2log, stamp-rcs-checkin, stamp-grep-changelog, stamp-vcdiff):
|
||||
New rules (Bug #6246).
|
||||
(clean): Remove stamp-* (Bug #6246).
|
||||
|
||||
2010-05-12 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (INSTALLABLES): Remove @LIB_SRC_EXTRA_INSTALLABLES@.
|
||||
@ -25,11 +52,6 @@
|
||||
|
||||
* Makefile.in (BLESSMAIL_TARGET): Set with configure, not cpp.
|
||||
|
||||
2010-05-08 Christoph <cschol2112@googlemail.com> (tiny change)
|
||||
|
||||
* makefile.w32-in (OTHER_PLATFORM_SUPPORT): Use parenthesis
|
||||
for macros for nmake compatibility.
|
||||
|
||||
2010-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (THIS_IS_MAKEFILE): Remove, unused.
|
||||
@ -4556,16 +4578,6 @@
|
||||
* Makefile.in.in (install, maybe-blessmail): Don't cd ..;
|
||||
configure has already set $(INSTALL) to the proper relative path.
|
||||
|
||||
1995-06-27 Francesco Potortì (pot@cnuce.cnr.it)
|
||||
|
||||
* etags.c (plain_C_entries): New function.
|
||||
(lowcase): New macro.
|
||||
(tail, Fortran_functions, Pascal_functions): Use new macro lowcase.
|
||||
(lang_suffixes): New suffix ".pc" for Pro*C files.
|
||||
(consider_token): Don't tag all tokens beginning with DEFUN & Co..
|
||||
(tail): Look for the end of the token when comparing.
|
||||
(takeprec): Since now tail behaves differently, use strneq.
|
||||
|
||||
1995-07-08 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* rcs2log (datearg): Separate date from time with comma, not space,
|
||||
|
@ -106,14 +106,16 @@ INSTALL_STRIP =
|
||||
|
||||
# ========================== Lists of Files ===========================
|
||||
|
||||
# Things that a user might actually run,
|
||||
# which should be installed in bindir.
|
||||
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} b2m${EXEEXT} ebrowse${EXEEXT}
|
||||
# Things that a user might actually run, which should be installed in bindir.
|
||||
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \
|
||||
b2m${EXEEXT} ebrowse${EXEEXT}
|
||||
|
||||
INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog
|
||||
STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog
|
||||
|
||||
# Things that Emacs runs internally, or during the build process,
|
||||
# which should not be installed in bindir.
|
||||
UTILITIES= profile${EXEEXT} digest-doc${EXEEXT} sorted-doc${EXEEXT} \
|
||||
UTILITIES = profile${EXEEXT} digest-doc${EXEEXT} sorted-doc${EXEEXT} \
|
||||
movemail${EXEEXT} fakemail${EXEEXT} \
|
||||
hexl${EXEEXT} update-game-score${EXEEXT}
|
||||
|
||||
@ -122,6 +124,7 @@ DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT}
|
||||
# Like UTILITIES, but they're not system-dependent, and should not be
|
||||
# deleted by the distclean target.
|
||||
SCRIPTS= rcs2log vcdiff
|
||||
STAMP_SCRIPTS= stamp-rcs2log stamp-vcdiff
|
||||
|
||||
EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
|
||||
|
||||
@ -153,7 +156,8 @@ LIBRESOLV=@LIBRESOLV@
|
||||
LIBS_MAIL=@LIBS_MAIL@
|
||||
|
||||
## Extra libraries to use when linking movemail.
|
||||
LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) $(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV)
|
||||
LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) \
|
||||
$(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV)
|
||||
|
||||
## Some systems define this to request special libraries.
|
||||
LIBS_SYSTEM = @LIBS_SYSTEM@
|
||||
@ -161,7 +165,8 @@ LIBS_SYSTEM = @LIBS_SYSTEM@
|
||||
# Those files shared with other GNU utilities need HAVE_CONFIG_H
|
||||
# defined before they know they can take advantage of the information
|
||||
# in ../src/config.h.
|
||||
BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) -DHAVE_CONFIG_H -I. -I../src -I${srcdir} -I${srcdir}/../src
|
||||
BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) -DHAVE_CONFIG_H \
|
||||
-I. -I../src -I${srcdir} -I${srcdir}/../src
|
||||
|
||||
ALL_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
|
||||
LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
|
||||
@ -177,23 +182,27 @@ LOADLIBES=$(LIBS_SYSTEM)
|
||||
.c.o:
|
||||
${CC} -c ${CPP_CFLAGS} $<
|
||||
|
||||
all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
|
||||
all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} ${STAMP_INST_SCRIPTS} ${STAMP_SCRIPTS}
|
||||
|
||||
## These targets copy the scripts into the build directory so that
|
||||
## they can be run from there in an uninstalled Emacs.
|
||||
## The "-" is prepended because some versions of cp barf when srcdir
|
||||
## is the current directory, and thus the file will be copied into itself.
|
||||
rcs2log: $(srcdir)/rcs2log
|
||||
stamp-rcs2log: $(srcdir)/rcs2log
|
||||
-cp -p $(srcdir)/rcs2log rcs2log
|
||||
touch $@
|
||||
|
||||
rcs-checkin: $(srcdir)/rcs-checkin
|
||||
stamp-rcs-checkin: $(srcdir)/rcs-checkin
|
||||
-cp -p $(srcdir)/rcs-checkin rcs-checkin
|
||||
touch $@
|
||||
|
||||
grep-changelog: $(srcdir)/grep-changelog
|
||||
stamp-grep-changelog: $(srcdir)/grep-changelog
|
||||
-cp -p $(srcdir)/grep-changelog grep-changelog
|
||||
touch $@
|
||||
|
||||
vcdiff: $(srcdir)/vcdiff
|
||||
stamp-vcdiff: $(srcdir)/vcdiff
|
||||
-cp -p $(srcdir)/vcdiff vcdiff
|
||||
touch $@
|
||||
|
||||
## Only used if we need blessmail, but no harm in always defining.
|
||||
## This makes the actual blessmail executable.
|
||||
@ -270,11 +279,11 @@ mostlyclean:
|
||||
|
||||
clean: mostlyclean
|
||||
-rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
|
||||
-rm -f fns*.el *.tab.c *.tab.h
|
||||
-rm -f fns*.el *.tab.c *.tab.h stamp-*
|
||||
|
||||
distclean: clean
|
||||
-rm -f TAGS
|
||||
-rm -f Makefile Makefile.c blessmail
|
||||
-rm -f Makefile blessmail
|
||||
|
||||
maintainer-clean: distclean
|
||||
true
|
||||
@ -316,24 +325,31 @@ REGEXPOBJ = regex.o
|
||||
REGEXPDEPS = $(REGEXPOBJ) $(srcdir)/../src/regex.h
|
||||
|
||||
regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h ../src/config.h
|
||||
${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER ${srcdir}/../src/regex.c
|
||||
${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
|
||||
${srcdir}/../src/regex.c
|
||||
|
||||
etags${EXEEXT}: ${srcdir}/etags.c $(GETOPTDEPS) $(REGEXPDEPS) ../src/config.h
|
||||
$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXPOBJ) $(LOADLIBES) -o etags
|
||||
$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" \
|
||||
-DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) \
|
||||
$(REGEXPOBJ) $(LOADLIBES) -o etags
|
||||
|
||||
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c $(GETOPTDEPS) ../src/config.h
|
||||
$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" ${srcdir}/ebrowse.c $(GETOPTOBJS) $(LOADLIBES) -o ebrowse
|
||||
$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
|
||||
${srcdir}/ebrowse.c $(GETOPTOBJS) $(LOADLIBES) -o ebrowse
|
||||
|
||||
## We depend on etags to assure that parallel makes do not write two
|
||||
## etags.o files on top of each other.
|
||||
ctags${EXEEXT}: etags${EXEEXT}
|
||||
$(CC) ${ALL_CFLAGS} -DCTAGS -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) $(REGEXPOBJ) $(LOADLIBES) -o ctags
|
||||
$(CC) ${ALL_CFLAGS} -DCTAGS -DEMACS_NAME="\"GNU Emacs\"" \
|
||||
-DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) \
|
||||
$(REGEXPOBJ) $(LOADLIBES) -o ctags
|
||||
|
||||
profile${EXEEXT}: ${srcdir}/profile.c ../src/config.h
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/profile.c $(LOADLIBES) -o profile
|
||||
|
||||
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) -o make-docfile
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \
|
||||
-o make-docfile
|
||||
|
||||
digest-doc${EXEEXT}: ${srcdir}/digest-doc.c
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/digest-doc.c $(LOADLIBES) -o digest-doc
|
||||
@ -346,9 +362,9 @@ b2m${EXEEXT}: ${srcdir}/b2m.c ../src/config.h $(GETOPTDEPS)
|
||||
$(GETOPTOBJS) $(LOADLIBES) -o b2m
|
||||
|
||||
movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS)
|
||||
$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o $(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail
|
||||
$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o \
|
||||
$(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail
|
||||
|
||||
## We need to define emacs to get the right version of something (what?).
|
||||
movemail.o: ${srcdir}/movemail.c ../src/config.h $(GETOPT_H)
|
||||
$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c
|
||||
|
||||
@ -367,7 +383,8 @@ hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
|
||||
|
||||
update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
|
||||
$(CC) ${LINK_CFLAGS} update-game-score.o $(GETOPTOBJS) $(LOADLIBES) -o update-game-score
|
||||
$(CC) ${LINK_CFLAGS} update-game-score.o $(GETOPTOBJS) \
|
||||
$(LOADLIBES) -o update-game-score
|
||||
|
||||
update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
|
||||
$(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
|
||||
|
@ -138,6 +138,9 @@ int current_frame = 1;
|
||||
/* The display on which Emacs should work. --display. */
|
||||
char *display = NULL;
|
||||
|
||||
/* The parent window ID, if we are opening a frame via XEmbed. */
|
||||
char *parent_id = NULL;
|
||||
|
||||
/* Nonzero means open a new Emacs frame on the current terminal. */
|
||||
int tty = 0;
|
||||
|
||||
@ -173,6 +176,7 @@ struct option longopts[] =
|
||||
#ifndef WINDOWSNT
|
||||
{ "display", required_argument, NULL, 'd' },
|
||||
#endif
|
||||
{ "parent-id", required_argument, NULL, 'p' },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
@ -583,6 +587,11 @@ decode_options (argc, argv)
|
||||
current_frame = 0;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
parent_id = optarg;
|
||||
current_frame = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
print_help_and_exit ();
|
||||
break;
|
||||
@ -656,7 +665,8 @@ The following OPTIONS are accepted:\n\
|
||||
-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
|
||||
-n, --no-wait Don't wait for the server to return\n\
|
||||
-d DISPLAY, --display=DISPLAY\n\
|
||||
Visit the file in the given display\n"
|
||||
Visit the file in the given display\n\
|
||||
--parent-id=ID Open in parent window ID, via XEmbed\n"
|
||||
#ifndef NO_SOCKETS_IN_FILE_SYSTEM
|
||||
"-s SOCKET, --socket-name=SOCKET\n\
|
||||
Set filename of the UNIX socket for communication\n"
|
||||
@ -1620,6 +1630,13 @@ main (argc, argv)
|
||||
send_to_emacs (emacs_socket, " ");
|
||||
}
|
||||
|
||||
if (parent_id)
|
||||
{
|
||||
send_to_emacs (emacs_socket, "-parent-id ");
|
||||
quote_argument (emacs_socket, parent_id);
|
||||
send_to_emacs (emacs_socket, " ");
|
||||
}
|
||||
|
||||
/* If using the current frame, send tty information to Emacs anyway.
|
||||
In daemon mode, Emacs may need to occupy this tty if no other
|
||||
frame is available. */
|
||||
|
@ -279,8 +279,8 @@ lisp2 = \
|
||||
$(lispsource)textmodes/text-mode.elc \
|
||||
$(lispsource)emacs-lisp/timer.elc \
|
||||
$(lispsource)jka-cmpr-hook.elc \
|
||||
$(lispsource)vc-hooks.elc \
|
||||
$(lispsource)ediff-hook.elc \
|
||||
$(lispsource)vc/vc-hooks.elc \
|
||||
$(lispsource)vc/ediff-hook.elc \
|
||||
$(lispsource)epa-hook.elc \
|
||||
$(TOOLTIP_SUPPORT) \
|
||||
$(WINNT_SUPPORT) \
|
||||
|
@ -43,12 +43,6 @@ int setegid (unsigned gid);
|
||||
char * getpass (const char * prompt);
|
||||
int fchown (int fd, unsigned uid, unsigned gid);
|
||||
|
||||
#ifndef BSTRING
|
||||
#define bzero(b, l) memset(b, 0, l)
|
||||
#define bcopy(s, d, l) memcpy(d, s, l)
|
||||
#define bcmp(a, b, l) memcmp(a, b, l)
|
||||
#endif
|
||||
|
||||
/* redirect or undo interceptions created by config.h */
|
||||
#undef access
|
||||
#define access _access
|
||||
|
1087
lisp/ChangeLog
1087
lisp/ChangeLog
File diff suppressed because it is too large
Load Diff
@ -7161,7 +7161,7 @@
|
||||
* doc-view.el (doc-view-search-backward, doc-view-search):
|
||||
Fix assignment to free variable bug.
|
||||
|
||||
2007-11-16 Martin Pohlack <mp26@os.inf.tu-dresden.de> (tiny change)
|
||||
2007-11-16 Martin Pohlack <mp26@os.inf.tu-dresden.de>
|
||||
|
||||
* emulation/pc-select.el (pc-select-shifted-mark): New var.
|
||||
(ensure-mark): Set it.
|
||||
|
@ -84,28 +84,25 @@ COMPILE_FIRST = \
|
||||
emacs = EMACSLOADPATH=$(lisp) LC_ALL=C $(EMACS) $(EMACSOPT)
|
||||
|
||||
# Common command to find subdirectories
|
||||
|
||||
setwins=subdirs=`(find . -type d -print)`; \
|
||||
for file in $$subdirs; do \
|
||||
case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; \
|
||||
case $$file in */.* | */.*/* | */=* ) ;; \
|
||||
*) wins="$$wins $$file" ;; \
|
||||
esac; \
|
||||
done
|
||||
|
||||
# Find all subdirectories except `obsolete' and `term'.
|
||||
|
||||
setwins_almost=subdirs=`(find . -type d -print)`; \
|
||||
for file in $$subdirs; do \
|
||||
case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; \
|
||||
case $$file in */.* | */.*/* | */=* | */obsolete | */term ) ;; \
|
||||
*) wins="$$wins $$file" ;; \
|
||||
esac; \
|
||||
done
|
||||
|
||||
# Find all subdirectories in which we might want to create subdirs.el
|
||||
|
||||
setwins_for_subdirs=subdirs=`(find . -type d -print)`; \
|
||||
for file in $$subdirs; do \
|
||||
case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */cedet* ) ;; \
|
||||
case $$file in */.* | */.*/* | */=* | */cedet* ) ;; \
|
||||
*) wins="$$wins $$file" ;; \
|
||||
esac; \
|
||||
done
|
||||
|
@ -142,6 +142,10 @@ map. This color map is stored in the variable `ansi-color-map'."
|
||||
(defconst ansi-color-regexp "\033\\[\\([0-9;]*m\\)"
|
||||
"Regexp that matches SGR control sequences.")
|
||||
|
||||
(defconst ansi-color-drop-regexp
|
||||
"\033\\[\\([ABCDsuK]\\|2J\\|=[0-9]+[hI]\\|[0-9;]*[Hf]\\)"
|
||||
"Regexp that matches ANSI control sequences to silently drop.")
|
||||
|
||||
(defconst ansi-color-parameter-regexp "\\([0-9]*\\)[m;]"
|
||||
"Regexp that matches SGR control sequence parameters.")
|
||||
|
||||
@ -154,7 +158,7 @@ map. This color map is stored in the variable `ansi-color-map'."
|
||||
If nil, do nothing.
|
||||
If the symbol `filter', then filter all SGR control sequences.
|
||||
If anything else (such as t), then translate SGR control sequences
|
||||
into text-properties.
|
||||
into text properties.
|
||||
|
||||
In order for this to have any effect, `ansi-color-process-output' must
|
||||
be in `comint-output-filter-functions'.
|
||||
@ -188,12 +192,12 @@ in shell buffers. You set this variable by calling one of:
|
||||
|
||||
;;;###autoload
|
||||
(defun ansi-color-process-output (ignored)
|
||||
"Maybe translate SGR control sequences of comint output into text-properties.
|
||||
"Maybe translate SGR control sequences of comint output into text properties.
|
||||
|
||||
Depending on variable `ansi-color-for-comint-mode' the comint output is
|
||||
either not processed, SGR control sequences are filtered using
|
||||
`ansi-color-filter-region', or SGR control sequences are translated into
|
||||
text-properties using `ansi-color-apply-on-region'.
|
||||
text properties using `ansi-color-apply-on-region'.
|
||||
|
||||
The comint output is assumed to lie between the marker
|
||||
`comint-last-output-start' and the process-mark.
|
||||
@ -217,15 +221,15 @@ This is a good function to put in `comint-output-filter-functions'."
|
||||
(defun ansi-color-unfontify-region (beg end &rest xemacs-stuff)
|
||||
"Replacement function for `font-lock-default-unfontify-region'.
|
||||
|
||||
As text-properties are implemented using extents in XEmacs, this
|
||||
As text properties are implemented using extents in XEmacs, this
|
||||
function is probably not needed. In Emacs, however, things are a bit
|
||||
different: When font-lock is active in a buffer, you cannot simply add
|
||||
face text-properties to the buffer. Font-lock will remove the face
|
||||
text-property using `font-lock-unfontify-region-function'. If you want
|
||||
face text properties to the buffer. Font-lock will remove the face
|
||||
text property using `font-lock-unfontify-region-function'. If you want
|
||||
to insert the strings returned by `ansi-color-apply' into such buffers,
|
||||
you must set `font-lock-unfontify-region-function' to
|
||||
`ansi-color-unfontify-region'. This function will not remove all face
|
||||
text-properties unconditionally. It will keep the face text-properties
|
||||
text properties unconditionally. It will keep the face text properties
|
||||
if the property `ansi-color' is set.
|
||||
|
||||
The region from BEG to END is unfontified. XEMACS-STUFF is ignored.
|
||||
@ -262,7 +266,7 @@ escape sequence.")
|
||||
(make-variable-buffer-local 'ansi-color-context)
|
||||
|
||||
(defun ansi-color-filter-apply (string)
|
||||
"Filter out all SGR control sequences from STRING.
|
||||
"Filter out all ANSI control sequences from STRING.
|
||||
|
||||
Every call to this function will set and use the buffer-local variable
|
||||
`ansi-color-context' to save partial escape sequences. This information
|
||||
@ -292,10 +296,11 @@ This function can be added to `comint-preoutput-filter-functions'."
|
||||
result))
|
||||
|
||||
(defun ansi-color-apply (string)
|
||||
"Translates SGR control sequences into text-properties.
|
||||
"Translates SGR control sequences into text properties.
|
||||
Delete all other control sequences without processing them.
|
||||
|
||||
Applies SGR control sequences setting foreground and background colors
|
||||
to STRING using text-properties and returns the result. The colors used
|
||||
to STRING using text properties and returns the result. The colors used
|
||||
are given in `ansi-color-faces-vector' and `ansi-color-names-vector'.
|
||||
See function `ansi-color-apply-sequence' for details.
|
||||
|
||||
@ -309,23 +314,27 @@ This function can be added to `comint-preoutput-filter-functions'.
|
||||
You cannot insert the strings returned into buffers using font-lock.
|
||||
See `ansi-color-unfontify-region' for a way around this."
|
||||
(let ((face (car ansi-color-context))
|
||||
(start 0) end escape-sequence result)
|
||||
;; if context was saved and is a string, prepend it
|
||||
(start 0) end escape-sequence result
|
||||
colorized-substring)
|
||||
;; If context was saved and is a string, prepend it.
|
||||
(if (cadr ansi-color-context)
|
||||
(setq string (concat (cadr ansi-color-context) string)
|
||||
ansi-color-context nil))
|
||||
;; find the next escape sequence
|
||||
;; Find the next escape sequence.
|
||||
(while (setq end (string-match ansi-color-regexp string start))
|
||||
;; store escape sequence
|
||||
(setq escape-sequence (match-string 1 string))
|
||||
;; colorize the old block from start to end using old face
|
||||
;; Colorize the old block from start to end using old face.
|
||||
(when face
|
||||
(put-text-property start end 'ansi-color t string)
|
||||
(put-text-property start end 'face face string))
|
||||
(setq result (concat result (substring string start end))
|
||||
(setq colorized-substring (substring string start end)
|
||||
start (match-end 0))
|
||||
;; create new face by applying all the parameters in the escape
|
||||
;; sequence
|
||||
;; Eliminate unrecognized ANSI sequences.
|
||||
(while (string-match ansi-color-drop-regexp colorized-substring)
|
||||
(setq colorized-substring
|
||||
(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)))
|
||||
;; if the rest of the string should have a face, put it there
|
||||
(when face
|
||||
@ -335,13 +344,13 @@ See `ansi-color-unfontify-region' for a way around this."
|
||||
(let (fragment)
|
||||
(if (string-match "\033" string start)
|
||||
(let ((pos (match-beginning 0)))
|
||||
(setq fragment (substring string pos)
|
||||
result (concat result (substring string start pos))))
|
||||
(setq result (concat result (substring string start))))
|
||||
(setq fragment (substring string pos))
|
||||
(push (substring string start pos) result))
|
||||
(push (substring string start) result))
|
||||
(if (or face fragment)
|
||||
(setq ansi-color-context (list face fragment))
|
||||
(setq ansi-color-context nil)))
|
||||
result))
|
||||
(apply 'concat (nreverse result))))
|
||||
|
||||
;; Working with regions
|
||||
|
||||
@ -354,7 +363,7 @@ position processed.")
|
||||
(make-variable-buffer-local 'ansi-color-context-region)
|
||||
|
||||
(defun ansi-color-filter-region (begin end)
|
||||
"Filter out all SGR control sequences from region BEGIN to END.
|
||||
"Filter out all ANSI control sequences from region BEGIN to END.
|
||||
|
||||
Every call to this function will set and use the buffer-local variable
|
||||
`ansi-color-context-region' to save position. This information will be
|
||||
@ -365,23 +374,27 @@ it will override BEGIN, the start of the region. Set
|
||||
(start (or (cadr ansi-color-context-region) begin)))
|
||||
(save-excursion
|
||||
(goto-char start)
|
||||
;; find the next escape sequence
|
||||
(while (re-search-forward ansi-color-regexp end-marker t)
|
||||
;; delete the escape sequence
|
||||
;; Delete unrecognized escape sequences.
|
||||
(while (re-search-forward ansi-color-drop-regexp end-marker t)
|
||||
(replace-match ""))
|
||||
;; save context, add the remainder of the string to the result
|
||||
(if (re-search-forward "\033" end-marker t)
|
||||
(setq ansi-color-context-region (list nil (match-beginning 0)))
|
||||
(setq ansi-color-context-region nil)))))
|
||||
(goto-char start)
|
||||
;; Delete SGR escape sequences.
|
||||
(while (re-search-forward ansi-color-regexp end-marker t)
|
||||
(replace-match ""))
|
||||
;; save context, add the remainder of the string to the result
|
||||
(if (re-search-forward "\033" end-marker t)
|
||||
(setq ansi-color-context-region (list nil (match-beginning 0)))
|
||||
(setq ansi-color-context-region nil)))))
|
||||
|
||||
(defun ansi-color-apply-on-region (begin end)
|
||||
"Translates SGR control sequences into overlays or extents.
|
||||
Delete all other control sequences without processing them.
|
||||
|
||||
Applies SGR control sequences setting foreground and background colors
|
||||
to text in region between BEGIN and END using extents or overlays.
|
||||
Emacs will use overlays, XEmacs will use extents. The colors used are
|
||||
given in `ansi-color-faces-vector' and `ansi-color-names-vector'. See
|
||||
function `ansi-color-apply-sequence' for details.
|
||||
SGR control sequences are applied by setting foreground and
|
||||
background colors to the text 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
|
||||
@ -394,11 +407,16 @@ start of the region and set the face with which to start. Set
|
||||
(copy-marker begin)))
|
||||
(end-marker (copy-marker end))
|
||||
escape-sequence)
|
||||
;; First, eliminate unrecognized ANSI control sequences.
|
||||
(save-excursion
|
||||
(goto-char start-marker)
|
||||
;; find the next escape sequence
|
||||
(while (re-search-forward ansi-color-drop-regexp end-marker t)
|
||||
(replace-match "")))
|
||||
(save-excursion
|
||||
(goto-char start-marker)
|
||||
;; Find the next SGR sequence.
|
||||
(while (re-search-forward ansi-color-regexp end-marker t)
|
||||
;; colorize the old block from start to end using old face
|
||||
;; Colorize the old block from start to end using old face.
|
||||
(when face
|
||||
(ansi-color-set-extent-face
|
||||
(ansi-color-make-extent start-marker (match-beginning 0))
|
||||
|
@ -678,6 +678,63 @@ is okay. See `mode-line-format'.")
|
||||
;but they are not assigned to keys there.
|
||||
(put 'narrow-to-region 'disabled t)
|
||||
|
||||
;; Moving with arrows in bidi-sensitive direction.
|
||||
(defun right-char (&optional n)
|
||||
"Move point N characters to the right (to the left if N is negative).
|
||||
On reaching beginning or end of buffer, stop and signal error.
|
||||
|
||||
Depending on the bidirectional context, this may move either forward
|
||||
or backward in the buffer. This is in contrast with \\[forward-char]
|
||||
and \\[backward-char], which see."
|
||||
(interactive "^p")
|
||||
(if (eq (current-bidi-paragraph-direction) 'left-to-right)
|
||||
(forward-char n)
|
||||
(backward-char n)))
|
||||
|
||||
(defun left-char ( &optional n)
|
||||
"Move point N characters to the left (to the right if N is negative).
|
||||
On reaching beginning or end of buffer, stop and signal error.
|
||||
|
||||
Depending on the bidirectional context, this may move either backward
|
||||
or forward in the buffer. This is in contrast with \\[backward-char]
|
||||
and \\[forward-char], which see."
|
||||
(interactive "^p")
|
||||
(if (eq (current-bidi-paragraph-direction) 'left-to-right)
|
||||
(backward-char n)
|
||||
(forward-char n)))
|
||||
|
||||
(defun right-word (&optional n)
|
||||
"Move point N words to the right (to the left if N is negative).
|
||||
|
||||
Depending on the bidirectional context, this may move either forward
|
||||
or backward in the buffer. This is in contrast with \\[forward-word]
|
||||
and \\[backward-word], which see.
|
||||
|
||||
Value is normally t.
|
||||
If an edge of the buffer or a field boundary is reached, point is left there
|
||||
there and the function returns nil. Field boundaries are not noticed
|
||||
if `inhibit-field-text-motion' is non-nil."
|
||||
(interactive "^p")
|
||||
(if (eq (current-bidi-paragraph-direction) 'left-to-right)
|
||||
(forward-word n)
|
||||
(backward-word n)))
|
||||
|
||||
(defun left-word (&optional n)
|
||||
"Move point N words to the left (to the right if N is negative).
|
||||
|
||||
Depending on the bidirectional context, this may move either backward
|
||||
or forward in the buffer. This is in contrast with \\[backward-word]
|
||||
and \\[forward-word], which see.
|
||||
|
||||
Value is normally t.
|
||||
If an edge of the buffer or a field boundary is reached, point is left there
|
||||
there and the function returns nil. Field boundaries are not noticed
|
||||
if `inhibit-field-text-motion' is non-nil."
|
||||
(interactive "^p")
|
||||
(if (eq (current-bidi-paragraph-direction) 'left-to-right)
|
||||
(backward-word n)
|
||||
(forward-word n)))
|
||||
|
||||
(defvar narrow-map (make-sparse-keymap)
|
||||
"Keymap for narrowing commands.")
|
||||
(define-key ctl-x-map "n" narrow-map)
|
||||
@ -828,9 +885,9 @@ is okay. See `mode-line-format'.")
|
||||
(define-key global-map [C-home] 'beginning-of-buffer)
|
||||
(define-key global-map [M-home] 'beginning-of-buffer-other-window)
|
||||
(define-key esc-map [home] 'beginning-of-buffer-other-window)
|
||||
(define-key global-map [left] 'backward-char)
|
||||
(define-key global-map [left] 'left-char)
|
||||
(define-key global-map [up] 'previous-line)
|
||||
(define-key global-map [right] 'forward-char)
|
||||
(define-key global-map [right] 'right-char)
|
||||
(define-key global-map [down] 'next-line)
|
||||
(define-key global-map [prior] 'scroll-down-command)
|
||||
(define-key global-map [next] 'scroll-up-command)
|
||||
@ -1030,8 +1087,8 @@ is okay. See `mode-line-format'.")
|
||||
(global-set-key [M-left] 'backward-word)
|
||||
(define-key esc-map [left] 'backward-word)
|
||||
;; ilya@math.ohio-state.edu says these bindings are standard on PC editors.
|
||||
(global-set-key [C-right] 'forward-word)
|
||||
(global-set-key [C-left] 'backward-word)
|
||||
(global-set-key [C-right] 'right-word)
|
||||
(global-set-key [C-left] 'left-word)
|
||||
;; This is not quite compatible, but at least is analogous
|
||||
(global-set-key [C-delete] 'kill-word)
|
||||
(global-set-key [C-backspace] 'backward-kill-word)
|
||||
|
@ -1152,7 +1152,7 @@ and move point to current buffer."
|
||||
(dolist (buffer list)
|
||||
(bs--insert-one-entry buffer)
|
||||
(insert "\n"))
|
||||
(delete-backward-char 1)
|
||||
(delete-char -1)
|
||||
(bs--set-window-height)
|
||||
(bs--goto-current-buffer)
|
||||
(font-lock-fontify-buffer)
|
||||
|
@ -74,6 +74,8 @@ Summary of changes to "Calc"
|
||||
|
||||
Emacs 24.1
|
||||
|
||||
* Gave `calc-histogram' the option of using a vector to determine the bins.
|
||||
|
||||
* Added "O" option prefix.
|
||||
|
||||
* Used "O" prefix to "d r" (`calc-radix') to turn on twos-complement mode.
|
||||
|
@ -510,6 +510,7 @@ The value t means abort and give an error message.")
|
||||
("≥" ">=")
|
||||
("≦" "<=")
|
||||
("≧" ">=")
|
||||
("µ" "μ")
|
||||
;; fractions
|
||||
("¼" "(1:4)") ; 1/4
|
||||
("½" "(1:2)") ; 1/2
|
||||
@ -675,11 +676,11 @@ in Calc algebraic input.")
|
||||
(cond ((and (stringp (car p))
|
||||
(or (> (length (car p)) 1) (equal (car p) "$")
|
||||
(equal (car p) "\""))
|
||||
(string-match "[^a-zA-Z0-9]" (car p)))
|
||||
(string-match "[^a-zA-Zα-ωΑ-Ω0-9]" (car p)))
|
||||
(let ((s (regexp-quote (car p))))
|
||||
(if (string-match "\\`[a-zA-Z0-9]" s)
|
||||
(if (string-match "\\`[a-zA-Zα-ωΑ-Ω0-9]" s)
|
||||
(setq s (concat "\\<" s)))
|
||||
(if (string-match "[a-zA-Z0-9]\\'" s)
|
||||
(if (string-match "[a-zA-Zα-ωΑ-Ω0-9]\\'" s)
|
||||
(setq s (concat s "\\>")))
|
||||
(or (assoc s math-toks)
|
||||
(progn
|
||||
@ -718,15 +719,17 @@ in Calc algebraic input.")
|
||||
math-expr-data (math-match-substring math-exp-str 0)
|
||||
math-exp-pos (match-end 0)))
|
||||
((or (and (>= ch ?a) (<= ch ?z))
|
||||
(and (>= ch ?A) (<= ch ?Z)))
|
||||
(and (>= ch ?A) (<= ch ?Z))
|
||||
(and (>= ch ?α) (<= ch ?ω))
|
||||
(and (>= ch ?Α) (<= ch ?Ω)))
|
||||
(string-match
|
||||
(cond
|
||||
((and (memq calc-language calc-lang-allow-underscores)
|
||||
(memq calc-language calc-lang-allow-percentsigns))
|
||||
"[a-zA-Z0-9_'#]*")
|
||||
"[a-zA-Zα-ωΑ-Ω0-9_'#]*")
|
||||
((memq calc-language calc-lang-allow-underscores)
|
||||
"[a-zA-Z0-9_#]*")
|
||||
(t "[a-zA-Z0-9'#]*"))
|
||||
"[a-zA-Zα-ωΑ-Ω0-9_#]*")
|
||||
(t "[a-zA-Zα-ωΑ-Ω0-9'#]*"))
|
||||
math-exp-str math-exp-pos)
|
||||
(setq math-exp-token 'symbol
|
||||
math-exp-pos (match-end 0)
|
||||
@ -744,12 +747,12 @@ in Calc algebraic input.")
|
||||
(or (eq math-exp-pos 0)
|
||||
(and (not (memq calc-language
|
||||
calc-lang-allow-underscores))
|
||||
(eq (string-match "[^])}\"a-zA-Z0-9'$]_"
|
||||
(eq (string-match "[^])}\"a-zA-Zα-ωΑ-Ω0-9'$]_"
|
||||
math-exp-str (1- math-exp-pos))
|
||||
(1- math-exp-pos))))))
|
||||
(or (and (memq calc-language calc-lang-c-type-hex)
|
||||
(string-match "0[xX][0-9a-fA-F]+" math-exp-str math-exp-pos))
|
||||
(string-match "_?\\([0-9]+.?0*@ *\\)?\\([0-9]+.?0*' *\\)?\\(0*\\([2-9]\\|1[0-4]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-dA-D.]+[eE][-+_]?[0-9]+\\|0*\\([2-9]\\|[0-2][0-9]\\|3[0-6]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-zA-Z:.]+\\|[0-9]+:[0-9:]+\\|[0-9.]+\\([eE][-+_]?[0-9]+\\)?\"?\\)?"
|
||||
(string-match "_?\\([0-9]+.?0*@ *\\)?\\([0-9]+.?0*' *\\)?\\(0*\\([2-9]\\|1[0-4]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-dA-D.]+[eE][-+_]?[0-9]+\\|0*\\([2-9]\\|[0-2][0-9]\\|3[0-6]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-zA-Zα-ωΑ-Ω:.]+\\|[0-9]+:[0-9:]+\\|[0-9.]+\\([eE][-+_]?[0-9]+\\)?\"?\\)?"
|
||||
math-exp-str math-exp-pos))
|
||||
(setq math-exp-token 'number
|
||||
math-expr-data (math-match-substring math-exp-str 0)
|
||||
|
@ -845,6 +845,8 @@ the size of a Calc bignum digit.")
|
||||
(len (length num)))
|
||||
(if (< len digs)
|
||||
(setq num (concat (make-string (- digs len) ?0) num))))
|
||||
(when calc-group-digits
|
||||
(setq num (math-group-float num)))
|
||||
(concat
|
||||
(number-to-string calc-number-radix)
|
||||
"##"
|
||||
|
@ -3283,7 +3283,7 @@ If X is not an error form, return 1."
|
||||
(concat "-" (math-format-flat-expr (nth 1 a) 1000)))
|
||||
(t
|
||||
(concat (math-remove-dashes
|
||||
(if (string-match "\\`calcFunc-\\([a-zA-Z0-9']+\\)\\'"
|
||||
(if (string-match "\\`calcFunc-\\([a-zA-Zα-ωΑ-Ω0-9']+\\)\\'"
|
||||
(symbol-name (car a)))
|
||||
(math-match-substring (symbol-name (car a)) 1)
|
||||
(symbol-name (car a))))
|
||||
@ -3469,7 +3469,8 @@ If X is not an error form, return 1."
|
||||
|
||||
(defun math-group-float (str) ; [X X]
|
||||
(let* ((pt (or (string-match "[^0-9a-zA-Z]" str) (length str)))
|
||||
(g (if (integerp calc-group-digits) (math-abs calc-group-digits) 3))
|
||||
(g (if (integerp calc-group-digits) (math-abs calc-group-digits)
|
||||
(if (memq calc-number-radix '(2 16)) 4 3)))
|
||||
(i pt))
|
||||
(if (and (integerp calc-group-digits) (< calc-group-digits 0))
|
||||
(while (< (setq i (+ (1+ i) g)) (length str))
|
||||
|
@ -433,7 +433,7 @@
|
||||
(while (memq (preceding-char) '(?\s ?\t))
|
||||
(forward-char -1))
|
||||
(if (eq (preceding-char) ?\,)
|
||||
(delete-backward-char 1))))
|
||||
(delete-char -1))))
|
||||
(with-current-buffer calcbuf
|
||||
(setq cache-env (list calc-angle-mode
|
||||
calc-complex-mode
|
||||
|
@ -128,7 +128,7 @@ C-w Describe how there is no warranty for Calc."
|
||||
(dig2 (char-after (match-beginning 3))))
|
||||
(delete-region (match-end 1) (match-end 0))
|
||||
(goto-char (match-beginning 1))
|
||||
(delete-backward-char 1)
|
||||
(delete-char -1)
|
||||
(delete-char 5)
|
||||
(insert (format "%c .. %c" (min dig1 dig2) (max dig1 dig2)))))
|
||||
(goto-char (point-min)))))
|
||||
|
@ -176,9 +176,9 @@
|
||||
(defun calc-digit-dots ()
|
||||
(if (eq calc-prev-char ?.)
|
||||
(progn
|
||||
(delete-backward-char 1)
|
||||
(delete-char -1)
|
||||
(if (calc-minibuffer-contains ".*\\.\\'")
|
||||
(delete-backward-char 1))
|
||||
(delete-char -1))
|
||||
(setq calc-prev-char 'dots
|
||||
last-command-event 32)
|
||||
(if calc-prev-prev-char
|
||||
@ -188,7 +188,7 @@
|
||||
(erase-buffer))
|
||||
(exit-minibuffer)))
|
||||
;; just ignore extra decimal point, anticipating ".."
|
||||
(delete-backward-char 1)))
|
||||
(delete-char -1)))
|
||||
|
||||
(defun calc-dots ()
|
||||
(interactive)
|
||||
|
@ -214,7 +214,7 @@
|
||||
(put 'pascal 'math-lang-read-symbol
|
||||
'((?\$
|
||||
(eq (string-match
|
||||
"\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Z]\\)"
|
||||
"\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)"
|
||||
math-exp-str math-exp-pos)
|
||||
math-exp-pos)
|
||||
(setq math-exp-token 'number
|
||||
@ -312,7 +312,7 @@
|
||||
|
||||
(put 'fortran 'math-lang-read-symbol
|
||||
'((?\.
|
||||
(eq (string-match "\\.[a-zA-Z][a-zA-Z][a-zA-Z]?\\."
|
||||
(eq (string-match "\\.[a-zA-Zα-ωΑ-Ω][a-zA-Zα-ωΑ-Ω][a-zA-Zα-ωΑ-Ω]?\\."
|
||||
math-exp-str math-exp-pos) math-exp-pos)
|
||||
(setq math-exp-token 'punc
|
||||
math-expr-data (upcase (math-match-substring math-exp-str 0))
|
||||
@ -603,9 +603,9 @@
|
||||
'((?\\
|
||||
(< math-exp-pos (1- (length math-exp-str)))
|
||||
(progn
|
||||
(or (string-match "\\\\hbox *{\\([a-zA-Z0-9]+\\)}"
|
||||
(or (string-match "\\\\hbox *{\\([a-zA-Zα-ωΑ-Ω0-9]+\\)}"
|
||||
math-exp-str math-exp-pos)
|
||||
(string-match "\\(\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\)"
|
||||
(string-match "\\(\\\\\\([a-zA-Zα-ωΑ-Ω]+\\|[^a-zA-Zα-ωΑ-Ω]\\)\\)"
|
||||
math-exp-str math-exp-pos))
|
||||
(setq math-exp-token 'symbol
|
||||
math-exp-pos (match-end 0)
|
||||
@ -691,7 +691,7 @@
|
||||
(defun math-compose-tex-var (a prec)
|
||||
(if (and calc-language-option
|
||||
(not (= calc-language-option 0))
|
||||
(string-match "\\`[a-zA-Z][a-zA-Z0-9]+\\'"
|
||||
(string-match "\\`[a-zA-Zα-ωΑ-Ω][a-zA-Zα-ωΑ-Ω0-9]+\\'"
|
||||
(symbol-name (nth 1 a))))
|
||||
(if (eq calc-language 'latex)
|
||||
(format "\\text{%s}" (symbol-name (nth 1 a)))
|
||||
@ -702,7 +702,7 @@
|
||||
(let (left right)
|
||||
(if (and calc-language-option
|
||||
(not (= calc-language-option 0))
|
||||
(string-match "\\`[a-zA-Z][a-zA-Z0-9]+\\'" func))
|
||||
(string-match "\\`[a-zA-Zα-ωΑ-Ω][a-zA-Zα-ωΑ-Ω0-9]+\\'" func))
|
||||
(if (< (prefix-numeric-value calc-language-option) 0)
|
||||
(setq func (format "\\%s" func))
|
||||
(setq func (if (eq calc-language 'latex)
|
||||
@ -824,11 +824,11 @@
|
||||
'((?\\
|
||||
(< math-exp-pos (1- (length math-exp-str)))
|
||||
(progn
|
||||
(or (string-match "\\\\hbox *{\\([a-zA-Z0-9]+\\)}"
|
||||
(or (string-match "\\\\hbox *{\\([a-zA-Zα-ωΑ-Ω0-9]+\\)}"
|
||||
math-exp-str math-exp-pos)
|
||||
(string-match "\\\\text *{\\([a-zA-Z0-9]+\\)}"
|
||||
(string-match "\\\\text *{\\([a-zA-Zα-ωΑ-Ω0-9]+\\)}"
|
||||
math-exp-str math-exp-pos)
|
||||
(string-match "\\(\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\)"
|
||||
(string-match "\\(\\\\\\([a-zA-Zα-ωΑ-Ω]+\\|[^a-zA-Zα-ωΑ-Ω]\\)\\)"
|
||||
math-exp-str math-exp-pos))
|
||||
(setq math-exp-token 'symbol
|
||||
math-exp-pos (match-end 0)
|
||||
@ -2301,9 +2301,11 @@ order to Calc's."
|
||||
|
||||
;; Variable name or function call.
|
||||
((or (and (>= other-char ?a) (<= other-char ?z))
|
||||
(and (>= other-char ?A) (<= other-char ?Z)))
|
||||
(and (>= other-char ?A) (<= other-char ?Z))
|
||||
(and (>= other-char ?α) (<= other-char ?ω))
|
||||
(and (>= other-char ?Α) (<= other-char ?Ω)))
|
||||
(setq line (nth v math-read-big-lines))
|
||||
(string-match "\\([a-zA-Z'_]+\\) *" line math-rb-h1)
|
||||
(string-match "\\([a-zA-Zα-ωΑ-Ω'_]+\\) *" line math-rb-h1)
|
||||
(setq h (match-end 1)
|
||||
widest (match-end 0)
|
||||
p (math-match-substring line 1))
|
||||
|
@ -202,7 +202,7 @@
|
||||
'calc-read-var-name-history)))))
|
||||
(setq calc-aborted-prefix "")
|
||||
(and (not (equal var "var-"))
|
||||
(if (string-match "\\`\\([-a-zA-Z0-9]+\\) *:?=" var)
|
||||
(if (string-match "\\`\\([-a-zA-Zα-ωΑ-Ω0-9]+\\) *:?=" var)
|
||||
(if (null calc-given-value-flag)
|
||||
(error "Assignment is not allowed in this command")
|
||||
(let ((svar (intern (substring var 0 (match-end 1)))))
|
||||
|
@ -108,20 +108,28 @@
|
||||
(defun calc-trail-isearch-forward ()
|
||||
(interactive)
|
||||
(calc-with-trail-buffer
|
||||
(save-window-excursion
|
||||
(select-window (get-buffer-window (current-buffer)))
|
||||
(let ((search-exit-char ?\r))
|
||||
(isearch-forward)))
|
||||
(calc-trail-here)))
|
||||
(let ((win (get-buffer-window (current-buffer)))
|
||||
pos)
|
||||
(save-window-excursion
|
||||
(select-window win)
|
||||
(isearch-forward)
|
||||
(setq pos (point)))
|
||||
(goto-char pos)
|
||||
(set-window-point win pos)
|
||||
(calc-trail-here))))
|
||||
|
||||
(defun calc-trail-isearch-backward ()
|
||||
(interactive)
|
||||
(calc-with-trail-buffer
|
||||
(save-window-excursion
|
||||
(select-window (get-buffer-window (current-buffer)))
|
||||
(let ((search-exit-char ?\r))
|
||||
(isearch-backward)))
|
||||
(calc-trail-here)))
|
||||
(let ((win (get-buffer-window (current-buffer)))
|
||||
pos)
|
||||
(save-window-excursion
|
||||
(select-window win)
|
||||
(isearch-backward)
|
||||
(setq pos (point)))
|
||||
(goto-char pos)
|
||||
(set-window-point win pos)
|
||||
(calc-trail-here))))
|
||||
|
||||
(defun calc-trail-yank (arg)
|
||||
(interactive "P")
|
||||
|
@ -36,13 +36,13 @@
|
||||
|
||||
;;; Units table last updated 9-Jan-91 by Ulrich Mueller (ulm@vsnhd1.cern.ch)
|
||||
;;; with some additions by Przemek Klosowski (przemek@rrdstrad.nist.gov)
|
||||
;;; Updated April 2002 by Jochen Küpper
|
||||
;;; Updated April 2002 by Jochen Küpper
|
||||
|
||||
;;; Updated August 2007, using
|
||||
;;; CODATA (http://physics.nist.gov/cuu/Constants/index.html)
|
||||
;;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
|
||||
;;; ESUWM (Encyclopaedia of Scientific Units, Weights and
|
||||
;;; Measures, by François Cardarelli)
|
||||
;;; Measures, by François Cardarelli)
|
||||
;;; All conversions are exact unless otherwise noted.
|
||||
|
||||
(defvar math-standard-units
|
||||
@ -210,6 +210,7 @@
|
||||
"1.602176487 10^-19 C (*)") ;;(approx) CODATA
|
||||
( V "W/A" "Volt" )
|
||||
( ohm "V/A" "Ohm" )
|
||||
( Ω "ohm" "Ohm" )
|
||||
( mho "A/V" "Mho" )
|
||||
( S "A/V" "Siemens" )
|
||||
( F "C/V" "Farad" )
|
||||
@ -259,7 +260,9 @@
|
||||
"6.62606896 10^-34 J s (*)")
|
||||
( hbar "h / (2 pi)" "Planck's constant" ) ;; Exact
|
||||
( mu0 "4 pi 10^(-7) H/m" "Permeability of vacuum") ;; Exact
|
||||
( μ0 "mu0" "Permeability of vacuum") ;; Exact
|
||||
( eps0 "1 / (mu0 c^2)" "Permittivity of vacuum" )
|
||||
( ε0 "eps0" "Permittivity of vacuum" )
|
||||
( G "6.67428*10^(-11) m^3/(kg s^2)" "Gravitational constant" nil
|
||||
"6.67428 10^-11 m^3/(kg s^2) (*)")
|
||||
( Nav "6.02214179*10^(23) / mol" "Avogadro's constant" nil
|
||||
@ -272,12 +275,16 @@
|
||||
"1.674927211 10^-27 kg (*)")
|
||||
( mmu "1.88353130*10^(-28) kg" "Muon rest mass" nil
|
||||
"1.88353130 10^-28 kg (*)")
|
||||
( mμ "mmu" "Muon rest mass" nil
|
||||
"1.88353130 10^-28 kg (*)")
|
||||
( Ryd "10973731.568527 /m" "Rydberg's constant" nil
|
||||
"10973731.568527 /m (*)")
|
||||
( k "1.3806504*10^(-23) J/K" "Boltzmann's constant" nil
|
||||
"1.3806504 10^-23 J/K (*)")
|
||||
( alpha "7.2973525376*10^(-3)" "Fine structure constant" nil
|
||||
"7.2973525376 10^-3 (*)")
|
||||
( α "alpha" "Fine structure constant" nil
|
||||
"7.2973525376 10^-3 (*)")
|
||||
( muB "927.400915*10^(-26) J/T" "Bohr magneton" nil
|
||||
"927.400915 10^-26 J/T (*)")
|
||||
( muN "5.05078324*10^(-27) J/T" "Nuclear magneton" nil
|
||||
@ -316,6 +323,7 @@ that the combined units table will be rebuilt.")
|
||||
( ?c (^ 10 -2) "Centi" )
|
||||
( ?m (^ 10 -3) "Milli" )
|
||||
( ?u (^ 10 -6) "Micro" )
|
||||
( ?μ (^ 10 -6) "Micro" )
|
||||
( ?n (^ 10 -9) "Nano" )
|
||||
( ?p (^ 10 -12) "Pico" )
|
||||
( ?f (^ 10 -15) "Femto" )
|
||||
@ -581,8 +589,8 @@ If EXPR is nil, return nil."
|
||||
(let ((name (or (nth 2 u) (symbol-name (car u)))))
|
||||
(if (eq (aref name 0) ?\*)
|
||||
(setq name (substring name 1)))
|
||||
(if (string-match "[^a-zA-Z0-9']" name)
|
||||
(if (string-match "^[a-zA-Z0-9' ()]*$" name)
|
||||
(if (string-match "[^a-zA-Zα-ωΑ-Ω0-9']" name)
|
||||
(if (string-match "^[a-zA-Zα-ωΑ-Ω0-9' ()]*$" name)
|
||||
(while (setq pos (string-match "[ ()]" name))
|
||||
(setq name (concat (substring name 0 pos)
|
||||
(if (eq (aref name pos) 32) "-" "")
|
||||
@ -592,7 +600,7 @@ If EXPR is nil, return nil."
|
||||
(setq name (concat (nth 2 (assq (aref (symbol-name
|
||||
(nth 1 expr)) 0)
|
||||
math-unit-prefixes))
|
||||
(if (and (string-match "[^a-zA-Z0-9']" name)
|
||||
(if (and (string-match "[^a-zA-Zα-ωΑ-Ω0-9']" name)
|
||||
(not (memq (car u) '(mHg gf))))
|
||||
(concat "-" name)
|
||||
(downcase name)))))
|
||||
@ -1540,9 +1548,5 @@ If EXPR is nil, return nil."
|
||||
|
||||
(provide 'calc-units)
|
||||
|
||||
;; Local Variables:
|
||||
;; coding: iso-latin-1
|
||||
;; End:
|
||||
|
||||
;; arch-tag: e993314f-3adc-4191-be61-4ef8874881c4
|
||||
;;; calc-units.el ends here
|
||||
|
@ -451,16 +451,18 @@
|
||||
(calc-enter-result 1 "grad" (list 'calcFunc-grade (calc-top-n 1))))))
|
||||
|
||||
(defun calc-histogram (n)
|
||||
(interactive "NNumber of bins: ")
|
||||
(interactive "P")
|
||||
(unless (natnump n)
|
||||
(setq n (math-read-expr (read-string "Centers of bins: "))))
|
||||
(calc-slow-wrapper
|
||||
(if calc-hyperbolic-flag
|
||||
(calc-enter-result 2 "hist" (list 'calcFunc-histogram
|
||||
(calc-top-n 2)
|
||||
(calc-top-n 1)
|
||||
(prefix-numeric-value n)))
|
||||
n))
|
||||
(calc-enter-result 1 "hist" (list 'calcFunc-histogram
|
||||
(calc-top-n 1)
|
||||
(prefix-numeric-value n))))))
|
||||
n)))))
|
||||
|
||||
(defun calc-transpose (arg)
|
||||
(interactive "P")
|
||||
@ -1135,22 +1137,53 @@
|
||||
(if (Math-vectorp wts)
|
||||
(or (= (length vec) (length wts))
|
||||
(math-dimension-error)))
|
||||
(or (natnump n)
|
||||
(math-reject-arg n 'fixnatnump))
|
||||
(let ((res (make-vector n 0))
|
||||
(vp vec)
|
||||
(wvec (Math-vectorp wts))
|
||||
(wp wts)
|
||||
bin)
|
||||
(while (setq vp (cdr vp))
|
||||
(setq bin (car vp))
|
||||
(or (natnump bin)
|
||||
(setq bin (math-floor bin)))
|
||||
(and (natnump bin)
|
||||
(< bin n)
|
||||
(aset res bin (math-add (aref res bin)
|
||||
(if wvec (car (setq wp (cdr wp))) wts)))))
|
||||
(cons 'vec (append res nil))))
|
||||
(cond ((natnump n)
|
||||
(let ((res (make-vector n 0))
|
||||
(vp vec)
|
||||
(wvec (Math-vectorp wts))
|
||||
(wp wts)
|
||||
bin)
|
||||
(while (setq vp (cdr vp))
|
||||
(setq bin (car vp))
|
||||
(or (natnump bin)
|
||||
(setq bin (math-floor bin)))
|
||||
(and (natnump bin)
|
||||
(< bin n)
|
||||
(aset res bin
|
||||
(math-add (aref res bin)
|
||||
(if wvec (car (setq wp (cdr wp))) wts)))))
|
||||
(cons 'vec (append res nil))))
|
||||
((Math-vectorp n) ;; n is a vector of midpoints
|
||||
(let* ((bds (math-vector-avg n))
|
||||
(res (make-vector (1- (length n)) 0))
|
||||
(vp (cdr vec))
|
||||
(wvec (Math-vectorp wts))
|
||||
(wp wts)
|
||||
num)
|
||||
(while vp
|
||||
(setq num (car vp))
|
||||
(let ((tbds (cdr bds))
|
||||
(i 0))
|
||||
(while (and tbds (Math-lessp (car tbds) num))
|
||||
(setq i (1+ i))
|
||||
(setq tbds (cdr tbds)))
|
||||
(aset res i
|
||||
(math-add (aref res i)
|
||||
(if wvec (car (setq wp (cdr wp))) wts))))
|
||||
(setq vp (cdr vp)))
|
||||
(cons 'vec (append res nil))))
|
||||
(t
|
||||
(math-reject-arg n "*Expecting an integer or vector"))))
|
||||
|
||||
;;; Replace a vector [a b c ...] with a vector of averages
|
||||
;;; [(a+b)/2 (b+c)/2 ...]
|
||||
(defun math-vector-avg (vec)
|
||||
(let ((vp (sort (copy-sequence (cdr vec)) 'math-beforep))
|
||||
(res nil))
|
||||
(while (and vp (cdr vp))
|
||||
(setq res (cons (math-div (math-add (car vp) (cadr vp)) 2) res)
|
||||
vp (cdr vp)))
|
||||
(cons 'vec (reverse res))))
|
||||
|
||||
|
||||
;;; Set operations.
|
||||
|
@ -999,9 +999,12 @@ Used by `calc-user-invocation'.")
|
||||
(defvar math-working-step-2 nil)
|
||||
(defvar var-i '(special-const (math-imaginary 1)))
|
||||
(defvar var-pi '(special-const (math-pi)))
|
||||
(defvar var-π '(special-const (math-pi)))
|
||||
(defvar var-e '(special-const (math-e)))
|
||||
(defvar var-phi '(special-const (math-phi)))
|
||||
(defvar var-φ '(special-const (math-phi)))
|
||||
(defvar var-gamma '(special-const (math-gamma-const)))
|
||||
(defvar var-γ '(special-const (math-gamma-const)))
|
||||
(defvar var-Modes '(special-const (math-get-modes-vec)))
|
||||
|
||||
(mapc (lambda (v) (or (boundp v) (set v nil)))
|
||||
@ -2383,7 +2386,7 @@ See calc-keypad for details."
|
||||
(progn
|
||||
(require 'calc-ext)
|
||||
(calc-digit-dots))
|
||||
(delete-backward-char 1)
|
||||
(delete-char -1)
|
||||
(beep)
|
||||
(calc-temp-minibuffer-message " [Bad format]"))))))
|
||||
(setq calc-prev-prev-char calc-prev-char
|
||||
|
@ -663,6 +663,8 @@
|
||||
(and prevc nextc
|
||||
(or (and (>= nextc ?a) (<= nextc ?z))
|
||||
(and (>= nextc ?A) (<= nextc ?Z))
|
||||
(and (>= nextc ?α) (<= nextc ?ω))
|
||||
(and (>= nextc ?Α) (<= nextc ?Ω))
|
||||
(and (>= nextc ?0) (<= nextc ?9))
|
||||
(memq nextc '(?. ?_ ?#
|
||||
?\( ?\[ ?\{))
|
||||
@ -732,7 +734,7 @@
|
||||
(not (math-tex-expr-is-flat (nth 1 a))))))
|
||||
(list 'horiz
|
||||
(if lr "\\left" "")
|
||||
(if (string-match "\\`u\\([^a-zA-Z]\\)\\'" (car op))
|
||||
(if (string-match "\\`u\\([^a-zA-Zα-ωΑ-Ω]\\)\\'" (car op))
|
||||
(substring (car op) 1)
|
||||
(car op))
|
||||
(if (or lr (> (length (car op)) 2)) " " "")
|
||||
@ -758,7 +760,7 @@
|
||||
(t
|
||||
(let ((rhs (math-compose-expr (nth 1 a) (nth 3 op))))
|
||||
(list 'horiz
|
||||
(let ((ops (if (string-match "\\`u\\([^a-zA-Z]\\)\\'"
|
||||
(let ((ops (if (string-match "\\`u\\([^a-zA-Zα-ωΑ-Ω]\\)\\'"
|
||||
(car op))
|
||||
(substring (car op) 1)
|
||||
(car op))))
|
||||
@ -806,7 +808,7 @@
|
||||
(setq func (car func2)))
|
||||
(setq func (math-remove-dashes
|
||||
(if (string-match
|
||||
"\\`calcFunc-\\([a-zA-Z0-9']+\\)\\'"
|
||||
"\\`calcFunc-\\([a-zA-Zα-ωΑ-Ω0-9']+\\)\\'"
|
||||
(symbol-name func))
|
||||
(math-match-substring (symbol-name func) 1)
|
||||
(symbol-name func))))
|
||||
|
@ -467,7 +467,7 @@ This is for project include paths and spp source files."
|
||||
"Set variables local to PROJECT in BUFFER.
|
||||
Also set up the lexical preprocessor map."
|
||||
(call-next-method)
|
||||
(when (and (featurep 'semantic/c) (featurep 'semantic/lex-spp))
|
||||
(when (and (featurep 'semantic/bovine/c) (featurep 'semantic/lex-spp))
|
||||
(setq semantic-lex-spp-project-macro-symbol-obarray
|
||||
(semantic-lex-make-spp-table (oref project spp-table)))
|
||||
))
|
||||
|
@ -1121,37 +1121,31 @@ The VALUE is a spp lexical table."
|
||||
(prin1 (car sym))
|
||||
(let* ((first (car (cdr sym)))
|
||||
(rest (cdr sym)))
|
||||
(when (not (listp first))
|
||||
(error "Error in macro \"%s\"" (car sym)))
|
||||
(when (eq (car first) 'spp-arg-list)
|
||||
(princ " ")
|
||||
(prin1 first)
|
||||
(setq rest (cdr rest))
|
||||
)
|
||||
(if (not (listp first))
|
||||
(insert "nil ;; bogus macro found.\n")
|
||||
(when (eq (car first) 'spp-arg-list)
|
||||
(princ " ")
|
||||
(prin1 first)
|
||||
(setq rest (cdr rest)))
|
||||
|
||||
(when rest
|
||||
(princ " . ")
|
||||
(let ((len (length (cdr rest))))
|
||||
(cond ((< len 2)
|
||||
(condition-case nil
|
||||
(prin1 rest)
|
||||
(error
|
||||
(princ "nil ;; Error writing macro\n"))))
|
||||
((< len semantic-lex-spp-macro-max-length-to-save)
|
||||
(princ "\n ")
|
||||
(condition-case nil
|
||||
(prin1 rest)
|
||||
(error
|
||||
(princ "nil ;; Error writing macro\n ")))
|
||||
)
|
||||
(t ;; Too Long!
|
||||
(princ "nil ;; Too Long!\n ")
|
||||
))))
|
||||
)
|
||||
(princ ")\n ")
|
||||
)
|
||||
(princ ")\n"))
|
||||
)
|
||||
(when rest
|
||||
(princ " . ")
|
||||
(let ((len (length (cdr rest))))
|
||||
(cond ((< len 2)
|
||||
(condition-case nil
|
||||
(prin1 rest)
|
||||
(error
|
||||
(princ "nil ;; Error writing macro\n"))))
|
||||
((< len semantic-lex-spp-macro-max-length-to-save)
|
||||
(princ "\n ")
|
||||
(condition-case nil
|
||||
(prin1 rest)
|
||||
(error
|
||||
(princ "nil ;; Error writing macro\n "))))
|
||||
(t ;; Too Long!
|
||||
(princ "nil ;; Too Long!\n ")))))))
|
||||
(princ ")\n "))
|
||||
(princ ")\n")))
|
||||
|
||||
;;; MACRO TABLE DEBUG
|
||||
;;
|
||||
|
@ -309,7 +309,6 @@ the function `comint-truncate-buffer' is on `comint-output-filter-functions'."
|
||||
:type 'integer
|
||||
:group 'comint)
|
||||
|
||||
;; FIXME: this should be defcustom
|
||||
(defcustom comint-input-ring-size 500
|
||||
"Size of the input history ring in `comint-mode'."
|
||||
:type 'integer
|
||||
@ -341,7 +340,7 @@ This variable is buffer-local."
|
||||
;; Something called "perforce" uses "Enter password:".
|
||||
(defcustom comint-password-prompt-regexp
|
||||
(concat
|
||||
"^\\("
|
||||
"\\("
|
||||
(regexp-opt
|
||||
'("Enter" "Enter same" "Old" "old" "New" "new" "'s" "login"
|
||||
"Kerberos" "CVS" "UNIX" " SMB" "LDAP" "[sudo]" "Repeat" "Bad"))
|
||||
|
@ -28,6 +28,8 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(defconst reference-point-alist
|
||||
'((tl . 0) (tc . 1) (tr . 2)
|
||||
(Bl . 3) (Bc . 4) (Br . 5)
|
||||
@ -77,7 +79,7 @@ follows (the point `*' corresponds to both reference points):
|
||||
+----+-----+ <--- new descent
|
||||
|
||||
A composition rule may have the form \(GLOBAL-REF-POINT
|
||||
NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specifies how much
|
||||
NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specify how much
|
||||
to shift NEW-REF-POINT from GLOBAL-REF-POINT. In this case, XOFF
|
||||
and YOFF are integers in the range -100..100 representing the
|
||||
shifting percentage against the font size.")
|
||||
@ -532,12 +534,12 @@ after a sequence of character events."
|
||||
|
||||
(defun compose-gstring-for-graphic (gstring)
|
||||
"Compose glyph-string GSTRING for graphic display.
|
||||
Non-spacing characters are composed with the preceding base
|
||||
Combining characters are composed with the preceding base
|
||||
character. If the preceding character is not a base character,
|
||||
each non-spacing character is composed as a spacing character by
|
||||
each combining character is composed as a spacing character by
|
||||
a padding space before and/or after the character.
|
||||
|
||||
All non-spacing characters has this function in
|
||||
All non-spacing characters have this function in
|
||||
`composition-function-table' unless overwritten."
|
||||
(let* ((header (lgstring-header gstring))
|
||||
(nchars (lgstring-char-len gstring))
|
||||
@ -660,16 +662,16 @@ All non-spacing characters has this function in
|
||||
[nil 0 compose-gstring-for-graphic])))
|
||||
(map-char-table
|
||||
#'(lambda (key val)
|
||||
(if (= val 0)
|
||||
(if (memq val '(Mn Mc Me))
|
||||
(set-char-table-range composition-function-table key elt)))
|
||||
char-width-table))
|
||||
unicode-category-table))
|
||||
|
||||
(defun compose-gstring-for-terminal (gstring)
|
||||
"Compose glyph string GSTRING for terminal display.
|
||||
Non-spacing characters are composed with the preceding base
|
||||
character. If the preceding character is not a base character,
|
||||
each non-spacing character is composed as a spacing character by
|
||||
a prepending a space before it."
|
||||
prepending a space before it."
|
||||
(let* ((header (lgstring-header gstring))
|
||||
(nchars (lgstring-char-len gstring))
|
||||
(nglyphs (lgstring-glyph-len gstring))
|
||||
|
@ -426,7 +426,7 @@ as well as widgets, buttons, overlays, and text properties."
|
||||
;; When the composition is trivial (i.e. composed only with the
|
||||
;; current character itself without any alternate characters),
|
||||
;; we don't show the composition information. Otherwise, store
|
||||
;; two descriptive strings in the first two elments of
|
||||
;; two descriptive strings in the first two elements of
|
||||
;; COMPOSITION.
|
||||
(or (catch 'tag
|
||||
(let ((from (car composition))
|
||||
|
@ -303,10 +303,12 @@ to the value obtained by evaluating FORM."
|
||||
:version "22.1")
|
||||
|
||||
(defcustom desktop-clear-preserve-buffers
|
||||
'("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*")
|
||||
'("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*"
|
||||
"\\*Warnings\\*")
|
||||
"List of buffers that `desktop-clear' should not delete.
|
||||
Each element is a regular expression. Buffers with a name matched by any of
|
||||
these won't be deleted."
|
||||
:version "23.3" ; added Warnings - bug#6336
|
||||
:type '(repeat string)
|
||||
:group 'desktop)
|
||||
|
||||
|
@ -506,16 +506,21 @@ See variables `dired-texinfo-unclean-extensions',
|
||||
;;; JUMP.
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-jump (&optional other-window)
|
||||
(defun dired-jump (&optional other-window file-name)
|
||||
"Jump to dired buffer corresponding to current buffer.
|
||||
If in a file, dired the current directory and move to file's line.
|
||||
If in Dired already, pop up a level and goto old directory's line.
|
||||
In case the proper dired file line cannot be found, refresh the dired
|
||||
buffer and try again."
|
||||
(interactive "P")
|
||||
(let* ((file buffer-file-name)
|
||||
buffer and try again.
|
||||
When OTHER-WINDOW is non-nil, jump to dired buffer in other window.
|
||||
Interactively with prefix argument, read FILE-NAME and
|
||||
move to its line in dired."
|
||||
(interactive
|
||||
(list nil (and current-prefix-arg
|
||||
(read-file-name "Jump to dired file: "))))
|
||||
(let* ((file (or file-name buffer-file-name))
|
||||
(dir (if file (file-name-directory file) default-directory)))
|
||||
(if (eq major-mode 'dired-mode)
|
||||
(if (and (eq major-mode 'dired-mode) (null file-name))
|
||||
(progn
|
||||
(setq dir (dired-current-directory))
|
||||
(dired-up-directory other-window)
|
||||
@ -539,10 +544,12 @@ buffer and try again."
|
||||
(dired-omit-mode)
|
||||
(dired-goto-file file))))))))
|
||||
|
||||
(defun dired-jump-other-window ()
|
||||
(defun dired-jump-other-window (&optional file-name)
|
||||
"Like \\[dired-jump] (`dired-jump') but in other window."
|
||||
(interactive)
|
||||
(dired-jump t))
|
||||
(interactive
|
||||
(list (and current-prefix-arg
|
||||
(read-file-name "Jump to dired file: "))))
|
||||
(dired-jump t file-name))
|
||||
|
||||
;;; OMITTING.
|
||||
|
||||
|
@ -1409,7 +1409,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
|
||||
(define-key map "\C-t." 'image-dired-display-thumb)
|
||||
(define-key map "\C-tc" 'image-dired-dired-comment-files)
|
||||
(define-key map "\C-tf" 'image-dired-mark-tagged-files)
|
||||
(define-key map "\C-t\C-t" 'image-dired-dired-insert-marked-thumbs)
|
||||
(define-key map "\C-t\C-t" 'image-dired-dired-toggle-marked-thumbs)
|
||||
(define-key map "\C-te" 'image-dired-dired-edit-comment-and-tags)
|
||||
;; encryption and decryption (epa-dired)
|
||||
(define-key map ":d" 'epa-dired-do-decrypt)
|
||||
@ -2579,7 +2579,7 @@ Anything else means ask for each directory."
|
||||
;; Delete file, possibly delete a directory and all its files.
|
||||
;; This function is usefull outside of dired. One could change it's name
|
||||
;; to e.g. recursive-delete-file and put it somewhere else.
|
||||
(defun dired-delete-file (file &optional recursive) "\
|
||||
(defun dired-delete-file (file &optional recursive trash) "\
|
||||
Delete FILE or directory (possibly recursively if optional RECURSIVE is true.)
|
||||
RECURSIVE determines what to do with a non-empty directory. If RECURSIVE is:
|
||||
nil, do not delete.
|
||||
@ -2590,15 +2590,19 @@ Anything else, ask for each sub-directory."
|
||||
;; (and (file-directory-p fn) (not (file-symlink-p fn)))
|
||||
;; but more efficient
|
||||
(if (not (eq t (car (file-attributes file))))
|
||||
(delete-file file)
|
||||
(delete-file file trash)
|
||||
(if (and recursive
|
||||
(directory-files file t dired-re-no-dot) ; Not empty.
|
||||
(or (eq recursive 'always)
|
||||
(yes-or-no-p (format "Recursive delete of %s? "
|
||||
(yes-or-no-p (format "Recursively %s %s? "
|
||||
(if (and trash
|
||||
delete-by-moving-to-trash)
|
||||
"trash"
|
||||
"delete")
|
||||
(dired-make-relative file)))))
|
||||
(if (eq recursive 'top) (setq recursive 'always)) ; Don't ask again.
|
||||
(setq recursive nil))
|
||||
(delete-directory file recursive)))
|
||||
(delete-directory file recursive trash)))
|
||||
|
||||
(defun dired-do-flagged-delete (&optional nomessage)
|
||||
"In Dired, delete the files flagged for deletion.
|
||||
@ -2616,7 +2620,7 @@ non-empty directories is allowed."
|
||||
;; this can't move point since ARG is nil
|
||||
(dired-map-over-marks (cons (dired-get-filename) (point))
|
||||
nil)
|
||||
nil)
|
||||
nil t)
|
||||
(or nomessage
|
||||
(message "(No deletions requested)")))))
|
||||
|
||||
@ -2631,11 +2635,11 @@ non-empty directories is allowed."
|
||||
;; this may move point if ARG is an integer
|
||||
(dired-map-over-marks (cons (dired-get-filename) (point))
|
||||
arg)
|
||||
arg))
|
||||
arg t))
|
||||
|
||||
(defvar dired-deletion-confirmer 'yes-or-no-p) ; or y-or-n-p?
|
||||
|
||||
(defun dired-internal-do-deletions (l arg)
|
||||
(defun dired-internal-do-deletions (l arg &optional trash)
|
||||
;; L is an alist of files to delete, with their buffer positions.
|
||||
;; ARG is the prefix arg.
|
||||
;; Filenames are absolute.
|
||||
@ -2644,14 +2648,21 @@ non-empty directories is allowed."
|
||||
;; lines still to be changed, so the (point) values in L stay valid.
|
||||
;; Also, for subdirs in natural order, a subdir's files are deleted
|
||||
;; before the subdir itself - the other way around would not work.
|
||||
(let ((files (mapcar (function car) l))
|
||||
(count (length l))
|
||||
(succ 0))
|
||||
(let* ((files (mapcar (function car) l))
|
||||
(count (length l))
|
||||
(succ 0)
|
||||
(trashing (and trash delete-by-moving-to-trash))
|
||||
(progress-reporter
|
||||
(make-progress-reporter
|
||||
(if trashing "Trashing..." "Deleting...")
|
||||
succ count)))
|
||||
;; canonicalize file list for pop up
|
||||
(setq files (nreverse (mapcar (function dired-make-relative) files)))
|
||||
(if (dired-mark-pop-up
|
||||
" *Deletions*" 'delete files dired-deletion-confirmer
|
||||
(format "Delete %s " (dired-mark-prompt arg files)))
|
||||
(format "%s %s "
|
||||
(if trashing "Trash" "Delete")
|
||||
(dired-mark-prompt arg files)))
|
||||
(save-excursion
|
||||
(let (failures);; files better be in reverse order for this loop!
|
||||
(while l
|
||||
@ -2659,10 +2670,10 @@ non-empty directories is allowed."
|
||||
(let ((inhibit-read-only t))
|
||||
(condition-case err
|
||||
(let ((fn (car (car l))))
|
||||
(dired-delete-file fn dired-recursive-deletes)
|
||||
(dired-delete-file fn dired-recursive-deletes trash)
|
||||
;; if we get here, removing worked
|
||||
(setq succ (1+ succ))
|
||||
(message "%s of %s deletions" succ count)
|
||||
(progress-reporter-update progress-reporter succ)
|
||||
(dired-fun-in-all-buffers
|
||||
(file-name-directory fn) (file-name-nondirectory fn)
|
||||
(function dired-delete-entry) fn))
|
||||
@ -2671,7 +2682,7 @@ non-empty directories is allowed."
|
||||
(setq failures (cons (car (car l)) failures)))))
|
||||
(setq l (cdr l)))
|
||||
(if (not failures)
|
||||
(message "%d deletion%s done" count (dired-plural-s count))
|
||||
(progress-reporter-done progress-reporter)
|
||||
(dired-log-summary
|
||||
(format "%d of %d deletion%s failed"
|
||||
(length failures) count
|
||||
@ -3974,7 +3985,7 @@ true then the type of the file linked to by FILE is printed instead.
|
||||
;;;***
|
||||
|
||||
;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
|
||||
;;;;;; "2f8d3d5a31b969b181e23c40d6bb16a0")
|
||||
;;;;;; "6c492aba3ca0d36a4cd7b02fb9c1cc10")
|
||||
;;; Generated autoloads from dired-x.el
|
||||
|
||||
(autoload 'dired-jump "dired-x" "\
|
||||
@ -3983,8 +3994,11 @@ If in a file, dired the current directory and move to file's line.
|
||||
If in Dired already, pop up a level and goto old directory's line.
|
||||
In case the proper dired file line cannot be found, refresh the dired
|
||||
buffer and try again.
|
||||
When OTHER-WINDOW is non-nil, jump to dired buffer in other window.
|
||||
Interactively with prefix argument, read FILE-NAME and
|
||||
move to its line in dired.
|
||||
|
||||
\(fn &optional OTHER-WINDOW)" t nil)
|
||||
\(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
|
||||
|
||||
(autoload 'dired-do-relsymlink "dired-x" "\
|
||||
Relative symlink all marked (or next ARG) files into a directory.
|
||||
|
@ -30,16 +30,16 @@
|
||||
(declare-function int86 "dosfns.c")
|
||||
(declare-function msdos-long-file-names "msdos.c")
|
||||
|
||||
;; This overrides a trivial definition in files.el.
|
||||
(defun convert-standard-filename (filename)
|
||||
"Convert a standard file's name to something suitable for the current OS.
|
||||
;; See convert-standard-filename in files.el.
|
||||
(defun dos-convert-standard-filename (filename)
|
||||
"Convert a standard file's name to something suitable for MS-DOS.
|
||||
This means to guarantee valid names and perhaps to canonicalize
|
||||
certain patterns.
|
||||
|
||||
This function is called by `convert-standard-filename'.
|
||||
|
||||
On Windows and DOS, replace invalid characters. On DOS, make
|
||||
sure to obey the 8.3 limitations. On Windows, turn Cygwin names
|
||||
into native names, and also turn slashes into backslashes if the
|
||||
shell requires it (see `w32-shell-dos-semantics')."
|
||||
sure to obey the 8.3 limitations."
|
||||
(if (or (not (stringp filename))
|
||||
;; This catches the case where FILENAME is "x:" or "x:/" or
|
||||
;; "/", thus preventing infinite recursion.
|
||||
@ -48,7 +48,7 @@ shell requires it (see `w32-shell-dos-semantics')."
|
||||
(let ((flen (length filename)))
|
||||
;; If FILENAME has a trailing slash, remove it and recurse.
|
||||
(if (memq (aref filename (1- flen)) '(?/ ?\\))
|
||||
(concat (convert-standard-filename
|
||||
(concat (dos-convert-standard-filename
|
||||
(substring filename 0 (1- flen)))
|
||||
"/")
|
||||
(let* (;; ange-ftp gets in the way for names like "/foo:bar".
|
||||
@ -122,10 +122,10 @@ shell requires it (see `w32-shell-dos-semantics')."
|
||||
(aset string (1- (length string)) lastchar))))
|
||||
(concat (if (and (stringp dir)
|
||||
(memq (aref dir dlen-m-1) '(?/ ?\\)))
|
||||
(concat (convert-standard-filename
|
||||
(concat (dos-convert-standard-filename
|
||||
(substring dir 0 dlen-m-1))
|
||||
"/")
|
||||
(convert-standard-filename dir))
|
||||
(dos-convert-standard-filename dir))
|
||||
string))))))
|
||||
|
||||
(defun dos-8+3-filename (filename)
|
||||
@ -188,12 +188,12 @@ shell requires it (see `w32-shell-dos-semantics')."
|
||||
|
||||
;; This is for the sake of standard file names elsewhere in Emacs that
|
||||
;; are defined as constant strings or via defconst, and whose
|
||||
;; conversion via `convert-standard-filename' does not give good
|
||||
;; conversion via `dos-convert-standard-filename' does not give good
|
||||
;; enough results.
|
||||
(defun dosified-file-name (file-name)
|
||||
"Return a variant of FILE-NAME that is valid on MS-DOS filesystems.
|
||||
|
||||
This function is for those rare cases where `convert-standard-filename'
|
||||
This function is for those rare cases where `dos-convert-standard-filename'
|
||||
does not do a job that is good enough, e.g. if you need to preserve the
|
||||
file-name extension. It recognizes only certain specific file names
|
||||
that are used in Emacs Lisp sources; any other file name will be
|
||||
@ -209,13 +209,13 @@ returned unaltered."
|
||||
(defvar msdos-shells)
|
||||
|
||||
;; Override settings chosen at startup.
|
||||
(defun set-default-process-coding-system ()
|
||||
(defun dos-set-default-process-coding-system ()
|
||||
(setq default-process-coding-system
|
||||
(if (default-value 'enable-multibyte-characters)
|
||||
'(undecided-dos . undecided-dos)
|
||||
'(raw-text-dos . raw-text-dos))))
|
||||
|
||||
(add-hook 'before-init-hook 'set-default-process-coding-system)
|
||||
(add-hook 'before-init-hook 'dos-set-default-process-coding-system)
|
||||
|
||||
;; File names defined in preloaded packages can be incorrect or
|
||||
;; invalid if long file names were available during dumping, but not
|
||||
@ -232,17 +232,22 @@ returned unaltered."
|
||||
|
||||
(add-hook 'before-init-hook 'dos-reevaluate-defcustoms)
|
||||
|
||||
(defvar register-name-alist
|
||||
(defvar dos-register-name-alist
|
||||
'((ax . 0) (bx . 1) (cx . 2) (dx . 3) (si . 4) (di . 5)
|
||||
(cflag . 6) (flags . 7)
|
||||
(al . (0 . 0)) (bl . (1 . 0)) (cl . (2 . 0)) (dl . (3 . 0))
|
||||
(ah . (0 . 1)) (bh . (1 . 1)) (ch . (2 . 1)) (dh . (3 . 1))))
|
||||
|
||||
(defun make-register ()
|
||||
(define-obsolete-variable-alias
|
||||
'register-name-alist 'dos-register-name-alist "24.1")
|
||||
|
||||
(defun dos-make-register ()
|
||||
(make-vector 8 0))
|
||||
|
||||
(defun register-value (regs name)
|
||||
(let ((where (cdr (assoc name register-name-alist))))
|
||||
(define-obsolete-function-alias 'make-register 'dos-make-register "24.1")
|
||||
|
||||
(defun dos-register-value (regs name)
|
||||
(let ((where (cdr (assoc name dos-register-name-alist))))
|
||||
(cond ((consp where)
|
||||
(let ((tem (aref regs (car where))))
|
||||
(if (zerop (cdr where))
|
||||
@ -252,10 +257,12 @@ returned unaltered."
|
||||
(aref regs where))
|
||||
(t nil))))
|
||||
|
||||
(defun set-register-value (regs name value)
|
||||
(define-obsolete-function-alias 'register-value 'dos-register-value "24.1")
|
||||
|
||||
(defun dos-set-register-value (regs name value)
|
||||
(and (numberp value)
|
||||
(>= value 0)
|
||||
(let ((where (cdr (assoc name register-name-alist))))
|
||||
(let ((where (cdr (assoc name dos-register-name-alist))))
|
||||
(cond ((consp where)
|
||||
(let ((tem (aref regs (car where)))
|
||||
(value (logand value 255)))
|
||||
@ -268,18 +275,29 @@ returned unaltered."
|
||||
(aset regs where (logand value 65535))))))
|
||||
regs)
|
||||
|
||||
(defsubst intdos (regs)
|
||||
(define-obsolete-function-alias
|
||||
'set-register-value 'dos-set-register-value "24.1")
|
||||
|
||||
(defsubst dos-intdos (regs)
|
||||
"Issue the DOS Int 21h with registers REGS.
|
||||
|
||||
REGS should be a vector produced by `dos-make-register'
|
||||
and `dos-set-register-value', which see."
|
||||
(int86 33 regs))
|
||||
|
||||
(define-obsolete-function-alias 'intdos 'dos-intdos "24.1")
|
||||
|
||||
;; Backward compatibility for obsolescent functions which
|
||||
;; set screen size.
|
||||
|
||||
(defun mode25 ()
|
||||
(defun dos-mode25 ()
|
||||
"Changes the number of screen rows to 25."
|
||||
(interactive)
|
||||
(set-frame-size (selected-frame) 80 25))
|
||||
|
||||
(defun mode4350 ()
|
||||
(define-obsolete-function-alias 'mode25 'dos-mode25 "24.1")
|
||||
|
||||
(defun dos-mode4350 ()
|
||||
"Changes the number of rows to 43 or 50.
|
||||
Emacs always tries to set the screen height to 50 rows first.
|
||||
If this fails, it will try to set it to 43 rows, on the assumption
|
||||
@ -290,6 +308,8 @@ that your video hardware might not support 50-line mode."
|
||||
nil ; the original built-in function returned nil
|
||||
(set-frame-size (selected-frame) 80 43)))
|
||||
|
||||
(define-obsolete-function-alias 'mode4350 'dos-mode4350 "24.1")
|
||||
|
||||
(provide 'dos-fns)
|
||||
|
||||
;; arch-tag: 00b03579-8ebb-4a02-8762-5c5a929774ad
|
||||
|
@ -2684,6 +2684,8 @@ For that it has to be fbound with a non-autoload definition."
|
||||
;; because `byte-compile' uses `fset':
|
||||
(ad-with-auto-activation-disabled
|
||||
(require 'bytecomp)
|
||||
(require 'warnings) ;To define warning-suppress-types
|
||||
;before we let-bind it.
|
||||
(let ((symbol (make-symbol "advice-compilation"))
|
||||
(byte-compile-warnings byte-compile-warnings)
|
||||
;; Don't pop up windows showing byte-compiler warnings.
|
||||
|
@ -266,7 +266,7 @@ listed.")
|
||||
"3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
|
||||
"CODINGS" "CHARSETS"
|
||||
"calc/INSTALL" "calc/Makefile"
|
||||
"vms-pp.trans" "_emacs" "batcomp.com"
|
||||
"vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
|
||||
;; MH-E stuff not in Emacs:
|
||||
"import-emacs" "release-utils"
|
||||
;; Erc stuff not in Emacs:
|
||||
@ -505,6 +505,7 @@ Changes to files in this list are not listed.")
|
||||
"getdate.y"
|
||||
"ymakefile"
|
||||
"permute-index" "index.perm"
|
||||
"ibmrs6000.inp"
|
||||
"emacs.ico"
|
||||
"emacs21.ico"
|
||||
"LPF" "LEDIT" "OTHER.EMACSES"
|
||||
|
@ -353,7 +353,7 @@ else the global value will be modified."
|
||||
(defvar byte-compile-interactive-only-functions
|
||||
'(beginning-of-buffer end-of-buffer replace-string replace-regexp
|
||||
insert-file insert-buffer insert-file-literally previous-line next-line
|
||||
goto-line comint-run)
|
||||
goto-line comint-run delete-backward-char)
|
||||
"List of commands that are not meant to be called from Lisp.")
|
||||
|
||||
(defvar byte-compile-not-obsolete-vars nil
|
||||
|
@ -685,7 +685,7 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
|
||||
(setq last (point))
|
||||
(goto-char (1+ pt))
|
||||
(while (search-forward "(quote " last t)
|
||||
(delete-backward-char 7)
|
||||
(delete-char -7)
|
||||
(insert "'")
|
||||
(forward-sexp)
|
||||
(delete-char 1))
|
||||
|
@ -10,7 +10,7 @@
|
||||
;;;;;; ceiling* floor* isqrt lcm gcd cl-progv-before cl-set-frame-visible-p
|
||||
;;;;;; cl-map-overlays cl-map-intervals cl-map-keymap-recursively
|
||||
;;;;;; notevery notany every some mapcon mapcan mapl maplist map
|
||||
;;;;;; cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "d93072a26c59f663a92b10df8bc28187")
|
||||
;;;;;; cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "deb3495d75c36a222e5238eadb8e347c")
|
||||
;;; Generated autoloads from cl-extra.el
|
||||
|
||||
(autoload 'coerce "cl-extra" "\
|
||||
@ -282,7 +282,7 @@ Not documented
|
||||
;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
|
||||
;;;;;; do* do loop return-from return block etypecase typecase ecase
|
||||
;;;;;; case load-time-value eval-when destructuring-bind function*
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "0faa39d8f21ae59f2cc1baa835e28a5f")
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "fbeedbf769c72fee9b4e0671957c1077")
|
||||
;;; Generated autoloads from cl-macs.el
|
||||
|
||||
(autoload 'gensym "cl-macs" "\
|
||||
|
@ -1813,6 +1813,7 @@ Example:
|
||||
(defsetf window-height () (store)
|
||||
(list 'progn (list 'enlarge-window (list '- store '(window-height))) store))
|
||||
(defsetf window-hscroll set-window-hscroll)
|
||||
(defsetf window-parameter set-window-parameter)
|
||||
(defsetf window-point set-window-point)
|
||||
(defsetf window-start set-window-start)
|
||||
(defsetf window-width () (store)
|
||||
|
@ -530,13 +530,13 @@ The words \"&rest\", \"&optional\" are returned unchanged."
|
||||
|
||||
;; Prime the command list.
|
||||
(eldoc-add-command-completions
|
||||
"backward-" "beginning-of-" "move-beginning-of-" "delete-other-windows"
|
||||
"delete-window" "handle-select-window"
|
||||
"end-of-" "move-end-of-" "exchange-point-and-mark" "forward-"
|
||||
"indent-for-tab-command" "goto-" "mark-page" "mark-paragraph"
|
||||
"mouse-set-point" "move-" "pop-global-mark" "next-" "other-window"
|
||||
"previous-" "recenter" "scroll-" "self-insert-command"
|
||||
"split-window-" "up-list" "down-list")
|
||||
"backward-" "beginning-of-" "delete-other-windows" "delete-window"
|
||||
"down-list" "end-of-" "exchange-point-and-mark" "forward-" "goto-"
|
||||
"handle-select-window" "indent-for-tab-command" "left-" "mark-page"
|
||||
"mark-paragraph" "mouse-set-point" "move-" "move-beginning-of-"
|
||||
"move-end-of-" "next-" "other-window" "pop-global-mark" "previous-"
|
||||
"recenter" "right-" "scroll-" "self-insert-command" "split-window-"
|
||||
"up-list")
|
||||
|
||||
(provide 'eldoc)
|
||||
|
||||
|
@ -221,8 +221,6 @@ font-lock keywords will not be case sensitive."
|
||||
;;(set (make-local-variable 'adaptive-fill-mode) nil)
|
||||
(make-local-variable 'indent-line-function)
|
||||
(setq indent-line-function 'lisp-indent-line)
|
||||
(make-local-variable 'parse-sexp-ignore-comments)
|
||||
(setq parse-sexp-ignore-comments t)
|
||||
(make-local-variable 'outline-regexp)
|
||||
(setq outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(")
|
||||
(make-local-variable 'outline-level)
|
||||
@ -431,7 +429,7 @@ All commands in `lisp-mode-shared-map' are inherited by this map.")
|
||||
:type 'hook
|
||||
:group 'lisp)
|
||||
|
||||
(define-derived-mode emacs-lisp-mode nil "Emacs-Lisp"
|
||||
(define-derived-mode emacs-lisp-mode prog-mode "Emacs-Lisp"
|
||||
"Major mode for editing Lisp code to run in Emacs.
|
||||
Commands:
|
||||
Delete converts tabs to spaces as it moves back.
|
||||
@ -466,7 +464,7 @@ if that value is non-nil."
|
||||
"Keymap for ordinary Lisp mode.
|
||||
All commands in `lisp-mode-shared-map' are inherited by this map.")
|
||||
|
||||
(define-derived-mode lisp-mode nil "Lisp"
|
||||
(define-derived-mode lisp-mode prog-mode "Lisp"
|
||||
"Major mode for editing Lisp code for Lisps other than GNU Emacs Lisp.
|
||||
Commands:
|
||||
Delete converts tabs to spaces as it moves back.
|
||||
|
877
lisp/emacs-lisp/smie.el
Normal file
877
lisp/emacs-lisp/smie.el
Normal file
@ -0,0 +1,877 @@
|
||||
;;; smie.el --- Simple Minded Indentation Engine
|
||||
|
||||
;; Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
;; Keywords: languages, lisp, internal, parsing, indentation
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs 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/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; While working on the SML indentation code, the idea grew that maybe
|
||||
;; I could write something generic to do the same thing, and at the
|
||||
;; end of working on the SML code, I had a pretty good idea of what it
|
||||
;; could look like. That idea grew stronger after working on
|
||||
;; LaTeX indentation.
|
||||
;;
|
||||
;; So at some point I decided to try it out, by writing a new
|
||||
;; indentation code for Coq while trying to keep most of the code
|
||||
;; "table driven", where only the tables are Coq-specific. The result
|
||||
;; (which was used for Beluga-mode as well) turned out to be based on
|
||||
;; something pretty close to an operator precedence parser.
|
||||
|
||||
;; So here is another rewrite, this time following the actual principles of
|
||||
;; operator precedence grammars. Why OPG? Even though they're among the
|
||||
;; weakest kinds of parsers, these parsers have some very desirable properties
|
||||
;; for Emacs:
|
||||
;; - most importantly for indentation, they work equally well in either
|
||||
;; direction, so you can use them to parse backward from the indentation
|
||||
;; point to learn the syntactic context;
|
||||
;; - they work locally, so there's no need to keep a cache of
|
||||
;; the parser's state;
|
||||
;; - because of that locality, indentation also works just fine when earlier
|
||||
;; parts of the buffer are syntactically incorrect since the indentation
|
||||
;; looks at "as little as possible" of the buffer to make an indentation
|
||||
;; decision.
|
||||
;; - they typically have no error handling and can't even detect a parsing
|
||||
;; error, so we don't have to worry about what to do in case of a syntax
|
||||
;; error because the parser just automatically does something. Better yet,
|
||||
;; we can afford to use a sloppy grammar.
|
||||
|
||||
;; The development (especially the parts building the 2D precedence
|
||||
;; tables and then computing the precedence levels from it) is largely
|
||||
;; inspired from page 187-194 of "Parsing techniques" by Dick Grune
|
||||
;; and Ceriel Jacobs (BookBody.pdf available at
|
||||
;; http://www.cs.vu.nl/~dick/PTAPG.html).
|
||||
;;
|
||||
;; OTOH we had to kill many chickens, read many coffee grounds, and practice
|
||||
;; untold numbers of black magic spells, to come up with the indentation code.
|
||||
;; Since then, some of that code has been beaten into submission, but the
|
||||
;; smie-indent-keyword is still pretty obscure.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(defvar comment-continue)
|
||||
(declare-function comment-string-strip "newcomment" (str beforep afterp))
|
||||
|
||||
;;; Building precedence level tables from BNF specs.
|
||||
|
||||
(defun smie-set-prec2tab (table x y val &optional override)
|
||||
(assert (and x y))
|
||||
(let* ((key (cons x y))
|
||||
(old (gethash key table)))
|
||||
(if (and old (not (eq old val)))
|
||||
(if (and override (gethash key override))
|
||||
;; FIXME: The override is meant to resolve ambiguities,
|
||||
;; but it also hides real conflicts. It would be great to
|
||||
;; be able to distinguish the two cases so that overrides
|
||||
;; don't hide real conflicts.
|
||||
(puthash key (gethash key override) table)
|
||||
(display-warning 'smie (format "Conflict: %s %s/%s %s" x old val y)))
|
||||
(puthash key val table))))
|
||||
|
||||
(defun smie-precs-precedence-table (precs)
|
||||
"Compute a 2D precedence table from a list of precedences.
|
||||
PRECS should be a list, sorted by precedence (e.g. \"+\" will
|
||||
come before \"*\"), of elements of the form \(left OP ...)
|
||||
or (right OP ...) or (nonassoc OP ...) or (assoc OP ...). All operators in
|
||||
one of those elements share the same precedence level and associativity."
|
||||
(let ((prec2-table (make-hash-table :test 'equal)))
|
||||
(dolist (prec precs)
|
||||
(dolist (op (cdr prec))
|
||||
(let ((selfrule (cdr (assq (car prec)
|
||||
'((left . >) (right . <) (assoc . =))))))
|
||||
(when selfrule
|
||||
(dolist (other-op (cdr prec))
|
||||
(smie-set-prec2tab prec2-table op other-op selfrule))))
|
||||
(let ((op1 '<) (op2 '>))
|
||||
(dolist (other-prec precs)
|
||||
(if (eq prec other-prec)
|
||||
(setq op1 '> op2 '<)
|
||||
(dolist (other-op (cdr other-prec))
|
||||
(smie-set-prec2tab prec2-table op other-op op2)
|
||||
(smie-set-prec2tab prec2-table other-op op op1)))))))
|
||||
prec2-table))
|
||||
|
||||
(defun smie-merge-prec2s (&rest tables)
|
||||
(if (null (cdr tables))
|
||||
(car tables)
|
||||
(let ((prec2 (make-hash-table :test 'equal)))
|
||||
(dolist (table tables)
|
||||
(maphash (lambda (k v)
|
||||
(smie-set-prec2tab prec2 (car k) (cdr k) v))
|
||||
table))
|
||||
prec2)))
|
||||
|
||||
(defun smie-bnf-precedence-table (bnf &rest precs)
|
||||
(let ((nts (mapcar 'car bnf)) ;Non-terminals
|
||||
(first-ops-table ())
|
||||
(last-ops-table ())
|
||||
(first-nts-table ())
|
||||
(last-nts-table ())
|
||||
(prec2 (make-hash-table :test 'equal))
|
||||
(override (apply 'smie-merge-prec2s
|
||||
(mapcar 'smie-precs-precedence-table precs)))
|
||||
again)
|
||||
(dolist (rules bnf)
|
||||
(let ((nt (car rules))
|
||||
(last-ops ())
|
||||
(first-ops ())
|
||||
(last-nts ())
|
||||
(first-nts ()))
|
||||
(dolist (rhs (cdr rules))
|
||||
(assert (consp rhs))
|
||||
(if (not (member (car rhs) nts))
|
||||
(pushnew (car rhs) first-ops)
|
||||
(pushnew (car rhs) first-nts)
|
||||
(when (consp (cdr rhs))
|
||||
;; If the first is not an OP we add the second (which
|
||||
;; should be an OP if BNF is an "operator grammar").
|
||||
;; Strictly speaking, this should only be done if the
|
||||
;; first is a non-terminal which can expand to a phrase
|
||||
;; without any OP in it, but checking doesn't seem worth
|
||||
;; the trouble, and it lets the writer of the BNF
|
||||
;; be a bit more sloppy by skipping uninteresting base
|
||||
;; cases which are terminals but not OPs.
|
||||
(assert (not (member (cadr rhs) nts)))
|
||||
(pushnew (cadr rhs) first-ops)))
|
||||
(let ((shr (reverse rhs)))
|
||||
(if (not (member (car shr) nts))
|
||||
(pushnew (car shr) last-ops)
|
||||
(pushnew (car shr) last-nts)
|
||||
(when (consp (cdr shr))
|
||||
(assert (not (member (cadr shr) nts)))
|
||||
(pushnew (cadr shr) last-ops)))))
|
||||
(push (cons nt first-ops) first-ops-table)
|
||||
(push (cons nt last-ops) last-ops-table)
|
||||
(push (cons nt first-nts) first-nts-table)
|
||||
(push (cons nt last-nts) last-nts-table)))
|
||||
;; Compute all first-ops by propagating the initial ones we have
|
||||
;; now, according to first-nts.
|
||||
(setq again t)
|
||||
(while (prog1 again (setq again nil))
|
||||
(dolist (first-nts first-nts-table)
|
||||
(let* ((nt (pop first-nts))
|
||||
(first-ops (assoc nt first-ops-table)))
|
||||
(dolist (first-nt first-nts)
|
||||
(dolist (op (cdr (assoc first-nt first-ops-table)))
|
||||
(unless (member op first-ops)
|
||||
(setq again t)
|
||||
(push op (cdr first-ops))))))))
|
||||
;; Same thing for last-ops.
|
||||
(setq again t)
|
||||
(while (prog1 again (setq again nil))
|
||||
(dolist (last-nts last-nts-table)
|
||||
(let* ((nt (pop last-nts))
|
||||
(last-ops (assoc nt last-ops-table)))
|
||||
(dolist (last-nt last-nts)
|
||||
(dolist (op (cdr (assoc last-nt last-ops-table)))
|
||||
(unless (member op last-ops)
|
||||
(setq again t)
|
||||
(push op (cdr last-ops))))))))
|
||||
;; Now generate the 2D precedence table.
|
||||
(dolist (rules bnf)
|
||||
(dolist (rhs (cdr rules))
|
||||
(while (cdr rhs)
|
||||
(cond
|
||||
((member (car rhs) nts)
|
||||
(dolist (last (cdr (assoc (car rhs) last-ops-table)))
|
||||
(smie-set-prec2tab prec2 last (cadr rhs) '> override)))
|
||||
((member (cadr rhs) nts)
|
||||
(dolist (first (cdr (assoc (cadr rhs) first-ops-table)))
|
||||
(smie-set-prec2tab prec2 (car rhs) first '< override))
|
||||
(if (and (cddr rhs) (not (member (car (cddr rhs)) nts)))
|
||||
(smie-set-prec2tab prec2 (car rhs) (car (cddr rhs))
|
||||
'= override)))
|
||||
(t (smie-set-prec2tab prec2 (car rhs) (cadr rhs) '= override)))
|
||||
(setq rhs (cdr rhs)))))
|
||||
prec2))
|
||||
|
||||
(defun smie-prec2-levels (prec2)
|
||||
"Take a 2D precedence table and turn it into an alist of precedence levels.
|
||||
PREC2 is a table as returned by `smie-precs-precedence-table' or
|
||||
`smie-bnf-precedence-table'."
|
||||
;; For each operator, we create two "variables" (corresponding to
|
||||
;; the left and right precedence level), which are represented by
|
||||
;; cons cells. Those are the vary cons cells that appear in the
|
||||
;; final `table'. The value of each "variable" is kept in the `car'.
|
||||
(let ((table ())
|
||||
(csts ())
|
||||
(eqs ())
|
||||
tmp x y)
|
||||
;; From `prec2' we construct a list of constraints between
|
||||
;; variables (aka "precedence levels"). These can be either
|
||||
;; equality constraints (in `eqs') or `<' constraints (in `csts').
|
||||
(maphash (lambda (k v)
|
||||
(if (setq tmp (assoc (car k) table))
|
||||
(setq x (cddr tmp))
|
||||
(setq x (cons nil nil))
|
||||
(push (cons (car k) (cons nil x)) table))
|
||||
(if (setq tmp (assoc (cdr k) table))
|
||||
(setq y (cdr tmp))
|
||||
(setq y (cons nil (cons nil nil)))
|
||||
(push (cons (cdr k) y) table))
|
||||
(ecase v
|
||||
(= (push (cons x y) eqs))
|
||||
(< (push (cons x y) csts))
|
||||
(> (push (cons y x) csts))))
|
||||
prec2)
|
||||
;; First process the equality constraints.
|
||||
(let ((eqs eqs))
|
||||
(while eqs
|
||||
(let ((from (caar eqs))
|
||||
(to (cdar eqs)))
|
||||
(setq eqs (cdr eqs))
|
||||
(if (eq to from)
|
||||
nil ;Nothing to do.
|
||||
(dolist (other-eq eqs)
|
||||
(if (eq from (cdr other-eq)) (setcdr other-eq to))
|
||||
(when (eq from (car other-eq))
|
||||
;; This can happen because of `assoc' settings in precs
|
||||
;; or because of a rhs like ("op" foo "op").
|
||||
(setcar other-eq to)))
|
||||
(dolist (cst csts)
|
||||
(if (eq from (cdr cst)) (setcdr cst to))
|
||||
(if (eq from (car cst)) (setcar cst to)))))))
|
||||
;; Then eliminate trivial constraints iteratively.
|
||||
(let ((i 0))
|
||||
(while csts
|
||||
(let ((rhvs (mapcar 'cdr csts))
|
||||
(progress nil))
|
||||
(dolist (cst csts)
|
||||
(unless (memq (car cst) rhvs)
|
||||
(setq progress t)
|
||||
;; We could give each var in a given iteration the same value,
|
||||
;; but we can also give them arbitrarily different values.
|
||||
;; Basically, these are vars between which there is no
|
||||
;; constraint (neither equality nor inequality), so
|
||||
;; anything will do.
|
||||
;; We give them arbitrary values, which means that we
|
||||
;; replace the "no constraint" case with either > or <
|
||||
;; but not =. The reason we do that is so as to try and
|
||||
;; distinguish associative operators (which will have
|
||||
;; left = right).
|
||||
(unless (caar cst)
|
||||
(setcar (car cst) i)
|
||||
(incf i))
|
||||
(setq csts (delq cst csts))))
|
||||
(unless progress
|
||||
(error "Can't resolve the precedence table to precedence levels")))
|
||||
(incf i 10))
|
||||
;; Propagate equalities back to their source.
|
||||
(dolist (eq (nreverse eqs))
|
||||
(assert (or (null (caar eq)) (eq (car eq) (cdr eq))))
|
||||
(setcar (car eq) (cadr eq)))
|
||||
;; Finally, fill in the remaining vars (which only appeared on the
|
||||
;; right side of the < constraints).
|
||||
(dolist (x table)
|
||||
;; When both sides are nil, it means this operator binds very
|
||||
;; very tight, but it's still just an operator, so we give it
|
||||
;; the highest precedence.
|
||||
;; OTOH if only one side is nil, it usually means it's like an
|
||||
;; open-paren, which is very important for indentation purposes,
|
||||
;; so we keep it nil, to make it easier to recognize.
|
||||
(unless (or (nth 1 x) (nth 2 x))
|
||||
(setf (nth 1 x) i)
|
||||
(setf (nth 2 x) i))))
|
||||
table))
|
||||
|
||||
;;; Parsing using a precedence level table.
|
||||
|
||||
(defvar smie-op-levels 'unset
|
||||
"List of token parsing info.
|
||||
Each element is of the form (TOKEN LEFT-LEVEL RIGHT-LEVEL).
|
||||
Parsing is done using an operator precedence parser.
|
||||
LEFT-LEVEL and RIGHT-LEVEL can be either numbers or nil, where nil
|
||||
means that this operator does not bind on the corresponding side,
|
||||
i.e. a LEFT-LEVEL of nil means this is a token that behaves somewhat like
|
||||
an open-paren, whereas a RIGHT-LEVEL of nil would correspond to something
|
||||
like a close-paren.")
|
||||
|
||||
(defvar smie-forward-token-function 'smie-default-forward-token
|
||||
"Function to scan forward for the next token.
|
||||
Called with no argument should return a token and move to its end.
|
||||
If no token is found, return nil or the empty string.
|
||||
It can return nil when bumping into a parenthesis, which lets SMIE
|
||||
use syntax-tables to handle them in efficient C code.")
|
||||
|
||||
(defvar smie-backward-token-function 'smie-default-backward-token
|
||||
"Function to scan backward the previous token.
|
||||
Same calling convention as `smie-forward-token-function' except
|
||||
it should move backward to the beginning of the previous token.")
|
||||
|
||||
(defalias 'smie-op-left 'car)
|
||||
(defalias 'smie-op-right 'cadr)
|
||||
|
||||
(defun smie-default-backward-token ()
|
||||
(forward-comment (- (point)))
|
||||
(buffer-substring (point)
|
||||
(progn (if (zerop (skip-syntax-backward "."))
|
||||
(skip-syntax-backward "w_'"))
|
||||
(point))))
|
||||
|
||||
(defun smie-default-forward-token ()
|
||||
(forward-comment (point-max))
|
||||
(buffer-substring (point)
|
||||
(progn (if (zerop (skip-syntax-forward "."))
|
||||
(skip-syntax-forward "w_'"))
|
||||
(point))))
|
||||
|
||||
(defun smie-associative-p (toklevels)
|
||||
;; in "a + b + c" we want to stop at each +, but in
|
||||
;; "if a then b else c" we don't want to stop at each keyword.
|
||||
;; To distinguish the two cases, we made smie-prec2-levels choose
|
||||
;; different levels for each part of "if a then b else c", so that
|
||||
;; by checking if the left-level is equal to the right level, we can
|
||||
;; figure out that it's an associative operator.
|
||||
;; This is not 100% foolproof, tho, since a grammar like
|
||||
;; (exp ("A" exp "C") ("A" exp "B" exp "C"))
|
||||
;; will cause "B" to have equal left and right levels, even though
|
||||
;; it is not an associative operator.
|
||||
;; A better check would be the check the actual previous operator
|
||||
;; against this one to see if it's the same, but we'd have to change
|
||||
;; `levels' to keep a stack of operators rather than only levels.
|
||||
(eq (smie-op-left toklevels) (smie-op-right toklevels)))
|
||||
|
||||
(defun smie-next-sexp (next-token next-sexp op-forw op-back halfsexp)
|
||||
"Skip over one sexp.
|
||||
NEXT-TOKEN is a function of no argument that moves forward by one
|
||||
token (after skipping comments if needed) and returns it.
|
||||
NEXT-SEXP is a lower-level function to skip one sexp.
|
||||
OP-FORW is the accessor to the forward level of the level data.
|
||||
OP-BACK is the accessor to the backward level of the level data.
|
||||
HALFSEXP if non-nil, means skip over a partial sexp if needed. I.e. if the
|
||||
first token we see is an operator, skip over its left-hand-side argument.
|
||||
Possible return values:
|
||||
(FORW-LEVEL POS TOKEN): we couldn't skip TOKEN because its back-level
|
||||
is too high. FORW-LEVEL is the forw-level of TOKEN,
|
||||
POS is its start position in the buffer.
|
||||
(t POS TOKEN): same thing when we bump on the wrong side of a paren.
|
||||
(nil POS TOKEN): we skipped over a paren-like pair.
|
||||
nil: we skipped over an identifier, matched parentheses, ..."
|
||||
(catch 'return
|
||||
(let ((levels ()))
|
||||
(while
|
||||
(let* ((pos (point))
|
||||
(token (funcall next-token))
|
||||
(toklevels (cdr (assoc token smie-op-levels))))
|
||||
|
||||
(cond
|
||||
((null toklevels)
|
||||
(when (zerop (length token))
|
||||
(condition-case err
|
||||
(progn (goto-char pos) (funcall next-sexp 1) nil)
|
||||
(scan-error (throw 'return (list t (caddr err)))))
|
||||
(if (eq pos (point))
|
||||
;; We did not move, so let's abort the loop.
|
||||
(throw 'return (list t (point))))))
|
||||
((null (funcall op-back toklevels))
|
||||
;; A token like a paren-close.
|
||||
(assert (funcall op-forw toklevels)) ;Otherwise, why mention it?
|
||||
(push (funcall op-forw toklevels) levels))
|
||||
(t
|
||||
(while (and levels (< (funcall op-back toklevels) (car levels)))
|
||||
(setq levels (cdr levels)))
|
||||
(cond
|
||||
((null levels)
|
||||
(if (and halfsexp (funcall op-forw toklevels))
|
||||
(push (funcall op-forw toklevels) levels)
|
||||
(throw 'return
|
||||
(prog1 (list (or (car toklevels) t) (point) token)
|
||||
(goto-char pos)))))
|
||||
(t
|
||||
(if (and levels (= (funcall op-back toklevels) (car levels)))
|
||||
(setq levels (cdr levels)))
|
||||
(cond
|
||||
((null levels)
|
||||
(cond
|
||||
((null (funcall op-forw toklevels))
|
||||
(throw 'return (list nil (point) token)))
|
||||
((smie-associative-p toklevels)
|
||||
(throw 'return
|
||||
(prog1 (list (or (car toklevels) t) (point) token)
|
||||
(goto-char pos))))
|
||||
;; We just found a match to the previously pending operator
|
||||
;; but this new operator is still part of a larger RHS.
|
||||
;; E.g. we're now looking at the "then" in
|
||||
;; "if a then b else c". So we have to keep parsing the
|
||||
;; rest of the construct.
|
||||
(t (push (funcall op-forw toklevels) levels))))
|
||||
(t
|
||||
(if (funcall op-forw toklevels)
|
||||
(push (funcall op-forw toklevels) levels))))))))
|
||||
levels)
|
||||
(setq halfsexp nil)))))
|
||||
|
||||
(defun smie-backward-sexp (&optional halfsexp)
|
||||
"Skip over one sexp.
|
||||
HALFSEXP if non-nil, means skip over a partial sexp if needed. I.e. if the
|
||||
first token we see is an operator, skip over its left-hand-side argument.
|
||||
Possible return values:
|
||||
(LEFT-LEVEL POS TOKEN): we couldn't skip TOKEN because its right-level
|
||||
is too high. LEFT-LEVEL is the left-level of TOKEN,
|
||||
POS is its start position in the buffer.
|
||||
(t POS TOKEN): same thing but for an open-paren or the beginning of buffer.
|
||||
(nil POS TOKEN): we skipped over a paren-like pair.
|
||||
nil: we skipped over an identifier, matched parentheses, ..."
|
||||
(smie-next-sexp
|
||||
(indirect-function smie-backward-token-function)
|
||||
(indirect-function 'backward-sexp)
|
||||
(indirect-function 'smie-op-left)
|
||||
(indirect-function 'smie-op-right)
|
||||
halfsexp))
|
||||
|
||||
(defun smie-forward-sexp (&optional halfsexp)
|
||||
"Skip over one sexp.
|
||||
HALFSEXP if non-nil, means skip over a partial sexp if needed. I.e. if the
|
||||
first token we see is an operator, skip over its left-hand-side argument.
|
||||
Possible return values:
|
||||
(RIGHT-LEVEL POS TOKEN): we couldn't skip TOKEN because its left-level
|
||||
is too high. RIGHT-LEVEL is the right-level of TOKEN,
|
||||
POS is its end position in the buffer.
|
||||
(t POS TOKEN): same thing but for an open-paren or the beginning of buffer.
|
||||
(nil POS TOKEN): we skipped over a paren-like pair.
|
||||
nil: we skipped over an identifier, matched parentheses, ..."
|
||||
(smie-next-sexp
|
||||
(indirect-function smie-forward-token-function)
|
||||
(indirect-function 'forward-sexp)
|
||||
(indirect-function 'smie-op-right)
|
||||
(indirect-function 'smie-op-left)
|
||||
halfsexp))
|
||||
|
||||
(defun smie-backward-sexp-command (&optional n)
|
||||
"Move backward through N logical elements."
|
||||
(interactive "p")
|
||||
(if (< n 0)
|
||||
(smie-forward-sexp-command (- n))
|
||||
(let ((forward-sexp-function nil))
|
||||
(while (> n 0)
|
||||
(decf n)
|
||||
(let ((pos (point))
|
||||
(res (smie-backward-sexp 'halfsexp)))
|
||||
(if (and (car res) (= pos (point)) (not (bolp)))
|
||||
(signal 'scan-error
|
||||
(list "Containing expression ends prematurely"
|
||||
(cadr res) (cadr res)))
|
||||
nil))))))
|
||||
|
||||
(defun smie-forward-sexp-command (&optional n)
|
||||
"Move forward through N logical elements."
|
||||
(interactive "p")
|
||||
(if (< n 0)
|
||||
(smie-backward-sexp-command (- n))
|
||||
(let ((forward-sexp-function nil))
|
||||
(while (> n 0)
|
||||
(decf n)
|
||||
(let ((pos (point))
|
||||
(res (smie-forward-sexp 'halfsexp)))
|
||||
(if (and (car res) (= pos (point)) (not (bolp)))
|
||||
(signal 'scan-error
|
||||
(list "Containing expression ends prematurely"
|
||||
(cadr res) (cadr res)))
|
||||
nil))))))
|
||||
|
||||
;;; The indentation engine.
|
||||
|
||||
(defcustom smie-indent-basic 4
|
||||
"Basic amount of indentation."
|
||||
:type 'integer)
|
||||
|
||||
(defvar smie-indent-rules 'unset
|
||||
;; TODO: For SML, we need more rule formats, so as to handle
|
||||
;; structure Foo =
|
||||
;; Bar (toto)
|
||||
;; and
|
||||
;; structure Foo =
|
||||
;; struct ... end
|
||||
;; I.e. the indentation after "=" depends on the parent ("structure")
|
||||
;; as well as on the following token ("struct").
|
||||
"Rules of the following form.
|
||||
\((:before . TOK) . OFFSET-RULES) how to indent TOK itself.
|
||||
\(TOK . OFFSET-RULES) how to indent right after TOK.
|
||||
\((T1 . T2) . OFFSET) how to indent token T2 w.r.t T1.
|
||||
\((t . TOK) . OFFSET) how to indent TOK with respect to its parent.
|
||||
\(list-intro . TOKENS) declare TOKENS as being followed by what may look like
|
||||
a funcall but is just a sequence of expressions.
|
||||
\(t . OFFSET) basic indentation step.
|
||||
\(args . OFFSET) indentation of arguments.
|
||||
|
||||
OFFSET-RULES is a list of elements which can each either be:
|
||||
|
||||
\(:hanging . OFFSET-RULES) if TOK is hanging, use OFFSET-RULES.
|
||||
\(:parent PARENT . OFFSET-RULES) if TOK's parent is PARENT, use OFFSET-RULES.
|
||||
\(:next TOKEN . OFFSET-RULES) if TOK is followed by TOKEN, use OFFSET-RULES.
|
||||
\(:prev TOKEN . OFFSET-RULES) if TOK is preceded by TOKEN, use OFFSET-RULES.
|
||||
a number the offset to use.
|
||||
`point' align with the token.
|
||||
`parent' align with the parent.
|
||||
|
||||
A nil offset for indentation after a token defaults to `smie-indent-basic'.")
|
||||
|
||||
(defun smie-indent-hanging-p ()
|
||||
;; A hanging keyword is one that's at the end of a line except it's not at
|
||||
;; the beginning of a line.
|
||||
(and (save-excursion
|
||||
(when (zerop (length (funcall smie-forward-token-function)))
|
||||
;; Could be an open-paren.
|
||||
(forward-char 1))
|
||||
(skip-chars-forward " \t")
|
||||
(eolp))
|
||||
(not (smie-bolp))))
|
||||
|
||||
(defun smie-bolp ()
|
||||
(save-excursion (skip-chars-backward " \t") (bolp)))
|
||||
|
||||
(defun smie-indent-offset (elem)
|
||||
(or (cdr (assq elem smie-indent-rules))
|
||||
(cdr (assq t smie-indent-rules))
|
||||
smie-indent-basic))
|
||||
|
||||
(defun smie-indent-offset-rule (tokinfo &optional after)
|
||||
"Apply the OFFSET-RULES in TOKINFO.
|
||||
Point is expected to be right in front of the token corresponding to TOKINFO.
|
||||
If computing the indentation after the token, then AFTER is the position
|
||||
after the token."
|
||||
(let ((rules (cdr tokinfo))
|
||||
parent next prev
|
||||
offset)
|
||||
(while (consp rules)
|
||||
(let ((rule (pop rules)))
|
||||
(cond
|
||||
((not (consp rule)) (setq offset rule))
|
||||
((eq (car rule) :hanging)
|
||||
(when (smie-indent-hanging-p)
|
||||
(setq rules (cdr rule))))
|
||||
((eq (car rule) :prev)
|
||||
(unless prev
|
||||
(save-excursion
|
||||
(setq prev (smie-indent-backward-token))))
|
||||
(when (equal (car prev) (cadr rule))
|
||||
(setq rules (cddr rule))))
|
||||
((eq (car rule) :next)
|
||||
(unless next
|
||||
(unless after
|
||||
(error "Can't use :next in :before indentation rules"))
|
||||
(save-excursion
|
||||
(goto-char after)
|
||||
(setq next (smie-indent-forward-token))))
|
||||
(when (equal (car next) (cadr rule))
|
||||
(setq rules (cddr rule))))
|
||||
((eq (car rule) :parent)
|
||||
(unless parent
|
||||
(save-excursion
|
||||
(if after (goto-char after))
|
||||
(setq parent (smie-backward-sexp 'halfsexp))))
|
||||
(when (equal (nth 2 parent) (cadr rule))
|
||||
(setq rules (cddr rule))))
|
||||
(t (error "Unknown rule %s for indentation of %s"
|
||||
rule (car tokinfo))))))
|
||||
offset))
|
||||
|
||||
(defun smie-indent-forward-token ()
|
||||
"Skip token forward and return it, along with its levels."
|
||||
(let ((tok (funcall smie-forward-token-function)))
|
||||
(cond
|
||||
((< 0 (length tok)) (assoc tok smie-op-levels))
|
||||
((looking-at "\\s(")
|
||||
(forward-char 1)
|
||||
(list (buffer-substring (1- (point)) (point)) nil 0)))))
|
||||
|
||||
(defun smie-indent-backward-token ()
|
||||
"Skip token backward and return it, along with its levels."
|
||||
(let ((tok (funcall smie-backward-token-function)))
|
||||
(cond
|
||||
((< 0 (length tok)) (assoc tok smie-op-levels))
|
||||
;; 4 == Open paren syntax.
|
||||
((eq 4 (syntax-class (syntax-after (1- (point)))))
|
||||
(forward-char -1)
|
||||
(list (buffer-substring (point) (1+ (point))) nil 0)))))
|
||||
|
||||
(defun smie-indent-virtual ()
|
||||
;; We used to take an optional arg (with value :not-hanging) to specify that
|
||||
;; we should only use (smie-indent-calculate) if we're looking at a hanging
|
||||
;; keyword. This was a bad idea, because the virtual indent of a position
|
||||
;; should not depend on the caller, since it leads to situations where two
|
||||
;; dependent indentations get indented differently.
|
||||
"Compute the virtual indentation to use for point.
|
||||
This is used when we're not trying to indent point but just
|
||||
need to compute the column at which point should be indented
|
||||
in order to figure out the indentation of some other (further down) point."
|
||||
;; Trust pre-existing indentation on other lines.
|
||||
(if (smie-bolp) (current-column) (smie-indent-calculate)))
|
||||
|
||||
(defun smie-indent-fixindent ()
|
||||
;; Obey the `fixindent' special comment.
|
||||
(and (smie-bolp)
|
||||
(save-excursion
|
||||
(comment-normalize-vars)
|
||||
(re-search-forward (concat comment-start-skip
|
||||
"fixindent"
|
||||
comment-end-skip)
|
||||
;; 1+ to account for the \n comment termination.
|
||||
(1+ (line-end-position)) t))
|
||||
(current-column)))
|
||||
|
||||
(defun smie-indent-bob ()
|
||||
;; Start the file at column 0.
|
||||
(save-excursion
|
||||
(forward-comment (- (point)))
|
||||
(if (bobp) 0)))
|
||||
|
||||
(defun smie-indent-close ()
|
||||
;; Align close paren with opening paren.
|
||||
(save-excursion
|
||||
;; (forward-comment (point-max))
|
||||
(when (looking-at "\\s)")
|
||||
(while (not (zerop (skip-syntax-forward ")")))
|
||||
(skip-chars-forward " \t"))
|
||||
(condition-case nil
|
||||
(progn
|
||||
(backward-sexp 1)
|
||||
(smie-indent-virtual)) ;:not-hanging
|
||||
(scan-error nil)))))
|
||||
|
||||
(defun smie-indent-keyword ()
|
||||
;; Align closing token with the corresponding opening one.
|
||||
;; (e.g. "of" with "case", or "in" with "let").
|
||||
(save-excursion
|
||||
(let* ((pos (point))
|
||||
(toklevels (smie-indent-forward-token))
|
||||
(token (pop toklevels)))
|
||||
(if (null (car toklevels))
|
||||
;; Different case:
|
||||
;; - smie-bolp: "indent according to others".
|
||||
;; - common hanging: "indent according to others".
|
||||
;; - SML-let hanging: "indent like parent".
|
||||
;; - if-after-else: "indent-like parent".
|
||||
;; - middle-of-line: "trust current position".
|
||||
(cond
|
||||
((null (cdr toklevels)) nil) ;Not a keyword.
|
||||
((smie-bolp)
|
||||
;; For an open-paren-like thingy at BOL, always indent only
|
||||
;; based on other rules (typically smie-indent-after-keyword).
|
||||
nil)
|
||||
(t
|
||||
(let* ((tokinfo (or (assoc (cons :before token) smie-indent-rules)
|
||||
;; By default use point unless we're hanging.
|
||||
(cons (cons :before token)
|
||||
'((:hanging nil) point))))
|
||||
(after (prog1 (point) (goto-char pos)))
|
||||
(offset (smie-indent-offset-rule tokinfo)))
|
||||
(cond
|
||||
((eq offset 'point) (current-column))
|
||||
((eq offset 'parent)
|
||||
(let ((parent (smie-backward-sexp 'halfsexp)))
|
||||
(if parent (goto-char (cadr parent))))
|
||||
(smie-indent-virtual))
|
||||
((eq offset nil) nil)
|
||||
(t (error "Unhandled offset %s in %s"
|
||||
offset (cons :before token)))))))
|
||||
|
||||
;; FIXME: This still looks too much like black magic!!
|
||||
;; FIXME: Rather than a bunch of rules like (PARENT . TOKEN), we
|
||||
;; want a single rule for TOKEN with different cases for each PARENT.
|
||||
(let ((res (smie-backward-sexp 'halfsexp)) tmp)
|
||||
(cond
|
||||
((not (or (< (point) pos)
|
||||
(and (cadr res) (< (cadr res) pos))))
|
||||
;; If we didn't move at all, that means we didn't really skip
|
||||
;; what we wanted.
|
||||
nil)
|
||||
((eq (car res) (car toklevels))
|
||||
;; We bumped into a same-level operator. align with it.
|
||||
(goto-char (cadr res))
|
||||
;; Don't use (smie-indent-virtual :not-hanging) here, because we
|
||||
;; want to jump back over a sequence of same-level ops such as
|
||||
;; a -> b -> c
|
||||
;; -> d
|
||||
;; So as to align with the earliest appropriate place.
|
||||
(smie-indent-virtual))
|
||||
((setq tmp (assoc (cons (caddr res) token)
|
||||
smie-indent-rules))
|
||||
(goto-char (cadr res))
|
||||
(+ (cdr tmp) (smie-indent-virtual))) ;:not-hanging
|
||||
;; FIXME: The rules ((t . TOK) . OFFSET) either indent
|
||||
;; relative to "before the parent" or "after the parent",
|
||||
;; depending on details of the grammar.
|
||||
((null (car res))
|
||||
(assert (eq (point) (cadr res)))
|
||||
(goto-char (cadr res))
|
||||
(+ (or (cdr (assoc (cons t token) smie-indent-rules)) 0)
|
||||
(smie-indent-virtual))) ;:not-hanging
|
||||
((and (= (point) pos) (smie-bolp))
|
||||
;; Since we started at BOL, we're not computing a virtual
|
||||
;; indentation, and we're still at the starting point, so the
|
||||
;; next (default) rule can't be used since it uses `current-column'
|
||||
;; which would cause. indentation to depend on itself.
|
||||
;; We could just return nil, but OTOH that's not good enough in
|
||||
;; some cases. Instead, we want to combine the offset-rules for
|
||||
;; the current token with the offset-rules of the previous one.
|
||||
(+ (or (cdr (assoc (cons t token) smie-indent-rules)) 0)
|
||||
;; FIXME: This is odd. Can't we make it use
|
||||
;; smie-indent-(calculate|virtual) somehow?
|
||||
(smie-indent-after-keyword)))
|
||||
(t
|
||||
(+ (or (cdr (assoc (cons t token) smie-indent-rules)) 0)
|
||||
(current-column)))))))))
|
||||
|
||||
(defun smie-indent-comment ()
|
||||
;; Indentation of a comment.
|
||||
(and (looking-at comment-start-skip)
|
||||
(save-excursion
|
||||
(forward-comment (point-max))
|
||||
(skip-chars-forward " \t\r\n")
|
||||
(smie-indent-calculate))))
|
||||
|
||||
(defun smie-indent-comment-continue ()
|
||||
;; indentation of comment-continue lines.
|
||||
(let ((continue (and comment-continue
|
||||
(comment-string-strip comment-continue t t))))
|
||||
(and (< 0 (length continue))
|
||||
(looking-at (regexp-quote continue)) (nth 4 (syntax-ppss))
|
||||
(let ((ppss (syntax-ppss)))
|
||||
(save-excursion
|
||||
(forward-line -1)
|
||||
(if (<= (point) (nth 8 ppss))
|
||||
(progn (goto-char (1+ (nth 8 ppss))) (current-column))
|
||||
(skip-chars-forward " \t")
|
||||
(if (looking-at (regexp-quote continue))
|
||||
(current-column))))))))
|
||||
|
||||
(defun smie-indent-after-keyword ()
|
||||
;; Indentation right after a special keyword.
|
||||
(save-excursion
|
||||
(let* ((pos (point))
|
||||
(toklevel (smie-indent-backward-token))
|
||||
(tok (car toklevel))
|
||||
(tokinfo (assoc tok smie-indent-rules)))
|
||||
(if (and toklevel (null (cadr toklevel)) (null tokinfo))
|
||||
(setq tokinfo (list (car toklevel))))
|
||||
;; (if (and tokinfo (null toklevel))
|
||||
;; (error "Token %S has indent rule but has no parsing info" tok))
|
||||
(when toklevel
|
||||
(let ((offset
|
||||
(cond
|
||||
(tokinfo (or (smie-indent-offset-rule tokinfo pos)
|
||||
(smie-indent-offset t)))
|
||||
;; The default indentation after a keyword/operator
|
||||
;; is 0 for infix and t for prefix.
|
||||
;; Using the BNF syntax, we could come up with
|
||||
;; better defaults, but we only have the
|
||||
;; precedence levels here.
|
||||
((null (cadr toklevel)) (smie-indent-offset t))
|
||||
(t 0))))
|
||||
;; For indentation after "(let" in SML-mode, we end up accumulating
|
||||
;; the offset of "(" and the offset of "let", so we use `min' to try
|
||||
;; and get it right either way.
|
||||
(+ (min (smie-indent-virtual) (current-column)) offset))))))
|
||||
|
||||
(defun smie-indent-exps ()
|
||||
;; Indentation of sequences of simple expressions without
|
||||
;; intervening keywords or operators. E.g. "a b c" or "g (balbla) f".
|
||||
;; Can be a list of expressions or a function call.
|
||||
;; If it's a function call, the first element is special (it's the
|
||||
;; function). We distinguish function calls from mere lists of
|
||||
;; expressions based on whether the preceding token is listed in
|
||||
;; the `list-intro' entry of smie-indent-rules.
|
||||
;;
|
||||
;; TODO: to indent Lisp code, we should add a way to specify
|
||||
;; particular indentation for particular args depending on the
|
||||
;; function (which would require always skipping back until the
|
||||
;; function).
|
||||
;; TODO: to indent C code, such as "if (...) {...}" we might need
|
||||
;; to add similar indentation hooks for particular positions, but
|
||||
;; based on the preceding token rather than based on the first exp.
|
||||
(save-excursion
|
||||
(let ((positions nil)
|
||||
arg)
|
||||
(while (and (null (car (smie-backward-sexp)))
|
||||
(push (point) positions)
|
||||
(not (smie-bolp))))
|
||||
(save-excursion
|
||||
;; Figure out if the atom we just skipped is an argument rather
|
||||
;; than a function.
|
||||
(setq arg (or (null (car (smie-backward-sexp)))
|
||||
(member (funcall smie-backward-token-function)
|
||||
(cdr (assoc 'list-intro smie-indent-rules))))))
|
||||
(cond
|
||||
((null positions)
|
||||
;; We're the first expression of the list. In that case, the
|
||||
;; indentation should be (have been) determined by its context.
|
||||
nil)
|
||||
(arg
|
||||
;; There's a previous element, and it's not special (it's not
|
||||
;; the function), so let's just align with that one.
|
||||
(goto-char (car positions))
|
||||
(current-column))
|
||||
((cdr positions)
|
||||
;; We skipped some args plus the function and bumped into something.
|
||||
;; Align with the first arg.
|
||||
(goto-char (cadr positions))
|
||||
(current-column))
|
||||
(positions
|
||||
;; We're the first arg.
|
||||
(goto-char (car positions))
|
||||
(+ (smie-indent-offset 'args)
|
||||
;; We used to use (smie-indent-virtual), but that
|
||||
;; doesn't seem right since it might then indent args less than
|
||||
;; the function itself.
|
||||
(current-column)))))))
|
||||
|
||||
(defvar smie-indent-functions
|
||||
'(smie-indent-fixindent smie-indent-bob smie-indent-close smie-indent-comment
|
||||
smie-indent-comment-continue smie-indent-keyword smie-indent-after-keyword
|
||||
smie-indent-exps)
|
||||
"Functions to compute the indentation.
|
||||
Each function is called with no argument, shouldn't move point, and should
|
||||
return either nil if it has no opinion, or an integer representing the column
|
||||
to which that point should be aligned, if we were to reindent it.")
|
||||
|
||||
(defun smie-indent-calculate ()
|
||||
"Compute the indentation to use for point."
|
||||
(run-hook-with-args-until-success 'smie-indent-functions))
|
||||
|
||||
(defun smie-indent-line ()
|
||||
"Indent current line using the SMIE indentation engine."
|
||||
(interactive)
|
||||
(let* ((savep (point))
|
||||
(indent (condition-case nil
|
||||
(save-excursion
|
||||
(forward-line 0)
|
||||
(skip-chars-forward " \t")
|
||||
(if (>= (point) savep) (setq savep nil))
|
||||
(or (smie-indent-calculate) 0))
|
||||
(error 0))))
|
||||
(if (not (numberp indent))
|
||||
;; If something funny is used (e.g. `noindent'), return it.
|
||||
indent
|
||||
(if (< indent 0) (setq indent 0)) ;Just in case.
|
||||
(if savep
|
||||
(save-excursion (indent-line-to indent))
|
||||
(indent-line-to indent)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun smie-setup (op-levels indent-rules)
|
||||
(set (make-local-variable 'smie-indent-rules) indent-rules)
|
||||
(set (make-local-variable 'smie-op-levels) op-levels)
|
||||
(set (make-local-variable 'indent-line-function) 'smie-indent-line))
|
||||
|
||||
|
||||
(provide 'smie)
|
||||
;;; smie.el ends here
|
@ -1497,6 +1497,8 @@ If ARG is the atom `-', scroll upward by nearly full screen."
|
||||
|
||||
(dolist (cmd
|
||||
'(forward-char backward-char
|
||||
right-char left-char
|
||||
right-word left-word
|
||||
next-line previous-line
|
||||
forward-word backward-word
|
||||
end-of-line beginning-of-line
|
||||
|
@ -231,7 +231,7 @@
|
||||
(move-to-column mc)
|
||||
(set-mark (point))
|
||||
(goto-char pp)
|
||||
;; Move cursor inside rectangle, except if char at rigth edge is a tab.
|
||||
;; Move cursor inside rectangle, except if char at right edge is a tab.
|
||||
(if (and (if (cua--rectangle-right-side)
|
||||
(and (= (move-to-column pc) (- pc tab-width))
|
||||
(not (eolp)))
|
||||
@ -1344,7 +1344,7 @@ With prefix arg, indent to that column."
|
||||
pad)
|
||||
(if (bolp)
|
||||
nil
|
||||
(delete-backward-char 1)
|
||||
(delete-char -1)
|
||||
(if (cua--rectangle-right-side t)
|
||||
(cua--rectangle-insert-col (current-column))
|
||||
(setq indent (- l (current-column))))))
|
||||
|
@ -1,7 +1,8 @@
|
||||
;;; edt.el --- enhanced EDT keypad mode emulation for GNU Emacs 19
|
||||
|
||||
;; Copyright (C) 1986, 1992, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
|
||||
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
;; Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Kevin Gallagher <Kevin.Gallagher@boeing.com>
|
||||
;; Maintainer: Kevin Gallagher <Kevin.Gallagher@boeing.com>
|
||||
@ -2056,40 +2057,32 @@ created."
|
||||
|
||||
Ack!! You're running the Enhanced EDT Emulation without loading an
|
||||
EDT key mapping file. To create an EDT key mapping file, run the
|
||||
edt-mapper.el program. It is safest to run it from an Emacs loaded
|
||||
edt-mapper program. It is safest to run it from an Emacs loaded
|
||||
without any of your own customizations found in your .emacs file, etc.
|
||||
The reason for this is that some user customizations confuse edt-mapper.
|
||||
You can do this by quitting Emacs and then invoking Emacs again as
|
||||
follows:
|
||||
|
||||
emacs -q -l edt-mapper.el
|
||||
emacs -q -l edt-mapper
|
||||
|
||||
[NOTE: If you do nothing out of the ordinary in your .emacs file, and
|
||||
the search for edt-mapper.el is successful, you can try running it now.]
|
||||
the search for edt-mapper is successful, you can try running it now.]
|
||||
|
||||
The file edt-mapper.el includes these same directions on how to
|
||||
The library edt-mapper includes these same directions on how to
|
||||
use it! Perhaps it's lying around here someplace. \n ")
|
||||
(let ((file "edt-mapper.el")
|
||||
(found nil)
|
||||
(path nil)
|
||||
(search-list (append (list (expand-file-name ".")) load-path)))
|
||||
(while (and (not found) search-list)
|
||||
(setq path (concat (car search-list)
|
||||
(if (string-match "/$" (car search-list)) "" "/")
|
||||
file))
|
||||
(if (and (file-exists-p path) (not (file-directory-p path)))
|
||||
(setq found t))
|
||||
(setq search-list (cdr search-list)))
|
||||
(cond (found
|
||||
(insert (format
|
||||
"Ah yes, there it is, in \n\n %s \n\n" path))
|
||||
(if (edt-y-or-n-p "Do you want to run it now? ")
|
||||
(load-file path)
|
||||
(error "EDT Emulation not configured")))
|
||||
(t
|
||||
(insert "Nope, I can't seem to find it. :-(\n\n")
|
||||
(sit-for 20)
|
||||
(error "EDT Emulation not configured")))))))
|
||||
(let ((path (locate-library
|
||||
"edt-mapper"
|
||||
nil (append (list default-directory) load-path))))
|
||||
(if path
|
||||
(progn
|
||||
(insert (format
|
||||
"Ah yes, there it is, in \n\n %s \n\n" path))
|
||||
(if (edt-y-or-n-p "Do you want to run it now? ")
|
||||
(load-file path)
|
||||
(error "EDT Emulation not configured")))
|
||||
(insert "Nope, I can't seem to find it. :-(\n\n")
|
||||
(sit-for 20)
|
||||
(error "EDT Emulation not configured"))))))
|
||||
|
||||
;;;
|
||||
;;; Turning the EDT Emulation on and off.
|
||||
@ -2570,12 +2563,12 @@ Argument GOLD-BINDING is the Emacs function to be bound to GOLD <KEY>."
|
||||
;;; DEFAULT EDT KEYPAD HELP
|
||||
;;;
|
||||
|
||||
;;;
|
||||
;;; Upper case commands in the keypad diagram below indicate that the
|
||||
;;; emulation should look and feel very much like EDT. Lower case
|
||||
;;; commands are enhancements and/or additions to the EDT keypad
|
||||
;;; commands or are native Emacs commands.
|
||||
;;;
|
||||
;;
|
||||
;; Upper case commands in the keypad diagram below indicate that the
|
||||
;; emulation should look and feel very much like EDT. Lower case
|
||||
;; commands are enhancements and/or additions to the EDT keypad
|
||||
;; commands or are native Emacs commands.
|
||||
;;
|
||||
|
||||
(defun edt-keypad-help ()
|
||||
"DEFAULT EDT Keypad Active.
|
||||
@ -2684,7 +2677,7 @@ G-C-\\: Split Window | FNDNXT | Yank | CUT |
|
||||
|
||||
;;;
|
||||
;;; EDT emulation screen width commands.
|
||||
;;;
|
||||
;;
|
||||
;; Some terminals require modification of terminal attributes when
|
||||
;; changing the number of columns displayed, hence the fboundp tests
|
||||
;; below. These functions are defined in the corresponding terminal
|
||||
|
@ -750,7 +750,7 @@ reversed."
|
||||
(format "[^\\\\]\\(\\\\\\\\\\)*\\\\%c" c)))
|
||||
(setq cont nil)
|
||||
;; we are at an escaped delimiter: unescape it and continue
|
||||
(delete-backward-char 2)
|
||||
(delete-char -2)
|
||||
(insert c)
|
||||
(if (eolp)
|
||||
;; if at eol, exit loop and go to next line
|
||||
|
@ -508,13 +508,12 @@ If ARG is non-nil, mark the key."
|
||||
(set-keymap-parent (current-local-map) widget-keymap)
|
||||
(setq epa-exit-buffer-function #'abort-recursive-edit)
|
||||
(goto-char (point-min))
|
||||
(pop-to-buffer (current-buffer)))
|
||||
(let ((display-buffer-mark-dedicated 'soft))
|
||||
(pop-to-buffer (current-buffer))))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(recursive-edit)
|
||||
(epa--marked-keys))
|
||||
(if (get-buffer-window epa-keys-buffer)
|
||||
(delete-window (get-buffer-window epa-keys-buffer)))
|
||||
(kill-buffer epa-keys-buffer))))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -1899,7 +1899,7 @@ You can then use `write-region' to write new data into the file."
|
||||
;; Cleanup the tempfile.
|
||||
(and tempfile
|
||||
(file-exists-p tempfile)
|
||||
(delete-file tempfile t))
|
||||
(delete-file tempfile))
|
||||
;; Cleanup the tempdir.
|
||||
(and tempdir
|
||||
(file-directory-p tempdir)
|
||||
@ -1999,7 +1999,7 @@ If PLAIN is nil, it returns the result as a string."
|
||||
(epg-read-output context))
|
||||
(epg-delete-output-file context)
|
||||
(if (file-exists-p input-file)
|
||||
(delete-file input-file t))
|
||||
(delete-file input-file))
|
||||
(epg-reset context))))
|
||||
|
||||
(defun epg-start-verify (context signature &optional signed-text)
|
||||
@ -2203,7 +2203,7 @@ Otherwise, it makes a cleartext signature."
|
||||
(epg-read-output context))
|
||||
(epg-delete-output-file context)
|
||||
(if input-file
|
||||
(delete-file input-file t))
|
||||
(delete-file input-file))
|
||||
(epg-reset context))))
|
||||
|
||||
(defun epg-start-encrypt (context plain recipients
|
||||
@ -2323,7 +2323,7 @@ If RECIPIENTS is nil, it performs symmetric encryption."
|
||||
(epg-read-output context))
|
||||
(epg-delete-output-file context)
|
||||
(if input-file
|
||||
(delete-file input-file t))
|
||||
(delete-file input-file))
|
||||
(epg-reset context))))
|
||||
|
||||
(defun epg-start-export-keys (context keys)
|
||||
|
@ -101,7 +101,7 @@
|
||||
(eshell-redisplay))
|
||||
(let ((truth (eval command)))
|
||||
(with-current-buffer test-buffer
|
||||
(delete-backward-char 6)
|
||||
(delete-char -6)
|
||||
(insert-before-markers
|
||||
"[" (let (str)
|
||||
(if truth
|
||||
|
@ -404,7 +404,7 @@ With prefix ARG, insert output into the current buffer at point."
|
||||
(assert (not (eshell-interactive-process)))
|
||||
(goto-char (point-max))
|
||||
(while (and (bolp) (not (bobp)))
|
||||
(delete-backward-char 1)))
|
||||
(delete-char -1)))
|
||||
(assert (and buf (buffer-live-p buf)))
|
||||
(unless arg
|
||||
(let ((len (if (not intr) 2
|
||||
|
@ -368,7 +368,7 @@ See `expand-add-abbrevs'. Value is non-nil if expansion was done."
|
||||
nil))
|
||||
|
||||
(defun expand-do-expansion ()
|
||||
(delete-backward-char (length last-abbrev-text))
|
||||
(delete-char (- (length last-abbrev-text)))
|
||||
(let* ((vect (symbol-value last-abbrev))
|
||||
(text (aref vect 0))
|
||||
(position (aref vect 1))
|
||||
|
@ -526,15 +526,27 @@ name."
|
||||
(let* ((opoint (point))
|
||||
(color-values (color-values (car color)))
|
||||
(light-p (>= (apply 'max color-values)
|
||||
(* (car (color-values "white")) .5))))
|
||||
(* (car (color-values "white")) .5)))
|
||||
(max-len (max (- (window-width) 33) 20)))
|
||||
(insert (car color))
|
||||
(indent-to 22)
|
||||
(put-text-property opoint (point) 'face `(:background ,(car color)))
|
||||
(put-text-property
|
||||
(prog1 (point)
|
||||
(insert " " (if (cdr color)
|
||||
(mapconcat 'identity (cdr color) ", ")
|
||||
(car color))))
|
||||
(insert " ")
|
||||
(if (cdr color)
|
||||
;; Insert as many color names as possible, fitting max-len.
|
||||
(let ((names (list (car color)))
|
||||
(others (cdr color))
|
||||
(len (length (car color)))
|
||||
newlen)
|
||||
(while (and others
|
||||
(< (setq newlen (+ len 2 (length (car others))))
|
||||
max-len))
|
||||
(setq len newlen)
|
||||
(push (pop others) names))
|
||||
(insert (mapconcat 'identity (nreverse names) ", ")))
|
||||
(insert (car color))))
|
||||
(point)
|
||||
'face (list :foreground (car color)))
|
||||
(indent-to (max (- (window-width) 8) 44))
|
||||
|
@ -574,6 +574,9 @@ Runs the usual ange-ftp hook, but only for completion operations."
|
||||
(inhibit-file-name-operation op))
|
||||
(apply op args))))
|
||||
|
||||
(declare-function dos-convert-standard-filename "dos-fns.el" (filename))
|
||||
(declare-function w32-convert-standard-filename "w32-fns.el" (filename))
|
||||
|
||||
(defun convert-standard-filename (filename)
|
||||
"Convert a standard file's name to something suitable for the OS.
|
||||
This means to guarantee valid names and perhaps to canonicalize
|
||||
@ -591,15 +594,20 @@ and also turn slashes into backslashes if the shell requires it (see
|
||||
`w32-shell-dos-semantics').
|
||||
|
||||
See Info node `(elisp)Standard File Names' for more details."
|
||||
(if (eq system-type 'cygwin)
|
||||
(let ((name (copy-sequence filename))
|
||||
(start 0))
|
||||
;; Replace invalid filename characters with !
|
||||
(while (string-match "[?*:<>|\"\000-\037]" name start)
|
||||
(aset name (match-beginning 0) ?!)
|
||||
(setq start (match-end 0)))
|
||||
name)
|
||||
filename))
|
||||
(cond
|
||||
((eq system-type 'cygwin)
|
||||
(let ((name (copy-sequence filename))
|
||||
(start 0))
|
||||
;; Replace invalid filename characters with !
|
||||
(while (string-match "[?*:<>|\"\000-\037]" name start)
|
||||
(aset name (match-beginning 0) ?!)
|
||||
(setq start (match-end 0)))
|
||||
name))
|
||||
((eq system-type 'windows-nt)
|
||||
(w32-convert-standard-filename filename))
|
||||
((eq system-type 'ms-dos)
|
||||
(dos-convert-standard-filename filename))
|
||||
(t filename)))
|
||||
|
||||
(defun read-directory-name (prompt &optional dir default-dirname mustmatch initial)
|
||||
"Read directory name, prompting with PROMPT and completing in directory DIR.
|
||||
@ -4627,16 +4635,17 @@ or multiple mail buffers, etc."
|
||||
(force-mode-line-update))))
|
||||
|
||||
(defun make-directory (dir &optional parents)
|
||||
"Create the directory DIR and any nonexistent parent dirs.
|
||||
If DIR already exists as a directory, signal an error, unless PARENTS is set.
|
||||
"Create the directory DIR and optionally any nonexistent parent dirs.
|
||||
If DIR already exists as a directory, signal an error, unless
|
||||
PARENTS is non-nil.
|
||||
|
||||
Interactively, the default choice of directory to create
|
||||
is the current default directory for file names.
|
||||
That is useful when you have visited a file in a nonexistent directory.
|
||||
Interactively, the default choice of directory to create is the
|
||||
current buffer's default directory. That is useful when you have
|
||||
visited a file in a nonexistent directory.
|
||||
|
||||
Noninteractively, the second (optional) argument PARENTS says whether
|
||||
to create parent directories if they don't exist. Interactively,
|
||||
this happens by default."
|
||||
Noninteractively, the second (optional) argument PARENTS, if
|
||||
non-nil, says whether to create parent directories that don't
|
||||
exist. Interactively, this happens by default."
|
||||
(interactive
|
||||
(list (read-file-name "Make directory: " default-directory default-directory
|
||||
nil nil)
|
||||
@ -4665,21 +4674,32 @@ this happens by default."
|
||||
|
||||
(defconst directory-files-no-dot-files-regexp
|
||||
"^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
|
||||
"Regexp of file names excluging \".\" an \"..\".")
|
||||
"Regexp matching any file name except \".\" and \"..\".")
|
||||
|
||||
(defun delete-directory (directory &optional recursive)
|
||||
(defun delete-directory (directory &optional recursive trash)
|
||||
"Delete the directory named DIRECTORY. Does not follow symlinks.
|
||||
If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
|
||||
If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well.
|
||||
TRASH non-nil means to trash the directory instead, provided
|
||||
`delete-by-moving-to-trash' is non-nil.
|
||||
|
||||
When called interactively, TRASH is t if no prefix argument is
|
||||
given. With a prefix argument, TRASH is nil."
|
||||
(interactive
|
||||
(let ((dir (expand-file-name
|
||||
(read-file-name
|
||||
"Delete directory: "
|
||||
default-directory default-directory nil nil))))
|
||||
(let* ((trashing (and delete-by-moving-to-trash
|
||||
(null current-prefix-arg)))
|
||||
(dir (expand-file-name
|
||||
(read-file-name
|
||||
(if trashing
|
||||
"Move directory to trash: "
|
||||
"Delete directory: ")
|
||||
default-directory default-directory nil nil))))
|
||||
(list dir
|
||||
(if (directory-files dir nil directory-files-no-dot-files-regexp)
|
||||
(y-or-n-p
|
||||
(format "Directory `%s' is not empty, really delete? " dir))
|
||||
nil))))
|
||||
(format "Directory `%s' is not empty, really %s? "
|
||||
dir (if trashing "trash" "delete")))
|
||||
nil)
|
||||
(null current-prefix-arg))))
|
||||
;; If default-directory is a remote directory, make sure we find its
|
||||
;; delete-directory handler.
|
||||
(setq directory (directory-file-name (expand-file-name directory)))
|
||||
@ -4687,7 +4707,7 @@ If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
|
||||
(cond
|
||||
(handler
|
||||
(funcall handler 'delete-directory directory recursive))
|
||||
(delete-by-moving-to-trash
|
||||
((and delete-by-moving-to-trash trash)
|
||||
;; Only move non-empty dir to trash if recursive deletion was
|
||||
;; requested. This mimics the non-`delete-by-moving-to-trash'
|
||||
;; case, where the operation fails in delete-directory-internal.
|
||||
@ -4707,8 +4727,8 @@ If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
|
||||
;; (and (file-directory-p fn) (not (file-symlink-p fn)))
|
||||
;; but more efficient
|
||||
(if (eq t (car (file-attributes file)))
|
||||
(delete-directory file recursive)
|
||||
(delete-file file)))
|
||||
(delete-directory file recursive nil)
|
||||
(delete-file file nil)))
|
||||
;; We do not want to delete "." and "..".
|
||||
(directory-files
|
||||
directory 'full directory-files-no-dot-files-regexp)))
|
||||
|
@ -76,6 +76,7 @@
|
||||
(tex . "supporting code for the TeX formatter")
|
||||
(tools . "programming tools")
|
||||
(unix . "front-ends/assistants for, or emulators of, UNIX-like features")
|
||||
(vc . "version control")
|
||||
(wp . "word processing")
|
||||
))
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user