diff --git a/.dir-locals.el b/.dir-locals.el index 5bee88267c8..203343f0842 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -7,7 +7,8 @@ ;; See admin/notes/bugtracker. (log-edit-mode . ((log-edit-rewrite-fixes "[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1") - (log-edit-font-lock-gnu-style . t))) + (log-edit-font-lock-gnu-style . t) + (log-edit-setup-add-author . t))) (change-log-mode . ((add-log-time-zone-rule . t) (fill-column . 74) (bug-reference-url-format . "http://debbugs.gnu.org/%s") diff --git a/ChangeLog b/ChangeLog index 30c87c3e613..6183719e98c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,90 @@ +2013-12-01 Dmitry Gutov + + * .dir-locals.el (log-edit-move): Add the "Author: " header. + +2013-11-30 Dani Moncayo + + * build-aux/msys-to-w32 (w32pathlist): Do not translate paths + starting with %emacs_dir%. + +2013-11-30 Glenn Morris + + Stop keeping (most) generated cedet grammar files in the repository. + * configure.ac (SUBDIR_MAKEFILES, AC_CONFIG_FILES): + Add admin/grammars Makefile. + * Makefile.in (distclean, bootstrap-clean, maintainer-clean): + Also clean admin/grammars, if present. + +2013-11-29 Dani Moncayo + + * Makefile.in (epaths-force-w32): Fix 2013-11-20 typo. + +2013-11-29 Stefan Monnier + + * configure.ac (HAVE_MENUS): Remove. + +2013-11-28 Glenn Morris + + * configure.ac (PATH_SEP): Replace with pre-existing SEPCHAR. + +2013-11-28 Eli Zaretskii + + * GNUmakefile (Makefile): Don't use $(CFG). + (CFG): Don't compute. + + * configure.ac (PATH_SEP): Set and AC_SUBST. + +2013-11-27 Paul Eggert + + Merge from gnulib, incorporating: + 2013-11-13 getgroups: work around _DARWIN_C_SOURCE problem + * lib/getgroups.c: Update from gnulib. + +2013-11-27 Glenn Morris + + Move ja-dic, quail, leim-list.el from leim to lisp/leim. + * Makefile.in (abs_builddir, leimdir): Remove. + (buildlisppath, SUBDIR, COPYDIR, COPYDESTS): No more leim directory. + (epaths-force-w32): No longer set BLD. + (leim): Remove. + (install-arch-indep): No longer run or install leim. + (mostlyclean, clean): No longer run leim rule. + (bootstrap-clean): Change leim target. + (maintainer-clean): Add leim. + (check-declare): Remove leim. + * README: Update for leim changes. + * configure.ac (leimdir): Remove. + (standardlisppath): No more leimdir. + + * make-dist: Update for files from leim/ now being in lisp/leim/. + +2013-11-26 Glenn Morris + + Preload leim-list.el. + * Makefile.in (abs_builddir): New, set by configure. + (buildlisppath): Add leim/. + (epaths-force-w32): Set BLD. + +2013-11-21 Paul Eggert + + Fix some dependency problems that cause unnecessary recompiles. + * configure.ac (OLDXMENU_TARGET, OLDXMENU, OLDXMENU_DEPS): + Remove. + (LIBXMENU): Now is always either empty or a file name, + so that it can be used as a dependency. + +2013-11-20 Glenn Morris + + * make-dist: Distribute build-aux/msys-to-w32. + +2013-11-20 Dani Moncayo + + * build-aux/msys-to-w32: New file. + * Makefile.in (msys_to_w32, msys_lisppath_to_w32): Remove. + (msys_w32prefix_subst): Rename from msys_prefix_subst. + Operate on w32prefixpattern. + (epaths-force-w32): Use build-aux/msys-to-w32. + 2013-11-17 Paul Eggert * configure.ac (DEBUGGER_SEES_C_MACROS): Remove. diff --git a/GNUmakefile b/GNUmakefile index 25c586d8356..856b47ca992 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -32,12 +32,6 @@ # run "configure" by hand. But run autogen.sh first, if the source # was checked out directly from the repository. -ifneq ($(MSYSTEM),) -CFG = CONFIG_SITE=$(CURDIR)/nt/mingw-cfg.site -else -CFG = -endif - # If a Makefile already exists, just use it. ifeq ($(wildcard Makefile),Makefile) @@ -75,7 +69,7 @@ configure: Makefile: configure @echo >&2 'There seems to be no Makefile in this directory.' @echo >&2 'Running ./configure ...' - $(CFG) ./configure + ./configure @echo >&2 'Makefile built.' endif diff --git a/Makefile.in b/Makefile.in index e00eb790d66..aedb9acff0d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -48,6 +48,8 @@ # # make extraclean # Still more severe - delete backup and autosave files, too. +# Also generated files that do not normally change and can be slow +# to rebuild (eg leim/ja-dic). # # make bootstrap # Removes all the compiled files to force a new bootstrap from a @@ -190,15 +192,13 @@ iconsrcdir=$(srcdir)/etc/images/icons # These variables hold the values Emacs will actually use. They are # based on the values of the standard Make variables above. -# Where to install the lisp, leim files distributed with -# Emacs. This includes the Emacs version, so that the -# lisp files for different versions of Emacs will install -# themselves in separate directories. +# Where to install the lisp files distributed with Emacs. +# This includes the Emacs version, so that the lisp files for different +# versions of Emacs will install themselves in separate directories. lispdir=@lispdir@ -leimdir=@leimdir@ # Directories Emacs should search for standard lisp files. -# The default is ${lispdir}:${leimdir}. +# The default is ${lispdir}. standardlisppath=@standardlisppath@ # Directories Emacs should search for lisp files specific to this @@ -213,12 +213,13 @@ locallisppath=@locallisppath@ # The default is ${locallisppath}:${standardlisppath}. lisppath=@lisppath@ -# Where Emacs will search for its lisp files while -# building. This is only used during the process of -# compiling Emacs, to help Emacs find its lisp files -# before they've been installed in their final location. +# Where Emacs will search for its lisp files while building. +# This is only used during the process of compiling Emacs, +# to help Emacs find its lisp files before they've been installed +# in their final location. # This should be a colon-separated list of directories. # Normally it points to the lisp/ directory in the sources. +# NB lread.c relies on lisp/ being first here. buildlisppath=${abs_srcdir}/lisp # Where to install the other architecture-independent @@ -274,7 +275,7 @@ EMACS = ${EMACS_NAME}${EXEEXT} EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT} # Subdirectories to make recursively. -SUBDIR = $(NTDIR) lib lib-src src lisp leim +SUBDIR = $(NTDIR) lib lib-src src lisp # The subdir makefiles created by config.status. SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@ @@ -283,10 +284,9 @@ SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'` # Subdirectories to install, and where they'll go. lib-src's and nt's # makefiles know how to install them, so we don't do that here. # Directories that cannot simply be copied, eg info, are treated -# separately. quail appears twice because in out-of-tree builds, it -# exists twice. -COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/leim/ja-dic ${srcdir}/leim/quail leim/quail -COPYDESTS = "$(DESTDIR)${etcdir}" "$(DESTDIR)${lispdir}" "$(DESTDIR)${leimdir}/ja-dic" "$(DESTDIR)${leimdir}/quail" "$(DESTDIR)${leimdir}/quail" +# separately. +COPYDIR = ${srcdir}/etc ${srcdir}/lisp +COPYDESTS = "$(DESTDIR)${etcdir}" "$(DESTDIR)${lispdir}" all: ${SUBDIR} @@ -317,22 +317,9 @@ epaths-force: FRC -e 's;\(#.*PATH_DOC\).*$$;\1 "${etcdocdir}";') && \ ${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h -# Convert MSYS-style /x/foo or Windows-style x:\foo file names -# into x:/foo that Windows can grok. -msys_to_w32=sed -e 's,\\\\,/,g' -e 's,^/\([A-Za-z]\)/,\1:/,' - -# Transform directory search path and its components. Original can -# be MSYS or Windows style. Set path separator to ";", directory -# separator to "/" and transform MSYS-style "/c/" to "c:/". -# Remove empty path components and escape semicolons. -msys_lisppath_to_w32=sed -e 's,\\\\,/,g' \ - -e 's,\(^\|[:;]\)\([A-Za-z]\):/,\1/\2/,g' \ - -e 's/:/;/g' -e 's,\(^\|;\)/\([A-Za-z]\)/,\1\2:/,g' \ - -e 's/;\+/;/g' -e 's/^;//' -e 's/;$$//' -e 's/;/\\\\;/g' - -# Replace "${prefix}" with '%emacs_dir%' (which expands to install +# Replace "${w32prefix}" with '%emacs_dir%' (which expands to install # directory at runtime). -msys_prefix_subst=sed -e 's!\(^\|;\)'"$${prefixpattern}"'\([;/]\|$$\)!\1%emacs_dir%\2!g' +msys_w32prefix_subst=sed -e 's!\(^\|;\)'"$${w32prefixpattern}"'\([;/]\|$$\)!\1%emacs_dir%\2!g' # Quote Sed special characters (except backslash and newline) with # a double backslash. @@ -340,22 +327,21 @@ msys_sed_sh_escape=sed -e 's/[];$$*.^[]/\\\\&/g' # The w32 build needs a slightly different editing, and it uses # nt/epaths.nt as the template. +# # Use the value of ${locallisppath} supplied by `configure', # to support the --enable-locallisppath argument. # -# When building with MinGW inside the MSYS tree, 'pwd' produces directories -# relative to the root of the MSYS tree, e.g. '/home/user/foo' instead of -# '/d/MSYS/home/user/foo'. If such a value of srcdir is written to -# src/epaths.h, that causes temacs to fail, because, being a MinGW -# program that knows nothing of MSYS root substitution, it cannot find -# the data directory. "pwd -W" produces Windows-style 'd:/foo/bar' -# absolute directory names, so we use it here to countermand that lossage. +# In this case, the paths written to 'src/epaths.h' must be in native +# MS-Windows format (e.g. 'c:/foo/bar'), because temacs is a MinGW +# program that doesn't support MSYS-style paths (e.g. '/c/foo/bar' or +# '/foo/bar'). epaths-force-w32: FRC - @(w32srcdir=`cd "${srcdir}" && pwd -W` ; \ - prefixpattern=`echo '${prefix}' | ${msys_to_w32} | ${msys_sed_sh_escape}` ; \ - locallisppath=`echo '${locallisppath}' | ${msys_lisppath_to_w32} | ${msys_prefix_subst}` ; \ + @(w32srcdir=`${srcdir}/build-aux/msys-to-w32 "${srcdir}"`; \ + w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}" N`; \ + w32prefixpattern=`echo "$${w32prefix}" | ${msys_sed_sh_escape}` ; \ + w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" N ":" "\\;" | ${msys_w32prefix_subst}` ; \ sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$ \ - -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${locallisppath}"'";' \ + -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath}"'";' \ -e '/^.*#/s/@VER@/${version}/g' \ -e '/^.*#/s/@CFG@/${configuration}/g' \ -e "/^.*#/s|@SRC@|$${w32srcdir}|g") && \ @@ -369,12 +355,11 @@ lib-src src: $(NTDIR) lib src: lib-src -# We need to build `emacs' in `src' to compile the *.elc files in `lisp' -# and `leim'. -lisp leim: src +# We need to build `emacs' in `src' to compile the *.elc files in `lisp'. +lisp: src # These targets should be "${SUBDIR} without `src'". -lib lib-src lisp leim nt: Makefile FRC +lib lib-src lisp nt: Makefile FRC cd $@ && $(MAKE) all $(MFLAGS) \ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' @@ -561,9 +546,12 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## Note that the Makefiles in the etc directory are potentially useful ## in an installed Emacs, so should not be excluded. -## We used to create locallisppath, but if it points to non-standard -## locations, is not really Emacs's job to create these directories, -## so it is no longer done. +## We always create the _default_ locallisppath directories, and +## ensure that they contain a subdirs.el file (via write_subdir). +## This is true even if locallisppath has a non-default value. +## In case of non-default value, we used to create the specified directories, +## but not add subdirs.el to them. This was a strange halfway house. +## Nowadays we do not create non-default directories. ## Note that we use tar instead of plain old cp -R/-r because the latter ## is apparently not portable (even in 2012!). @@ -572,7 +560,7 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## work correctly, and therefore no idea when tar can be replaced. ## See also these comments from 2004 about cp -r working fine: ## http://lists.gnu.org/archive/html/autoconf-patches/2004-11/msg00005.html -install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} +install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} -set ${COPYDESTS} ; \ unset CDPATH; \ $(set_installuser); \ @@ -584,13 +572,8 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR [ "$$exp_dest" = "`cd $${dir} && /bin/pwd`" ] && continue ; \ else true; \ fi; \ - if [ "$${dir}" = "leim/quail" ]; then \ - [ "`cd $${dir} && /bin/pwd`" = "`cd ${srcdir}/leim/quail && /bin/pwd`" ] && \ - continue ; \ - else \ - rm -rf "$${dest}" ; \ - umask 022; ${MKDIR_P} "$${dest}" ; \ - fi ; \ + rm -rf "$${dest}" ; \ + umask 022; ${MKDIR_P} "$${dest}" ; \ echo "Copying $${dir} to $${dest}..." ; \ (cd $${dir}; tar -chf - . ) \ | (cd "$${dest}"; umask 022; \ @@ -617,8 +600,6 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR done ); \ find "$${dest}" -exec chown $${installuser} {} ';' ;\ done - -rm -f "$(DESTDIR)${leimdir}/leim-list.el" - ${INSTALL_DATA} leim/leim-list.el "$(DESTDIR)${leimdir}/leim-list.el" -rm -f "$(DESTDIR)${lispdir}/subdirs.el" umask 022; $(srcdir)/build-aux/update-subdirs "$(DESTDIR)${lispdir}" subdir="$(DESTDIR)${datadir}/emacs/${version}/site-lisp" ; \ @@ -629,7 +610,7 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR ( echo "Compressing *.el ..." ; \ unset CDPATH; \ thisdir=`/bin/pwd`; \ - for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${leimdir}"; do \ + for dir in "$(DESTDIR)${lispdir}"; do \ cd "$${thisdir}" ; \ cd "$${dir}" || exit 1 ; \ for f in `find . -name "*.elc" -print`; do \ @@ -826,7 +807,6 @@ mostlyclean: FRC -cd doc/misc && $(MAKE) $(MFLAGS) mostlyclean -cd doc/lispref && $(MAKE) $(MFLAGS) mostlyclean -cd doc/lispintro && $(MAKE) $(MFLAGS) mostlyclean - cd leim && $(MAKE) $(MFLAGS) mostlyclean ### `clean' ### Delete all files from the current directory that are normally @@ -848,7 +828,6 @@ clean: FRC -cd doc/misc && $(MAKE) $(MFLAGS) clean -cd doc/lispref && $(MAKE) $(MFLAGS) clean -cd doc/lispintro && $(MAKE) $(MFLAGS) clean - cd leim && $(MAKE) $(MFLAGS) clean cd nextstep && $(MAKE) $(MFLAGS) clean ### `bootclean' @@ -878,7 +857,7 @@ distclean: FRC cd leim && $(MAKE) $(MFLAGS) distclean cd lisp && $(MAKE) $(MFLAGS) distclean cd nextstep && $(MAKE) $(MFLAGS) distclean - for dir in test/automated admin/unidata; do \ + for dir in test/automated admin/grammars admin/unidata; do \ [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) distclean); \ done ${top_distclean} @@ -897,10 +876,10 @@ bootstrap-clean: FRC -cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean -cd doc/lispref && $(MAKE) $(MFLAGS) maintainer-clean -cd doc/lispintro && $(MAKE) $(MFLAGS) maintainer-clean - cd leim && $(MAKE) $(MFLAGS) maintainer-clean + cd leim && $(MAKE) $(MFLAGS) bootstrap-clean cd lisp && $(MAKE) $(MFLAGS) bootstrap-clean cd nextstep && $(MAKE) $(MFLAGS) maintainer-clean - for dir in test/automated admin/unidata; do \ + for dir in test/automated admin/grammars admin/unidata; do \ [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) bootstrap-clean); \ done [ ! -f config.log ] || mv -f config.log config.log~ @@ -922,8 +901,9 @@ top_maintainer_clean=\ rm -fr autom4te.cache maintainer-clean: bootstrap-clean FRC cd src && $(MAKE) $(MFLAGS) maintainer-clean + cd leim && $(MAKE) $(MFLAGS) maintainer-clean cd lisp && $(MAKE) $(MFLAGS) maintainer-clean - for dir in test/automated admin/unidata; do \ + for dir in test/automated admin/grammars admin/unidata; do \ [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) maintainer-clean); \ done ${top_maintainer_clean} @@ -1088,5 +1068,4 @@ check-declare: echo "You must build Emacs to use this command"; \ exit 1; \ fi - cd leim && $(MAKE) $(MFLAGS) $@ cd lisp && $(MAKE) $(MFLAGS) $@ diff --git a/README b/README index ebd07eaaa3d..d909962237c 100644 --- a/README +++ b/README @@ -64,9 +64,10 @@ There are several subdirectories: its primitives, the redisplay code, and some basic editing functions). `lisp' holds the Emacs Lisp code for Emacs (most everything else). -`leim' holds the library of Emacs input methods, Lisp code and - auxiliary data files required to type international characters - which can't be directly produced by your keyboard. +`leim' holds the original source files for the generated files + in lisp/leim. These form the library of Emacs input methods, + required to type international characters that can't be + directly produced by your keyboard. `lib' holds source code for libraries used by Emacs and its utilities `lib-src' holds the source code for some utility programs for use by or with Emacs, like movemail and etags. diff --git a/admin/ChangeLog b/admin/ChangeLog index b8fdf09ddff..730253e616f 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,51 @@ +2013-12-04 Eli Zaretskii + + * unidata/unidata-gen.el (unidata-prop-alist): Update bidi-class + to include the new isolate-related classes introduced with Unicode + v6.3. + (unidata-encode-val): Accept an additional optional argument, a + warning message to emit when UnicodeData.txt defines bidi-class + values that are not in unidata-prop-alist. Add a comment + explaining what should maintainers do if/when such a warning ever + appears. + (unidata-gen-table): Call unidata-encode-val with 3rd arg non-nil + when generating uni-bidi.el. + +2013-12-01 Glenn Morris + + * unidata/Makefile.in (${DSTDIR}/charprop.el): + Ensure output files are writable. + +2013-11-30 Glenn Morris + + * grammars/Makefile.in: Ensure output files are writable. + +2013-11-30 Eli Zaretskii + + * charsets/mule-charsets.el: Rewritten to work in Emacs 23 and + later. (Bug#16007) + +2013-11-30 Glenn Morris + + Stop keeping (most) generated cedet grammar files in the repository. + * grammars/README: Remove. + * grammars/Makefile.in: New file. + * grammars/c.by, grammars/java-tags.wy, grammars/js.wy: + * grammars/python.wy: Update declarations to match generated outputs. + +2013-11-28 Glenn Morris + + * unidata/unidata-gen.el (unidata-gen-files): + Disable autoloads in generated files. + +2013-11-27 Glenn Morris + + * unidata/Makefile.in (all, install, clean, bootstrap-clean) + (distclean, maintainer-clean): Declare as PHONY. + (compile, extraclean): New. + (${DSTDIR}/charprop.el): Depend on source files rather than + intermediate products. + 2013-11-11 Glenn Morris * unidata/BidiMirroring.txt, unidata/UnicodeData.txt: Update to 6.3.0. diff --git a/admin/charsets/mule-charsets.el b/admin/charsets/mule-charsets.el index 4a48d994b1b..4ccf4bfb5be 100644 --- a/admin/charsets/mule-charsets.el +++ b/admin/charsets/mule-charsets.el @@ -19,20 +19,32 @@ ;; along with GNU Emacs. If not, see . -(if (not (or (and (= emacs-major-version 21) (= emacs-minor-version 4)) - (= emacs-major-version 22))) - (error "Use Emacs of version 21.4 or any of version 22")) +;; For the record: the old, pre-v23 code was this: +;; (if (not (or (and (= emacs-major-version 21) (= emacs-minor-version 4)) +;; (= emacs-major-version 22))) +;; (error "Use Emacs of version 21.4 or any of version 22")) +;; +;; (defun func (start end) +;; (while (<= start end) +;; (let ((split (split-char start)) +;; (unicode (encode-char start 'ucs))) +;; (if unicode +;; (if (nth 2 split) +;; (insert (format "0x%02X%02X 0x%04X\n" +;; (nth 1 split) (nth 2 split) unicode)) +;; (insert (format "0x%02X 0x%04X\n" (nth 1 split) unicode))))) +;; (setq start (1+ start)))) -(defun func (start end) - (while (<= start end) - (let ((split (split-char start)) - (unicode (encode-char start 'ucs))) - (if unicode - (if (nth 2 split) - (insert (format "0x%02X%02X 0x%04X\n" - (nth 1 split) (nth 2 split) unicode)) - (insert (format "0x%02X 0x%04X\n" (nth 1 split) unicode))))) - (setq start (1+ start)))) +(defun func (range charset) + (let ((start (car range)) + (end (cdr range))) + (while (and (<= start end) (<= start #x10ffff)) + (let ((ch (encode-char start charset))) + (if ch + (if (> ch 256) + (insert (format "0x%04X 0x%04X\n" ch start)) + (insert (format "0x%02X 0x%04X\n" ch start))))) + (setq start (1+ start))))) (defconst charset-alist '(("MULE-ethiopic.map" . ethiopic) @@ -51,6 +63,8 @@ (dolist (elt charset-alist) (with-temp-buffer (insert header) - (map-charset-chars 'func (cdr elt)) - (write-file (car elt)))) + (map-charset-chars 'func (cdr elt) (cdr elt)) + (sort-lines nil (point-min) (point-max)) + (let ((coding-system-for-write 'unix)) + (write-file (car elt))))) diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in new file mode 100644 index 00000000000..e279dad3e57 --- /dev/null +++ b/admin/grammars/Makefile.in @@ -0,0 +1,113 @@ +### @configure_input@ + +## Copyright (C) 2013 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 . + +### Commentary: + +## This directory contains grammar files in Bison and Wisent, +## used to generate the parser data in the lisp/cedet directory. + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ + +EMACS = ${top_builddir}/src/emacs +emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp + +make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser +make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser + +cedetdir = ${top_srcdir}/lisp/cedet +bovinedir = ${cedetdir}/semantic/bovine +wisentdir = ${cedetdir}/semantic/wisent + +BOVINE = \ + ${bovinedir}/c-by.el \ + ${bovinedir}/make-by.el \ + ${bovinedir}/scm-by.el + +## FIXME Should include this one too: +## ${cedetdir}/semantic/grammar-wy.el +## but semantic/grammar.el (which is what we use to generate grammar-wy.el) +## requires it! +WISENT = \ + ${wisentdir}/javat-wy.el \ + ${wisentdir}/js-wy.el \ + ${wisentdir}/python-wy.el \ + ${cedetdir}/srecode/srt-wy.el + +ALL = ${BOVINE} ${WISENT} + +.PHONY: all bovine wisent + +all: ${ALL} + +bovine: ${BOVINE} + +wisent: ${WISENT} + + +${bovinedir}/c-by.el: ${srcdir}/c.by + [ ! -f "$@" ] || chmod +w "$@" + ${make_bovine} -o "$@" ${srcdir}/c.by + +${bovinedir}/make-by.el: ${srcdir}/make.by + [ ! -f "$@" ] || chmod +w "$@" + ${make_bovine} -o "$@" ${srcdir}/make.by + +${bovinedir}/scm-by.el: ${srcdir}/scheme.by + [ ! -f "$@" ] || chmod +w "$@" + ${make_bovine} -o "$@" ${srcdir}/scheme.by + + +${cedetdir}/semantic/grammar-wy.el: ${srcdir}/grammar.wy + [ ! -f "$@" ] || chmod +w "$@" + ${make_wisent} -o "$@" ${srcdir}/grammar.wy + +${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy + [ ! -f "$@" ] || chmod +w "$@" + ${make_wisent} -o "$@" ${srcdir}/java-tags.wy + +${wisentdir}/js-wy.el: ${srcdir}/js.wy + [ ! -f "$@" ] || chmod +w "$@" + ${make_wisent} -o "$@" ${srcdir}/js.wy + +${wisentdir}/python-wy.el: ${srcdir}/python.wy + [ ! -f "$@" ] || chmod +w "$@" + ${make_wisent} -o "$@" ${srcdir}/python.wy + +${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy + [ ! -f "$@" ] || chmod +w "$@" + ${make_wisent} -o "$@" ${srcdir}/srecode-template.wy + + +.PHONY: distclean bootstrap-clean maintainer-clean extraclean + +distclean: + rm -f Makefile + +bootstrap-clean maintainer-clean: distclean + +## We do not normally delete the generated files, even in bootstrap. +## Creating them does not take long, so we could easily change this. +extraclean: + rm -f ${ALL} + +# Makefile.in ends here diff --git a/admin/grammars/README b/admin/grammars/README deleted file mode 100644 index e38260952a5..00000000000 --- a/admin/grammars/README +++ /dev/null @@ -1,11 +0,0 @@ -This directory contains grammar files in Bison and Wisent, used to -generate the parser data in the lisp/semantic/bovine/ and -lisp/semantic/wisent/ directories. You can run the parser generators -with - -emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers -emacs -batch -Q -l semantic/wisent/grammar -f wisent-make-parsers - -Currently, the parser files in lisp/ are not generated directly from -these grammar files when making Emacs. This state of affairs, and the -contents of this directory, will change in a future version of Emacs. diff --git a/admin/grammars/c.by b/admin/grammars/c.by index 5d2f407e8e3..55ec0fbaf01 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -41,9 +41,13 @@ %provide semantic/bovine/c-by %{ -(declare-function semantic-c-reconstitute-token "semantic/bovine/c") -(declare-function semantic-c-reconstitute-template "semantic/bovine/c") -(declare-function semantic-expand-c-tag "semantic/bovine/c") +(declare-function semantic-c-reconstitute-token "semantic/bovine/c" + (tokenpart declmods typedecl)) +(declare-function semantic-c-reconstitute-template "semantic/bovine/c" + (tag specifier)) +(declare-function semantic-expand-c-tag "semantic/bovine/c" (tag)) +(declare-function semantic-parse-region "semantic" + (start end &optional nonterminal depth returnonerror)) } %languagemode c-mode c++-mode diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy index 71607f452a0..3f5c3ad04c6 100644 --- a/admin/grammars/java-tags.wy +++ b/admin/grammars/java-tags.wy @@ -25,6 +25,11 @@ %package wisent-java-tags-wy %provide semantic/wisent/javat-wy +%{ +(declare-function semantic-parse-region "semantic" + (start end &optional nonterminal depth returnonerror)) +} + %languagemode java-mode ;; The default start symbol diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy index 3b602296552..a6a358a0ee7 100644 --- a/admin/grammars/js.wy +++ b/admin/grammars/js.wy @@ -59,6 +59,12 @@ %package wisent-javascript-jv-wy %provide semantic/wisent/js-wy + +%{ +(declare-function semantic-parse-region "semantic" + (start end &optional nonterminal depth returnonerror)) +} + ;; JAVE I prefere ecmascript-mode %languagemode ecmascript-mode javascript-mode diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy index 02fb7390b01..b82125d2bc3 100644 --- a/admin/grammars/python.wy +++ b/admin/grammars/python.wy @@ -91,8 +91,12 @@ %provide semantic/wisent/python-wy %{ -(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python") -(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python") +(declare-function wisent-python-reconstitute-function-tag + "semantic/wisent/python" (tag suite)) +(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python" + (tag)) +(declare-function semantic-parse-region "semantic" + (start end &optional nonterminal depth returnonerror)) } %languagemode python-mode diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index 4d947363514..2c65ee5b65f 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -31,6 +31,8 @@ EMACS = ${top_builddir}/src/emacs DSTDIR = ${top_srcdir}/lisp/international emacs = "${EMACS}" -batch --no-site-file --no-site-lisp +.PHONY: all compile install + all: ${DSTDIR}/charprop.el .el.elc: @@ -39,7 +41,16 @@ all: ${DSTDIR}/charprop.el unidata.txt: ${srcdir}/UnicodeData.txt sed -e 's/\([^;]*\);\(.*\)/(#x\1 "\2")/' -e 's/;/" "/g' < ${srcdir}/UnicodeData.txt > $@ -${DSTDIR}/charprop.el: ${srcdir}/unidata-gen.elc unidata.txt +compile: ${srcdir}/unidata-gen.elc + +## Depend on .el rather than .elc so as not to needlessly rebuild +## uni-*.el files just because .elc is missing. +## Same for UnicodeData.txt v unidata.txt. +${DSTDIR}/charprop.el: ${srcdir}/unidata-gen.el ${srcdir}/UnicodeData.txt + ${MAKE} ${MFLAGS} compile unidata.txt EMACS="${EMACS}" + -if [ -f "$@" ]; then \ + cd ${DSTDIR} && chmod +w charprop.el `sed -n 's/^;; FILE: //p' < charprop.el`; \ + fi ${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \ ${srcdir} "${DSTDIR}" @@ -48,6 +59,8 @@ charprop.el: ${srcdir}/unidata-gen.elc unidata.txt ${emacs} -L ${srcdir} -l unidata-gen -f unidata-gen-files \ ${srcdir} +.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean + install: charprop.el cp charprop.el ${DSTDIR} cp `sed -n 's/^;; FILE: //p' < charprop.el` ${DSTDIR} @@ -61,6 +74,15 @@ clean: bootstrap-clean: clean distclean: clean - -rm -f ./Makefile + rm -f Makefile maintainer-clean: distclean + +## Do not remove these files, even in a bootstrap, because they rarely +## change and it slows down bootstrap (a tiny bit). +## Cf leim/ja-dic (which is much slower). +extraclean: + if test -f ${DSTDIR}/charprop.el; then \ + (cd ${DSTDIR} && rm -f `sed -n 's/^;; FILE: //p' < charprop.el`); \ + rm -f ${DSTDIR}/charprop.el; \ + fi diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index dd667f9571d..fa8f81636e3 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -194,8 +194,8 @@ Property value is an integer." 4 unidata-gen-table-symbol "uni-bidi.el" "Unicode bidi class. Property value is one of the following symbols: - L, LRE, LRO, R, AL, RLE, RLO, PDF, EN, ES, ET, - AN, CS, NSM, BN, B, S, WS, ON" + L, LRE, LRO, LRI, R, AL, RLE, RLO, RLI, FSI, PDF, PDI, + EN, ES, ET, AN, CS, NSM, BN, B, S, WS, ON" unidata-describe-bidi-class ;; The assignment of default values to blocks of code points ;; follows the file DerivedBidiClass.txt from the Unicode @@ -205,7 +205,8 @@ Property value is one of the following symbols: (#xFB1D #xFB4F R) (#x10800 #x10FFF R) (#x1E800 #x1EFFF R)) ;; The order of elements must be in sync with bidi_type_t in ;; src/dispextern.h. - (L R EN AN BN B AL LRE LRO RLE RLO PDF ES ET CS NSM S WS ON)) + (L R EN AN BN B AL LRE LRO RLE RLO PDF LRI RLI FSI PDI + ES ET CS NSM S WS ON)) (decomposition 5 unidata-gen-table-decomposition "uni-decomposition.el" "Unicode decomposition mapping. @@ -397,12 +398,17 @@ is the character itself."))) ;; If VAL is one of VALn, just return n. ;; Otherwise, VAL-LIST is modified to this: ;; ((nil . 0) (VAL1 . 1) (VAL2 . 2) ... (VAL . n+1)) +;; +;; WARN is an optional warning to display when the value list is +;; extended, for property values that need to be in sync with other +;; parts of Emacs; currently only used for bidi-class. -(defun unidata-encode-val (val-list val) +(defun unidata-encode-val (val-list val &optional warn) (let ((slot (assoc val val-list)) val-code) (if slot (cdr slot) + (if warn (message warn val)) (setq val-code (length val-list)) (nconc val-list (list (cons val val-code))) val-code))) @@ -413,6 +419,16 @@ is the character itself."))) (let ((table (make-char-table 'char-code-property-table)) (prop-idx (unidata-prop-index prop)) (vec (make-vector 128 0)) + ;; When this warning is printed, there's a need to make the + ;; following changes: + ;; (1) update unidata-prop-alist with the new bidi-class values; + ;; (2) extend bidi_type_t enumeration on src/dispextern.h to + ;; include the new classes; + ;; (3) possibly update the assertion in bidi.c:bidi_check_type; and + ;; (4) possibly update the switch cases in + ;; bidi.c:bidi_get_type and bidi.c:bidi_get_category. + (bidi-warning "\ +** Found new bidi-class '%s', please update bidi.c and dispextern.h") tail elt range val val-code idx slot prev-range-data) (setq val-list (cons nil (copy-sequence val-list))) @@ -438,7 +454,9 @@ is the character itself."))) (setq elt (car tail) tail (cdr tail)) (setq range (car elt) val (funcall val-func (nth prop-idx elt))) - (setq val-code (if val (unidata-encode-val val-list val))) + (setq val-code (if val (unidata-encode-val val-list val + (and (eq prop 'bidi-class) + bidi-warning)))) (if (consp range) (when val-code (set-char-table-range table range val-code) @@ -486,7 +504,9 @@ is the character itself."))) (setq new-val (funcall val-func (nth prop-idx elt))) (if (not (eq val new-val)) (setq val new-val - val-code (if val (unidata-encode-val val-list val)))) + val-code (if val (unidata-encode-val + val-list val (and (eq prop 'bidi-class) + bidi-warning))))) (if val-code (aset vec (- range start) val-code)) (setq tail (cdr tail))) @@ -1241,6 +1261,7 @@ is the character itself."))) ";; coding: utf-8\n" ";; version-control: never\n" ";; no-byte-compile: t\n" + ";; no-update-autoloads: t\n" ";; End:\n\n" (format ";; %s ends here\n" basename))) (write-file file) @@ -1250,6 +1271,7 @@ is the character itself."))) ";; coding: utf-8\n" ";; version-control: never\n" ";; no-byte-compile: t\n" + ";; no-update-autoloads: t\n" ";; End:\n\n" (format ";; %s ends here\n" (file-name-nondirectory charprop-file)))))) diff --git a/build-aux/msys-to-w32 b/build-aux/msys-to-w32 new file mode 100755 index 00000000000..e9a06d76732 --- /dev/null +++ b/build-aux/msys-to-w32 @@ -0,0 +1,170 @@ +#!/bin/sh +# Take a list of MSYS-compatible paths and convert them to native +# MS-Windows format. +# Status is zero if successful, nonzero otherwise. + +# Copyright (C) 2013 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Take only the basename from the full pathname +me=${0//*\//} + +usage="usage: ${me} PATHLIST [MUSTEXIST] [SEPARATOR [SEPARATOR2]]" + +help="$usage + or: ${me} OPTION + +Convert MSYS-compatible paths to MS-Windows native format. + +PATHLIST should be a list of paths separated by SEPARATOR. This list +will be written to the standard output after performing the following +transformations: +1. Discard empty paths. +2. Replace backslashes with forward slashes. +3. Replace two consecutive slashes with single ones. +4. Translate to Windows-native format those paths that are not in such + format already. The translated paths will not end with a slash, + except for root directories (e.g. 'c:/' or 'c:/foo'). Paths + starting with '%emacs_dir%' will not be translated. +5. Escape with backslashes every occurrence of SEPARATOR2 within the paths. +6. Concatenate the translated paths with SEPARATOR2. + +If MUSTEXIST is 'Y' or not supplied, then each path in PATHLIST must +exist. Otherwise, only some part of each path is required to exist +(the deepest existing subpath will be translated and the remainder +concatenated to the translation). + +If SEPARATOR is not supplied, PATHLIST will be regarded as a single +path. + +If SEPARATOR2 is not supplied, it will take the same value as +SEPARATOR. + +Options: + --help display this help and exit + +Report bugs to ." + +for arg +do + case $arg in + --help | --hel | --he | --h) + exec echo "$help" ;; + --) + shift + break ;; + -*) + echo "${me}: invalid option: $arg" >&2 + exit 1 ;; + *) + break ;; + esac +done + +{ test $# -ge 1 && test $# -le 4; } || +{ echo "${me}: $usage" >&2; exit 1; } + +# Arguments +pathlist="$1" +mustexist="${2:-Y}" +separator="$3" +separator2="${4:-${separator}}" + +# Split pathlist into its path components +if test -n "$separator" +then + IFS=${separator} patharray=( $pathlist ) +else + patharray=( "$pathlist" ) +fi + +w32pathlist="" + +for p in "${patharray[@]}" +do + # Skip empty paths + test "$p" = "" && continue + + # Replace '\' with '/' and '//' with '/' + p="${p//\\//}" + p="${p//\/\///}" + + if test "${p:0:11}" = "%emacs_dir%" + then + # Paths starting with "%emacs_dir%" will not be translated + w32p=$p + elif test -d "$p" + then + # The path exists, so just translate it + w32p=`cd "$p" && pwd -W` + else + # The path does not exist. So, try to guess the + # Windows-native translation, by looking for the deepest + # existing directory in this path, and then translating the + # existing part and concatenating the remainder. + + test "${mustexist}" = "Y" && + { echo "${me}: invalid path: $p" >&2; exit 1; } + + p1=$p + IFS=/ pcomponents=( $p ) + + for (( i=${#pcomponents[@]}-1 ; i>=0 ; i-- )) + do + + if test "${pcomponents[i]}" = "" + then + # The path component is empty. This can only mean + # that the path starts with "/" and all components + # have been stripped out already. So in this case we + # want to test with the MSYS root directory + p1="/" + else + p1="${p1%/}" + p1="${p1%${pcomponents[i]}}" + fi + + if test -d "${p1}" + then + + # Existing path found + + # Translate the existing part and concatenate the + # remainder (ensuring that only one slash is used in + # the join, and no trailing slash is left) + w32p1=`cd "${p1}" && pwd -W` + remainder="${p#${p1}}" + remainder="${remainder#/}" + remainder="${remainder%/}" + w32p="${w32p1%/}/${remainder}" + + break + fi + + done + + # If no existing directory was found, error out + test -e "${p1}" || + { echo "${me}: invalid path: ${p}" >&2; exit 1; } + fi + + # Concatenate the translated path to the translated pathlist + test "${w32pathlist}" = "" || w32pathlist="${w32pathlist}${separator2}" + w32pathlist="${w32pathlist}${w32p//${separator2}/\\${separator2}}" + +done + +# Write the translated pathlist to the standard output +printf "%s" "${w32pathlist}" diff --git a/configure.ac b/configure.ac index a9baf608bf3..46ddb43635c 100644 --- a/configure.ac +++ b/configure.ac @@ -80,8 +80,7 @@ dnl hence the single quotes. This is per the GNU coding standards, see dnl (autoconf) Installation Directory Variables dnl See also epaths.h below. lispdir='${datadir}/emacs/${version}/lisp' -leimdir='${datadir}/emacs/${version}/leim' -standardlisppath='${lispdir}:${leimdir}' +standardlisppath='${lispdir}' locallisppath='${datadir}/emacs/${version}/site-lisp:'\ '${datadir}/emacs/site-lisp' lisppath='${locallisppath}:${standardlisppath}' @@ -1683,7 +1682,6 @@ if test "${HAVE_NS}" = yes; then infodir="\${ns_appresdir}/info" mandir="\${ns_appresdir}/man" lispdir="\${ns_appresdir}/lisp" - leimdir="\${ns_appresdir}/leim" INSTALL_ARCH_INDEP_EXTRA= fi @@ -1868,9 +1866,6 @@ to configure.]) fi fi -### We always support menus. -HAVE_MENUS=yes - # Does the opsystem file prohibit the use of the GNU malloc? # Assume not, until told otherwise. GNU_MALLOC=yes @@ -3837,12 +3832,22 @@ else AC_DEFINE(NULL_DEVICE, ["/dev/null"]) fi -AH_TEMPLATE(SEPCHAR, [Character that separates PATH elements.]) if test "${opsys}" = "mingw32"; then - AC_DEFINE(SEPCHAR, [';']) + SEPCHAR=';' else - AC_DEFINE(SEPCHAR, [':']) + SEPCHAR=':' fi +AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.]) +dnl This is for MinGW, and is used in test/automated/Makefile.in. +dnl The MSYS Bash has heuristics for replacing ':' with ';' when it +dnl decides that a command-line argument to be passed to a MinGW program +dnl is a PATH-style list of directories. But that heuristics plays it +dnl safe, and only does the replacement when it is _absolutely_ sure it +dnl sees a colon-separated list of file names; e.g. ":." is left alone, +dnl which breaks in-tree builds. So we do this manually instead. +dnl Note that we cannot rely on PATH_SEPARATOR, as that one will always +dnl be computed as ':' in MSYS Bash. +AC_SUBST(SEPCHAR) dnl Everybody supports this, except MS-DOS. AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.]) @@ -4490,7 +4495,6 @@ AC_SUBST(libexecdir) AC_SUBST(mandir) AC_SUBST(infodir) AC_SUBST(lispdir) -AC_SUBST(leimdir) AC_SUBST(standardlisppath) AC_SUBST(locallisppath) AC_SUBST(lisppath) @@ -4598,61 +4602,29 @@ AC_SUBST(TOOLKIT_LIBW) if test "${opsys}" != "mingw32"; then if test "$USE_X_TOOLKIT" = "none"; then LIBXT_OTHER="\$(LIBXSM)" - OLDXMENU_TARGET="really-oldXMenu" else LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" - OLDXMENU_TARGET="really-lwlib" fi fi AC_SUBST(LIBXT_OTHER) -## The X Menu stuff is present in the X10 distribution, but missing -## from X11. If we have X10, just use the installed library; -## otherwise, use our own copy. if test "${HAVE_X11}" = "yes" ; then AC_DEFINE(HAVE_X11, 1, - [Define to 1 if you want to use version 11 of X windows. - Otherwise, Emacs expects to use version 10.]) - - if test "$USE_X_TOOLKIT" = "none"; then - OLDXMENU="\${oldXMenudir}/libXMenu11.a" - else - OLDXMENU="\${lwlibdir}/liblw.a" - fi - LIBXMENU="\$(OLDXMENU)" + [Define to 1 if you want to use version 11 of X windows.]) LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" - OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" else - ## For a syntactically valid Makefile; not actually used for anything. - ## See comments in src/Makefile.in. - OLDXMENU=nothing - ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). - if test "${HAVE_X_WINDOWS}" = "yes"; then - LIBXMENU="-lXMenu" - else - LIBXMENU= - fi LIBX_OTHER= - OLDXMENU_DEPS= fi - -if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then - OLDXMENU_TARGET= - OLDXMENU=nothing - LIBXMENU= - OLDXMENU_DEPS= -fi - -AC_SUBST(OLDXMENU_TARGET) -AC_SUBST(OLDXMENU) -AC_SUBST(LIBXMENU) AC_SUBST(LIBX_OTHER) -AC_SUBST(OLDXMENU_DEPS) -if test "${HAVE_MENUS}" = "yes" ; then - AC_DEFINE(HAVE_MENUS, 1, - [Define to 1 if you have mouse menus. (This is supported in all configurations, but the option to specify it remains.)]) +if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then + LIBXMENU= +elif test "$USE_X_TOOLKIT" = none; then + LIBXMENU='$(oldXMenudir)/libXMenu11.a' +else + LIBXMENU='$(lwlibdir)/liblw.a' fi +AC_SUBST(LIBXMENU) if test "${GNU_MALLOC}" = "yes" ; then AC_DEFINE(GNU_MALLOC, 1, @@ -4999,13 +4971,12 @@ if test -f "$srcdir/$opt_makefile.in"; then fi -dnl admin/ may or may not be present. -opt_makefile=admin/unidata/Makefile - -if test -f "$srcdir/$opt_makefile.in"; then - SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile" +dnl The admin/ directory used to be excluded from tarfiles. +if test -d $srcdir/admin; then + SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile" AC_CONFIG_FILES([admin/unidata/Makefile]) -fi + AC_CONFIG_FILES([admin/grammars/Makefile]) +fi dnl -d admin SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 7f051e751e5..cf37ab25199 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,21 @@ +2013-11-30 Glenn Morris + + * Makefile.in (distclean): Remove Makefile. + +2013-11-29 Stefan Monnier + + * buffers.texi (Icomplete): Rename from Iswitchb and + rewrite accordingly. + +2013-11-23 Glenn Morris + + * cmdargs.texi (General Variables): + Empty elements in EMACSLOADPATH now mean the default load-path. + +2013-11-21 Glenn Morris + + * cmdargs.texi (Action Arguments): Use path-separator with -L. + 2013-11-04 Glenn Morris * cmdargs.texi (Action Arguments): Mention that `-L :...' appends. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index 9c4a90db4aa..527b2f7a77d 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -196,6 +196,7 @@ clean: mostlyclean rm -f emacs-manual-${version}.tar* distclean: clean + rm -f Makefile ## In the standalone tarfile, the clean rule runs this. infoclean: diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 2d3ff5b05d8..2fadb7b4910 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -598,7 +598,7 @@ convenient to switch between buffers. @menu * Uniquify:: Making buffer names unique with directory parts. -* Iswitchb:: Switching between buffers with substrings. +* Icomplete:: Fast minibuffer selection. * Buffer Menus:: Configurable buffer menu. @end menu @@ -641,39 +641,31 @@ buffer names before you type one. But as an experienced user, if you know the rule, you won't have to look. And then you may find that one rule or another is easier for you to remember and apply quickly. -@node Iswitchb -@subsection Switching Between Buffers using Substrings +@node Icomplete +@subsection Fast minibuffer selection -@findex iswitchb-mode -@cindex Iswitchb mode -@cindex mode, Iswitchb -@kindex C-x b @r{(Iswitchb mode)} -@kindex C-x 4 b @r{(Iswitchb mode)} -@kindex C-x 5 b @r{(Iswitchb mode)} -@kindex C-x 4 C-o @r{(Iswitchb mode)} +@findex icomplete-mode +@cindex Icomplete mode - Iswitchb global minor mode provides convenient switching between -buffers using substrings of their names. It replaces the normal -definitions of @kbd{C-x b}, @kbd{C-x 4 b}, @kbd{C-x 5 b}, and @kbd{C-x -4 C-o} with alternative commands that are somewhat ``smarter''. + Icomplete global minor mode provides a convenient way to quickly select an +element among the possible completions in a minibuffer. When enabled, typing +in the minibuffer continuously displays a list of possible completions that +match the string you have typed. - When one of these commands prompts you for a buffer name, you can -type in just a substring of the name you want to choose. As you enter -the substring, Iswitchb mode continuously displays a list of buffers -that match the substring you have typed. - - At any time, you can type @key{RET} to select the first buffer in -the list. So the way to select a particular buffer is to make it the + At any time, you can type @key{C-j} to select the first completion in +the list. So the way to select a particular completion is to make it the first in the list. There are two ways to do this. You can type more -of the buffer name and thus narrow down the list, excluding unwanted -buffers above the desired one. Alternatively, you can use @kbd{C-s} -and @kbd{C-r} to rotate the list until the desired buffer is first. +of the completion name and thus narrow down the list, excluding unwanted +completions above the desired one. Alternatively, you can use @kbd{C-.} +and @kbd{C-,} to rotate the list until the desired buffer is first. - @key{TAB} while entering the buffer name performs completion on the -string you have entered, based on the displayed list of buffers. + @key{M-TAB} will select the first completion in the list, like @key{C-j} but +without exiting the minibuffer, so you can edit it further. This is typically +used when entering a file name, where @key{M-TAB} can be used a few times to +descend in the hierarchy of directories. - To enable Iswitchb mode, type @kbd{M-x iswitchb-mode}, or customize -the variable @code{iswitchb-mode} to @code{t} (@pxref{Easy + To enable Icomplete mode, type @kbd{M-x icomplete-mode}, or customize +the variable @code{icomplete-mode} to @code{t} (@pxref{Easy Customization}). @node Buffer Menus diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index d0f5f1e06b1..4294f775e5e 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -10,6 +10,7 @@ @cindex switches (command line) @cindex startup (command line arguments) @cindex invocation (command line arguments) +@c FIXME: Document `--smid'? --xfq Emacs supports command line arguments to request various actions when invoking Emacs. These are for compatibility with other editors @@ -141,6 +142,8 @@ relative order; i.e., using @samp{-L /foo -L /bar} results in a @code{load-path} of the form @code{("/foo" "/bar" @dots{})}. If @var{dir} begins with @samp{:}, Emacs removes the @samp{:} and appends (rather than prepends) the remainder to @code{load-path}. +(On MS Windows, use @samp{;} instead of @samp{:}; i.e., use +the value of @code{path-separator}.) @item -f @var{function} @opindex -f @@ -452,13 +455,16 @@ This is used to initialize the variable @code{data-directory}. Directory for the documentation string file, which is used to initialize the Lisp variable @code{doc-directory}. @item EMACSLOADPATH -A colon-separated list of directories@footnote{ Here and below, +A colon-separated list of directories@footnote{Here and below, whenever we say ``colon-separated list of directories'', it pertains to Unix and GNU/Linux systems. On MS-DOS and MS-Windows, the directories are separated by semi-colons instead, since DOS/Windows -file names might include a colon after a drive letter.} to search for -Emacs Lisp files. If set, it overrides the usual initial value of the -@code{load-path} variable (@pxref{Lisp Libraries}). +file names might include a colon after a drive letter.} to search for +Emacs Lisp files. If set, it modifies the usual initial value of the +@code{load-path} variable (@pxref{Lisp Libraries}). An empty element +stands for the default value of @code{load-path}; e.g., using +@samp{EMACSLOADPATH="/tmp:"} adds @file{/tmp} to the front of +the default @code{load-path}. @item EMACSPATH A colon-separated list of directories to search for executable files. If set, Emacs uses this in addition to @env{PATH} (see below) when diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 68d431ac4bc..8d502645b3a 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -115,6 +115,7 @@ display editor. This manual describes how to edit with Emacs and some of the ways to customize it; it corresponds to GNU Emacs version @value{EMACSVER}. +@c See `manual-html-mono' and `manual-html-node' in admin/admin.el. @ifset WWW_GNU_ORG @html The homepage for GNU Emacs is at @@ -501,7 +502,7 @@ Using Multiple Buffers Convenience Features and Customization of Buffer Handling * Uniquify:: Making buffer names unique with directory parts. -* Iswitchb:: Switching between buffers with substrings. +* Icomplete:: Fast minibuffer selection. * Buffer Menus:: Configurable buffer menu. Multiple Windows diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index b2cb5ee3d3b..e45189ba1d0 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -2011,8 +2011,8 @@ highlighting (@pxref{Font Lock}). Unlike Enriched mode, Font Lock mode assigns text properties automatically, based on the current buffer contents; those properties are not saved to disk. - The file @file{etc/enriched.doc} in the Emacs distribution serves as -an example of the features of Enriched mode. + The file @file{enriched.txt} in Emacs's @code{data-directory} +serves as an example of the features of Enriched mode. @menu * Enriched Mode:: Entering and exiting Enriched mode. diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog index 2e6164968c3..f9cdeda17b6 100644 --- a/doc/lispintro/ChangeLog +++ b/doc/lispintro/ChangeLog @@ -1,3 +1,12 @@ +2013-12-02 Paul Eggert + + * emacs-lisp-intro.texi (Counting Words): Don't use ':' in xref + titles, as this isn't supported by Texinfo. + +2013-11-30 Glenn Morris + + * Makefile.in (distclean): Remove Makefile. + 2013-10-23 Glenn Morris * Makefile.in (install-dvi, install-html, install-pdf) diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in index 9a643c004ed..9fca51861dc 100644 --- a/doc/lispintro/Makefile.in +++ b/doc/lispintro/Makefile.in @@ -113,6 +113,7 @@ clean: mostlyclean rm -f emacs-lispintro-${version}.tar* distclean: clean + rm -f Makefile infoclean: -cd $(buildinfodir) && rm -f eintr$(INFO_EXT) eintr$(INFO_EXT)-[1-9] diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 84c9d905487..d05cf3ec866 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -13544,7 +13544,7 @@ regexps. @xref{the-the, , @code{the-the} Duplicated Words Function}. @end itemize @node Counting Words -@chapter Counting: Repetition and Regexps +@chapter Counting via Repetition and Regexps @cindex Repetition for word counting @cindex Regular expressions for word counting @@ -14428,7 +14428,7 @@ exclamation mark, and question mark. Do the same using recursion. Our next project is to count the number of words in a function definition. Clearly, this can be done using some variant of -@code{@value{COUNT-WORDS}}. @xref{Counting Words, , Counting Words: +@code{@value{COUNT-WORDS}}. @xref{Counting Words, , Counting via Repetition and Regexps}. If we are just going to count the words in one definition, it is easy enough to mark the definition with the @kbd{C-M-h} (@code{mark-defun}) command, and then call @@ -15602,7 +15602,7 @@ Let's write a function definition to do these tasks. We will use a directory, checking what needs to be done; and we will use a recursive call to repeat the actions on each sub-directory. The recursive pattern is `accumulate' -(@pxref{Accumulate, , Recursive Pattern: @emph{accumulate}}), +(@pxref{Accumulate}), using @code{append} as the combiner. @ignore diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index f4fc1acfa69..f4f036f33ad 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,60 @@ +2013-12-04 Juri Linkov + + * searching.texi (Search and Replace): Fix `unread-command-events' + and add ref. + +2013-12-03 Juri Linkov + + * windows.texi (Choosing Window): Rename `no-display-ok' to + `allow-no-window'. (Bug#13594) + +2013-11-30 Glenn Morris + + * Makefile.in (distclean): Remove Makefile. + +2013-11-29 Andreas Politz + + * modes.texi (Imenu): Make it clear that sub-alist is the cdr + (Bug#14029). + +2013-11-27 Glenn Morris + + * loading.texi (Library Search): + * os.texi (Startup Summary): No more leim directory. + +2013-11-26 Glenn Morris + + * os.texi (Startup Summary): Update for leim-list being preloaded. + +2013-11-23 Brian Jenkins (tiny change) + + * frames.texi (Input Focus): + * hooks.texi (Standard Hooks): Mention focus-in-hook, focus-out-hook. + +2013-11-23 Glenn Morris + + * loading.texi (Library Search): + Empty elements in EMACSLOADPATH now mean the default load-path. + +2013-11-22 Glenn Morris + + * loading.texi (Library Search): Minor clarification. + +2013-11-20 Leo Liu + + * windows.texi (Choosing Window): Mention `no-display-ok'. (Bug#13594) + +2013-11-19 Xue Fuqiao + + * os.texi (File Notifications): Add an index. + + * loading.texi (Loading): Add an cross-reference. + +2013-11-18 Xue Fuqiao + + * os.texi (Session Management, Desktop Notifications): Add some + indexes and a cross-reference. + 2013-11-17 Xue Fuqiao * os.texi (Time Parsing): diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index e2cc9ac088a..d7348754657 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -169,6 +169,7 @@ clean: mostlyclean rm -f emacs-lispref-${version}.tar* distclean: clean + rm -f Makefile infoclean: -cd $(buildinfodir) && rm -f elisp$(INFO_EXT) elisp$(INFO_EXT)-[1-9] elisp$(INFO_EXT)-[1-9][0-9] diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 4935534d6eb..01ced2bf6ab 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1479,6 +1479,14 @@ The redirection lasts until @code{redirect-frame-focus} is called to change it. @end defun +@defvar focus-in-hook +This is a normal hook run when an Emacs frame gains input focus. +@end defvar + +@defvar focus-out-hook +This is a normal hook run when an Emacs frame loses input focus. +@end defvar + @defopt focus-follows-mouse This option is how you inform Emacs whether the window manager transfers focus when the user moves the mouse. Non-@code{nil} says that it does. diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 745393f8166..74adda1d495 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -115,6 +115,12 @@ Function to call to ``quit'' the current buffer. @vindex delayed-warnings-hook The command loop runs this soon after @code{post-command-hook} (q.v.). +@item focus-in-hook +@vindex focus-in-hook +@itemx focus-out-hook +@vindex focus-out-hook +@xref{Input Focus}. + @item delete-frame-functions @xref{Deleting Frames}. diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 637057c99b0..0505b67961d 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -29,6 +29,8 @@ into a buffer and evaluated there. (Indeed, most code is tested this way.) Most often, the forms are function definitions and variable definitions. +For on-demand loading of external libraries, @pxref{Dynamic Libraries}. + @menu * How Programs Do Loading:: The @code{load} function and others. * Load Suffixes:: Details about the suffixes that @code{load} tries. @@ -268,16 +270,19 @@ is a directory something like "/usr/local/share/emacs/@var{version}/lisp" @end example -followed by a similarly named @file{leim} directory. These -directories contain the standard Lisp files that come with Emacs. -If Emacs cannot find them, it will not start correctly. +(In this and the following examples, replace @file{/usr/local} with +the installation prefix appropriate for your Emacs.) +These directories contain the standard Lisp files that come with +Emacs. If Emacs cannot find them, it will not start correctly. If you run Emacs from the directory where it was built---that is, an executable that has not been formally installed---Emacs instead -initializes @code{load-path} using the @file{lisp} and @file{leim} -directories in the directory containing the sources from which it -was built. If you built Emacs in a separate directory from the -sources, it also adds those directories from the build directory. +initializes @code{load-path} using the @file{lisp} +directory in the directory containing the sources from which it +was built. +@c Though there should be no *.el files in builddir/lisp, so it's pointless. +If you built Emacs in a separate directory from the +sources, it also adds the lisp directories from the build directory. (In all cases, elements are represented as absolute file names.) @cindex site-lisp directories @@ -306,25 +311,34 @@ directories, if they exist. Normally these directories do not contain @file{site-lisp} directories.) @cindex @env{EMACSLOADPATH} environment variable -If the environment variable @env{EMACSLOADPATH} is set, it overrides -the above initialization procedure. That is, Emacs initializes -@code{load-path} based solely on the value of the environment -variable. You must therefore include the directory containing the -standard Lisp files, else Emacs will not function. In most -situations, it is better to use the @option{-L} command-line option -(see below) to add elements to @code{load-path}. +If the environment variable @env{EMACSLOADPATH} is set, it modifies +the above initialization procedure. Emacs initializes +@code{load-path} based on the value of the environment variable. The syntax of @env{EMACSLOADPATH} is the same as used for @code{PATH}; directory names are separated by @samp{:} (or @samp{;}, on some -operating systems), and @samp{.} stands for the current default -directory. Here is an example of how to set @env{EMACSLOADPATH} -variable (from a @command{sh}-style shell): +operating systems). +@ignore +@c AFAICS, does not (yet) work right to specify non-absolute elements. +and @samp{.} stands for the current default directory. +@end ignore +Here is an example of how to set @env{EMACSLOADPATH} variable (from a +@command{sh}-style shell): @example -export EMACSLOADPATH -EMACSLOADPATH=/home/foo/.emacs.d/lisp:/usr/local/emacs/24.3/lisp +export EMACSLOADPATH=/home/foo/.emacs.d/lisp: @end example +An empty element in the value of the environment variable, whether +trailing (as in the above example), leading, or embedded, is replaced +by the default value of @code{load-path} as determined by the standard +initialization procedure. If there are no such empty elements, then +@env{EMACSLOADPATH} specifies the entire @code{load-path}. You must +include either an empty element, or the explicit path to the directory +containing the standard Lisp files, else Emacs will not function. +(Another way to modify @code{load-path} is to use the @option{-L} +command-line option when starting Emacs; see below.) + For each directory in @code{load-path}, Emacs then checks to see if it contains a file @file{subdirs.el}, and if so, loads it. The @file{subdirs.el} file is created when Emacs is built/installed, diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 180fef7241d..dc643bda9c8 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -2483,7 +2483,7 @@ Selecting a special element performs: A nested sub-alist element looks like this: @example -(@var{menu-title} @var{sub-alist}) +(@var{menu-title} . @var{sub-alist}) @end example It creates the submenu @var{menu-title} specified by @var{sub-alist}. diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 0cd9e1465dc..38ebcccb688 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -71,11 +71,12 @@ in their turn. The files @file{subdirs.el} are normally generated automatically when Emacs is installed. @item -If the library @file{leim-list.el} exists, Emacs loads it. This -optional library is intended for registering input methods; Emacs -looks for it in @code{load-path} (@pxref{Library Search}), skipping -those directories containing the standard Emacs libraries (since -@file{leim-list.el} should not exist in those directories). +It loads any @file{leim-list.el} that it finds in the @code{load-path} +directories. This file is intended for registering input methods. +The search is only for any personal @file{leim-list.el} files that you +may have created; it skips the directories containing the standard Emacs +libraries (these should contain only a single @file{leim-list.el} file, +which is compiled into the Emacs executable). @vindex before-init-time @item @@ -2244,6 +2245,7 @@ saved session to restore. For Emacs, this argument is @samp{--smid @var{session}}. @defvar emacs-save-session-functions +@cindex session file Emacs supports saving state via a hook called @code{emacs-save-session-functions}. Emacs runs this hook when the session manager tells it that the window system is shutting down. The @@ -2283,11 +2285,13 @@ Emacs is restarted by the session manager. @node Desktop Notifications @section Desktop Notifications @cindex desktop notifications +@cindex notifications, on desktop Emacs is able to send @dfn{notifications} on systems that support the freedesktop.org Desktop Notifications Specification. In order to use this functionality, Emacs must have been compiled with D-Bus support, -and the @code{notifications} library must be loaded. +and the @code{notifications} library must be loaded. @xref{Top, , +D-Bus,dbus,D-Bus integration in Emacs}. @defun notifications-notify &rest params This function sends a notification to the desktop via D-Bus, @@ -2523,6 +2527,7 @@ specification prior to @samp{"1.0"}. @node File Notifications @section Notifications on File Changes @cindex file notifications +@cindex watch, for filesystem events Several operating systems support watching of filesystems for changes of files. If configured properly, Emacs links a respective library diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 15aa23f77ea..a5bd5ab719b 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1770,10 +1770,9 @@ Do not take action for this question---in other words, ``no''. Answer this question ``no'', and give up on the entire series of questions, assuming that the answers will be ``no''. -@c FIXME: Document ‘unread-comment-events’? --xfq @item exit-prefix Like @code{exit}, but add the key that was pressed to -@code{unread-comment-events}. +@code{unread-command-events} (@pxref{Event Input Misc}). @item act-and-exit Answer this question ``yes'', and give up on the entire series of diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 13c9ca53222..661860025f3 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1842,7 +1842,10 @@ The constant @code{display-buffer-fallback-action}. @noindent Each action function is called in turn, passing the buffer as the first argument and the combined action alist as the second argument, -until one of the functions returns non-@code{nil}. +until one of the functions returns non-@code{nil}. The caller can +pass @code{(allow-no-window . t)} as an element of the action alist to +indicate its readiness to handle the case of not displaying the +buffer in a window. The argument @var{action} can also have a non-@code{nil}, non-list value. This has the special meaning that the buffer should be diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 6ea80e4be8d..5a7b301d5b0 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,30 @@ +2013-12-06 Bastien Guerry + + * org.texi: Don't include Emacs version within Org's version. + +2013-12-06 Nicolas Goaziou + + * org.texi (Creating one-off styles): Use new export snippet + syntax. + + * org.texi (Export settings): documentation describing how text + above the first heading is ignored when an :export: tag is in a + file. + +2013-12-05 Michael Albinus + + * dbus.texi (Type Conversion): Clarify unibyte-ness of strings. + +2013-11-30 Glenn Morris + + * Makefile.in (distclean): Remove Makefile. + +2013-11-20 era eriksson + + * ses.texi (Quick Tutorial): New chapter. (Bug#14748) + (The Basics, Formulas): Copyedits. + (Resizing, Printer functions): Add index entries. + 2013-11-17 Jay Belanger * calc.texi (Customizing Calc): Mention new variable diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index f43520e97a4..70fb05e23e3 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -842,7 +842,7 @@ clean: mostlyclean rm -f emacs-misc-${version}.tar* distclean: clean -# rm -f Makefile + rm -f Makefile ## buildinfodir is relative to srcdir. infoclean: diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index 52c3c883cc8..1e887e02a30 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -1138,10 +1138,11 @@ The signal @code{PropertyModified}, discussed as example in (@var{INTEGER} ((@var{STRING} @var{BOOL} @var{BOOL}) (@var{STRING} @var{BOOL} @var{BOOL}) @dots{})) @end lisp -@defun dbus-byte-array-to-string byte-array +@defun dbus-byte-array-to-string byte-array &optional multibyte If a D-Bus method or signal returns an array of bytes, which are known to represent an UTF8 string, this function converts @var{byte-array} -to the corresponding string. Example: +to the corresponding string. The string is unibyte encoded, unless +@var{multibyte} is non-@code{nil}. Example: @lisp (dbus-byte-array-to-string '(47 101 116 99 47 104 111 115 116 115)) @@ -1151,20 +1152,30 @@ to the corresponding string. Example: @end defun @defun dbus-unescape-from-identifier string -Retrieve the original string from the encoded @var{string}. -@var{string} must have been coded with +Retrieve the original string from the encoded @var{string} as unibyte +string. @var{string} must have been encoded with @code{dbus-escape-as-identifier}. Example: @lisp (dbus-unescape-from-identifier "_30123abc_5fxyz_01_ff") -@ifinfo -@result{} "0123abc_xyz^Aÿ" -@end ifinfo -@ifnotinfo -@result{} "0123abc_xyz^A@"y" -@end ifnotinfo +@result{} "0123abc_xyz\x01\xff" @end lisp + +If the original string used in @code{dbus-escape-as-identifier} is a +multibyte string, it cannot be expected that this function returns +that string: + +@lisp +(string-equal + (dbus-unescape-from-identifier + (dbus-escape-as-identifier "Grüß Göttin")) + "Grüß Göttin") + +@result{} nil +@end lisp + + @end defun diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 5c416b65d77..015b519df6c 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -2,7 +2,7 @@ @c %**start of header @setfilename ../../info/org @settitle The Org Manual -@set VERSION 8.2.3 (GNU Emacs 24.3) +@set VERSION 8.2.4 @c Use proper quote and backtick for code sections in PDF output @c Cf. Texinfo manual 14.2 @@ -10518,7 +10518,8 @@ clocktable. The tags that select a tree for export (@code{org-export-select-tags}). The default value is @code{:export:}. Within a subtree tagged with @code{:export:}, you can still exclude entries with @code{:noexport:} (see -below). +below). When headlines are selectively exported with @code{:export:} +anywhere in a file, text before the first headline is ignored. @item EXCLUDE_TAGS The tags that exclude a tree from export (@code{org-export-exclude-tags}). @@ -12542,13 +12543,13 @@ file. The use of this feature is better illustrated with couple of examples. @enumerate @item Embedding ODT tags as part of regular text -You can include simple OpenDocument tags by prefixing them with -@samp{@@}. For example, to highlight a region of text do the following: +You can inline OpenDocument syntax by enclosing it within +@samp{@@@@odt:...@@@@} markup. For example, to highlight a region of text do +the following: @example -@@This is a -highlighted text@@. But this is a -regular text. +@@@@odt:This is a highlighted +text@@@@. But this is a regular text. @end example @strong{Hint:} To see the above example in action, edit your diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi index a44d790781d..8ac023b8135 100644 --- a/doc/misc/ses.texi +++ b/doc/misc/ses.texi @@ -66,6 +66,7 @@ To report bugs, use @kbd{M-x report-emacs-bug}. @menu * Sales Pitch:: Why use @acronym{SES}? +* Quick Tutorial:: A quick introduction * The Basics:: Basic spreadsheet commands * Advanced Features:: Want to know more? * For Gurus:: Want to know @emph{even more}? @@ -98,6 +99,95 @@ To report bugs, use @kbd{M-x report-emacs-bug}. @c =================================================================== +@node Quick Tutorial +@chapter Quick Tutorial +@cindex introduction +@cindex tutorial + +If you want to get started quickly and think that you know what to +expect from a simple spreadsheet, this chapter may be all that you +need. + +First, visit a new file with the @file{.ses} extension. +Emacs presents you with an empty spreadsheet containing a single cell. + +Begin by inserting a headline: @kbd{"Income"@key{RET}}. The double +quotes indicate that this is a text cell. (Notice that Emacs +automatically inserts the closing quotation mark.) + +To insert your first income value, you must first resize the +spreadsheet. Press @key{TAB} to add a new cell and navigate back up +to it. Enter a number, such as @samp{2.23}. Then proceed to add a +few more income entries, e.g.: + +@example +@group +A + Income + 2.23 + 0.02 + 15.76 + -4.00 +@end group +@end example + +To add up the values, enter a Lisp expression: + +@example +(+ A2 A3 A4 A5) +@end example + +Perhaps you want to add a cell to the right of cell A4 to explain +why you have a negative entry. Pressing @kbd{TAB} in that cell +adds an entire new column @samp{B}, where you can add such a note. + +The column is fairly narrow by default, but pressing @kbd{w} allows +you to resize it as needed. Make it 20 characters wide. You can +now add descriptive legends for all the entries, e.g.: + +@example +@group +A B + Income + 2.23 Consulting fee + 0.02 Informed opinion + 15.76 Lemonade stand + -4 Loan to Joe + 14.01 Total +@end group +@end example + +By default, the labels in column B are right-justified. To change +that, you can enter a printer function for the whole column, using +e.g., @kbd{M-p ("%s")}. You can override a column's printer function +in any individual cell using @kbd{p}. + +If Joe pays back his loan, you might blank that entry; e.g., by +positioning the cursor in cell A5 and pressing @kbd{C-d} twice. +If you do that, the total cell will display @samp{######}. That is +because the regular @code{+} operator does not handle a range that +contains some empty cells. Instead of emptying the cell, you could +enter a literal @samp{0}, or delete the entire row using @kbd{C-k}. +An alternative is to use the special function @code{ses+} instead of +the regular @code{+}: + +@example +(ses+ A2 A3 A4 A5) +@end example + +To make a formula robust against changes in the spreadsheet geometry, +you can use the @code{ses-range} macro to refer to a range of cells by +the end-points, e.g.: + +@example +(apply 'ses+ (ses-range A2 A5)) +@end example + +(The @code{apply} is necessary because @code{ses-range} produces a +@emph{list} of values. This allows for more complex possibilities.) + +@c =================================================================== + @node The Basics @comment node-name, next, previous, up @chapter The Basics @@ -117,6 +207,7 @@ A @dfn{cell identifier} is a symbol with a column letter and a row number. Cell B7 is the 2nd column of the 7th row. For very wide spreadsheets, there are two column letters: cell AB7 is the 28th column of the 7th row. Super wide spreadsheets get AAA1, etc. +You move around with the regular Emacs movement commands. @table @kbd @item j @@ -161,13 +252,17 @@ Highlight all cells (@code{mark-whole-buffer}). @section Cell formulas @cindex formulas @cindex formulas, entering +@cindex values +@cindex cell values +@cindex editing cells @findex ses-read-cell @findex ses-read-symbol @findex ses-edit-cell @findex ses-recalculate-cell @findex ses-recalculate-all -To enter a number into the current cell, just start typing: +To insert a value into a cell, simply type a numeric expression, +@samp{"double-quoted text"}, or a Lisp expression. @table @kbd @item 0..9 @@ -213,6 +308,13 @@ Recalculate the entire spreadsheet (@code{ses-recalculate-all}). @node Resizing @section Resizing the spreadsheet @cindex resizing spreadsheets +@cindex dimensions +@cindex row, adding or removing +@cindex column, adding or removing +@cindex adding rows or columns +@cindex inserting rows or columns +@cindex removing rows or columns +@cindex deleting rows or columns @findex ses-insert-row @findex ses-insert-column @findex ses-delete-row @@ -269,6 +371,8 @@ Undo previous action (@code{(undo)}). @node Printer functions @section Printer functions @cindex printer functions +@cindex cell formatting +@cindex formatting cells @findex ses-read-cell-printer @findex ses-read-column-printer @findex ses-read-default-printer diff --git a/etc/ChangeLog b/etc/ChangeLog index 120f4d4db1c..71e86dcbc85 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,17 @@ +2013-11-23 Xue Fuqiao + + * TODO: Minor update. + +2013-11-23 Glenn Morris + + * enriched.txt: Rename from enriched.doc. (Bug#15947) + Misc small updates for this hardly being "new" any more. + +2013-11-20 Leo Liu + + * NEWS: Mention new display action alist entry `no-display-ok'. + (Bug#13594) + 2013-11-18 Leo Liu * NEWS: Mention new features for Octave mode. diff --git a/etc/NEWS b/etc/NEWS index 5f6cf12fb24..f354f5ce2f7 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -62,9 +62,20 @@ To use the old backend by default, do on the command line: * Startup Changes in Emacs 24.4 ++++ +** When initializing `load-path', an empty element in the EMACSLOADPATH +environment variable (either leading, e.g., ":/foo"; trailing, e.g., +"/foo:"; or embedded, e.g., "/foo::/bar") is replaced with the default +load-path (the one that would have been used if EMACSLOADPATH was unset). +This makes it easier to _extend_ the load-path via EMACSLOADPATH +(previously, EMACSLOADPATH had to specify the complete load-path, +including the defaults). (In older versions of Emacs, an empty element +was replaced by ".", so use an explicit "." now if that is what you want.) + +++ ** The -L option, which normally prepends its argument to load-path, -will instead append, if the argument begins with `:'. +will instead append, if the argument begins with `:' (or `;' on MS Windows; +i.e., `path-separator'). * Changes in Emacs 24.4 @@ -160,10 +171,13 @@ monitor, use the new functions above. Similar notes also apply to `x-display-pixel-width', `x-display-pixel-height', `display-mm-width', `display-mm-height', `x-display-mm-width', and `x-display-mm-height'. -** New macro `alternatives-define' can be used to define generic commands. +** New macro `define-alternatives' can be used to define generic commands. Generic commands are interactive functions whose implementation can be selected among several alternatives, as a matter of user preference. +** New hooks `focus-in-hook', `focus-out-hook'. +These are normal hooks run when an Emacs frame gains or loses input focus. + ** The blink cursor stops blinking after 10 blinks (default) on X and NS. You can change the default by customizing the variable blink-cursor-blinks. Also timers for blinking are stopped when no blinking is done, so Emacs does @@ -189,6 +203,10 @@ Czech typography rules. To globally enable this feature, evaluate: * Editing Changes in Emacs 24.4 +** `electric-indent-mode' is enabled by default. + +** Uniquify is enabled by default. + ** Command `rectangle-mark-mode' bound to C-x SPC makes a rectangular region. Most commands are still unaware of it, but kill/yank do work on the rectangle. @@ -229,6 +247,8 @@ You can pick the name of the function and the variables with `C-x 4 a'. * Changes in Specialized Modes and Packages in Emacs 24.4 +** The backtrace debugger can display local vars with `v'. + ** prolog-use-smie has been removed, along with the non-SMIE indentation code. ** SMIE indentation can be customized via `smie-config'. @@ -625,6 +645,22 @@ whether it is safe to use Bash's --noediting option. These days +++ ** There is a new macro `skip-unless' for skipping ERT tests. See the manual. +** Imenu + +*** New option `imenu-generic-skip-comments-and-strings'. + +** Ruby mode + +*** New option `ruby-encoding-magic-comment-style'. + +*** New option `ruby-custom-encoding-magic-comment-template'. + +*** New mode menu. + +*** Improved syntax highlighting and indentation. + +*** Add more Ruby file types to `auto-mode-alist'. + * New Modes and Packages in Emacs 24.4 @@ -717,6 +753,8 @@ for something (not just adding elements to it), it ought not to affect you. * Lisp Changes in Emacs 24.4 +** New function get-pos-property. + ** New hook `pre-redisplay-function'. +++ @@ -736,8 +774,8 @@ frame. *** `bool-vector-set-difference' *** `bool-vector-not' *** `bool-vector-subsetp' -*** `bool-vector-count-matches' -*** `bool-vector-count-matches-at' +*** `bool-vector-count-consecutive' +*** `bool-vector-count-population' ** Comparison functions =, <, >, <=, >= now take many arguments. @@ -755,6 +793,13 @@ frame. ** New library helpers.el for misc helper functions *** `hash-table-keys' *** `hash-table-values' +*** `string-blank-p` +*** `string-empty-p` +*** `string-join` +*** `string-reverse` +*** `string-trim-left' +*** `string-trim-right' +*** `string-trim' ** Obsoleted functions: *** `log10' @@ -772,10 +817,15 @@ The few hooks that used with-wrapper-hook are replaced as follows: *** `completion-in-region-function' obsoletes `completion-in-region-functions'. *** `filter-buffer-substring-function' obsoletes `filter-buffer-substring-functions'. +** `byte-compile-interactive-only-functions' is now obsolete. +It has been replaced by the symbol property 'interactive-only. + ** `split-string' now takes an optional argument TRIM. The value, if non-nil, is a regexp that specifies what to trim from the start and end of each substring. +** New function `string-suffix-p'. + ** `get-upcase-table' is obsoleted by the new `case-table-get-table'. ** Support for filesystem notifications. @@ -1806,6 +1856,13 @@ reused. *** New option `switch-to-buffer-preserve-window-point' to restore a window's point when switching buffers. +*** New display action function `display-buffer-no-window' to not +display the buffer in a window. + +*** New display action alist entry `allow-no-window' to indicate the +caller of `display-buffer' is ready to handle the case of not +displaying the buffer in a window. + *** New display action alist entries `window-height' and `window-width' specify the size of new windows created by `display-buffer'. diff --git a/etc/TODO b/etc/TODO index d798adb1436..87e8ed57d5c 100644 --- a/etc/TODO +++ b/etc/TODO @@ -203,7 +203,7 @@ http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html ** "Emacs as word processor" http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00515.html rms writes: - 25 years ago I hoped we would extend Emacs to do WYSIWG word + 25 years ago I hoped we would extend Emacs to do WYSIWYG word processing. That is why we added text properties and variable width fonts. However, more features are still needed to achieve this. @@ -544,8 +544,8 @@ rather than interactively. This a trivial one-liner in easy-mode.el. aim for completeness, but some may be worth documenting. Here's a list which is probably not complete/correct: align, allout, - artist, ansi-color, array, battery, calculator, cdl, cmuscheme, - completion, cua, delim-col, dirtrack, double, echistory, elide-head, + artist, ansi-color, array, calculator, cdl, cmuscheme, + completion, delim-col, dirtrack, double, echistory, elide-head, easymenu, expand, flow-ctrl, format [format-alist], generic/generic-x [various modes], kermit, log-edit, makesum, midnight [other than in Kill Buffer node], @@ -554,7 +554,7 @@ rather than interactively. This a trivial one-liner in easy-mode.el. the web page], talk, thingatpt [interactive functions?], type-break, vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, feedmail [?], uce, gametree, meese, page-ext, - refbib, refer, scribe, sgml-mode, spell, texinfo, underline, + refbib, refer, scribe, spell [obsolete?], texinfo, underline, cmacexp, hideif, mantemp [obsolete?], pcomplete, xml, cvs-status (should be described in PCL-CVS manual); other progmodes, probably in separate manual. diff --git a/etc/enriched.doc b/etc/enriched.txt similarity index 88% rename from etc/enriched.doc rename to etc/enriched.txt index 4ce34dd26e1..21d8481dce8 100644 --- a/etc/enriched.doc +++ b/etc/enriched.txt @@ -10,10 +10,10 @@ Text-Width: 70 -Emacs now has the ability to edit enriched text, which is text -containing faces, colors, indentation, and other properties. This -document is a quick introduction to some of the new features, and -is also an example file in the text/enriched format. +Emacs has the ability to edit enriched text, which is text +containing faces, colors, indentation, and other properties. +This document is a quick introduction to some of the features, +and is also an example file in the text/enriched format. bluewhiteINSTALLATION and STARTUP @@ -71,7 +71,7 @@ the right margin, fully justified, centered, or left alone). bluewhiteFACES and COLORS -You can add faces either with the menu or with M-g. The face is +You can add faces either with the menu or with M-o. The face is applied to the current region. If you are using `transient-mark-mode' and the region is not active, then the face applies to whatever you type next. Any face can have colors. If @@ -175,16 +175,8 @@ all of the features of your document, but they will get as close as possible. -The MIME standard is defined in Internet RFC 1521; text/enriched -is defined in RFC 1563. Details on obtaining these documents via -FTP or email may be obtained by sending an email message to -rfc-info@isi.edu with the message body: - - -help: ways_to_get_rfcs - - -See also the newsgroup comp.mail.mime. +The text/enriched standard is defined in Internet RFC 1896 +(<). bluewhiteCUSTOMIZATION @@ -198,16 +190,15 @@ enriched-verbose. - You can add annotations for your own text properties by making additions to enriched-translations. Note that the standard requires you to name your annotation starting "x-" (as in -"x-read-only"). Please send me any such additions that you -think might be of general interest so that I can include them -in the distribution. +"x-read-only"). Please report any such additions that you +think might be of general interest using M-x report-emacs-bug. -bluewhiteTO-DO LIST +bluewhiteTODO LIST -[Feel free to work on these and send me the results!] +[Feel free to work on these and send us the results!] + Conform to updated text/enriched spec in RFC 1896. @@ -238,22 +229,15 @@ it. + Support more formats: RTF, HTML... -+ Use Emacs 21 display features. ++ Use modern Emacs display features. -bluewhiteFinal Notes: - - -This code and documentation is under development. Comments and -bug reports are welcome. +bluewhiteOriginal Author: whiteblueBoris Goldowskylight blue light blue<blue -bluewhiteApril 1995; updated August 1997 - - Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index 0e19d32a1a7..3956ffaac90 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{8.2.3} +\def\orgversionnumber{8.2.4} \def\versionyear{2013} % latest update \input emacsver.tex diff --git a/leim/ChangeLog b/leim/ChangeLog index 6b16d71c215..31b9c376903 100644 --- a/leim/ChangeLog +++ b/leim/ChangeLog @@ -1,3 +1,37 @@ +2013-11-28 Glenn Morris + + * Makefile.in (${leimdir}/leim-list.el): + * leim-ext.el: Change method for getting comments in the output + to one that does not fool lisp/compile-main's no-byte-compile test. + +2013-11-27 Glenn Morris + + * Makefile.in (bootstrap-clean): No need to delete .elc, + lisp/ rules will do that. + + * Makefile.in (extraclean): New. + (bootstrap-clean): Move ja-dic deletion to extraclean. + + Move ja-dic, quail, leim-list.el to ../lisp/leim. + * Makefile.in (leimdir): New variable. + (TIT_GB, TIT_BIG5, MISC, changed.tit, changed.misc) + (${leimdir}/leim-list.el, ${leimdir}/ja-dic/ja-dic.el): + Generate in $leimdir. + (all): Remove compilation, add ja-dic. + (leim-list.el): Now PHONY. + (setwins, compile-targets, compile-main, clean, mostlyclean) + (extraclean): Remove. + (bootstrap-clean): Delete all generated files. + * README: Update for moved leim/ directory. + * leim-ext.el (ucs-input-activate, hangul-input-method-activate): + Remove manual autoloads; now in loaddefs.el. + Disable byte-compile, version-control, autoloads in the output. + * quail: Move to ../lisp/leim. + +2013-11-23 Glenn Morris + + * Makefile.in (RUN_EMACS): Empty EMACSLOADPATH rather than unsetting. + 2013-11-04 Eli Zaretskii * Makefile.in (RUN_EMACS): Don't set LC_ALL=C. (Bug#15260) diff --git a/leim/Makefile.in b/leim/Makefile.in index a5c05d567ec..383c521504f 100644 --- a/leim/Makefile.in +++ b/leim/Makefile.in @@ -26,58 +26,54 @@ SHELL = @SHELL@ # Here are the things that we expect ../configure to edit. srcdir=@srcdir@ +# Where the generated files go. +leimdir = ${srcdir}/../lisp/leim + # Which Emacs to use to convert TIT files to Emacs Lisp files, -# byte-compile Emacs Lisp files, and generate the file leim-list.el. +# and generate the file leim-list.el. EMACS = ../src/emacs # How to run Emacs. # Prevent any setting of EMACSLOADPATH in user environment causing problems. -RUN_EMACS = unset EMACSLOADPATH; "${EMACS}" -batch \ - --no-site-file --no-site-lisp +RUN_EMACS = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp MKDIR_P = @MKDIR_P@ # Files generated from TIT dictionaries for Chinese GB character set. TIT_GB=\ - quail/CCDOSPY.el \ - quail/Punct.el \ - quail/QJ.el \ - quail/SW.el \ - quail/TONEPY.el + ${leimdir}/quail/CCDOSPY.el \ + ${leimdir}/quail/Punct.el \ + ${leimdir}/quail/QJ.el \ + ${leimdir}/quail/SW.el \ + ${leimdir}/quail/TONEPY.el # Files generated from TIT dictionaries for Chinese BIG5 character set. TIT_BIG5=\ - quail/4Corner.el \ - quail/ARRAY30.el \ - quail/ECDICT.el \ - quail/ETZY.el \ - quail/Punct-b5.el \ - quail/PY-b5.el \ - quail/QJ-b5.el \ - quail/ZOZY.el + ${leimdir}/quail/4Corner.el \ + ${leimdir}/quail/ARRAY30.el \ + ${leimdir}/quail/ECDICT.el \ + ${leimdir}/quail/ETZY.el \ + ${leimdir}/quail/Punct-b5.el \ + ${leimdir}/quail/PY-b5.el \ + ${leimdir}/quail/QJ-b5.el \ + ${leimdir}/quail/ZOZY.el CHINESE_TIT=${TIT_GB} ${TIT_BIG5} MISC= \ - quail/tsang-b5.el \ - quail/quick-b5.el \ - quail/tsang-cns.el \ - quail/quick-cns.el \ - quail/PY.el \ - quail/ZIRANMA.el \ - quail/CTLau.el \ - quail/CTLau-b5.el + ${leimdir}/quail/tsang-b5.el \ + ${leimdir}/quail/quick-b5.el \ + ${leimdir}/quail/tsang-cns.el \ + ${leimdir}/quail/quick-cns.el \ + ${leimdir}/quail/PY.el \ + ${leimdir}/quail/ZIRANMA.el \ + ${leimdir}/quail/CTLau.el \ + ${leimdir}/quail/CTLau-b5.el ## The generated .el files. TIT_MISC=${CHINESE_TIT} ${MISC} -.SUFFIXES: .elc .el - -.el.elc: - @echo Compiling $< - @${RUN_EMACS} -l international/quail -f batch-byte-compile $< - -all: leim-list.el compile-main +all: ${leimdir}/leim-list.el ${leimdir}/ja-dic/ja-dic.el .PHONY: all TIT_SOURCES= \ @@ -107,10 +103,10 @@ ${CHINESE_TIT}: changed.tit ## quail/%.el: CXTERM-DIC/%.tit ## It doesn't seem possible to do this with VPATH and suffix rules. changed.tit: ${TIT_SOURCES} - @${MKDIR_P} quail + @${MKDIR_P} ${leimdir}/quail ${RUN_EMACS} -l titdic-cnv \ - -f batch-titdic-convert -dir quail ${srcdir}/CXTERM-DIC; \ - echo "changed" > $@ + -f batch-titdic-convert -dir ${leimdir}/quail ${srcdir}/CXTERM-DIC + echo "changed" > $@ MISC_SOURCES= \ ${srcdir}/MISC-DIC/CTLau-b5.html \ @@ -124,75 +120,41 @@ ${MISC}: changed.misc @true changed.misc: ${MISC_SOURCES} - @${MKDIR_P} quail + @${MKDIR_P} ${leimdir}/quail ${RUN_EMACS} -l titdic-cnv \ - -f batch-miscdic-convert -dir quail ${srcdir}/MISC-DIC; \ - echo "changed" > $@ + -f batch-miscdic-convert -dir ${leimdir}/quail ${srcdir}/MISC-DIC + echo "changed" > $@ -leim-list.el: ${TIT_MISC} ${srcdir}/leim-ext.el - rm -f leim-list.el - if [ "`cd ${srcdir} && /bin/pwd`" = "`/bin/pwd`" ] ; then \ - ${RUN_EMACS} -l international/quail \ - --eval "(update-leim-list-file \".\")" ; \ - else \ - ${RUN_EMACS} -l international/quail \ - --eval "(update-leim-list-file \".\" (unmsys--file-name \"${srcdir}\"))" ; \ - fi - sed -n '/^[^;]/ p' < ${srcdir}/leim-ext.el >> $@ +.PHONY: leim-list.el +leim-list.el: ${leimdir}/leim-list.el -$(srcdir)/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L - @$(MKDIR_P) $(srcdir)/ja-dic +${leimdir}/leim-list.el: ${TIT_MISC} ${srcdir}/leim-ext.el + rm -f $@ + ${RUN_EMACS} -l international/quail \ + --eval "(update-leim-list-file (unmsys--file-name \"${leimdir}\"))" + sed -n -e '/^[^;]/p' -e 's/^;\(;*\)inc /;\1 /p' < ${srcdir}/leim-ext.el >> $@ + +${leimdir}/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L + @$(MKDIR_P) $(leimdir)/ja-dic $(RUN_EMACS) -batch -l ja-dic-cnv \ - -f batch-skkdic-convert -dir "$(srcdir)/ja-dic" \ + -f batch-skkdic-convert -dir "$(leimdir)/ja-dic" \ "$(srcdir)/SKK-DIC/SKK-JISYO.L" -## Following adapted from lisp/Makefile.in. -setwins=wins="${srcdir}/ja-dic quail"; \ - [ "`cd ${srcdir} && /bin/pwd`" != "`/bin/pwd`" ] && \ - wins="$$wins ${srcdir}/quail" +.PHONY: bootstrap-clean distclean maintainer-clean extraclean -.PHONY: compile-targets -# TARGETS is set dynamically in the recursive call from `compile-main'. -compile-targets: $(TARGETS) +bootstrap-clean: + rm -f ${TIT_MISC} ${leimdir}/leim-list.el changed.tit changed.misc -# Compile all the Elisp files that need it. Beware: it approximates -# `no-byte-compile', so watch out for false-positives! -.PHONY: compile-main -compile-main: ${TIT_MISC} $(srcdir)/ja-dic/ja-dic.el - @($(setwins); \ - els=`echo "$$wins " | sed -e 's| |/*.el |g'`; \ - for el in $$els; do \ - test -f $$el || continue; \ - test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \ - echo "$${el}c"; \ - done | xargs echo) | \ - while read chunk; do \ - $(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \ - done - -.PHONY: clean mostlyclean bootstrap-clean distclean maintainer-clean extraclean - -clean mostlyclean: - rm -f ${TIT_MISC} ${TIT_MISC:.el=.elc} \ - leim-list.el changed.tit changed.misc - -# The following target is needed because the `clean' target only removes -# TIT-generated files and doesn't touch compiled Quail packages. But -# bootstrapping should not leave non-fresh .elc files behind. -bootstrap-clean: clean - $(setwins); for w in $$wins; do rm -f $$w/*.elc; done - -distclean: clean - -[ "`cd ${srcdir} && /bin/pwd`" != "`/bin/pwd`" ] && rm -rf quail +distclean: rm -f Makefile maintainer-clean: distclean bootstrap-clean -extraclean: maintainer-clean - -rm -f *~ \#* */*~ */\#* +## We do not delete ja-dic, even in a bootstrap, because it rarely +## changes and is slow to regenerate. +## TODO? Could consider doing the same with TIT_MISC, though those +## are much faster to generate. +extraclean: + rm -rf ${leimdir}/ja-dic -.PHONY: check-declare - -check-declare: - $(RUN_EMACS) -l check-declare \ - --eval '(check-declare-directory (unmsys--file-name "$(srcdir)"))' +### Makefile.in ends here diff --git a/leim/README b/leim/README index f1075872f77..c9c5447bd64 100644 --- a/leim/README +++ b/leim/README @@ -20,24 +20,22 @@ This directory contains various dictionaries for Chinese input methods. These dictionaries are automatically converted to Quail packages (Emacs Lisp source files) by `make'. -quail: - -This directory contains Emacs Lisp source files for Quail packages. - SKK-DIC: This directory contains source dictionary for Japanese input method -distributed with SKK (Japanese input method run with Mule). But, you -don't need this file because we distribute an Emacs Lisp source file -ja-dic/ja-dic.el which has already been converted from the source -dictionary (See below). +distributed with SKK (Japanese input method run with Mule). -ja-dic: -This directory contains Emacs Lisp source file ja-dic.el which is -generated from a source dictionary in SKK-DIC directory. The -inclusion of this file is for users convenience because it takes -rather long time to generate it. +The above source files are used to generate the following outputs: + +../lisp/leim/quail: + +This directory contains Emacs Lisp source files for Quail packages. + +../lisp/leim/ja-dic: + +This directory contains Emacs Lisp source file ja-dic.el, +generated from a source dictionary in SKK-DIC directory. This file is part of GNU Emacs. diff --git a/leim/leim-ext.el b/leim/leim-ext.el index 8209026ddbd..0f92fd6c645 100644 --- a/leim/leim-ext.el +++ b/leim/leim-ext.el @@ -37,21 +37,9 @@ (eval-after-load "quail/Punct-b5" '(quail-defrule " " ?  nil t)) -(autoload 'ucs-input-activate "quail/uni-input" - "Activate UCS input method. -With arg, activate UCS input method if and only if arg is positive. - -While this input method is active, the variable -`input-method-function' is bound to the function `ucs-input-method'.") - (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" "Unicode input as hex in the form Uxxxx.") -(autoload 'hangul-input-method-activate "quail/hangul" - "Activate Hangul input method INPUT-METHOD. -FUNC is a function to handle input key. -HELP-TEXT is a text set in `hangul-input-method-help-text'.") - (register-input-method "korean-hangul" "UTF-8" @@ -88,3 +76,17 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'.") 'hangul390-input-method "Input method: korean-hangul390 (mode line indicator:한390)\n\nHangul 3-Bulsik 390 input method.") +;; Following lines are marked such that Makefile adds them to output. +;; leim-list-header adds "coding: utf-8"; we could move that here, +;; unless others are using that stuff to generate their own leim files. +;; TODO? Better to add leim-list-footer? + +;;inc Local Variables: +;;inc no-byte-compile: t +;;inc version-control: never +;;inc no-update-autoloads: t +;;inc End: + +;;;inc leim-list.el ends here + +;;; leim-ext.el ends here diff --git a/lib/getgroups.c b/lib/getgroups.c index e71b5439c7e..482b24a788e 100644 --- a/lib/getgroups.c +++ b/lib/getgroups.c @@ -43,6 +43,21 @@ getgroups (int n _GL_UNUSED, GETGROUPS_T *groups _GL_UNUSED) # define GETGROUPS_ZERO_BUG 0 # endif +/* On OS X 10.6 and later, use the usual getgroups, not the one + supplied when _DARWIN_C_SOURCE is defined. _DARWIN_C_SOURCE is + normally defined, since it means "conform to POSIX, but add + non-POSIX extensions even if that violates the POSIX namespace + rules", which is what we normally want. But with getgroups there + is an inconsistency, and _DARWIN_C_SOURCE means "change getgroups() + so that it no longer works right". The BUGS section of compat(5) + says that the behavior is dubious if you compile different sections + of a program with different _DARWIN_C_SOURCE settings, so fix only + the offending symbol. */ +# ifdef __APPLE__ +int posix_getgroups (int, gid_t []) __asm ("_getgroups"); +# define getgroups posix_getgroups +# endif + /* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, NULL) always fails. On other systems, it returns the number of supplemental groups for the process. This function handles that special case diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f0ea7a93526..5cac769f01b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,678 @@ +2013-12-07 Lars Magne Ingebrigtsen + + * net/shr.el (shr-tag-img): Don't bug out on + data. + +2013-12-06 Michael Albinus + + * progmodes/compile.el (compilation-start): + * progmodes/grep.el (rgrep): Revert change 2012-12-20T11:15:38Z!michael.albinus@gmx.de. + + * net/tramp-sh.el (tramp-sh-handle-start-file-process): + Handle long command lines, lasting from "sh -c ...". (Bug#16045) + +2013-12-06 Dmitry Gutov + + * progmodes/ruby-mode.el (ruby-syntax-propertize-function): Touch + up the last change. + +2013-12-06 Leo Liu + + * progmodes/octave.el (inferior-octave-prompt): Use shy groups. + (inferior-octave-startup): Always use "octave> " for prompt. + (octave-goto-function-definition) + (octave-sync-function-file-names) + (octave-find-definition-default-filename): Remove redundant backquotes. + +2013-12-06 Dmitry Gutov + + * progmodes/ruby-mode.el (ruby-mode-syntax-table): Don't modify + syntax for `?'. + (ruby-expr-beg): Expect that `!' will have syntax class "symbol" + where appropriate already. + (ruby-syntax-propertize-function): Propertize `?' and `!' at the + end of method names (Bug#15874). + +2013-12-06 Juri Linkov + + * isearch.el (isearch--saved-overriding-local-map): + New internal variable. + (isearch-mode): Set it to the initial value of + `overriding-terminal-local-map'. + (isearch-pre-command-hook): Compare `overriding-terminal-local-map' + with `isearch--saved-overriding-local-map'. (Bug#16035) + +2013-12-06 Dmitry Gutov + + * progmodes/octave.el (inferior-octave-completion-table): Turn + back into function, use `completion-table-with-cache' + (Bug#11906). Update all references. + + * minibuffer.el (completion-table-with-cache): New function. + +2013-12-05 Cameron Desautels (tiny change) + + * emacs-lisp/regexp-opt.el (regexp-opt-charset): Fix ^ (bug#16046). + +2013-12-05 Teodor Zlatanov + + * net/eww.el (eww-current-source): New variable to store page + source. + (eww-display-html, eww-mode, eww-save-history) + (eww-restore-history): Use it. + (eww-view-source): New command to view page source. + Opportunistically uses `html-mode' to highlight the buffer. + (eww-mode-map): Install it. + +2013-12-05 Michael Albinus + + * net/dbus.el (dbus-unregister-service) + (dbus-escape-as-identifier, dbus-unescape-from-identifier): + Fix docstring. + (dbus-unregister-service): Skip :serial entries in + `dbus-registered-objects-table'. + (dbus-byte-array-to-string): New optional arg MULTIBYTE. + +2013-12-04 Teodor Zlatanov + + * emacs-lisp/lisp-mnt.el (lm-keywords-list): Trim whitespace + around keywords with extra `split-string' argument. + +2013-12-04 Martin Rudalics + + * windmove.el (windmove-other-window-loc): Handle navigation + between windows (excluding the minibuffer window - Bug#16017). + +2013-12-04 Michael Albinus + + * net/dbus.el (dbus-byte-array-to-string): Accept also byte arrays + in D-Bus type syntax. + (dbus-unescape-from-identifier): Use `byte-to-string' in order to + preserve unibyte strings. (Bug#16048) + +2013-12-04 Stefan Monnier + + * emacs-lisp/eldoc.el (eldoc-minibuffer-message): + Call force-mode-line-update is the proper buffer (bug#16042). + +2013-12-04 Dmitry Gutov + + * vc/log-edit.el (log-edit-add-new-comment): Rename to + `log-edit-remember-comment', make argument optional. Adjust all + callers. + (log-edit-mode): Add `log-edit-remember-comment' to + `kill-buffer-hook' locally. + (log-edit-kill-buffer): Don't remember comment explicitly since + the buffer is killed anyway. + +2013-12-04 Juri Linkov + + * isearch.el (isearch-mode, isearch-done): Don't set arg LOCAL in + add-hook and remove-hook for multi-buffer search. (Bug#16035) + +2013-12-03 Tom Regner (tiny change) + + * notifications.el (notifications-close-notification): Call the + D-Bus method with ID being a `:uint32'. (Bug#16030) + +2013-12-03 Katsumi Yamaoka + + * net/eww.el (eww-render): Don't pass arg to eww-display-image. + +2013-12-03 Juri Linkov + + * progmodes/compile.el (compilation-start): Rename window alist + entry `no-display-ok' to `allow-no-window'. + + * simple.el (shell-command): Add window alist entry + `allow-no-window' to `display-buffer'. + (async-shell-command): Doc fix. + + * window.el (display-buffer-no-window): New action function. + (display-buffer-alist, display-buffer): Doc fix. (Bug#13594) + +2013-12-02 Dmitry Gutov + + * vc/log-edit.el (log-edit-set-header): Extract from + `log-edit-toggle-header'. + (log-edit-extract-headers): Separate the summary, when extracted + from header, from the rest of the message with an empty line. + + * vc/vc-git.el (vc-git-log-edit-toggle-amend): Move the summary + line, if present, to the Summary header. + +2013-12-02 Stefan Monnier + + * epa-file.el (epa-file-insert-file-contents): Ensure we insert text + in current-buffer (bug#16029). + +2013-12-02 Helmut Eller + + * emacs-lisp/debug.el (debugger-toggle-locals): New command. + (debugger-mode-map): Bind it. + (debugger--backtrace-base): New function. + (debugger-eval-expression): Use it. + (debugger-frame-number): Skip local vars when present. + (debugger--locals-visible-p, debugger--insert-locals) + (debugger--show-locals, debugger--hide-locals): New functions. + +2013-12-02 Michael Albinus + + * net/tramp-sh.el (tramp-remote-process-environment): Do not set + "LC_ALL". + (tramp-get-remote-locale): New defun. + (tramp-open-connection-setup-interactive-shell): Use it. + +2013-12-02 Leo Liu + + * subr.el (process-live-p): Return nil for non-process. (Bug#16023) + + * progmodes/sh-script.el (sh-shell-process): + * progmodes/octave.el (inferior-octave-process-live-p): + * progmodes/gdb-mi.el (gdb-delchar-or-quit) + (gdb-inferior-io-sentinel): + * emacs-lock.el (emacs-lock-live-process-p): All uses changed. + +2013-12-02 Dmitry Gutov + + * vc/log-edit.el (log-edit-kill-buffer): Move the use of + `save-selected-window' to `log-edit-hide-buf'. This makes + `log-edit-show-files' idempotent. + (log-edit-show-files): Mark the new window as dedicated. + +2013-12-02 Dmitry Gutov + + * vc/log-edit.el (log-edit-mode-map): Add binding for + `log-edit-kill-biffer'. + (log-edit-hide-buf): Add a FIXME comment. + (log-edit-add-new-comment): New function, extracted from + `log-edit-done'. + (log-edit-done, log-edit-add-to-changelog): Use it. + (log-edit-kill-buffer): New command. + +2013-12-01 Lars Magne Ingebrigtsen + + * net/eww.el (eww-mode-map): Have `q' do a normal `quit-window' + instead of killing the buffer. + +2013-12-01 Stefan Monnier + + * simple.el (newline): Mention `electric-indent-mode' (bug#16015). + +2013-12-01 Rüdiger Sonderfeld + + * net/eww.el (eww-form-checkbox-selected-symbol) + (eww-form-checkbox-symbol): New customizable variable. + (eww-form-checkbox, eww-toggle-checkbox): + Use `eww-form-checkbox-selected-symbol' and `eww-form-checkbox-symbol'. + + * net/shr.el (shr-prefer-media-type-alist): : New customizable variable. + (shr--get-media-pref, shr--extract-best-source): New function. + (shr-tag-video, shr-tag-audio): Use `shr--extract-best-source' when + no :src tag was specified. + + * net/eww.el (eww-use-external-browser-for-content-type): New variable. + (eww-render): Handle `eww-use-external-browser-for-content-type'. + Use \\` to match beginning of string instead of ^. + (eww-browse-with-external-browser): Provide optional URL parameter. + (eww-render): Set `eww-current-title' back to "". + + * net/shr.el (shr-tag-video): Display content for video if no + poster is available. + (shr-tag-audio): Add support for