diff --git a/ChangeLog b/ChangeLog index bc70b1e4446..ba6c22c13b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,169 @@ +2013-09-02 Jan Djärv + + * configure.ac: Add ns_check_file. + +2013-08-31 Glenn Morris + + * configure.ac (--with-sound): Rename ossaudio to bsd-ossaudio, + and voxware to oss. + +2013-08-31 Ulrich Müller + + * configure.ac: Allow for --with-sound=voxware that will enable + sound but otherwise disable ALSA. This will use the OSS device, + typically /dev/dsp, for sound output. (Bug#15067) + +2013-08-31 Glenn Morris + + * make-dist: Update for nt/INSTALL* changes. + +2013-08-28 Paul Eggert + + * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-28 Stefan Monnier + + * configure.ac (DOCMISC_W32): New var to replace DOCMISC_*_W32. + +2013-08-27 Paul Eggert + + Simplify EMACS_TIME-related code. + Merge from gnulib, incorporating: + 2013-08-27 timespec: new convenience constants and function + +2013-08-27 Dmitry Antipov + + * configure.ac (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32) + (DOCMISC_PDF_W32, DOCMISC_PS_W32): No spaces! + +2013-08-27 Glenn Morris + + * configure.ac (emacs_broken_SIGIO): No longer set on gnu-kfreebsd. + + * configure.ac (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32) + (DOCMISC_PDF_W32, DOCMISC_PS_W32): New output variables. + * Makefile.in (check-info-dir): Ignore efaq-w32. + + * Makefile.in (mostlyclean, clean, distclean, bootstrap-clean) + (maintainer-clean, check-declare): Remove pointless subshells. + Check cd return value. + +2013-08-26 Paul Eggert + + Minor merge from gnulib (mostly just for texinfo.tex). + +2013-08-22 Paul Eggert + + * configure.ac (EMACS_CONFIG_OPTIONS): Quote systematically (Bug#13274). + This improves on the patch already installed, by quoting options + that contain spaces and suchlike systematically, so that + EMACS_CONFIG_OPTIONS is no longer ambiguous when options contain + these characters. + +2013-08-21 Paul Eggert + + Port close-on-exec pty creation to FreeBSD 9.1-RELEASE (Bug#15129). + * configure.ac (PTY_OPEN): If posix_openpt with O_CLOEXEC fails + and reports EINVAL, try it again without O_CLOEXEC. This should + port PTY_OPEN to FreeBSD 9, which stupidly rejects O_CLOEXEC. + What were they thinking? + +2013-08-20 Paul Eggert + + * Makefile.in (distclean, bootstrap-clean, maintainer-clean): + Fix shell-operator precedence problem in previous change. + +2013-08-20 Glenn Morris + + * Makefile.in (distclean, bootstrap-clean, maintainer-clean): + Clean test/automated if present. + +2013-08-19 Paul Eggert + + Merge from gnulib, incorporating: + 2013-08-15 warnings: minor optimization + 2013-08-15 warnings: check -Wfoo rather than -Wno-foo + +2013-08-15 Ken Brown + + * configure.ac (G_SLICE_ALWAYS_MALLOC): Update comment. + +2013-08-15 Glenn Morris + + * make-dist: Do not distribute etc/refcards TeX intermediate files. + * Makefile.in (install-arch-indep): + Do not install etc/refcards TeX intermediate files. + +2013-08-14 Ulrich Müller + + * configure.ac (EMACS_CONFIGURATION): Escape backslashes. (Bug#15091) + +2013-08-12 Eli Zaretskii + + * configure.ac (HAVE_ZLIB): Don't use -lz on MinGW. + +2013-08-12 Paul Eggert + + Minor zlib configuration tweaks. + * configure.ac (HAVE_ZLIB): Don't assume zlib is linked if PNG is. + +2013-08-12 Eli Zaretskii + + * configure.ac (LIBZ): Comment on w32 peculiarities regarding LIBZ. + +2013-08-12 Paul Eggert + + Merge from gnulib, incorporating: + 2013-08-11 fpending: port to recent Cygwin change to stdio_ext.h + 2013-08-10 sys_time: port to OpenBSD + +2013-08-12 Glenn Morris + + * configure.ac (etcdocdir): Rename from docdir, to avoid confusion + with configure's standard --docdir argument. All uses updated. + * Makefile.in (etcdocdir): Rename from docdir. All uses updated. + (install-etcdoc): Rename from install-doc. All uses updated. + (uninstall): Run uninstall-doc. + (PSS): Add misc-ps. + (INSTALL_DVI, INSTALL_HTML, INSTALL_PDF, INSTALL_PS) + (INSTALL_DOC, UNINSTALL_DVI, UNINSTALL_HTML, UNINSTALL_PDF) + (UNINSTALL_PS, UNINSTALL_DOC): New variables. + ($(INSTALL_DOC), install-doc, install-dvi, install-html, install-pdf) + (install-ps, $(UNINSTALL_DOC), uninstall-doc, uninstall-dvi) + (uninstall-html, uninstall-pdf, uninstall-ps): New .PHONY rules. + +2013-08-11 Paul Eggert + + Add --with-zlib to 'configure'. + * configure.ac: Add --with-zlib option to 'configure', so that Emacs + can be built without zlib. Don't assume that -lz is needed on + non-PNG hosts. Mention zlib configuration status in 'configure' output. + +2013-08-11 Lars Magne Ingebrigtsen + + * configure.ac: Test for zlib. + +2013-08-10 Eli Zaretskii + + * configure.ac: Define and substitute UPDATE_MANIFEST. + +2013-08-04 Stephen Berman + + * info/dir: Add todo-mode. + +2013-08-04 Paul Eggert + + Fix some minor races in hosts lacking mkostemp (Bug#15015). + Gnulib's emulation of mkostemp doesn't have races that Emacs's does. + * configure.ac (mkostemp): Remove check for this function; + gnulib does the check now. + (mkstemp): Remove check for this no-longer-used function. + * lib/mkostemp.c, lib/secure_getenv.c, lib/tempname.c, lib/tempname.h: + * m4/mkostemp.m4, m4/secure_getenv.m4, m4/tempname.m4: + New files, copied from Gnulib. + * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. + 2013-07-29 Michael Albinus * INSTALL (DETAILED BUILDING AND INSTALLATION): Add diff --git a/Makefile.in b/Makefile.in index dad0a571075..8e3a846c8df 100644 --- a/Makefile.in +++ b/Makefile.in @@ -56,7 +56,7 @@ # make docs # Make Emacs documentation files from their sources; requires makeinfo. -SHELL = /bin/sh +SHELL = @SHELL@ # This may not work with certain non-GNU make's. It only matters when # inheriting a CDPATH not starting with the current directory. @@ -233,8 +233,8 @@ etcdir=@etcdir@ # once. archlibdir=@archlibdir@ -# Where to put the docstring file. -docdir=@docdir@ +# Where to put the etc/DOC file. +etcdocdir=@etcdocdir@ # Where to install Emacs game score files. gamedir=@gamedir@ @@ -313,7 +313,7 @@ epaths-force: FRC -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";' \ -e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \ -e 's;\(#.*PATH_GAME\).*$$;\1 "${gamedir}";' \ - -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') && \ + -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 @@ -453,7 +453,7 @@ $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS) # ==================== Installation ==================== -.PHONY: install install-arch-dep install-arch-indep install-doc install-info +.PHONY: install install-arch-dep install-arch-indep install-etcdoc install-info .PHONY: install-man install-etc install-strip install-$(NTDIR) .PHONY: uninstall uninstall-$(NTDIR) @@ -461,7 +461,7 @@ $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS) ## don't have to duplicate the list of utilities to install in ## this Makefile as well. -install: all install-arch-indep install-doc install-arch-dep install-$(NTDIR) blessmail +install: all install-arch-indep install-etcdoc install-arch-dep install-$(NTDIR) blessmail @true ## Ensure that $subdir contains a subdirs.el file. @@ -482,7 +482,7 @@ write_subdir=if [ -f $${subdir}/subdirs.el ]; \ ### Install the executables that were compiled specifically for this machine. ### We do install-arch-indep first because the executable needs the ### Lisp files and DOC file to work properly. -install-arch-dep: src install-arch-indep install-doc install-$(NTDIR) +install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR) umask 022; ${MKDIR_P} $(DESTDIR)${bindir} cd lib-src && \ $(MAKE) install $(MFLAGS) prefix=${prefix} \ @@ -541,7 +541,12 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## We delete etc/DOC* because there may be irrelevant DOC files from ## other builds in the source directory. This is ok because we just ## deleted the entire installed etc/ directory and recreated it. -## install-doc installs the relevant DOC. +## install-etcdoc installs the relevant DOC. + +## Note that we install etc/refcards/*.ps if present. +## TODO we should compress these if GZIP_PROG is set. +## It would be simpler to have a separate install rule for etc/refcards +## (maybe move it to doc/refcards?). ## Note that the Makefiles in the etc directory are potentially useful ## in an installed Emacs, so should not be excluded. @@ -578,7 +583,12 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR (cd $${dir}; tar -chf - . ) \ | (cd $${dest}; umask 022; \ tar -xvf - && cat > /dev/null) || exit 1; \ - [ "$${dir}" != "${srcdir}/etc" ] || rm -f $${dest}/DOC* ; \ + if [ "$${dir}" = "${srcdir}/etc" ]; then \ + rm -f $${dest}/DOC* ; \ + rm -f $${dest}/refcards/*.aux $${dest}/refcards/*.dvi; \ + rm -f $${dest}/refcards/*.log; \ + else true; \ + fi; \ for subdir in `find $${dest} -type d -print` ; do \ chmod a+rx $${subdir} ; \ rm -f $${subdir}/.gitignore ; \ @@ -621,16 +631,16 @@ install-arch-indep: lisp leim install-info install-man ${INSTALL_ARCH_INDEP_EXTR ## Note that install-arch-indep deletes and recreates the entire ## installed etc/ directory, so we need it to run before this does. -install-doc: src install-arch-indep +install-etcdoc: src install-arch-indep -unset CDPATH; \ - umask 022; ${MKDIR_P} $(DESTDIR)${docdir} ; \ - if [ `cd ./etc; /bin/pwd` != `cd $(DESTDIR)${docdir}; /bin/pwd` ]; \ + umask 022; ${MKDIR_P} $(DESTDIR)${etcdocdir} ; \ + if [ `cd ./etc; /bin/pwd` != `cd $(DESTDIR)${etcdocdir}; /bin/pwd` ]; \ then \ docfile="DOC"; \ - echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \ - ${INSTALL_DATA} etc/$${docfile} $(DESTDIR)${docdir}/$${docfile}; \ + echo "Copying etc/$${docfile} to $(DESTDIR)${etcdocdir} ..." ; \ + ${INSTALL_DATA} etc/$${docfile} $(DESTDIR)${etcdocdir}/$${docfile}; \ $(set_installuser); \ - chown $${installuser} $(DESTDIR)${docdir}/$${docfile} || true ; \ + chown $${installuser} $(DESTDIR)${etcdocdir}/$${docfile} || true ; \ else true; fi install-info: info @@ -716,7 +726,7 @@ install-strip: ### create (but not the noninstalled files such as `make all' would create). ### ### Don't delete the lisp and etc directories if they're in the source tree. -uninstall: uninstall-$(NTDIR) +uninstall: uninstall-$(NTDIR) uninstall-doc cd lib-src && \ $(MAKE) $(MFLAGS) uninstall \ prefix=${prefix} exec_prefix=${exec_prefix} \ @@ -787,17 +797,17 @@ FRC: ### target for GCC does not delete `libgcc.a', because recompiling it ### is rarely necessary and takes a lot of time. mostlyclean: FRC - (cd src; $(MAKE) $(MFLAGS) mostlyclean) - (cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean) - (cd lwlib; $(MAKE) $(MFLAGS) mostlyclean) - (cd lib; $(MAKE) $(MFLAGS) mostlyclean) - (cd lib-src; $(MAKE) $(MFLAGS) mostlyclean) - (cd nt; $(MAKE) $(MFLAGS) mostlyclean) - -(cd doc/emacs && $(MAKE) $(MFLAGS) mostlyclean) - -(cd doc/misc && $(MAKE) $(MFLAGS) mostlyclean) - -(cd doc/lispref && $(MAKE) $(MFLAGS) mostlyclean) - -(cd doc/lispintro && $(MAKE) $(MFLAGS) mostlyclean) - (cd leim; $(MAKE) $(MFLAGS) mostlyclean) + cd src && $(MAKE) $(MFLAGS) mostlyclean + cd oldXMenu && $(MAKE) $(MFLAGS) mostlyclean + cd lwlib && $(MAKE) $(MFLAGS) mostlyclean + cd lib && $(MAKE) $(MFLAGS) mostlyclean + cd lib-src && $(MAKE) $(MFLAGS) mostlyclean + cd nt && $(MAKE) $(MFLAGS) mostlyclean + -cd doc/emacs && $(MAKE) $(MFLAGS) mostlyclean + -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 @@ -809,18 +819,18 @@ mostlyclean: FRC ### Delete `.dvi' files here if they are not part of the distribution. clean: FRC -rm -f etc/emacs.tmpdesktop - (cd src; $(MAKE) $(MFLAGS) clean) - (cd oldXMenu; $(MAKE) $(MFLAGS) clean) - (cd lwlib; $(MAKE) $(MFLAGS) clean) - (cd lib; $(MAKE) $(MFLAGS) clean) - (cd lib-src; $(MAKE) $(MFLAGS) clean) - (cd nt; $(MAKE) $(MFLAGS) clean) - -(cd doc/emacs && $(MAKE) $(MFLAGS) clean) - -(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) + cd src && $(MAKE) $(MFLAGS) clean + cd oldXMenu && $(MAKE) $(MFLAGS) clean + cd lwlib && $(MAKE) $(MFLAGS) clean + cd lib && $(MAKE) $(MFLAGS) clean + cd lib-src && $(MAKE) $(MFLAGS) clean + cd nt && $(MAKE) $(MFLAGS) clean + -cd doc/emacs && $(MAKE) $(MFLAGS) clean + -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' ### Delete all files that need to be remade for a clean bootstrap. @@ -836,38 +846,44 @@ top_distclean=\ ${top_bootclean}; \ rm -f config.status config.log~ Makefile stamp-h1 ${SUBDIR_MAKEFILES} distclean: FRC - (cd src; $(MAKE) $(MFLAGS) distclean) - (cd oldXMenu; $(MAKE) $(MFLAGS) distclean) - (cd lwlib; $(MAKE) $(MFLAGS) distclean) - (cd lib; $(MAKE) $(MFLAGS) distclean) - (cd lib-src; $(MAKE) $(MFLAGS) distclean) - (cd nt; $(MAKE) $(MFLAGS) distclean) - (cd doc/emacs && $(MAKE) $(MFLAGS) distclean) - (cd doc/misc && $(MAKE) $(MFLAGS) distclean) - (cd doc/lispref && $(MAKE) $(MFLAGS) distclean) - (cd doc/lispintro && $(MAKE) $(MFLAGS) distclean) - (cd leim; $(MAKE) $(MFLAGS) distclean) - (cd lisp; $(MAKE) $(MFLAGS) distclean) - (cd nextstep && $(MAKE) $(MFLAGS) distclean) + cd src && $(MAKE) $(MFLAGS) distclean + cd oldXMenu && $(MAKE) $(MFLAGS) distclean + cd lwlib && $(MAKE) $(MFLAGS) distclean + cd lib && $(MAKE) $(MFLAGS) distclean + cd lib-src && $(MAKE) $(MFLAGS) distclean + cd nt && $(MAKE) $(MFLAGS) distclean + cd doc/emacs && $(MAKE) $(MFLAGS) distclean + cd doc/misc && $(MAKE) $(MFLAGS) distclean + cd doc/lispref && $(MAKE) $(MFLAGS) distclean + cd doc/lispintro && $(MAKE) $(MFLAGS) distclean + cd leim && $(MAKE) $(MFLAGS) distclean + cd lisp && $(MAKE) $(MFLAGS) distclean + cd nextstep && $(MAKE) $(MFLAGS) distclean + [ ! -d test/automated ] || { \ + cd test/automated && $(MAKE) $(MFLAGS) distclean; \ + } ${top_distclean} ### `bootstrap-clean' ### Delete everything that can be reconstructed by `make' and that ### needs to be deleted in order to force a bootstrap from a clean state. bootstrap-clean: FRC - (cd src; $(MAKE) $(MFLAGS) bootstrap-clean) - (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean) - (cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean) - (cd lib; $(MAKE) $(MFLAGS) maintainer-clean) - (cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean) - (cd nt; $(MAKE) $(MFLAGS) maintainer-clean) - -(cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean) - -(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 lisp; $(MAKE) $(MFLAGS) bootstrap-clean) - (cd nextstep && $(MAKE) $(MFLAGS) maintainer-clean) + cd src && $(MAKE) $(MFLAGS) bootstrap-clean + cd oldXMenu && $(MAKE) $(MFLAGS) maintainer-clean + cd lwlib && $(MAKE) $(MFLAGS) maintainer-clean + cd lib && $(MAKE) $(MFLAGS) maintainer-clean + cd lib-src && $(MAKE) $(MFLAGS) maintainer-clean + cd nt && $(MAKE) $(MFLAGS) maintainer-clean + -cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean + -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 lisp && $(MAKE) $(MFLAGS) bootstrap-clean + cd nextstep && $(MAKE) $(MFLAGS) maintainer-clean + [ ! -d test/automated ] || { \ + cd test/automated && $(MAKE) $(MFLAGS) bootstrap-clean; \ + } [ ! -f config.log ] || mv -f config.log config.log~ ${top_bootclean} @@ -886,8 +902,11 @@ top_maintainer_clean=\ ${top_distclean}; \ rm -fr autom4te.cache maintainer-clean: bootstrap-clean FRC - (cd src; $(MAKE) $(MFLAGS) maintainer-clean) - (cd lisp; $(MAKE) $(MFLAGS) maintainer-clean) + cd src && $(MAKE) $(MFLAGS) maintainer-clean + cd lisp && $(MAKE) $(MFLAGS) maintainer-clean + [ ! -d test/automated ] || { \ + cd test/automated && $(MAKE) $(MFLAGS) maintainer-clean; \ + } ${top_maintainer_clean} ### This doesn't actually appear in the coding standards, but Karl @@ -921,7 +940,7 @@ DVIS = lispref-dvi lispintro-dvi emacs-dvi misc-dvi HTMLS = lispref-html lispintro-html emacs-html misc-html INFOS = lispref-info lispintro-info emacs-info misc-info PDFS = lispref-pdf lispintro-pdf emacs-pdf misc-pdf -PSS = lispref-ps lispintro-ps emacs-ps # no misc-ps +PSS = lispref-ps lispintro-ps emacs-ps misc-ps DOCS = $(DVIS) $(HTMLS) $(INFOS) $(PDFS) $(PSS) $(DOCS): @@ -930,6 +949,7 @@ $(DOCS): .PHONY: $(DOCS) docs pdf ps .PHONY: info dvi dist check html info-real force-info check-info-dir +## TODO add etc/refcards. docs: $(DOCS) dvi: $(DVIS) html: $(HTMLS) @@ -937,6 +957,55 @@ info-real: $(INFOS) pdf: $(PDFS) ps: $(PSS) + +INSTALL_DVI = install-emacs-dvi install-lispref-dvi \ + install-lispintro-dvi install-misc-dvi +INSTALL_HTML = install-emacs-html install-lispref-html \ + install-lispintro-html install-misc-html +INSTALL_PDF = install-emacs-pdf install-lispref-pdf \ + install-lispintro-pdf install-misc-pdf +INSTALL_PS = install-emacs-ps install-lispref-ps \ + install-lispintro-ps install-misc-ps +INSTALL_DOC = $(INSTALL_DVI) $(INSTALL_HTML) $(INSTALL_PDF) $(INSTALL_PS) + +## Install non .info forms of the documentation. +## TODO add etc/refcards. +$(INSTALL_DOC): + t=$@; IFS=-; set $$t; IFS=; cd doc/$$2 && $(MAKE) $(MFLAGS) $$1-$$3 + +.PHONY: $(INSTALL_DOC) install-doc +.PHONY: install-dvi install-html install-pdf install-ps + +install-doc: $(INSTALL_DOC) +install-dvi: $(INSTALL_DVI) +install-html: $(INSTALL_HTML) +install-pdf: $(INSTALL_PDF) +install-ps: $(INSTALL_PS) + + +UNINSTALL_DVI = uninstall-emacs-dvi uninstall-lispref-dvi \ + uninstall-lispintro-dvi uninstall-misc-dvi +UNINSTALL_HTML = uninstall-emacs-html uninstall-lispref-html \ + uninstall-lispintro-html uninstall-misc-html +UNINSTALL_PDF = uninstall-emacs-pdf uninstall-lispref-pdf \ + uninstall-lispintro-pdf uninstall-misc-pdf +UNINSTALL_PS = uninstall-emacs-ps uninstall-lispref-ps \ + uninstall-lispintro-ps uninstall-misc-ps +UNINSTALL_DOC = $(UNINSTALL_DVI) $(UNINSTALL_HTML) $(UNINSTALL_PDF) $(UNINSTALL_PS) + +$(UNINSTALL_DOC): + t=$@; IFS=-; set $$t; IFS=; cd doc/$$2 && $(MAKE) $(MFLAGS) $$1-$$3 + +.PHONY: $(UNINSTALL_DOC) uninstall-doc +.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps + +uninstall-doc: $(UNINSTALL_DOC) +uninstall-dvi: $(UNINSTALL_DVI) +uninstall-html: $(UNINSTALL_HTML) +uninstall-pdf: $(UNINSTALL_PDF) +uninstall-ps: $(UNINSTALL_PS) + + force-info: # Note that man/Makefile knows how to put the info files in $(srcdir), # so we can do ok running make in the build dir. @@ -957,13 +1026,15 @@ info: force-info fi # The info/dir file must be updated by hand when new manuals are added. +# Cannot add an info/dir entry for efaq-w32 since it is not installed +# on all platforms. check-info-dir: info cd info ; \ missing= ; \ for file in *; do \ test -f "$${file}" || continue ; \ case $${file} in \ - *-[0-9]*|COPYING|dir) continue ;; \ + *-[0-9]*|COPYING|dir|efaq-w32*) continue ;; \ esac ; \ file=`echo $${file} | sed 's/\.info//'` ; \ grep -q -F ": ($${file})." dir || missing="$${missing} $${file}" ; \ @@ -998,5 +1069,5 @@ check-declare: echo "You must build Emacs to use this command"; \ exit 1; \ fi - (cd leim; $(MAKE) $(MFLAGS) $@) - (cd lisp; $(MAKE) $(MFLAGS) $@) + cd leim && $(MAKE) $(MFLAGS) $@ + cd lisp && $(MAKE) $(MFLAGS) $@ diff --git a/admin/ChangeLog b/admin/ChangeLog index cbcd698e8b1..29118deba7f 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,30 @@ +2013-08-28 Paul Eggert + + * unidata/Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-27 Glenn Morris + + * admin.el (manual-misc-manuals): Use INFO_COMMON rather than + INFO_TARGETS. "faq" does not need special treatment any more. + +2013-08-15 Glenn Morris + + * make-tarball.txt: Mention generating pdfs in etc/refcards. + +2013-08-15 Xue Fuqiao + + * notes/hydra: More information about Hydra. + +2013-08-10 Xue Fuqiao + + * notes/hydra: New file. + +2013-08-04 Paul Eggert + + Fix some minor races in hosts lacking mkostemp (Bug#15015). + * merge-gnulib (GNULIB_MODULES): Add mkostemp. + 2013-07-12 Glenn Morris * admin.el (manual-style-string): Use non-abbreviated url. diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 53186b21688..c578d3d37e1 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -3,6 +3,10 @@ Tasks needed before the next release. * TO BE DONE SHORTLY BEFORE RELEASE ** Manuals +Check for node names using problematic characters: + find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} + +Sadly makeinfo does not warn about such characters. + Check cross-references between the manuals (eg from emacs to elisp) are correct. You can use something like the following in the info directory in the Emacs build tree: diff --git a/admin/admin.el b/admin/admin.el index 9c0015fc413..f8ca8aec261 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -195,19 +195,21 @@ Root must be the root of an Emacs source tree." (defun manual-misc-manuals (root) "Return doc/misc manuals as list of strings." - ;; Like `make -C doc/misc echo-info', but works if unconfigured. + ;; Similar to `make -C doc/misc echo-info', but works if unconfigured, + ;; and for INFO_TARGETS rather than INFO_INSTALL. (with-temp-buffer (insert-file-contents (expand-file-name "doc/misc/Makefile.in" root)) - (search-forward "INFO_TARGETS = ") - (let ((start (point)) - res) + ;; Should really use expanded value of INFO_TARGETS. + (search-forward "INFO_COMMON = ") + (let ((start (point))) (end-of-line) (while (and (looking-back "\\\\") (zerop (forward-line 1))) (end-of-line)) - (split-string (replace-regexp-in-string - "\\(\\\\\\|\\.info\\)" "" - (buffer-substring start (point))))))) + (append (split-string (replace-regexp-in-string + "\\(\\\\\\|\\.info\\)" "" + (buffer-substring start (point)))) + '("efaq-w32"))))) (defun make-manuals (root &optional type) "Generate the web manuals for the Emacs webpage. @@ -287,9 +289,8 @@ Optional argument TYPE is type of output (nil means all)." (defun manual-misc-html (name root html-node-dir html-mono-dir) ;; Hack to deal with the cases where .texi creates a different .info. - ;; Blech. TODO Why not just rename the .texi files? + ;; Blech. TODO Why not just rename the .texi (or .info) files? (let* ((texiname (cond ((equal name "ccmode") "cc-mode") - ((equal name "efaq") "faq") (t name))) (texi (expand-file-name (format "doc/misc/%s.texi" texiname) root))) (manual-html-node texi (expand-file-name name html-node-dir)) diff --git a/admin/cus-test.el b/admin/cus-test.el index 6b8ec9abe02..54d26cc11d6 100644 --- a/admin/cus-test.el +++ b/admin/cus-test.el @@ -202,6 +202,8 @@ The detected problematic options are stored in `cus-test-errors'." ;; Check the values (mapc (lambda (value) + ;; TODO for booleans, check for values that can be + ;; evaluated and are not t or nil. Usually a bug. (unless (widget-apply conv :match value) (setq mismatch 'mismatch))) values) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 005c6694228..fc7f81f0c28 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -61,6 +61,9 @@ General steps (for each step, check for possible errors): 5. autoreconf -i -I m4 --force make bootstrap + make -C etc/refcards + make -C etc/refcards clean + 6. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed @@ -144,6 +147,8 @@ General steps (for each step, check for possible errors): Download them and check the signatures. Check they build. 12. For a pretest, announce it on emacs-devel and info-gnu-emacs@gnu.org. + Probably should also include the platform-testers list: + https://lists.gnu.org/mailman/listinfo/platform-testers For a release, also announce it on info-gnu@gnu.org. (Probably bcc the info- addresses to make it less likely that people will followup on those lists.) diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 82e0cd77fca..97126704d10 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -32,7 +32,7 @@ GNULIB_MODULES=' fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat - manywarnings memrchr mktime + manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat diff --git a/admin/notes/bzr b/admin/notes/bzr index 8f7d0d94fa8..d3886abfd69 100644 --- a/admin/notes/bzr +++ b/admin/notes/bzr @@ -347,6 +347,9 @@ Runs on commit. Projects can enable it themselves by using `bzr config' to set post_commit_to option for a branch. See `bzr help email' (if you have the plugin installed) for other options. +The From: address will be that of your Savannah account, rather than +your `bzr whoami' information. + Note: if you have the bzr-email plugin installed locally, then when you commit to the Emacs repository it will also try to send a commit email from your local machine. If your machine is not configured to diff --git a/admin/notes/elpa b/admin/notes/elpa index db14456fe32..469a0ca8bd1 100644 --- a/admin/notes/elpa +++ b/admin/notes/elpa @@ -1,24 +1,21 @@ NOTES ON THE EMACS PACKAGE ARCHIVE -The GNU Emacs package archive, at elpa.gnu.org, is managed using a Bzr -branch named "elpa", hosted on Savannah. To check it out: +The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git +repository named "elpa", hosted on Savannah. To check it out: - bzr branch bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa elpa + git clone git://bzr.sv.gnu.org/emacs/elpa cd elpa - echo "public_branch = bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa" >> .bzr/branch/branch.conf - bzr bind bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/elpa + git remote set-url --push origin git+ssh://bzr.sv.gnu.org/srv/git/emacs/elpa [create task branch for edits, etc.] -Changes to this branch propagate to elpa.gnu.org in a semi-manual way. -There exists a copy of the elpa branch on that machine. Someone with -access logs in, pulls the latest changes from Savannah, and runs a -"deployment" script. This script (which is itself kept in the Bzr -branch) generates the content visible at http://elpa.gnu.org/packages. +Changes to this branch propagate to elpa.gnu.org via a "deployment" script run +daily. This script (which is kept in elpa/admin/update-archive.sh) generates +the content visible at http://elpa.gnu.org/packages. -The reason we set things up this way, instead of using the package -upload commands in package-x.el, is to let Emacs hackers conveniently -edit the contents of the "elpa" branch. (In particular, multi-file -packages are stored on the branch in source form, not as tarfiles.) +A new package is released as soon as the "version number" of that package is +changed. So you can use `elpa' to work on a package without fear of releasing +those changes prematurely. And once the code is ready, just bump the +version number to make a new release of the package. It is easy to use the elpa branch to deploy a "local" copy of the package archive. For details, see the README file in the elpa branch. diff --git a/admin/notes/hydra b/admin/notes/hydra new file mode 100644 index 00000000000..71e35d092c8 --- /dev/null +++ b/admin/notes/hydra @@ -0,0 +1,66 @@ +-*- outline -*- + +Copyright (C) 2013 Free Software Foundation, Inc. +See the end of the file for license conditions. + +NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA + +A continuous build for Emacs can be found at +http://hydra.nixos.org/jobset/gnu/emacs-trunk +http://hydra.nixos.org/jobset/gnu/emacs-24 + +* It builds Emacs on various platforms. +Sometimes jobs fail due to hydra problems rather than Emacs problems. +Eg it seems like the cygwin build will never work again. +http://lists.gnu.org/archive/html/hydra-users/2013-08/msg00000.html + +* Mail notifications +In addition to the web interface, Hydra can send notifications by +email when the build status of a project changes—e.g., from +`SUCCEEDED' to `FAILED'. It sends notifications about build status in +Emacs trunk to emacs-buildstatus@gnu.org. + +If you want to receive these notifications, please subscribe at +http://lists.gnu.org/mailman/listinfo/emacs-buildstatus + +* The Emacs jobset consists of the following jobs: + +** The `tarball' job +which gets a checkout from bzr, and does a bootstrap followed +by running make-dist to create a tarball. If this job fails, all the +others will too (because they use the tarball as input). + +** The `build' job +which starts from the tarball and does a normal build + +** The 'coverage' job +does a gcov build and then runs `make check'. Fails if any test fails. + +* Nix expressions +The recipe for GNU Emacs are available via Git: +http://git.savannah.gnu.org/cgit/hydra-recipes.git/tree/emacs + +To modify the build job, email the patch to hydra-users@gnu.org. The +build recipes are written in the Nix language. + +* Other Information +For a list of other GNU packages that have a continuous build on +Hydra, see http://hydra.nixos.org/project/gnu + +See http://www.gnu.org/software/devel.html#Hydra for more information. + + +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 . diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server index 3a21733747d..304251f3ce4 100644 --- a/admin/nt/README-ftp-server +++ b/admin/nt/README-ftp-server @@ -16,12 +16,6 @@ See the end of the file for license conditions. accustomed to compiling programs themselves. Corresponding source can be found in the parent directory in emacs-24.3.tar.gz. - If you have access to the World Wide Web, I would recommend pointing - your favorite web browser to the following document (if you haven't - already): - - http://www.gnu.org/software/emacs/windows/ntemacs.html - * IMPORTANT LEGAL REMINDER If you want to redistribute any of the precompiled distributions of @@ -230,16 +224,10 @@ See the end of the file for license conditions. * Further information - If you have access to the World Wide Web, I would recommend pointing - your favorite web browser to following the document (if you haven't - already): + The Emacs on MS Windows FAQ is distributed with Emacs (info + manual "efaq-w32"), and at - http://www.gnu.org/software/emacs/windows/ntemacs.html - - This document serves as an FAQ and a source for further information - about the Windows port and related software packages. Note that as - most of the information in that FAQ is for earlier versions, so some - information may not be relevant to Emacs-24.3. + http://www.gnu.org/software/emacs/manual/efaq-w32.html In addition to the FAQ, there is a mailing list for discussing issues related to the Windows port of Emacs. For information about the diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index c759079a49a..df225cc8cbf 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -21,7 +21,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -SHELL = /bin/sh +SHELL = @SHELL@ srcdir = @srcdir@ abs_builddir = @abs_builddir@ diff --git a/autogen/Makefile.in b/autogen/Makefile.in index d471a9eeb18..f26d3dce212 100644 --- a/autogen/Makefile.in +++ b/autogen/Makefile.in @@ -59,7 +59,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ @@ -202,14 +202,14 @@ DIST_COMMON = $(srcdir)/../nt/gnulib.mk $(srcdir)/Makefile.am \ @BUILDING_FOR_WINDOWSNT_FALSE@ getopt_int.h gettimeofday.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ group-member.c intprops.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ inttypes.in.h lstat.c memrchr.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ mktime-internal.h mktime.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ openat.h pathmax.h pselect.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ pthread_sigmask.c putenv.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ acl-internal.h acl.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ mkostemp.c mktime-internal.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ mktime.c openat.h pathmax.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ pselect.c pthread_sigmask.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ putenv.c acl-internal.h acl.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ acl_entries.c readlink.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ at-func.c readlinkat.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ root-uid.h sig2str.c sig2str.h \ -@BUILDING_FOR_WINDOWSNT_FALSE@ signal.in.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ root-uid.h secure_getenv.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ sig2str.c sig2str.h signal.in.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/_Noreturn.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ $(top_srcdir)/build-aux/snippet/c++defs.h \ @@ -224,12 +224,13 @@ DIST_COMMON = $(srcdir)/../nt/gnulib.mk $(srcdir)/Makefile.am \ @BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtoumax.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ symlink.c sys_select.in.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ sys_stat.in.h sys_time.in.h \ -@BUILDING_FOR_WINDOWSNT_FALSE@ time.in.h time_r.c timespec.h \ -@BUILDING_FOR_WINDOWSNT_FALSE@ u64.h unistd.in.h unsetenv.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ utimens.h verify.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ tempname.h time.in.h time_r.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ timespec.h u64.h unistd.in.h \ +@BUILDING_FOR_WINDOWSNT_FALSE@ unsetenv.c utimens.h verify.h \ @BUILDING_FOR_WINDOWSNT_FALSE@ xalloc-oversized.h @BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36_TRUE@am__append_10 = gettext.h @BUILDING_FOR_WINDOWSNT_FALSE@am__append_11 = sys sys +@BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_tempname_TRUE@am__append_12 = tempname.c subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ @@ -255,33 +256,35 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/longlong.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memrchr.m4 \ - $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/multiarch.m4 \ - $(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/off_t.m4 \ - $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe2.m4 \ - $(top_srcdir)/m4/pselect.m4 \ + $(top_srcdir)/m4/mkostemp.m4 $(top_srcdir)/m4/mktime.m4 \ + $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nocrash.m4 \ + $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/pathmax.m4 \ + $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/pselect.m4 \ $(top_srcdir)/m4/pthread_sigmask.m4 $(top_srcdir)/m4/putenv.m4 \ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readlinkat.m4 \ - $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/sha1.m4 \ - $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \ - $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signal_h.m4 \ - $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/ssize_t.m4 \ - $(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-time.m4 \ - $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \ - $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \ - $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \ - $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ - $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/string_h.m4 \ - $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtoll.m4 \ - $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \ - $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_select_h.m4 \ + $(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/setenv.m4 \ + $(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sha256.m4 \ + $(top_srcdir)/m4/sha512.m4 $(top_srcdir)/m4/sig2str.m4 \ + $(top_srcdir)/m4/signal_h.m4 $(top_srcdir)/m4/socklen.m4 \ + $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \ + $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ + $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdarg.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \ + $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \ + $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \ + $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strtoimax.m4 \ + $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoull.m4 \ + $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/symlink.m4 \ + $(top_srcdir)/m4/sys_select_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \ - $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \ - $(top_srcdir)/m4/timer_time.m4 $(top_srcdir)/m4/timespec.m4 \ - $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \ - $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \ - $(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/warnings.m4 \ - $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \ + $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timer_time.m4 \ + $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ + $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utimbuf.m4 \ + $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \ + $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -296,10 +299,11 @@ am__libgnu_a_SOURCES_DIST = allocator.c binary-io.h binary-io.c \ careadlinkat.c close-stream.c md5.c sha1.c sha256.c sha512.c \ dtoastr.c dtotimespec.c filemode.c gettext.h gettime.c pipe2.c \ acl-errno-valid.c file-has-acl.c qcopy-acl.c qset-acl.c \ - stat-time.c strftime.c timespec.c timespec-add.c \ + stat-time.c strftime.c tempname.c timespec.c timespec-add.c \ timespec-sub.c u64.c unistd.c utimens.c openat-die.c \ save-cwd.c am__objects_1 = +@BUILDING_FOR_WINDOWSNT_FALSE@@gl_GNULIB_ENABLED_tempname_TRUE@am__objects_2 = tempname.$(OBJEXT) @BUILDING_FOR_WINDOWSNT_FALSE@am_libgnu_a_OBJECTS = \ @BUILDING_FOR_WINDOWSNT_FALSE@ allocator.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_FALSE@ binary-io.$(OBJEXT) \ @@ -323,6 +327,7 @@ am__objects_1 = @BUILDING_FOR_WINDOWSNT_FALSE@ qset-acl.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_FALSE@ stat-time.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_FALSE@ strftime.$(OBJEXT) \ +@BUILDING_FOR_WINDOWSNT_FALSE@ $(am__objects_2) \ @BUILDING_FOR_WINDOWSNT_FALSE@ timespec.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_FALSE@ timespec-add.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_FALSE@ timespec-sub.$(OBJEXT) \ @@ -350,15 +355,16 @@ am__objects_1 = @BUILDING_FOR_WINDOWSNT_TRUE@ timespec-add.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_TRUE@ timespec-sub.$(OBJEXT) \ @BUILDING_FOR_WINDOWSNT_TRUE@ u64.$(OBJEXT) utimens.$(OBJEXT) \ -@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__objects_1) +@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__objects_1) $(am__objects_2) am__EXTRA_libgnu_a_SOURCES_DIST = openat-proc.c ftoastr.c dup2.c \ euidaccess.c execinfo.c at-func.c faccessat.c fcntl.c \ fdatasync.c fdopendir.c fpending.c fstatat.c fsync.c \ getdtablesize.c getgroups.c getloadavg.c getopt.c getopt1.c \ - gettimeofday.c group-member.c lstat.c memrchr.c mktime.c \ - pselect.c pthread_sigmask.c putenv.c acl_entries.c readlink.c \ - readlinkat.c sig2str.c stat.c strtoimax.c strtol.c strtoll.c \ - strtoul.c strtoull.c strtoumax.c symlink.c time_r.c unsetenv.c + gettimeofday.c group-member.c lstat.c memrchr.c mkostemp.c \ + mktime.c pselect.c pthread_sigmask.c putenv.c acl_entries.c \ + readlink.c readlinkat.c secure_getenv.c sig2str.c stat.c \ + strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \ + strtoumax.c symlink.c time_r.c unsetenv.c libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles @@ -417,6 +423,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPFLAGS = @DEPFLAGS@ DESLIB = @DESLIB@ +DOCMISC_W32 = @DOCMISC_W32@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ @@ -897,6 +904,7 @@ LIBXSM = @LIBXSM@ LIBXTR6 = @LIBXTR6@ LIBXT_OTHER = @LIBXT_OTHER@ LIBX_OTHER = @LIBX_OTHER@ +LIBZ = @LIBZ@ LIB_ACL = @LIB_ACL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_EACCESS = @LIB_EACCESS@ @@ -1123,6 +1131,7 @@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNEXEC_OBJ = @UNEXEC_OBJ@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +UPDATE_MANIFEST = @UPDATE_MANIFEST@ USE_ACL = @USE_ACL@ VERSION = @VERSION@ VMLIMIT_OBJ = @VMLIMIT_OBJ@ @@ -1178,6 +1187,7 @@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ etcdir = @etcdir@ +etcdocdir = @etcdocdir@ exec_prefix = @exec_prefix@ gamedir = @gamedir@ gameuser = @gameuser@ @@ -1210,6 +1220,7 @@ ns_appbindir = @ns_appbindir@ ns_appdir = @ns_appdir@ ns_appresdir = @ns_appresdir@ ns_appsrc = @ns_appsrc@ +ns_check_file = @ns_check_file@ ns_self_contained = @ns_self_contained@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ @@ -1248,10 +1259,10 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src @BUILDING_FOR_WINDOWSNT_FALSE@ acl-errno-valid.c file-has-acl.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ qcopy-acl.c qset-acl.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ stat-time.c strftime.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ timespec.c timespec-add.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-sub.c u64.c unistd.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ utimens.c openat-die.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ save-cwd.c +@BUILDING_FOR_WINDOWSNT_FALSE@ $(am__append_12) timespec.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ timespec-add.c timespec-sub.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ u64.c unistd.c utimens.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ openat-die.c save-cwd.c @BUILDING_FOR_WINDOWSNT_TRUE@libgnu_a_SOURCES = c-ctype.h c-ctype.c \ @BUILDING_FOR_WINDOWSNT_TRUE@ c-strcase.h c-strcasecmp.c \ @BUILDING_FOR_WINDOWSNT_TRUE@ c-strncasecmp.c close-stream.c \ @@ -1262,7 +1273,8 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src @BUILDING_FOR_WINDOWSNT_TRUE@ file-has-acl.c qcopy-acl.c \ @BUILDING_FOR_WINDOWSNT_TRUE@ stat-time.c strftime.c timespec.c \ @BUILDING_FOR_WINDOWSNT_TRUE@ timespec-add.c timespec-sub.c \ -@BUILDING_FOR_WINDOWSNT_TRUE@ u64.c utimens.c $(am__append_10) +@BUILDING_FOR_WINDOWSNT_TRUE@ u64.c utimens.c $(am__append_10) \ +@BUILDING_FOR_WINDOWSNT_TRUE@ $(am__append_12) @BUILDING_FOR_WINDOWSNT_FALSE@libgnu_a_LIBADD = $(gl_LIBOBJS) @BUILDING_FOR_WINDOWSNT_TRUE@libgnu_a_LIBADD = $(gl_LIBOBJS) @BUILDING_FOR_WINDOWSNT_FALSE@libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @@ -1276,11 +1288,12 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src @BUILDING_FOR_WINDOWSNT_FALSE@ getgroups.c getloadavg.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ getopt.c getopt1.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ gettimeofday.c group-member.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ lstat.c memrchr.c mktime.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ pselect.c pthread_sigmask.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ putenv.c acl_entries.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ readlink.c at-func.c \ -@BUILDING_FOR_WINDOWSNT_FALSE@ readlinkat.c sig2str.c stat.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ lstat.c memrchr.c mkostemp.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ mktime.c pselect.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ pthread_sigmask.c putenv.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ acl_entries.c readlink.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ at-func.c readlinkat.c \ +@BUILDING_FOR_WINDOWSNT_FALSE@ secure_getenv.c sig2str.c stat.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtol.c strtoll.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ strtol.c strtoul.c strtoull.c \ @BUILDING_FOR_WINDOWSNT_FALSE@ strtoimax.c strtoumax.c \ @@ -1402,6 +1415,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memrchr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkostemp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-die.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-proc.Po@am__quote@ @@ -1414,6 +1428,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secure_getenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Po@am__quote@ @@ -1428,6 +1443,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoumax.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tempname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-add.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-sub.Po@am__quote@ diff --git a/autogen/aclocal.m4 b/autogen/aclocal.m4 index c9e796a081f..5beeef676cc 100644 --- a/autogen/aclocal.m4 +++ b/autogen/aclocal.m4 @@ -1024,6 +1024,7 @@ m4_include([m4/lstat.m4]) m4_include([m4/manywarnings.m4]) m4_include([m4/md5.m4]) m4_include([m4/memrchr.m4]) +m4_include([m4/mkostemp.m4]) m4_include([m4/mktime.m4]) m4_include([m4/multiarch.m4]) m4_include([m4/nocrash.m4]) @@ -1035,6 +1036,7 @@ m4_include([m4/pthread_sigmask.m4]) m4_include([m4/putenv.m4]) m4_include([m4/readlink.m4]) m4_include([m4/readlinkat.m4]) +m4_include([m4/secure_getenv.m4]) m4_include([m4/setenv.m4]) m4_include([m4/sha1.m4]) m4_include([m4/sha256.m4]) @@ -1064,6 +1066,7 @@ m4_include([m4/sys_select_h.m4]) m4_include([m4/sys_socket_h.m4]) m4_include([m4/sys_stat_h.m4]) m4_include([m4/sys_time_h.m4]) +m4_include([m4/tempname.m4]) m4_include([m4/time_h.m4]) m4_include([m4/time_r.m4]) m4_include([m4/timer_time.m4]) diff --git a/autogen/config.in b/autogen/config.in index 5c5b2dfdbca..a8ca66e22c8 100644 --- a/autogen/config.in +++ b/autogen/config.in @@ -192,6 +192,10 @@ along with GNU Emacs. If not, see . */ whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF +/* Define to a C preprocessor expression that evaluates to 1 or 0, depending + whether the gnulib module mkostemp shall be considered present. */ +#undef GNULIB_MKOSTEMP + /* enable some gnulib portability checks */ #undef GNULIB_PORTCHECK @@ -206,7 +210,7 @@ along with GNU Emacs. If not, see . */ #undef GNU_MALLOC /* Define to set the G_SLICE environment variable to "always-malloc" at - startup, if using GTK. */ + startup. */ #undef G_SLICE_ALWAYS_MALLOC /* Define to 1 if you have the `accept4' function. */ @@ -404,10 +408,6 @@ along with GNU Emacs. If not, see . */ don't. */ #undef HAVE_DECL__PUTENV -/* Define to 1 if you have the declaration of `__fpending', and to 0 if you - don't. */ -#undef HAVE_DECL___FPENDING - /* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL___SYS_SIGLIST @@ -625,6 +625,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Define to 1 if you have the `issetugid' function. */ +#undef HAVE_ISSETUGID + /* Define to 1 if you have the jpeg library (-ljpeg). */ #undef HAVE_JPEG @@ -753,9 +756,6 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the `mkostemp' function. */ #undef HAVE_MKOSTEMP -/* Define to 1 if you have the `mkstemp' function. */ -#undef HAVE_MKSTEMP - /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP @@ -847,6 +847,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if using librsvg. */ #undef HAVE_RSVG +/* Define to 1 if you have the `secure_getenv' function. */ +#undef HAVE_SECURE_GETENV + /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT @@ -1183,6 +1186,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you want to use the X window system. */ #undef HAVE_X_WINDOWS +/* Define to 1 if you have the zlib library (-lz). */ +#undef HAVE_ZLIB + /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL @@ -1198,8 +1204,8 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the `__executable_start' function. */ #undef HAVE___EXECUTABLE_START -/* Define to 1 if you have the `__fpending' function. */ -#undef HAVE___FPENDING +/* Define to 1 if you have the `__secure_getenv' function. */ +#undef HAVE___SECURE_GETENV /* Define to support using a Hesiod database to find the POP server. */ #undef HESIOD diff --git a/autogen/configure b/autogen/configure index 3d207e12537..61c03785f61 100755 --- a/autogen/configure +++ b/autogen/configure @@ -604,6 +604,7 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS SUBDIR_MAKEFILES_IN +ns_check_file WINDOW_SYSTEM_OBJ EMACS_HEAPSIZE TEMACS_POST_LINK @@ -614,12 +615,16 @@ LIBGNU_LIBDEPS gltests_WITNESS gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE +gl_GNULIB_ENABLED_tempname_FALSE +gl_GNULIB_ENABLED_tempname_TRUE gl_GNULIB_ENABLED_strtoull_FALSE gl_GNULIB_ENABLED_strtoull_TRUE gl_GNULIB_ENABLED_strtoll_FALSE gl_GNULIB_ENABLED_strtoll_TRUE gl_GNULIB_ENABLED_stat_FALSE gl_GNULIB_ENABLED_stat_TRUE +gl_GNULIB_ENABLED_secure_getenv_FALSE +gl_GNULIB_ENABLED_secure_getenv_TRUE gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_FALSE gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_TRUE gl_GNULIB_ENABLED_pathmax_FALSE @@ -1275,6 +1280,7 @@ LD_SWITCH_X_SITE gameuser gamedir bitmapdir +etcdocdir archlibdir etcdir x_default_search_path @@ -1311,6 +1317,7 @@ LIBXSM LIBGPM LIBGIF LIBTIFF +LIBZ LIBPNG LIBJPEG LIBXPM @@ -1364,6 +1371,7 @@ FIRSTFILE_OBJ W32_RES_LINK CLIENTW CLIENTRES +UPDATE_MANIFEST EMACS_MANIFEST EMACSRES W32_LIBS @@ -1390,6 +1398,7 @@ UNEXEC_OBJ C_SWITCH_MACHINE LD_SWITCH_SYSTEM CANNOT_DUMP +DOCMISC_W32 INFO_OPTS INFO_EXT HAVE_MAKEINFO @@ -1533,6 +1542,7 @@ with_gconf with_gsettings with_selinux with_gnutls +with_zlib with_file_notification with_makeinfo with_compress_info @@ -2233,8 +2243,8 @@ Optional Packages: --with-mail-unlink unlink, rather than empty, mail spool after reading --with-mailhost=HOSTNAME string giving default POP mail host - --with-sound=VALUE compile with sound support (VALUE one of: yes, - ossaudio, alsa, no; default yes). Only for + --with-sound=VALUE compile with sound support (VALUE one of: yes, alsa, + oss, bsd-ossaudio, no; default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW. --with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk2, gtk3, lucid or athena, motif, no) @@ -2263,6 +2273,7 @@ Optional Packages: --without-gsettings don't compile with GSettings support --without-selinux don't compile with SELinux support --without-gnutls don't use -lgnutls for SSL/TLS support + --without-zlib don't compile with zlib decompression support --with-file-notification=LIB use a file notification library (LIB one of: yes, gfile, inotify, w32, no) @@ -3378,7 +3389,6 @@ as_fn_append ac_func_list " faccessat" as_fn_append ac_func_list " fcntl" as_fn_append ac_func_list " fdopendir" as_fn_append ac_header_list " stdio_ext.h" -as_fn_append ac_func_list " __fpending" as_fn_append ac_func_list " fstatat" as_fn_append ac_func_list " fsync" gl_getopt_required=GNU @@ -3390,6 +3400,7 @@ as_fn_append ac_header_list " wchar.h" as_fn_append ac_header_list " stdint.h" as_fn_append ac_header_list " inttypes.h" as_fn_append ac_func_list " lstat" +as_fn_append ac_func_list " mkostemp" as_fn_append ac_func_list " pipe2" as_fn_append ac_header_list " sys/select.h" as_fn_append ac_func_list " pselect" @@ -3407,6 +3418,7 @@ as_fn_append ac_func_list " futimens" as_fn_append ac_func_list " utimensat" as_fn_append ac_func_list " lutimes" as_fn_append ac_func_list " getdtablesize" +as_fn_append ac_func_list " secure_getenv" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -3476,16 +3488,37 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -emacs_config_options="$@" -## Add some environment variables, if they were passed via the environment -## rather than on the command-line. -for var in CFLAGS CPPFLAGS LDFLAGS; do - case "$emacs_config_options" in - *$var=*) continue ;; - esac - eval val="\$${var}" - test x"$val" = x && continue - emacs_config_options="${emacs_config_options}${emacs_config_options:+ }$var=\"$val\"" +emacs_config_options= +optsep= +for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do + case $opt in + -n | --no-create | --no-recursion) + continue ;; + CFLAGS | CPPFLAGS | LDFLAGS) + eval 'test "${'$opt'+set}" = set' || continue + case " $*" in + *" $opt="*) continue ;; + esac + eval opt=$opt=\$$opt ;; + esac + + emacs_shell_specials=$IFS\''"#$&()*;<>?[\\`{|~' + case $opt in + *["$emacs_shell_specials"]*) + case $opt in + *\'*) + emacs_quote_apostrophes="s/'/'\\\\''/g" + opt=`$as_echo "$opt" | sed "$emacs_quote_apostrophes"` ;; + esac + opt="'$opt'" + case $opt in + *['"\\']*) + emacs_quote_for_c='s/["\\]/\\&/g; $!s/$/\\n\\/' + opt=`$as_echo "$opt" | sed "$emacs_quote_for_c"` ;; + esac ;; + esac + as_fn_append emacs_config_options "$optsep$opt" + optsep=' ' done ac_config_headers="$ac_config_headers src/config.h:src/config.in" @@ -4003,7 +4036,7 @@ locallisppath='${datadir}/emacs/${version}/site-lisp:'\ lisppath='${locallisppath}:${standardlisppath}' etcdir='${datadir}/emacs/${version}/etc' archlibdir='${libexecdir}/emacs/${version}/${configuration}' -docdir='${datadir}/emacs/${version}/etc' +etcdocdir='${datadir}/emacs/${version}/etc' gamedir='${localstatedir}/games/emacs' @@ -4119,9 +4152,9 @@ fi # Check whether --with-sound was given. if test "${with_sound+set}" = set; then : withval=$with_sound; case "${withval}" in - yes|no|ossaudio|alsa) val=$withval ;; + yes|no|alsa|oss|bsd-ossaudio) val=$withval ;; *) as_fn_error "\`--with-sound=$withval' is invalid; -this option's value should be \`yes', \`no', \`ossaudio', or \`alsa'." "$LINENO" 5 +this option's value should be \`yes', \`no', \`alsa', \`oss', or \`bsd-ossaudio'." "$LINENO" 5 ;; esac with_sound=$val @@ -4349,6 +4382,14 @@ else fi +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; +else + with_zlib=$with_features +fi + + # Check whether --with-file-notification was given. if test "${with_file_notification+set}" = set; then : @@ -7286,6 +7327,7 @@ esac # Code from module lstat: # Code from module manywarnings: # Code from module memrchr: + # Code from module mkostemp: # Code from module mktime: # Code from module multiarch: # Code from module nocrash: @@ -7299,6 +7341,7 @@ esac # Code from module readlink: # Code from module readlinkat: # Code from module root-uid: + # Code from module secure_getenv: # Code from module sig2str: # Code from module signal-h: # Code from module snippet/_Noreturn: @@ -7329,6 +7372,7 @@ esac # Code from module sys_select: # Code from module sys_stat: # Code from module sys_time: + # Code from module tempname: # Code from module time: # Code from module time_r: # Code from module timer-time: @@ -7899,6 +7943,10 @@ $as_echo "$gl_cv_cc_uninitialized_supported" >&6; } for w in $ws; do as_gl_Warn=`$as_echo "gl_cv_warn_c_$w" | $as_tr_sh` +gl_positive="$w" +case $gl_positive in + -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;; +esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles $w" >&5 $as_echo_n "checking whether C compiler handles $w... " >&6; } if { as_var=$as_gl_Warn; eval "test \"\${$as_var+set}\" = set"; }; then : @@ -7906,7 +7954,7 @@ if { as_var=$as_gl_Warn; eval "test \"\${$as_var+set}\" = set"; }; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors $w" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors $gl_positive" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7945,7 +7993,7 @@ if test "${gl_cv_warn_c__Wno_missing_field_initializers+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-missing-field-initializers" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7981,7 +8029,7 @@ if test "${gl_cv_warn_c__Wno_sign_compare+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-sign-compare" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wsign-compare" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8017,7 +8065,7 @@ if test "${gl_cv_warn_c__Wno_type_limits+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-type-limits" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtype-limits" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8053,7 +8101,7 @@ if test "${gl_cv_warn_c__Wno_switch+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-switch" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wswitch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8089,7 +8137,7 @@ if test "${gl_cv_warn_c__Wno_unused_parameter+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-unused-parameter" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wunused-parameter" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8125,7 +8173,7 @@ if test "${gl_cv_warn_c__Wno_format_nonliteral+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-format-nonliteral" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wformat-nonliteral" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8164,7 +8212,7 @@ if test "${gl_cv_warn_c__Wno_logical_op+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-logical-op" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wlogical-op" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8203,7 +8251,7 @@ if test "${gl_cv_warn_c__Wno_format_extra_args+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-format-extra-args" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wformat-extra-args" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8239,7 +8287,7 @@ if test "${gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare+set}" = else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-tautological-constant-out-of-range-compare" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtautological-constant-out-of-range-compare" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8275,7 +8323,7 @@ if test "${gl_cv_warn_c__Wno_unused_command_line_argument+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-unused-command-line-argument" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wunused-command-line-argument" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8311,7 +8359,7 @@ if test "${gl_cv_warn_c__Wno_unused_value+set}" = set; then : else gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wno-unused-value" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wunused-value" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8709,6 +8757,13 @@ INFO_OPTS=--no-split +if test $opsys = mingw32; then + DOCMISC_W32=efaq-w32 +else + DOCMISC_W32= +fi + + if test x$GCC = xyes; then test "x$GCC_LINK_TEST_OPTIONS" != x && \ @@ -9027,7 +9082,10 @@ fi done - if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then + test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \ + as_fn_error "OSS sound support requested but not found." "$LINENO" 5 + + if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then # Emulation library used on NetBSD. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5 $as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; } @@ -9071,8 +9129,8 @@ else LIBSOUND= fi - test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \ - as_fn_error "ossaudio sound support requested but not found." "$LINENO" 5 + test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \ + as_fn_error "bsd-ossaudio sound support requested but not found." "$LINENO" 5 fi @@ -10046,7 +10104,7 @@ if test "${HAVE_NS}" = yes; then exec_prefix=${ns_appbindir} libexecdir="\${ns_appbindir}/libexec" archlibdir="\${ns_appbindir}/libexec" - docdir="\${ns_appresdir}/etc" + etcdocdir="\${ns_appresdir}/etc" etcdir="\${ns_appresdir}/etc" infodir="\${ns_appresdir}/info" mandir="\${ns_appresdir}/man" @@ -10071,6 +10129,7 @@ CLIENTRES= CLIENTW= W32_RES_LINK= EMACS_MANIFEST= +UPDATE_MANIFEST= if test "${with_w32}" != no; then case "${opsys}" in cygwin) @@ -10234,6 +10293,7 @@ fi x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;; *) EMACS_MANIFEST="emacs-x86.manifest" ;; esac + UPDATE_MANIFEST=update-game-score.exe.manifest if test "${opsys}" = "cygwin"; then W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32" W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool" @@ -10271,6 +10331,7 @@ fi + if test "${HAVE_W32}" = "yes"; then window_system=w32 with_xft=no @@ -13613,6 +13674,83 @@ fi fi +HAVE_ZLIB=no +LIBZ= +if test "${with_zlib}" != "no"; then + OLIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing inflateEnd" >&5 +$as_echo_n "checking for library containing inflateEnd... " >&6; } +if test "${ac_cv_search_inflateEnd+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflateEnd (); +int +main () +{ +return inflateEnd (); + ; + return 0; +} +_ACEOF +for ac_lib in '' z; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_inflateEnd=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_inflateEnd+set}" = set; then : + break +fi +done +if test "${ac_cv_search_inflateEnd+set}" = set; then : + +else + ac_cv_search_inflateEnd=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inflateEnd" >&5 +$as_echo "$ac_cv_search_inflateEnd" >&6; } +ac_res=$ac_cv_search_inflateEnd +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + HAVE_ZLIB=yes +fi + + LIBS=$OLIBS + case $ac_cv_search_inflateEnd in + -*) LIBZ=$ac_cv_search_inflateEnd ;; + esac +fi +if test "${HAVE_ZLIB}" = "yes"; then + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + ### mingw32 doesn't use -lz, since it loads the library dynamically. + if test "${opsys}" = "mingw32"; then + LIBZ= + fi +fi + + + ### Use -ltiff if available, unless `--with-tiff=no'. ### mingw32 doesn't use -ltiff, since it loads the library dynamically. HAVE_TIFF=no @@ -14692,7 +14830,7 @@ select getpagesize setlocale \ getrlimit setrlimit shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ -gai_strerror mkostemp mkstemp getline getdelim sync \ +gai_strerror getline getdelim sync \ difftime posix_memalign \ getpwent endpwent getgrent endgrent \ touchlock \ @@ -16350,7 +16488,7 @@ esac emacs_broken_SIGIO=no case $opsys in - hpux* | irix6-5 | openbsd | sol2* | unixware | gnu-kfreebsd ) + hpux* | irix6-5 | openbsd | sol2* | unixware ) emacs_broken_SIGIO=yes ;; @@ -16468,7 +16606,7 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h $as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, \"%s\", ptyname); }" >>confdefs.h if test "x$ac_cv_func_posix_openpt" = xyes; then - $as_echo "#define PTY_OPEN fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY)" >>confdefs.h + $as_echo "#define PTY_OPEN do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (0)" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h @@ -16965,7 +17103,7 @@ fi case $opsys in - cygwin) + cygwin) $as_echo "#define G_SLICE_ALWAYS_MALLOC 1" >>confdefs.h @@ -17068,7 +17206,6 @@ cat >>confdefs.h <<_ACEOF #define EMACS_CONFIGURATION "${canonical}" _ACEOF -emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"` cat >>confdefs.h <<_ACEOF #define EMACS_CONFIG_OPTIONS "${emacs_config_options}" @@ -18512,8 +18649,6 @@ _ACEOF - - GNULIB_FCHMODAT=0; GNULIB_FSTAT=0; GNULIB_FSTATAT=0; @@ -20703,6 +20838,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF + + GNULIB_MKTIME=0; GNULIB_NANOSLEEP=0; GNULIB_STRPTIME=0; @@ -21932,6 +22069,8 @@ _ACEOF + + if false; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' @@ -22114,9 +22253,11 @@ _ACEOF + : + : @@ -22950,27 +23091,40 @@ _ACEOF - - fp_headers=' -# include -# if HAVE_STDIO_EXT_H -# include -# endif -' - ac_fn_c_check_decl "$LINENO" "__fpending" "ac_cv_have_decl___fpending" "$fp_headers -" -if test "x$ac_cv_have_decl___fpending" = x""yes; then : - ac_have_decl=1 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __fpending" >&5 +$as_echo_n "checking for __fpending... " >&6; } +if test "${gl_cv_func___fpending+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_have_decl=0 -fi -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL___FPENDING $ac_have_decl + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #if HAVE_STDIO_EXT_H + # include + #endif + +int +main () +{ +return ! __fpending (stdin); + ; + return 0; +} _ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_func___fpending=yes +else + gl_cv_func___fpending=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func___fpending" >&5 +$as_echo "$gl_cv_func___fpending" >&6; } - if test $ac_cv_func___fpending = no; then + if test $gl_cv_func___fpending = no; then @@ -24090,6 +24244,48 @@ done + if test $ac_cv_func_mkostemp != yes; then + HAVE_MKOSTEMP=0 + fi + + if test $HAVE_MKOSTEMP = 0; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS mkostemp.$ac_objext" + + + + fi + + +cat >>confdefs.h <<_ACEOF +#define GNULIB_MKOSTEMP 1 +_ACEOF + + + + + + + + GNULIB_MKOSTEMP=1 + + + + + + + + + + + if test $APPLE_UNIVERSAL_BUILD = 1; then # A universal build on Apple Mac OS X platforms. # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. @@ -27493,9 +27689,11 @@ $as_echo "#define FUTIMESAT_NULL_BUG 1" >>confdefs.h gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false gl_gnulib_enabled_pathmax=false gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false + gl_gnulib_enabled_secure_getenv=false gl_gnulib_enabled_stat=false gl_gnulib_enabled_strtoll=false gl_gnulib_enabled_strtoull=false + gl_gnulib_enabled_tempname=false gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b () { @@ -28096,6 +28294,70 @@ fi gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true fi } + func_gl_gnulib_m4code_secure_getenv () + { + if ! $gl_gnulib_enabled_secure_getenv; then + + + + + + if test $ac_cv_func_secure_getenv = no; then + HAVE_SECURE_GETENV=0 + fi + + if test $HAVE_SECURE_GETENV = 0; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS secure_getenv.$ac_objext" + + + for ac_func in __secure_getenv +do : + ac_fn_c_check_func "$LINENO" "__secure_getenv" "ac_cv_func___secure_getenv" +if test "x$ac_cv_func___secure_getenv" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE___SECURE_GETENV 1 +_ACEOF + +fi +done + + if test $ac_cv_func___secure_getenv = no; then + for ac_func in issetugid +do : + ac_fn_c_check_func "$LINENO" "issetugid" "ac_cv_func_issetugid" +if test "x$ac_cv_func_issetugid" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ISSETUGID 1 +_ACEOF + +fi +done + + fi + + fi + + + + + + GNULIB_SECURE_GETENV=1 + + + + + + gl_gnulib_enabled_secure_getenv=true + fi + } func_gl_gnulib_m4code_stat () { if ! $gl_gnulib_enabled_stat; then @@ -28340,6 +28602,18 @@ done gl_gnulib_enabled_strtoull=true fi } + func_gl_gnulib_m4code_tempname () + { + if ! $gl_gnulib_enabled_tempname; then + + + : + + + gl_gnulib_enabled_tempname=true + func_gl_gnulib_m4code_secure_getenv + fi + } func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec () { if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then @@ -28382,6 +28656,9 @@ done if test $REPLACE_LSTAT = 1; then func_gl_gnulib_m4code_stat fi + if test $HAVE_MKOSTEMP = 0; then + func_gl_gnulib_m4code_tempname + fi if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then func_gl_gnulib_m4code_stat fi @@ -28481,6 +28758,14 @@ else gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_FALSE= fi + if $gl_gnulib_enabled_secure_getenv; then + gl_GNULIB_ENABLED_secure_getenv_TRUE= + gl_GNULIB_ENABLED_secure_getenv_FALSE='#' +else + gl_GNULIB_ENABLED_secure_getenv_TRUE='#' + gl_GNULIB_ENABLED_secure_getenv_FALSE= +fi + if $gl_gnulib_enabled_stat; then gl_GNULIB_ENABLED_stat_TRUE= gl_GNULIB_ENABLED_stat_FALSE='#' @@ -28505,6 +28790,14 @@ else gl_GNULIB_ENABLED_strtoull_FALSE= fi + if $gl_gnulib_enabled_tempname; then + gl_GNULIB_ENABLED_tempname_TRUE= + gl_GNULIB_ENABLED_tempname_FALSE='#' +else + gl_GNULIB_ENABLED_tempname_TRUE='#' + gl_GNULIB_ENABLED_tempname_FALSE= +fi + if $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE= gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE='#' @@ -28713,6 +29006,7 @@ echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE} echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}" echo " Does Emacs use -lotf? ${HAVE_LIBOTF}" echo " Does Emacs use -lxft? ${HAVE_XFT}" +echo " Does Emacs directly use zlib? ${HAVE_ZLIB}" echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" echo @@ -28760,10 +29054,13 @@ if test "$HAVE_NS" = "yes"; then if test "$NS_IMPL_GNUSTEP" = yes; then ac_config_files="$ac_config_files nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in" + ns_check_file=Resources/Info-gnustep.plist else ac_config_files="$ac_config_files nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in" + ns_check_file=Contents/Info.plist fi + fi SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile nt/Makefile" @@ -28993,6 +29290,10 @@ if test -z "${gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_TRUE}" && test as_fn_error "conditional \"gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${gl_GNULIB_ENABLED_secure_getenv_TRUE}" && test -z "${gl_GNULIB_ENABLED_secure_getenv_FALSE}"; then + as_fn_error "conditional \"gl_GNULIB_ENABLED_secure_getenv\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${gl_GNULIB_ENABLED_stat_TRUE}" && test -z "${gl_GNULIB_ENABLED_stat_FALSE}"; then as_fn_error "conditional \"gl_GNULIB_ENABLED_stat\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -29005,6 +29306,10 @@ if test -z "${gl_GNULIB_ENABLED_strtoull_TRUE}" && test -z "${gl_GNULIB_ENABLED_ as_fn_error "conditional \"gl_GNULIB_ENABLED_strtoull\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${gl_GNULIB_ENABLED_tempname_TRUE}" && test -z "${gl_GNULIB_ENABLED_tempname_FALSE}"; then + as_fn_error "conditional \"gl_GNULIB_ENABLED_tempname\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_TRUE}" && test -z "${gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_FALSE}"; then as_fn_error "conditional \"gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/configure.ac b/configure.ac index d8557f29898..2d12a8f8297 100644 --- a/configure.ac +++ b/configure.ac @@ -24,18 +24,43 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) AC_INIT(emacs, 24.3.50) +dnl Set emacs_config_options to the options of 'configure', quoted for the shell, +dnl and then quoted again for a C string. Separate options with spaces. +dnl Add some environment variables, if they were passed via the environment +dnl rather than on the command-line. +emacs_config_options= +optsep= dnl This is the documented way to record the args passed to configure, dnl rather than $ac_configure_args. -emacs_config_options="$@" -## Add some environment variables, if they were passed via the environment -## rather than on the command-line. -for var in CFLAGS CPPFLAGS LDFLAGS; do - case "$emacs_config_options" in - *$var=*) continue ;; - esac - eval val="\$${var}" - test x"$val" = x && continue - emacs_config_options="${emacs_config_options}${emacs_config_options:+ }$var=\"$val\"" +for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do + case $opt in + -n | --no-create | --no-recursion) + continue ;; + CFLAGS | CPPFLAGS | LDFLAGS) + eval 'test "${'$opt'+set}" = set' || continue + case " $*" in + *" $opt="*) continue ;; + esac + eval opt=$opt=\$$opt ;; + esac + + emacs_shell_specials=$IFS\''"#$&()*;<>?@<:@\\`{|~' + case $opt in + *[["$emacs_shell_specials"]]*) + case $opt in + *\'*) + emacs_quote_apostrophes="s/'/'\\\\''/g" + opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_apostrophes"` ;; + esac + opt="'$opt'" + case $opt in + *[['"\\']]*) + emacs_quote_for_c='s/[["\\]]/\\&/g; $!s/$/\\n\\/' + opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_for_c"` ;; + esac ;; + esac + AS_VAR_APPEND([emacs_config_options], ["$optsep$opt"]) + optsep=' ' done AC_CONFIG_HEADER(src/config.h:src/config.in) @@ -60,7 +85,7 @@ locallisppath='${datadir}/emacs/${version}/site-lisp:'\ lisppath='${locallisppath}:${standardlisppath}' etcdir='${datadir}/emacs/${version}/etc' archlibdir='${libexecdir}/emacs/${version}/${configuration}' -docdir='${datadir}/emacs/${version}/etc' +etcdocdir='${datadir}/emacs/${version}/etc' gamedir='${localstatedir}/games/emacs' dnl Special option to disable the most of other options. @@ -142,12 +167,12 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME], AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.])) AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE], - [compile with sound support (VALUE one of: yes, ossaudio, alsa, no; + [compile with sound support (VALUE one of: yes, alsa, oss, bsd-ossaudio, no; default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])], [ case "${withval}" in - yes|no|ossaudio|alsa) val=$withval ;; + yes|no|alsa|oss|bsd-ossaudio) val=$withval ;; *) AC_MSG_ERROR([`--with-sound=$withval' is invalid; -this option's value should be `yes', `no', `ossaudio', or `alsa'.]) +this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.]) ;; esac with_sound=$val @@ -211,6 +236,7 @@ OPTION_DEFAULT_ON([gconf],[don't compile with GConf support]) OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support]) OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support]) OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support]) +OPTION_DEFAULT_ON([zlib],[don't compile with zlib decompression support]) AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB], [use a file notification library (LIB one of: yes, gfile, inotify, w32, no)])], @@ -971,6 +997,13 @@ INFO_OPTS=--no-split AC_SUBST(INFO_EXT) AC_SUBST(INFO_OPTS) +if test $opsys = mingw32; then + DOCMISC_W32=efaq-w32 +else + DOCMISC_W32= +fi +AC_SUBST(DOCMISC_W32) + dnl Add our options to ac_link now, after it is set up. if test x$GCC = xyes; then @@ -1274,12 +1307,15 @@ if test "${with_sound}" != "no"; then #include #endif ]) - if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then + test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \ + AC_MSG_ERROR([OSS sound support requested but not found.]) + + if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then # Emulation library used on NetBSD. AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) - test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \ - AC_MSG_ERROR([ossaudio sound support requested but not found.]) - dnl FIXME? If we did find ossaudio, should we set with_sound=ossaudio? + test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \ + AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.]) + dnl FIXME? If we did find ossaudio, should we set with_sound=bsd-ossaudio? dnl Traditionally, we go on to check for alsa too. Does that make sense? fi AC_SUBST(LIBSOUND) @@ -1614,7 +1650,7 @@ if test "${HAVE_NS}" = yes; then dnl This one isn't really used, only archlibdir is. libexecdir="\${ns_appbindir}/libexec" archlibdir="\${ns_appbindir}/libexec" - docdir="\${ns_appresdir}/etc" + etcdocdir="\${ns_appresdir}/etc" etcdir="\${ns_appresdir}/etc" dnl FIXME maybe set datarootdir instead. dnl That would also get applications, icons, man. @@ -1641,6 +1677,7 @@ CLIENTRES= CLIENTW= W32_RES_LINK= EMACS_MANIFEST= +UPDATE_MANIFEST= if test "${with_w32}" != no; then case "${opsys}" in cygwin) @@ -1691,6 +1728,7 @@ if test "${HAVE_W32}" = "yes"; then x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;; *) EMACS_MANIFEST="emacs-x86.manifest" ;; esac + UPDATE_MANIFEST=update-game-score.exe.manifest if test "${opsys}" = "cygwin"; then W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32" W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool" @@ -1717,6 +1755,7 @@ AC_SUBST(W32_OBJ) AC_SUBST(W32_LIBS) AC_SUBST(EMACSRES) AC_SUBST(EMACS_MANIFEST) +AC_SUBST(UPDATE_MANIFEST) AC_SUBST(CLIENTRES) AC_SUBST(CLIENTW) AC_SUBST(W32_RES_LINK) @@ -2939,6 +2978,26 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then fi AC_SUBST(LIBPNG) +HAVE_ZLIB=no +LIBZ= +if test "${with_zlib}" != "no"; then + OLIBS=$LIBS + AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes]) + LIBS=$OLIBS + case $ac_cv_search_inflateEnd in + -*) LIBZ=$ac_cv_search_inflateEnd ;; + esac +fi +if test "${HAVE_ZLIB}" = "yes"; then + AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).]) + ### mingw32 doesn't use -lz, since it loads the library dynamically. + if test "${opsys}" = "mingw32"; then + LIBZ= + fi +fi +AC_SUBST(LIBZ) + + ### Use -ltiff if available, unless `--with-tiff=no'. ### mingw32 doesn't use -ltiff, since it loads the library dynamically. HAVE_TIFF=no @@ -3277,7 +3336,7 @@ select getpagesize setlocale \ getrlimit setrlimit shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ -gai_strerror mkostemp mkstemp getline getdelim sync \ +gai_strerror getline getdelim sync \ difftime posix_memalign \ getpwent endpwent getgrent endgrent \ touchlock \ @@ -3798,7 +3857,7 @@ emacs_broken_SIGIO=no case $opsys in dnl SIGIO exists, but the feature doesn't work in the way Emacs needs. dnl See eg . - hpux* | irix6-5 | openbsd | sol2* | unixware | gnu-kfreebsd ) + hpux* | irix6-5 | openbsd | sol2* | unixware ) emacs_broken_SIGIO=yes ;; @@ -3970,7 +4029,7 @@ case $opsys in AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) dnl if HAVE_POSIX_OPENPT if test "x$ac_cv_func_posix_openpt" = xyes; then - AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY)]) + AC_DEFINE(PTY_OPEN, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (0)]) AC_DEFINE(PTY_NAME_SPRINTF, []) dnl if HAVE_GETPT elif test "x$ac_cv_func_getpt" = xyes; then @@ -4316,14 +4375,16 @@ fi case $opsys in - dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls - dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign. - dnl As malloc is not the Cygwin malloc, the Cygwin memalign always - dnl returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */ + dnl Emacs supplies its own malloc, but glib calls posix_memalign, + dnl and on Cygwin prior to version 1.7.24 that becomes the + dnl Cygwin-supplied posix_memalign. As malloc is not the Cygwin + dnl malloc, the Cygwin posix_memalign always returns ENOSYS. A + dnl workaround is to set G_SLICE=always-malloc. This is no longer + dnl needed starting with cygwin-1.7.24, and it is no longer + dnl effective starting with glib-2.36. */ cygwin) AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the - G_SLICE environment variable to "always-malloc" at startup, if - using GTK.]) + G_SLICE environment variable to "always-malloc" at startup.]) ;; hpux11) @@ -4387,7 +4448,7 @@ AC_SUBST(lisppath) AC_SUBST(x_default_search_path) AC_SUBST(etcdir) AC_SUBST(archlibdir) -AC_SUBST(docdir) +AC_SUBST(etcdocdir) AC_SUBST(bitmapdir) AC_SUBST(gamedir) AC_SUBST(gameuser) @@ -4414,8 +4475,6 @@ fi AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}", [Define to the canonical Emacs configuration name.]) -dnl Replace any embedded " characters (bug#13274). -emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"` AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}", [Define to the options passed to configure.]) AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure @@ -4791,6 +4850,7 @@ echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE} echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}" echo " Does Emacs use -lotf? ${HAVE_LIBOTF}" echo " Does Emacs use -lxft? ${HAVE_XFT}" +echo " Does Emacs directly use zlib? ${HAVE_ZLIB}" echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" echo @@ -4837,10 +4897,13 @@ if test "$HAVE_NS" = "yes"; then if test "$NS_IMPL_GNUSTEP" = yes; then AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \ nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in]) + ns_check_file=Resources/Info-gnustep.plist else AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \ nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in]) + ns_check_file=Contents/Info.plist fi + AC_SUBST(ns_check_file) fi dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES. diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 73de1ce2920..7ff13a70718 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -2,6 +2,49 @@ * maintaining.texi (VC Ignore): Mention `vc-ignore' with prefix argument. +2013-08-31 Ulrich Müller + + * xresources.texi (Motif Resources): + Rename from LessTif Resources. Update xrefs. (Bug#15145) + * emacs.texi: Update menu. + +2013-08-28 Paul Eggert + + * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-17 Xue Fuqiao + + * text.texi (Enriched Justification): Minor fixes. + +2013-08-14 Xue Fuqiao + + * files.texi (Filesets): Add an index. + +2013-08-12 Glenn Morris + + * macos.texi (GNUstep Support): + * trouble.texi (Checklist, Contributing, Service): + Avoid mailto: in html output. + + * Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME) + (docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL) + (INSTALL_DATA): New, set by configure. + (HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS): + New variables. + (.SUFFIXES): Add .ps and .dvi. + (.dvi.ps): New suffix rule. + (dvi, html, pdf, ps): Use *_TARGETS variables. + (emacs.ps, emacs-xtra.ps): Remove explicit rules. + (emacs.html): Use HTML_OPTS. + (clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS. + (.PHONY): install-dvi, install-html, install-pdf, install-ps + ,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf, + uninstall-ps, and uninstall-doc. + (install-dvi, install-html, install-pdf, install-ps, install-doc) + (uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf) + (uninstall-doc): New rules. + 2013-07-31 Eli Zaretskii * emacs.texi (Top): Remove menu item for the removed "Disabling diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index 32bb39b127a..bf9f8152ad4 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -SHELL = /bin/sh +SHELL = @SHELL@ # NB If you add any more configure variables, # update the sed rules in the dist target below. @@ -38,8 +38,22 @@ buildinfodir = $(srcdir)/../../info # Directory with the (customized) texinfo.tex file. texinfodir = $(srcdir)/../misc +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +docdir = @docdir@ +dvidir = @dvidir@ +htmldir = @htmldir@ +pdfdir = @pdfdir@ +psdir = @psdir@ + MKDIR_P = @MKDIR_P@ +GZIP_PROG = @GZIP_PROG@ + +HTML_OPTS = --no-split --html + INFO_EXT=@INFO_EXT@ # Options used only when making info output. # --no-split is only needed because of MS-DOS. @@ -47,6 +61,9 @@ INFO_EXT=@INFO_EXT@ # http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg01182.html INFO_OPTS=@INFO_OPTS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + # The makeinfo program is part of the Texinfo distribution. # Use --force so that it generates output even if there are errors. MAKEINFO = @MAKEINFO@ @@ -60,6 +77,10 @@ DVIPS = dvips ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" +DVI_TARGETS = emacs.dvi emacs-xtra.dvi +HTML_TARGETS = emacs.html +PDF_TARGETS = emacs.pdf emacs-xtra.pdf +PS_TARGETS = emacs.ps emacs-xtra.ps EMACS_XTRA= \ ${srcdir}/emacs-xtra.texi \ @@ -128,11 +149,16 @@ mkinfodir = @${MKDIR_P} ${buildinfodir} .PHONY: info dvi html pdf ps +.SUFFIXES: .ps .dvi + +.dvi.ps: + $(DVIPS) -o $@ $< + info: $(buildinfodir)/emacs$(INFO_EXT) -dvi: emacs.dvi -html: emacs.html -pdf: emacs.pdf -ps: emacs.ps +dvi: $(DVI_TARGETS) +html: $(HTML_TARGETS) +pdf: $(PDF_TARGETS) +ps: $(PS_TARGETS) # Note that all the Info targets build the Info files in srcdir. # There is no provision for Info files to exist in the build directory. @@ -145,21 +171,15 @@ $(buildinfodir)/emacs$(INFO_EXT): ${EMACSSOURCES} emacs.dvi: ${EMACSSOURCES} $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi -emacs.ps: emacs.dvi - $(DVIPS) -o $@ emacs.dvi - emacs.pdf: ${EMACSSOURCES} $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi emacs.html: ${EMACSSOURCES} - $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ ${srcdir}/emacs.texi + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs.texi emacs-xtra.dvi: $(EMACS_XTRA) $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi -emacs-xtra.ps: emacs-xtra.dvi - $(DVIPS) -o $@ emacs-xtra.dvi - emacs-xtra.pdf: $(EMACS_XTRA) $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi @@ -172,9 +192,7 @@ mostlyclean: ## Products not in the release tarfiles. clean: mostlyclean - rm -f emacs.dvi emacs-xtra.dvi emacs.pdf emacs-xtra.pdf \ - emacs.ps emacs-xtra.ps - rm -rf emacs.html/ + rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) rm -f emacs-manual-${version}.tar* distclean: clean @@ -207,4 +225,52 @@ dist: tar -cf emacs-manual-${version}.tar emacs-manual-${version} rm -rf emacs-manual-${version} + +.PHONY: install-dvi install-html install-pdf install-ps install-doc + +install-dvi: dvi + umask 022; $(MKDIR_P) $(DESTDIR)$(dvidir) + $(INSTALL_DATA) $(DVI_TARGETS) $(DESTDIR)$(dvidir) +install-html: html + umask 022; $(MKDIR_P) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) $(HTML_TARGETS) $(DESTDIR)$(htmldir) +install-pdf: pdf + umask 022;$(MKDIR_P) $(DESTDIR)$(pdfdir) + $(INSTALL_DATA) $(PDF_TARGETS) $(DESTDIR)$(pdfdir) +install-ps: ps + umask 022; $(MKDIR_P) $(DESTDIR)$(psdir) + for file in $(PS_TARGETS); do \ + $(INSTALL_DATA) $${file} $(DESTDIR)$(psdir); \ + [ -n "${GZIP_PROG}" ] || continue; \ + rm -f $(DESTDIR)$(psdir)/$${file}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)$(psdir)/$${file}; \ + done + +## Top-level Makefile installs the info pages. +install-doc: install-dvi install-html install-pdf install-ps + + +.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc + +uninstall-dvi: + for file in $(DVI_TARGETS); do \ + rm -f $(DESTDIR)$(dvidir)/$${file}; \ + done +uninstall-html: + for file in $(HTML_TARGETS); do \ + rm -f $(DESTDIR)$(htmldir)/$${file}; \ + done +uninstall-ps: + ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \ + for file in $(PS_TARGETS); do \ + rm -f $(DESTDIR)$(psdir)/$${file}$${ext}; \ + done +uninstall-pdf: + for file in $(PDF_TARGETS); do \ + rm -f $(DESTDIR)$(pdfdir)/$${file}; \ + done + +uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps + + ### Makefile ends here diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 8a518b82abb..985466810f2 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -1189,7 +1189,7 @@ X Options and Resources * Resources:: Using X resources with Emacs (in general). * Table of Resources:: Table of specific X resources that affect Emacs. * Lucid Resources:: X resources for Lucid menus. -* LessTif Resources:: X resources for LessTif and Motif menus. +* Motif Resources:: X resources for Motif and LessTif menus. * GTK resources:: Resources for GTK widgets. GTK resources diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 7daeca3bf38..bff0926f347 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1982,6 +1982,7 @@ thumbnails. @xref{Image-Dired}. @node Filesets @section Filesets @cindex filesets +@cindex sets of files @findex filesets-init If you regularly edit a certain group of files, you can define them diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index 43441c20814..e4693a5293f 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -873,6 +873,7 @@ The Emacs major modes are a mutually exclusive set of options, each of which configures Emacs for editing a certain sort of text. Ideally, each programming language has its own major mode. @xref{Major Modes}. +@c FIXME: Mention margins for filling? @item Margin The space between the usable part of a window (including the fringe) and the window edge. diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 051bfe3eae8..cb33327faa1 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -109,6 +109,8 @@ number of characters. If the numeric argument is omitted or one, they delete all the text in the region if it is active (@pxref{Using Region}). +@c FIXME: `cycle-spacing' should be documented, too. (Maybe not in +@c this node, tho.) --xfq @kindex M-\ @findex delete-horizontal-space @kindex M-SPC diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 61c056ceb4b..50a7ea2c335 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -210,4 +210,10 @@ restart Emacs to access newly-available services. Emacs can be built and run under GNUstep, but there are still issues to be addressed. Interested developers should contact +@ifnothtml @email{emacs-devel@@gnu.org}. +@end ifnothtml +@ifhtml +@url{http://lists.gnu.org/mailman/listinfo/emacs-devel, the +emacs-devel mailing list}. +@end ifhtml diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index d50a841d509..e5743b064fb 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -2255,6 +2255,7 @@ Prefix}. @node Enriched Justification @subsection Justification in Enriched Text +@cindex justification style In Enriched mode, you can use the following commands to specify various @dfn{justification styles} for filling. These commands apply @@ -2293,13 +2294,13 @@ commands do nothing on text with this setting. You can, however, still indent the left margin. @end table +@c FIXME: We should explain the effect of these symbols. --xfq @vindex default-justification You can also specify justification styles using the Justification -submenu in the Text Properties menu. - The default justification style is specified by the per-buffer -variable @code{default-justification}. Its value should be one of the -symbols @code{left}, @code{right}, @code{full}, @code{center}, or -@code{none}. +submenu in the Text Properties menu. The default justification style +is specified by the per-buffer variable @code{default-justification}. +Its value should be one of the symbols @code{left}, @code{right}, +@code{full}, @code{center}, or @code{none}. @node Enriched Properties @subsection Setting Other Text Properties diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index d0b6b5191c1..0d5ce6820c7 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -658,7 +658,13 @@ absolutely sure it is best to leave it, so that the developers can decide for themselves. When you have finished writing your report, type @kbd{C-c C-c} and it -will be sent to the Emacs maintainers at @email{bug-gnu-emacs@@gnu.org}. +will be sent to the Emacs maintainers at +@ifnothtml +@email{bug-gnu-emacs@@gnu.org}. +@end ifnothtml +@ifhtml +@url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs, bug-gnu-emacs}. +@end ifhtml (If you want to suggest an improvement or new feature, use the same address.) If you cannot send mail from inside Emacs, you can copy the text of your report to your normal mail client (if your system @@ -1138,15 +1144,26 @@ form that is clearly safe to install. @section Contributing to Emacs Development @cindex contributing to Emacs -If you would like to work on improving Emacs, please contact -the maintainers at @email{emacs-devel@@gnu.org}. You can ask for -suggested projects or suggest your own ideas. +If you would like to work on improving Emacs, please contact the maintainers at +@ifnothtml +@email{emacs-devel@@gnu.org}. +@end ifnothtml +@ifhtml +@url{http://lists.gnu.org/mailman/listinfo/emacs-devel, the +emacs-devel mailing list}. +@end ifhtml +You can ask for suggested projects or suggest your own ideas. If you have already written an improvement, please tell us about it. If you have not yet started work, it is useful to contact -@email{emacs-devel@@gnu.org} before you start; it might be -possible to suggest ways to make your extension fit in better with the -rest of Emacs. +@ifnothtml +@email{emacs-devel@@gnu.org} +@end ifnothtml +@ifhtml +@url{http://lists.gnu.org/mailman/listinfo/emacs-devel, emacs-devel} +@end ifhtml +before you start; it might be possible to suggest ways to make your +extension fit in better with the rest of Emacs. The development version of Emacs can be downloaded from the repository where it is actively maintained by a group of developers. @@ -1164,10 +1181,17 @@ ways to find it: @itemize @bullet @item -Send a message to the mailing list -@email{help-gnu-emacs@@gnu.org}, or post your request on -newsgroup @code{gnu.emacs.help}. (This mailing list and newsgroup -interconnect, so it does not matter which one you use.) +Send a message to +@ifnothtml +the mailing list @email{help-gnu-emacs@@gnu.org}, +@end ifnothtml +@ifhtml +@url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs, the +help-gnu-emacs mailing list}, +@end ifhtml +or post your request on newsgroup @code{gnu.emacs.help}. (This +mailing list and newsgroup interconnect, so it does not matter which +one you use.) @item Look in the service directory for someone who might help you for a fee. diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index 3723c8e5e1d..b2ebf634ba0 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -27,7 +27,7 @@ system registry (@pxref{MS-Windows Registry}). * Resources:: Using X resources with Emacs (in general). * Table of Resources:: Table of specific X resources that affect Emacs. * Lucid Resources:: X resources for Lucid menus. -* LessTif Resources:: X resources for LessTif and Motif menus. +* Motif Resources:: X resources for Motif and LessTif menus. * GTK resources:: Resources for GTK widgets. @end menu @@ -260,7 +260,7 @@ compiled with GTK+ support. @ifnottex @item @code{selectionFont} (class @code{SelectionFont}) Font name for pop-up menu items, in non-toolkit versions of Emacs. (For -toolkit versions, see @ref{Lucid Resources}, also see @ref{LessTif +toolkit versions, see @ref{Lucid Resources}, also see @ref{Motif Resources}.) @item @code{selectionTimeout} (class @code{SelectionTimeout}) @@ -370,15 +370,15 @@ elements. Default is 1. Margin of the menu bar, in characters. Default is 1. @end table -@node LessTif Resources -@appendixsec LessTif Menu X Resources -@cindex Menu X Resources (LessTif widgets) -@cindex LessTif Widget X Resources +@node Motif Resources +@appendixsec Motif Menu X Resources +@cindex Menu X Resources (Motif widgets) +@cindex Motif Widget X Resources - If Emacs is compiled with the X toolkit support using LessTif or -Motif widgets, you can use X resources to customize the appearance of -the menu bar, pop-up menus, and dialog boxes. However, the resources -are organized differently from Lucid widgets. + If Emacs is compiled with the X toolkit support using Motif or +LessTif widgets, you can use X resources to customize the appearance +of the menu bar, pop-up menus, and dialog boxes. However, the +resources are organized differently from Lucid widgets. The resource names for the menu bar are in the @samp{pane.menubar} class, and they must be specified in this form: diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog index 481eb0c9db8..ec082eecb52 100644 --- a/doc/lispintro/ChangeLog +++ b/doc/lispintro/ChangeLog @@ -1,3 +1,50 @@ +2013-09-01 Glenn Morris + + * emacs-lisp-intro.texi (beginning-of-buffer complete): + Put back a version of the removed paragraph about raw prefix arg. + +2013-09-01 Dani Moncayo + + * emacs-lisp-intro.texi (beginning-of-buffer complete): + Update function details. (Bug#15085) + +2013-08-28 Paul Eggert + + * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-12 Glenn Morris + + * emacs-lisp-intro.texi (Complete copy-region-as-kill): Fix typo. + + * emacs-lisp-intro.texi (Thank You): Avoid mailto: in html output. + + * Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME) + (docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL) + (INSTALL_DATA): New, set by configure. + (HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS): + New variables. + (.SUFFIXES): Add .ps and .dvi. + (.dvi.ps): New suffix rule. + (dvi, html, pdf, ps): Use *_TARGETS variables. + (emacs-lisp-intro.ps): Remove explicit rule. + (emacs-lisp-intro.html): Use HTML_OPTS. + (clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS. + (.PHONY): install-dvi, install-html, install-pdf, install-ps + ,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf, + uninstall-ps, and uninstall-doc. + (install-dvi, install-html, install-pdf, install-ps, install-doc) + (uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf) + (uninstall-doc): New rules. + +2013-08-07 Eli Zaretskii + + * emacs-lisp-intro.texi (Beginning init File): Rename from + "Beginning a .emacs File", since a node name cannot include a + period. + (Top, Emacs Initialization, Change a defun): All references + changed. (Bug#15038) + 2013-08-02 Xue Fuqiao * emacs-lisp-intro.texi (zap-to-char): Remove obsolete stuff. diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in index d5462f9e70f..363e12215b3 100644 --- a/doc/lispintro/Makefile.in +++ b/doc/lispintro/Makefile.in @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -SHELL = /bin/sh +SHELL = @SHELL@ # NB If you add any more configure variables, # update the sed rules in the dist target below. @@ -30,12 +30,29 @@ texinfodir = $(srcdir)/../misc # Directory with emacsver.texi. emacsdir = $(srcdir)/../emacs +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +docdir = @docdir@ +dvidir = @dvidir@ +htmldir = @htmldir@ +pdfdir = @pdfdir@ +psdir = @psdir@ + MKDIR_P = @MKDIR_P@ +GZIP_PROG = @GZIP_PROG@ + +HTML_OPTS = --no-split --html + INFO_EXT=@INFO_EXT@ # Options used only when making info output. INFO_OPTS=@INFO_OPTS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + MAKEINFO = @MAKEINFO@ MAKEINFO_OPTS = --force -I $(emacsdir) -I $(srcdir) TEXI2DVI = texi2dvi @@ -45,6 +62,11 @@ DVIPS = dvips ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(emacsdir):$(TEXINPUTS)" \ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" +DVI_TARGETS = emacs-lisp-intro.dvi +HTML_TARGETS = emacs-lisp-intro.html +PDF_TARGETS = emacs-lisp-intro.pdf +PS_TARGETS = emacs-lisp-intro.ps + mkinfodir = @${MKDIR_P} ${buildinfodir} srcs = ${srcdir}/emacs-lisp-intro.texi ${srcdir}/doclicense.texi \ @@ -52,12 +74,17 @@ srcs = ${srcdir}/emacs-lisp-intro.texi ${srcdir}/doclicense.texi \ .PHONY: info dvi html pdf ps +.SUFFIXES: .ps .dvi + +.dvi.ps: + $(DVIPS) -o $@ $< + info: ${buildinfodir}/eintr$(INFO_EXT) -dvi: emacs-lisp-intro.dvi -html: emacs-lisp-intro.html -pdf: emacs-lisp-intro.pdf -ps: emacs-lisp-intro.ps +dvi: $(DVI_TARGETS) +html: $(HTML_TARGETS) +pdf: $(PDF_TARGETS) +ps: $(PS_TARGETS) # The file name eintr must fit within 5 characters, to allow for # -NN extensions to fit into DOS 8+3 limits without clashing. @@ -69,14 +96,11 @@ ${buildinfodir}/eintr$(INFO_EXT): ${srcs} emacs-lisp-intro.dvi: ${srcs} $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-lisp-intro.texi -emacs-lisp-intro.ps: emacs-lisp-intro.dvi - $(DVIPS) -o $@ emacs-lisp-intro.dvi - emacs-lisp-intro.pdf: ${srcs} $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-lisp-intro.texi emacs-lisp-intro.html: ${srcs} - $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ ${srcdir}/emacs-lisp-intro.texi + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs-lisp-intro.texi .PHONY: mostlyclean clean distclean maintainer-clean infoclean @@ -85,8 +109,7 @@ mostlyclean: *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs clean: mostlyclean - rm -f emacs-lisp-intro.dvi emacs-lisp-intro.pdf emacs-lisp-intro.ps - rm -rf emacs-lisp-intro.html/ + rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) rm -f emacs-lispintro-${version}.tar* distclean: clean @@ -118,4 +141,52 @@ dist: tar -cf emacs-lispintro-${version}.tar emacs-lispintro-${version} rm -rf emacs-lispintro-${version} + +.PHONY: install-dvi install-html install-pdf install-ps install-doc + +install-dvi: dvi + umask 022; $(MKDIR_P) $(DESTDIR)$(dvidir) + $(INSTALL_DATA) $(DVI_TARGETS) $(DESTDIR)$(dvidir) +install-html: html + umask 022; $(MKDIR_P) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) $(HTML_TARGETS) $(DESTDIR)$(htmldir) +install-pdf: pdf + umask 022;$(MKDIR_P) $(DESTDIR)$(pdfdir) + $(INSTALL_DATA) $(PDF_TARGETS) $(DESTDIR)$(pdfdir) +install-ps: ps + umask 022; $(MKDIR_P) $(DESTDIR)$(psdir) + for file in $(PS_TARGETS); do \ + $(INSTALL_DATA) $${file} $(DESTDIR)$(psdir); \ + [ -n "${GZIP_PROG}" ] || continue; \ + rm -f $(DESTDIR)$(psdir)/$${file}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)$(psdir)/$${file}; \ + done + +## Top-level Makefile installs the info pages. +install-doc: install-dvi install-html install-pdf install-ps + + +.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc + +uninstall-dvi: + for file in $(DVI_TARGETS); do \ + rm -f $(DESTDIR)$(dvidir)/$${file}; \ + done +uninstall-html: + for file in $(HTML_TARGETS); do \ + rm -f $(DESTDIR)$(htmldir)/$${file}; \ + done +uninstall-ps: + ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \ + for file in $(PS_TARGETS); do \ + rm -f $(DESTDIR)$(psdir)/$${file}$${ext}; \ + done +uninstall-pdf: + for file in $(PDF_TARGETS); do \ + rm -f $(DESTDIR)$(pdfdir)/$${file}; \ + done + +uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps + + ### Makefile ends here diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index f0d9ab63935..84c9d905487 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -648,7 +648,7 @@ Your @file{.emacs} File * Default Configuration:: * Site-wide Init:: You can write site-wide init files. * defcustom:: Emacs will write code for you. -* Beginning a .emacs File:: How to write a @code{.emacs file}. +* Beginning init File:: How to write a @file{.emacs} init file. * Text and Auto-fill:: Automatically wrap lines. * Mail Aliases:: Use abbreviations for email addresses. * Indent Tabs Mode:: Don't use tabs with @TeX{} @@ -954,7 +954,12 @@ encouragement. My mistakes are my own. @flushright Robert J. Chassell +@ifnothtml @email{bob@@gnu.org} +@end ifnothtml +@ifhtml +bob@@gnu.org +@end ifhtml @end flushright @c ================ Beginning of main text ================ @@ -3260,7 +3265,7 @@ line that follows a semicolon is a comment. The end of the line is the end of the comment. To stretch a comment over two or more lines, begin each line with a semicolon. -@xref{Beginning a .emacs File, , Beginning a @file{.emacs} +@xref{Beginning init File, , Beginning a @file{.emacs} File}, and @ref{Comments, , Comments, elisp, The GNU Emacs Lisp Reference Manual}, for more about comments. @@ -6318,7 +6323,7 @@ and avoids clobbering the mark." (/ (+ 10 (* size (prefix-numeric-value arg))) 10))) (point-min)))) - (if arg (forward-line 1))) + (if (and arg (not (consp arg))) (forward-line 1))) @end group @end smallexample @@ -6385,7 +6390,7 @@ to move point to the beginning of the next line if the command is invoked with an argument: @smallexample -(if arg (forward-line 1))) +(if (and arg (not (consp arg))) (forward-line 1)) @end smallexample @noindent @@ -6394,14 +6399,10 @@ appropriate tenths position in the buffer. This is a flourish that means that the cursor is always located @emph{at least} the requested tenths of the way through the buffer, which is a nicety that is, perhaps, not necessary, but which, if it did not occur, would be sure -to draw complaints. - -On the other hand, it also means that if you specify the command with -a @kbd{C-u}, but without a number, that is to say, if the `raw prefix -argument' is simply a cons cell, then the command puts you at the -beginning of the second line @dots{} I don't know whether this is -intended or whether no one has dealt with the code to avoid this -happening. +to draw complaints. (The @code{(not (consp arg))} portion is so that +if you specify the command with a @kbd{C-u}, but without a number, +that is to say, if the `raw prefix argument' is simply a cons cell, +the command does not put you at the beginning of the second line.) @node Second Buffer Related Review @section Review @@ -8312,7 +8313,7 @@ As usual, this function can be divided into its component parts: The arguments are @code{beg} and @code{end} and the function is interactive with @code{"r"}, so the two arguments must refer to the -beginning and end of the region. If you have been reading though this +beginning and end of the region. If you have been reading through this document from the beginning, understanding these parts of a function is almost becoming routine. @@ -16706,7 +16707,7 @@ expressions in Emacs Lisp you can change or extend Emacs. * Default Configuration:: * Site-wide Init:: You can write site-wide init files. * defcustom:: Emacs will write code for you. -* Beginning a .emacs File:: How to write a @code{.emacs file}. +* Beginning init File:: How to write a @file{.emacs} init file. * Text and Auto-fill:: Automatically wrap lines. * Mail Aliases:: Use abbreviations for email addresses. * Indent Tabs Mode:: Don't use tabs with @TeX{} @@ -16977,7 +16978,7 @@ intent is that neither programs nor users should ever change a value set by @code{defconst}. (You can change it; the value set is a variable; but please do not.) -@node Beginning a .emacs File +@node Beginning init File @section Beginning a @file{.emacs} File @cindex @file{.emacs} file, beginning of diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index d77ede29da1..8b5aa65ff96 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,113 @@ +2013-08-28 Paul Eggert + + * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-26 Stefan Monnier + + * variables.texi (File Local Variables): Don't recommend quoting! Ever! + +2013-08-20 Eli Zaretskii + + * files.texi (Information about Files): Mention file names with + trailing blanks on MS-Windows. (Bug#15130) + +2013-08-18 Xue Fuqiao + + * positions.texi (Positions): Improve indexing. + +2013-08-18 Eli Zaretskii + + * markers.texi (The Region): Improve indexing. + +2013-08-17 Xue Fuqiao + + * modes.texi (SMIE, SMIE Grammar, SMIE Indentation): Add some indexes. + + * text.texi (Maintaining Undo): Mention interactive call of + buffer-disable-undo. + (Filling): Add cross-reference for hard newlines. + (Sorting): Fix indentation. + (Columns): Comment out undefined behavior. + (Case Changes): Fix an `args-out-of-range' error in the example. + +2013-08-16 Xue Fuqiao + + * text.texi (Insertion): Refine. + (Margins): Add an index. + (Undo): Doc fix for `buffer-undo-list'. + + * positions.texi (Character Motion): + * markers.texi (Moving Markers): + (Creating Markers): Comment out undefined behavior. + +2013-08-15 Xue Fuqiao + + * markers.texi (The Region): Add/move indexes. + +2013-08-13 Lars Magne Ingebrigtsen + + * display.texi (ImageMagick Images): Mention :content-type and + `image-content-type-suffixes'. + +2013-08-13 Xue Fuqiao + + * positions.texi (Word Motion): Remove redundant sentence. + +2013-08-13 Glenn Morris + + * lists.texi (List Elements): + Undocument behavior of nth and nthcdr with n < 0. (Bug#15059) + +2013-08-13 Xue Fuqiao + + * frames.texi (Display Feature Testing): Add indexes. + +2013-08-12 Glenn Morris + + * Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME) + (docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL) + (INSTALL_DATA): New, set by configure. + (HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS): + New variables. + (.SUFFIXES): Add .ps and .dvi. + (.dvi.ps): New suffix rule. + (dvi, html, pdf, ps): Use *_TARGETS variables. + (elisp.html): Use HTML_OPTS. + (elisp.ps): Remove explicit rule. + (.PHONY): install-dvi, install-html, install-pdf, install-ps + ,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf, + uninstall-ps, and uninstall-doc. + (install-dvi, install-html, install-pdf, install-ps, install-doc) + (uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf) + (uninstall-doc): New rules. + (clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS. + +2013-08-10 Xue Fuqiao + + * edebug.texi (Instrumenting Macro Calls): Use @defmac for macros. + +2013-08-09 Xue Fuqiao + + * control.texi (Error Symbols): Minor fix for previous change. + +2013-08-09 Stefan Monnier + + * errors.texi (Standard Errors): Don't refer to `error-conditions'. + + * control.texi (Signaling Errors): Refer to define-error. + (Error Symbols): Add `define-error'. + +2013-08-06 Dmitry Antipov + + * positions.texi (Motion by Screen Lines): + * display.texi (Truncation): Rename `cache-long-line-scans' + to `cache-long-scans'. + +2013-08-05 Xue Fuqiao + + * windows.texi (Window Start and End): Add an index. + 2013-08-02 Xue Fuqiao * display.texi (Face Functions): Add an index. diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index 8e6d034804e..164646ac433 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -SHELL = /bin/sh +SHELL = @SHELL@ # NB If you add any more configure variables, # update the sed rules in the dist target below. @@ -33,12 +33,29 @@ texinfodir = $(srcdir)/../misc # Directory with emacsver.texi. emacsdir = $(srcdir)/../emacs +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +docdir = @docdir@ +dvidir = @dvidir@ +htmldir = @htmldir@ +pdfdir = @pdfdir@ +psdir = @psdir@ + MKDIR_P = @MKDIR_P@ +GZIP_PROG = @GZIP_PROG@ + +HTML_OPTS = --no-split --html + INFO_EXT=@INFO_EXT@ # Options used only when making info output. INFO_OPTS=@INFO_OPTS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + MAKEINFO = @MAKEINFO@ MAKEINFO_OPTS = --force --enable-encoding -I $(emacsdir) -I $(srcdir) TEXI2DVI = texi2dvi @@ -48,6 +65,11 @@ DVIPS = dvips ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(emacsdir):$(TEXINPUTS)" \ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" +DVI_TARGETS = elisp.dvi +HTML_TARGETS = elisp.html +PDF_TARGETS = elisp.pdf +PS_TARGETS = elisp.ps + # List of all the texinfo files in the manual: srcs = \ @@ -108,11 +130,16 @@ mkinfodir = @${MKDIR_P} ${buildinfodir} .PHONY: info dvi pdf ps +.SUFFIXES: .ps .dvi + +.dvi.ps: + $(DVIPS) -o $@ $< + info: $(buildinfodir)/elisp$(INFO_EXT) -dvi: elisp.dvi -html: elisp.html -pdf: elisp.pdf -ps: elisp.ps +dvi: $(DVI_TARGETS) +html: $(HTML_TARGETS) +pdf: $(PDF_TARGETS) +ps: $(PS_TARGETS) ## Note: "<" is not portable in ordinary make rules. $(buildinfodir)/elisp$(INFO_EXT): $(srcs) @@ -123,10 +150,7 @@ elisp.dvi: $(srcs) $(ENVADD) $(TEXI2DVI) $(srcdir)/elisp.texi elisp.html: $(srcs) - $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $(srcdir)/elisp.texi - -elisp.ps: elisp.dvi - $(DVIPS) -o $@ elisp.dvi + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ $(srcdir)/elisp.texi elisp.pdf: $(srcs) $(ENVADD) $(TEXI2PDF) $(srcdir)/elisp.texi @@ -140,9 +164,8 @@ mostlyclean: rm -f elisp[12]* vol[12].tmp clean: mostlyclean - rm -f elisp.dvi elisp.pdf elisp.ps + rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) rm -f vol[12].dvi vol[12].pdf vol[12].ps - rm -rf elisp.html rm -f emacs-lispref-${version}.tar* distclean: clean @@ -175,4 +198,51 @@ dist: tar -cf emacs-lispref-${version}.tar emacs-lispref-${version} rm -rf emacs-lispref-${version} +.PHONY: install-dvi install-html install-pdf install-ps install-doc + +install-dvi: dvi + umask 022; $(MKDIR_P) $(DESTDIR)$(dvidir) + $(INSTALL_DATA) $(DVI_TARGETS) $(DESTDIR)$(dvidir) +install-html: html + umask 022; $(MKDIR_P) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) $(HTML_TARGETS) $(DESTDIR)$(htmldir) +install-pdf: pdf + umask 022;$(MKDIR_P) $(DESTDIR)$(pdfdir) + $(INSTALL_DATA) $(PDF_TARGETS) $(DESTDIR)$(pdfdir) +install-ps: ps + umask 022; $(MKDIR_P) $(DESTDIR)$(psdir) + for file in $(PS_TARGETS); do \ + $(INSTALL_DATA) $${file} $(DESTDIR)$(psdir); \ + [ -n "${GZIP_PROG}" ] || continue; \ + rm -f $(DESTDIR)$(psdir)/$${file}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)$(psdir)/$${file}; \ + done + +## Top-level Makefile installs the info pages. +install-doc: install-dvi install-html install-pdf install-ps + + +.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc + +uninstall-dvi: + for file in $(DVI_TARGETS); do \ + rm -f $(DESTDIR)$(dvidir)/$${file}; \ + done +uninstall-html: + for file in $(HTML_TARGETS); do \ + rm -f $(DESTDIR)$(htmldir)/$${file}; \ + done +uninstall-ps: + ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \ + for file in $(PS_TARGETS); do \ + rm -f $(DESTDIR)$(psdir)/$${file}$${ext}; \ + done +uninstall-pdf: + for file in $(PDF_TARGETS); do \ + rm -f $(DESTDIR)$(pdfdir)/$${file}; \ + done + +uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps + + ### Makefile ends here diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 9ee01299260..70eabcd84a4 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -890,9 +890,8 @@ argument @var{data} is a list of additional Lisp objects relevant to the circumstances of the error. The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol -bearing a property @code{error-conditions} whose value is a list of -condition names. This is how Emacs Lisp classifies different sorts of -errors. @xref{Error Symbols}, for a description of error symbols, +defined with @code{define-error}. This is how Emacs Lisp classifies different +sorts of errors. @xref{Error Symbols}, for a description of error symbols, error conditions and condition names. If the error is not handled, the two arguments are used in printing @@ -1118,8 +1117,8 @@ Here are examples of handlers: @end example Each error that occurs has an @dfn{error symbol} that describes what -kind of error it is. The @code{error-conditions} property of this -symbol is a list of condition names (@pxref{Error Symbols}). Emacs +kind of error it is, and which describes also a list of condition names +(@pxref{Error Symbols}). Emacs searches all the active @code{condition-case} forms for a handler that specifies one or more of these condition names; the innermost matching @code{condition-case} handles the error. Within this @@ -1259,6 +1258,7 @@ should be robust if one does occur. Note that this macro uses @cindex condition name @cindex user-defined error @kindex error-conditions +@kindex define-error When you signal an error, you specify an @dfn{error symbol} to specify the kind of error you have in mind. Each error has one and only one @@ -1275,42 +1275,38 @@ Thus, each error has one or more condition names: @code{error}, the error symbol if that is distinct from @code{error}, and perhaps some intermediate classifications. - In order for a symbol to be an error symbol, it must have an -@code{error-conditions} property which gives a list of condition names. -This list defines the conditions that this kind of error belongs to. -(The error symbol itself, and the symbol @code{error}, should always be -members of this list.) Thus, the hierarchy of condition names is -defined by the @code{error-conditions} properties of the error symbols. -Because quitting is not considered an error, the value of the -@code{error-conditions} property of @code{quit} is just @code{(quit)}. +@defun define-error name message &optional parent + In order for a symbol to be an error symbol, it must be defined with +@code{define-error} which takes a parent condition (defaults to @code{error}). +This parent defines the conditions that this kind of error belongs to. +The transitive set of parents always includes the error symbol itself, and the +symbol @code{error}. Because quitting is not considered an error, the set of +parents of @code{quit} is just @code{(quit)}. +@end defun @cindex peculiar error - In addition to the @code{error-conditions} list, the error symbol -should have an @code{error-message} property whose value is a string to -be printed when that error is signaled but not handled. If the -error symbol has no @code{error-message} property or if the -@code{error-message} property exists, but is not a string, the error -message @samp{peculiar error} is used. @xref{Definition of signal}. + In addition to its parents, the error symbol has a @var{message} which +is a string to be printed when that error is signaled but not handled. If that +message is not valid, the error message @samp{peculiar error} is used. +@xref{Definition of signal}. + +Internally, the set of parents is stored in the @code{error-conditions} +property of the error symbol and the message is stored in the +@code{error-message} property of the error symbol. Here is how we define a new error symbol, @code{new-error}: @example @group -(put 'new-error - 'error-conditions - '(error my-own-errors new-error)) -@result{} (error my-own-errors new-error) -@end group -@group -(put 'new-error 'error-message "A new error") -@result{} "A new error" +(define-error 'new-error "A new error" 'my-own-errors) @end group @end example @noindent -This error has three condition names: @code{new-error}, the narrowest +This error has several condition names: @code{new-error}, the narrowest classification; @code{my-own-errors}, which we imagine is a wider -classification; and @code{error}, which is the widest of all. +classification; and all the conditions of @code{my-own-errors} which should +include @code{error}, which is the widest of all. The error string should start with a capital letter but it should not end with a period. This is for consistency with the rest of Emacs. @@ -1326,7 +1322,7 @@ your code can do this: @end group @end example - This error can be handled through any of the three condition names. + This error can be handled through any of its condition names. This example handles @code{new-error} and any other errors in the class @code{my-own-errors}: diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index c5068425c66..ff9d98170d1 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -217,9 +217,9 @@ over the @code{line-prefix} variable. @xref{Special Properties}. continuation to display them, computing the continuation lines can make redisplay slow. The column computation and indentation functions also become slow. Then you might find it advisable to set -@code{cache-long-line-scans} to @code{t}. +@code{cache-long-scans} to @code{t}. -@defvar cache-long-line-scans +@defvar cache-long-scans If this variable is non-@code{nil}, various indentation and motion functions, and Emacs redisplay, cache the results of scanning the buffer, and consult the cache to avoid rescanning regions of the buffer @@ -1243,6 +1243,7 @@ Type RET when done reading @node Overlays @section Overlays @cindex overlays +@c FIXME: mention intervals in this section? You can use @dfn{overlays} to alter the appearance of a buffer's text on the screen, for the sake of presentation features. An overlay is an @@ -4663,6 +4664,14 @@ and if @code{:height} is set it will have precedence over wish. @code{:max-width} and @code{:max-height} will always preserve the aspect ratio. +@item :format +ImageMagick tries to auto-detect the image type, but it isn't always +able to. By using @code{:format-type}, we can give ImageMagick a hint +to try to help it. It's used in conjunction with the +@code{image-format-suffixes} variable, which provides a mapping from +content types to file name suffixes. This is then given to +ImageMagick as a file name hint. + @item :rotation Specifies a rotation angle in degrees. diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 8e394b5d92d..8384c31a380 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -1132,14 +1132,14 @@ from the macro definition with @code{def-edebug-spec}. Adding definitions in Lisp, but @code{def-edebug-spec} makes it possible to define Edebug specifications for special forms implemented in C. -@deffn Macro def-edebug-spec macro specification +@defmac def-edebug-spec macro specification Specify which expressions of a call to macro @var{macro} are forms to be evaluated. @var{specification} should be the edebug specification. Neither argument is evaluated. The @var{macro} argument can actually be any symbol, not just a macro name. -@end deffn +@end defmac Here is a table of the possibilities for @var{specification} and how each directs processing of arguments. diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi index 87cfcfa532c..8a10fbf0c47 100644 --- a/doc/lispref/errors.texi +++ b/doc/lispref/errors.texi @@ -7,12 +7,11 @@ @appendix Standard Errors @cindex standard errors - Here is a list of the more important error symbols in standard Emacs, -grouped by concept. The list includes each symbol's message (on the -@code{error-message} property of the symbol) and a cross reference to a -description of how the error can occur. + Here is a list of the more important error symbols in standard Emacs, grouped +by concept. The list includes each symbol's message and a cross reference +to a description of how the error can occur. - Each error symbol has an @code{error-conditions} property that is a + Each error symbol has an set of parent error conditions that is a list of symbols. Normally this list includes the error symbol itself and the symbol @code{error}. Occasionally it includes additional symbols, which are intermediate classifications, narrower than @@ -24,8 +23,6 @@ conditions, that means it has none. As a special exception, the error symbol @code{quit} does not have the condition @code{error}, because quitting is not considered an error. -@c You can grep for "(put 'foo 'error-conditions ...) to find -@c examples defined in Lisp. E.g., soap-client.el, sasl.el. Most of these error symbols are defined in C (mainly @file{data.c}), but some are defined in Lisp. For example, the file @file{userlock.el} defines the @code{file-locked} and @code{file-supersession} errors. diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 77b097ae90a..1f7169522cc 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -776,6 +776,14 @@ return information about actual files or directories, so their arguments must all exist as actual files or directories unless otherwise noted. +@cindex file names, trailing whitespace +@cindex trailing blanks in file names +Be careful with file names that end in blanks: some filesystems +(notably, MS-Windows) will ignore trailing whitespace in file names, +and return information about the file after stripping those blanks +from the name, not about the file whose name you passed to the +functions described in this section. + @menu * Testing Accessibility:: Is a given file readable? Writable? * Kinds of Files:: Is it a directory? A symbolic link? diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 01d2d1d6c45..370098c8b62 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -446,7 +446,7 @@ default parameters by supplying their own parameters. If you invoke Emacs with command-line options that specify frame appearance, those options take effect by adding elements to either @code{initial-frame-alist} or @code{default-frame-alist}. Options -which affect just the initial frame, such as @samp{-geometry} and +which affect just the initial frame, such as @samp{--geometry} and @samp{--maximized}, add to @code{initial-frame-alist}; the others add to @code{default-frame-alist}. @pxref{Emacs Invocation,, Command Line Arguments for Emacs Invocation, emacs, The GNU Emacs Manual}. @@ -1362,7 +1362,7 @@ Terminals}. @node Input Focus @section Input Focus @cindex input focus -@c @cindex selected frame Duplicates selected-frame +@c @cindex selected frame Duplicates selected-frame, same for selected-window. At any time, one frame in Emacs is the @dfn{selected frame}. The selected window always resides on the selected frame. @@ -2391,6 +2391,7 @@ displays returned by @code{display-mm-height} and @code{display-mm-width} in case the system provides incorrect values. @end defopt +@cindex backing store @defun display-backing-store &optional display This function returns the backing store capability of the display. Backing store means recording the pixels of windows (and parts of @@ -2402,6 +2403,7 @@ Values can be the symbols @code{always}, @code{when-mapped}, or when the question is inapplicable to a certain kind of display. @end defun +@cindex SaveUnder feature @defun display-save-under &optional display This function returns non-@code{nil} if the display supports the SaveUnder feature. That feature is used by pop-up windows diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 14601de1814..9daf01cd0a2 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -270,8 +270,10 @@ are numbered starting with zero, so the @sc{car} of @var{list} is element number zero. If the length of @var{list} is @var{n} or less, the value is @code{nil}. -If @var{n} is negative, @code{nth} returns the first element of -@var{list}. +@c Behavior for -ve n undefined since 2013/08; see bug#15059. +@ignore +If @var{n} is negative, @code{nth} returns the first element of @var{list}. +@end ignore @example @group @@ -281,10 +283,6 @@ If @var{n} is negative, @code{nth} returns the first element of @group (nth 10 '(1 2 3 4)) @result{} nil -@end group -@group -(nth -3 '(1 2 3 4)) - @result{} 1 (nth n x) @equiv{} (car (nthcdr n x)) @end group @@ -300,7 +298,8 @@ This function returns the @var{n}th @sc{cdr} of @var{list}. In other words, it skips past the first @var{n} links of @var{list} and returns what follows. -If @var{n} is zero or negative, @code{nthcdr} returns all of +@c "or negative" removed 2013/08; see bug#15059. +If @var{n} is zero, @code{nthcdr} returns all of @var{list}. If the length of @var{list} is @var{n} or less, @code{nthcdr} returns @code{nil}. @@ -314,7 +313,7 @@ If @var{n} is zero or negative, @code{nthcdr} returns all of @result{} nil @end group @group -(nthcdr -3 '(1 2 3 4)) +(nthcdr 0 '(1 2 3 4)) @result{} (1 2 3 4) @end group @end example diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index cae14ab9a78..d94908994e9 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi @@ -216,11 +216,14 @@ new marker that points to the same place and the same buffer as does The new marker's insertion type is specified by the argument @var{insertion-type}. @xref{Marker Insertion Types}. +@c This behavior used to be documented until 2013/08. +@ignore If passed an integer argument less than 1, @code{copy-marker} returns a new marker that points to the beginning of the current buffer. If passed an integer argument greater than the length of the buffer, @code{copy-marker} returns a new marker that points to the end of the buffer. +@end ignore @example @group @@ -279,6 +282,8 @@ This function returns the position that @var{marker} points to, or This function returns the buffer that @var{marker} points into, or @code{nil} if it points nowhere. +@c FIXME: The `buffer' argument of `set-marker' already defaults to +@c the current buffer, why use `(current-buffer)' explicitly here? @example @group (setq m (make-marker)) @@ -349,11 +354,15 @@ This function moves @var{marker} to @var{position} in @var{buffer}. If @var{buffer} is not provided, it defaults to the current buffer. +@c This behavior used to be documented until 2013/08. +@ignore If @var{position} is less than 1, @code{set-marker} moves @var{marker} to the beginning of the buffer. If @var{position} is greater than the size of the buffer (@pxref{Point}), @code{set-marker} moves marker to -the end of the buffer. If @var{position} is @code{nil} or a marker -that points nowhere, then @var{marker} is set to point nowhere. +the end of the buffer. +@end ignore +If @var{position} is @code{nil} or a marker that points nowhere, then +@var{marker} is set to point nowhere. The value returned is @var{marker}. @@ -384,7 +393,7 @@ This is another name for @code{set-marker}. @node The Mark @section The Mark @cindex mark, the -@cindex mark ring +@c @cindex the mark? Each buffer has a special marker, which is designated @dfn{the mark}. When a buffer is newly created, this marker exists but does @@ -423,6 +432,7 @@ the mark is active. This is the main motivation for using Transient Mark mode. (Another is that this enables highlighting of the region when the mark is active. @xref{Display}.) +@cindex mark ring In addition to the mark, each buffer has a @dfn{mark ring} which is a list of markers containing previous values of the mark. When editing commands change the mark, they should normally save the old value of the @@ -644,7 +654,12 @@ more marks than this are pushed onto the @code{mark-ring}, @node The Region @section The Region -@cindex region (between point and mark) +@c The index entry must be just ``region'' to make it the first hit +@c when the user types ``i region RET'', because otherwise the Info +@c reader will present substring matches in alphabetical order, +@c putting this one near the end, with something utterly unrelated as +@c the first hit. +@cindex region The text between point and the mark is known as @dfn{the region}. Various functions operate on text delimited by point and the mark, but @@ -668,6 +683,7 @@ integer). This is the position of either point or the mark, whichever is larger. @end defun +@c FIXME: Mention it in tips.texi? Instead of using @code{region-beginning} and @code{region-end}, a command designed to operate on a region should normally use @code{interactive} with the @samp{r} specification to find the @@ -680,6 +696,8 @@ mark is active, and there is a valid region in the buffer. This function is intended to be used by commands that operate on the region, instead of on text near point, when the mark is active. +@cindex empty region +@vindex use-empty-active-region A region is valid if it has a non-zero size, or if the user option @code{use-empty-active-region} is non-@code{nil} (by default, it is @code{nil}). The function @code{region-active-p} is similar to diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 59729380ea7..180fef7241d 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -3381,6 +3381,7 @@ of Lisp sexps and adapts it to non-Lisp languages. @node SMIE @subsection Simple Minded Indentation Engine +@cindex SMIE SMIE is a package that provides a generic navigation and indentation engine. Based on a very simple parser using an ``operator precedence @@ -3548,6 +3549,8 @@ simply ignored. @node SMIE Grammar @subsubsection Defining the Grammar of a Language +@cindex SMIE grammar +@cindex grammar, SMIE The usual way to define the SMIE grammar of a language is by defining a new global variable that holds the precedence table by @@ -3623,6 +3626,8 @@ formally as left associative. @node SMIE Lexer @subsubsection Defining Tokens +@cindex SMIE lexer +@cindex defining tokens, SMIE SMIE comes with a predefined lexical analyzer which uses syntax tables in the following way: any sequence of characters that have word or @@ -3757,6 +3762,7 @@ surrounding text to find ad-hoc clues. @node SMIE Indentation @subsubsection Specifying Indentation Rules +@cindex indentation rules, SMIE Based on the provided grammar, SMIE will be able to provide automatic indentation without any extra effort. But in practice, this default diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 090310c5545..f351829e4cf 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -248,6 +248,7 @@ unibyte string, it is returned unchanged. Use this function for characters. @end defun +@c FIXME: Should `@var{character}' be `@var{byte}'? @defun byte-to-string byte @cindex byte to string This function returns a unibyte string containing a single byte of @@ -401,6 +402,8 @@ specifies how the character behaves and how it should be handled during text processing and display. Thus, character properties are an important part of specifying the character's semantics. +@c FIXME: Use the latest URI of this chapter? +@c http://www.unicode.org/versions/latest/ch04.pdf On the whole, Emacs follows the Unicode Standard in its implementation of character properties. In particular, Emacs supports the @uref{http://www.unicode.org/reports/tr23/, Unicode Character Property diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index e8b6166f63c..69f1b80c431 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -5,6 +5,7 @@ @node Positions @chapter Positions @cindex position (in buffer) +@cindex buffer position A @dfn{position} is the index of a character in the text of a buffer. More precisely, a position identifies the place between two characters @@ -146,9 +147,13 @@ that. @deffn Command goto-char position This function sets point in the current buffer to the value -@var{position}. If @var{position} is less than 1, it moves point to the -beginning of the buffer. If @var{position} is greater than the length -of the buffer, it moves point to the end. +@var{position}. +@c This behavior used to be documented until 2013/08. +@ignore +If @var{position} is less than 1, it moves point to the beginning of +the buffer. If @var{position} is greater than the length of the +buffer, it moves point to the end. +@end ignore If narrowing is in effect, @var{position} still counts from the beginning of the buffer, but point cannot go outside the accessible @@ -191,8 +196,8 @@ whether a given character is part of a word. @xref{Syntax Tables}. @deffn Command forward-word &optional count This function moves point forward @var{count} words (or backward if -@var{count} is negative). If @var{count} is @code{nil}, it moves -forward one word. +@var{count} is negative). If @var{count} is omitted or @code{nil}, it +defaults to 1. ``Moving one word'' means moving until point crosses a word-constituent character and then encounters a word-separator @@ -210,7 +215,7 @@ If @code{inhibit-field-text-motion} is non-@code{nil}, this function ignores field boundaries. In an interactive call, @var{count} is specified by the numeric prefix -argument. If @var{count} is omitted or @code{nil}, it defaults to 1. +argument. @end deffn @deffn Command backward-word &optional count @@ -483,7 +488,7 @@ Display}. These functions scan text to determine where screen lines break, and thus take time proportional to the distance scanned. If you intend to use them heavily, Emacs provides caches which may improve the -performance of your code. @xref{Truncation, cache-long-line-scans}. +performance of your code. @xref{Truncation, cache-long-scans}. @defun vertical-motion count &optional window This function moves point to the start of the screen line @var{count} @@ -805,7 +810,7 @@ thousands of times in the Lisp sources of Emacs. buffer, use @code{save-current-buffer} or @code{with-current-buffer} instead (@pxref{Current Buffer}). If you need to save or restore window configurations, see the forms described in @ref{Window -Configurations} and in @ref{Frame Configurations}. +Configurations} and in @ref{Frame Configurations}. @c frameset? @defspec save-excursion body@dots{} @cindex mark excursion diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 7cace70ad07..c4250f2f0ba 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -240,6 +240,7 @@ Major and minor modes can add functions to copied out of the buffer. @end defun +@c FIXME: `filter-buffer-substring-function' should be documented. @defvar filter-buffer-substring-functions This variable is a wrapper hook (@pxref{Running Hooks}), whose members should be functions that accept four arguments: @var{fun}, @@ -365,7 +366,8 @@ not relocate the marker, depending on the marker's insertion type the inserted text, regardless of the markers' insertion type. Insertion functions signal an error if the current buffer is -read-only or if they insert within read-only text. +read-only (@pxref{Read Only Buffers}) or if they insert within +read-only text (@pxref{Special Properties}). These functions copy text characters from strings and buffers along with their properties. The inserted characters have exactly the same @@ -421,10 +423,10 @@ insertion point. @xref{Sticky Properties}. @defun insert-buffer-substring from-buffer-or-name &optional start end This function inserts a portion of buffer @var{from-buffer-or-name} -(which must already exist) into the current buffer before point. The -text inserted is the region between @var{start} and @var{end}. (These -arguments default to the beginning and end of the accessible portion of -that buffer.) This function returns @code{nil}. +into the current buffer before point. The text inserted is the region +between @var{start} (inclusive) and @var{end} (exclusive). (These +arguments default to the beginning and end of the accessible portion +of that buffer.) This function returns @code{nil}. In this example, the form is executed with buffer @samp{bar} as the current buffer. We assume that buffer @samp{bar} is initially empty. @@ -482,6 +484,7 @@ it except to install it on a keymap. In an interactive call, @var{count} is the numeric prefix argument. +@c FIXME: This variable is obsolete since 23.1. Self-insertion translates the input character through @code{translation-table-for-input}. @xref{Translation of Characters}. @@ -776,6 +779,7 @@ is deleted. If point is on a nonblank line, the command deletes all blank lines immediately following it. A blank line is defined as a line containing only tabs and spaces. +@c and the Newline character? @code{delete-blank-lines} returns @code{nil}. @end deffn @@ -920,6 +924,7 @@ processes the text according to @code{yank-handled-properties} and text anyway.) @end defun +@c FIXME: Add an index for yank-handler. If you put a @code{yank-handler} text property on all or part of a string, that alters how @code{insert-for-yank} inserts the string. If different parts of the string have different @code{yank-handler} @@ -1284,8 +1289,8 @@ This is an extensible undo item, which is undone by calling @item (apply @var{delta} @var{beg} @var{end} @var{funname} . @var{args}) This is an extensible undo item, which records a change limited to the range @var{beg} to @var{end}, which increased the size of the buffer -by @var{delta}. It is undone by calling @var{funname} with arguments -@var{args}. +by @var{delta} characters. It is undone by calling @var{funname} with +arguments @var{args}. This kind of element enables undo limited to a region to determine whether the element pertains to that region. @@ -1376,7 +1381,8 @@ possible to undo either previous changes or any subsequent changes. If the undo list of @var{buffer-or-name} is already disabled, this function has no effect. -This function returns @code{nil}. +In an interactive call, BUFFER-OR-NAME is the current buffer. You +cannot specify any other buffer. This function returns @code{nil}. @end deffn As editing continues, undo lists get longer and longer. To prevent @@ -1493,6 +1499,7 @@ the header lines. If @var{citation-regexp} is a string, it is used as a regular expression; if it matches the beginning of a line, that line is treated as a citation marker. +@c FIXME: "That mode" is confusing. It isn't a major/minor mode. Ordinarily, @code{fill-individual-paragraphs} regards each change in indentation as starting a new paragraph. If @code{fill-individual-varying-indent} is non-@code{nil}, then only @@ -1606,11 +1613,13 @@ Manual}. @defvar use-hard-newlines If this variable is non-@code{nil}, the filling functions do not delete newlines that have the @code{hard} text property. These ``hard -newlines'' act as paragraph separators. +newlines'' act as paragraph separators. @xref{Hard and Soft +Newlines,, Hard and Soft Newlines, emacs, The GNU Emacs Manual}. @end defvar @node Margins @section Margins for Filling +@cindex margins, filling @defopt fill-prefix This buffer-local variable, if non-@code{nil}, specifies a string of @@ -1800,6 +1809,7 @@ prefix or @code{nil}, meaning it has failed to determine a prefix. @cindex filling, automatic @cindex Auto Fill mode +@c FIXME: I don't think any of the variables below is a/an normal/abnormal hook. Auto Fill mode is a minor mode that fills lines automatically as text is inserted. This section describes the hook used by Auto Fill mode. For a description of functions that you can call explicitly to fill and @@ -1941,10 +1951,10 @@ its @code{sort-subr} call looks like this: @group (sort-subr reverse (function - (lambda () - (while (and (not (eobp)) - (looking-at paragraph-separate)) - (forward-line 1)))) + (lambda () + (while (and (not (eobp)) + (looking-at paragraph-separate)) + (forward-line 1)))) 'forward-paragraph) @end group @end example @@ -2130,9 +2140,12 @@ line and point. When called interactively, @var{column} is the value of prefix numeric argument. If @var{column} is not an integer, an error is signaled. +@c This behavior used to be documented until 2013/08. +@ignore If column @var{column} is beyond the end of the line, point moves to the end of the line. If @var{column} is negative, point moves to the beginning of the line. +@end ignore If it is impossible to move to column @var{column} because that is in the middle of a multicolumn character such as a tab, point moves to the @@ -2341,6 +2354,8 @@ code. For example, if @var{count} is 3, this command adds 3 columns of indentation to each of the lines beginning in the region specified. +@c FIXME: I suggest using message-indent-citation as the example, or +@c just remove this paragraph. --xfq In Mail mode, @kbd{C-c C-y} (@code{mail-yank-original}) uses @code{indent-rigidly} to indent the text copied from the message being replied to. @@ -2518,7 +2533,7 @@ This is the contents of the 5th foo. @end group @group -(capitalize-region 1 44) +(capitalize-region 1 37) @result{} nil ---------- Buffer: foo ---------- @@ -3024,6 +3039,7 @@ Point}. @table @code @cindex property category of text character +@c FIXME: Isn't @kindex for keyboard commands? @kindex category @r{(text property)} @item category If a character has a @code{category} property, we call it the @@ -4012,6 +4028,7 @@ A rectangle is represented by a list of strings. This represents a window configuration to restore in one frame, and a position to jump to in the current buffer. +@c FIXME: Mention frameset here. @item @code{(@var{frame-configuration} @var{position})} This represents a frame configuration to restore, and a position to jump to in the current buffer. diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 557add738ba..866f3774999 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1649,8 +1649,7 @@ non-@code{nil} given that value. Many commonly-encountered file variables have @code{safe-local-variable} properties; these include @code{fill-column}, @code{fill-prefix}, and @code{indent-tabs-mode}. For boolean-valued variables that are safe, use @code{booleanp} as the -property value. Lambda expressions should be quoted so that -@code{describe-variable} can display the predicate. +property value. When defining a user option using @code{defcustom}, you can set its @code{safe-local-variable} property by adding the arguments diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 51a52218633..13c9ca53222 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2569,6 +2569,7 @@ so @code{window-point} will stay behind text inserted there. @node Window Start and End @section The Window Start and End Positions @cindex window start position +@cindex display-start position Each window maintains a marker used to keep track of a buffer position that specifies where in the buffer display should start. This position @@ -3194,6 +3195,7 @@ The value returned is @var{columns}. Here is how you can determine whether a given position @var{position} is off the screen due to horizontal scrolling: +@c FIXME: Maybe hscroll-on-screen-p is a better name? @example @group (defun hscroll-on-screen (window position) diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog index 8b550dc4417..0235b5f7b9b 100644 --- a/doc/man/ChangeLog +++ b/doc/man/ChangeLog @@ -1,3 +1,7 @@ +2013-08-31 Ulrich Müller + + * emacs.1: Update manual links. + 2013-04-20 Petr Hracek (tiny change) * emacs.1: Add some more command-line options. (Bug#14165) diff --git a/doc/man/emacs.1 b/doc/man/emacs.1 index 9149be2c523..a306edc3ca9 100644 --- a/doc/man/emacs.1 +++ b/doc/man/emacs.1 @@ -445,7 +445,7 @@ Gives frames menu bars if .IR on ; don't have menu bars if .IR off . -See the Emacs manual, sections "Lucid Resources" and "LessTif +See the Emacs manual, sections "Lucid Resources" and "Motif Resources", for how to control the appearance of the menu bar if you have one. .TP @@ -492,7 +492,7 @@ The scroll bar width in pixels, equivalent to the frame parameter Font name for pop-up menu items, in non-toolkit versions of .IR Emacs . (For toolkit versions, see the Emacs manual, sections -"Lucid Resources" and "LessTif Resources".) +"Lucid Resources" and "Motif Resources".) .TP .BR selectionTimeout " (class " SelectionTimeout ) Number of milliseconds to wait for a selection reply. diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 7f5c70e07e3..22148deace0 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,168 @@ +2013-08-28 Paul Eggert + + * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, + for portability to hosts where /bin/sh has problems. + +2013-08-28 Stefan Monnier + + Try to reduce redundancy in doc/misc/Makefile.in. + * Makefile.in (DOCMISC_W32): New var to replace DOCMISC_*_W32. + (TARGETS): New intermediate variable. + (DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS): Use it. + +2013-08-27 Glenn Morris + + * efaq.texi (Emacs for MS-Windows): Update location of MS FAQ. + + * efaq.texi: Rename from faq.texi, to match its output files. + * Makefile.in: Update for faq.texi name change. + + * efaq-w32.texi (EMACSVER): Get it from emacsver.texi. + + * Makefile.in (webhack): Remove; it's nothing to do with Emacs. + + * efaq-w32.texi: Move here from the web-pages repository. + * Makefile.in (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32) + (DOCMISC_PDF_W32, DOCMISC_PS_W32): New configure output variables. + (INFO_COMMON, INFO_INSTALL): New derivations of INFO_TARGETS. + (DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS): + Add DOCMISC_*_W32 variables. + (echo-info): Use INFO_INSTALL rather than INFO_TARGETS. + (efaq_w32_deps): New variable. + (efaq-w32, $(buildinfodir)/efaq-w32$(INFO_EXT), efaq-w32.dvi) + (efaq-w32.pdf, efaq-w32.html): New rules. + (clean): Remove efaq-w32 products. + +2013-08-19 Katsumi Yamaoka + + * emacs-mime.texi (Encoding Customization): Exclude iso-2022-jp-2 and + shift_jis from the default value set to mm-coding-system-priorities for + Japanese users. + +2013-08-13 Glenn Morris + + * reftex.texi (LaTeX xr Package, Options - Table of Contents) + (Options - Defining Label Environments, Options - Creating Labels) + (Options - Referencing Labels, Options - Creating Citations) + (Options - Index Support, Options - Viewing Cross-References) + (Options - Finding Files, Options - Optimizations) + (Options - Fontification, Options - Misc): + * cc-mode.texi (Sample Init File): + * edt.texi (Init file): + * epa.texi (Encrypting/decrypting gpg files): + * mairix-el.texi (About, Setting up the mairix interface, Using) + (Extending): + Rename nodes to avoid characters that can cause Texinfo problems. + +2013-08-12 Katsumi Yamaoka + + * gnus.texi (Mail Source Specifiers): Fix description for pop3's :leave. + +2013-08-12 Glenn Morris + + * Makefile.in (ada_mode_deps, auth_deps, autotype_deps) + (bovine_deps, calc_deps, ccmode_deps, cl_deps, dbus_deps) + (dired_x_deps, ebrowse_deps, ede_deps, ediff_deps, edt_deps) + (eieio_deps, emacs_gnutls_deps, emacs_mime_deps, epa_deps) + (erc_deps, ert_deps, eshell_deps, eudc_deps, faq_deps) + (flymake_deps, forms_deps, gnus_deps, htmlfontify_deps) + (idlwave_deps, ido_deps, info_deps, mairix_el_deps, message_deps) + (mh_e_deps, newsticker_deps, nxml_mode_deps, org_deps) + (pcl_cvs_deps, pgg_deps, rcirc_deps, reftex_deps, remember_deps) + (sasl_deps, sc_deps, semantic_deps, ses_deps, sieve_deps) + (smtpmail_deps, speedbar_deps, srecode_deps, todo_mode_deps) + (tramp_deps, url_deps, vip_deps, viper_deps, widget_deps) + (wisent_deps, woman_deps): New variables. Use to reduce duplication. + + * woman.texi (Top): Avoid mailto: in html output. + + * Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME) + (docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL) + (INSTALL_DATA): New, set by configure. + (HTML_OPTS, HTML_TARGETS, PS_TARGETS, DVIPS): New variables. + (.PHONY): Add html, ps, install-dvi, install-html, install-pdf, + install-ps ,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf, + uninstall-ps, and uninstall-doc. + (.SUFFIXES): Add .ps and .dvi. + (.dvi.ps): New suffix rule. + (html, ps, ada-mode.html, auth.html, autotype.html, bovine.html) + (calc.html, cc-mode.html, cl.html, dbus.html, dired-x.html) + (ebrowse.html, ede.html, ediff.html, edt.html, eieio.html) + (emacs-gnutls.html, emacs-mime.html, epa.html, erc.html) + (ert.html, eshell.html, eudc.html, faq.html, flymake.html) + (forms.html, gnus.html, htmlfontify.html, idlwave.html) + (ido.html, mairix-el.html, message.html, mh-e.html) + (newsticker.html, nxml-mode.html, org.html, pgg.html) + (rcirc.html, reftex.html, remember.html, sasl.html, sc.html) + (semantic.html, sieve.html, smtpmail.html, speedbar.html) + (srecode.html, todo-mode.html, tramp.html, url.html, vip.html) + (viper.html, widget.html, wisent.html, woman.html, install-dvi) + (install-html, install-pdf, install-ps, install-doc, uninstall-dvi) + (uninstall-html, uninstall-ps, uninstall-pdf, uninstall-doc): + New rules. + (clean): Remove HTML_TARGETS and PS_TARGETS. + +2013-08-10 Xue Fuqiao + + * ido.texi (Working Directories): + (Flexible Matching, Regexp Matching, Find File At Point) + (Ignoring, Misc Customization): Use @defopt for user options. + +2013-08-09 Xue Fuqiao + + * htmlfontify.texi (Customization): Remove documentation of + `hfy-fast-lock-save'. Minor fixes. + +2013-08-08 Xue Fuqiao + + * ido.texi (Top): Insert node "Working Directories" in menu. + (Working Directories): New node. + (Misc Customization): Add documentation of + `ido-confirm-unique-completion' and some other user options. + +2013-08-07 Eli Zaretskii + + * todo-mode.texi: Update @dircategory. + (Overview, Todo Items as Diary Entries, Todo Mode Entry Points) + (File Editing, Marked Items, Item Prefix): Fix usage of @xref and + @ref. + +2013-08-07 Xue Fuqiao + + * sc.texi (Introduction): Fix index. + (Usage Overview): + (Citations, Citation Elements, Recognizing Citations) + (Information Keys and the Info Alist, Reference Headers) + (The Built-in Header Rewrite Functions) + (Electric References, Reply Buffer Initialization) + (Filling Cited Text, Selecting an Attribution) + (Attribution Preferences) + (Anonymous Attributions, Author Names) + (Using Regi, Post-yank Formatting Commands) + (Citing Commands, Insertion Commands) + (Mail Field Commands) + (Hints to MUA Authors, Thanks and History): Change from one space + between sentences to two. + (What Supercite Does): Typo fix. + + * newsticker.texi (Usage): Use @key for RET. + + * cl.texi (Argument Lists): + (For Clauses): + (Macros): Add indexes. + +2013-08-05 Xue Fuqiao + + * cl.texi (Blocks and Exits): Add an index. + +2013-08-04 Stephen Berman + + * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add todo-mode. + (todo-mode, $(buildinfodir)/todo-mode$(INFO_EXT)): + (todo-mode.dvi, todo-mode.pdf): New rules. + + * todo-mode.texi: New file. + 2013-08-01 Lars Magne Ingebrigtsen * gnus.texi (Basic Usage): Mention that warp means jump here. @@ -185,7 +350,7 @@ 2013-05-25 Xue Fuqiao - * flymake.texi: Changing from one space between sentences to two. + * flymake.texi: Change from one space between sentences to two. 2013-05-04 Stefan Monnier diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 67a899af8ce..30fc4953172 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -SHELL = /bin/sh +SHELL = @SHELL@ # Where to find the source code. $(srcdir) will be the man-aux # subdirectory of the source tree. This is @@ -31,142 +31,68 @@ buildinfodir = $(srcdir)/../../info ## Directory with emacsver.texi. emacsdir = $(srcdir)/../emacs +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +docdir = @docdir@ +dvidir = @dvidir@ +htmldir = @htmldir@ +pdfdir = @pdfdir@ +psdir = @psdir@ + MKDIR_P = @MKDIR_P@ +GZIP_PROG = @GZIP_PROG@ + +HTML_OPTS = --no-split --html + INFO_EXT=@INFO_EXT@ # Options used only when making info output. INFO_OPTS=@INFO_OPTS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + # The makeinfo program is part of the Texinfo distribution. # Use --force so that it generates output even if there are errors. MAKEINFO = @MAKEINFO@ MAKEINFO_OPTS = --force -I$(emacsdir) -INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \ +## On MS Windows, efaq-w32; otherwise blank. +DOCMISC_W32 = @DOCMISC_W32@ + +## Info files to build and install on all platforms. +INFO_COMMON = ada-mode auth autotype bovine calc ccmode cl \ dbus dired-x ebrowse ede ediff edt eieio \ emacs-mime epa erc ert eshell eudc efaq \ flymake forms gnus emacs-gnutls htmlfontify idlwave ido info.info \ mairix-el message mh-e newsticker nxml-mode \ org pcl-cvs pgg rcirc remember reftex sasl \ - sc semantic ses sieve smtpmail speedbar srecode tramp \ + sc semantic ses sieve smtpmail speedbar srecode todo-mode tramp \ url vip viper widget wisent woman -DVI_TARGETS = \ - ada-mode.dvi \ - auth.dvi \ - autotype.dvi \ - bovine.dvi \ - calc.dvi \ - cc-mode.dvi \ - cl.dvi \ - dbus.dvi \ - dired-x.dvi \ - ebrowse.dvi \ - ede.dvi \ - ediff.dvi \ - edt.dvi \ - eieio.dvi \ - emacs-mime.dvi \ - epa.dvi \ - erc.dvi \ - ert.dvi \ - eshell.dvi \ - eudc.dvi \ - faq.dvi \ - flymake.dvi \ - forms.dvi \ - gnus.dvi \ - emacs-gnutls.dvi \ - htmlfontify.dvi \ - idlwave.dvi \ - ido.dvi \ - info.dvi \ - mairix-el.dvi \ - message.dvi \ - mh-e.dvi \ - newsticker.dvi \ - nxml-mode.dvi \ - org.dvi \ - pcl-cvs.dvi \ - pgg.dvi \ - rcirc.dvi \ - reftex.dvi \ - remember.dvi \ - sasl.dvi \ - sc.dvi \ - semantic.dvi \ - ses.dvi \ - sieve.dvi \ - smtpmail.dvi \ - speedbar.dvi \ - srecode.dvi \ - tramp.dvi \ - url.dvi \ - vip.dvi \ - viper.dvi \ - widget.dvi \ - wisent.dvi \ - woman.dvi +## Info files to install on current platform. +INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_INFO_W32) -PDF_TARGETS = \ - ada-mode.pdf \ - auth.pdf \ - autotype.pdf \ - bovine.pdf \ - calc.pdf \ - cc-mode.pdf \ - cl.pdf \ - dbus.pdf \ - dired-x.pdf \ - ebrowse.pdf \ - ede.pdf \ - ediff.pdf \ - edt.pdf \ - eieio.pdf \ - emacs-mime.pdf \ - epa.pdf \ - erc.pdf \ - ert.pdf \ - eshell.pdf \ - eudc.pdf \ - faq.pdf \ - flymake.pdf \ - forms.pdf \ - gnus.pdf \ - htmlfontify.pdf \ - emacs-gnutls.pdf \ - idlwave.pdf \ - ido.pdf \ - info.pdf \ - mairix-el.pdf \ - message.pdf \ - mh-e.pdf \ - newsticker.pdf \ - nxml-mode.pdf \ - org.pdf \ - pcl-cvs.pdf \ - pgg.pdf \ - rcirc.pdf \ - reftex.pdf \ - remember.pdf \ - sasl.pdf \ - sc.pdf \ - semantic.pdf \ - ses.pdf \ - sieve.pdf \ - smtpmail.pdf \ - speedbar.pdf \ - srecode.pdf \ - tramp.pdf \ - url.pdf \ - vip.pdf \ - viper.pdf \ - widget.pdf \ - wisent.pdf \ - woman.pdf +## Info files to build on current platform. +## This is all of them, even though they might not all get installed, +## because the info files are pre-built in release tarfiles. +INFO_TARGETS = $(INFO_COMMON) efaq-w32 + +# There are some naming differences between the info targets and the other +# targets, so let's resolve them here. +TARGETS_1 = $(INFO_INSTALL:ccmode=cc-mode) +TARGETS = $(TARGETS_1:info.info=info) + +DVI_TARGETS = $(TARGETS:=.dvi) +HTML_TARGETS = $(TARGETS:=.html) +PDF_TARGETS = $(TARGETS:=.pdf) +PS_TARGETS = $(TARGETS:=.ps) TEXI2DVI = texi2dvi TEXI2PDF = texi2pdf +DVIPS = dvips ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" @@ -175,539 +101,732 @@ mkinfodir = @${MKDIR_P} ${buildinfodir} gfdl = ${srcdir}/doclicense.texi -.PHONY: info dvi pdf echo-info +.PHONY: info dvi html pdf ps echo-info ## Prevent implicit rule triggering for foo.info. .SUFFIXES: +.SUFFIXES: .ps .dvi + +.dvi.ps: + $(DVIPS) -o $@ $< + # Default. info: $(INFO_TARGETS) ## Used by top-level Makefile. ## Base file names of output info files. echo-info: - @echo "$(INFO_TARGETS) " | \ + @echo "$(INFO_INSTALL) " | \ sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */$(INFO_EXT) /g" -# please modify this for all the web manual targets -webhack: clean - $(MAKE) pdf MAKEINFO_OPTS="-DWEBHACKDEVEL $(MAKEINFO_OPTS)" - dvi: $(DVI_TARGETS) +html: $(HTML_TARGETS) + pdf: $(PDF_TARGETS) +ps: $(PS_TARGETS) + # Note that all the Info targets build the Info files in srcdir. # There is no provision for Info files to exist in the build directory. # In a distribution of Emacs, the Info files should be up to date. # Note: "<" is not portable in ordinary make rules. +ada_mode_deps = ${srcdir}/ada-mode.texi ${gfdl} ada-mode : $(buildinfodir)/ada-mode$(INFO_EXT) -$(buildinfodir)/ada-mode$(INFO_EXT): ${srcdir}/ada-mode.texi ${gfdl} +$(buildinfodir)/ada-mode$(INFO_EXT): $(ada_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ada-mode.texi -ada-mode.dvi: ${srcdir}/ada-mode.texi ${gfdl} +ada-mode.dvi: $(ada_mode_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi -ada-mode.pdf: ${srcdir}/ada-mode.texi ${gfdl} +ada-mode.pdf: $(ada_mode_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi +ada-mode.html: $(ada_mode_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ada-mode.texi +auth_deps = ${srcdir}/auth.texi ${gfdl} auth : $(buildinfodir)/auth$(INFO_EXT) -$(buildinfodir)/auth$(INFO_EXT): ${srcdir}/auth.texi ${gfdl} +$(buildinfodir)/auth$(INFO_EXT): $(auth_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/auth.texi -auth.dvi: ${srcdir}/auth.texi ${gfdl} +auth.dvi: $(auth_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi -auth.pdf: ${srcdir}/auth.texi ${gfdl} +auth.pdf: $(auth_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi +auth.html: $(auth_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/auth.texi +autotype_deps = ${srcdir}/autotype.texi ${gfdl} autotype : $(buildinfodir)/autotype$(INFO_EXT) -$(buildinfodir)/autotype$(INFO_EXT): ${srcdir}/autotype.texi ${gfdl} +$(buildinfodir)/autotype$(INFO_EXT): $(autotype_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/autotype.texi -autotype.dvi: ${srcdir}/autotype.texi ${gfdl} +autotype.dvi: $(autotype_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi -autotype.pdf: ${srcdir}/autotype.texi ${gfdl} +autotype.pdf: $(autotype_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi +autotype.html: $(autotype_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/autotype.texi +bovine_deps = ${srcdir}/bovine.texi ${gfdl} bovine : $(buildinfodir)/bovine$(INFO_EXT) -$(buildinfodir)/bovine$(INFO_EXT): ${srcdir}/bovine.texi ${gfdl} +$(buildinfodir)/bovine$(INFO_EXT): $(bovine_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/bovine.texi -bovine.dvi: ${srcdir}/bovine.texi ${gfdl} +bovine.dvi: $(bovine_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/bovine.texi -bovine.pdf: ${srcdir}/bovine.texi ${gfdl} +bovine.pdf: $(bovine_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/bovine.texi +bovine.html: $(bovine_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/bovine.texi +calc_deps = ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} calc : $(buildinfodir)/calc$(INFO_EXT) -$(buildinfodir)/calc$(INFO_EXT): ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/calc$(INFO_EXT): $(calc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/calc.texi -calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} +calc.dvi: $(calc_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi -calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi ${gfdl} +calc.pdf: $(calc_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi +calc.html: $(calc_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/calc.texi +ccmode_deps = ${srcdir}/cc-mode.texi ${gfdl} ccmode : $(buildinfodir)/ccmode$(INFO_EXT) -$(buildinfodir)/ccmode$(INFO_EXT): ${srcdir}/cc-mode.texi ${gfdl} +$(buildinfodir)/ccmode$(INFO_EXT): $(cc_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cc-mode.texi -cc-mode.dvi: ${srcdir}/cc-mode.texi ${gfdl} +cc-mode.dvi: $(cc_mode_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi -cc-mode.pdf: ${srcdir}/cc-mode.texi ${gfdl} +cc-mode.pdf: $(cc_mode_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi +cc-mode.html: $(cc_mode_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cc-mode.texi +cl_deps = ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} cl : $(buildinfodir)/cl$(INFO_EXT) -$(buildinfodir)/cl$(INFO_EXT): ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/cl$(INFO_EXT): $(cl_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/cl.texi -cl.dvi: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} +cl.dvi: $(cl_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi -cl.pdf: ${srcdir}/cl.texi $(emacsdir)/emacsver.texi ${gfdl} +cl.pdf: $(cl_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi +cl.html: $(cl_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/cl.texi +dbus_deps = ${srcdir}/dbus.texi ${gfdl} dbus : $(buildinfodir)/dbus$(INFO_EXT) -$(buildinfodir)/dbus$(INFO_EXT): ${srcdir}/dbus.texi ${gfdl} +$(buildinfodir)/dbus$(INFO_EXT): $(dbus_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dbus.texi -dbus.dvi: ${srcdir}/dbus.texi ${gfdl} +dbus.dvi: $(dbus_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi -dbus.pdf: ${srcdir}/dbus.texi ${gfdl} +dbus.pdf: $(dbus_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi +dbus.html: $(dbus_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dbus.texi +dired_x_deps = ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} dired-x : $(buildinfodir)/dired-x$(INFO_EXT) -$(buildinfodir)/dired-x$(INFO_EXT): ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/dired-x$(INFO_EXT): $(dired_x_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/dired-x.texi -dired-x.dvi: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} +dired-x.dvi: $(dired_x_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi -dired-x.pdf: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi ${gfdl} +dired-x.pdf: $(dired_x_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi +dired-x.html: $(dired_x_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/dired-x.texi +ebrowse_deps = ${srcdir}/ebrowse.texi ${gfdl} ebrowse : $(buildinfodir)/ebrowse$(INFO_EXT) -$(buildinfodir)/ebrowse$(INFO_EXT): ${srcdir}/ebrowse.texi ${gfdl} +$(buildinfodir)/ebrowse$(INFO_EXT): $(ebrowse_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ebrowse.texi -ebrowse.dvi: ${srcdir}/ebrowse.texi ${gfdl} +ebrowse.dvi: $(ebrowse_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi -ebrowse.pdf: ${srcdir}/ebrowse.texi ${gfdl} +ebrowse.pdf: $(ebrowse_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi +ebrowse.html: $(ebrowse_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ebrowse.texi +ede_deps = ${srcdir}/ede.texi ${gfdl} ede : $(buildinfodir)/ede$(INFO_EXT) -$(buildinfodir)/ede$(INFO_EXT): ${srcdir}/ede.texi ${gfdl} +$(buildinfodir)/ede$(INFO_EXT): $(ede_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ede.texi -ede.dvi: ${srcdir}/ede.texi ${gfdl} +ede.dvi: $(ede_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi -ede.pdf: ${srcdir}/ede.texi ${gfdl} +ede.pdf: $(ede_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi +ede.html: $(ede_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ede.texi +ediff_deps = ${srcdir}/ediff.texi ${gfdl} ediff : $(buildinfodir)/ediff$(INFO_EXT) -$(buildinfodir)/ediff$(INFO_EXT): ${srcdir}/ediff.texi ${gfdl} +$(buildinfodir)/ediff$(INFO_EXT): $(ediff_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ediff.texi -ediff.dvi: ${srcdir}/ediff.texi ${gfdl} +ediff.dvi: $(ediff_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi -ediff.pdf: ${srcdir}/ediff.texi ${gfdl} +ediff.pdf: $(ediff_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi +ediff.html: $(ediff_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ediff.texi +edt_deps = ${srcdir}/edt.texi ${gfdl} edt : $(buildinfodir)/edt$(INFO_EXT) -$(buildinfodir)/edt$(INFO_EXT): ${srcdir}/edt.texi ${gfdl} +$(buildinfodir)/edt$(INFO_EXT): $(edt_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/edt.texi -edt.dvi: ${srcdir}/edt.texi ${gfdl} +edt.dvi: $(edt_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi -edt.pdf: ${srcdir}/edt.texi ${gfdl} +edt.pdf: $(edt_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi - -eieio : $(buildinfodir)/eieio$(INFO_EXT) -$(buildinfodir)/eieio$(INFO_EXT): ${srcdir}/eieio.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eieio.texi -eieio.dvi: ${srcdir}/eieio.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi -eieio.pdf: ${srcdir}/eieio.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi - -emacs-gnutls : $(buildinfodir)/emacs-gnutls$(INFO_EXT) -$(buildinfodir)/emacs-gnutls$(INFO_EXT): ${srcdir}/emacs-gnutls.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi -emacs-gnutls.dvi: ${srcdir}/emacs-gnutls.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-gnutls.texi -emacs-gnutls.pdf: ${srcdir}/emacs-gnutls.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-gnutls.texi - -emacs-mime : $(buildinfodir)/emacs-mime$(INFO_EXT) -$(buildinfodir)/emacs-mime$(INFO_EXT): ${srcdir}/emacs-mime.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi -emacs-mime.dvi: ${srcdir}/emacs-mime.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi -emacs-mime.pdf: ${srcdir}/emacs-mime.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi - -epa : $(buildinfodir)/epa$(INFO_EXT) -$(buildinfodir)/epa$(INFO_EXT): ${srcdir}/epa.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/epa.texi -epa.dvi: ${srcdir}/epa.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi -epa.pdf: ${srcdir}/epa.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi - -erc : $(buildinfodir)/erc$(INFO_EXT) -$(buildinfodir)/erc$(INFO_EXT): ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/erc.texi -erc.dvi: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi -erc.pdf: ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi - -ert : $(buildinfodir)/ert$(INFO_EXT) -$(buildinfodir)/ert$(INFO_EXT): ${srcdir}/ert.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ert.texi -ert.dvi: ${srcdir}/ert.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi -ert.pdf: ${srcdir}/ert.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi - -eshell : $(buildinfodir)/eshell$(INFO_EXT) -$(buildinfodir)/eshell$(INFO_EXT): ${srcdir}/eshell.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eshell.texi -eshell.dvi: ${srcdir}/eshell.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi -eshell.pdf: ${srcdir}/eshell.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi - -eudc : $(buildinfodir)/eudc$(INFO_EXT) -$(buildinfodir)/eudc$(INFO_EXT): ${srcdir}/eudc.texi ${gfdl} - $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eudc.texi -eudc.dvi: ${srcdir}/eudc.texi ${gfdl} - $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi -eudc.pdf: ${srcdir}/eudc.texi ${gfdl} - $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi +edt.html: $(edt_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/edt.texi ## No gfdl dependency. +efaq_deps = ${srcdir}/efaq.texi $(emacsdir)/emacsver.texi efaq : $(buildinfodir)/efaq$(INFO_EXT) -$(buildinfodir)/efaq$(INFO_EXT): ${srcdir}/faq.texi $(emacsdir)/emacsver.texi +$(buildinfodir)/efaq$(INFO_EXT): $(efaq_deps) $(mkinfodir) - $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/faq.texi -faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi - $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi -faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi - $(ENVADD) $(TEXI2PDF) ${srcdir}/faq.texi + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq.texi +efaq.dvi: $(efaq_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/efaq.texi +efaq.pdf: $(efaq_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/efaq.texi +efaq.html: $(efaq_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq.texi +efaq_w32_deps = ${srcdir}/efaq-w32.texi $(emacsdir)/emacsver.texi +efaq-w32 : $(buildinfodir)/efaq-w32$(INFO_EXT) +$(buildinfodir)/efaq-w32$(INFO_EXT): $(efaq_w32_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/efaq-w32.texi +efaq-w32.dvi: $(efaq_w32_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/efaq-w32.texi +efaq-w32.pdf: $(efaq_w32_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/efaq-w32.texi +efaq-w32.html: $(efaq_w32_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/efaq-w32.texi + +eieio_deps = ${srcdir}/eieio.texi ${gfdl} +eieio : $(buildinfodir)/eieio$(INFO_EXT) +$(buildinfodir)/eieio$(INFO_EXT): $(eieio_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eieio.texi +eieio.dvi: $(eieio_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi +eieio.pdf: $(eieio_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi +eieio.html: $(eieio_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eieio.texi + +emacs_gnutls_deps = ${srcdir}/emacs-gnutls.texi ${gfdl} +emacs-gnutls : $(buildinfodir)/emacs-gnutls$(INFO_EXT) +$(buildinfodir)/emacs-gnutls$(INFO_EXT): $(emacs_gnutls_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi +emacs-gnutls.dvi: $(emacs_gnutls_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-gnutls.texi +emacs-gnutls.pdf: $(emacs_gnutls_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-gnutls.texi +emacs-gnutls.html: $(emacs_gnutls_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/emacs-gnutls.texi + +emacs_mime_deps = ${srcdir}/emacs-mime.texi ${gfdl} +emacs-mime : $(buildinfodir)/emacs-mime$(INFO_EXT) +$(buildinfodir)/emacs-mime$(INFO_EXT): $(emacs_mime_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi +emacs-mime.dvi: $(emacs_mime_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi +emacs-mime.pdf: $(emacs_mime_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi +emacs-mime.html: $(emacs_mime_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) --enable-encoding -o $@ ${srcdir}/emacs-mime.texi + +epa_deps = ${srcdir}/epa.texi ${gfdl} +epa : $(buildinfodir)/epa$(INFO_EXT) +$(buildinfodir)/epa$(INFO_EXT): $(epa_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/epa.texi +epa.dvi: $(epa_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi +epa.pdf: $(epa_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi +epa.html: $(epa_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/epa.texi + +erc_deps = ${srcdir}/erc.texi $(emacsdir)/emacsver.texi ${gfdl} +erc : $(buildinfodir)/erc$(INFO_EXT) +$(buildinfodir)/erc$(INFO_EXT): $(erc_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/erc.texi +erc.dvi: $(erc_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi +erc.pdf: $(erc_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi +erc.html: $(erc_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/erc.texi + +ert_deps = ${srcdir}/ert.texi ${gfdl} +ert : $(buildinfodir)/ert$(INFO_EXT) +$(buildinfodir)/ert$(INFO_EXT): $(ert_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ert.texi +ert.dvi: $(ert_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi +ert.pdf: $(ert_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi +ert.html: $(ert_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ert.texi + +eshell_deps = ${srcdir}/eshell.texi ${gfdl} +eshell : $(buildinfodir)/eshell$(INFO_EXT) +$(buildinfodir)/eshell$(INFO_EXT): $(eshell_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eshell.texi +eshell.dvi: $(eshell_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi +eshell.pdf: $(eshell_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi +eshell.html: $(eshell_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eshell.texi + +eudc_deps = ${srcdir}/eudc.texi ${gfdl} +eudc : $(buildinfodir)/eudc$(INFO_EXT) +$(buildinfodir)/eudc$(INFO_EXT): $(eudc_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/eudc.texi +eudc.dvi: $(eudc_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi +eudc.pdf: $(eudc_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi +eudc.html: $(eudc_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/eudc.texi + +flymake_deps = ${srcdir}/flymake.texi ${gfdl} flymake : $(buildinfodir)/flymake$(INFO_EXT) -$(buildinfodir)/flymake$(INFO_EXT): ${srcdir}/flymake.texi ${gfdl} +$(buildinfodir)/flymake$(INFO_EXT): $(flymake_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/flymake.texi -flymake.dvi: ${srcdir}/flymake.texi ${gfdl} +flymake.dvi: $(flymake_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi -flymake.pdf: ${srcdir}/flymake.texi ${gfdl} +flymake.pdf: $(flymake_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi +flymake.html: $(flymake_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/flymake.texi +forms_deps = ${srcdir}/forms.texi ${gfdl} forms : $(buildinfodir)/forms$(INFO_EXT) -$(buildinfodir)/forms$(INFO_EXT): ${srcdir}/forms.texi ${gfdl} +$(buildinfodir)/forms$(INFO_EXT): $(forms_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/forms.texi -forms.dvi: ${srcdir}/forms.texi ${gfdl} +forms.dvi: $(forms_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi -forms.pdf: ${srcdir}/forms.texi ${gfdl} +forms.pdf: $(forms_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi +forms.html: $(forms_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/forms.texi -# gnus/message/emacs-mime/sieve/pgg are part of Gnus: +## gnus/message/emacs-mime/sieve/pgg are part of Gnus. +gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} gnus : $(buildinfodir)/gnus$(INFO_EXT) -$(buildinfodir)/gnus$(INFO_EXT): ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} +$(buildinfodir)/gnus$(INFO_EXT): $(gnus_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/gnus.texi -gnus.dvi: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} +gnus.dvi: $(gnus_deps) sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi $(ENVADD) $(TEXI2DVI) gnustmp.texi cp gnustmp.dvi $@ rm gnustmp.* -gnus.pdf: ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} +gnus.pdf: $(gnus_deps) sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi $(ENVADD) $(TEXI2PDF) gnustmp.texi cp gnustmp.pdf $@ rm gnustmp.* +gnus.html: $(gnus_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/gnus.texi +htmlfontify_deps = ${srcdir}/htmlfontify.texi ${gfdl} htmlfontify : $(buildinfodir)/htmlfontify$(INFO_EXT) -$(buildinfodir)/htmlfontify$(INFO_EXT): ${srcdir}/htmlfontify.texi ${gfdl} +$(buildinfodir)/htmlfontify$(INFO_EXT): $(htmlfontify_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/htmlfontify.texi -htmlfontify.dvi: ${srcdir}/htmlfontify.texi ${gfdl} +htmlfontify.dvi: $(htmlfontify_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/htmlfontify.texi -htmlfontify.pdf: ${srcdir}/htmlfontify.texi ${gfdl} +htmlfontify.pdf: $(htmlfontify_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/htmlfontify.texi +htmlfontify.html: $(htmlfontify_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/htmlfontify.texi -# NB this one needs --no-split even without a .info extension. +idlwave_deps = ${srcdir}/idlwave.texi ${gfdl} idlwave : $(buildinfodir)/idlwave$(INFO_EXT) -$(buildinfodir)/idlwave$(INFO_EXT): ${srcdir}/idlwave.texi ${gfdl} +# NB this one needs --no-split even without a .info extension. +$(buildinfodir)/idlwave$(INFO_EXT): $(idlwave_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/idlwave.texi -idlwave.dvi: ${srcdir}/idlwave.texi ${gfdl} +idlwave.dvi: $(idlwave_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi -idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl} +idlwave.pdf: $(idlwave_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi +idlwave.html: $(idlwave_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/idlwave.texi +ido_deps = ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} ido : $(buildinfodir)/ido$(INFO_EXT) -$(buildinfodir)/ido$(INFO_EXT): ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/ido$(INFO_EXT): $(ido_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi -ido.dvi: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} +ido.dvi: $(ido_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ido.texi -ido.pdf: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} +ido.pdf: $(ido_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ido.texi +ido.html: $(ido_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ido.texi -# NB this one needs --no-split even without a .info extension. +info_deps = ${srcdir}/info.texi ${gfdl} # Avoid name clash with overall "info" target. info.info : $(buildinfodir)/info$(INFO_EXT) -$(buildinfodir)/info$(INFO_EXT): ${srcdir}/info.texi ${gfdl} +# NB this one needs --no-split even without a .info extension. +$(buildinfodir)/info$(INFO_EXT): $(info_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/info.texi -info.dvi: ${srcdir}/info.texi ${gfdl} +info.dvi: $(info_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi -info.pdf: ${srcdir}/info.texi ${gfdl} +info.pdf: $(info_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi +info.html: $(info_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/info.texi +mairix_el_deps = ${srcdir}/mairix-el.texi ${gfdl} mairix-el : $(buildinfodir)/mairix-el$(INFO_EXT) -$(buildinfodir)/mairix-el$(INFO_EXT): ${srcdir}/mairix-el.texi ${gfdl} +$(buildinfodir)/mairix-el$(INFO_EXT): $(mairix_el_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mairix-el.texi -mairix-el.dvi: ${srcdir}/mairix-el.texi ${gfdl} +mairix-el.dvi: $(mairix_el_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi -mairix-el.pdf: ${srcdir}/mairix-el.texi ${gfdl} +mairix-el.pdf: $(mairix_el_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi +mairix-el.html: $(mairix_el_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mairix-el.texi +message_deps = ${srcdir}/message.texi ${gfdl} message : $(buildinfodir)/message$(INFO_EXT) -$(buildinfodir)/message$(INFO_EXT): ${srcdir}/message.texi ${gfdl} +$(buildinfodir)/message$(INFO_EXT): $(message_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/message.texi -message.dvi: ${srcdir}/message.texi ${gfdl} +message.dvi: $(message_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi -message.pdf: ${srcdir}/message.texi ${gfdl} +message.pdf: $(message_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi +message.html: $(message_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/message.texi +mh_e_deps = ${srcdir}/mh-e.texi ${gfdl} mh-e : $(buildinfodir)/mh-e$(INFO_EXT) -$(buildinfodir)/mh-e$(INFO_EXT): ${srcdir}/mh-e.texi ${gfdl} +$(buildinfodir)/mh-e$(INFO_EXT): $(mh_e_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/mh-e.texi -mh-e.dvi: ${srcdir}/mh-e.texi ${gfdl} +mh-e.dvi: $(mh_e_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi -mh-e.pdf: ${srcdir}/mh-e.texi ${gfdl} +mh-e.pdf: $(mh_e_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi +mh-e.html: $(mh_e_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/mh-e.texi +newsticker_deps = ${srcdir}/newsticker.texi ${gfdl} newsticker : $(buildinfodir)/newsticker$(INFO_EXT) -$(buildinfodir)/newsticker$(INFO_EXT): ${srcdir}/newsticker.texi ${gfdl} +$(buildinfodir)/newsticker$(INFO_EXT): $(newsticker_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/newsticker.texi -newsticker.dvi: ${srcdir}/newsticker.texi ${gfdl} +newsticker.dvi: $(newsticker_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi -newsticker.pdf: ${srcdir}/newsticker.texi ${gfdl} +newsticker.pdf: $(newsticker_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi +newsticker.html: $(newsticker_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/newsticker.texi +nxml_mode_deps = ${srcdir}/nxml-mode.texi ${gfdl} nxml-mode : $(buildinfodir)/nxml-mode$(INFO_EXT) -$(buildinfodir)/nxml-mode$(INFO_EXT): ${srcdir}/nxml-mode.texi ${gfdl} +$(buildinfodir)/nxml-mode$(INFO_EXT): $(nxml_mode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/nxml-mode.texi -nxml-mode.dvi: ${srcdir}/nxml-mode.texi ${gfdl} +nxml-mode.dvi: $(nxml_mode_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi -nxml-mode.pdf: ${srcdir}/nxml-mode.texi ${gfdl} +nxml-mode.pdf: $(nxml_mode_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi +nxml-mode.html: $(nxml_mode_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/nxml-mode.texi +org_deps = ${srcdir}/org.texi ${gfdl} org : $(buildinfodir)/org$(INFO_EXT) -$(buildinfodir)/org$(INFO_EXT): ${srcdir}/org.texi ${gfdl} +$(buildinfodir)/org$(INFO_EXT): $(org_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/org.texi -org.dvi: ${srcdir}/org.texi ${gfdl} +org.dvi: $(org_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi -org.pdf: ${srcdir}/org.texi ${gfdl} +org.pdf: $(org_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi +org.html: $(org_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/org.texi +pcl_cvs_deps = ${srcdir}/pcl-cvs.texi ${gfdl} pcl-cvs : $(buildinfodir)/pcl-cvs$(INFO_EXT) -$(buildinfodir)/pcl-cvs$(INFO_EXT): ${srcdir}/pcl-cvs.texi ${gfdl} +$(buildinfodir)/pcl-cvs$(INFO_EXT): $(pcl_cvs_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pcl-cvs.texi -pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi ${gfdl} +pcl-cvs.dvi: $(pcl_cvs_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi -pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi ${gfdl} +pcl-cvs.pdf: $(pcl_cvs_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi +pcl-cvs.html: $(pcl_cvs_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pcl-cvs.texi +pgg_deps = ${srcdir}/pgg.texi ${gfdl} pgg : $(buildinfodir)/pgg$(INFO_EXT) -$(buildinfodir)/pgg$(INFO_EXT): ${srcdir}/pgg.texi ${gfdl} +$(buildinfodir)/pgg$(INFO_EXT): $(pgg_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/pgg.texi -pgg.dvi: ${srcdir}/pgg.texi ${gfdl} +pgg.dvi: $(pgg_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi -pgg.pdf: ${srcdir}/pgg.texi ${gfdl} +pgg.pdf: $(pgg_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi +pgg.html: $(pgg_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/pgg.texi +rcirc_deps = ${srcdir}/rcirc.texi ${gfdl} rcirc : $(buildinfodir)/rcirc$(INFO_EXT) -$(buildinfodir)/rcirc$(INFO_EXT): ${srcdir}/rcirc.texi ${gfdl} +$(buildinfodir)/rcirc$(INFO_EXT): $(rcirc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/rcirc.texi -rcirc.dvi: ${srcdir}/rcirc.texi ${gfdl} +rcirc.dvi: $(rcirc_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi -rcirc.pdf: ${srcdir}/rcirc.texi ${gfdl} +rcirc.pdf: $(rcirc_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi +rcirc.html: $(rcirc_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/rcirc.texi +reftex_deps = ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} reftex : $(buildinfodir)/reftex$(INFO_EXT) -$(buildinfodir)/reftex$(INFO_EXT): ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/reftex$(INFO_EXT): $(reftex_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/reftex.texi -reftex.dvi: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} +reftex.dvi: $(reftex_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi -reftex.pdf: ${srcdir}/reftex.texi $(emacsdir)/emacsver.texi ${gfdl} +reftex.pdf: $(reftex_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi +reftex.html: $(reftex_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/reftex.texi +remember_deps = ${srcdir}/remember.texi ${gfdl} remember : $(buildinfodir)/remember$(INFO_EXT) -$(buildinfodir)/remember$(INFO_EXT): ${srcdir}/remember.texi ${gfdl} +$(buildinfodir)/remember$(INFO_EXT): $(remember_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/remember.texi -remember.dvi: ${srcdir}/remember.texi ${gfdl} +remember.dvi: $(remember_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi -remember.pdf: ${srcdir}/remember.texi ${gfdl} +remember.pdf: $(remember_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi +remember.html: $(remember_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/remember.texi +sasl_deps = ${srcdir}/sasl.texi ${gfdl} sasl : $(buildinfodir)/sasl$(INFO_EXT) -$(buildinfodir)/sasl$(INFO_EXT): ${srcdir}/sasl.texi ${gfdl} +$(buildinfodir)/sasl$(INFO_EXT): $(sasl_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sasl.texi -sasl.dvi: ${srcdir}/sasl.texi ${gfdl} +sasl.dvi: $(sasl_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi -sasl.pdf: ${srcdir}/sasl.texi ${gfdl} +sasl.pdf: $(sasl_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi +sasl.html: $(sasl_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sasl.texi +sc_deps = ${srcdir}/sc.texi ${gfdl} sc : $(buildinfodir)/sc$(INFO_EXT) -$(buildinfodir)/sc$(INFO_EXT): ${srcdir}/sc.texi ${gfdl} +$(buildinfodir)/sc$(INFO_EXT): $(sc_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sc.texi -sc.dvi: ${srcdir}/sc.texi ${gfdl} +sc.dvi: $(sc_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi -sc.pdf: ${srcdir}/sc.texi ${gfdl} +sc.pdf: $(sc_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi +sc.html: $(sc_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sc.texi +semantic_deps = ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} semantic : $(buildinfodir)/semantic$(INFO_EXT) -$(buildinfodir)/semantic$(INFO_EXT): ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} +$(buildinfodir)/semantic$(INFO_EXT): $(semantic_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/semantic.texi -semantic.dvi: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} +semantic.dvi: $(semantic_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi -semantic.pdf: ${srcdir}/semantic.texi ${srcdir}/sem-user.texi ${gfdl} +semantic.pdf: $(semantic_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi +semantic.html: $(semantic_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/semantic.texi +ses_deps = ${srcdir}/ses.texi ${gfdl} ses : $(buildinfodir)/ses$(INFO_EXT) -$(buildinfodir)/ses$(INFO_EXT): ${srcdir}/ses.texi ${gfdl} +$(buildinfodir)/ses$(INFO_EXT): $(ses_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ses.texi -ses.dvi: ${srcdir}/ses.texi ${gfdl} +ses.dvi: $(ses_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi -ses.pdf: ${srcdir}/ses.texi ${gfdl} +ses.pdf: $(ses_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi +ses.html: $(ses_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/ses.texi +sieve_deps = ${srcdir}/sieve.texi ${gfdl} sieve : $(buildinfodir)/sieve$(INFO_EXT) -$(buildinfodir)/sieve$(INFO_EXT): ${srcdir}/sieve.texi ${gfdl} +$(buildinfodir)/sieve$(INFO_EXT): $(sieve_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/sieve.texi -sieve.dvi: ${srcdir}/sieve.texi ${gfdl} +sieve.dvi: $(sieve_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi -sieve.pdf: ${srcdir}/sieve.texi ${gfdl} +sieve.pdf: $(sieve_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi +sieve.html: $(sieve_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/sieve.texi +smtpmail_deps = ${srcdir}/smtpmail.texi ${gfdl} smtpmail : $(buildinfodir)/smtpmail$(INFO_EXT) -$(buildinfodir)/smtpmail$(INFO_EXT): ${srcdir}/smtpmail.texi ${gfdl} +$(buildinfodir)/smtpmail$(INFO_EXT): $(smtpmail_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/smtpmail.texi -smtpmail.dvi: ${srcdir}/smtpmail.texi ${gfdl} +smtpmail.dvi: $(smtpmail_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi -smtpmail.pdf: ${srcdir}/smtpmail.texi ${gfdl} +smtpmail.pdf: $(smtpmail_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi +smtpmail.html: $(smtpmail_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/smtpmail.texi +speedbar_deps = ${srcdir}/speedbar.texi ${gfdl} speedbar : $(buildinfodir)/speedbar$(INFO_EXT) -$(buildinfodir)/speedbar$(INFO_EXT): ${srcdir}/speedbar.texi ${gfdl} +$(buildinfodir)/speedbar$(INFO_EXT): $(speedbar_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/speedbar.texi -speedbar.dvi: ${srcdir}/speedbar.texi ${gfdl} +speedbar.dvi: $(speedbar_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi -speedbar.pdf: ${srcdir}/speedbar.texi ${gfdl} +speedbar.pdf: $(speedbar_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi +speedbar.html: $(speedbar_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/speedbar.texi +srecode_deps = ${srcdir}/srecode.texi ${gfdl} srecode : $(buildinfodir)/srecode$(INFO_EXT) -$(buildinfodir)/srecode$(INFO_EXT): ${srcdir}/srecode.texi ${gfdl} +$(buildinfodir)/srecode$(INFO_EXT): $(srecode_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/srecode.texi -srecode.dvi: ${srcdir}/srecode.texi ${gfdl} +srecode.dvi: $(srecode_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/srecode.texi -srecode.pdf: ${srcdir}/srecode.texi ${gfdl} +srecode.pdf: $(srecode_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/srecode.texi +srecode.html: $(srecode_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/srecode.texi +todo_mode_deps = ${srcdir}/todo-mode.texi ${gfdl} +todo-mode : $(buildinfodir)/todo-mode$(INFO_EXT) +$(buildinfodir)/todo-mode$(INFO_EXT): $(todo_mode_deps) + $(mkinfodir) + $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/todo-mode.texi +todo-mode.dvi: $(todo_mode_deps) + $(ENVADD) $(TEXI2DVI) ${srcdir}/todo-mode.texi +todo-mode.pdf: $(todo_mode_deps) + $(ENVADD) $(TEXI2PDF) ${srcdir}/todo-mode.texi +todo-mode.html: $(todo_mode_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/todo-mode.texi + +tramp_deps = ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} tramp : $(buildinfodir)/tramp$(INFO_EXT) -$(buildinfodir)/tramp$(INFO_EXT): ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} +$(buildinfodir)/tramp$(INFO_EXT): $(tramp_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi -tramp.dvi: ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} +tramp.dvi: $(tramp_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi -tramp.pdf: ${srcdir}/tramp.texi ${srcdir}/trampver.texi ${gfdl} +tramp.pdf: $(tramp_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi +tramp.html: $(tramp_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ -D emacs ${srcdir}/tramp.texi +url_deps = ${srcdir}/url.texi ${gfdl} url : $(buildinfodir)/url$(INFO_EXT) -$(buildinfodir)/url$(INFO_EXT): ${srcdir}/url.texi ${gfdl} +$(buildinfodir)/url$(INFO_EXT): $(url_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/url.texi -url.dvi: ${srcdir}/url.texi ${gfdl} +url.dvi: $(url_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi -url.pdf: ${srcdir}/url.texi ${gfdl} +url.pdf: $(url_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi +url.html: $(url_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/url.texi +vip_deps = ${srcdir}/vip.texi ${gfdl} vip : $(buildinfodir)/vip$(INFO_EXT) -$(buildinfodir)/vip$(INFO_EXT): ${srcdir}/vip.texi ${gfdl} +$(buildinfodir)/vip$(INFO_EXT): $(vip_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/vip.texi -vip.dvi: ${srcdir}/vip.texi ${gfdl} +vip.dvi: $(vip_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi -vip.pdf: ${srcdir}/vip.texi ${gfdl} +vip.pdf: $(vip_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi +vip.html: $(vip_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/vip.texi +viper_deps = ${srcdir}/viper.texi ${gfdl} viper : $(buildinfodir)/viper$(INFO_EXT) -$(buildinfodir)/viper$(INFO_EXT): ${srcdir}/viper.texi ${gfdl} +$(buildinfodir)/viper$(INFO_EXT): $(viper_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/viper.texi -viper.dvi: ${srcdir}/viper.texi ${gfdl} +viper.dvi: $(viper_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi -viper.pdf: ${srcdir}/viper.texi ${gfdl} +viper.pdf: $(viper_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi +viper.html: $(viper_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/viper.texi +widget_deps = ${srcdir}/wisent.texi ${gfdl} widget : $(buildinfodir)/widget$(INFO_EXT) -$(buildinfodir)/widget$(INFO_EXT): ${srcdir}/widget.texi ${gfdl} +$(buildinfodir)/widget$(INFO_EXT): $(widget_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/widget.texi -widget.dvi: ${srcdir}/widget.texi ${gfdl} +widget.dvi: $(widget_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi -widget.pdf: ${srcdir}/widget.texi ${gfdl} +widget.pdf: $(widget_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi +widget.html: $(widget_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/widget.texi +wisent_deps = ${srcdir}/wisent.texi ${gfdl} wisent : $(buildinfodir)/wisent$(INFO_EXT) -$(buildinfodir)/wisent$(INFO_EXT): ${srcdir}/wisent.texi ${gfdl} +$(buildinfodir)/wisent$(INFO_EXT): $(wisent_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/wisent.texi -wisent.dvi: ${srcdir}/wisent.texi ${gfdl} +wisent.dvi: $(wisent_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/wisent.texi -wisent.pdf: ${srcdir}/wisent.texi ${gfdl} +wisent.pdf: $(wisent_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/wisent.texi +wisent.html: $(wisent_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/wisent.texi +woman_deps = ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} woman : $(buildinfodir)/woman$(INFO_EXT) -$(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} +$(buildinfodir)/woman$(INFO_EXT): $(woman_deps) $(mkinfodir) $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/woman.texi -woman.dvi: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} +woman.dvi: $(woman_deps) $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi -woman.pdf: ${srcdir}/woman.texi $(emacsdir)/emacsver.texi ${gfdl} +woman.pdf: $(woman_deps) $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi - +woman.html: $(woman_deps) + $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ ${srcdir}/woman.texi .PHONY: mostlyclean clean distclean maintainer-clean @@ -718,7 +837,8 @@ mostlyclean: rm -f gnustmp.* clean: mostlyclean - rm -f $(DVI_TARGETS) $(PDF_TARGETS) + rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) + rm -f efaq-w32.dvi efaq-w32.html efaq-w32.pdf efaq-w32.ps rm -f emacs-misc-${version}.tar* distclean: clean @@ -753,4 +873,53 @@ dist: tar -cf emacs-misc-${version}.tar emacs-misc-${version} rm -rf emacs-misc-${version} + +.PHONY: install-dvi install-html install-pdf install-ps install-doc + +install-dvi: dvi + umask 022; $(MKDIR_P) $(DESTDIR)$(dvidir) + $(INSTALL_DATA) $(DVI_TARGETS) $(DESTDIR)$(dvidir) +install-html: html + umask 022; $(MKDIR_P) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) $(HTML_TARGETS) $(DESTDIR)$(htmldir) +install-pdf: pdf + umask 022;$(MKDIR_P) $(DESTDIR)$(pdfdir) + $(INSTALL_DATA) $(PDF_TARGETS) $(DESTDIR)$(pdfdir) +install-ps: ps + umask 022; $(MKDIR_P) $(DESTDIR)$(psdir) + for file in $(PS_TARGETS); do \ + $(INSTALL_DATA) $${file} $(DESTDIR)$(psdir); \ + [ -n "${GZIP_PROG}" ] || continue; \ + rm -f $(DESTDIR)$(psdir)/$${file}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)$(psdir)/$${file}; \ + done + +## Top-level Makefile installs the info pages. +install-doc: install-dvi install-html install-pdf install-ps + + + +.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc + +uninstall-dvi: + for file in $(DVI_TARGETS); do \ + rm -f $(DESTDIR)$(dvidir)/$${file}; \ + done +uninstall-html: + for file in $(HTML_TARGETS); do \ + rm -f $(DESTDIR)$(htmldir)/$${file}; \ + done +uninstall-ps: + ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \ + for file in $(PS_TARGETS); do \ + rm -f $(DESTDIR)$(psdir)/$${file}$${ext}; \ + done +uninstall-pdf: + for file in $(PDF_TARGETS); do \ + rm -f $(DESTDIR)$(pdfdir)/$${file}; \ + done + +uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps + + ### Makefile ends here diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index 4cc5d9c5767..c62d7026541 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -241,7 +241,7 @@ functions, classes, etc.; there are other packages for that. * Customizing Indentation:: * Custom Macros:: * Odds and Ends:: -* Sample .emacs File:: +* Sample Init File:: * Performance Issues:: * Limitations and Known Bugs:: * FAQ:: @@ -1113,7 +1113,7 @@ valid.}. This function is not bound to a key by default, but it's intended to be used on the @kbd{RET} key. If you like the behavior of @code{newline-and-indent} on @kbd{RET}, you should consider switching to -this function. @xref{Sample .emacs File}. +this function. @xref{Sample Init File}. @item @kbd{M-x c-context-open-line} @findex c-context-open-line @@ -1170,7 +1170,7 @@ and @ref{Indentation Engine Basics}. You can toggle each of these minor modes on and off, and you can configure @ccmode{} so that it starts up with your favorite -combination of them (@pxref{Sample .emacs File}). By default, when +combination of them (@pxref{Sample Init File}). By default, when you initialize a buffer, electric mode and syntactic-indentation mode are enabled but the other two modes are disabled. @@ -2378,7 +2378,7 @@ those set by @code{c-default-style}. @vindex initialization-hook (c-) Hook run only once per Emacs session, when @ccmode{} is initialized. This is a good place to change key bindings (or add new ones) in any -of the @ccmode{} key maps. @xref{Sample .emacs File}. +of the @ccmode{} key maps. @xref{Sample Init File}. @end defvar @defvar c-mode-common-hook @@ -2406,7 +2406,7 @@ overwritten when @ccmode{} gets loaded. Here's a simplified example of what you can add to your @file{.emacs} file to do things whenever any @ccmode{} language is edited. See the Emacs manuals for more information on customizing Emacs via hooks. -@xref{Sample .emacs File}, for a more complete sample @file{.emacs} +@xref{Sample Init File}, for a more complete sample @file{.emacs} file. @example @@ -2685,7 +2685,7 @@ create a new @dfn{style definition}, possibly based on an existing style. To do this, put the new style's settings into a list with the following format; the list can then be passed as an argument to the function @code{c-add-style}. You can see an example of a style -definition in @ref{Sample .emacs File}. +definition in @ref{Sample Init File}. @cindex style definition @c @defvr {List} style definition @@ -2753,7 +2753,7 @@ deprecated and it might be removed from @ccmode{} in a future release. You should use @code{c-set-style} instead. The sample @file{.emacs} file provides a concrete example of how a new -style can be added and automatically set. @xref{Sample .emacs File}. +style can be added and automatically set. @xref{Sample Init File}. @end defun @defvar c-style-alist @@ -6760,7 +6760,7 @@ initialization code. @end defun @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -@node Odds and Ends, Sample .emacs File, Custom Macros, Top +@node Odds and Ends, Sample Init File, Custom Macros, Top @comment node-name, next, previous, up @chapter Odds and Ends @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -6804,9 +6804,9 @@ anchoring position to indent the line in that case. @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -@node Sample .emacs File, Performance Issues, Odds and Ends, Top +@node Sample Init File, Performance Issues, Odds and Ends, Top @comment node-name, next, previous, up -@appendix Sample .emacs File +@appendix Sample Init File @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Here's a sample .emacs file fragment that might help you along the way. @@ -6863,7 +6863,7 @@ to change some of the actual values. @end verbatim @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -@node Performance Issues, Limitations and Known Bugs, Sample .emacs File, Top +@node Performance Issues, Limitations and Known Bugs, Sample Init File, Top @comment node-name, next, previous, up @chapter Performance Issues @cindex performance diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 90f8a258d23..6dfc41d83f3 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -461,6 +461,7 @@ matter of stylistic taste: @var{body})) @end example +@cindex destructuring, in argument list Argument lists support @dfn{destructuring}. In Common Lisp, destructuring is only allowed with @code{defmacro}; this package allows it with @code{cl-defun} and other argument lists as well. @@ -1492,6 +1493,7 @@ simply returning @code{nil}. @node Blocks and Exits @section Blocks and Exits +@cindex block @noindent Common Lisp @dfn{blocks} provide a non-local exit mechanism very @@ -2139,6 +2141,7 @@ that was just set by the previous clause; in the second loop, based on the value of @code{x} left over from the previous time through the loop. +@cindex destructuring, in cl-loop Another feature of the @code{cl-loop} macro is @emph{destructuring}, similar in concept to the destructuring provided by @code{defmacro} (@pxref{Argument Lists}). @@ -2503,6 +2506,8 @@ if @var{expr} returns a list of the wrong number of arguments or with incorrect keyword arguments. @end defmac +@cindex compiler macros +@cindex define compiler macros This package also includes the Common Lisp @code{define-compiler-macro} facility, which allows you to define compile-time expansions and optimizations for your functions. diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi index 339d59bd123..40aeae836ef 100644 --- a/doc/misc/edt.texi +++ b/doc/misc/edt.texi @@ -789,13 +789,13 @@ so the above directions may need some modification if your site has such special needs. @menu -* edt-user.el:: Creating your own @file{edt-user.el} file. +* Init file:: Creating your own @file{edt-user.el} file. * Words:: Specifying word entities. * Control keys:: Enabling EDT control key sequence bindings. * Scroll margins:: Setting scroll margins. @end menu -@node edt-user.el +@node Init file @section Creating your own @file{edt-user.el} File A sample @file{edt-user.el} file is provided in the Emacs @file{etc/} diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi new file mode 100644 index 00000000000..c6f44cea2b8 --- /dev/null +++ b/doc/misc/efaq-w32.texi @@ -0,0 +1,2365 @@ +\input texinfo @c -*-coding:utf-8 -*- +@setfilename efaq-w32 +@settitle GNU Emacs FAQ For MS Windows +@setchapternewpage odd +@syncodeindex pg cp +@syncodeindex ky cp +@syncodeindex tp cp +@syncodeindex vr fn + +@documentdescription +Answers to Frequently asked Questions about using Emacs on Microsoft Windows. +@end documentdescription + +@include emacsver.texi + +@documentencoding utf-8 +@documentlanguage en + +@copying +Copyright @copyright{} 2008, 2010-2013 Free Software Foundation, Inc. + +@quotation +This list of frequently asked questions about GNU Emacs on MS Windows +with answers (``FAQ'') may be translated into other languages, +transformed into other formats (e.g. Texinfo, Info, WWW), and updated +with new information. + +The same conditions apply to any derivative of the FAQ as apply to the FAQ +itself. Every copy of the FAQ must include this notice or an approved +translation, information on who is currently maintaining the FAQ and how to +contact them (including their e-mail address), and information on where the +latest version of the FAQ is archived (including FTP information). + +The FAQ may be copied and redistributed under these conditions, except that +the FAQ may not be embedded in a larger literary work unless that work +itself allows free copying and redistribution. +@end quotation +@end copying + +@dircategory Emacs +@direntry +* Emacs W32 FAQ: (efaq-w32). FAQs about Emacs on MS Windows. +@end direntry + +@c The @titlepage stuff only appears in the printed version +@titlepage +@sp 10 +@center @titlefont{GNU Emacs FAQ for MS Windows} + +@c The following two commands start the copyright page. +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@footnotestyle end + +@node Top +@top GNU Emacs FAQ for MS Windows + +This is the FAQ for using GNU Emacs on MS Windows, as distributed with +Emacs @value{EMACSVER}. + +This FAQ is maintained by the developers and users of Emacs on MS Windows. +If you find any errors, or have any suggestions, please send them to +the @url{http://lists.gnu.org/mailman/listinfo/help-emacs-windows, +help-emacs-windows} mailing list. + +At time of writing, the latest version of GNU Emacs is version @value{EMACSVER}. + +@c Links to ftp.gnu.org are given as http links, since Windows ftp clients +@c are notoriously bad at handling firewalls etc. + +@contents + +@menu +* Introduction:: +* Getting Emacs:: +* Installing Emacs:: +* Display Settings:: +* Fonts and text translation:: +* Printing:: +* Sub-processes:: +* Network access:: +* Text and Utility modes:: +* Developing with Emacs:: +* Other useful ports:: +* Further information:: +* Indexes:: +@end menu + +@c ------------------------------------------------------------ +@node Introduction +@chapter Introduction +@cindex scope of FAQ + +This FAQ covers questions that are specific to running GNU Emacs on Windows. +For more general information, see the other Emacs manuals. +@xref{Further information}. + +@menu +* Why Emacs on Windows:: +* Which versions of Windows:: +* Other versions of Emacs:: +@end menu + +@node Why Emacs on Windows +@section Why support GNU Emacs on Windows? +@cindex Why Windows + +It is not our goal to ``help Windows users'' by making text editing +on Windows more convenient. We aim to replace proprietary software, +not to enhance it. So why support GNU Emacs on Windows? + +We hope that the experience of using GNU Emacs on Windows will give +programmers a taste of freedom, and that this will later inspire them +to move to a free operating system such as GNU/Linux. That is the +main valid reason to support free applications on nonfree operating +systems. + +@node Which versions of Windows +@section Which versions of Windows are supported? +@cindex Windows, versions +@cindex supported versions of Windows + +Emacs @value{EMACSVER} is known to run on all versions of Windows from +@c FIXME does it really still support Windows 98? Does it matter? +Windows 98 and Windows NT 4.0 through to Windows 7. The Windows port is +built using the Win32 API and supports most features of the X version, +including variable width fonts, images and tooltips. + +@node Other versions of Emacs +@section What other versions of Emacs run on Windows? +@cindex other ports of Emacs + +@xref{Cygwin}. + +@cindex DOS port +@cindex Windows 3.11 port +Emacs can also be compiled for MSDOS. When run on recent MS Windows, +it supports long file names, and uses the Windows clipboard. +See the @file{msdos} directory in the Emacs sources for building +instructions (requires DJGPP). + +@c ------------------------------------------------------------ +@node Getting Emacs +@chapter Getting Emacs + +@menu +* Downloading:: +* Compiling:: +* Debugging:: +@end menu + +@node Downloading +@section Where can I download Emacs? + +@cindex precompiled binaries +@cindex where to get Emacs binaries +Pre-compiled versions are distributed from +@uref{http://ftpmirror.gnu.org/emacs/windows/, ftp.gnu.org mirrors}. +Emacs binaries are distributed as zip files, digitally +signed by the developer who built them. Generally most users will +want the file @file{emacs-@value{EMACSVER}-bin-i386.zip}, which +contains everything you need to get started. + +@cindex where to get sources +@cindex Emacs source code +@cindex source for Emacs +The latest source is available from +@uref{http://ftpmirror.gnu.org/emacs/, ftp.gnu.org mirrors}. It is +distributed as a compressed tar file, digitally signed by the maintainer +who made the release. + +@cindex Bzr, getting Emacs +@cindex latest development version of Emacs +@cindex Emacs Development +The development version of Emacs is available from +@uref{http://savannah.gnu.org/projects/emacs, Savannah}, the GNU +development site. + +@node Compiling +@section How can I compile Emacs myself? +@cindex compiling Emacs + +To compile Emacs on Windows, you will need the MingW or Cygwin port of +GCC with MingW make, or a Microsoft C compiler with nmake and the +single threaded C runtime library. Recent versions of Microsoft +Visual Studio no longer come with the single threaded C runtime +library, which is required for certain POSIX compatibility, so MingW +is usually the best choice. Image support requires external +libraries, the headers and import libraries for which will need to be +installed where your compiler can find them. You will also need ports +of GNU @command{rm} and @command{cp}, as the Windows native +equivalents are not consistent between versions. GNU texinfo will be +required to build the manuals. @xref{Other useful ports}. + +After unpacking the source, or checking out of Bzr, be sure to read the +instructions in @file{nt/README} and @file{nt/INSTALL}. + +@node Debugging +@section How do I use a debugger on Emacs? +@cindex debugging Emacs +@cindex bugs in Emacs, how to debug +@cindex Emacs debugging + +By default, Emacs is compiled with debugging on, and optimizations enabled. +The optimizations may interfere with some types of debugging; the debugger +may not show clearly where it is, or may not be able to inspect certain +variables. If this is the case, reconfigure with @option{--no-opt}. + +The file @file{etc/DEBUG} contains general debugging hints, as well as +specific notes about debugging Emacs with both gdb and Microsoft debuggers. + +@menu +* GDB:: +* Microsoft Developer Studio:: +@end menu + +@node GDB +@subsection GDB +@cindex GDB, debugging Emacs with +@cindex debugging Emacs with GDB + +GDB is the GNU debugger, which can be used to debug Emacs when it has +been compiled with GCC. The best results will be obtained if you +start gdb from the @file{src} directory as @samp{gdb oo/i386/emacs.exe}. +This will load the init file @file{.gdbinit} in that directory, to +define some extra commands for working with lisp while debugging, and +set up breakpoints to catch abnormal aborts. + +@node Microsoft Developer Studio +@subsection Microsoft Developer Studio +@cindex MSVC++, debugging Emacs with +@cindex DevStudio, debugging Emacs with +@cindex debugging Emacs with MS DevStudio + +MS DevStudio can be used to debug Emacs when it has been compiled with +a Microsoft compiler. To view lisp variables, you can call the +function @code{debug_print} from the Quickwatch window. Some +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/debug.txt, +old tips} are probably still valid. + +@c ------------------------------------------------------------ +@node Installing Emacs +@chapter Installing Emacs + +@menu +* Unpacking:: +* Installing:: +* Image support:: +* Init file:: +* Location of init file:: +* Troubleshooting init file:: +* Associate files with Emacs:: +* Find-file and the Desktop:: +* Make Windows more like X:: +* Make Emacs like a Windows app:: +* Window operations:: +* Uninstall:: +* Does not run:: +* Virus:: +* Anti-virus:: +@end menu + +@node Unpacking +@section How do I unpack the distributions? +@cindex unpacking Emacs distribution +@cindex extracting Emacs distribution +@cindex unzipping Emacs distribution +@cindex untarring Emacs distribution +@cindex zip files, how to unpack Emacs binaries +@cindex tar.gz files, how to unpack Emacs sources + +The binary distributions are distributed as zip files, which are handled +natively by Windows XP and later. For earlier versions, there are many +tools that can handle the zip format, from InfoZip's command line unzip +tool, to 7zip's multi-format graphical archive explorer. Although +popular, WinZip has caused problems with line-ends in the past, and is not +Free software, so we do not recommend it. + +Source distributions are distributed as gzipped tar files. 7zip and +similar multi-format graphical tools can handle these, or you can get +Windows ports of the command line gzip and tar tools from multiple sources. +@xref{Other useful ports}. + +The command to unpack a source distribution from the command line is: +@example +tar xzf emacs-@value{EMACSVER}.tar.gz +@end example + +If this does not work with the versions of tar and gzip that you have, +you may need to try a two step process: +@example +gzip -dc emacs-@value{EMACSVER}.tar.gz | tar xvf - +@end example + +You may see many messages from tar complaining about being unable to change +the modification time on directories, and from gzip complaining about a +broken pipe. These messages are usually harmless, caused by incomplete ports +that are not fully aware of the limitations of Windows. + +@node Installing +@section How do I install Emacs after unpacking? +@cindex installing Emacs +@pindex addpm +@cindex Start Menu, creating icons for Emacs + +You can run Emacs without any extra steps, but if you want icons in your +Start Menu, or for Emacs to detect the image libraries that are already +installed on your system as part of GTK, then you should run the program +@file{emacs-@value{EMACSVER}\bin\addpm.exe}. + +@node Image support +@section How do I get image support? +@cindex images, installing libraries for +@cindex jpeg, installing image support in Emacs +@cindex png, installing image support in Emacs +@cindex gif, installing image support in Emacs +@cindex tiff, installing image support in Emacs +@cindex xpm, installing image support in Emacs +@cindex toolbar, installing color icons in +@cindex color images, installing support for images in Emacs +@cindex monochrome images, getting color images in Emacs +@cindex black and white images, getting color images in Emacs + +Emacs has built in support for XBM and PBM/PGM/PPM images. This is +sufficient to see the monochrome splash screen and tool-bar icons. +Since 22.2, the official precompiled binaries for Windows have bundled +libXpm, which is required to display the color versions of those images. + +Emacs is compiled to recognize JPEG, PNG, GIF and TIFF images also, +but displaying these image types require external DLLs which are not +bundled with Emacs. @xref{Other useful ports}. + +@node Init file +@section What is my init file? +@cindex .emacs +@cindex init file + +When Emacs starts up, it attempts to load and execute the contents of +a file commonly called @file{.emacs} (though it may have other names, +@pxref{Installing Emacs,,Where do I put my init file?}) which contains any +customizations you have made. You can manually add lisp code to your +.emacs, or you can use the Customization interface accessible from the +@emph{Options} menu. If the file does not exist, Emacs will start +with the default settings. + +@node Location of init file +@section Where do I put my init file? +@cindex HOME directory +@cindex .emacs.d +@cindex _emacs +@cindex init.el +@cindex registry, setting the HOME directory in + +On Windows, the .emacs file may be called _emacs for backward +compatibility with DOS and FAT filesystems where filenames could not +start with a dot. Some users prefer to continue using such a name, +because Explorer cannot create a file with a name starting with a dot, +even though the filesystem and most other programs can handle it. +In Emacs 22 and later, the init file may also be called +@file{.emacs.d/init.el}. Many of the other files that are created +by lisp packages are now stored in the @file{.emacs.d} directory too, +so this keeps all your Emacs related files in one place. + +All the files mentioned above should go in your @env{HOME} directory. +The @env{HOME} directory is determined by following the steps below: + +@enumerate +@item +If the environment variable @env{HOME} is set, use the directory it indicates. +@item +If the registry entry @code{HKCU\SOFTWARE\GNU\Emacs\HOME} is set, use the +directory it indicates. +@item +If the registry entry @code{HKLM\SOFTWARE\GNU\Emacs\HOME} is set, use the +directory it indicates. Not recommended, as it results in users sharing +the same HOME directory. +@item +If @file{C:\.emacs} exists, then use @file{C:/}. This is for +backward compatibility, as previous versions defaulted to @file{C:/} +if @env{HOME} was not set. +@item +Use the user's AppData directory, usually a directory called +@file{Application Data} under the user's profile directory, the location +of which varies according to Windows version and whether the computer is +part of a domain. +@end enumerate + +Within Emacs, @key{~} at the beginning of a file name is expanded to your +@env{HOME} directory, so you can always find your .emacs file with +@kbd{C-x C-f ~/.emacs}. + +@node Troubleshooting init file +@section Troubleshooting init file problems +@cindex troubleshooting init problems +@cindex debugging init problems +@cindex checking that HOME is set correctly + +If you've set @env{HOME} to a directory using one of the above +methods, and Emacs still doesn't load your init file, the first +thing you should do is check to see what Emacs thinks @env{HOME} is set +to. You can do this by evaluating the following expression in the +@file{*scratch*} buffer using @kbd{C-x C-e}: + +@example +(insert (getenv "HOME")) +@end example + +Look carefully at what is printed and make sure the value is +valid. For example, if the value has trailing whitespace, Emacs won't +be able to find the directory. Also, be sure that the value isn't a +relative drive letter (e.g., @file{d:} without a backslash); if it is, +then @env{HOME} is going to be whatever the current directory on that +drive is, which is likely not what you want to happen. + +@node Associate files with Emacs +@section How do I associate files with Emacs? +@cindex Explorer, associating Emacs with files in +@cindex emacsclient, associating files with +@cindex file associations +@cindex associating files with Emacs +@cindex ALTERNATE_EDITOR +@findex server-start + +The recommended way to associate files is to associate them with +@command{emacsclientw.exe}. In order for this to work when Emacs is +not yet started, you will also need to set the environment variable +@env{ALTERNATE_EDITOR} to @command{runemacs.exe}. To open files +in a running instance of Emacs, you will need to add the following +to your init file: +@example +(server-start) +@end example + +@menu +* Using with Explorer:: +@end menu + +@node Using with Explorer +@subsection For use with Internet Explorer +@cindex Internet Explorer, view source in Emacs +@cindex mailto urls, associating with Emacs +@cindex news urls, associating with Emacs +@cindex URLs, associating mail and news URLs with Emacs + +You can use Emacs as the editor for composing mail for +@indicateurl{mailto:} links, reading usenet for @indicateurl{news:} +links, and viewing source. The following registry entries control +this: + +@itemize @w{} +@item +Mail +@itemize +@item @strong{Key:} HKCR\mailto\shell\open\command\(Default) +@item @strong{Value:} emacsclientw -e "(message-mail (substring \"%1\" 7))" +@end itemize + +@item +News +@itemize +@item @strong{Key:} HKCR\news\shell\open\command\(Default) +@item @strong{Value:} emacsclientw -e "(gnus-fetch-group (substring \"%1\" 5)" +@end itemize + +@item +View Source +@itemize +@item @strong{Key:} HKCR\htmlfile\shell\edit\command\(Default) +@item @strong{Value:} emacsclientw "%1" +@end itemize + +@end itemize + +Thanks to Jason Rumney and Sigbjorn Finne for these tips. + +@node Find-file and the Desktop +@section How do I use find-file to open files that are on the Desktop? +@cindex Desktop, finding where it is +@cindex finding the Desktop +@cindex locating files on the Desktop + +The location of the Desktop varies between different versions of +Windows, and in a corporate environment can be moved around by the +network administrator. On NT derivatives, you can use the value of +the @env{USERPROFILE} environment variable to find where the desktop +might be: + +@example +@kbd{C-x C-f $USERPROFILE/Desktop} +@end example + +If this doesn't work, then you probably have to forgo the keyboard +just this once, and either drag a file onto the Emacs frame from the +desktop, or use the file dialog (displayed when you use the toolbar or +menu by default). Once you have a file from the Desktop inside Emacs, +@kbd{C-x C-f} will quickly reveal where your desktop is kept. + +@node Make Windows more like X +@section How can I modify Windows to act more like X? +@cindex X, making Windows behave like + +@menu +* Focus follows mouse:: +* Swap CapsLock and Control:: +@end menu + +@node Focus follows mouse +@subsection How do it make the active window follow the mouse? +@vindex focus-follows-mouse +@cindex point to focus +@cindex mouse over to focus + +Customize the variables @code{focus-follows-mouse} and +@code{mouse-autoselect-window}. The former can be used to mislead +Emacs into giving focus to other frames when the mouse is over them, +even though Windows has a click to focus policy by default (there is +software available to change that though). The latter can be used to +make Emacs use a focus-follow-mouse policy within its own frames. + +@node Swap CapsLock and Control +@subsection How do I swap CapsLock and Control? +@cindex scan codes, modifying +@cindex key layout, customizing +@cindex caps-lock, swapping with control key +@cindex control key, swapping with caps-lock +@cindex windows key, use as alt +@cindex alt key, using windows keys as additional + +This cannot be done within Emacs, but you can modify the scan code +mappings in the registry or define a new keyboard layout to swap the +keys on a system wide basis. + +@menu +* Swap Caps NT:: +* Swap Caps 98:: +@end menu + +@node Swap Caps NT +@subsubsection Windows NT/2000/XP/Vista? + +@itemize +@item +From Chris McMahon. To make CapsLock a Control key (leaving your +original control keys as they were), use this registry file: +@example +REGEDIT4 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] +"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00 +@end example +To swap CapsLock and the left Control key, use: +@example +REGEDIT4 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] +"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00 +@end example +Save these as files with a @file{.reg} extension, and double-click on +them in Explorer, or ``run'' them from a command prompt to have them +update your registry (you may need to reboot). +@item +Shane Holder gives some background on how "Scancode Map" is used +by the system: +@ignore +http://ftp.gnu.org/old-gnu/emacs/windows/docs/ntemacs/contrib/caps-ctrl-registry.txt +From: Shane Holder +To: ntemacs-users@@cs.washington.edu +Date: 04 Dec 1996 14:36:21 -0600 +Message-ID: +Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0 +@end ignore +@example +It's a binary value that lets you map keystrokes in the low-level keyboard +drivers in NT. As a result you don't have to worry about applications +bypassing mappings that you've done at a higher level (i.e. it just works). + +Here's the format of the value: + + DWORD: 0x00000000 header + DWORD: 0x00000000 header + DWORD: length (in DWORDs) of remaining data, including terminating DWORD + DWORD: mapping 1 + ... + DWORD: mapping n + DWORD: 0x00000000 terminating null DWORD + +Each mapping DWORD has two parts: the input scancode, and an output +scancode. To map scancode 0x1d (left control) to scancode 0x3a (caps +lock), you want a value of 0x003a001d. Note that this does not swap the +keys. Using just this mapping value, both the left control and the caps +lock key will behave as caps-lock. To swap, you also need to map 0x3a to +0x1d, using 0x001d003a. + +This registry value is system wide, and can't be made user-specific. It +also only takes affect on reboot. +@end example +@item +Ulfar Erlingsson has provided a registry file that sets the CapsLock key +to be a Control key and the Windows key to be an Alt key: +@example +REGEDIT4 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] +"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,38,00,5b,e0,00,00,00,00 +@end example +@end itemize + +@node Swap Caps 98 +@subsubsection Windows 95/98/ME + +Microsoft has a tool called keyremap that is part of their Kernel Toys add ons +for Windows 95. The tool has also been confirmed to work on Windows 98. + +@node Make Emacs like a Windows app +@section How can I modify Emacs to act more like a Windows app? +@cindex Windows, making Emacs act more like +@cindex UI, making Emacs more like other Windows apps + +Many beginning users find Emacs difficult to use because its user +interface is different in many ways. Emacs predates most UI +standards, and experienced Emacs users are used to the way things are, +so changing the defaults is difficult. Most of the ``standard'' +behavior can be approximated in Emacs after some configuring though. + +@menu +* Highlight selection:: +* CUA:: +@end menu + +@node Highlight selection +@subsection Highlighting the selection +@cindex transient-mark-mode +@cindex selection, highlighting +@cindex region, highlighting +@cindex highlighting the selected region +@cindex marked region, highlighting +@cindex point and mark, highlighting the region between +@cindex delete-selection-mode +@cindex overwriting the selected region + +Emacs has a concept of a mark and point that is similar to selections +in other programs. But the mark in Emacs is used for more than just +defining the selected region, it lives on while you continue to edit +and move around the buffer so it can also be a kind of bookmark. The +history of marks is saved so you can pop previous marks back to the +top of the stack to go back to somewhere you were some time ago. +Because of this dual purpose, the region between mark and point is not +highlighted by default unless you select a region by clicking and +dragging the mouse. + +The minor mode @code{transient-mark-mode} changes the behavior of +the mark in two ways. First, it distinguishes between an active mark +that has just been defined or reactivated, and an inactive mark. When +the mark is active, some commands that normally act on lines, words, +buffers etc. will instead act on the region. An inactive mark needs +to be reactivated to operate on it, unless @code{mark-even-if-inactive} +is set. Secondly, @code{transient-mark-mode} also highlights the +region when it is active, providing the same visual clue that you get +in other programs. + +In addition to seeing the highlighting, new Emacs users often expect +editing commands to replace the region when it is active. This behavior +can be obtained with @code{delete-selection-mode}, but see the following +question also. + +@node CUA +@subsection Standard Windows key bindings +@findex cua-mode +@cindex CUA keybindings +@cindex shift key, selecting with +@cindex standard Windows keybindings +@cindex paste with C-v +@cindex cut with C-x +@cindex copy with C-c +@cindex C-c to copy +@cindex C-x to cut +@cindex C-v to paste + +The keybindings of Emacs predate modern GUIs, and the keys that were +chosen by later GUIs for cut and copy were given important functions +as extended keymaps in Emacs. CUA mode attempts to let both bindings +co-exist by defining C-x and C-c as @code{kill-region} and +@code{copy-region-as-kill} when the region is active, and letting +them have their normal Emacs bindings when the region is not active. +Many people find this to be an acceptable compromise. CUA mode also +defines a number of other keys (C-v, Shift selection), and can be turned +on from the @emph{Options} menu. + +@node Window operations +@section Window operations +@cindex maximize frames from lisp +@cindex minimize frames from lisp +@cindex WM_SYSCOMMAND, sending system commands from lisp +@cindex system menu, simulating from lisp + +The function @code{w32-send-sys-command} can be used to simulate +choosing commands from the system menu (in the top left corner of the +Window) and a few other system wide functions. It takes an integer +argument, the value of which should be a valid @code{WM_SYSCOMMAND} +message as documented in Microsoft's API documentation. + +@node Uninstall +@section How do I uninstall Emacs? +@cindex uninstall Emacs +@cindex remove Emacs +@cindex clean Emacs registry settings +@cindex registry, cleaning the Emacs settings +@cindex Start Menu, removing Emacs from +@cindex upgrading Emacs +@cindex delete Emacs directory + +Emacs does not come with an uninstall program. No files are installed +outside of the Emacs base directory, so deleting that directory is +sufficient to clean away the files. If you ran @command{addpm}, +you'll need to delete the Start Menu group too. The registry entries +inserted by @command{addpm} will not cause any problems if you leave +them there, but for the sake of completeness, you can use @command{regedit} +to remove the keys under @code{HKEY_LOCAL_MACHINE} orx +@code{HKEY_CURRENT_USER}: @code{SOFTWARE\GNU\Emacs}, and the key +@code{HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\emacs.exe} if it exists. + +@node Does not run +@section When I run Emacs nothing happens +@cindex troubleshooting installation problems +@cindex window not appearing, Emacs +@cindex failure to run, Emacs +@cindex 8.3 filenames, problems caused + +Emacs could have failed to run for a number of reasons. The most +common symptom is that, when Emacs is started, the cursor changes for +a second but nothing happens. If this happens to you, it is quite +likely that the distribution was unpacked incorrectly. + +Check for the following to see if there was a problem during unpacking: +@enumerate +@item +Be sure to disable the CR/LF translation or the executables will be +unusable. Older versions of WinZipNT would enable this translation by +default. If you are using WinZipNT, disable it. +@item +Check that filenames were not truncated to 8.3. For example, there +should be a file CONTRIBUTE in the top level directory; if this has +been truncated to CONTRIBU or CONTRI~1, your distribution has been +corrupted while unpacking and Emacs will not start. +@end enumerate + +If it is still not working, send mail to the list, describing what +you've done, and what you are seeing. (The more information you send +the more likely it is that you'll receive a helpful response.. + +@node Virus +@section Does Emacs contain a virus? +@cindex virus reported in Emacs +@cindex anti-virus software reporting a virus in Emacs + +There have been reports in the past that some virus scanners claim +that the Emacs distribution has a virus. This is extremely unlikely if +you have downloaded Emacs from the GNU FTP site or one of its mirrors +and the GPG signature for it is valid and listed in the GNU keyring, +unless perhaps it is a new release made in the last few days, in which +case you should exercise more caution and report the problem. Past +problems seem to have been caused by virus checkers running into a +buffer size limit when unpacking large tar.gz files for scanning, and +reporting the failure as an ``unknown virus''. + +@node Anti-virus +@section What known problems are there with anti-virus software? +@cindex anti-virus software, bad interaction with +@cindex virus software, bad interaction with +@cindex firewall, bad interaction with +@cindex scan all files, anti-virus option causing problems +@cindex auto protect, anti-virus option causing problems +@cindex shell, interacting badly with anti-virus +@cindex subprocesses, interacting badly with anti-virus + +Anti-virus and firewall software can block Emacs from starting subprocesses +and opening network connections. Most such products have an Advanced +mode where they will prompt you rather than silently blocking. In some cases +the ``scan all files'' or ``auto protect'' option of anti-virus programs +has caused failures running shell related commands within Emacs. +@xref{Sub-processes,,Why is nothing happening when I enter shell commands?}. + +@c ------------------------------------------------------------ +@node Display Settings +@chapter Display Settings + +@menu +* Console window size:: +* Mouse trouble:: +* Cut and paste NUL:: +* Garbled clipboard:: +* Beep sound:: +@end menu + +@node Console window size +@section Emacs in console mode goes beyond the window size +@cindex console, window size +@cindex telnet, display size problems running emacs over +@cindex -nw, window size +@vindex w32-use-full-screen-buffer + +The variable @code{w32-use-full-screen-buffer} controls whether Emacs uses +the window size or buffer size to determine the number of lines on screen. +Normally the window size is correct, but when running Emacs over some +telnet servers, the buffer size needs to be used. Emacs tries to guess +the correct value at startup, but if it guesses wrong, you can customize +that variable yourself. + +@node Mouse trouble +@section What do I do if I have problems with my mouse buttons? +@cindex mouse buttons, problems with +@cindex 2 button mouse +@cindex two button mouse +@cindex third mouse button, simulating +@cindex middle mouse button, simulating +@cindex simulating three button mouse with two buttons +@cindex swap right and middle mouse buttons +@cindex exchange mouse-2 and mouse-3 buttons +@vindex w32-mouse-button-tolerance +@vindex w32-num-mouse-buttons +@vindex w32-swap-mouse-buttons + +Emacs assigns bindings assuming a three button mouse. On Windows, if +a two button mouse is detected, a hack is enabled which lets you +simulate the third button by pressing both mouse buttons +simultaneously. @code{w32-mouse-button-tolerance} defines the timeout +for what is considered ``simultaneous''. You can check how many +buttons Emacs thinks your mouse has with @kbd{C-h v} +@code{w32-num-mouse-buttons}. + +If you find yourself needing the mouse-3 bindings more often than mouse-2, +you can swap the buttons with the following code in your init file: +@example +(setq w32-swap-mouse-buttons t) +@end example + +@node Cut and paste NUL +@section How do I cut and paste text with NUL characters? +@cindex clipboard, NUL characters + +If you attempt to cut and paste text with NUL characters embedded in it, +then the text will be truncated at the first NUL character. This is a +limitation of the Windows clipboard, and does not affect killing and yanking +from the kill-ring within Emacs. + +@node Garbled clipboard +@section How can I fix garbled text yanked from the clipboard? +@cindex clipboard, corruption of +@cindex garbage on the clipboard +@cindex clipboard encoding +@cindex encoding, clipboard +@findex set-selection-coding-system + +You can try @code{set-selection-coding-system}, but generally such +corruption is a thing of the past, as Emacs uses Unicode for the clipboard +by default now. + +@node Beep sound +@section How do I change the sound of the Emacs beep? +@cindex beep, changing the sound +@cindex sound, changing the beep +@findex set-message-beep + +You can use the function @code{set-message-beep} to change the sound +that Emacs uses for its beep. This affects both console and GUI frames. +The doc string contains a list of the system sounds you can use. + +@c ------------------------------------------------------------ +@node Fonts and text translation +@chapter Fonts and text translation + +@menu +* Font names:: +* Bold and italic:: +* Multilingual fonts:: +* BDF fonts:: +* Font menu:: +* Line ends:: +@end menu + +@node Font names +@section Font names +@cindex XLFD font names +@cindex font XLFD name format +@cindex fontconfig font names in Emacs 23 +@cindex font dialog, using to find font names +@findex w32-select-font +@findex x-list-fonts + +Fonts in Emacs 22 and earlier are named using the X Logical Font +Description (XLFD) format. Emacs on Windows ignores many of the +fields, and populates them with * when listing fonts. Former +maintainer Andrew Innes wrote +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/x-font-details, +this explanation} of what each field in the font string means and how +Emacs treated them back in 19.34. Since then, multilingual support and +a redisplay overhaul to support variable width fonts have changed things +slightly; more character sets are recognized (and the old pseudo character +sets are deprecated), and the resolution fields are used to calculate the +difference between point and pixel sizes, but normally you should leave +these at the system default. The foundry field is also populated with +an indication of whether the font is outline (.TTF, .ATM) or raster (.FON) +based when fonts are listed, which may let you differentiate between two +fonts with the same name and different technologies. + +From Emacs 23, the preferred font name format will be moving to the simpler +and more flexible fontconfig format. XLFD names will continue to be +supported for backward compatibility. + +@example +XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1 +Fontconfig: Courier New-13 +@end example + +To find the XFLD name for a font, you can execute the following in the +@file{*scratch*} buffer by pressing C-j at the end of the line: +@example +(w32-select-font nil t) +@end example + +To see a complete list of fonts, execute the following in the +@file{*scratch*} buffer by pressing C-x C-e at the end of the line: +@example +(insert (prin1-to-string (x-list-fonts "*"))) +@end example + +The command line options and frame-parameters for changing the default font +in Emacs are documented in the manual. Fonts can also be used when defining +faces, though family and size are generally specified individually there. +In addition, Emacs on Windows reads the registry to find X Resources. This +is also documented in the manual. + +@node Bold and italic +@section How can I get bold and italic fonts to work? +@cindex italic fonts +@cindex synthesized italic and bold fonts +@cindex bold fonts, synthesized +@findex set-face-font +@vindex w32-enable-synthesized-fonts + +Emacs will only use the italic (and bold) versions of a font automatically +if it has the same width as the normal version. Many fonts have italic +and bold versions that are slightly wider. It will also only use real +bold and italic fonts by default, where other applications may use +synthesized variations that are derived from the normal font. To enable +more italic and bold fonts to be displayed, you can enable synthesized fonts +and manually set the font for italic, bold and bold-italic as follows: + +@example +(setq w32-enable-synthesized-fonts t) +(set-face-font 'italic "-*-Courier New-normal-i-*-*-11-*-*-*-c-*-iso8859-1") +(set-face-font 'bold-italic "-*-Courier New-bold-i-*-*-11-*-*-*-c-*-iso8859-1") +@end example + +@node Multilingual fonts +@section Multilingual font support +@cindex multilingual display, fonts +@cindex MULE, fonts + +@menu +* Language display:: +* Non-latin display:: +* International fonts:: +* Third-party multibyte:: +* Localized fonts:: +@end menu + +@node Language display +@subsection Is it possible to display all the supported languages? +@cindex HELLO file, displaying all +@cindex language support, fonts +@cindex GNU intlfonts, for displaying all languages +@cindex intlfonts, for displaying all languages + +To display all the languages that Emacs is capable of displaying, you will +require the BDF fonts from the GNU intlfonts package. +@xref{Fonts and text translation,,How do I use bdf fonts with Emacs?}. + +For many languages, native truetype fonts are sufficient, and in Emacs +23 the need for BDF fonts will disappear for almost all languages. At +the time of writing, some Arabic characters in the HELLO file still do +not display with native fonts, because they are pre-composed characters +from MULE character sets rather than standard Unicode Arabic, but all +other characters are able to be displayed with appropriate truetype or +opentype fonts. + +@node Non-latin display +@subsection How do I get Emacs to display non-latin characters? +@cindex fontsets, defining +@cindex language support, forcing Emacs to use specific fonts +@cindex MULE, fontsets +@cindex multilingual display, fontsets +@findex create-fontset-from-ascii-font +@findex create-fontset-from-fontset-spec + +Recent versions of Emacs display a large range of characters out of +the box, but if you are having problems with a particular character +set which you know you have fonts for, you can try defining a +new fontset with @code{create-fontset-from-ascii-font} or +@code{create-fontset-from-fontset-spec}. + +@example +(create-fontset-from-fontset-spec + "-*-Courier New-normal-r-*-*-12-*-*-*-c-*-fontset-most, + latin-iso8859-2:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-2, + latin-iso8859-3:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-3, + latin-iso8859-4:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-4, + cyrillic-iso8859-5:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-5, + greek-iso8859-7:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-7, + latin-iso8859-9:-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-9, + japanese-jisx0208:-*-MS Gothic-normal-r-*-*-12-*-*-*-c-*-jisx0208-sjis, + katakana-jisx0201:-*-MS Gothic-normal-r-*-*-12-*-*-*-c-*-jisx0208-sjis, + latin-jisx0201:-*-MS Gothic-normal-r-*-*-12-*-*-*-c-*-jisx0208-sjis, + japanese-jisx0208-1978:-*-MS Gothic-normal-r-*-*-12-*-*-*-c-*-jisx0208-sjis, + korean-ksc5601:-*-Gulim-normal-r-*-*-12-*-*-*-c-*-ksc5601-*, + chinese-gb2312:-*-MS Song-normal-r-*-*-12-*-*-*-c-*-gb2312-*, + chinese-big5-1:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5-*, + chinese-big5-2:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5-*" t) +@end example + +@node International fonts +@subsection Where can I find fonts for other languages? +@cindex language support, finding fonts +@cindex fonts, where to find +@cindex MULE, finding fonts +@cindex multilingual display, finding fonts +@cindex GNU intlfonts, where to get +@cindex intlfonts, where to get + +In addition to the wide range of fonts that come with the language +support packages of various components of Windows itself, GNU/Linux +distributions these days come with a number of Free truetype fonts +that cover a wide range of languages. The GNU intlfonts source +distribution contains BDF fonts covering all of the languages that can +be displayed by Emacs 22, and can be downloaded from +@uref{http://ftpmirror.gnu.org/intlfonts, ftp.gnu.org mirrors}. + +@node Third-party multibyte +@subsection How do I use third party programs to display multibyte characters? +@cindex multilingual display, third party programs on Windows 9x/ME +@cindex language support, third party programs on Windows 9x/ME +@vindex w32-enable-unicode-output + +You probably only need to do this on the non-Unicode versions of Windows +(95, 98 and ME), and even then, various Windows and Internet Explorer +updates have made third party software unnecessary in most cases. +If you are having trouble displaying text, try defining a fontset +with the font for the languages that the third party software handles +set to what that software expects (which may not be an appropriate font +for that language, but the third party software is intercepting it +and using a different font behind the scenes). +@xref{Non-latin display}. + +In addition to defining a fontset with the expected font, you may also need +to disable unicode output with: +@example +(setq w32-enable-unicode-output nil) +@end example + +@node Localized fonts +@subsection Can I use a font with a name in my language? +@cindex fonts, localized font names +@vindex locale-coding-system + +Normally Emacs should initialize @code{locale-coding-system} appropriately +based on your locale, which will let Emacs use font names in your local +language successfully. + +@node BDF fonts +@section How do I use bdf fonts with Emacs? +@cindex BDF fonts, using +@cindex GNU intlfonts, using +@cindex intlfonts, using +@vindex w32-bdf-filename-alist +@vindex bdf-directory-alist +@vindex font-encoding-alist +@findex w32-find-bdf-fonts +@findex set-frame-font + +To use bdf fonts with Emacs, you need to tell Emacs where the fonts +are located, create fontsets for them, and then use them. We'll use +the 16 dot international fonts from @uref{http://ftpmirror.gnu.org/intlfonts, +ftp.gnu.org/gnu/intlfonts} as an +example put together by Jason Rumney. + +Download @file{16dots.tar.gz} and unpack it; I'll assume that they are in +@file{c:\intlfonts}. Then set @code{w32-bdf-filename-alist} to the list of +fonts returned by using @code{w32-find-bdf-fonts} to enumerate all of +the font files. It is a good idea to set the variable +@code{bdf-directory-list} at the same time so @code{ps-print} knows where +to find the fonts: +@example +(setq bdf-directory-list + '("c:/intlfonts/Asian" "c:/intlfonts/Chinese" + "c:/intlfonts/Chinese-X" "c:/intlfonts/Ethiopic" + "c:/intlfonts/European" "c:/intlfonts/Japanese" + "c:/intlfonts/Japanese-X" "c:/intlfonts/Korean-X" + "c:/intlfonts/Misc/")) + +(setq w32-bdf-filename-alist (w32-find-bdf-fonts bdf-directory-list)) +@end example + +Then create fontsets for the BDF fonts: + +@example +(create-fontset-from-fontset-spec + "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf, +japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*, +katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*, +latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*, +japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*, +thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1, +lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1, +tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1, +ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode, +tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0") +@end example + +Many of the international bdf fonts from gnu.org are type 0, and therefore +need to be added to font-encoding-alist: + +@example +;; Need to add some fonts to font-encoding-alist since the bdf fonts +;; are type 0 not the default type 1. +(setq font-encoding-alist + (append '(("MuleTibetan-0" (tibetan . 0)) + ("GB2312" (chinese-gb2312 . 0)) + ("JISX0208" (japanese-jisx0208 . 0)) + ("JISX0212" (japanese-jisx0212 . 0)) + ("VISCII" (vietnamese-viscii-lower . 0)) + ("KSC5601" (korean-ksc5601 . 0)) + ("MuleArabic-0" (arabic-digit . 0)) + ("MuleArabic-1" (arabic-1-column . 0)) + ("MuleArabic-2" (arabic-2-column . 0))) font-encoding-alist)) +@end example + +You can now use the Emacs font menu (@pxref{Fonts and text +translation,,How can I have Emacs use a font menu like on X?}) to +select the @emph{bdf: 16-dot medium} fontset, or you can select it by +setting the default font: + +@example + (set-frame-font "fontset-bdf") +@end example + +Try loading the file @file{etc/HELLO}, and you should be able to see the +various international fonts displayed (except for Hindi, which is not +included in the 16-dot font distribution). + +@node Font menu +@section How can I have Emacs use a font menu like on X? +@cindex fonts, displaying a menu +@cindex fontsets, displaying a menu +@cindex font dialog, using a menu instead +@vindex w32-use-w32-font-dialog + +Place the following in your init file: + +@example +(setq w32-use-w32-font-dialog nil) +@end example + +@menu +* Add fonts to menu:: +@end menu + +@node Add fonts to menu +@subsection How can I add my font to the font menu? +@cindex font menu, adding fonts +@vindex w32-fixed-font-alist + +If you have set w32-use-w32-font-dialog to nil, you can add fonts to +the font menu by changing `w32-fixed-font-alist'. For example: + +@example +(setq w32-fixed-font-alist + (append w32-fixed-font-alist + '(("Monotype.com" + ("8" "-*-Monotype.com-normal-r-*-*-11-*-*-*-c-iso8859-1") + ("9" "-*-Monotype.com-normal-r-*-*-12-*-*-*-c-iso8859-1") + ("10" "-*-Monotype.com-normal-r-*-*-13-*-*-*-c-iso8859-1") + ("11" "-*-Monotype.com-normal-r-*-*-15-*-*-*-c-iso8859-1"))))) +@end example + +@node Line ends +@section How can I control CR/LF translation? +@cindex DOS line ends +@cindex Unix line ends +@cindex Mac line ends + +There are a number of methods by which you can control automatic CR/LF +translation in Emacs, a situation that reflects the fact that the +default support was not very robust in the past. For a discussion of +this issue, take a look at +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/todo/translate, +this collection of email messages} on the topic. + +@menu +* Automatic line ends:: +* Line ends by filename:: +* Line ends by file system:: +@end menu + +@node Automatic line ends +@subsection Automatic CR/LF translation +@cindex line ends, automatic detection + +For existing files, Emacs scans the file to determine the line ending +convention as part of the same scan it does to determine the file +encoding. Embedded Ctrl-M (ASCII 13) characters and inconsistent line +ends can confuse the automatic scanning, and Emacs will present the +file in Unix (LF) mode with the Ctrl-M characters displayed as @samp{^M}. +It does this to be safe, as no data loss will occur if the file is really +binary and the Ctrl-M characters are significant. + +@node Line ends by filename +@subsection CR/LF translation by file extension +@cindex line ends, determining by filename +@cindex binary files, determining by file name +@vindex file-name-buffer-file-type-alist + +The variable @code{file-name-buffer-file-type-alist} holds a list of +filename patterns and their associated type; binary or text. Files marked +as binary will not have line-end detection performed on them, and instead +will always be displayed as is. With auto-detection in recent versions of +Emacs, this is seldom useful for existing files, but can still be used +to influence the choice of line ends for newly created files. + +@node Line ends by file system +@subsection CR/LF translation by file system +@cindex line ends, determining by filesystem +@cindex binary files, determining by filesystem +@vindex untranslated-filesystem-list +@findex add-untranslated-filesystem +@findex remove-untranslated-filesystem + +The variable @code{untranslated-filesystem-list} defines whole +directory trees that should not have CR/LF autodetection performed on +them. The list can be manipulated with the functions +@code{add-untranslated-filesystem} and +@code{remove-untranslated-filesystem}. With auto-detection in +recent versions of Emacs, this is seldom useful for existing files, +but can still be used to influence the choice of line ends for newly +created files. + +@c ------------------------------------------------------------ +@node Printing +@chapter Printing +@cindex printing + +A lot of effort has gone into making it easier to print from Emacs on +MS Windows, but this has still been insufficient to keep up with +changes in printing technology from text and postscript based printers +connected via ports that can be accessed directly, to graphical +printers that are only accessible via USB. For details, see +@uref{http://www.emacswiki.org/cgi-bin/wiki/PrintingFromEmacs, Emacs +Wiki}. + +@c ------------------------------------------------------------ +@node Sub-processes +@chapter Subprocesses +@cindex subprocesses + +@menu +* Quoting issues:: +* Subprocess hang:: +* Subprocess buffering:: +* Subprocesses and floppy drive:: +* Killing subprocesses:: +* Subprocess EOF:: +* Using shell:: +* Cygwin paths:: +* Dired ls:: +* Shell echo:: +* Shell completion forward slash:: +* Incorrect DOS version:: +* Shell commands do nothing:: +@end menu + +@node Quoting issues +@section Quoting issues +@cindex quoting arguments to subprocesses +@cindex sub-processes, quoting arguments to +@cindex cygwin, quoting arguments + +The quoting rules for native Windows shells and Cygwin shells have +some subtle differences. When Emacs spawns subprocesses, it tries to +determine whether the process is a Cygwin program and changes its +quoting mechanism appropriately. See this +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/shell-quoting, +previous discussion} for details. + +@node Subprocess hang +@section Programs reading input hang +@cindex subprocesses, hanging when reading input +@cindex full-screen console programs, as subprocesses +@cindex ftp, client hanging +@findex ftp + +Programs that explicitly use a handle to the console (@file{CON} or +@file{CON:}) instead of stdin and stdout cannot be used as +subprocesses to Emacs, and they will also not work in shell-mode. The +default ftp client on Windows is an example of such a program - this +ftp program is mostly fine for use with @code{ange-ftp} or +@code{tramp}, but not for @kbd{M-x ftp} (@pxref{Network access,,How do +I use FTP within Emacs}). There is no convenient way for either Emacs +or any shell used in @code{shell-mode} to redirect the input and +output of such processes from the console to input and output pipes. +The only workaround is to use a different implementation of the +program that does not use the console directly. Microsoft's new +PowerShell appears to be another such program, so that cannot be used +as a replacement shell for Emacs. + +@node Subprocess buffering +@section Buffering in shells and subprocesses +@cindex subprocesses, buffering output +@cindex output not displaying, subprocesses +@cindex SQL subprocess hanging +@cindex cvs hanging when login needed +@cindex ssh, password prompt not appearing when using with cvs +@findex sql-mode +@findex shell-mode +@cindex setbuf, using in subprocesses to prevent buffering +@cindex setvbuf, using in subprocesses to prevent buffering + +You may notice that some programs, when run in a shell in +@code{shell-mode}, +have their output buffered (e.g., people have found this happening to +them with @code{sql-mode}). When the program has a lot of output, it +overflows the buffering and gets printed to the shell buffer; however, +if the program only outputs a small amount of text, it will remain +buffered and won't appear in the shell buffer. The same can happen +in other subprocesses that themselves run other programs as +subprocesses, for example when using @command{cvs} from Emacs, which +is itself configured to use @command{ssh}, password prompts fail to +appear when expected, and @command{cvs} appears to hang. + +Although it may at first seem like the shell is buffering the output +from the program, it is actually the program that is buffering +output. The C runtime typically decides how to buffer output based +upon whether stdout is bound to a handle to a console window or +not. If bound to a console window, output is buffered line by line; if +bound to a block device, such as a file, output is buffered block by +block. + +In a shell buffer, stdout is a pipe handle and so is buffered in +blocks. If you would like the buffering behavior of your program to +behave differently, the program itself is going to have to be changed; +you can use @code{setbuf} and @code{setvbuf} to manipulate +the buffering semantics. + +Some programs handle this by having an explicit flag to control their +buffering behaviour, typically @option{-i} for interactive. Other +programs manage to detect that they are running under Emacs, by +using @samp{getenv("emacs")} internally. + +@menu +* Perl script buffering:: +@end menu + +@node Perl script buffering +@subsection Perl script buffering +@cindex perl, avoiding buffering when used as a subprocess of Emacs + +A handy solution for Perl scripts to the above problem is to use: + +@example +# Turn all buffering off. +select((select(STDOUT), $| = 1)[0]); +select((select(STDERR), $| = 1)[0]); +select((select(STDIN), $| = 1)[0]); +@end example + +@node Subprocesses and floppy drive +@section 16-bit subprocesses accessing the floppy drive +@cindex floppy drive, access when subprocesses started +@cindex subprocess starting causes floppy drive access + +If you are finding the 16 bit DOS subprocesses cause your A: drive to +be accessed, hanging Emacs until the read times out if there is no +floppy in the drive, check to see if your virus software is causing +the problem. + +@node Killing subprocesses +@section Killing subprocesses on Windows 95/98/Me +@cindex subprocess, killing on Windows 95/98/ME +@cindex killing subprocesses, Windows 95/98/ME +@cindex shutdown, complaints about cmdproxy.exe running + +Emacs cannot guarantee that a subprocess gets killed on Windows 95 and +its descendants, and it is a difficult limitation to work around. To +avoid problems on these systems, you should let subprocesses run to +completion including explicitly exiting shells before killing the +associated buffer. + +If you find that while shutting down, Windows complains that there is +a running @command{cmdproxy.exe} even though you carefully exited all +shells and none were showing in Task Manager before the shutdown, this +could be due to buggy interaction with your virus scanner. + +@node Subprocess EOF +@section Sending EOF to subprocesses +@cindex EOF, sending to subprocesses +@cindex shell terminates when EOF sent to subprocess +@findex process-send-eof + +When an EOF is sent to a subprocess running in an interactive shell +with @code{process-send-eof}, the shell terminates unexpectedly as +if its input was closed. This affects the use of @kbd{C-c C-d} in +shell buffers. See +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/todo/shell-ctrl-d, +this discussion} for more details. + +@node Using shell +@section How do I use a shell in Emacs? +@cindex interactive shell, using +@cindex shell within emacs, using +@findex shell +@findex shell-command +@vindex shell-file-name +@vindex explicit-shell-file-name + +You can start an interactive shell in Emacs by typing @kbd{M-x shell}. +Emacs uses the @env{SHELL} environment variable to determine which +program to use as the shell. To instruct Emacs to use a non-default +shell, you can either set this environment variable, or customize +@code{explicit-shell-file-name}. You can also customize +@code{shell-file-name} to change the shell that will be used by +subprocesses that are started with @code{shell-command} and +related non-interactive shell commands. + +@menu +* Bash:: +@end menu + +@node Bash +@subsection bash +@cindex cygwin bash as shell within Emacs +@cindex shell, using cygwin bash within Emacs +@cindex bash, using cygwin shell within Emacs +@vindex comint-scroll-show-maximum-output +@vindex comint-completion-addsuffix +@vindex comint-eol-on-send +@vindex w32-quote-process-args +@vindex shell-mode-hook + +Cygwin bash is a popular shell for use with Emacs. To use bash as the +default shell in Emacs, you can place the following in your init file: + +@example +(defun my-shell-setup () + "For Cygwin bash under Emacs 20" + (setq comint-scroll-show-maximum-output 'this) + (make-variable-buffer-local 'comint-completion-addsuffix)) + (setq comint-completion-addsuffix t) + ;; (setq comint-process-echoes t) ;; reported that this is no longer needed + (setq comint-eol-on-send t) + (setq w32-quote-process-args ?\") + +(setq shell-mode-hook 'my-shell-setup) +@end example + +If you find that you are having trouble with Emacs tracking drive +changes with bash, see Mike Fabian's +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/drive-tracking, +note}. + +WARNING: Some versions of bash set and use the environment variable +PID. For some as yet unknown reason, if @env{PID} is set and Emacs +passes it on to bash subshells, bash dies (Emacs can inherit the +@env{PID} variable if it's started from a bash shell). If you clear +the @env{PID} variable in your init file, you should be able to +continue to use bash as your subshell: +@example + (setenv "PID" nil) +@end example + +@node Cygwin paths +@section How do I use Cygwin style paths in Emacs? +@cindex cygwin paths, using within Emacs +@cindex mount points, cygwin +@cindex cygwin mount points, using within Emacs + +The package +@uref{http://www.emacswiki.org/cgi-bin/wiki/cygwin-mount.el, +cygwin-mount.el} teaches Emacs about Cygwin mount points. + +@node Dired ls +@section How do I make dired use my ls program? +@cindex dired, using an external ls program +@cindex dired, interpreting symlinks the same way as cygwin +@cindex symlinks in dired, interpreting the same way as cygwin +@cindex cygwin symlinks in dired +@vindex ls-lisp-use-insert-directory-program +@vindex insert-directory-program + +Dired uses an internal lisp implementation of @command{ls} by default +on Windows. For consistent display of symbolic links and other +information with other programs (eg Cygwin) and performance reasons, +you may want to use a Windows port of @command{ls} instead. + +@example +(setq ls-lisp-use-insert-directory-program t) ;; use external ls +(setq insert-directory-program "c:/cygwin/bin/ls") ;; ls program name +@end example + +@node Shell echo +@section How do I prevent shell commands from being echoed? +@cindex echo, suppressing for shell input +@cindex shell commands, suppressing echo +@vindex comint-process-echoes +@vindex comint-mode-hook +@vindex explicit-cmd.exe-args +@vindex explicit-cmdproxy.exe-args +@vindex explicit-bash.exe-args +@vindex explicit-bash-args +@cindex shell specific arguments + +Some shells echo the commands that you send to them, and the echoed +commands appear in the output buffer. In particular, the default +shells, @command{command.com} and @command{cmd.exe}, have this behavior. + +To prevent echoed commands from being printed, you can place the +following in your init file: + +@example + (defun my-comint-init () + (setq comint-process-echoes t)) + (add-hook 'comint-mode-hook 'my-comint-init) +@end example + +If @code{shell-mode} still is not stripping echoed commands, then +you'll have to explicitly tell the shell to not echo commands. You can +do this by setting the @code{explicit-@var{SHELL}-args} variable +appropriately; where @var{SHELL} is the value of your @env{SHELL} +environment variable (do a @kbd{M-: (getenv "SHELL")} to see what it +is currently set to). Assuming that you are on NT and that your +@env{SHELL} environment variable is set to @command{cmd.exe}, +then placing the following in your init file will tell +@command{cmd.exe} to not echo commands: + +@example + (setq explicit-cmd.exe-args '("/q")) +@end example + +The comint package will use the value of this variable as an argument +to @command{cmd.exe} every time it starts up a new shell; the +@option{/q} is the argument to @command{cmd.exe} that stops the +echoing (invoking @samp{cmd /?} in a shell will show you all of the +command line arguments to @command{cmd.exe}). + +Note that this variable is case sensitive; if the value of your +@env{SHELL} environment variable is @command{CMD.EXE} instead, then +this variable needs to be named @code{explicit-CMD.EXE-args} instead. + +@node Shell completion forward slash +@section How can I make shell completion use forward slashes? +@cindex completion, using forward slashes in shell buffers +@cindex forward slashes for completion in shell buffers +@vindex comint-completion-addsuffix + +The character appended to directory names when completing in a shell +buffer is controlled by the variable @code{comint-completion-addsuffix}. +See its documentation (with @kbd{C-h v}) for details. + +@node Incorrect DOS version +@section Why do I get incorrect DOS version messages? +@cindex nmake, Incorrect DOS version messages +@cindex shell, Incorrect DOS version messages +@cindex COMSPEC, effect on subprocesses of subprocesses + +This might happen if, for example, you invoke @command{nmake} in a +shell and it tries to create sub-shells. The problem happens because +when the shell is initially created, the first argument to the shell +is not the directory in which the shell program resides. When this +happens, @command{command.com} fabricates a value for its +@env{COMSPEC} environment variable that is incorrect. Then, when +other programs go to use @env{COMSPEC} to find the shell, they are +given the wrong value. + +The fix for this is to either prevent any arguments from being sent to +the shell when it starts up (in which case @command{command.com} will +use a default, and correct, value for @env{COMSPEC}), or to have the +first argument be the directory in which the shell executable resides. + +@node Shell commands do nothing +@section Why is nothing happening when I enter shell commands? +@cindex shell commands not working +@cindex anti-virus software, bad interaction with +@cindex virus software, bad interaction with +@cindex firewall, bad interaction with +@cindex scan all files, anti-virus option causing problems +@cindex auto protect, anti-virus option causing problems +@cindex shell, interacting badly with anti-virus + +Some anti-virus software has been reported to cause problems with +shells in the past. Try turning off options such as ``Scan all +files''. @xref{Installing Emacs,,What known problems are there with anti-virus software?}. + +@c ------------------------------------------------------------ +@node Network access +@chapter Network access + +@menu +* Mail:: +* Attachments with Gnus:: +* Using FTP:: +* Tramp ssh:: +* telnet:: +@end menu + +@node Mail +@section How do I use mail in Emacs? + +Emacs comes with several options for reading and writing mail. These +are documented in the manual, and the choice of which method to use +depends on personal taste. There are some issues specific to Windows +however, related to the fact that Windows machines do not have the +mail infrastructure that is commonly installed on other platforms, so +mail will not work without some configuration. + +@menu +* Outgoing mail:: +* Incoming mail with Rmail:: +* Incoming mail with Gnus:: +* Incoming mail other:: +@end menu + +@node Outgoing mail +@subsection Outgoing mail +@cindex mail, outgoing +@cindex smtp server +@vindex user-full-name +@vindex user-mail-address +@vindex smtpmail-default-smtp-server +@vindex smtpmail-smtp-server +@vindex send-mail-command +@vindex message-send-mail-function +@findex smtpmail-send-it +@vindex smtpmail-debug-info + +For outgoing mail, you will need to use @file{smtpmail.el} which +allows Emacs to talk directly to SMTP mail servers. This is included +with Emacs, and can be set up as follows: + +@example +(setq user-full-name "@var{Your full name}") +(setq user-mail-address "@var{Your@@email.address}") +(setq smtpmail-default-smtp-server "@var{domain.name.of.your.smtp.server}") + +(setq send-mail-command 'smtpmail-send-it) ; For mail-mode (Rmail) +(setq message-send-mail-function 'smtpmail-send-it) ; For message-mode (Gnus) +@end example + +Note that if you want to change the name of the SMTP server after +smtpmail is loaded, then you'll need to change +@code{smtpmail-smtp-server}. + +If you are experiencing problems with sending large messages, check +the value of the variable @code{smtpmail-debug-info}. If it is non-nil, you +should set it to @code{nil}: + +@node Incoming mail with Rmail +@subsection Incoming mail with Rmail and POP3 +@cindex mail, incoming with rmail +@cindex pop3, using rmail +@cindex rmail, mail client +@cindex movemail, using pop3 +@cindex MAILHOST +@vindex rmail-primary-inbox-list +@vindex rmail-pop-password-required + +For incoming mail using the Rmail package and a POP3 server, you will +need the following configuration: + +@example +(setenv "MAILHOST" "@var{domain.name.of.your.pop3.server}") +(setq rmail-primary-inbox-list '("po:@var{your logon id}")) +(setq rmail-pop-password-required t) +@end example + +@node Incoming mail with Gnus +@subsection Incoming mail with Gnus +@cindex mail, incoming with Gnus +@cindex pop3, using Gnus +@cindex imap, using Gnus +@cindex gnus, mail and news client + +Although Gnus started life as a Usenet news reader, it also makes a +good mail reader, particularly if you subscribe to a lot of mailing +lists, or you want to use IMAP rather than POP3, which is not +supported by Rmail. @xref{Top,The Gnus manual,,gnus, The Gnus manual}. + +@node Incoming mail other +@subsection Other incoming mail options +@cindex mail, other options +@cindex wanderlust, mail and news client +@cindex vm, mail client +@cindex mh-e, mail client + +Other options for reading mail in Emacs include VM, MH-E and Wanderlust. +MH-E is included with Emacs. The others require lisp or executable code +that does not come with Emacs, so you should seek help where you +obtained the packages from if you want to use them. + +@node Attachments with Gnus +@section How do I open attachments in Gnus? +@cindex gnus, attachments +@cindex attachments, in gnus +@cindex mail, attachments in gnus +@cindex .mailcap +@cindex MIME, configuration for Gnus + +In your @env{HOME} directory create a file called @file{.mailcap}, +with contents like the following: +@example +application/zip "C:/Program Files/7-Zip/7zFM.exe" +video/* "C:/Program Files/VideoLAN/VLC/vlc.exe" +@end example + +@strong{Warning:} Associating MIME types with @command{start} or other +generic Windows commands to open arbitrary files might seem like a +good idea, but it leaves your system as open to attack as Outlook +Express was at its worst. Especially dangerous is associating +application/* or */* in this way. + +@node Using FTP +@section How do I use FTP within Emacs? +@cindex ftp, using within Emacs +@cindex ange-ftp +@cindex tramp, ftp +@cindex remote hosts via ftp +@vindex ange-ftp-ftp-program-name + +Windows built in FTP client can be used with ange-ftp. Ange-ftp is +the Emacs package that provides FTP connectivity to tramp, a +multi-protocol remote file access package for Emacs that is enabled by +default. + +The Windows FTP client does have problems with some firewalls, due to +lack of passive mode support, so you may want to try an alternative +ftp client instead. Make sure that the client you are trying is in +your @env{PATH} before the default Windows client, or rename the +default Windows client to avoid it getting in the way. Alternatively +you can customize @code{ange-ftp-ftp-program-name} to the full path to +the version you are trying. @xref{Other useful ports}. + +@node Tramp ssh +@section How do I use Tramp to work in Emacs via SSH? +@cindex tramp, ssh +@cindex ssh, accessing remote hosts within Emacs +@cindex remote hosts via ssh +@cindex openssh +@cindex PuTTY +@cindex plink +@vindex tramp-default-method +@vindex tramp-default-method-alist + +Tramp can use a number of protocols to connect to remote machines to +read files and even run commands on those files remotely. A popular +one is ssh. As well as Cygwin versions of openssh, you can use +PuTTY's command line plink program as the ssh client. The relevant +methods to use in @code{tramp-default-method} or +@code{tramp-default-method-alist} for these options are: +@itemize @w{} +@item +openssh +@itemize +@item @code{scp} Uses scp for copying, ssh for shell operations. +@item @code{scp1} scp with forced SSH protocol version 1 +@item @code{scp2} scp with forced SSH protocol version 2 +@item @code{ssh} Uses ssh with encoding on stdin/stdout for file transfer. +@item @code{ssh1} ssh with forced SSH protocol version 1 +@item @code{ssh2} ssh with forced SSH protocol version 2 +@end itemize + +@item +PuTTY +@itemize +@item @code{pscp} Uses pscp for copying, plink for shell operations. +@item @code{pscp1} pscp, with forced SSH protocol version 1 +@item @code{pscp2} pscp, with forced SSH protocol version 2 +@item @code{plink} Uses plink with encoding on stdin/stdout for file transfer. +@item @code{plink1} plink with forced SSH protocol version 1 +@item @code{plink2} plink with forced SSH protocol version 2 +@end itemize +@end itemize + +@node telnet +@section How do I use telnet with Emacs? +@cindex telnet, in Emacs +@findex telnet +@cindex telnet client, that works with Emacs + +To use telnet-mode on Windows, you need a telnet client that uses +stdin and stdout for input and output. The default Windows client is +a Windows application, and will not work as a subprocess. Several +options exist, but information that was formerly in this FAQ is out of +date now, so no concrete pointers are available. + +@c ------------------------------------------------------------ +@node Text and Utility modes +@chapter Text and Utility modes + +@menu +* TeX:: +* Spell check:: +* Encryption:: +* Mouse wheel:: +* Grep:: +@end menu + +@node TeX +@section How do I use TeX with Emacs? +@cindex tex +@cindex typesetting + +You will need an implementation of TeX for Windows. +A number of implementations are listed on the +@uref{http://www.tug.org/interest.html#free, TeX Users Group} website. + +@menu +* AUCTeX:: +@end menu + +@node AUCTeX +@subsection AUCTeX +@cindex auctex, precompiled for Windows +@cindex latex +@cindex preview-latex + +AUCTeX is an Emacs package for writing LaTeX files, which also +includes preview-latex, an Emacs mode for previewing the formatted +contents of LaTeX documents. Pre-compiled versions for Windows are +available from +@uref{http://www.gnu.org/software/auctex/download-for-windows.html, the +AUCTeX site}. + +@node Spell check +@section How do I perform spell checks? +@cindex spell checking +@cindex ispell +@cindex aspell +@cindex flyspell +@vindex ispell-program-name +@findex flyspell-mode + +Emacs has support for spell checking on demand (@code{ispell}) and as +your type (@code{flyspell}). Both packages depend on a copy of +@command{ispell} 3.2 or a compatible spell-checking program. +GNU Aspell is a popular choice these days, Windows installers are +available from the @uref{http://aspell.net/win32/, official site}. + +Once installed, you will need to configure @code{ispell-program-name} +to tell ispell and flyspell to use @command{aspell} as a replacement for +ispell. You can include the full path to the @file{aspell} binary, which +means you do not need to add its installation directory to the @env{PATH}. + +@node Encryption +@section Emacs and encryption +@cindex encryption +@cindex gpg, Windows binaries +@cindex pgp encryption, with GNU Privacy Guard +@cindex signatures on Emacs distribution, checking +@cindex Emacs distribution, checking digital signatures + +GNU Privacy Guard is a Free replacement for PGP, with Windows binaries +available. See @uref{http://www.gnupg.org/}. + +@node Mouse wheel +@section Why doesn't my wheel mouse work in Emacs? +@cindex mouse wheel +@cindex wheel mouse +@cindex middle button, on wheel mouse +@cindex scrolling, with mouse wheel + +Some wheel mice ship with default settings that do not send the +standard wheel events to programs, but instead try to simulate scroll +bar events. Usually this is configurable from the hardware specific +pages on the mouse control panel. The middle button is often mapped +in the same settings to have some functionality other than sending +middle mouse button events. In some cases, uninstalling the +manufacturer's drivers and telling Windows to use the generic USB or +PS/2 drivers is the only way to make the mouse work properly. + +@node Grep +@section How do I use grep with Emacs? +@cindex searching through files with grep +@cindex grep +@cindex findstr +@findex grep + +The best way to use @kbd{M-x grep} with Emacs is to download a port of +GNU @command{grep}. @xref{Other useful ports}. + +If you want a quick solution without installing extra tools, a poor +substitute that works for simple text searches is to specify the built +in Windows command @command{findstr} as the command to run at the +@kbd{M-x grep} prompt. Normally you will want to use the @option{/n} +argument to @command{findstr}. + +@menu +* Recursive grep:: +@end menu + +@node Recursive grep +@subsection How do I do a recursive grep? +@cindex recursive searching with grep +@cindex grep, recursive through subdirectories +@cindex findstr, recursive +@cindex find, using with grep +@cindex find, the POSIX command +@findex rgrep +@findex grep-find +@findex find-grep-dired +@vindex find-program +@vindex grep-find-command + +The Emacs commands @code{rgrep}, @code{grep-find} +and @code{find-grep-dired} are all different interfaces for +grepping recursively into subdirectories. By default, they use the +command @command{find} to determine which files to work on, and either +run @command{grep} directly from find, or use @command{xargs} to batch +up files and reduce the number of invocations of @command{grep}. + +Windows also comes with a @command{find} command, but it is not in any +way compatible with the POSIX @command{find} that Emacs tries to use. +Emacs expects a @command{find} compatible with GNU findutils. +@xref{Other useful ports}. After you have installed it, you will need +to make sure that Emacs finds this version, not the standard Windows +@command{find} command. You can do this by either renaming the +Windows command, changing your @env{PATH} to ensure that the directory +containing the findutils @file{bin} directory comes before the Windows +system directory, or set the variable @code{find-program} to the full +path to the findutils @command{find} command. + +An alternative if you have a recent version of grep is to customize +@code{grep-find-command} to use @samp{grep -r} instead of both find +and grep. Another alternative if you don't need the full capabilities +of grep is to use @samp{findstr /n /r}. + +@c ------------------------------------------------------------ +@node Developing with Emacs +@chapter Developing with Emacs + +@menu +* MSVC:: +* Borland C++ Builder:: +* Version control:: +* Perldb:: +@end menu + +@node MSVC +@section How do I use Emacs with Microsoft Visual C++ + +There are two ways you can use Emacs in conjunction with MSVC. You +can use Emacs as the editor, and do everything else in the DevStudio +IDE. Or you can use Emacs as an IDE, calling the MSVC command line +tools to build your project. + +@menu +* DevStudio:: +* MSVC command line:: +@end menu + +@node DevStudio +@subsection Emacs as the text editor for DevStudio +@cindex DevStudio, using Emacs as editor in +@cindex MSVC++, using Emacs as editor with +@cindex Visual Studio, using Emacs as editor in +@cindex VisEmacs, add in for MS Developer Studio + +Christopher Payne wrote a Visual Studio add-in that makes Emacs the +default text editor, this has now been taken over by Jeff Paquette. +See the following two URLS for details: +@itemize +@item @uref{http://sourceforge.net/projects/visemacs/} for the latest version. +@item @uref{http://www.smathers.net/VisEmacs.htm} for notes on usage. +@end itemize + +@node MSVC command line +@subsection Using MSVC command line tools from Emacs +@cindex MSVC++, compiling within Emacs +@findex compile + +This is an app note on how to use Microsoft Visual C++ with Emacs. The +experiments done below were done with Emacs 19.34.1 on Windows 95, +using Visual C++ 4.0 Standard Edition. Your mileage may vary. + +This writeup assumes minimal knowledge of Emacs hacking on the part of +the reader. + +@menu +* VC++ environment:: +* Default compile command:: +* Reverting buffers:: +* Edit MSVC:: +@end menu + +@node VC++ environment +@subsubsection VC++ Environment Variables +@cindex vcvars32.bat +@cindex MSVC++, environment variables + +There is a batch file in your VC++ installation's bin directory called +@file{vcvars32.bat}, which sets up the environment variables needed to +run the VC++ command line tools. Arrange for those same environment +variables to be set in your Emacs session. You can do this on Windows +9x by calling the @file{vcvars32.bat} script from @file{autoexec.bat}. +On other versions of Windows you can set the environment variables +globally using the System control panel. + +For all versions of Windows you can alternatively set the variables +just inside Emacs by using @code{setenv} calls in your init file. +@xref{Installing Emacs,,Where do I put my init file?}. + +You should now be able to compile from Emacs. Load a source file from +a VC++ project. Type @kbd{M-x compile}. Replace the proposed command line +with: +@example +nmake -f @var{ProjectName}.mak +@end example + +You will find that this defaults to a debug build. You can change it +to a release build with: +@example +nmake -f @var{ProjectName}.mak CFG="@var{ProjectName} - Win32 Release" +@end example + +@node Default compile command +@subsubsection Setting the default compile command +@cindex compile, setting default command +@cindex nmake, as default compile command +@vindex compile-command + +Now set the default value for the compile command line. Add the +following to your init file: + +@example +;; Set up for Visual C++ compiling +(setq compile-command "nmake -f ") +@end example + +If you work on the same project long term, you can add the project +makefile to the string. + +David Biesack suggests that perhaps it's +easy to write a @file{Makefile} in the project directory which does + +@example +PROJECT=MyProject +all: debug +debug: FORCE + nmake /f $(PROJECT).mak CFG="$(PROJECT) - Win32 Debug" +release: FORCE + nmake /f $(PROJECT).mak CFG="$(PROJECT) - Win32 Release" +FORCE: +@end example + +and then you can simply change compile-command to @command{nmake}. + +Caleb T. Deupree reports that on VC++ +5.0 and up, "You can also set an option in Options/Build to export a +makefile every time the project is saved, which you can then use to +compile with @samp{nmake -f project.mak}." VC++ 4.0 builds the make file +every time, and there is no option. + +@node Reverting buffers +@subsubsection Reverting Buffers +@cindex DevStudio, keeping source in sync +@cindex Visual Studio, keeping source in sync +@cindex MSVC++, keeping source in sync +@findex auto-revert-mode +@findex global-auto-revert-mode + +It is recommended that you use @code{auto-revert-mode} in buffers +that you have open in both Emacs and MSVC++ at the same time. Then if +you mistakenly edit the file in MSVC++, Emacs will pick up your +changes immediately, rather than after you have written lots more code +and attempt to save. + +@node Edit MSVC +@subsubsection Edit with Emacs function for MSVC +@cindex DevStudio, load in Emacs command +@cindex Visual Studio, load in Emacs command +@cindex MSVC++, load in Emacs command +@cindex emacsclient, calling from Visual Studio + +You can also set up VC++ to import a file into Emacs for you, all +ready for editing. In VC++, go to the @code{Tools} pull-down menu, and +click on @code{Customize...}. In the @code{Tools} tab, click on +@code{Add}. Use @code{Browse} to locate the +@file{emacsclientw.exe} file in your Emacs bin directory, and +select it. For arguments, use @option{+$(CurLine)} +@option{"$(FilePath)"} and for the directory use the @code{$(WkspDir)} +(the quotes around FilePath handle paths with spaces in them). Set the +Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in +Emacs to the same line as the cursor position in VC++. The ampersand +in the word @code{Em&acs} allows you to select emacs from the keyboard. (E +is already used for the OLE control test container.) + +You should now be able to go to any source file in your project. Then, +use the pull-down menu @code{Tools->Emacs}. The active file in your +VC++ IDE should now be front and center in Emacs, all ready to edit as +you wish. If you use keystrokes to work the menus, try @kbd{Alt-T A} to +move the file into Emacs. Binding this tool to a keystroke will be +left as an exercise for the student. + +If you have the option of saving files before running tools, make sure +this option is set. (I don't see it on VC++ 4.0.) + +@node Borland C++ Builder +@section Emacs and Borland C++ Builder +@cindex Borland C++, integration with Emacs + +Jonathan Arnold has written an +@uref{http://www.buddydog.org/C++Builder/c++builder.html, EmacsEdit +``expert''} for interfacing C++ Builder and Emacs. + +@node Version control +@section Is there a version of my VC software I can use with Emacs? +@cindex version control, integration with Emacs +@cindex revision control, integration with Emacs +@cindex source control, integration with Emacs +@cindex cvs, version control integration with Emacs +@cindex rcs, version control integration with Emacs +@cindex svn, version control integration with Emacs +@cindex git, version control integration with Emacs +@cindex bzr, version control integration with Emacs +@cindex arch, version control integration with Emacs +@cindex mercurial, version control integration with Emacs +@cindex hg, version control integration with Emacs +@cindex monotone, version control integration with Emacs +@cindex mcvs, version control integration with Emacs + +If you are using a graphical revision control tool already, check if +it comes with command-line tools. Many such GUI tools are just +wrappers for the same command line tools that Emacs requires for its +VC integration. Most of the supported VC systems have well supported +Free native Windows binaries. For those that don't Cygwin may be an option. +@xref{Other useful ports}. + +@node Perldb +@section How do I use the Perl debugger with Emacs? +@cindex perl, debugging within Emacs +@cindex perldb, using with Emacs + +From Jay Rogers: + +Some versions of the perl debugger itself need to be patched to work +with emacs. They are perl versions 5.001 and less, and version +5.004_01. To fix, locate and change the code similar to the following +code in lib/perl5db.pl +@example + if (-e "/dev/tty") @{ + $console = "/dev/tty"; + $rcfile=".perldb"; + @} + elsif (-e "con") @{ + $console = ""; <---- change "con" to "" + $rcfile="perldb.ini"; + @} + else @{ + $console = "sys\$command"; + $rcfile="perldb.ini"; + @} +@end example + +Doug Campbell also has some +@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/perldb, +suggestions} for improving the interaction of perldb and Emacs. + +@c ------------------------------------------------------------ +@node Other useful ports +@chapter Other useful ports +@cindex useful tools +@cindex subprocesses, useful tools + +@menu +* Cygwin:: +* MinGW:: +* UWIN:: +* GnuWin32:: +* GTK:: +* Read man pages:: +@end menu + +@node Cygwin +@section Cygwin +@cindex cygwin environment +@cindex cygwin, library conflicts +@cindex library conflicts with cygwin +@cindex interoperability with cygwin +@cindex subprocesses, cygwin tools +@vindex exec-path + +@uref{http://www.cygwin.com/}. + +Cygwin is a popular complete POSIX emulation environment for Windows. +Most of its tools can be used with Emacs, and it covers a wide range +of ported software. The main shell used by Cygwin is GNU +@command{bash}, but other shells are also available. Some Cygwin +tools may not interoperate well with Emacs or other native Windows +tools, due to the total immersion aspect of Cygwin, including its +non-native filesystem mapping. + +If you choose to use Cygwin, then its tools will probably be all that +you need, but you will need to get image libraries from elsewhere, as +the Cygwin ones are not compatible with non-Cygwin software. In fact, +if Cygwin is on your PATH when you run Emacs, and Emacs does not find +other versions of the image libraries first, then the Cygwin ones can +cause problems. Cygwin developers recommend that you do not put +Cygwin on your system @env{PATH} for this reason. Instead you can +make the Cygwin tools available within Emacs by setting @code{exec-path} +in your init file. + +@node MinGW +@section MinGW and MSYS +@cindex mingw tools +@cindex msys environment +@cindex subprocesses, mingw and msys + +@uref{http://www.mingw.org/} + +MinGW is a set of development tools that produce native Windows +executables, not dependent on Cygwin's POSIX emulation DLLs. + +MSYS is a POSIX shell and minimal set of tools that are commonly used in +configure scripts. Like Cygwin, this environment uses a non-native +filesystem mapping to appear more POSIX like to the scripts that it +runs. This is intended to complement the MinGW tools to make it easier +to port software to Windows. + +@node UWIN +@section UWIN +@cindex uwin environment +@cindex subprocesses, uwin + +@uref{http://www.research.att.com/sw/tools/uwin/} + +UWIN is another POSIX emulation environment, like Cygwin and MSYS, +that provides a large number of ported tools. The shell used by UWIN +is @command{ksh}, the Korn shell. + +@node GnuWin32 +@section GnuWin32 +@cindex gnuwin32 tools +@cindex subprocesses, gnuwin32 +@cindex image libraries, gnuwin32 +@cindex image libraries, development + +@uref{http://gnuwin32.sourceforge.net/} + +GnuWin32 provides precompiled native Windows ports of a wide selection +of Free software and libraries. Tools available here that are useful +for Emacs include: + +@itemize +@item Arc - used by @code{archive-mode} to edit .arc files. +@item Bzip2 - used by Emacs to automatically decompress .bz2 files. +@item CompFace - used by @code{gnus} to display XFace headers in messages. +@item CoreUtils - GNU file, shell and text utilities (also in MSYS) +@item DiffUtils - for @code{ediff} and producing patches +@item FindUtils - for @code{grep-find} and other file searches. +@item GifLib - library to support GIF images. +@item Grep - for searching through files with @code{grep}. +@item Gzip - used by Emacs to automatically decompress .gz files. +@item Jpeg - library to support JPEG images (also in GTK). +@item Lha - used by @code{archive-mode} to edit .lzh files. +@item LibPng - library to support PNG images (also in GTK). +@item LibTiff - library to support TIFF images (also in GTK). +@item Make - used by @code{compile} for building projects (also in MinGW) +@item OpenSSL - used by @code{gnus} to talk to servers over SSL. +@item Patch - used by @code{ediff-patch-file} and others to apply patches. +@item Tar - used by @code{tar-mode} to edit tar files. +@item TexInfo - used to build Emacs' manuals. +@item Unzip - used by @code{archive-mode} for extracting zip files. +@item Xpm - library to support XPM images (bundled with Emacs binaries) +@item Zip - used by @code{archive-mode} for editing zip files. +@item Zlib - required by LibPng (also in GTK). +@end itemize + +@node GTK +@section GTK +@cindex GTK image libraries +@cindex image libraries, GTK +@cindex addpm, using GTK image libraries + +GTK is a potential source for some of the image libraries that Emacs +requires. GTK is installed along with other ports of GUI software, +such as the GIMP image editor, and Pidgin instant messenger client. +If GTK is installed when you run @command{addpm}, Emacs will use the +image libraries that it provides, even if they are not on the +@env{PATH}. GTK ships with JPEG, PNG and TIFF support. + +@node Read man pages +@section How do I read man pages? +@cindex man pages +@findex woman +@findex man + +Man pages for Emacs and other ported programs that you have can be +read using Emacs' built-in manual reader @code{woman}. This +requires no external programs, but if you do have a port of +@command{man}, there is also an Emacs wrapper @code{man} that +which may be slightly faster. + +@c ------------------------------------------------------------ +@node Further information +@chapter Further information + +@menu +* More information:: +* Mailing lists:: +@end menu + +@node More information +@section Where can I get more information about Emacs? +@cindex other sources of information +@cindex faqs, general +@cindex faqs, old +@cindex help, manuals and other sources +@cindex manuals +@cindex wiki + +If you have general questions about Emacs, the best places to start +looking are @ref{Top,,, emacs, The GNU Emacs Manual}, and +@ref{Top,,, efaq, the standard Emacs FAQ}. +In Emacs, you can browse the manual using Info by typing @kbd{C-h r}, +and you can view the FAQ by typing @kbd{C-h C-f}. Other resources include: + +@itemize +@item @uref{http://www.gnu.org/software/emacs/, The Emacs homepage} +@item @uref{http://www.gnu.org/software/emacs/manual/, Other Emacs manuals} +@item @uref{http://www.emacswiki.org/, Emacs Wiki} +@end itemize + +@node Mailing lists +@section What mailing lists are there for discussing Emacs on Windows? +@cindex mailing lists +@cindex help, mailing lists + +The official mailing list for Windows specific help and discussion is +@url{http://lists.gnu.org/mailman/listinfo/help-emacs-windows, +help-emacs-windows}. See that link for information on how to subscribe +or unsubscribe. The +@uref{http://lists.gnu.org/archive/html/help-emacs-windows/, list archives} +are available online. + +@c ------------------------------------------------------------ +@node Indexes +@unnumbered Indexes + +@unnumberedsec Function and Variable Index + +@printindex fn + +@unnumberedsec Concept Index + +@printindex cp + +@bye diff --git a/doc/misc/faq.texi b/doc/misc/efaq.texi similarity index 99% rename from doc/misc/faq.texi rename to doc/misc/efaq.texi index 1354f68cc9f..54e067d65bd 100644 --- a/doc/misc/faq.texi +++ b/doc/misc/efaq.texi @@ -3452,8 +3452,9 @@ lack certain features, such as the Emacs Lisp extension language. @cindex Emacs for MS-Windows @cindex Microsoft Windows, Emacs for -There is a @uref{http://www.gnu.org/software/emacs/windows/ntemacs.html, -separate FAQ} for Emacs on MS-Windows. For MS-DOS, @pxref{Emacs for MS-DOS}. +There is a separate FAQ for Emacs on MS-Windows, +@pxref{Top,,,efaq-w32,FAQ for Emacs on MS Windows}. +For MS-DOS, @pxref{Emacs for MS-DOS}. @node Emacs for GNUstep diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index c8e8fb6d2e2..e199417aa9d 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi @@ -256,7 +256,7 @@ concepts. Therefore, it is highly recommended to learn these from a textbook or tutorial first, especially if you only know OOP from languages like C++ or Java. If on the other hand you are already familiar with CLOS, you should be aware that @eieio{} does not implement -the full CLOS specificiation and also differs in some other aspects +the full CLOS specification and also differs in some other aspects (@xref{Introduction}, and @ref{CLOS compatibility}). A @dfn{class} is a definition for organizing data and methods diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi index cbb78af9d59..2c0e929e532 100644 --- a/doc/misc/emacs-mime.texi +++ b/doc/misc/emacs-mime.texi @@ -871,15 +871,15 @@ by using the @code{encoding} @acronym{MML} tag (@pxref{MML Definition}). @vindex mm-coding-system-priorities Prioritize coding systems to use for outgoing messages. The default is @code{nil}, which means to use the defaults in Emacs, but is -@code{(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8)} when -running Emacs in the Japanese language environment. It is a list of -coding system symbols (aliases of coding systems are also allowed, use -@kbd{M-x describe-coding-system} to make sure you are specifying correct -coding system names). For example, if you have configured Emacs -to prefer UTF-8, but wish that outgoing messages should be sent in -ISO-8859-1 if possible, you can set this variable to -@code{(iso-8859-1)}. You can override this setting on a per-message -basis by using the @code{charset} @acronym{MML} tag (@pxref{MML Definition}). +@code{(iso-8859-1 iso-2022-jp utf-8)} when running Emacs in the Japanese +language environment. It is a list of coding system symbols (aliases of +coding systems are also allowed, use @kbd{M-x describe-coding-system} to +make sure you are specifying correct coding system names). For example, +if you have configured Emacs to prefer UTF-8, but wish that outgoing +messages should be sent in ISO-8859-1 if possible, you can set this +variable to @code{(iso-8859-1)}. You can override this setting on a +per-message basis by using the @code{charset} @acronym{MML} tag +(@pxref{MML Definition}). As different hierarchies prefer different charsets, you may want to set @code{mm-coding-system-priorities} according to the hierarchy in Gnus. @@ -904,7 +904,7 @@ Here's an example: (mm-coding-system-priorities '(iso-8859-15 iso-8859-1 utf-8))) ("^fj\\." ;; Japanese (mm-coding-system-priorities - '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8))) + '(iso-8859-1 iso-2022-jp utf-8))) ("^ru\\." ;; Cyrillic (mm-coding-system-priorities '(koi8-r iso-8859-5 iso-8859-1 utf-8)))) diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi index adc63cc0bdb..bdba071be55 100644 --- a/doc/misc/epa.texi +++ b/doc/misc/epa.texi @@ -106,7 +106,7 @@ This chapter introduces various commands for typical use cases. * Cryptographic operations on files:: * Dired integration:: * Mail-mode integration:: -* Encrypting/decrypting *.gpg files:: +* Encrypting/decrypting gpg files:: @end menu @node Key management @@ -346,8 +346,8 @@ key in the recipient list, use @samp{encrypt-to} option in @end table -@node Encrypting/decrypting *.gpg files -@section Encrypting/decrypting *.gpg files +@node Encrypting/decrypting gpg files +@section Encrypting/decrypting gpg files By default, every file whose name ends with @samp{.gpg} will be treated as encrypted. That is, when you open such a file, the decrypted text is inserted in the buffer rather than encrypted one. @@ -464,7 +464,7 @@ To set up gpg-agent, follow the instruction in GnuPG manual. To set up elisp passphrase cache, set @code{epa-file-cache-passphrase-for-symmetric-encryption}. -@xref{Encrypting/decrypting *.gpg files}. +@xref{Encrypting/decrypting gpg files}. @node Bug Reports @chapter Bug Reports diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 4edc1d62f1a..f7f373664c6 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -14796,14 +14796,16 @@ and says what authentication scheme to use. The default is @item :leave Non-@code{nil} if the mail is to be left on the @acronym{POP} server -after fetching. Mails once fetched will never be fetched again by the -@acronym{UIDL} control. Only the built-in @code{pop3-movemail} program -(the default) supports this keyword. +after fetching. Only the built-in @code{pop3-movemail} program (the +default) supports this keyword. -If this is neither @code{nil} nor a number, all mails will be left on -the server. If this is a number, leave mails on the server for this -many days since you first checked new mails. If this is @code{nil} -(the default), mails will be deleted on the server right after fetching. +If this is a number, leave mails on the server for this many days since +you first checked new mails. In that case, mails once fetched will +never be fetched again by the @acronym{UIDL} control. If this is +@code{nil} (the default), mails will be deleted on the server right +after fetching. If this is neither @code{nil} nor a number, all mails +will be left on the server, and you will end up getting the same mails +again and again. @vindex pop3-uidl-file The @code{pop3-uidl-file} variable specifies the file to which the diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index e45234872e2..4bb6a9d6900 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -1275,6 +1275,7 @@ normally be applied. @vindex hfy-html-quote-regex @anchor{hfy-html-quote-regex} +@c FIXME: the cross-reference below looks ugly Regex to match (with a single back-reference per match) strings in HTML which should be quoted with @ref{hfy-html-quote} (and @pxref{hfy-html-quote-map}) to make them safe. @@ -1340,31 +1341,6 @@ See also: @ref{hfy-page-footer} String to add to the @samp{