]> code.delx.au - gnu-emacs/commitdiff
Merge from mh-e; up to 2012-01-03T19:41:14Z!larsi@gnus.org.
authorBill Wohler <wohler@newt.com>
Mon, 17 Mar 2014 00:50:05 +0000 (17:50 -0700)
committerBill Wohler <wohler@newt.com>
Mon, 17 Mar 2014 00:50:05 +0000 (17:50 -0700)
249 files changed:
ChangeLog
admin/ChangeLog
admin/merge-gnulib
admin/notes/multi-tty
configure.ac
doc/emacs/ChangeLog
doc/emacs/basic.texi
doc/emacs/cmdargs.texi
doc/emacs/custom.texi
doc/emacs/emacs.texi
doc/emacs/indent.texi
doc/emacs/killing.texi
doc/emacs/mark.texi
doc/emacs/misc.texi
doc/emacs/mule.texi
doc/emacs/programs.texi
doc/emacs/search.texi
doc/emacs/text.texi
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/ChangeLog
doc/lispref/buffers.texi
doc/lispref/commands.texi
doc/lispref/display.texi
doc/lispref/elisp.texi
doc/lispref/frames.texi
doc/lispref/functions.texi
doc/lispref/help.texi
doc/lispref/hooks.texi
doc/lispref/internals.texi
doc/lispref/markers.texi
doc/lispref/minibuf.texi
doc/lispref/modes.texi
doc/lispref/os.texi
doc/lispref/searching.texi
doc/lispref/sequences.texi
doc/lispref/strings.texi
doc/lispref/text.texi
doc/lispref/windows.texi
doc/misc/ChangeLog
doc/misc/ada-mode.texi
doc/misc/auth.texi
doc/misc/calc.texi
doc/misc/cc-mode.texi
doc/misc/ebrowse.texi
doc/misc/ede.texi
doc/misc/edt.texi
doc/misc/efaq-w32.texi
doc/misc/efaq.texi
doc/misc/eieio.texi
doc/misc/emacs-gnutls.texi
doc/misc/epa.texi
doc/misc/ert.texi
doc/misc/eshell.texi
doc/misc/eww.texi
doc/misc/flymake.texi
doc/misc/gnus.texi
doc/misc/info.texi
doc/misc/message.texi
doc/misc/mh-e.texi
doc/misc/newsticker.texi
doc/misc/octave-mode.texi
doc/misc/org.texi
doc/misc/pcl-cvs.texi
doc/misc/rcirc.texi
doc/misc/sem-user.texi
doc/misc/semantic.texi
doc/misc/smtpmail.texi
doc/misc/texinfo.tex
doc/misc/url.texi
doc/misc/vip.texi
doc/misc/viper.texi
doc/misc/wisent.texi
doc/misc/woman.texi
etc/ChangeLog
etc/NEWS
etc/refcards/vipcard.tex
etc/tutorials/TUTORIAL
etc/tutorials/TUTORIAL.cs
etc/tutorials/TUTORIAL.de
etc/tutorials/TUTORIAL.eo
etc/tutorials/TUTORIAL.es
etc/tutorials/TUTORIAL.fr
etc/tutorials/TUTORIAL.he
etc/tutorials/TUTORIAL.it
etc/tutorials/TUTORIAL.ja
etc/tutorials/TUTORIAL.ko
etc/tutorials/TUTORIAL.nl
etc/tutorials/TUTORIAL.pl
etc/tutorials/TUTORIAL.pt_BR
etc/tutorials/TUTORIAL.ro
etc/tutorials/TUTORIAL.ru
etc/tutorials/TUTORIAL.sk
etc/tutorials/TUTORIAL.sv
etc/tutorials/TUTORIAL.th
lib-src/ChangeLog
lib-src/emacsclient.c
lib/gnulib.mk
lib/stdint.in.h
lib/sys_types.in.h
lib/unistd.in.h
lisp/ChangeLog
lisp/ChangeLog.10
lisp/ChangeLog.11
lisp/ChangeLog.15
lisp/ChangeLog.8
lisp/ChangeLog.9
lisp/Makefile.in
lisp/ansi-color.el
lisp/apropos.el
lisp/bindings.el
lisp/cedet/ChangeLog
lisp/cedet/semantic/util.el
lisp/comint.el
lisp/desktop.el
lisp/dframe.el
lisp/dired.el
lisp/electric.el
lisp/emacs-lisp/advice.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/crm.el
lisp/emacs-lisp/easy-mmode.el
lisp/emacs-lisp/edebug.el
lisp/emacs-lisp/eieio.el
lisp/emacs-lisp/eldoc.el
lisp/emacs-lisp/ert.el
lisp/emacs-lisp/lisp.el
lisp/emacs-lisp/nadvice.el
lisp/emacs-lisp/package.el
lisp/emacs-lisp/shadow.el
lisp/emacs-lisp/smie.el
lisp/emulation/edt.el
lisp/erc/ChangeLog
lisp/erc/erc-networks.el
lisp/eshell/em-hist.el
lisp/faces.el
lisp/filecache.el
lisp/files.el
lisp/find-dired.el
lisp/finder.el
lisp/frame.el
lisp/frameset.el
lisp/gnus/ChangeLog
lisp/gnus/ChangeLog.1
lisp/gnus/gnus-agent.el
lisp/gnus/gnus-group.el
lisp/gnus/nnimap.el
lisp/gnus/nnir.el
lisp/help-fns.el
lisp/help.el
lisp/hexl.el
lisp/hilit-chg.el
lisp/htmlfontify.el
lisp/icomplete.el
lisp/ido.el
lisp/image.el
lisp/info.el
lisp/isearch.el
lisp/ldefs-boot.el
lisp/mh-e/ChangeLog
lisp/mh-e/mh-compat.el
lisp/minibuffer.el
lisp/net/dbus.el
lisp/net/eww.el
lisp/net/newst-backend.el
lisp/net/shr.el
lisp/net/socks.el
lisp/net/tls.el
lisp/net/tramp-adb.el
lisp/net/tramp-cache.el
lisp/net/tramp-gvfs.el
lisp/net/tramp-sh.el
lisp/net/tramp.el
lisp/org/ChangeLog
lisp/org/org-version.el
lisp/progmodes/cc-mode.el
lisp/progmodes/hideif.el
lisp/progmodes/modula2.el
lisp/progmodes/opascal.el
lisp/progmodes/pascal.el
lisp/progmodes/python.el
lisp/progmodes/ruby-mode.el
lisp/progmodes/sh-script.el
lisp/progmodes/sql.el
lisp/register.el
lisp/saveplace.el
lisp/simple.el
lisp/startup.el
lisp/strokes.el
lisp/subr.el
lisp/tempo.el
lisp/term/ns-win.el
lisp/term/sun.el
lisp/term/wyse50.el
lisp/textmodes/bibtex.el
lisp/textmodes/css-mode.el
lisp/textmodes/rst.el
lisp/userlock.el
lisp/vc/pcvs-defs.el
lisp/vc/pcvs-info.el
lisp/vc/pcvs-parse.el
lisp/vc/pcvs-util.el
lisp/vc/pcvs.el
lisp/vc/vc-git.el
lisp/window.el
lwlib/ChangeLog
m4/gnulib-common.m4
m4/gnulib-comp.m4
m4/sys_types_h.m4
m4/timer_time.m4
nextstep/ChangeLog
nextstep/templates/Info.plist.in
nt/ChangeLog
src/ChangeLog
src/alloc.c
src/buffer.c
src/cmds.c
src/dbusbind.c
src/dispnew.c
src/doc.c
src/fileio.c
src/filelock.c
src/font.c
src/frame.c
src/gmalloc.c
src/gtkutil.c
src/keyboard.c
src/lisp.h
src/lread.c
src/nsterm.h
src/nsterm.m
src/search.c
src/term.c
src/w32.c
src/w32term.c
src/widget.c
src/window.c
src/xdisp.c
src/xfns.c
src/xfont.c
src/xftfont.c
src/xgselect.c
src/xsettings.c
src/xterm.c
src/xterm.h
test/ChangeLog
test/automated/tramp-tests.el
test/automated/undo-tests.el
test/indent/ruby.rb

index 4cefaef325fe5b6d64c047bac1b34970ce706a35..f8e98bdf3175420116eeb9c8f47d9ade0650f851 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2014-03-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from gnulib, incorporating:
+       2014-03-04 stdint: fix missing SIZE_MAX on Android
+       2013-03-02 sys_types: avoid autoconf warning about gl_SYS_TYPES_H
+       * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+       * lib/stdint.in.h, lib/sys_types.in.h, m4/sys_types_h.m4:
+       Update from gnulib.
+
+2014-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * configure.ac: Tweak the "unported" error message.
+
+2014-03-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix configuration bug on Solaris 2.5.1 (Bug#16905).
+       * configure.ac: Fix a bug in shell pattern matching that caused
+       'configure' to treat Solaris 2.5.1 as if it were Solaris 10 or later.
+
+2014-02-25  Paul Eggert  <eggert@penguin.cs.ucla.edu>
+
+       Merge from gnulib (Bug#16825).
+       2014-02-25 unistd: port readlink to Mac OS X 10.3.9
+
+2014-02-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from gnulib, incorporating:
+       2014-02-21 timer: fix uClibc detection of threading
+       2014-02-21 maintainer-makefiles: provide AC_PROG_SED for older autoconf
+
 2014-02-18  Mirek Kaim  <mirek.kaim@outlook.com>  (tiny change)
 
        * configure.ac [HAVE_W32]: Test for ImageMagick.  (Bug#16754)
 
        * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and
        $(BLD)/close-stream.$(O).
-       ($(BLD)/close-stream.$(O)):
+       ($(BLD)/close-stream.$(O))
        ($(BLD)/fpending.$(O)): New dependencies.
 
 2012-11-03  Paul Eggert  <eggert@cs.ucla.edu>
 
        * configure.ac (opsysfile): Use bsd-common on gnu systems.
 
-       * configure.ac (GNU_LIBRARY_PENDING_OUTPUT_COUNT):
+       * configure.ac (GNU_LIBRARY_PENDING_OUTPUT_COUNT)
        (SIGNALS_VIA_CHARACTERS): Move here from src/s.
 
 2012-07-11  Paul Eggert  <eggert@cs.ucla.edu>
 
 2012-06-24  Eli Zaretskii  <eliz@gnu.org>
 
-       * lib/makefile.w32-in ($(BLD)/dtotimespec.$(O)):
-       ($(BLD)/timespec-add.$(O)):
+       * lib/makefile.w32-in ($(BLD)/dtotimespec.$(O))
+       ($(BLD)/timespec-add.$(O))
        ($(BLD)/timespec-sub.$(O)): Don't depend on
        $(EMACS_ROOT)/nt/inc/sys/time.h.
 
        * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/dtotimespec.$(O),
        $(BLD)/gettime.$(O), $(BLD)/timespec-add.$(O), and
        $(BLD)/timespec-sub.$(O).
-       ($(BLD)/dtotimespec.$(O)):
-       ($(BLD)/gettime.$(O)):
-       ($(BLD)/timespec-add.$(O)):
+       ($(BLD)/dtotimespec.$(O))
+       ($(BLD)/gettime.$(O))
+       ($(BLD)/timespec-add.$(O))
        ($(BLD)/timespec-sub.$(O)): New dependencies.
 
        * lib/stat-time.h:
        * config.bat (lib): Create/update lib/stdalign.in-h and
        lib/sys_types.in-h.
 
-       * lib/makefile.w32-in ($(BLD)/md5.$(O)):
-       ($(BLD)/sha1.$(O)):
-       ($(BLD)/sha256.$(O)):
+       * lib/makefile.w32-in ($(BLD)/md5.$(O))
+       ($(BLD)/sha1.$(O))
+       ($(BLD)/sha256.$(O))
        ($(BLD)/sha512.$(O)): Depend on $(EMACS_ROOT)/nt/inc/stdalign.h.
        Suggested by Christoph Scholtes <cschol2112@googlemail.com>.
 
        $(BLD)/time_r.$(O).
        ($(BLD)/dtoastr.$(O)): Depend on $(EMACS_ROOT)/src/s/ms-w32.h and
        $(EMACS_ROOT)/src/m/intel386.h.
-       ($(BLD)/strftime.$(O)):
+       ($(BLD)/strftime.$(O))
        ($(BLD)/time_r.$(O)): Define prerequisites.
 
 2011-01-31  Paul Eggert  <eggert@cs.ucla.edu>
        * configure.in (HAVE_SOUND, HAVE_X_I18N, HAVE_X11R6_XIM):
        Set with AC_DEFINE rather than AH_BOTTOM.
 
-       * configure.in (C_OPTIMIZE_SWITCH, CANNOT_DUMP, SYSTEM_MALLOC):
+       * configure.in (C_OPTIMIZE_SWITCH, CANNOT_DUMP, SYSTEM_MALLOC)
        (USE_MMAP_FOR_BUFFERS, C_WARNING_SWITCH, CFLAGS, REAL_CFLAGS):
        Set with shell, not cpp.
        (LIBX): Remove, just use -lX11 in the one place this was used.
index f27a03af773d3861b81641485447d5934fa64f07..24f714eee8f70b5886ba234280179a5df479272f 100644 (file)
@@ -1,3 +1,8 @@
+2014-03-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix oversight preventing lib/sys/types.h from being generated.
+       * merge-gnulib (GNULIB_TOOL_FLAGS): Don't avoid sys_types.
+
 2014-02-06  David Engster  <deng@randomsample.de>
 
        * grammars/c.by (function-pointer): Correctly deal with anonymous
 
 2013-12-27  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * admin.el (manual-misc-manuals, make-manuals):
-       (manual-pdf, cusver-find-files):
-       (cusver-new-version, cusver-scan, cusver-goto-xref):
-       (cusver-check): Doc fix.
+       * admin.el (manual-misc-manuals, make-manuals, manual-pdf)
+       (cusver-find-files, cusver-new-version, cusver-scan)
+       (cusver-goto-xref, cusver-check): Doc fix.
        (manual-html-node, cusver-check): Use `user-error'.
 
 2013-12-24  Paul Eggert  <eggert@cs.ucla.edu>
@@ -79,9 +83,8 @@
 
 2013-12-24  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * admin.el (add-release-logs):
-       (set-version-in-file, set-version, set-copyright):
-       Use `user-error'.
+       * admin.el (add-release-logs, set-version-in-file, set-version)
+       (set-copyright): Use `user-error'.
 
 2013-12-22  Eli Zaretskii  <eliz@gnu.org>
 
 2011-02-16  Paul Eggert  <eggert@cs.ucla.edu>
 
        Remove no-longer needed getloadavg symbols.
-       * CPP-DEFINES (LOAD_AVE_CVT, LOAD_AVE_TYPE, FSCALE, KERNEL_FILE):
+       * CPP-DEFINES (LOAD_AVE_CVT, LOAD_AVE_TYPE, FSCALE, KERNEL_FILE)
        (LDAV_SYMBOL): Remove.
        * notes/copyright: Remove src/getloadavg.c as a special case.
 
index 75808d30b6009c1d4f99a4ca02c0a04ff210d0a8..6c0dffb6dcee7aff575d6f360dda9885a8114b05 100755 (executable)
@@ -48,7 +48,7 @@ GNULIB_TOOL_FLAGS='
   --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=save-cwd --avoid=select --avoid=sigprocmask
   --avoid=threadlib
   --conditional-dependencies --import --no-changelog --no-vc-files
   --makefile-name=gnulib.mk
index dff788351a9b924b40add25eb10ba8841354f455..f67911d0ff45081f6ffe9c94d82dc8e699c6f700 100644 (file)
@@ -101,16 +101,6 @@ Known problems:
          I plan to implement better user notification and support for
          breaking out of single-kboard mode from locked displays.
 
-       * Mac and DOS support is broken, doesn't even
-         compile.  Multiple display support will probably not provide
-         new Emacs features on these systems, but the multi-tty
-         branch changed a few low-level interfaces, and the
-         system-dependent source files need to be adapted
-         accordingly.  The changes are mostly trivial, so almost
-         anyone can help, if only by compiling the branch and
-         reporting the compiler errors.
-
-
 TESTING
 -------
 
@@ -504,17 +494,6 @@ THINGS TO DO
 
    (This is likely an error in the CVS trunk.)
 
-** Dan Nicolaescu suggests that -nw should be added as an alias for -t
-   in emacsclient.  Good idea.  (Alas, implementing this is not
-   trivial, getopt_long does not seem to support two-letter ``short''
-   options.  Patches are welcome.)
-
-** Mark Plaksin suggests that emacsclient should accept the same
-   X-related command-line arguments as Emacs.  Most of the X-related
-   argument-handling is done in Lisp, so this should be quite easy to
-   implement.  (For example, Samium Gromoff wants emacsclient to
-   support --geometry; implementing this would add that support.)
-
 ** Gergely Nagy suggests that C-x # should only kill the current
    frame, not any other emacsclient frame that may have the same file
    opened for editing.  I think I agree with him.
@@ -532,21 +511,9 @@ THINGS TO DO
    an initial frame.  (The user would connect to it and open frames
    later, with emacsclient.)
 
-** Fix Mac support (I can't do this entirely myself).  Note that the
-   current state of Mac-specific source files in the multi-tty tree
-   are not useful; before starting work on Mac support, revert to
-   pristine, pre-multi-tty versions.
-
-** Fix DOS support (I can't do this entirely myself).  Note that the
-   current state of DOS-specific source files in the multi-tty tree
-   are not useful; before starting work on DOS support, revert to
-   pristine, pre-multi-tty versions.
-
-** Fix Windows support. Currently bootstrapping works on w32, but Emacs
-   crashes on startup and none of the multi-tty features are
-   implemented. Many XXX comments mark things that probably need
-   updating, ChangeLogs will help in spotting changes to X specific
-   files that may need porting.
+** Implement Mac/Windows/DOS support.  Many XXX comments mark things
+   that probably need updating, ChangeLogs will help in spotting
+   changes to X specific files that may need porting.
 
 ** Do a grep on XXX and ?? for more issues.
 
@@ -1085,18 +1052,6 @@ DIARY OF CHANGES
 
    (Done.)
 
--- Miles Bader suggests that C-x C-c on an emacsclient frame should
-   only close the frame, not exit the entire Emacs session.  Update:
-   see above for a function that does this.  Maybe this should be the
-   new default?
-
-   (Done.  This is the new default.  No complaints so far.)
-
--- Clean up the frame-local variable system.  I think it's ugly and
-   error-prone.  But maybe I just haven't yet fully understood it.
-
-   (Nothing to do.  It doesn't seem ugly any more.  It's rather clever.)
-
 -- Support multiple character locales.  A version of
    `set-locale-environment' needs to be written for setting up
    display-local settings on ttys.  I think calling
@@ -1114,18 +1069,6 @@ DIARY OF CHANGES
    (Done, by making `function-key-map' terminal-local (i.e., part of
    struct kboard).  This has probably covered all the remaining problems.)
 
--- Make `function-key-map' and `key-translation-map' terminal-local.
-
-   (Done.)
-
--- Implement `terminal-local-value' and `set-terminal-local-value' to
-   allow deterministic access to terminal local bindings.  The
-   encode-kb package can not set up `key-translation-map' without
-   these.  The terminal-local bindings seem to be independent of what
-   frame is selected.
-
-   (Done.)
-
 -- xt-mouse.el needs to be adapted for multi-tty.  It currently
    signals an error on kill-emacs under X, which prevents the user
    from exiting Emacs. (Reported by Mnemonikk on freenode.)
index 2d41488f0b5c03e7e15e484d7ae658d626be9616..e112f7926a57529737d1ca96ef743ee24644c684 100644 (file)
@@ -468,14 +468,8 @@ dnl quotation begins
 
 ### If you add support for a new configuration, add code to this
 ### switch statement to recognize your configuration name and select
-### the appropriate operating system file.
-
-### You would hope that you could choose an s/*.h
-### file based on the operating system portion.  However, it turns out
-### that each s/*.h file is pretty manufacturer-specific.
-### So we basically have to have a special case for each
-### configuration name.
-###
+### the appropriate opsys.
+
 ### As far as handling version numbers on operating systems is
 ### concerned, make sure things will fail in a fixable way.  If
 ### /etc/MACHINES doesn't say anything about version numbers, be
@@ -581,6 +575,10 @@ case "${canonical}" in
       * )              unported=yes ;;
     esac
     case "${canonical}" in
+      *-sunos5.[1-9][0-9]* | *-solaris2.[1-9][0-9]* )
+               opsys=sol2-10
+               emacs_check_sunpro_c=yes
+               ;;
       *-sunos5.6* | *-solaris2.6* )
                opsys=sol2-6
                RANLIB="ar -ts"
@@ -589,10 +587,6 @@ case "${canonical}" in
                opsys=sol2-6
                emacs_check_sunpro_c=yes
                ;;
-      *-sunos5* | *-solaris* )
-               opsys=sol2-10
-               emacs_check_sunpro_c=yes
-               ;;
     esac
     ## Watch out for a compiler that we know will not work.
     case "${canonical}" in
@@ -659,7 +653,8 @@ fi
 dnl quotation ends
 
 if test $unported = yes; then
-  AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
+  AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
+If you think it should, please send a report to bug-gnu-emacs@gnu.org.
 Check `etc/MACHINES' for recognized configuration names.])
 fi
 
index 9fba16f4126d4ae9752f1b1bfd1eca9132e4a850..34679b8ba1d83c1b12f67e787d3a8cee41ee1cb4 100644 (file)
@@ -1,3 +1,73 @@
+2014-03-16  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * programs.texi (Matching): Update the missed spot.  (Bug#17008)
+
+2014-03-15  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * programs.texi (Matching): Update WRT to the new
+       `blink-matchin-paren' behavior.
+
+2014-03-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mule.texi (International, Language Environments): Update
+       the list of language environments to what Emacs currently
+       supports.  Add the full list to the index.  Suggest C-h L for
+       details rather than trying to give very brief details here.
+
+2014-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * cmdargs.texi (General Variables): Don't mention INCPATH,
+       from the obsolete complete.el.
+
+2014-03-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mule.texi (International Chars): Adjust C-u C-x = description.
+       Change it to match Emacs's current behavior.  Also, change the
+       example to use ê instead of À, as the isolated grave accent in the
+       latter's decomposition listing was confusingly transliterated to
+       left single quote in the PDF version of the manual.
+
+2014-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * misc.texi (Saving Emacs Sessions): Be briefer about desktop's
+       handling of frames.
+
+       * indent.texi (Indent Convenience): Mention electric-indent-local-mode.
+
+2014-03-02  Xue Fuqiao  <xfq@gnu.org>
+
+       * mark.texi (Mark):
+       * killing.texi (Rectangles): Document `rectangle-mark-mode'.
+
+2014-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * search.texi (Query Replace): Mention search-invisible.
+       * text.texi (Outline Visibility): Mention search-invisible
+       also affects query-replace.
+
+2014-02-28  Xue Fuqiao  <xfq@gnu.org>
+
+       * emacs.texi (Top):
+       * programs.texi (Programs, Prettifying Symbols):
+       Document `prettify-symbols-mode' and `global-prettify-symbols-mode'.
+
+       * misc.texi (Saving Emacs Sessions):
+       Document some new desktop user options.
+
+2014-02-27  Xue Fuqiao  <xfq@gnu.org>
+
+       * programs.texi (Basic Indent, Other C Commands):
+       Fix the description of RET and `C-j'.
+
+       * indent.texi (Indentation Commands): Move the description of
+       `C-j' from here...
+       * basic.texi (Inserting Text): ... to here.
+
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * custom.texi (Terminal Init):
+       Replace term-setup-hook with tty-setup-hook.
+
 2014-02-23  Glenn Morris  <rgm@gnu.org>
 
        * rmail.texi (Rmail Inbox): Mention rmail-mbox-format.
        * misc.texi (Shell Mode): Move documentation of
        shell-completion-fignore from Shell Mode to Shell Options.
 
-2013-12-26  João Távora <joaotavora@gmail.com>
+2013-12-26  João Távora  <joaotavora@gmail.com>
 
        * emacs.texi (Matching): Describe new features of Electric Pair mode.
 
 
 2013-12-22  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * search.texi (Special Isearch):
-       (Query Replace): Document negative argument of replacement commands.
+       * search.texi (Special Isearch, Query Replace): Document negative
+       argument of replacement commands.
        (Symbol Search): Document `isearch-forward-symbol-at-point'.
 
        * files.texi (File Conveniences): Document `image-next-file' and
 
        * display.texi (Cursor Display): Document `blink-cursor-blinks'.
 
-       * buffers.texi: Update list-buffers "screeshot" to show Messages
+       * buffers.texi: Update list-buffers "screenshot" to show Messages
        as major-mode.
 
        * entering.texi: Document `initial-buffer-choice' changes.
 
 2013-09-22  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * fixit.texi (Transpose):
-       (Fixing Case): Remove @refill.
+       * fixit.texi (Transpose, Fixing Case): Remove @refill.
 
 2013-09-21  Xue Fuqiao  <xfq.free@gmail.com>
 
        (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,
+       (.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)
 
 2011-05-22  Chong Yidong  <cyd@stupidchicken.com>
 
-       * mule.texi (Specify Coding, Text Coding, Communication Coding):
+       * mule.texi (Specify Coding, Text Coding, Communication Coding)
        (File Name Coding, Terminal Coding): Add command names (Bug#8312).
 
 2011-05-18  Glenn Morris  <rgm@gnu.org>
index 27a8ba9438e90f509e8159e8fa07511472dcce70..c0a93c9396db4b52aab25e41a261b9bf739fe2e2 100644 (file)
@@ -40,14 +40,20 @@ forward, so that point remains just after the inserted text.
 @xref{Point}.
 
 @kindex RET
+@kindex C-j
 @cindex newline
+@findex electric-indent-just-newline
   To end a line and start a new one, type @key{RET} (@code{newline}).
 (The @key{RET} key may be labeled @key{Return} or @key{Enter} on your
 keyboard, but we refer to it as @key{RET} in this manual.)  This
-command inserts a newline character into the buffer.  If point is at
-the end of the line, the effect is to create a new blank line after
-it; if point is in the middle of a line, the line is split at that
-position.
+command inserts a newline character into the buffer, then indents
+(@pxref{Indentation}) according to the major mode.  If point is at the end
+of the line, the effect is to create a new blank line after it and
+indent the new line; if point is in the middle of a line, the line is
+split at that position.  To turn off the auto-indentation, you can
+either disable Electric Indent mode (@pxref{Indent Convenience}) or
+type @kbd{C-j}, which inserts just a newline, without any
+auto-indentation.
 
   As we explain later in this manual, you can change the way Emacs
 handles text insertion by turning on @dfn{minor modes}.  For instance,
index 613d4e1836dbbcd017f4f660b22332cdf34da8e7..06e41a57681fbd2250b919278538cbbe7bd106eb 100644 (file)
@@ -495,9 +495,12 @@ compatibility @file{C:/} will be used instead if a @file{.emacs} file
 is found there.
 @item HOSTNAME
 The name of the machine that Emacs is running on.
+@c complete.el is obsolete since 24.1.
+@ignore
 @item INCPATH
 A colon-separated list of directories.  Used by the @code{complete} package
 to search for files.
+@end ignore
 @item INFOPATH
 A colon-separated list of directories in which to search for Info files.
 @item LC_ALL
index 781d58f193de3d9642a9e05003b16e1c04af55f3..bb02f1e7c9f9c70b8de58c62c7d261e34fc33574 100644 (file)
@@ -573,7 +573,7 @@ directory specified by the variable @code{custom-theme-directory}
 which are distributed with Emacs, which customize Emacs's faces to fit
 various color schemes.  (Note, however, that Custom themes need not be
 restricted to this purpose; they can be used to customize variables
-too).
+too.)
 
 @vindex custom-theme-load-path
   If you want Emacs to look for Custom themes in some other directory,
@@ -2474,8 +2474,8 @@ variable @code{term-file-prefix} and the terminal type.  Your @file{.emacs}
 file can prevent the loading of the terminal-specific library by setting
 @code{term-file-prefix} to @code{nil}.
 
-@vindex term-setup-hook
-  Emacs runs the hook @code{term-setup-hook} at the end of
+@vindex tty-setup-hook
+  Emacs runs the hook @code{tty-setup-hook} at the end of
 initialization, after both your @file{.emacs} file and any
 terminal-specific library have been read in.  Add hook functions to this
 hook if you wish to override part of any of the terminal-specific
index ee612643feab4b4561fb0e97806d2df6285efd6a..40a32b5da53a75b1a2623bad5b880c0b360f9e4d 100644 (file)
@@ -670,6 +670,7 @@ Editing Programs
 * Symbol Completion::   Completion on symbol names of your program or language.
 * MixedCase Words::     Dealing with identifiersLikeThis.
 * Semantic::            Suite of editing tools based on source code parsing.
+* Prettifying Symbols:: Display symbols as composed characters.
 * Misc for Programs::   Other Emacs features useful for editing programs.
 * C Modes::             Special commands of C, C++, Objective-C,
                           Java, IDL, Pike and AWK modes.
index 9aec6202de633543bd341e8cc1f147e8d943898c..4b44b9289b5093cba42027bbd74e4c015100c267 100644 (file)
@@ -64,11 +64,6 @@ Emacs provides a variety of commands to perform indentation in other
 ways.
 
 @table @kbd
-@item C-j
-@kindex C-j
-@findex newline-and-indent
-Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
-
 @item C-M-o
 @kindex C-M-o
 @findex split-line
@@ -256,4 +251,5 @@ indentation; otherwise, it inserts a tab character.
   Electric Indent mode is a global minor mode that automatically
 indents the line after every @key{RET} you type.  This mode is enabled
 by default.  To toggle this minor mode, type @kbd{M-x
-electric-indent-mode}.
+electric-indent-mode}.  To toggle the mode in a single buffer,
+use @kbd{M-x electric-indent-local-mode}.
index 1826c668aa5f7bab391fe9384ec5510aca3e9fa0..48d7f93396b2e0c0adfa940910dbf1131d8a0a2b 100644 (file)
@@ -839,6 +839,13 @@ rectangle shifts right.
 @code{string-rectangle}, but inserts the string on each line,
 shifting the original text to the right.
 
+@findex rectangle-mark-mode
+@cindex rectangular region
+  The command @kbd{C-x SPC} (@code{rectangle-mark-mode}) makes a
+@dfn{rectangular region}.  It is a new feature introduced in GNU Emacs
+24.4, and most commands now are still unaware of it, but kill and yank
+(@pxref{Killing}) do work on the rectangle.
+
 @node CUA Bindings
 @section CUA Bindings
 @findex cua-mode
index 7c3a9a43811b5b7483afe0bd724bdb90a70d6844..2f7ea3b4e9b955ee6eeac8b4e6ca22359d9e20bd 100644 (file)
@@ -43,6 +43,9 @@ Ordinarily, only the selected window highlights its region; however,
 if the variable @code{highlight-nonselected-windows} is
 non-@code{nil}, each window highlights its own region.
 
+  There is another kind of region: the ``rectangular region''.
+@xref{Rectangles}.
+
 @menu
 * Setting Mark::            Commands to set the mark.
 * Marking Objects::         Commands to put region around textual units.
index d9bfcca3ca337dd1a52792bf638124b7d9c6e011..d444b6f8195853ff5a6342cd6077f40fdd3fe92e 100644 (file)
@@ -2132,10 +2132,15 @@ hexl-@key{RET}} for details.
 @cindex reload files
 @cindex desktop
 
+@vindex desktop-restore-frames
    Use the desktop library to save the state of Emacs from one session
 to another.  Once you save the Emacs @dfn{desktop}---the buffers,
 their file names, major modes, buffer positions, and so on---then
-subsequent Emacs sessions reload the saved desktop.
+subsequent Emacs sessions reload the saved desktop.  By default,
+the desktop also tries to save the frame and window configuration.
+To disable this, set @code{desktop-restore-frames} to @code{nil}.
+(See that variable's documentation for some related options
+that you can customize to fine-tune this behavior.)
 
 @findex desktop-save
 @vindex desktop-save-mode
index 1600f19499c57cbadb10620a07c08e315e474712..217d0af8fc4562b89c0315587fb4671a02a2380e 100644 (file)
@@ -9,37 +9,29 @@
 @cindex multibyte characters
 @cindex encoding of characters
 
-@cindex Celtic
+@cindex Arabic
+@cindex Bengali
 @cindex Chinese
 @cindex Cyrillic
-@cindex Czech
-@cindex Devanagari
+@cindex Han
 @cindex Hindi
-@cindex Marathi
 @cindex Ethiopic
-@cindex German
+@cindex Georgian
 @cindex Greek
+@cindex Hangul
 @cindex Hebrew
+@cindex Hindi
 @cindex IPA
 @cindex Japanese
 @cindex Korean
-@cindex Lao
 @cindex Latin
-@cindex Polish
-@cindex Romanian
-@cindex Slovak
-@cindex Slovenian
 @cindex Thai
-@cindex Tibetan
-@cindex Turkish
 @cindex Vietnamese
-@cindex Dutch
-@cindex Spanish
   Emacs supports a wide variety of international character sets,
 including European and Vietnamese variants of the Latin alphabet, as
-well as Cyrillic, Devanagari (for Hindi and Marathi), Ethiopic, Greek,
-Han (for Chinese and Japanese), Hangul (for Korean), Hebrew, IPA,
-Kannada, Lao, Malayalam, Tamil, Thai, Tibetan, and Vietnamese scripts.
+well as Arabic scripts, Brahmic scripts (for languages such as
+Bengali, Hindi, and Thai), Cyrillic, Ethiopic, Georgian, Greek, Han
+(for Chinese and Japanese), Hangul (for Korean), Hebrew and IPA@.
 Emacs also supports various encodings of these characters that are used by
 other internationalized software, such as word processors and mailers.
 
@@ -196,16 +188,16 @@ within that character set; @acronym{ASCII} characters are identified
 as belonging to the @code{ascii} character set.
 
 @item
-The character's syntax and categories.
-
-@item
-The character's encodings, both internally in the buffer, and externally
-if you were to save the file.
+The character's script, syntax and categories.
 
 @item
 What keys to type to input the character in the current input method
 (if it supports the character).
 
+@item
+The character's encodings, both internally in the buffer, and externally
+if you were to save the file.
+
 @item
 If you are running Emacs on a graphical display, the font name and
 glyph code for the character.  If you are running Emacs on a text
@@ -218,28 +210,29 @@ faces used to display the character, and any overlays containing it
 (@pxref{Overlays,,, elisp, the same manual}).
 @end itemize
 
-  Here's an example showing the Latin-1 character A with grave accent,
-in a buffer whose coding system is @code{utf-8-unix}:
+  Here's an example, with some lines folded to fit into this manual:
 
 @smallexample
              position: 1 of 1 (0%), column: 0
-            character: @`A (displayed as @`A) (codepoint 192, #o300, #xc0)
+            character: @^e (displayed as @^e) (codepoint 234, #o352, #xea)
     preferred charset: unicode (Unicode (ISO10646))
-code point in charset: 0xC0
-               syntax: w       which means: word
-             category: .:Base, L:Left-to-right (strong),
+code point in charset: 0xEA
+               script: latin
+               syntax: w        which means: word
+             category: .:Base, L:Left-to-right (strong), c:Chinese,
                        j:Japanese, l:Latin, v:Viet
-          buffer code: #xC3 #x80
-            file code: not encodable by coding system undecided-unix
+             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
+          buffer code: #xC3 #xAA
+            file code: #xC3 #xAA (encoded by coding system utf-8-unix)
               display: by this font (glyph code)
     xft:-unknown-DejaVu Sans Mono-normal-normal-
-        normal-*-13-*-*-*-m-0-iso10646-1 (#x82)
+        normal-*-15-*-*-*-m-0-iso10646-1 (#xAC)
 
 Character code properties: customize what to show
-  name: LATIN CAPITAL LETTER A WITH GRAVE
-  old-name: LATIN CAPITAL LETTER A GRAVE
-  general-category: Lu (Letter, Uppercase)
-  decomposition: (65 768) ('A' '`')
+  name: LATIN SMALL LETTER E WITH CIRCUMFLEX
+  old-name: LATIN SMALL LETTER E CIRCUMFLEX
+  general-category: Ll (Letter, Lowercase)
+  decomposition: (101 770) ('e' '^')
 @end smallexample
 
 @node Language Environments
@@ -266,25 +259,129 @@ language environment also specifies a default input method.
 @code{current-language-environment} or use the command @kbd{M-x
 set-language-environment}.  It makes no difference which buffer is
 current when you use this command, because the effects apply globally
-to the Emacs session.  The supported language environments
-(see the variable @code{language-info-alist}) include:
+to the Emacs session.  See the variable @code{language-info-alist} for
+the list of supported language environments, and use the command
+@kbd{C-h L @var{lang-env} @key{RET}} (@code{describe-language-environment})
+for more information about the language environment @var{lang-env}.
+Supported language environments include:
 
-@cindex Euro sign
-@cindex UTF-8
 @quotation
-ASCII, Belarusian, Bengali, Brazilian Portuguese, Bulgarian, Cham,
-Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB, Chinese-GBK,
-Chinese-GB18030, Croatian, Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8,
-Czech, Devanagari, Dutch, English, Esperanto, Ethiopic, French,
-Georgian, German, Greek, Gujarati, Hebrew, IPA, Italian, Japanese,
-Kannada, Khmer, Korean, Lao, Latin-1, Latin-2, Latin-3, Latin-4,
-Latin-5, Latin-6, Latin-7, Latin-8 (Celtic), Latin-9 (updated Latin-1
-with the Euro sign), Latvian, Lithuanian, Malayalam, Oriya, Polish,
-Punjabi, Romanian, Russian, Sinhala, Slovak, Slovenian, Spanish,
-Swedish, TaiViet, Tajik, Tamil, Telugu, Thai, Tibetan, Turkish, UTF-8
-(for a setup which prefers Unicode characters and files encoded in
-UTF-8), Ukrainian, Vietnamese, Welsh, and Windows-1255 (for a setup
-which prefers Cyrillic characters and files encoded in Windows-1255).
+@cindex ASCII
+ASCII,
+@cindex Arabic
+Arabic,
+@cindex Belarusian
+Belarusian,
+@cindex Bengali
+Bengali,
+@cindex Brazilian Portuguese
+Brazilian Portuguese,
+@cindex Bulgarian
+Bulgarian,
+@cindex Burmese
+Burmese,
+@cindex Cham
+Cham,
+@cindex Chinese
+Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB,
+Chinese-GB18030, Chinese-GBK,
+@cindex Croatian
+Croatian,
+@cindex Cyrillic
+Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8,
+@cindex Czech
+Czech,
+@cindex Devanagari
+Devanagari,
+@cindex Dutch
+Dutch,
+@cindex English
+English,
+@cindex Esperanto
+Esperanto,
+@cindex Ethiopic
+Ethiopic,
+@cindex French
+French,
+@cindex Georgian
+Georgian,
+@cindex German
+German,
+@cindex Greek
+Greek,
+@cindex Gujarati
+Gujarati,
+@cindex Hebrew
+Hebrew,
+@cindex IPA
+IPA,
+@cindex Italian
+Italian,
+@cindex Japanese
+Japanese,
+@cindex Kannada
+Kannada,
+@cindex Khmer
+Khmer,
+@cindex Korean
+Korean,
+@cindex Lao
+Lao,
+@cindex Latin
+Latin-1, Latin-2, Latin-3, Latin-4, Latin-5, Latin-6, Latin-7,
+Latin-8, Latin-9,
+@cindex Latvian
+Latvian,
+@cindex Lithuanian
+Lithuanian,
+@cindex Malayalam
+Malayalam,
+@cindex Oriya
+Oriya,
+@cindex Persian
+Persian,
+@cindex Polish
+Polish,
+@cindex Punjabi
+Punjabi,
+@cindex Romanian
+Romanian,
+@cindex Russian
+Russian,
+@cindex Sinhala
+Sinhala,
+@cindex Slovak
+Slovak,
+@cindex Slovenian
+Slovenian,
+@cindex Spanish
+Spanish,
+@cindex Swedish
+Swedish,
+@cindex TaiViet
+TaiViet,
+@cindex Tajik
+Tajik,
+@cindex Tamil
+Tamil,
+@cindex Telugu
+Telugu,
+@cindex Thai
+Thai,
+@cindex Tibetan
+Tibetan,
+@cindex Turkish
+Turkish,
+@cindex UTF-8
+UTF-8,
+@cindex Ukrainian
+Ukrainian,
+@cindex Vietnamese
+Vietnamese,
+@cindex Welsh
+Welsh, and
+@cindex Windows-1255
+Windows-1255.
 @end quotation
 
   To display the script(s) used by your language environment on a
index 26e9539d750b698986c05552aa1b6c55827f04e4..55031e673dce88e91198457bdc5508a86af3741c 100644 (file)
@@ -38,6 +38,7 @@ Highlight program syntax (@pxref{Font Lock}).
 * Symbol Completion::   Completion on symbol names of your program or language.
 * MixedCase Words::     Dealing with identifiersLikeThis.
 * Semantic::            Suite of editing tools based on source code parsing.
+* Prettifying Symbols:: Display symbols as composed characters.
 * Misc for Programs::   Other Emacs features useful for editing programs.
 * C Modes::             Special commands of C, C++, Objective-C, Java,
                           IDL, Pike and AWK modes.
@@ -366,9 +367,9 @@ which reformats Lisp objects with nice-looking indentation.
 @table @kbd
 @item @key{TAB}
 Adjust indentation of current line (@code{indent-for-tab-command}).
-@item C-j
+@item @key{RET}
 Insert a newline, then adjust indentation of following line
-(@code{newline-and-indent}).
+(@code{newline}).
 @end table
 
 @kindex TAB @r{(programming modes)}
@@ -382,12 +383,9 @@ the current line, based on the indentation and syntactic content of
 the preceding lines; if the region is active, @key{TAB} indents each
 line within the region, not just the current line.
 
-@kindex C-j @r{(indenting source code)}
-@findex newline-and-indent
-  The command @kbd{C-j} (@code{newline-and-indent}), which was
-documented in @ref{Indentation Commands}, does the same as @key{RET}
-followed by @key{TAB}: it inserts a new line, then adjusts the line's
-indentation.
+  The command @key{RET} (@code{newline}), which was documented in
+@ref{Inserting Text}, does the same as @key{C-j} followed by
+@key{TAB}: it inserts a new line, then adjusts the line's indentation.
 
   When indenting a line that starts within a parenthetical grouping,
 Emacs usually places the start of the line under the preceding line
@@ -800,12 +798,12 @@ make it easy to see how and whether parentheses (or other delimiters)
 match up.
 
   Whenever you type a self-inserting character that is a closing
-delimiter, the cursor moves momentarily to the location of the
-matching opening delimiter, provided that is on the screen.  If it is
-not on the screen, Emacs displays some of the text near it in the echo
-area.  Either way, you can tell which grouping you are closing off.
-If the opening delimiter and closing delimiter are mismatched---such
-as in @samp{[x)}---a warning message is displayed in the echo area.
+delimiter, Emacs briefly indicates the location of the matching
+opening delimiter, provided that is on the screen.  If it is not on
+the screen, Emacs displays some of the text near it in the echo area.
+Either way, you can tell which grouping you are closing off.  If the
+opening delimiter and closing delimiter are mismatched---such as in
+@samp{[x)}---a warning message is displayed in the echo area.
 
 @vindex blink-matching-paren
 @vindex blink-matching-paren-distance
@@ -815,13 +813,14 @@ as in @samp{[x)}---a warning message is displayed in the echo area.
 @itemize @bullet
 @item
 @code{blink-matching-paren} turns the feature on or off: @code{nil}
-disables it, but the default is @code{t} to enable it.
+disables it, but the default is @code{t} to enable it.  Set it to
+@code{jump} to make indication work by momentarily moving the cursor
+to the matching opening delimiter.
 
 @item
-@code{blink-matching-delay} says how many seconds to leave the cursor
-on the matching opening delimiter, before bringing it back to the real
-location of point.  This may be an integer or floating-point number;
-the default is 1.
+@code{blink-matching-delay} says how many seconds to keep indicating
+the matching opening delimiter.  This may be an integer or
+floating-point number; the default is 1.
 
 @item
 @code{blink-matching-paren-distance} specifies how many characters
@@ -1435,6 +1434,37 @@ is idle.
 @xref{Top, Semantic,, semantic, Semantic}, for details.
 @end ifnottex
 
+@node Prettifying Symbols
+@section Prettifying Symbols
+@cindex prettifying symbols
+@cindex symbol, prettifying
+
+@code{prettify-symbols-mode} and @code{global-prettify-symbols-mode}
+are two minor modes (@pxref{Minor Modes}) that can display specified
+symbols as composed characters.  For instance, in Emacs Lisp mode
+(@pxref{Lisp Eval}), this mode will replace the string ``lambda'' with
+the Greek lambda character.
+
+@findex prettify-symbols-mode
+@vindex prettify-symbols-alist
+When Prettify Symbols mode and Font Lock mode (@pxref{Font Lock}) are
+enabled, symbols are prettified (displayed as composed characters)
+according to the rules in @code{prettify-symbols-alist}, which are
+locally defined by major modes (@pxref{Major Modes}) supporting
+prettifying.  To add further customizations for a given major mode,
+you can modify @code{prettify-symbols-alist}.  For example:
+
+@example
+(add-hook 'emacs-lisp-mode-hook
+         (lambda ()
+           (push '("<=" . ?≤) prettify-symbols-alist)))
+@end example
+
+@findex global-prettify-symbols-mode
+You can enable this mode locally in desired buffers, or use
+@code{global-prettify-symbols-mode} to enable it for all modes that
+support it.
+
 @node Misc for Programs
 @section Other Features Useful for Editing Programs
 
@@ -1681,18 +1711,18 @@ hungry-delete feature is enabled.
 @findex c-context-line-break
 This command inserts a line break and indents the new line in a manner
 appropriate to the context.  In normal code, it does the work of
-@kbd{C-j} (@code{newline-and-indent}), in a C preprocessor line it
-additionally inserts a @samp{\} at the line break, and within comments
-it's like @kbd{M-j} (@code{c-indent-new-comment-line}).
+@key{RET} (@code{newline}), in a C preprocessor line it additionally
+inserts a @samp{\} at the line break, and within comments it's like
+@kbd{M-j} (@code{c-indent-new-comment-line}).
 
 @code{c-context-line-break} isn't bound to a key by default, but it
 needs a binding to be useful.  The following code will bind it to
-@kbd{C-j}.  We use @code{c-initialization-hook} here to make sure
+@kbd{RET}.  We use @code{c-initialization-hook} here to make sure
 the keymap is loaded before we try to change it.
 
 @example
 (defun my-bind-clb ()
-  (define-key c-mode-base-map "\C-j"
+  (define-key c-mode-base-map "\C-m"
               'c-context-line-break))
 (add-hook 'c-initialization-hook 'my-bind-clb)
 @end example
@@ -1812,6 +1842,7 @@ defines these commands:
 @table @kbd
 @item @key{TAB}
 @code{tab-to-tab-stop}.
+@c FIXME: Maybe this should be consistent with other programming modes.
 @item C-j
 Insert a newline and then indent using @code{tab-to-tab-stop}.
 @item :
index 6fa9a33692a202195e9b624d233521d2379baeef..99a053138900ae2916521394dde0f50fb810acd3 100644 (file)
@@ -1393,6 +1393,10 @@ line.
 used the minibuffer to read its arguments.  @xref{Repetition, C-x ESC
 ESC}.
 
+@cindex invisible text, and query-replace
+  The option @code{search-invisible} determines how @code{query-replace}
+treats invisible text.  @xref{Outline Search}.
+
   @xref{Operating on Files}, for the Dired @kbd{Q} command which
 performs query replace on selected files.  See also @ref{Transforming
 File Names}, for Dired commands to rename, copy, or link files by
index 68523888f6da055f1acc9666c2a708c26cf527bb..9eb8f4678834b466b4f4cd69e8e5359dcbf25711 100644 (file)
@@ -1132,9 +1132,10 @@ it makes that part of the buffer visible.  If you exit the search at
 that position, the text remains visible.  To toggle whether or not
 an active incremental search can match hidden text, type @kbd{M-s i}.
 To change the default for future searches, customize the option
-@code{search-invisible}.  You can also automatically make text visible
-as you navigate in it by using Reveal mode (@kbd{M-x reveal-mode}), a
-buffer-local minor mode.
+@code{search-invisible}.  (This option also affects how @code{query-replace}
+and related functions treat hidden text, @pxref{Query Replace}.)
+You can also automatically make text visible as you navigate in it by
+using Reveal mode (@kbd{M-x reveal-mode}), a buffer-local minor mode.
 
 @node Outline Views
 @subsection Viewing One Outline in Multiple Views
index 6646637c642ed88060d1f25d5a4e261d902acc32..6ca9eb4c93f147b6d8852914b4b490402823bd9d 100644 (file)
@@ -1,3 +1,7 @@
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp-intro.texi (X11 Colors): Don't use setq with hooks.
+
 2014-02-06  Glenn Morris  <rgm@gnu.org>
 
        * emacs-lisp-intro.texi (Recursive Patterns):
index 74ea8e26e63467ca72fb424ff4dfd450a7a8fd4c..f181569ca75074aa39ac1db29bb728203db1acb7 100644 (file)
@@ -17755,7 +17755,7 @@ file that set values:
 
 @group
 ;; Set calendar highlighting colors
-(setq calendar-load-hook
+(add-hook 'calendar-load-hook
       (lambda ()
         (set-face-foreground 'diary-face   "skyblue")
         (set-face-background 'holiday-face "slate blue")
index fe00e5a7b5303e8d3c8ba2e1774aa0a79d94580f..6e89c0d489bfcc5fb47558fcd855562392661cd7 100644 (file)
@@ -1,7 +1,160 @@
+2014-03-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * display.texi (Temporary Displays): Rewrite descriptions of
+       `with-output-to-temp-buffer' and `with-temp-buffer-window'.
+       * help.texi (Help Functions): Rewrite description of
+       `with-help-window'.
+
+2014-03-15  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * display.texi (Blinking): Update WRT to the new
+       `blink-matchin-paren' behavior.
+
+2014-03-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * display.texi (Temporary Displays): Say that
+       `with-temp-buffer-window' makes its buffer current.
+       * frames.texi (Size and Position): Describe new option
+       `frame-resize-pixelwise'.  Rewrite descriptions of
+       `set-frame-size', `set-frame-height' and `set-frame-width'.
+
+2014-03-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * elisp.texi (Top): Rename section "Width" to "Size of Displayed
+       Text".
+       * text.texi (Primitive Indent):
+       * strings.texi (String Basics):
+       * sequences.texi (Sequence Functions): Update references
+       accordingly.
+       * display.texi (Size of Displayed Text): Rename section from
+       "Width".  Add description for `window-text-pixel-size'.
+       (Window Dividers): Reword description of window dividers.
+       * frames.texi (Layout Parameters): Improve description of window
+       divider parameters.
+       * windows.texi (Window Sizes): Add descriptions of
+       `window-mode-line-height' and `window-header-line-height'.
+       (Coordinates and Windows): Mention window dividers.
+
+2014-03-07  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffers.texi (The Buffer List): Rename node to Buffer List.
+       Describe `buffer-list-update-hook'.
+       * elisp.texi (Top): "The Buffer List" renamed to "Buffer List".
+       Add node for Window Dividers.
+       * hooks.texi (Standard Hooks): Add reference to
+       `buffer-list-update-hook'.
+       * windows.texi (Window Sizes): Describe `window-min-size'.
+       (Splitting Windows): Update description of `split-window'.
+       (Selecting Windows): Update description of `select-window'.
+
+2014-03-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * frames.texi (Size and Position): Rewrite entries for
+       `fit-frame-to-buffer' and `fit-frame-to-buffer-margins'.  Add
+       description for `fit-frame-to-buffer-sizes'.
+       * windows.texi (Resizing Windows): Add descriptions for
+       pixelwise resizing.  Add entries for `window-resize-pixelwise'
+       and `fit-window-to-buffer-horizontally'.  Rewrite
+       `fit-window-to-buffer' entry.
+
+2014-03-06  Xue Fuqiao  <xfq@gnu.org>
+
+       * internals.texi (Window Internals): Remove field `region_showing'.
+
+2014-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * searching.texi (Replacing Match):
+       Remove incorrect, uninteresting return value.  (Bug#16942)
+
+2014-03-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * display.texi (Window Dividers): New section.
+       * frames.texi (Layout Parameters): Add right-divider-width and
+       bottom-divider-width.
+       * windows.texi (Window Sizes): Redraw schematic and rewrite its
+       description.  Rewrite descriptions of `window-total-height',
+       `window-total-width', `window-total-size', `window-body-height',
+       `window-body-width' and `window-size-fixed'.  Add descriptions
+       for `window-pixel-height', `window-pixel-width',
+       `window-min-height' and `window-min-width'.  Remove description
+       of `window-size-fixed-p' moving part of it to that of
+       `window-size-fixed'.
+       (Resizing Windows): Mention dividers when talking about minimum
+       sizes.
+
+2014-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * modes.texi (SMIE Customization): New section.
+       * elisp.texi (Top): Update detailed menu.
+
+2014-03-04  Martin Rudalics  <rudalics@gmx.at>
+
+       * windows.texi (Windows and Frames): Add some missing &optional
+       designators.  Adjust description of window-in-direction.
+
+2014-03-02  Barry O'Reilly  <gundaetiapo@gmail.com>
+
+       * markers.texi (Moving Marker Positions): Clarify guidance about
+       when to move markers and when to create a new one, as discussed at
+       http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16818#17
+
+2014-03-02  Glenn Morris  <rgm@gnu.org>
+
+       * text.texi (Decompression): New node.
+       * elisp.texi (Top): Update detailed menu.
+
+2014-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Forcing Redisplay): Mention pre-redisplay-function.
+
+2014-02-28  Xue Fuqiao  <xfq@gnu.org>
+
+       * functions.texi (Advising Functions, Advising Named Functions):
+       Tweak markup.
+
+       * display.texi (Defining Faces): Doc fix for `face-spec-set'.
+
+       * elisp.texi (Top):
+       * commands.texi (Generic Commands, Defining Commands):
+       Document `define-alternatives'.
+
+2014-02-27  Xue Fuqiao  <xfq@gnu.org>
+
+       * windows.texi (Window Sizes): Document `window-size'.
+       (Display Action Functions): Document `display-buffer-at-bottom'.
+       (Window Configurations): Minor fixes.
+
+       * modes.texi (Header Lines): Document `window-header-line-height'.
+
+       * display.texi (Scroll Bars): Document `window-scroll-bar-width'.
+
+       * windows.texi (Window Sizes, Resizing Windows): Document some
+       pixelwise window operations.
+
+       * text.texi (Margins): Fix the description of RET and `C-j'.
+
+       * frames.texi (Multiple Terminals): Document
+       `display-monitor-attributes-list' and `display-monitor-attributes'.
+       (Display Feature Testing): Add some notes about multi-monitor.
+
+2014-02-27  Glenn Morris  <rgm@gnu.org>
+
+       * minibuf.texi (Programmed Completion):
+       Mention completion-table-with-cache.
+
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * display.texi (Window Systems):
+       Replace term-setup-hook with emacs-startup-hook.
+       * hooks.texi (Standard Hooks):
+       Replace term-setup-hook with tty-setup-hook.
+       * os.texi (Startup Summary, Init File, Terminal-Specific):
+       Replace term-setup-hook with tty-setup-hook, and update.
+
 2014-02-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * functions.texi (Declare Form): Document gv-expander, gv-setter, and
-       compiler-macro (bug#16829).
+       compiler-macro (bug#16829, bug#15093).
 
 2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
 
 
 2013-11-17  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * os.texi (Time Parsing):
-       (Processor Run Time, Input Modes, Terminal Output): Minor fixes.
+       * os.texi (Time Parsing, Processor Run Time, Input Modes)
+       (Terminal Output): Minor fixes.
 
 2013-11-14  Glenn Morris  <rgm@gnu.org>
 
 
 2013-10-03  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * syntax.texi (Syntax Flags):
-       (Syntax Table Functions): Add indexes.
+       * syntax.texi (Syntax Flags, Syntax Table Functions): Add indexes.
 
 2013-10-02  Xue Fuqiao  <xfq.free@gmail.com>
 
        (Undo): Doc fix for `buffer-undo-list'.
 
        * positions.texi (Character Motion):
-       * markers.texi (Moving Markers):
-       (Creating Markers): Comment out undefined behavior.
+       * markers.texi (Moving Markers, Creating Markers):
+       Comment out undefined behavior.
 
 2013-08-15  Xue Fuqiao  <xfq.free@gmail.com>
 
 2013-04-21  Xue Fuqiao  <xfq.free@gmail.com>
 
        * internals.texi (Writing Emacs Primitives): Remove unnecessary
-       references to the sources. (Bug#13800)
+       references to the sources.  (Bug#13800)
 
        * searching.texi (Regexp Backslash): Doc fix for backslash
        constructs in regular expressions.
 
 2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Fix permissions bugs with setgid directories etc. (Bug#13125)
+       Fix permissions bugs with setgid directories etc.  (Bug#13125)
        * files.texi (Testing Accessibility): Document GROUP arg
        of file-ownership-preserved-p.
        (File Attributes): Document that 9th element is now
 
 2012-07-06  Richard Stallman  <rms@gnu.org>
 
-       * intro.texi (Evaluation Notation, A Sample Function Description):
+       * intro.texi (Evaluation Notation, A Sample Function Description)
        (A Sample Variable Description): Improve/undo previous changes.
 
 2012-07-05  Glenn Morris  <rgm@gnu.org>
        (Resizing Windows, Deleting Windows, Selecting Windows)
        (Choosing Window Options, Horizontal Scrolling)
        (Cyclic Window Ordering, Window History, Dedicated Windows)
-       (Quitting Windows, Window Configurations, Textual Scrolling):
+       (Quitting Windows, Window Configurations, Textual Scrolling)
        (Coordinates and Windows, Window Configurations)
        (Window Parameters, Window Hooks): Copyedits.
        (Splitting Windows, Deleting Windows):
 
        * processes.texi (Output from Processes, Filter Functions):
        Mention waiting-for-user-input-p.
-       (Sentinels, Query Before Exit, System Processes, Transaction Queues):
+       (Sentinels, Query Before Exit, System Processes, Transaction Queues)
        (Network Servers, Datagrams, Network Processes, Network Options)
        (Network Feature Testing, Serial Ports): Copyedits.
        (Network): Add encrypted network overview paragraph.
 
 2012-04-15  Glenn Morris  <rgm@gnu.org>
 
-       * processes.texi (Processes, Subprocess Creation, Shell Arguments):
+       * processes.texi (Processes, Subprocess Creation, Shell Arguments)
        (Synchronous Processes, Asynchronous Processes, Deleting Processes):
        Copyedits.
        (Subprocess Creation): Discourage modifying exec-path directly.
 
 2012-04-14  Chong Yidong  <cyd@gnu.org>
 
-       * customize.texi (Applying Customizations):
-       (Custom Themes): New nodes.
+       * customize.texi (Applying Customizations, Custom Themes): New nodes.
 
        * display.texi (Defining Faces): Reference custom-set-faces.
 
 
 2012-03-28  Glenn Morris  <rgm@gnu.org>
 
-       * searching.texi (Regular Expressions, Regexp Special):
-       (Regexp Backslash, Regexp Example, Regexp Functions, Regexp Search):
+       * searching.texi (Regular Expressions, Regexp Special)
+       (Regexp Backslash, Regexp Example, Regexp Functions, Regexp Search)
        (Simple Match Data, Saving Match Data, Standard Regexps): Copyedits.
        (Regexp Special): Mention collation.
        Clarify char classes with an example.
        (Pure Storage): Small changes.
        (Memory Usage): Copyedit.
        (Writing Emacs Primitives): Update Fcoordinates_in_window_p and For
-       example definitions. Give examples of things with non-nil
+       example definitions.  Give examples of things with non-nil
        interactive args.  Mention eval_sub.  Remove old info about
        strings and GCPRO.  Mention cus-start.el.
        (Buffer Internals, Window Internals, Process Internals):
        (Syntax Class Table): Use a table.
        (Syntax Properties): Document syntax-propertize-function and
        syntax-propertize-extend-region-functions.
-       (Motion via Parsing): Clarify scan-lists. Fix indentation.
+       (Motion via Parsing): Clarify scan-lists.  Fix indentation.
        (Parser State): Update for the new "c" comment style.
        Fix description of item 7 (comment style).
 
 
 2011-07-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
            Tim Cross  <theophilusx@gmail.com>  (tiny change)
-           Glenn Morris   <rgm@gnu.org>
+           Glenn Morris  <rgm@gnu.org>
 
        * keymaps.texi (Toolkit Differences): New node.  (Bug#8176)
 
        Document wide integers better.
        * files.texi (File Attributes): Document ino_t values better.
        ino_t values no longer map to anything larger than a single cons.
-       * numbers.texi (Integer Basics, Integer Basics, Arithmetic Operations):
+       * numbers.texi (Integer Basics, Integer Basics, Arithmetic Operations)
        (Bitwise Operations):
        * objects.texi (Integer Type): Use a binary notation that is a bit easier
        to read, and that will port better if 62-bits becomes the default.
        * positions.texi (List Motion):
        * hash.texi (Hash Tables, Creating Hash, Defining Hash):
        * numbers.texi (Arithmetic Operations, Math Functions)
-       (Predicates on Numbers, Comparison of Numbers):
-       (Numeric Conversions):
+       (Predicates on Numbers, Comparison of Numbers, Numeric Conversions):
        * locals.texi (Standard Buffer-Local Variables):
        * maps.texi (Standard Keymaps):
        * os.texi (User Identification, System Environment, Recording Input)
index fbb6c4009af5625d1d8148db1735c17e14144acb..1293a03082cd0e0f9bb3f0107b9f606dd87445a2 100644 (file)
@@ -25,7 +25,7 @@ not be displayed in any windows.
 * Modification Time::   Determining whether the visited file was changed
                          "behind Emacs's back".
 * Read Only Buffers::   Modifying text is not allowed in a read-only buffer.
-* The Buffer List::     How to look at all the existing buffers.
+* Buffer List::         How to look at all the existing buffers.
 * Creating Buffers::    Functions that create buffers.
 * Killing Buffers::     Buffers exist until explicitly killed.
 * Indirect Buffers::    An indirect buffer shares text with some other buffer.
@@ -759,7 +759,7 @@ buffer is read-only.  @xref{Using Interactive}, for another way to
 signal an error if the current buffer is read-only.
 @end defun
 
-@node The Buffer List
+@node Buffer List
 @section The Buffer List
 @cindex buffer list
 
@@ -910,6 +910,13 @@ buffer returned by @code{last-buffer} (see above), in the selected
 window.
 @end deffn
 
+@defvar buffer-list-update-hook
+This is a normal hook run whenever the buffer list changes.  Functions
+(implicitly) running this hook are @code{get-buffer-create}
+(@pxref{Creating Buffers}), @code{rename-buffer} (@pxref{Buffer Names}),
+@code{kill-buffer} (@pxref{Killing Buffers}), @code{bury-buffer} (see
+above) and @code{select-window} (@pxref{Selecting Windows}).
+@end defvar
 
 @node Creating Buffers
 @section Creating Buffers
index 1df7a856a5d129fa1a38084f9ea55889dec6dfc7..e4494e7538f6e521da7c212cc195121304d9d1e3 100644 (file)
@@ -134,6 +134,7 @@ from Lisp.
 * Interactive Codes::     The standard letter-codes for reading arguments
                              in various ways.
 * Interactive Examples::  Examples of how to read interactive arguments.
+* Generic Commands::      Select among command alternatives.
 @end menu
 
 @node Using Interactive
@@ -575,6 +576,39 @@ Put them into three windows, selecting the last one."
 @end group
 @end example
 
+@node Generic Commands
+@subsection Select among Command Alternatives
+@cindex generic commands
+@cindex alternatives, defining
+
+The macro @code{define-alternatives} can be used to define
+@dfn{generic commands}.  Generic commands are interactive functions
+whose implementation can be selected among several alternatives, as a
+matter of user preference.
+
+@defmac define-alternatives command &rest customizations
+Define the new command `COMMAND'.
+
+The argument `COMMAND' should be a symbol.
+
+When a user runs @kbd{M-x COMMAND @key{RET}} for the first time, Emacs
+will prompt for which alternative to use and record the selected
+command as a custom variable.
+
+Running @kbd{C-u M-x COMMAND @key{RET}} prompts again for an
+alternative and overwrites the previous choice.
+
+The variable @code{COMMAND-alternatives} contains an alist
+(@pxref{Association Lists}) with alternative implementations of
+`COMMAND'.  @code{define-alternatives} does not have any effect until
+this variable is set.
+
+If @var{customizations} is non-@var{nil}, it should be composed of
+alternating @code{defcustom} keywords and values to add to the
+declaration of @code{COMMAND-alternatives} (typically :group and
+:version).
+@end defmac
+
 @node Interactive Call
 @section Interactive Call
 @cindex interactive call
index c4c2c13d3d28ae0adad93c72ca713f316a97511c..8bd657b5a9b3897c06445f9fa1c97d3c80e1a6c5 100644 (file)
@@ -18,12 +18,13 @@ that Emacs presents to the user.
 * Selective Display::   Hiding part of the buffer text (the old way).
 * Temporary Displays::  Displays that go away automatically.
 * Overlays::            Use overlays to highlight parts of the buffer.
-* Width::               How wide a character or string is on the screen.
+* Size of Displayed Text::  How large displayed text is.
 * Line Height::         Controlling the height of lines.
 * Faces::               A face defines a graphics style for text characters:
                           font, colors, etc.
 * Fringes::             Controlling window fringes.
 * Scroll Bars::         Controlling vertical scroll bars.
+* Window Dividers::     Separating windows visually.
 * Display Property::    Enabling special display features.
 * Images::              Displaying images in Emacs buffers.
 * Buttons::             Adding clickable buttons to Emacs buffers.
@@ -115,6 +116,11 @@ the input is processed.  The default value is 0.1; if the value is
 
 This variable has no effect when @code{redisplay-dont-pause} is
 non-@code{nil} (the default).
+@end defvar
+
+@defvar pre-redisplay-function
+A function run just before redisplay.  It is called with one argument,
+the set of windows to redisplay.
 @end defvar
 
   Although @code{redisplay} tries immediately to redisplay, it does
@@ -1088,29 +1094,29 @@ You can use a display table to substitute other text for the ellipsis
 buffer and then present it to the user for perusal rather than for
 editing.  Many help commands use this feature.
 
-@defmac with-output-to-temp-buffer buffer-name forms@dots{}
-This function executes @var{forms} while arranging to insert any output
-they print into the buffer named @var{buffer-name}, which is first
-created if necessary, and put into Help mode.  Finally, the buffer is
-displayed in some window, but not selected.  (See the similar
-form @code{with-temp-buffer-window} below.)
-
-If the @var{forms} do not change the major mode in the output buffer,
-so that it is still Help mode at the end of their execution, then
-@code{with-output-to-temp-buffer} makes this buffer read-only at the
-end, and also scans it for function and variable names to make them
-into clickable cross-references.  @xref{Docstring hyperlinks, , Tips
-for Documentation Strings}, in particular the item on hyperlinks in
+@defmac with-output-to-temp-buffer buffer-name body@dots{}
+This function executes the forms in @var{body} while arranging to insert
+any output they print into the buffer named @var{buffer-name}, which is
+first created if necessary, and put into Help mode.  (See the similar
+form @code{with-temp-buffer-window} below.)  Finally, the buffer is
+displayed in some window, but that window is not selected.
+
+If the forms in @var{body} do not change the major mode in the output
+buffer, so that it is still Help mode at the end of their execution,
+then @code{with-output-to-temp-buffer} makes this buffer read-only at
+the end, and also scans it for function and variable names to make them
+into clickable cross-references.  @xref{Docstring hyperlinks, , Tips for
+Documentation Strings}, in particular the item on hyperlinks in
 documentation strings, for more details.
 
-The string @var{buffer-name} specifies the temporary buffer, which
-need not already exist.  The argument must be a string, not a buffer.
-The buffer is erased initially (with no questions asked), and it is
-marked as unmodified after @code{with-output-to-temp-buffer} exits.
+The string @var{buffer-name} specifies the temporary buffer, which need
+not already exist.  The argument must be a string, not a buffer.  The
+buffer is erased initially (with no questions asked), and it is marked
+as unmodified after @code{with-output-to-temp-buffer} exits.
 
 @code{with-output-to-temp-buffer} binds @code{standard-output} to the
-temporary buffer, then it evaluates the forms in @var{forms}.  Output
-using the Lisp output functions within @var{forms} goes by default to
+temporary buffer, then it evaluates the forms in @var{body}.  Output
+using the Lisp output functions within @var{body} goes by default to
 that buffer (but screen display and messages in the echo area, although
 they are ``output'' in the general sense of the word, are not affected).
 @xref{Output Functions}.
@@ -1118,7 +1124,7 @@ they are ``output'' in the general sense of the word, are not affected).
 Several hooks are available for customizing the behavior
 of this construct; they are listed below.
 
-The value of the last form in @var{forms} is returned.
+The value of the last form in @var{body} is returned.
 
 @example
 @group
@@ -1168,29 +1174,34 @@ displaying the temporary buffer.  When the hook runs, the temporary buffer
 is current, and the window it was displayed in is selected.
 @end defvar
 
-@defmac with-temp-buffer-window buffer-or-name action quit-function forms@dots{}
-This macro is similar to @code{with-output-to-temp-buffer}.
-Like that construct, it executes @var{forms} while arranging to insert
-any output they print into the buffer named @var{buffer-or-name}.
-Finally, the buffer is displayed in some window, but not selected.
-Unlike @code{with-output-to-temp-buffer}, this does not switch to Help
-mode.
-
-The argument @var{buffer-or-name} specifies the temporary buffer.
-It can be either a buffer, which must already exist, or a string,
-in which case a buffer of that name is created if necessary.
-The buffer is marked as unmodified and read-only when
-@code{with-temp-buffer-window} exits.
+@defmac with-temp-buffer-window buffer-or-name action quit-function body@dots{}
+This macro is similar to @code{with-output-to-temp-buffer}.  Like that
+construct, it executes @var{body} while arranging to insert any output
+it prints into the buffer named @var{buffer-or-name} and displays that
+buffer in some window.  Unlike @code{with-output-to-temp-buffer},
+however, it does not automatically switch that buffer to Help mode.
+
+Like @code{with-output-to-temp-buffer} it neither makes the buffer
+specified by @var{buffer-or-name} current when executing @var{body}.
+@findex with-current-buffer-window
+The otherwise identical macro @code{with-current-buffer-window} can be
+used to execute @var{body} with that buffer current.
+
+The argument @var{buffer-or-name} specifies the temporary buffer.  It
+can be either a buffer, which must already exist, or a string, in which
+case a buffer of that name is created, if necessary.  The buffer is
+marked as unmodified and read-only when @code{with-temp-buffer-window}
+exits.
 
 This macro does not call @code{temp-buffer-show-function}.  Rather, it
 passes the @var{action} argument to @code{display-buffer} in order to
 display the buffer.
 
-The value of the last form in @var{forms} is returned, unless the
-argument @var{quit-function} is specified.  In that case,
-it is called with two arguments: the window showing the buffer
-and the result of @var{forms}.  The final return value is then
-whatever @var{quit-function} returns.
+The value of the last form in @var{body} is returned, unless the
+argument @var{quit-function} is specified.  In that case, it is called
+with two arguments: the window showing the buffer and the result of
+@var{body}.  The final return value is then whatever
+@var{quit-function} returns.
 
 @vindex temp-buffer-window-setup-hook
 @vindex temp-buffer-window-show-hook
@@ -1759,8 +1770,8 @@ changes.
     (point)))
 @end smallexample
 
-@node Width
-@section Width
+@node Size of Displayed Text
+@section Size of Displayed Text
 
 Since not all characters have the same width, these functions let you
 check the width of a character.  @xref{Primitive Indent}, and
@@ -1817,6 +1828,54 @@ to or less than the display width of @var{ellipsis}.  If
 @end example
 @end defun
 
+The following function returns the size in pixels of text as if it were
+displayed in a given window.  This function is used by
+@code{fit-window-to-buffer} (@pxref{Resizing Windows}) and
+@code{fit-frame-to-buffer} (@pxref{Size and Position}) to make a window
+exactly as large as the text it contains.
+
+@defun window-text-pixel-size &optional window from to x-limit y-limit mode-and-header-line
+This function returns the size of the text of @var{window}'s buffer in
+pixels.  @var{window} must be a live window and defaults to the selected
+one.  The return value is a cons of the maximum pixel-width of any text
+line and the maximum pixel-height of all text lines.
+
+The optional argument @var{from}, if non-@code{nil}, specifies the first
+text position to consider and defaults to the minimum accessible
+position of the buffer.  If @var{from} is @code{t}, it uses the minimum
+accessible position that is not a newline character.  The optional
+argument @var{to}, if non-@code{nil}, specifies the last text position
+to consider and defaults to the maximum accessible position of the
+buffer.  If @var{to} is @code{t}, it uses the maximum accessible
+position that is not a newline character.
+
+The optional argument @var{x-limit}, if non-@code{nil}, specifies the
+maximum pixel-width that can be returned.  @var{x-limit} @code{nil} or
+omitted, means to use the pixel-width of @var{window}'s body
+(@pxref{Window Sizes}); this is useful when the caller does not intend
+to change the width of @var{window}.  Otherwise, the caller should
+specify here the maximum width @var{window}'s body may assume.  Text
+whose x-coordinate is beyond @var{x-limit} is ignored.  Since
+calculating the width of long lines can take some time, it's always a
+good idea to make this argument as small as needed; in particular, if
+the buffer might contain long lines that will be truncated anyway.
+
+The optional argument @var{y-limit}, if non-@code{nil}, specifies the
+maximum pixel-height that can be returned.  Text lines whose
+y-coordinate is beyond @var{y-limit} are ignored.  Since calculating the
+pixel-height of a large buffer can take some time, it makes sense to
+specify this argument; in particular, if the caller does not know the
+size of the buffer.
+
+The optional argument @var{mode-and-header-line} @code{nil} or omitted
+means to not include the height of the mode- or header-line of
+@var{window} in the return value.  If it is either the symbol
+@code{mode-line} or @code{header-line}, include only the height of that
+line, if present, in the return value.  If it is @code{t}, include the
+height of both, if present, in the return value.
+@end defun
+
+
 @node Line Height
 @section Line Height
 @cindex line height
@@ -2359,16 +2418,20 @@ This function applies @var{spec} as a face spec for @code{face}.
 @var{spec} should be a face spec, as described in the above
 documentation for @code{defface}.
 
+This function also defines @var{face} as a valid face name if it is
+not already one, and (re)calculates its attributes on existing frames.
+
 @cindex override spec @r{(for a face)}
 The argument @var{spec-type} determines which spec to set.  If it is
 @code{nil} or @code{face-override-spec}, this function sets the
 @dfn{override spec}, which overrides over all other face specs on
-@var{face}.  If it is @code{face-defface-spec}, this function sets the
-default face spec (the same one set by @code{defface}).  If it is
-@code{reset}, this function clears out all customization specs and
-override specs from @var{face} (in this case, the value of @var{spec}
-is ignored).  Any other value of @var{spec-type} is reserved for
-internal use.
+@var{face}.  If it is @code{customized-face} or @code{saved-face},
+this function sets the customized spec or the saved custom spec.  If
+it is @code{face-defface-spec}, this function sets the default face
+spec (the same one set by @code{defface}).  If it is @code{reset},
+this function clears out all customization specs and override specs
+from @var{face} (in this case, the value of @var{spec} is ignored).
+Any other value of @var{spec-type} is reserved for internal use.
 @end defun
 
 @node Attribute Functions
@@ -3849,6 +3912,12 @@ bar actually occupies.
 @var{horizontal-type} is not actually meaningful.
 @end defun
 
+@defun window-scroll-bar-width &optional window
+This function returns the width of @var{window}'s vertical scrollbar,
+in pixels.  @var{window} must be a live window.  If @var{window} is
+@code{nil} or omitted, it will be the selected window.
+@end defun
+
 If you don't specify these values for a window with
 @code{set-window-scroll-bars}, the buffer-local variables
 @code{scroll-bar-mode} and @code{scroll-bar-width} in the buffer being
@@ -3881,6 +3950,70 @@ buffer's scroll bars, measured in pixels.  A value of @code{nil} means
 to use the value specified by the frame.
 @end defvar
 
+@node Window Dividers
+@section Window Dividers
+@cindex window dividers
+@cindex right dividers
+@cindex bottom dividers
+
+Window dividers are bars drawn between a frame's windows.  A ``right''
+divider is drawn between a window and any adjacent windows on the right.
+Its width (thickness) is specified by the frame parameter
+@code{right-divider-width}.  A ``bottom'' divider is drawn between a
+window and adjacent windows on the bottom or the echo area.  Its width
+is specified by the frame parameter @code{bottom-divider-width}.  In
+either case, specifying a width of zero means to not draw such dividers.
+@xref{Layout Parameters}.
+
+   Technically, a right divider ``belongs'' to the window on its left,
+which means that its width contributes to the total width of that
+window.  A bottom divider ``belongs'' to the window above it, which
+means that its width contributes to the total height of that window.
+@xref{Window Sizes}.  When a window has both, a right and a bottom
+divider, the bottom divider ``prevails''.  This means that a bottom
+divider is drawn over the full total width of its window while the right
+divider ends above the bottom divider.
+
+   Dividers can be dragged with the mouse and are therefore useful for
+adjusting the sizes of adjacent windows with the mouse.  They also serve
+to visually set apart adjacent windows when no scroll bars or mode lines
+are present.  The following three faces allow to customize the
+appearance of dividers:
+
+@table @code
+@item window-divider
+When a divider is less than three pixels wide, it is drawn solidly with
+the foreground of this face.  For larger dividers this face is used for
+the inner part only, excluding the first and last pixel.
+
+@item window-divider-first-pixel
+This is the face used for drawing the first pixel of a divider that is
+at least three pixels wide.  To obtain a solid appearance, set this to
+the same value used for the @code{window-divider} face.
+
+@item window-divider-last-pixel
+This is the face used for drawing the last pixel of a divider that is at
+least three pixels wide.  To obtain a solid appearance, set this to the
+same value used for the @code{window-divider} face.
+@end table
+
+You can get the sizes of the dividers of a specific window with the
+following two functions.
+
+@defun window-right-divider-width &optional window
+Return the width (thickness) in pixels of @var{window}'s right divider.
+@var{window} must be a live window and defaults to the selected one.
+The return value is always zero for a rightmost window.
+@end defun
+
+@defun window-bottom-divider-width &optional window
+Return the width (thickness) in pixels of @var{window}'s bottom divider.
+@var{window} must be a live window and defaults to the selected one.
+The return value is zero for the minibuffer window or a bottommost
+window on a minibuffer-less frame.
+@end defun
+
+
 @node Display Property
 @section The @code{display} Property
 @cindex display specification
@@ -5830,18 +5963,19 @@ parenthesis before giving up.
 @end defopt
 
 @defopt blink-matching-delay
-This variable specifies the number of seconds for the cursor to remain
-at the matching parenthesis.  A fraction of a second often gives
-good results, but the default is 1, which works on all systems.
+This variable specifies the number of seconds to keep indicating the
+matching parenthesis.  A fraction of a second often gives good
+results, but the default is 1, which works on all systems.
 @end defopt
 
 @deffn Command blink-matching-open
 This function is the default value of @code{blink-paren-function}.  It
-assumes that point follows a character with close parenthesis syntax and
-moves the cursor momentarily to the matching opening character.  If that
-character is not already on the screen, it displays the character's
-context in the echo area.  To avoid long delays, this function does not
-search farther than @code{blink-matching-paren-distance} characters.
+assumes that point follows a character with close parenthesis syntax
+and applies the appropriate effect momentarily to the matching opening
+character.  If that character is not already on the screen, it
+displays the character's context in the echo area.  To avoid long
+delays, this function does not search farther than
+@code{blink-matching-paren-distance} characters.
 
 Here is an example of calling this function explicitly.
 
@@ -6378,7 +6512,7 @@ This variable is a normal hook which Emacs runs after handling the
 initialization files.  Emacs runs this hook after it has completed
 loading your init file, the default initialization file (if
 any), and the terminal-specific Lisp code, and running the hook
-@code{term-setup-hook}.
+@code{emacs-startup-hook}.
 
 This hook is used for internal purposes: setting up communication with
 the window system, and creating the initial window.  Users should not
index b512968ff78a646d9108141e6b344c97723493b7..c0040d748c38c18d98a8b8ad9a257cbe1ebb948b 100644 (file)
@@ -746,6 +746,8 @@ Defining Commands
 * Interactive Codes::       The standard letter-codes for reading arguments
                               in various ways.
 * Interactive Examples::    Examples of how to read interactive arguments.
+* Generic Commands::        Select among command alternatives.
+
 
 Input Events
 
@@ -901,6 +903,7 @@ Simple Minded Indentation Engine
 * SMIE Indentation::        Specifying indentation rules.
 * SMIE Indentation Helpers:: Helper functions for indentation rules.
 * SMIE Indentation Example:: Sample indentation rules.
+* SMIE Customization::      Customizing indentation.
 
 Documentation
 
@@ -989,7 +992,7 @@ Buffers
                               "behind Emacs's back".
 * Read Only Buffers::       Modifying text is not allowed in a
                               read-only buffer.
-* The Buffer List::         How to look at all the existing buffers.
+* Buffer List::             How to look at all the existing buffers.
 * Creating Buffers::        Functions that create buffers.
 * Killing Buffers::         Buffers exist until explicitly killed.
 * Indirect Buffers::        An indirect buffer shares text with some
@@ -1136,6 +1139,7 @@ Text
 * Registers::               How registers are implemented.  Accessing
                               the text or position stored in a register.
 * Transposition::           Swapping two portions of a buffer.
+* Decompression::           Dealing with compressed data.
 * Base 64::                 Conversion to or from base 64 encoding.
 * Checksum/Hash::           Computing cryptographic hashes.
 * Parsing HTML/XML::        Parsing HTML and XML.
@@ -1334,18 +1338,19 @@ Emacs Display
 * Selective Display::       Hiding part of the buffer text (the old way).
 * Temporary Displays::      Displays that go away automatically.
 * Overlays::                Use overlays to highlight parts of the buffer.
-* Width::                   How wide a character or string is on the screen.
+* Size of Displayed Text::  How large displayed text is.
 * Line Height::             Controlling the height of lines.
 * Faces::                   A face defines a graphics style
                               for text characters: font, colors, etc.
 * Fringes::                 Controlling window fringes.
 * Scroll Bars::             Controlling vertical scroll bars.
+* Window Dividers::         Separating windows visually.
 * Display Property::        Enabling special display features.
 * Images::                  Displaying images in Emacs buffers.
 * Buttons::                 Adding clickable buttons to Emacs buffers.
 * Abstract Display::        Emacs's Widget for Object Collections.
 * Blinking::                How Emacs shows the matching open parenthesis.
-* Character Display::   How Emacs displays individual characters.
+* Character Display::       How Emacs displays individual characters.
 * Beeping::                 Audible signal to the user.
 * Window Systems::          Which window system is being used.
 * Bidirectional Display::   Display of bidirectional scripts, such as
@@ -1380,10 +1385,10 @@ Faces
 * Attribute Functions::     Functions to examine and set face attributes.
 * Displaying Faces::        How Emacs combines the faces specified for
                               a character.
-* Face Remapping::         Remapping faces to alternative definitions.
+* Face Remapping::          Remapping faces to alternative definitions.
 * Face Functions::          How to define and examine faces.
 * Auto Faces::              Hook for automatic face assignment.
-* Basic Faces::         Faces that are defined by default.
+* Basic Faces::             Faces that are defined by default.
 * Font Selection::          Finding the best available font for a face.
 * Font Lookup::             Looking up the names of available fonts
                               and information about them.
index d281c6652a0919527c971bfb5317674f5a3caac5..59881afb9037dde8f9d891ca000dd5322e19a58d 100644 (file)
@@ -266,10 +266,6 @@ that X server.  When you use two or more screens belonging to one
 server, Emacs knows by the similarity in their names that they share a
 single keyboard.
 
-  On some ``multi-monitor'' setups, a single X display outputs to more
-than one physical monitor.  Currently, there is no way for Emacs to
-distinguish between the different physical monitors.
-
 @deffn Command make-frame-on-display display &optional parameters
 This function creates and returns a new frame on @var{display}, taking
 the other frame parameters from the alist @var{parameters}.
@@ -316,6 +312,61 @@ you can do this, you must first delete all the frames that were open
 on that display (@pxref{Deleting Frames}).
 @end defun
 
+@cindex multi-monitor
+  On some ``multi-monitor'' setups, a single X display outputs to more
+than one physical monitor.  @code{display-monitor-attributes-list} and
+@code{frame-monitor-attributes} can be used to obtain information
+about each physical monitor on multi-monitor setups.
+
+@defun display-monitor-attributes-list &optional display
+This function returns a list of physical monitor attributes on
+@var{display}.  Each element of the list is an association list,
+representing the attributes of each physical monitor.  The first
+element corresponds to the primary monitor.
+
+Attributes for a physical monitor are:
+
+@table @samp
+@item geometry
+Position and size in pixels in the form of @samp{(X Y WIDTH HEIGHT)}
+
+@item workarea
+Position and size of the workarea in pixels in the form of @samp{(X Y
+WIDTH HEIGHT)}
+
+@item mm-size
+Width and height in millimeters in the form of @samp{(WIDTH HEIGHT)}
+
+@item frames
+List of frames dominated by the physical monitor
+
+@item name
+Name of the physical monitor as a string
+@end table
+
+where X, Y, WIDTH, and HEIGHT are integers.  @samp{name} is optional.
+
+A frame is dominated by a physical monitor when either the
+largest area of the frame resides in the monitor, or the monitor
+is the closest to the frame if the frame does not intersect any
+physical monitors.  Every non-tip frame (including invisible one)
+in a graphical display is dominated by exactly one physical
+monitor at a time, though it can span multiple (or no) physical
+monitors.
+
+@var{display} defaults to the selected frame's display.
+@end defun
+
+@defun frame-monitor-attributes &optional frame
+This function returns the attributes of the physical monitor
+dominating @var{frame}, which defaults to the selected frame.
+
+A frame is dominated by a physical monitor when either the
+largest area of the frame resides in the monitor, or the monitor
+is the closest to the frame if the frame does not intersect any
+physical monitors.
+@end defun
+
 @node Frame Parameters
 @section Frame Parameters
 @cindex frame parameters
@@ -694,6 +745,18 @@ right fringe.  However, you can force one fringe or the other to a
 precise width by specifying that width as a negative integer.  If both
 widths are negative, only the left fringe gets the specified width.
 
+@vindex right-divider-width, a frame parameter
+@item right-divider-width
+The width (thickness) reserved for the right divider (@pxref{Window
+Dividers}) of any window on the frame, in pixels.  A value of zero means
+to not draw right dividers.
+
+@vindex bottom-divider-width, a frame parameter
+@item bottom-divider-width
+The width (thickness) reserved for the bottom divider (@pxref{Window
+Dividers}) of any window on the frame, in pixels.  A value of zero means
+to not draw bottom dividers.
+
 @vindex menu-bar-lines frame parameter
 @item menu-bar-lines
 The number of lines to allocate at the top of the frame for a menu
@@ -1084,21 +1147,46 @@ font.  If you don't supply @var{frame}, these functions use the selected
 frame.
 @end defun
 
-@defun set-frame-size frame cols rows
+@defopt frame-resize-pixelwise
+If this option is @code{nil}, a frame's size is usually rounded to a
+multiple of the current values of that frame's @code{frame-char-height}
+and @code{frame-char-width}.  If this is non-@code{nil}, no rounding
+occurs, hence frame sizes can increase/decrease by one pixel.
+
+Setting this causes the next resize operation to pass the corresponding
+size hints to the window manager.  This means that this variable should
+be set only in a user's initial file; applications should never bind it
+temporarily.
+
+The precise semantics of a value of @code{nil} for this option depends
+on the toolkit used: Dragging the frame border with the mouse is usually
+always done character-wise.  Calling @code{set-frame-size} (see below)
+with arguments that do not specify the frame size as an integer multiple
+of its character size may be, however, either ignored or cause a
+rounding (GTK+, Windows) or get accepted (Lucid, Motif).  This also
+means that with some toolkits and a display whose size is not an
+integral multiple of your default font, you may have to set this to
+non-@code{nil} in order to fully maximize a frame.
+@end defopt
+
+@defun set-frame-size frame width height pixelwise
 This function sets the size of @var{frame}, measured in characters;
-@var{cols} and @var{rows} specify the new width and height.
+@var{width} and @var{height} specify the new width in columns and the
+new height in lines.
 
-To set the size based on values measured in pixels, use
-@code{frame-char-height} and @code{frame-char-width} to convert
-them to units of characters.
+The optional argument @var{pixelwise} non-@code{nil} means to measure
+the new width and height in units of pixels instead.  Note that if
+@code{frame-resize-pixelwise} is @code{nil}, some toolkits may refuse to
+fully honor the request if it does not increase/decrease the frame size
+to a multiple of its character size.
 @end defun
 
-@defun set-frame-height frame lines &optional pretend
-This function resizes @var{frame} to a height of @var{lines} lines.  The
+@defun set-frame-height frame height &optional pretend pixelwise
+This function resizes @var{frame} to a height of @var{height} lines.  The
 sizes of existing windows in @var{frame} are altered proportionally to
 fit.
 
-If @var{pretend} is non-@code{nil}, then Emacs displays @var{lines}
+If @var{pretend} is non-@code{nil}, then Emacs displays @var{height}
 lines of output in @var{frame}, but does not change its value for the
 actual height of the frame.  This is only useful on text terminals.
 Using a smaller height than the terminal actually implements may be
@@ -1107,29 +1195,70 @@ terminal malfunctions when using its whole screen.  Setting the frame
 height ``for real'' does not always work, because knowing the correct
 actual size may be necessary for correct cursor positioning on
 text terminals.
+
+The optional fourth argument @var{pixelwise} non-@code{nil} means that
+@var{frame} should be @var{height} pixels high.  Note that if
+@code{frame-resize-pixelwise} is @code{nil}, some toolkits may refuse to
+fully honor the request if it does not increase/decrease the frame
+height to a multiple of its character height.
 @end defun
 
-@defun set-frame-width frame width &optional pretend
+@defun set-frame-width frame width &optional pretend pixelwise
 This function sets the width of @var{frame}, measured in characters.
 The argument @var{pretend} has the same meaning as in
 @code{set-frame-height}.
+
+The optional fourth argument @var{pixelwise} non-@code{nil} means that
+@var{frame} should be @var{width} pixels wide.  Note that if
+@code{frame-resize-pixelwise} is @code{nil}, some toolkits may refuse to
+fully honor the request if it does not increase/decrease the frame width
+to a multiple of its character width.
 @end defun
 
 @c FIXME?  Belongs more in Emacs manual than here?
 @c But, e.g., fit-window-to-buffer is in this manual.
-@deffn Command fit-frame-to-buffer &optional frame max-height min-height
-This command adjusts the height of @var{frame} (the default is the
-selected frame) to fit its contents.  The optional arguments
-@var{max-height} and @var{min-height} specify the maximum and minimum
-new frame heights, respectively.
-
-@vindex fit-frame-to-buffer-bottom-margin
-The default minimum height corresponds to @code{window-min-height}.
-The default maximum height is the screen height below the current top
-position of the frame, minus any margin specified by the option
-@code{fit-frame-to-buffer-bottom-margin}.
+If you have a frame that displays only one window, you can fit that
+frame to its buffer using the command @code{fit-frame-to-buffer}.
+
+@deffn Command fit-frame-to-buffer &optional frame max-height min-height max-width min-width only
+This command adjusts the size of @var{frame} to display the contents of
+its buffer exactly.  @var{frame} can be any live frame and defaults to
+the selected one.  Fitting is done only if @var{frame}'s root window is
+live.  The arguments @var{max-height}, @var{min-height}, @var{max-width}
+and @var{min-width} specify bounds on the new total size of
+@var{frame}'s root window.  @var{min-height} and @var{min-width} default
+to the values of @code{window-min-height} and @code{window-min-width}
+respectively.
+
+If the optional argument @var{only} is @code{vertically}, this function
+may resize the frame vertically only.  If @var{only} is
+@code{horizontally}, it may resize the frame horizontally only.
 @end deffn
 
+The behavior of @code{fit-frame-to-buffer} can be controlled with the
+help of the two options listed next.
+
+@defopt fit-frame-to-buffer-margins
+This option can be used to specify margins around frames to be fit by
+@code{fit-frame-to-buffer}.  Such margins can be useful to avoid, for
+example, that such frames overlap the taskbar.
+
+It specifies the numbers of pixels to be left free on the left, above,
+the right, and below a frame that shall be fit.  The default specifies
+@code{nil} for each which means to use no margins.  The value specified
+here can be overridden for a specific frame by that frame's
+@code{fit-frame-to-buffer-margins} parameter, if present.
+@end defopt
+
+@defopt fit-frame-to-buffer-sizes
+This option specifies size boundaries for @code{fit-frame-to-buffer}.
+It specifies the total maximum and minimum lines and maximum and minimum
+columns of the root window of any frame that shall be fit to its buffer.
+If any of these values is non-@code{nil}, it overrides the corresponding
+argument of @code{fit-frame-to-buffer}.
+@end defopt
+
+
 @node Geometry
 @subsection Geometry
 
@@ -2375,7 +2504,7 @@ This function returns the height of the screen in pixels.
 On a character terminal, it gives the height in characters.
 
 For graphical terminals, note that on ``multi-monitor'' setups this
-refers to the pixel width for all physical monitors associated with
+refers to the pixel height for all physical monitors associated with
 @var{display}.  @xref{Multiple Terminals}.
 @end defun
 
@@ -2391,11 +2520,19 @@ refers to the pixel width for all physical monitors associated with
 @defun display-mm-height &optional display
 This function returns the height of the screen in millimeters,
 or @code{nil} if Emacs cannot get that information.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the height for all physical monitors associated with
+@var{display}.  @xref{Multiple Terminals}.
 @end defun
 
 @defun display-mm-width &optional display
 This function returns the width of the screen in millimeters,
 or @code{nil} if Emacs cannot get that information.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the width for all physical monitors associated with
+@var{display}.  @xref{Multiple Terminals}.
 @end defun
 
 @defopt display-mm-dimensions-alist
index b38eab2649af823aa4de4034a10f166806f695a4..b85ed6e715c34b32e56602828543ef9e637bfab8 100644 (file)
@@ -1170,9 +1170,9 @@ there are many different ways to do it.  The added function is also called an
 @emph{advice}.
 
 The function cell of a symbol can be manipulated similarly, but since it can
-contain other things than a plain function, you have to use @var{advice-add}
-and @var{advice-remove} instead, which
-@c use @var{add-function} and @var{remove-function} internally, but
+contain other things than a plain function, you have to use @code{advice-add}
+and @code{advice-remove} instead, which
+@c use @code{add-function} and @code{remove-function} internally, but
 know how to handle cases such as when the function cell holds a macro rather
 than function, or when the function is autoloaded so the advice's activation
 needs to be postponed.
@@ -1344,9 +1344,9 @@ and its properties.
 @subsection Advising Named Functions
 
 A common use of advice is for named functions and macros.
-Since @var{add-function} does not know how to deal with macros and autoloaded
-functions, Emacs provides a separate set of functions to manipulate pieces of
-advice applied to named functions.
+Since @code{add-function} does not know how to deal with macros and
+autoloaded functions, Emacs provides a separate set of functions to
+manipulate pieces of advice applied to named functions.
 
   Advice can be useful for altering the behavior of an existing
 function without having to redefine the whole function.  However, it
index 50103d3a8b31c88cce4a502e55c5606f68af01cd..9a763b60938dd25408fa57cb58e9cdd80b9dad39 100644 (file)
@@ -649,14 +649,17 @@ This function returns the name of the help buffer, which is normally
 @file{*Help*}; if such a buffer does not exist, it is first created.
 @end defun
 
+@vindex help-window-select
 @defmac with-help-window buffer-name body@dots{}
-This macro evaluates the @var{body} forms, inserting any output they
-produce into a buffer named @var{buffer-name} like
-@code{with-output-to-temp-buffer} (@pxref{Temporary Displays}).
-(Usually, @var{buffer-name} should be the value returned by the
-function @code{help-buffer}.)  It also puts the specified buffer into
-Help mode and displays a message telling the user how to quit and
-scroll the help window.
+This macro evaluates @var{body} like @code{with-output-to-temp-buffer}
+(@pxref{Temporary Displays}), inserting any output produced by its forms
+into a buffer named @var{buffer-name}.  (Usually, @var{buffer-name}
+should be the value returned by the function @code{help-buffer}.)  It
+also puts the specified buffer into Help mode and displays a message
+telling the user how to quit and scroll the help window.  It selects the
+help window if the current value of the user option
+@code{help-window-select} has been set accordingly.  It returns the last
+value in @var{body}.
 @end defmac
 
 @defun help-setup-xref item interactive-p
index 22061fe99314a98457338f8db3b8b3b27725c28b..79704f3c509ba97966132bc904b0af0e424d63de 100644 (file)
@@ -1,7 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990-1993, 1998, 2001-2014 Free Software Foundation,
-@c Inc.
+@c Copyright (C) 1990-1993, 1998, 2001-2014 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @node Standard Hooks
 @appendix Standard Hooks
@@ -99,7 +98,7 @@ Hook run after a frame's font changes.
 
 @item buffer-list-update-hook
 @vindex buffer-list-update-hook
-Hook run when the buffer list changes.
+Hook run when the buffer list changes (@pxref{Buffer List}).
 
 @item buffer-quit-function
 @vindex buffer-quit-function
@@ -213,7 +212,7 @@ Hook run when about to switch windows with a mouse command.
 @itemx temp-buffer-show-hook
 @xref{Temporary Displays}.
 
-@item term-setup-hook
+@item tty-setup-hook
 @xref{Terminal-Specific}.
 
 @item window-configuration-change-hook
index 94e4b705105aa3d98fdb24c1237968d0f086d746..13bd9de934834364c4d3049e08f98e6fe68f8538 100644 (file)
@@ -1266,6 +1266,8 @@ except to shape their child windows.  Emacs Lisp programs usually have
 no access to the parent windows; they operate on the windows at the
 leaves of the tree, which actually display buffers.
 
+@c FIXME: These two slots and the `buffer' slot below were replaced
+@c with a single slot `contents' on 2013-03-28.  --xfq
 @item hchild
 @itemx vchild
 These fields contain the window's leftmost child and its topmost child
@@ -1437,11 +1439,6 @@ The position in the buffer for which the line number is known, or
 @code{nil} meaning none is known.  If it is a buffer, don't display
 the line number as long as the window shows that buffer.
 
-@item region_showing
-If the region (or part of it) is highlighted in this window, this field
-holds the mark position that made one end of that region.  Otherwise,
-this field is @code{nil}.
-
 @item column_number_displayed
 The column number currently displayed in this window's mode line, or @code{nil}
 if column numbers are not being displayed.
index 51b87ab1e5ba98f191a731b0425202208fdfeb20..19386d638fe8ab162f5c76944b4063d749367af1 100644 (file)
@@ -344,10 +344,12 @@ specify the insertion type, create them with insertion type
 @section Moving Marker Positions
 
   This section describes how to change the position of an existing
-marker.  When you do this, be sure you know whether the marker is used
-outside of your program, and, if so, what effects will result from
-moving it---otherwise, confusing things may happen in other parts of
-Emacs.
+marker.  When you do this, be sure you know how the marker is used
+outside of your program.  For example, moving a marker to an unrelated
+new position can cause undo to later adjust the marker incorrectly.
+Often when you wish to relocate a marker to an unrelated position, it
+is preferable to make a new marker and set the prior one to point
+nowhere.
 
 @defun set-marker marker position &optional buffer
 This function moves @var{marker} to @var{position}
index d618912de8a5dbe66fdac4da9c8232e4e992cef8..fded0dfdd92d9e34fc5315fda3883f0fc73ce0cc 100644 (file)
@@ -1814,6 +1814,13 @@ possible completions of it.  You can think of
 and the interface for programmed completion functions.
 @end defun
 
+@defun completion-table-with-cache function &optional ignore-case
+This is a wrapper for @code{completion-table-dynamic} that saves the
+last argument-result pair.  This means that multiple lookups with the
+same argument only need to call @var{function} once.  This can be useful
+when a slow operation is involved, such as calling an external process.
+@end defun
+
 @node Completion in Buffers
 @subsection Completion in Ordinary Buffers
 @cindex inline completion
index df0dd1a58e008e11a682242ac408561e9c89dffe..30b0f758c270c188278ed38ed77939aab949dc60 100644 (file)
@@ -2221,6 +2221,15 @@ is the same as for @code{mode-line-format} (@pxref{Mode Line Data}).
 It is normally @code{nil}, so that ordinary buffers have no header line.
 @end defvar
 
+The function @code{window-header-line-height} returns the height of
+the header line:
+
+@defun window-header-line-height &optional window
+Return the height of @var{window}'s header line, in pixels.
+@var{window} must be a live window.  If @var{window} is @code{nil} or
+omitted, it will be the selected window.
+@end defun
+
   A window that is just one line tall never displays a header line.  A
 window that is two lines tall cannot display both a mode line and a
 header line at once; if it has a mode line, then it does not display a
@@ -3374,6 +3383,7 @@ resorting to some special tricks (@pxref{SMIE Tricks}).
 * SMIE Indentation::            Specifying indentation rules.
 * SMIE Indentation Helpers::    Helper functions for indentation rules.
 * SMIE Indentation Example::    Sample indentation rules.
+* SMIE Customization::          Customizing indentation.
 @end menu
 
 @node SMIE setup
@@ -3952,6 +3962,52 @@ the previous @code{"else"}, rather than going all the way back to the
 first @code{"if"} of the sequence.
 @end itemize
 
+@c In some sense this belongs more in the Emacs manual.
+@node SMIE Customization
+@subsubsection Customizing Indentation
+
+If you are using a mode whose indentation is provided by SMIE, you can
+customize the indentation to suit your preferences.  You can do this
+on a per-mode basis (using the option @code{smie-config}), or a
+per-file basis (using the function @code{smie-config-local} in a
+file-local variable specification).
+
+@defopt smie-config
+This option lets you customize indentation on a per-mode basis.
+It is an alist with elements of the form @code{(@var{mode} . @var{rules})}.
+For the precise form of rules, see the variable's documentation; but
+you may find it easier to use the command @code{smie-config-guess}.
+@end defopt
+
+@deffn Command smie-config-guess
+This command tries to work out appropriate settings to produce
+your preferred style of indentation.  Simply call the command while
+visiting a file that is indented with your style.
+@end deffn
+
+@deffn Command smie-config-save
+Call this command after using @code{smie-config-guess}, to save your
+settings for future sessions.
+@end deffn
+
+@deffn Command smie-config-show-indent &optional move
+This command displays the rules that are used to indent the current
+line.
+@end deffn
+
+@deffn Command smie-config-set-indent
+This command adds a local rule to adjust the indentation of the current line.
+@end deffn
+
+@defun smie-config-local rules
+This function adds @var{rules} as indentation rules for the current buffer.
+These add to any mode-specific rules defined by the @code{smie-config} option.
+To specify custom indentation rules for a specific file, add an entry
+to the file's local variables of the form:
+@code{eval: (smie-config-local '(@var{rules}))}.
+@end defun
+
+
 @node Desktop Save Mode
 @section Desktop Save Mode
 @cindex desktop save mode
index cff0b2b15c57caf89e50d90ec67a40846f1efc91..dda139b8d74caa90d5519e44c24befdd6d02d049 100644 (file)
@@ -175,8 +175,8 @@ If the buffer @file{*scratch*} exists and is still in Fundamental mode
 
 @item
 If started on a text terminal, it loads the terminal-specific
-Lisp library, which is specified by the variable
-@code{term-file-prefix} (@pxref{Terminal-Specific}).  This is not done
+Lisp library (@pxref{Terminal-Specific}), and runs the hook
+@code{tty-setup-hook}.  This is not done
 in @code{--batch} mode, nor if @code{term-file-prefix} is @code{nil}.
 
 @c Now command-line calls command-line-1.
@@ -210,7 +210,7 @@ empty, it inserts @code{initial-scratch-message} into that buffer.
 @c daemon/session restore step?
 
 @item
-It runs @code{emacs-startup-hook} and then @code{term-setup-hook}.
+It runs @code{emacs-startup-hook}.
 
 @item
 It calls @code{frame-notice-user-settings}, which modifies the
@@ -408,8 +408,7 @@ terminal) and processing the command-line action arguments.
 
 @defvar emacs-startup-hook
 This normal hook is run, once, just after handling the command line
-arguments, just before @code{term-setup-hook}.  In batch mode, Emacs
-does not run either of these hooks.
+arguments.  In batch mode, Emacs does not run this hook.
 @end defvar
 
 @defvar user-init-file
@@ -440,12 +439,12 @@ trying the @samp{.elc} and @samp{.el} suffixes.
   The usual role of a terminal-specific library is to enable special
 keys to send sequences that Emacs can recognize.  It may also need to
 set or add to @code{input-decode-map} if the Termcap or Terminfo entry
-does not specify all the terminal's function keys.  @xref{Terminal
-Input}.
+does not specify all the terminal's function keys.  @xref{Terminal Input}.
 
-  When the name of the terminal type contains a hyphen or underscore, and no library
-is found whose name is identical to the terminal's name, Emacs strips
-from the terminal's name the last hyphen or underscore and everything that follows
+  When the name of the terminal type contains a hyphen or underscore,
+and no library is found whose name is identical to the terminal's
+name, Emacs strips from the terminal's name the last hyphen or
+underscore and everything that follows
 it, and tries again.  This process is repeated until Emacs finds a
 matching library, or until there are no more hyphens or underscores in the name
 (i.e., there is no terminal-specific library).  For example, if the
@@ -454,17 +453,13 @@ terminal name is @samp{xterm-256color} and there is no
 @file{term/xterm.el}.  If necessary, the terminal library can evaluate
 @code{(getenv "TERM")} to find the full name of the terminal type.
 
-  Your init file can prevent the loading of the
-terminal-specific library by setting the variable
-@code{term-file-prefix} to @code{nil}.  This feature is useful when
-experimenting with your own peculiar customizations.
+  Your init file can prevent the loading of the terminal-specific
+library by setting the variable @code{term-file-prefix} to @code{nil}.
 
   You can also arrange to override some of the actions of the
-terminal-specific library by setting the variable
-@code{term-setup-hook}.  This is a normal hook that Emacs runs
-at the end of its initialization, after loading both
-your init file and any terminal-specific libraries.  You could
-use this hook to define initializations for terminals that do not
+terminal-specific library by using @code{tty-setup-hook}.  This is
+a normal hook that Emacs runs after initializing a new text terminal.
+You could use this hook to define initializations for terminals that do not
 have their own libraries.  @xref{Hooks}.
 
 @defvar term-file-prefix
@@ -484,13 +479,13 @@ terminal-initialization file.
 On MS-DOS, Emacs sets the @env{TERM} environment variable to @samp{internal}.
 @end defvar
 
-@defvar term-setup-hook
-This variable is a normal hook that Emacs runs after loading your
-init file, the default initialization file (if any) and the
-terminal-specific Lisp file.
-
-You can use @code{term-setup-hook} to override the definitions made by a
-terminal-specific file.
+@defvar tty-setup-hook
+This variable is a normal hook that Emacs runs after initializing a
+new text terminal.  (This applies when Emacs starts up in non-windowed
+mode, and when making a tty @command{emacsclient} connection.)  The
+hook runs after loading your init file (if applicable) and the
+terminal-specific Lisp file, so you can use it to adjust the
+definitions made by that file.
 
 For a related feature, @pxref{Window Systems, window-setup-hook}.
 @end defvar
index 2f287cc97056d298ae62f4ec7cbe527d32b22396..992ad001fe77602adc13c73920338c73c9a87699 100644 (file)
@@ -1284,7 +1284,7 @@ If you did the last search in a buffer, you should omit the
 the current buffer is the one in which you performed the last search.
 Then this function edits the buffer, replacing the matched text with
 @var{replacement}.  It leaves point at the end of the replacement
-text, and returns @code{t}.
+text.
 
 If you performed the last search on a string, pass the same string as
 @var{string}.  Then this function returns a new string, in which the
index 52a1cf5e32c47844486b9433d4cffa292d2fa585..01de4ccb0cd8cad12eef96114891100963771b07 100644 (file)
@@ -107,9 +107,9 @@ Emacs character code.
 @noindent
 See also @code{string-bytes}, in @ref{Text Representations}.
 
-If you need to compute the width of a string on display, you should
-use @code{string-width} (@pxref{Width}), not @code{length}, since
-@code{length} only counts the number of characters, but does not
+If you need to compute the width of a string on display, you should use
+@code{string-width} (@pxref{Size of Displayed Text}), not @code{length},
+since @code{length} only counts the number of characters, but does not
 account for the display width of each character.
 
 @defun elt sequence index
index 5c814b22b2d74da51cdb4f69962703ef0eae8016..04e11fec6178719b89500da12b4921096acde1b5 100644 (file)
@@ -48,13 +48,13 @@ Vectors}).  Unlike in C, Emacs Lisp strings are @emph{not} terminated
 by a distinguished character code.
 
   Since strings are arrays, and therefore sequences as well, you can
-operate on them with the general array and sequence functions
-documented in @ref{Sequences Arrays Vectors}.  For example, you can
-access or change individual characters in a string using the functions
-@code{aref} and @code{aset} (@pxref{Array Functions}).  However, note
-that @code{length} should @emph{not} be used for computing the width
-of a string on display; use @code{string-width} (@pxref{Width})
-instead.
+operate on them with the general array and sequence functions documented
+in @ref{Sequences Arrays Vectors}.  For example, you can access or
+change individual characters in a string using the functions @code{aref}
+and @code{aset} (@pxref{Array Functions}).  However, note that
+@code{length} should @emph{not} be used for computing the width of a
+string on display; use @code{string-width} (@pxref{Size of Displayed
+Text}) instead.
 
   There are two text representations for non-@acronym{ASCII}
 characters in Emacs strings (and in buffers): unibyte and multibyte.
index 18701465d0f84a7c2e9d0664628824127d559004..d93f937bd8199096a64f9c2fa24af7e5a3ee2384 100644 (file)
@@ -54,6 +54,7 @@ the character after point.
 * Registers::        How registers are implemented.  Accessing the text or
                        position stored in a register.
 * Transposition::    Swapping two portions of a buffer.
+* Decompression::    Dealing with compressed data.
 * Base 64::          Conversion to or from base 64 encoding.
 * Checksum/Hash::    Computing cryptographic hashes.
 * Parsing HTML/XML:: Parsing HTML and XML.
@@ -1717,7 +1718,7 @@ is value of @code{indent-line-function} in Paragraph-Indent Text mode.
 
 @defopt left-margin
 This variable specifies the base left margin column.  In Fundamental
-mode, @kbd{C-j} indents to this column.  This variable automatically
+mode, @kbd{RET} indents to this column.  This variable automatically
 becomes buffer-local when set in any fashion.
 @end defopt
 
@@ -2201,7 +2202,7 @@ count from zero at the left margin.
 
   This section describes the primitive functions used to count and
 insert indentation.  The functions in the following sections use these
-primitives.  @xref{Width}, for related functions.
+primitives.  @xref{Size of Displayed Text}, for related functions.
 
 @defun current-indentation
 @comment !!Type Primitive Function
@@ -4132,6 +4133,35 @@ is non-@code{nil}, @code{transpose-regions} does not do this---it leaves
 all markers unrelocated.
 @end defun
 
+@node Decompression
+@section Dealing With Compressed Data
+
+When @code{auto-compression-mode} is enabled, Emacs automatically
+uncompresses compressed files when you visit them, and automatically
+recompresses them if you alter and save them.  @xref{Compressed
+Files,,, emacs, The GNU Emacs Manual}.
+
+The above feature works by calling an external executable (e.g.,
+@command{gzip}).  Emacs can also be compiled with support for built-in
+decompression using the zlib library, which is faster than calling an
+external program.
+
+@defun zlib-available-p
+This function returns non-@code{nil} if built-in zlib decompression is
+available.
+@end defun
+
+@defun zlib-decompress-region start end
+This function decompresses the region between @var{start} and
+@var{end}, using built-in zlib decompression.  The region should
+contain data that were compressed with gzip or zlib.  On success, the
+function replaces the contents of the region with the decompressed
+data.  On failure, the function leaves the region unchanged and
+returns @code{nil}.  This function can be called only in unibyte
+buffers.
+@end defun
+
+
 @node Base 64
 @section Base 64 Encoding
 @cindex base 64 encoding
index f19a08c85e7e35c035111fb9763fdc56b0cca882..3e1cd40c45976e978f8b91b8e1261dd714e640d6 100644 (file)
@@ -137,7 +137,7 @@ window).
 
 Each window belongs to exactly one frame (@pxref{Frames}).
 
-@defun window-frame window
+@defun window-frame &optional window
 This function returns the frame that the window @var{window} belongs
 to.  If @var{window} is @code{nil}, it defaults to the selected
 window.
@@ -257,14 +257,14 @@ window tree are @var{W2}, @var{W4}, and @var{W5}.
   The following functions can be used to retrieve a child window of an
 internal window, and the siblings of a child window.
 
-@defun window-top-child window
+@defun window-top-child &optional window
 This function returns the topmost child window of @var{window}, if
 @var{window} is an internal window whose children form a vertical
 combination.  For any other type of window, the return value is
 @code{nil}.
 @end defun
 
-@defun window-left-child window
+@defun window-left-child &optional window
 This function returns the leftmost child window of @var{window}, if
 @var{window} is an internal window whose children form a horizontal
 combination.  For any other type of window, the return value is
@@ -322,7 +322,7 @@ the assumption that the frame from our canonical example is selected
 @end defun
 
 @cindex window in direction
-@defun window-in-direction direction &optional window ignore
+@defun window-in-direction direction &optional window ignore sign wrap mini
 This function returns the nearest live window in direction
 @var{direction} as seen from the position of @code{window-point} in
 window @var{window}.  The argument @var{direction} must be one of
@@ -338,6 +338,23 @@ function tries to find another window in the indicated direction whose
 argument @var{ignore} is non-@code{nil}, a window may be returned even
 if its @code{no-other-window} parameter is non-@code{nil}.
 
+If the optional argument @var{sign} is a negative number, it means to
+use the right or bottom edge of @var{window} as reference position
+instead of @code{window-point}.  If @var{sign} is a positive number, it
+means to use the left or top edge of @var{window} as reference position.
+
+If the optional argument @var{wrap} is non-@code{nil}, this means to
+wrap @var{direction} around frame borders.  For example, if @var{window}
+is at the top of the frame and @var{direction} is @code{above}, then
+return the minibuffer window provided the frame has one, and a window at
+the bottom of the frame otherwise.
+
+If the optional argument @var{mini} is @code{nil}, this means to return
+the minibuffer window if and only if it is currently active.  If
+@var{mini} is non-@code{nil}, it returns the minibuffer window even when
+it's not active.  However, if @var{wrap} non-@code{nil}, it always acts
+as if @var{mini} were @code{nil}.
+
 If it doesn't find a suitable window, this function returns @code{nil}.
 @end defun
 
@@ -365,6 +382,7 @@ internal window).  The @var{edges} element is a list @code{(@var{left}
 @code{window-edges} (@pxref{Coordinates and Windows}).
 @end defun
 
+
 @node Window Sizes
 @section Window Sizes
 @cindex window size
@@ -374,18 +392,18 @@ internal window).  The @var{edges} element is a list @code{(@var{left}
 
 @smallexample
 @group
-         _________________________________________
-      ^ |______________ Header Line_______________|
-      | |LS|LF|LM|                       |RM|RF|RS| ^
-      | |  |  |  |                       |  |  |  | |
- Window |  |  |  |       Text Area       |  |  |  | Window
- Total  |  |  |  |     (Window Body)     |  |  |  | Body
- Height |  |  |  |                       |  |  |  | Height
-      | |  |  |  |<- Window Body Width ->|  |  |  | |
-      | |__|__|__|_______________________|__|__|__| v
-      v |_______________ Mode Line _______________|
-
-         <----------- Window Total Width -------->
+        ____________________________________________
+       |______________ Header Line ______________|RD| ^
+     ^ |LS|LF|LM|                       |RM|RF|RS|  | |
+     | |  |  |  |                       |  |  |  |  | |
+Window |  |  |  |       Text Area       |  |  |  |  | Window
+Body | |  |  |  |     (Window Body)     |  |  |  |  | Total
+Height |  |  |  |                       |  |  |  |  | Height
+     | |  |  |  |<- Window Body Width ->|  |  |  |  | |
+     v |__|__|__|_______________________|__|__|__|  | |
+       |_______________ Mode Line _______________|__| |
+       |_____________ Bottom Divider _______________| v
+        <---------- Window Total Width ------------>
 
 @end group
 @end smallexample
@@ -394,59 +412,136 @@ internal window).  The @var{edges} element is a list @code{(@var{left}
 @cindex text area of a window
 @cindex body of a window
   At the center of the window is the @dfn{text area}, or @dfn{body},
-where the buffer text is displayed.  On each side of the text area is
-a series of vertical areas; from innermost to outermost, these are the
-left and right margins, denoted by LM and RM in the schematic
-(@pxref{Display Margins}); the left and right fringes, denoted by LF
-and RF (@pxref{Fringes}); and the left or right scroll bar, only one of
-which is present at any time, denoted by LS and RS (@pxref{Scroll
-Bars}).  At the top of the window is an optional header line
-(@pxref{Header Lines}), and at the bottom of the window is the mode
-line (@pxref{Mode Line Format}).
-
-  Emacs provides several functions for finding the height and width of
-a window.  Except where noted, Emacs reports window heights and widths
-as integer numbers of lines and columns, respectively.  On a graphical
-display, each ``line'' and ``column'' actually corresponds to the
-height and width of a ``default'' character specified by the frame's
-default font.  Thus, if a window is displaying text with a different
-font or size, the reported height and width for that window may differ
-from the actual number of text lines or columns displayed within it.
+where the buffer text is displayed.  The text area can be surrounded by
+a series of optional areas.  On the left and right, from innermost to
+outermost, these are the left and right margins, denoted by LM and RM in
+the schematic (@pxref{Display Margins}); the left and right fringes,
+denoted by LF and RF (@pxref{Fringes}); the left or right scroll bar,
+only one of which is present at any time, denoted by LS and RS
+(@pxref{Scroll Bars}); and the right divider, denoted by RD
+(@pxref{Window Dividers}).  At the top of the window is the header line
+(@pxref{Header Lines}); at the bottom of the window is the mode line
+(@pxref{Mode Line Format}) followed by the bottom divider (@pxref{Window
+Dividers}).
+
+  Emacs provides miscellaneous functions for finding the height and
+width of a window.  The return value of many of these functions can be
+specified either in units of pixels or in units of lines and columns.
+On a graphical display, the latter actually correspond to the height and
+width of a ``default'' character specified by the frame's default font
+as returned by @code{frame-char-height} and @code{frame-char-width}
+(@pxref{Size and Position}).  Thus, if a window is displaying text with
+a different font or size, the reported line height and column width for
+that window may differ from the actual number of text lines or columns
+displayed within it.
 
 @cindex window height
 @cindex height of a window
 @cindex total height of a window
+  The @dfn{total height} of a window is the number of lines comprising
+the window's body, the header line, the mode line and the bottom divider
+(if any).  Note that the height of a frame is not the same as the height
+of its root window (@pxref{Windows and Frames}), since a frame may also
+contain an echo area, a menu bar, and a tool bar (@pxref{Size and
+Position}).
+
+@defun window-total-height &optional window round
+This function returns the total height, in lines, of the window
+@var{window}.  If @var{window} is omitted or @code{nil}, it defaults to
+the selected window.  If @var{window} is an internal window, the return
+value is the total height occupied by its descendant windows.
+
+   If a window's pixel height is not an integral multiple of its frame's
+default character height, the number of lines occupied by the window is
+rounded internally.  This is done in a way such that, if the window is a
+parent window, the sum of the total heights of all its child windows
+internally equals the total height of their parent.  This means that
+although two windows have the same pixel height, their internal total
+heights may differ by one line.  This means also, that if this window is
+vertically combined and has a right sibling, the topmost row of that
+sibling can be calculated as the sum of this window's topmost row and
+total height (@pxref{Coordinates and Windows})
+
+   If the optional argument @var{round} equals @code{ceiling}, this
+function returns the smallest integer larger than @var{window}'s pixel
+height divided by the character height of @var{window}'s frame; if it is
+@code{floor}, it returns the largest integer smaller than @var{window}'s
+pixel height divided by the character height of @var{window}'s frame.
+Any other value of @var{round} means to return the internal value of the
+total height of @var{window}.
+@end defun
+
 @cindex window width
 @cindex width of a window
 @cindex total width of a window
-  The @dfn{total height} of a window is the distance between the top
-and bottom of the window, including the header line (if one exists)
-and the mode line.  The @dfn{total width} of a window is the distance
-between the left and right edges of the mode line.  Note that the
-height of a frame is not the same as the height of its windows, since
-a frame may also contain an echo area, menu bar, and tool bar
-(@pxref{Size and Position}).
-
-@defun window-total-height &optional window
-This function returns the total height, in lines, of the window
-@var{window}.  If @var{window} is omitted or @code{nil}, it defaults
-to the selected window.  If @var{window} is an internal window, the
-return value is the total height occupied by its descendant windows.
-@end defun
+The @dfn{total width} of a window is the number of lines comprising the
+window's body, its margins, fringes, scroll bars and a right divider (if
+any).
 
-@defun window-total-width &optional window
+@defun window-total-width &optional window round
 This function returns the total width, in columns, of the window
-@var{window}.  If @var{window} is omitted or @code{nil}, it defaults
-to the selected window.  If @var{window} is internal, the return value
-is the total width occupied by its descendant windows.
+@var{window}.  If @var{window} is omitted or @code{nil}, it defaults to
+the selected window.  If @var{window} is internal, the return value is
+the total width occupied by its descendant windows.
+
+   If a window's pixel width is not an integral multiple of its frame's
+character width, the number of lines occupied by the window is rounded
+internally.  This is done in a way such that, if the window is a parent
+window, the sum of the total widths of all its children internally
+equals the total width of their parent.  This means that although two
+windows have the same pixel width, their internal total widths may
+differ by one column.  This means also, that if this window is
+horizontally combined and has a right sibling, the leftmost column of
+that sibling can be calculated as the sum of this window's leftmost
+column and total width (@pxref{Coordinates and Windows}).
+
+If the optional argument @var{round} is @code{ceiling}, this function
+will return the smallest integer larger than @var{window}'s pixel width
+divided by the character width of @var{window}'s frame; if it is
+@code{floor}, it returns the largest integer smaller than @var{window}'s
+pixel width divided by the character width of @var{window}'s frame.  Any
+other value of @var{round} means to return the internal total width of
+@var{window}.
 @end defun
 
-@defun window-total-size &optional window horizontal
-This function returns either the total height or width of the window
-@var{window}.  If @var{horizontal} is omitted or @code{nil}, this is
-equivalent to calling @code{window-total-height} for @var{window};
-otherwise it is equivalent to calling @code{window-total-width} for
-@var{window}.
+@defun window-total-size &optional window horizontal round
+This function returns either the total height in lines or the total
+width in columns of the window @var{window}.  If @var{horizontal} is
+omitted or @code{nil}, this is equivalent to calling
+@code{window-total-height} for @var{window}; otherwise it is equivalent
+to calling @code{window-total-width} for @var{window}.  The optional
+argument @code{ROUND} is handled as for @code{window-total-height} and
+@code{window-total-width}.
+@end defun
+
+The following two functions can be used to return the total size of a
+window in units of pixels.
+
+@cindex window pixel height
+@cindex pixel height of a window
+@cindex total pixel height of a window
+
+@defun window-pixel-height &optional window
+This function returns the total height of window @var{window} in pixels.
+@var{window} must be a valid window and defaults to the selected one.
+
+The return value includes mode and header line and a bottom divider, if
+any.  If @var{window} is an internal window, its pixel height is the
+pixel height of the screen areas spanned by its children.
+@end defun
+
+@cindex window pixel height
+@cindex pixel height of a window
+@cindex total pixel height of a window
+
+@defun window-pixel-width &optional Lisp_Object &optional window
+This function returns the width of window @var{window} in pixels.
+@var{window} must be a valid window and defaults to the selected one.
+
+The return value includes the fringes and margins of @var{window} as
+well as any vertical dividers or scroll bars belonging to @var{window}.
+If @var{window} is an internal window, its pixel width is the width of
+the screen areas spanned by its children.
 @end defun
 
 @cindex full-width window
@@ -471,40 +566,51 @@ that of the root window on that frame.  If @var{window} is omitted or
 @cindex window body height
 @cindex body height of a window
 @cindex window body width
+The @dfn{body height} of a window is the height of its text area, which
+does not include a mode or header line or a bottom divider.
+
+@defun window-body-height &optional window pixelwise
+This function returns the height, in lines, of the body of window
+@var{window}.  If @var{window} is omitted or @code{nil}, it defaults to
+the selected window; otherwise it must be a live window.
+
+If the optional argument @var{pixelwise} is non-@code{nil}, this
+function returns the body height of @var{window} counted in pixels.
+
+If @var{pixelwise} is @code{nil}, the return value is rounded down to
+the nearest integer, if necessary.  This means that if a line at the
+bottom of the text area is only partially visible, that line is not
+counted.  It also means that the height of a window's body can never
+exceed its total height as returned by @code{window-total-height}.
+@end defun
+
 @cindex body width of a window
 @cindex body size of a window
 @cindex window body size
-  The @dfn{body height} of a window is the height of its text area,
-which does not include the mode or header line.  Similarly, the
-@dfn{body width} is the width of the text area, which does not include
-the scroll bar, fringes, or margins.
+The @dfn{body width} of a window is the width of its text area, which
+does not include the scroll bar, fringes, margins or a right divider.
 
-@defun window-body-height &optional window
-This function returns the body height, in lines, of the window
-@var{window}.  If @var{window} is omitted or @code{nil}, it defaults
-to the selected window; otherwise it must be a live window.
+@defun window-body-width &optional window pixelwise
+This function returns the width, in columns, of the body of window
+@var{window}.  If @var{window} is omitted or @code{nil}, it defaults to
+the selected window; otherwise it must be a live window.
 
-If there is a partially-visible line at the bottom of the text area,
-that counts as a whole line; to exclude such a partially-visible line,
-use @code{window-text-height}, below.
-@end defun
+If the optional argument @var{pixelwise} is non-@code{nil}, this
+function returns the body width of @var{window} in units of pixels.
 
-@defun window-body-width &optional window
-This function returns the body width, in columns, of the window
-@var{window}.  If @var{window} is omitted or @code{nil}, it defaults
-to the selected window; otherwise it must be a live window.
+If @var{pixelwise} is @code{nil}, the return value is rounded down to
+the nearest integer, if necessary.  This means that if a column on the
+right of the text area is only partially visible, that column is not
+counted.  It also means that the width of a window's body can never
+exceed its total width as returned by @code{window-total-width}.
 @end defun
 
-@defun window-body-size &optional window horizontal
-This function returns the body height or body width of @var{window}.
-If @var{horizontal} is omitted or @code{nil}, it is equivalent to
-calling @code{window-body-height} for @var{window}; otherwise it is
-equivalent to calling @code{window-body-width}.
-@end defun
-
-@defun window-text-height &optional window
-This function is like @code{window-body-height}, except that any
-partially-visible line at the bottom of the text area is not counted.
+@defun window-body-size &optional window horizontal pixelwise
+This function returns the body height or body width of @var{window}.  If
+@var{horizontal} is omitted or @code{nil}, it is equivalent to calling
+@code{window-body-height} for @var{window}; otherwise it is equivalent
+to calling @code{window-body-width}.  In either case, the optional
+argument @var{pixelwise} is passed to the function called.
 @end defun
 
   For compatibility with previous versions of Emacs,
@@ -512,16 +618,50 @@ partially-visible line at the bottom of the text area is not counted.
 @code{window-width} is an alias for @code{window-body-width}.  These
 aliases are considered obsolete and will be removed in the future.
 
+   The pixel heights of a window's mode and header line can be retrieved
+with the functions given below.  Their return value is usually accurate
+unless the window has not been displayed before: In that case, the
+return value is based on an estimate of the font used for the window's
+frame.
+
+@defun window-mode-line-height &optional window
+This function returns the height in pixels of @var{window}'s mode line.
+@var{window} must be a live window and defaults to the selected one.  If
+@var{window} has no mode line, the return value is zero.
+@end defun
+
+@defun window-header-line-height &optional window
+This function returns the height in pixels of @var{window}'s header
+line.  @var{window} must be a live window and defaults to the selected
+one.  If @var{window} has no header line, the return value is zero.
+@end defun
+
+Functions for retrieving the height and/or width of window dividers
+(@pxref{Window Dividers}), fringes (@pxref{Fringes}), scroll bars
+(@pxref{Scroll Bars}), and display margins (@pxref{Display Margins}) are
+described in the corresponding sections.
+
 @cindex fixed-size window
 @vindex window-min-height
 @vindex window-min-width
   Commands that change the size of windows (@pxref{Resizing Windows}),
 or split them (@pxref{Splitting Windows}), obey the variables
-@code{window-min-height} and @code{window-min-width}, which specify
-the smallest allowable window height and width.  @xref{Change
-Window,,Deleting and Rearranging Windows, emacs, The GNU Emacs
-Manual}.  They also obey the variable @code{window-size-fixed}, with
-which a window can be @dfn{fixed} in size:
+@code{window-min-height} and @code{window-min-width}, which specify the
+smallest allowable window height and width.  They also obey the variable
+@code{window-size-fixed}, with which a window can be @dfn{fixed} in
+size:
+
+@defopt window-min-height
+This option specifies the minimum total height, in lines, of any window.
+Its value has to accommodate at least one text line as well as a mode
+and header line and a bottom divider, if present.
+@end defopt
+
+@defopt window-min-width
+This option specifies the minimum total width, in columns, of any
+window.  Its value has to accommodate two text columns as well as
+margins, fringes, a scroll bar and a right divider, if present.
+@end defopt
 
 @defvar window-size-fixed
 If this buffer-local variable is non-@code{nil}, the size of any
@@ -532,27 +672,44 @@ there is no choice.
 If the value is @code{height}, then only the window's height is fixed;
 if the value is @code{width}, then only the window's width is fixed.
 Any other non-@code{nil} value fixes both the width and the height.
-@end defvar
 
-@defun window-size-fixed-p &optional window horizontal
-This function returns a non-@code{nil} value if @var{window}'s height
-is fixed.  If @var{window} is omitted or @code{nil}, it defaults to
-the selected window.  If the optional argument @var{horizontal} is
-non-@code{nil}, the return value is non-@code{nil} if @var{window}'s
-width is fixed.
+If this variable is @code{nil}, this does not necessarily mean that any
+window showing the buffer can be resized in the desired direction.  To
+determine that, use the function @code{window-resizable}.
+@xref{Resizing Windows}.
+@end defvar
 
-A @code{nil} return value does not necessarily mean that @var{window}
-can be resized in the desired direction.  To determine that, use the
-function @code{window-resizable}.  @xref{Resizing Windows}.
+The following function tells how small a specific window can get taking
+into account the sizes of its areas and the values of
+@code{window-min-height}, @code{window-min-width} and
+@code{window-size-fixed}.
+
+@defun window-min-size &optional window horizontal ignore pixelwise
+This function returns the minimum size of @var{window}.  @var{window}
+must be a valid window and defaults to the selected one.  The optional
+argument @var{horizontal} non-@code{nil} means to return the minimum
+number of columns of @var{window}; otherwise return the minimum number
+of @var{window}'s lines.
+
+The return value makes sure that all components of @var{window} remain
+fully visible if @var{window}'s size were actually set to it.  With
+@var{horizontal} @code{nil} it includes the mode and header line and the
+bottom divider.  With @var{horizontal} non-@code{nil} it includes the
+fringes, a scroll bar, and a right divider, if present.  It does not,
+however, include the space reserved for the margins.
+
+The optional argument @var{ignore}, if non-@code{nil}, means ignore
+restrictions imposed by fixed size windows, @code{window-min-height} or
+@code{window-min-width} settings.  If @var{ignore} equals @code{safe},
+live windows may get as small as @code{window-safe-min-height} lines and
+@code{window-safe-min-width} columns.  If @var{ignore} is a window,
+ignore restrictions for that window only.  Any other non-@code{nil}
+value means ignore all of the above restrictions for all windows.
+
+The optional argument @var{pixelwise} non-@code{nil} means to return the
+minimum size of @var{window} counted in pixels.
 @end defun
 
-  @xref{Coordinates and Windows}, for more functions that report the
-positions of various parts of a window relative to the frame, from
-which you can calculate its size.  In particular, you can use the
-functions @code{window-pixel-edges} and
-@code{window-inside-pixel-edges} to find the size in pixels, for
-graphical displays.
-
 @node Resizing Windows
 @section Resizing Windows
 @cindex window resizing
@@ -571,7 +728,7 @@ changed except by resizing the frame (@pxref{Size and Position}).
 arguments.  Resizing an internal window causes its child windows to be
 resized to fit the same space.
 
-@defun window-resizable window delta &optional horizontal ignore
+@defun window-resizable window delta &optional horizontal ignore pixelwise
 This function returns @var{delta} if the size of @var{window} can be
 changed vertically by @var{delta} lines.  If the optional argument
 @var{horizontal} is non-@code{nil}, it instead returns @var{delta} if
@@ -587,18 +744,21 @@ lines or columns.  If @var{delta} is non-zero, a return value of 0 means
 that the window cannot be resized.
 
 Normally, the variables @code{window-min-height} and
-@code{window-min-width} specify the smallest allowable window size.
-@xref{Change Window,, Deleting and Rearranging Windows, emacs, The GNU
-Emacs Manual}.  However, if the optional argument @var{ignore} is
-non-@code{nil}, this function ignores @code{window-min-height} and
-@code{window-min-width}, as well as @code{window-size-fixed}.
-Instead, it considers the minimum-height window to be one consisting
-of a header (if any), a mode line, plus a text area one line tall; and
-a minimum-width window as one consisting of fringes, margins, and
-scroll bar (if any), plus a text area two columns wide.
-@end defun
-
-@defun window-resize window delta &optional horizontal ignore
+@code{window-min-width} specify the smallest allowable window size
+(@pxref{Window Sizes}).  However, if the optional argument @var{ignore}
+is non-@code{nil}, this function ignores @code{window-min-height} and
+@code{window-min-width}, as well as @code{window-size-fixed}.  Instead,
+it considers the minimum-height window to be one consisting of a header,
+a mode line and a bottom divider (if any), plus a text area one line
+tall; and a minimum-width window as one consisting of fringes, margins,
+a scroll bar and a right divider (if any), plus a text area two columns
+wide.
+
+If the optional argument @code{pixelwise} is non-@code{nil},
+@var{delta} will be interpreted as pixels.
+@end defun
+
+@defun window-resize window delta &optional horizontal ignore pixelwise
 This function resizes @var{window} by @var{delta} increments.  If
 @var{horizontal} is @code{nil}, it changes the height by @var{delta}
 lines; otherwise, it changes the width by @var{delta} columns.  A
@@ -611,6 +771,9 @@ the window cannot be resized as demanded, an error is signaled.
 The optional argument @var{ignore} has the same meaning as for the
 function @code{window-resizable} above.
 
+If the optional argument @var{pixelwise} is non-@code{nil},
+@var{delta} will be interpreted as pixels.
+
 The choice of which window edges this function alters depends on the
 values of the option @code{window-combination-resize} and the
 combination limits of the involved windows; in some cases, it may alter
@@ -623,12 +786,15 @@ bottom or right edge of a window, use the function
 @c shrink-window, and shrink-window-horizontally are documented in the
 @c Emacs manual.  They are not preferred for calling from Lisp.
 
-@defun adjust-window-trailing-edge window delta &optional horizontal
+@defun adjust-window-trailing-edge window delta &optional horizontal pixelwise
 This function moves @var{window}'s bottom edge by @var{delta} lines.
 If optional argument @var{horizontal} is non-@code{nil}, it instead
 moves the right edge by @var{delta} columns.  If @var{window} is
 @code{nil}, it defaults to the selected window.
 
+If the optional argument @code{pixelwise} is non-@code{nil},
+@var{delta} will be interpreted as pixels.
+
 A positive @var{delta} moves the edge downwards or to the right; a
 negative @var{delta} moves it upwards or to the left.  If the edge
 cannot be moved as far as specified by @var{delta}, this function
@@ -639,30 +805,75 @@ moved.  If this is not possible for some reason (e.g., if that adjacent
 window is fixed-size), it may resize other windows.
 @end defun
 
+@cindex pixelwise, resizing windows
+@defopt window-resize-pixelwise
+If the value of this option is non-@code{nil}, windows are resized in
+units of pixels.  This currently affects functions like
+@code{split-window} (@pxref{Splitting Windows}), @code{maximize-window},
+@code{minimize-window}, @code{fit-window-to-buffer},
+@code{shrink-window-if-larger-than-buffer} (all listed below) and
+@code{fit-frame-to-buffer} (@pxref{Size and Position}).
+
+Note that when a frame's pixel size is not a multiple of the frame's
+character size, at least one window may get resized pixelwise even if
+this option is @code{nil}.  The default value of this option is
+@code{nil}.
+@end defopt
+
   The following commands resize windows in more specific ways.  When
 called interactively, they act on the selected window.
 
-@deffn Command fit-window-to-buffer &optional window max-height min-height override
-This command adjusts the height of @var{window} to fit the text in it.
-It returns non-@code{nil} if it was able to resize @var{window}, and
-@code{nil} otherwise.  If @var{window} is omitted or @code{nil}, it
-defaults to the selected window.  Otherwise, it should be a live
-window.
+@deffn Command fit-window-to-buffer &optional window max-height min-height max-width min-width
+This command adjusts the height or width of @var{window} to fit the text
+in it.  It returns non-@code{nil} if it was able to resize @var{window},
+and @code{nil} otherwise.  If @var{window} is omitted or @code{nil}, it
+defaults to the selected window.  Otherwise, it should be a live window.
+
+If @var{window} is part of a vertical combination, this function adjusts
+@var{window}'s height.  The new height is calculated from the actual
+height of the accessible portion of its buffer.  The optional argument
+@var{max-height}, if non-@code{nil}, specifies the maximum total height
+that this function can give @var{window}.  The optional argument
+@var{min-height}, if non-@code{nil}, specifies the minimum total height
+that it can give, which overrides the variable @code{window-min-height}.
+Both @var{max-height} and @var{min-height} are specified in lines and
+include mode and header line and a bottom divider, if any.
+
+If @var{window} is part of a horizontal combination and the value of the
+option @code{fit-window-to-buffer-horizontally} (see below) is
+non-@code{nil}, this function adjusts @var{window}'s height.  The new
+width of @var{window} is calculated from the maximum length of its
+buffer's lines that follow the current start position of @var{window}.
+The optional argument @var{max-width} specifies a maximum width and
+defaults to the width of @var{window}'s frame.  The optional argument
+@var{min-width} specifies a minimum width and defaults to
+@code{window-min-width}.  Both @var{max-width} and @var{min-width} are
+specified in columns and include fringes, margins and scrollbars, if
+any.
 
-The optional argument @var{max-height}, if non-@code{nil}, specifies
-the maximum total height that this function can give @var{window}.
-The optional argument @var{min-height}, if non-@code{nil}, specifies
-the minimum total height that it can give, which overrides the
-variable @code{window-min-height}.
+If the option @code{fit-frame-to-buffer} (see below) is non-@code{nil},
+this function will try to resize the frame of @var{window} to fit its
+contents by calling @code{fit-frame-to-buffer} (@pxref{Size and
+Position}).
+@end deffn
 
-If the optional argument @var{override} is non-@code{nil}, this
-function ignores any size restrictions imposed by
-@code{window-min-height} and @code{window-min-width}.
+@defopt fit-window-to-buffer-horizontally
+If this is non-@code{nil}, @code{fit-window-to-buffer} can resize
+windows horizontally.  If this is @code{nil} (the default)
+@code{fit-window-to-buffer} never resizes windows horizontally.  If this
+is @code{only}, it can resize windows horizontally only.  Any other
+value means @code{fit-window-to-buffer} can resize windows in both
+dimensions.
+@end defopt
 
-@vindex fit-frame-to-buffer
-If the option @code{fit-frame-to-buffer} is non-@code{nil}, this
-command may resize the frame to fit its contents.
-@end deffn
+@defopt fit-frame-to-buffer
+If this option is non-@code{nil}, @code{fit-window-to-buffer} can fit a
+frame to its buffer.  A frame is fit if and only if its root window is a
+live window and this option is non-@code{nil}.  If this is
+@code{horizontally}, frames are fit horizontally only.  If this is
+@code{vertically}, frames are fit vertically only.  Any other
+non-@code{nil} value means frames can be resized in both dimensions.
+@end defopt
 
 @deffn Command shrink-window-if-larger-than-buffer &optional window
 This command attempts to reduce @var{window}'s height as much as
@@ -675,8 +886,12 @@ it should be a live window.
 This command does nothing if the window is already too short to
 display all of its buffer, or if any of the buffer is scrolled
 off-screen, or if the window is the only live window in its frame.
+
+This command calls @code{fit-window-to-buffer} (see above) to do its
+work.
 @end deffn
 
+
 @cindex balancing window sizes
 @deffn Command balance-windows &optional window-or-frame
 This function balances windows in a way that gives more space to
@@ -717,7 +932,7 @@ window.
 This section describes functions for creating a new window by
 @dfn{splitting} an existing one.
 
-@defun split-window &optional window size side
+@defun split-window &optional window size side pixelwise
 This function creates a new live window next to the window
 @var{window}.  If @var{window} is omitted or @code{nil}, it defaults
 to the selected window.  That window is ``split'', and reduced in
@@ -732,15 +947,25 @@ value of @var{side}).  If @var{size} is a negative number, the new
 window is given @minus{}@var{size} lines (or columns).
 
 If @var{size} is @code{nil}, this function obeys the variables
-@code{window-min-height} and @code{window-min-width}.  @xref{Change
-Window,,Deleting and Rearranging Windows, emacs, The GNU Emacs
-Manual}.  Thus, it signals an error if splitting would result in
-making a window smaller than those variables specify.  However, a
+@code{window-min-height} and @code{window-min-width} (@pxref{Window
+Sizes}).  Thus, it signals an error if splitting would result in making
+a window smaller than those variables specify.  However, a
 non-@code{nil} value for @var{size} causes those variables to be
-ignored; in that case, the smallest allowable window is considered to
-be one that has space for a text area one line tall and/or two columns
+ignored; in that case, the smallest allowable window is considered to be
+one that has space for a text area one line tall and/or two columns
 wide.
 
+Hence, if @var{size} is specified, it's the caller's responsibility to
+check whether the emanating windows are large enough to encompass all
+areas like a mode line or a scroll bar.  The function
+@code{window-min-size} (@pxref{Window Sizes}) can be used to determine
+the minimum requirements of @var{window} in this regard.  Since the new
+window usually ``inherits'' areas like the mode line or the scroll bar
+from @var{window}, that function is also a good guess for the minimum
+size of the new window.  The caller should specify a smaller size only
+if it correspondingly removes an inherited area before the next
+redisplay.
+
 The optional third argument @var{side} determines the position of the
 new window relative to @var{window}.  If it is @code{nil} or
 @code{below}, the new window is placed below @var{window}.  If it is
@@ -752,6 +977,10 @@ the right of @var{window}.  If @var{side} is @code{left}, the new
 window is placed on the left of @var{window}.  In both these cases,
 @var{size} specifies a total window width, in columns.
 
+The optional fourth argument @var{pixelwise}, if non-@code{nil}, means
+to interpret @var{size} in units of pixels, instead of lines and
+columns.
+
 If @var{window} is a live window, the new window inherits various
 properties from it, including margins and scroll bars.  If
 @var{window} is an internal window, the new window inherits the
@@ -1298,16 +1527,27 @@ windows.
 @defun select-window window &optional norecord
 This function makes @var{window} the selected window and the window
 selected within its frame (@pxref{Basic Windows}) and selects that
-frame.  @var{window} must be a live window.  This function also makes
-@var{window}'s buffer (@pxref{Buffers and Windows}) current and sets
-that buffer's value of @code{point} to the value of @code{window-point}
-(@pxref{Window Point}) in @var{window}.  The return value is
-@var{window}.
+frame.  It also makes @var{window}'s buffer (@pxref{Buffers and
+Windows}) current and sets that buffer's value of @code{point} to the
+value of @code{window-point} (@pxref{Window Point}) in @var{window}.
+@var{window} must be a live window.  The return value is @var{window}.
 
 By default, this function also moves @var{window}'s buffer to the front
-of the buffer list (@pxref{The Buffer List}), and makes @var{window} the
+of the buffer list (@pxref{Buffer List}), and makes @var{window} the
 most recently selected window.  However, if the optional argument
 @var{norecord} is non-@code{nil}, these additional actions are omitted.
+
+This function runs @code{buffer-list-update-hook} (@pxref{Buffer List})
+unless @var{norecord} is non-@code{nil}.  Note that applications and
+internal routines often temporarily select a window in order to simplify
+coding.  As a rule, such selections (including those made by the macros
+@code{save-selected-window} and @code{with-selected-window} below) are
+not recorded thus avoiding to pollute @code{buffer-list-update-hook}.
+Selections that ``really count'' are those causing a visible change in
+the next redisplay of @var{window}'s frame and should be always
+recorded.  This also means that to run a function each time a window
+gets selected, putting it on @code{buffer-list-update-hook} should be
+the right choice.
 @end defun
 
 @cindex most recently selected windows
@@ -1676,7 +1916,7 @@ window and make it the current buffer.  It is often used interactively
 return value is the buffer switched to.
 
 If @var{buffer-or-name} is @code{nil}, it defaults to the buffer
-returned by @code{other-buffer} (@pxref{The Buffer List}).  If
+returned by @code{other-buffer} (@pxref{Buffer List}).  If
 @var{buffer-or-name} is a string that is not the name of any existing
 buffer, this function creates a new buffer with that name; the new
 buffer's major mode is determined by the variable @code{major-mode}
@@ -1684,7 +1924,7 @@ buffer's major mode is determined by the variable @code{major-mode}
 
 Normally, the specified buffer is put at the front of the buffer
 list---both the global buffer list and the selected frame's buffer
-list (@pxref{The Buffer List}).  However, this is not done if the
+list (@pxref{Buffer List}).  However, this is not done if the
 optional argument @var{norecord} is non-@code{nil}.
 
 Sometimes, @code{switch-to-buffer} may be unable to display the buffer
@@ -1762,7 +2002,7 @@ possible (@pxref{Input Focus}).  The return value is the buffer that
 was switched to.
 
 If @var{buffer-or-name} is @code{nil}, it defaults to the buffer
-returned by @code{other-buffer} (@pxref{The Buffer List}).  If
+returned by @code{other-buffer} (@pxref{Buffer List}).  If
 @var{buffer-or-name} is a string that is not the name of any existing
 buffer, this function creates a new buffer with that name; the new
 buffer's major mode is determined by the variable @code{major-mode}
@@ -2025,6 +2265,15 @@ specified by that entry will override any other window found by the
 methods above, even if that window never showed @var{buffer} before.
 @end defun
 
+@defun display-buffer-at-bottom buffer alist
+This function tries to display @var{buffer} in a window at the bottom
+of the selected frame.
+
+This either splits the window at the bottom of the frame or the
+frame's root window, or reuses an existing window at the bottom of the
+selected frame.
+@end defun
+
 @defun display-buffer-use-some-window buffer alist
 This function tries to display @var{buffer} by choosing an existing
 window and displaying the buffer in that window.  It can fail if all
@@ -2309,9 +2558,9 @@ or killed, or has been already shown by a recent invocation of
 
 If repeated invocations of this command have already shown all buffers
 previously shown in @var{window}, further invocations will show buffers
-from the buffer list of the frame @var{window} appears on (@pxref{The
-Buffer List}), trying to skip buffers that are already shown in another
-window on that frame.
+from the buffer list of the frame @var{window} appears on (@pxref{Buffer
+List}), trying to skip buffers that are already shown in another window
+on that frame.
 @end deffn
 
 @deffn Command switch-to-next-buffer &optional window
@@ -2322,7 +2571,7 @@ defaults to the selected one.
 
 If there is no recent invocation of @code{switch-to-prev-buffer} that
 can be undone, this function tries to show a buffer from the buffer list
-of the frame @var{window} appears on (@pxref{The Buffer List}).
+of the frame @var{window} appears on (@pxref{Buffer List}).
 @end deffn
 
 By default @code{switch-to-prev-buffer} and @code{switch-to-next-buffer}
@@ -2369,7 +2618,7 @@ called when a buffer gets killed, deletes the window in case (1) and
 behaves like @code{delete-windows-on} otherwise.
 @c FIXME: Does replace-buffer-in-windows _delete_ a window in case (1)?
 
-   When @code{bury-buffer} (@pxref{The Buffer List}) operates on the
+   When @code{bury-buffer} (@pxref{Buffer List}) operates on the
 selected window (which shows the buffer that shall be buried), it
 handles case (2) by calling @code{frame-auto-hide-function}
 (@pxref{Quitting Windows}) to deal with the selected frame.  The other
@@ -2408,7 +2657,7 @@ buffer is shown on a separate frame, you might want to call
 hand, a window has been reused for displaying the buffer, you might
 prefer showing the buffer previously shown in that window, by calling the
 function @code{switch-to-prev-buffer} (@pxref{Window History}).
-Finally, you might want to either bury (@pxref{The Buffer List}) or kill
+Finally, you might want to either bury (@pxref{Buffer List}) or kill
 (@pxref{Killing Buffers}) the window's buffer.
 
    The following command uses information on how the window for
@@ -2490,11 +2739,12 @@ one window that should be either quit, or whose buffer should be buried.
 The function specified by this option is called to automatically hide
 frames.  This function is called with one argument---a frame.
 
-The function specified here is called by @code{bury-buffer} (@pxref{The
-Buffer List}) when the selected window is dedicated and shows the buffer
-to bury.  It is also called by @code{quit-restore-window} (see above)
-when the frame of the window to quit has been specially created for
-displaying that window's buffer and the buffer is not killed.
+The function specified here is called by @code{bury-buffer}
+(@pxref{Buffer List}) when the selected window is dedicated and shows
+the buffer to bury.  It is also called by @code{quit-restore-window}
+(see above) when the frame of the window to quit has been specially
+created for displaying that window's buffer and the buffer is not
+killed.
 
 The default is to call @code{iconify-frame} (@pxref{Visibility of
 Frames}).  Alternatively, you may specify either @code{delete-frame}
@@ -3249,18 +3499,18 @@ coordinate of the topmost row, the X coordinate one column to the
 right of the rightmost column, and the Y coordinate one row down from
 the bottommost row.
 
-Note that these are the actual outer edges of the window, including
-any header line, mode line, scroll bar, fringes, and display margins.
-On a text terminal, if the window has a neighbor on its right, its
-right edge includes the separator line between the window and its
+Note that these are the actual outer edges of the window, including any
+header line, mode line, scroll bar, fringes, window divider and display
+margins.  On a text terminal, if the window has a neighbor on its right,
+its right edge includes the separator line between the window and its
 neighbor.
 @end defun
 
 @defun window-inside-edges &optional window
 This function is similar to @code{window-edges}, but the returned edge
 values are for the text area of the window.  They exclude any header
-line, mode line, scroll bar, fringes, display margins, and vertical
-separator.
+line, mode line, scroll bar, fringes, window divider, display margins,
+and vertical separator.
 @end defun
 
 @defun window-top-line &optional window
@@ -3309,6 +3559,14 @@ The coordinates are in the mode line of @var{window}.
 @item header-line
 The coordinates are in the header line of @var{window}.
 
+@item right-divider
+The coordinates are in the divider separating @var{window} from a
+window on the right.
+
+@item right-divider
+The coordinates are in the divider separating @var{window} from a
+window beneath.
+
 @item vertical-line
 The coordinates are in the vertical line between @var{window} and its
 neighbor to the right.  This value occurs only if the window doesn't
@@ -3370,6 +3628,17 @@ returns the edge pixel coordinates relative to the top left corner of
 the display screen.  @var{window} must specify a live window.
 @end defun
 
+@defun window-pixel-left &optional window
+This function returns the left pixel edge of window @var{window}.
+@var{window} must be a valid window and defaults to the selected one.
+@end defun
+
+@defun window-pixel-top &optional window
+This function returns the top pixel edge of window @var{window}.
+@var{window} must be a valid window and defaults to the selected one.
+@end defun
+
+
 @node Window Configurations
 @section Window Configurations
 @cindex window configurations
@@ -3480,6 +3749,7 @@ to clone the state of a frame into an arbitrary live window
 (@code{set-window-configuration} effectively clones the windows of a
 frame into the root window of that very frame only).
 
+@cindex window state
 @defun window-state-get &optional window writable
 This function returns the state of @var{window} as a Lisp object.  The
 argument @var{window} must be a valid window and defaults to the root
@@ -3501,10 +3771,11 @@ written to disk and read back in another session.  In either case, use
 the following function to restore the state of the window.
 
 @defun window-state-put state &optional window ignore
-This function puts the window state @var{state} into @var{window}.  The
-argument @var{state} should be the state of a window returned by an
-earlier invocation of @code{window-state-get}, see above.  The optional
-argument @var{window} must specify a valid window and defaults to the
+This function puts the window state @var{state} into @var{window}.
+The argument @var{state} should be the state of a window returned by
+an earlier invocation of @code{window-state-get}, see above.  The
+optional argument @var{window} can be either a live window or an
+internal window (@pxref{Windows and Frames}) and defaults to the
 selected one.  If @var{window} is not live, it is replaced by a live
 window before putting @var{state} into it.
 
index cdd0bc9472f69bdcfb1a291925c092a6b1394396..4fac93537a33c4f6842889d4f95cf71a3712c7f2 100644 (file)
@@ -1,3 +1,65 @@
+2014-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * eww.texi (History and Acknowledgments):
+       Don't list everyone who changed the code.
+
+       * ada-mode.texi, auth.texi, calc.texi, ebrowse.texi, efaq.texi:
+       * emacs-gnutls.texi, epa.texi, ert.texi, eshell.texi, eww.texi:
+       * flymake.texi, gnus.texi, info.texi, message.texi, mh-e.texi:
+       * newsticker.texi, pcl-cvs.texi, rcirc.texi, sem-user.texi:
+       * smtpmail.texi, url.texi, viper.texi, wisent.texi, woman.texi:
+       Use @file for buffers, per the Texinfo manual.
+
+2014-03-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * org.texi: Don't set txicodequoteundirected and txicodequotebacktick
+       so that the Org Manual's style for ` and ' in code is consistent
+       with the other Emacs manuals.  This affects PDF, not .info files.
+
+2014-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * octave-mode.texi (Using Octave Mode): Remove outdated stuff
+       about RET and indentation.
+
+2014-03-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * gnus.texi:
+       * semantic.texi: Fix whitespace.
+
+       * ede.texi (Android projects):
+       * eieio.texi (Class Options, Making New Objects)
+       (Method Invocation, CLOS compatibility):
+       * sem-user.texi (Tag Decoration Mode): Fix typos.
+
+2014-03-02  Xue Fuqiao  <xfq@gnu.org>
+
+       * sem-user.texi (Create System Databases): Markup fix.
+
+2014-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * info.texi (Further Reading): Rename node from Expert Info.
+       Remove stuff about writing Info nodes by hand.
+       (Help-Cross): Move node from (mainly deleted) chapter 3 to chapter 1.
+
+       * info.texi: Nuke hand-written node pointers.
+
+2014-02-28  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Top): Mention H for a summary of all commands.
+
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * edt.texi (Quick start, Starting emulation): Update hook details.
+       * efaq.texi (Fullscreen mode on MS-Windows)
+       (Terminal setup code works after Emacs has begun): Update hook details.
+       * vip.texi (Loading VIP): Fix hook example.
+
+       * efaq-w32.texi (Bash): Don't use setq with hooks.
+
+2014-02-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * texinfo.tex: Update from gnulib.
+
 2014-02-22  Xue Fuqiao  <xfq@gnu.org>
 
        * remember.texi (Quick Start): Add an index.
 
        * org.texi (Global and local cycling): Fix missing '@'.
 
-2013-01-07 Bastien Guerry <bzg@gnu.org>
+2013-01-07  Bastien Guerry  <bzg@gnu.org>
 
        * org.texi (Global and local cycling): Mention C-u C-u TAB.
        (Include files, The Export Dispatcher)
 
 2013-08-10  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * ido.texi (Working Directories):
-       (Flexible Matching, Regexp Matching, Find File At Point)
-       (Ignoring, Misc Customization): Use @defopt for user options.
+       * 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  <xfq.free@gmail.com>
 
 2013-08-07  Xue Fuqiao  <xfq.free@gmail.com>
 
        * sc.texi (Introduction): Fix index.
-       (Usage Overview):
-       (Citations, Citation Elements, Recognizing Citations)
+       (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)
 
        * newsticker.texi (Usage): Use @key for RET.
 
-       * cl.texi (Argument Lists):
-       (For Clauses):
+       * cl.texi (Argument Lists, For Clauses)
        (Macros): Add indexes.
 
 2013-08-05  Xue Fuqiao  <xfq.free@gmail.com>
 2013-08-04  Stephen Berman  <stephen.berman@gmx.net>
 
        * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add todo-mode.
-       (todo-mode, $(buildinfodir)/todo-mode$(INFO_EXT)):
+       (todo-mode, $(buildinfodir)/todo-mode$(INFO_EXT))
        (todo-mode.dvi, todo-mode.pdf): New rules.
 
        * todo-mode.texi: New file.
 
 2013-02-09  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * calc.texi (Basic Operations on Units):
-       (Customizing Calc): Mention the variable `calc-allow-units-as-numbers'.
+       * calc.texi (Basic Operations on Units, Customizing Calc):
+       Mention the variable `calc-allow-units-as-numbers'.
 
 2013-02-08  Aidan Gauland  <aidalgol@no8wireless.co.nz>
 
 
 2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
-       * org.texi (Handling links):
-       (In-buffer settings): Document inlining images on startup.
+       * org.texi (Handling links, In-buffer settings):
+       Document inlining images on startup.
 
 2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
 2008-07-23  Vincent Belaïche  <vincent.b.1@hotmail.fr>
 
-       * calc.texi (Editing Stack Entries):
-       (Algebraic Entry): Rewrite introductory sentences so it can be used by
+       * calc.texi (Editing Stack Entries, Algebraic Entry):
+       Rewrite introductory sentences so it can be used by
        Calc's help functions.  Mention fixing typos.
        (Customizing Calc): Fix typo.
 
        * info.texi (Help-Xref):
        * message.texi (Message Headers):
        * org.texi (Remember):
-       * reftex.texi (Options (Defining Label Environments)):
-       (Options (Index Support)):
-       (Options (Viewing Cross-References)):
-       (Options (Misc)):
-       (Changes):
+       * reftex.texi (Options (Defining Label Environments))
+       (Options (Index Support), Options (Viewing Cross-References))
+       (Options (Misc), Changes):
        * speedbar.texi (Creating a display):
        * tramp.texi (Customizing Completion, Auto-save and Backup):
        Texinfo usage fix.
 2004-11-03  Jan Djärv  <jan.h.d@swipnet.se>
 
        * idlwave.texi (Continued Statement Indentation):
-       * reftex.texi (Options (Index Support)):
+       * reftex.texi (Options (Index Support))
        (Displaying and Editing the Index, Table of Contents):
        * speedbar.texi (Creating a display, Major Display Modes):
        Replace non-nil with non-@code{nil}.
index f20f09107631e797a4cb17cf98a00e2765ef58c9..71f020ceb285b682491633f0289f9f9b159c9eaa 100644 (file)
@@ -352,7 +352,7 @@ Invoke @samp{Ada | Project | Load}, and load a project file that specifies @code
 
 The @code{Check file}, @code{Compile file}, and @code{Build} commands
 all place compilation errors in a separate buffer named
-@code{*compilation*}.
+@file{*compilation*}.
 
 Each line in this buffer will become active: you can simply click on
 it with the middle button of the mouse, or move point to it and press
@@ -374,8 +374,8 @@ An Emacs Ada mode project file specifies what directories hold sources
 for your project, and allows you to customize the compilation commands
 and other things on a per-project basis.
 
-Note that Ada mode project files @samp{*.adp} are different than GNAT
-compiler project files @samp{*.gpr}. However, Emacs Ada mode can use a
+Note that Ada mode project files @file{*.adp} are different than GNAT
+compiler project files @file{*.gpr}. However, Emacs Ada mode can use a
 GNAT project file to specify the project directories. If no
 other customization is needed, a GNAT project file can be used without
 an Emacs Ada mode project file.
@@ -728,7 +728,7 @@ Yes, this is missing the keyword @code{body}; another compiler error
 example.
 
 In buffer @file{hello.adb}, invoke @samp{Ada | Check file}. You should
-get a @code{*compilation*} buffer containing something like (the
+get a @file{*compilation*} buffer containing something like (the
 directory paths will be different):
 
 @smallexample
@@ -815,7 +815,7 @@ Emacs has remembered the main file, in the project variable
 @code{main}, and used it for the Build command.
 
 Finally, again while in @file{hello_pkg.adb}, invoke @samp{Ada | Run}.
-The @code{*run*} buffer displays @code{Hello from hello_pkg.adb}.
+The @file{*run*} buffer displays @code{Hello from hello_pkg.adb}.
 
 One final point. If you switch back to buffer @file{hello.adb}, and
 invoke @samp{Ada | Run}, @file{hello_2.exe} will be run. That is
@@ -876,7 +876,7 @@ In buffer @file{hello.adb}, invoke @samp{Ada | Project | Load...}, and
 select @file{Example_2/hello.adp}.
 
 Then, again in buffer @file{hello.adb}, invoke @samp{Ada | Set main and
-Build}. You should get a @code{*compilation*} buffer containing
+Build}. You should get a @file{*compilation*} buffer containing
 something like (the directory paths will be different):
 
 @example
@@ -960,7 +960,7 @@ In buffer @file{hello_3.adb}, invoke @samp{Ada | Project | Load...}, and
 select @file{Example_3/Other/other.adp}.
 
 Then, again in @file{hello_3.adb}, invoke @samp{Ada | Set main and
-Build}. You should get a @code{*compilation*} buffer containing
+Build}. You should get a @file{*compilation*} buffer containing
 something like (the directory paths will be different):
 
 @example
@@ -1043,7 +1043,7 @@ In buffer @file{hello_4.adb}, invoke @samp{Ada | Project | Load...}, and
 select @file{Example_4/Gnat_Project/hello_4.gpr}.
 
 Then, again in @file{hello_4.adb}, invoke @samp{Ada | Set main and
-Build}. You should get a @code{*compilation*} buffer containing
+Build}. You should get a @file{*compilation*} buffer containing
 something like (the directory paths will be different):
 
 @smallexample
@@ -1110,7 +1110,7 @@ In buffer @file{hello_5.adb}, invoke @samp{Ada | Project | Load...}, and
 select @file{Example_5/hello_5.adp}.
 
 Then, again in @file{hello_5.adb}, invoke @samp{Ada | Set main and
-Build}. You should get a @code{*compilation*} buffer containing
+Build}. You should get a @file{*compilation*} buffer containing
 something like (the directory paths will be different):
 
 @smallexample
index 993062f80829c8d7e13fc4ccc0b4a4633d00488c..110473209c4c43146a5729c36ff4cbb7e04fd234 100644 (file)
@@ -127,7 +127,7 @@ later.
 
 If you have problems with the search, set @code{auth-source-debug} to
 @code{'trivia} and see what host, port, and user the library is
-checking in the @samp{*Messages*} buffer.  Ditto for any other
+checking in the @file{*Messages*} buffer.  Ditto for any other
 problems, your first step is always to see what's being checked.  The
 second step, of course, is to write a blog entry about it and wait for
 the answer in the comments.
@@ -382,7 +382,7 @@ The auth-source library lets you control logging output easily.
 
 @defvar auth-source-debug
 Set this variable to @code{'trivia} to see lots of output in
-@samp{*Messages*}, or set it to a function that behaves like
+@file{*Messages*}, or set it to a function that behaves like
 @code{message} to do your own logging.
 @end defvar
 
index 4010d6c8c19c0d76ae7057b529b4310ee6878fa2..366f1e3f03dce4d7a48409aa813c5cbb5e638d35 100644 (file)
@@ -3960,7 +3960,7 @@ Next, let's add the line we got from our least-squares fit.
 @ifinfo
 (If you are reading this tutorial on-line while running Calc, typing
 @kbd{g a} may cause the tutorial to disappear from its window and be
-replaced by a buffer named @samp{*Gnuplot Commands*}.  The tutorial
+replaced by a buffer named @file{*Gnuplot Commands*}.  The tutorial
 will reappear when you terminate GNUPLOT by typing @kbd{g q}.)
 @end ifinfo
 
@@ -9617,8 +9617,8 @@ numeric entry, undo, numeric prefix arguments, etc.
 @cindex Starting the Calculator
 @cindex Running the Calculator
 To start the Calculator in its standard interface, type @kbd{M-x calc}.
-By default this creates a pair of small windows, @samp{*Calculator*}
-and @samp{*Calc Trail*}.  The former displays the contents of the
+By default this creates a pair of small windows, @file{*Calculator*}
+and @file{*Calc Trail*}.  The former displays the contents of the
 Calculator stack and is manipulated exclusively through Calc commands.
 It is possible (though not usually necessary) to create several Calc
 mode buffers each of which has an independent stack, undo list, and
@@ -9626,7 +9626,7 @@ mode settings.  There is exactly one Calc Trail buffer; it records a
 list of the results of all calculations that have been done.  The
 Calc Trail buffer uses a variant of Calc mode, so Calculator commands
 still work when the trail buffer's window is selected.  It is possible
-to turn the trail window off, but the @samp{*Calc Trail*} buffer itself
+to turn the trail window off, but the @file{*Calc Trail*} buffer itself
 still exists and is updated silently.  @xref{Trail Commands}.
 
 @kindex C-x * c
@@ -10150,10 +10150,10 @@ forget what it was, just run @code{C-x * q} again and enter
 @samp{$} as the formula.
 
 If this is the first time you have used the Calculator in this Emacs
-session, the @kbd{C-x * q} command will create the @code{*Calculator*}
+session, the @kbd{C-x * q} command will create the @file{*Calculator*}
 buffer and perform all the usual initializations; it simply will
 refrain from putting that buffer up in a new window.  The Quick
-Calculator refers to the @code{*Calculator*} buffer for all mode
+Calculator refers to the @file{*Calculator*} buffer for all mode
 settings.  Thus, for example, to set the precision that the Quick
 Calculator uses, simply run the full Calculator momentarily and use
 the regular @kbd{p} command.
@@ -10341,9 +10341,9 @@ that you must always press @kbd{w} yourself to see the messages).
 @pindex another-calc
 It is possible to have any number of Calc mode buffers at once.
 Usually this is done by executing @kbd{M-x another-calc}, which
-is similar to @kbd{C-x * c} except that if a @samp{*Calculator*}
+is similar to @kbd{C-x * c} except that if a @file{*Calculator*}
 buffer already exists, a new, independent one with a name of the
-form @samp{*Calculator*<@var{n}>} is created.  You can also use the
+form @file{*Calculator*<@var{n}>} is created.  You can also use the
 command @code{calc-mode} to put any buffer into Calculator mode, but
 this would ordinarily never be done.
 
@@ -10358,7 +10358,7 @@ global default values of these variables are used only when a new
 Calculator buffer is created.  The @code{calc-quit} command saves
 the stack and mode settings of the buffer being quit as the new defaults.
 
-There is only one trail buffer, @samp{*Calc Trail*}, used by all
+There is only one trail buffer, @file{*Calc Trail*}, used by all
 Calculator buffers.
 
 @node Troubleshooting Commands,  , Multiple Calculators, Introduction
@@ -11882,7 +11882,7 @@ the stack objects at the levels determined by the point and the mark.
 @pindex calc-edit-finish
 @cindex Editing the stack with Emacs
 The @kbd{`} (@code{calc-edit}) command creates a temporary buffer
-(@samp{*Calc Edit*}) for editing the top-of-stack value using regular
+(@file{*Calc Edit*}) for editing the top-of-stack value using regular
 Emacs commands.  Note that @kbd{`} is a backquote, not a quote. With a
 numeric prefix argument, it edits the specified number of stack entries
 at once.  (An argument of zero edits the entire stack; a negative
@@ -11895,9 +11895,9 @@ usual meaning (``insert a newline'') if it's a situation where you
 might want to insert new lines into the editing buffer.
 
 When you finish editing, the Calculator parses the lines of text in
-the @samp{*Calc Edit*} buffer as numbers or formulas, replaces the
+the @file{*Calc Edit*} buffer as numbers or formulas, replaces the
 original stack elements in the original buffer with these new values,
-then kills the @samp{*Calc Edit*} buffer.  The original Calculator buffer
+then kills the @file{*Calc Edit*} buffer.  The original Calculator buffer
 continues to exist during editing, but for best results you should be
 careful not to change it until you have finished the edit.  You can
 also cancel the edit by killing the buffer with @kbd{C-x k}.
@@ -11908,7 +11908,7 @@ For example, editing @samp{a + 2} to @samp{3 + 2} and pressing
 finish, Calc will put the result on the stack without evaluating it.
 
 If you give a prefix argument to @kbd{C-c C-c},
-Calc will not kill the @samp{*Calc Edit*} buffer.  You can switch
+Calc will not kill the @file{*Calc Edit*} buffer.  You can switch
 back to that buffer and continue editing if you wish.  However, you
 should understand that if you initiated the edit with @kbd{`}, the
 @kbd{C-c C-c} operation will be programmed to replace the top of the
@@ -11918,13 +11918,13 @@ with other editing commands, though, such as @kbd{s e}
 (@code{calc-edit-variable}; @pxref{Operations on Variables}).
 
 If the @code{calc-edit} command involves more than one stack entry,
-each line of the @samp{*Calc Edit*} buffer is interpreted as a
+each line of the @file{*Calc Edit*} buffer is interpreted as a
 separate formula.  Otherwise, the entire buffer is interpreted as
 one formula, with line breaks ignored.  (You can use @kbd{C-o} or
 @kbd{C-q C-j} to insert a newline in the buffer without pressing @key{RET}.)
 
 The @kbd{`} key also works during numeric or algebraic entry.  The
-text entered so far is moved to the @code{*Calc Edit*} buffer for
+text entered so far is moved to the @file{*Calc Edit*} buffer for
 more extensive editing than is convenient in the minibuffer.
 
 @node Trail Commands, Keep Arguments, Editing Stack Entries, Stack and Trail
@@ -23604,7 +23604,7 @@ of 3 is used.  The lower this limit is, the greater the chance that Calc
 will be unable to integrate a function it could otherwise handle.  Raising
 this limit allows the Calculator to solve more integrals, though the time
 it takes may grow exponentially.  You can monitor the integrator's actions
-by creating an Emacs buffer called @code{*Trace*}.  If such a buffer
+by creating an Emacs buffer called @file{*Trace*}.  If such a buffer
 exists, the @kbd{a i} command will write a log of its actions there.
 
 If you want to manipulate integrals in a purely symbolic way, you can
@@ -27653,17 +27653,17 @@ only during integration by @kbd{a i}.
 @subsection Debugging Rewrites
 
 @noindent
-If a buffer named @samp{*Trace*} exists, the rewrite mechanism will
+If a buffer named @file{*Trace*} exists, the rewrite mechanism will
 record some useful information there as it operates.  The original
 formula is written there, as is the result of each successful rewrite,
 and the final result of the rewriting.  All phase changes are also
 noted.
 
-Calc always appends to @samp{*Trace*}.  You must empty this buffer
+Calc always appends to @file{*Trace*}.  You must empty this buffer
 yourself periodically if it is in danger of growing unwieldy.
 
 Note that the rewriting mechanism is substantially slower when the
-@samp{*Trace*} buffer exists, even if the buffer is not visible on
+@file{*Trace*} buffer exists, even if the buffer is not visible on
 the screen.  Once you are done, you will probably want to kill this
 buffer (with @kbd{C-x k *Trace* @key{RET}}).  If you leave it in
 existence and forget about it, all your future rewrite commands will
@@ -27986,7 +27986,7 @@ be considered a ``femto-ton,'' but it is written as @samp{1000 at}
 @kindex u v
 @pindex calc-enter-units-table
 The @kbd{u v} (@code{calc-enter-units-table}) command displays the units table
-in another buffer called @code{*Units Table*}.  Each entry in this table
+in another buffer called @file{*Units Table*}.  Each entry in this table
 gives the unit name as it would appear in an expression, the definition
 of the unit in terms of simpler units, and a full name or description of
 the unit.  Fundamental units are defined as themselves; these are the
@@ -29267,7 +29267,7 @@ result is a surface plot where
 is the height of the point
 at coordinate @expr{(x_i, y_j)} on the surface.  The 3D graph will
 be displayed from a certain default viewpoint; you can change this
-viewpoint by adding a @samp{set view} to the @samp{*Gnuplot Commands*}
+viewpoint by adding a @samp{set view} to the @file{*Gnuplot Commands*}
 buffer as described later.  See the GNUPLOT documentation for a
 description of the @samp{set view} command.
 
@@ -29330,7 +29330,7 @@ you give the @kbd{g p} command, all the curves will be drawn superimposed
 on the same axes.
 
 The @kbd{g a} command (and many others that affect the current graph)
-will cause a special buffer, @samp{*Gnuplot Commands*}, to be displayed
+will cause a special buffer, @file{*Gnuplot Commands*}, to be displayed
 in another window.  This buffer is a template of the commands that will
 be sent to GNUPLOT when it is time to draw the graph.  The first
 @kbd{g a} command adds a @code{plot} command to this buffer.  Succeeding
@@ -29341,7 +29341,7 @@ directly, but you can if you wish.  The only constraint is that there
 must be only one @code{plot} command, and it must be the last command
 in the buffer.  If you want to save and later restore a complete graph
 configuration, you can use regular Emacs commands to save and restore
-the contents of the @samp{*Gnuplot Commands*} buffer.
+the contents of the @file{*Gnuplot Commands*} buffer.
 
 @vindex PlotData1
 @vindex PlotData2
@@ -29393,10 +29393,10 @@ separate ``z''s).  With a zero prefix, it takes three stack entries
 but the ``z'' entry is a vector of curve values.  With a negative
 prefix @expr{-n}, it takes @expr{n} vectors of the form @expr{[x, y, z]}.
 The @kbd{g A} command works by adding a @code{splot} (surface-plot)
-command to the @samp{*Gnuplot Commands*} buffer.
+command to the @file{*Gnuplot Commands*} buffer.
 
 (Although @kbd{g a} adds a 2D @code{plot} command to the
-@samp{*Gnuplot Commands*} buffer, Calc changes this to @code{splot}
+@file{*Gnuplot Commands*} buffer, Calc changes this to @code{splot}
 before sending it to GNUPLOT if it notices that the data points are
 evaluating to @code{xyz} calls.  It will not work to mix 2D and 3D
 @kbd{g a} curves in a single graph, although Calc does not currently
@@ -29428,7 +29428,7 @@ affect the last curve in the list.
 @kindex g p
 @pindex calc-graph-plot
 The @kbd{g p} (@code{calc-graph-plot}) command uses GNUPLOT to draw
-the graph described in the @samp{*Gnuplot Commands*} buffer.  Any
+the graph described in the @file{*Gnuplot Commands*} buffer.  Any
 GNUPLOT parameters which are not defined by commands in this buffer
 are reset to their default values.  The variables named in the @code{plot}
 command are written to a temporary data file and the variable names
@@ -29462,7 +29462,7 @@ the current graph is three-dimensional.
 The @kbd{g P} (@code{calc-graph-print}) command is like @kbd{g p},
 except that it sends the output to a printer instead of to the
 screen.  More precisely, @kbd{g p} looks for @samp{set terminal}
-or @samp{set output} commands in the @samp{*Gnuplot Commands*} buffer;
+or @samp{set output} commands in the @file{*Gnuplot Commands*} buffer;
 lacking these it uses the default settings.  However, @kbd{g P}
 ignores @samp{set terminal} and @samp{set output} commands and
 uses a different set of default values.  All of these values are
@@ -29481,7 +29481,7 @@ The @kbd{g g} (@code{calc-graph-grid}) command turns the ``grid''
 on and off.  It is off by default; tick marks appear only at the
 edges of the graph.  With the grid turned on, dotted lines appear
 across the graph at each tick mark.  Note that this command only
-changes the setting in @samp{*Gnuplot Commands*}; to see the effects
+changes the setting in @file{*Gnuplot Commands*}; to see the effects
 of the change you must give another @kbd{g p} command.
 
 @kindex g b
@@ -29519,7 +29519,7 @@ time. This is usually more than adequate, but there are cases where
 it will not be.  For example, plotting @expr{1 + x} with @expr{x} in the
 interval @samp{[0 ..@: 1e-6]} will round all the data points down
 to 1.0!  Putting the command @samp{set precision @var{n}} in the
-@samp{*Gnuplot Commands*} buffer will cause the data to be computed
+@file{*Gnuplot Commands*} buffer will cause the data to be computed
 at precision @var{n} instead of 5.  Since this is such a rare case,
 there is no keystroke-based command to set the precision.
 
@@ -29534,9 +29534,9 @@ The default title is blank (no title).
 The @kbd{g n} (@code{calc-graph-name}) command sets the title of an
 individual curve.  Like the other curve-manipulating commands, it
 affects the most recently added curve, i.e., the last curve on the
-list in the @samp{*Gnuplot Commands*} buffer.  To set the title of
+list in the @file{*Gnuplot Commands*} buffer.  To set the title of
 the other curves you must first juggle them to the end of the list
-with @kbd{g j}, or edit the @samp{*Gnuplot Commands*} buffer by hand.
+with @kbd{g j}, or edit the @file{*Gnuplot Commands*} buffer by hand.
 Curve titles appear in the key; if the key is turned off they are
 not used.
 
@@ -29549,7 +29549,7 @@ The @kbd{g t} (@code{calc-graph-title-x}) and @kbd{g T}
 and ``y'' axes, respectively.  These titles appear next to the
 tick marks on the left and bottom edges of the graph, respectively.
 Calc does not have commands to control the tick marks themselves,
-but you can edit them into the @samp{*Gnuplot Commands*} buffer if
+but you can edit them into the @file{*Gnuplot Commands*} buffer if
 you wish.  See the GNUPLOT documentation for details.
 
 @kindex g r
@@ -29663,7 +29663,7 @@ value.
 The @code{dumb} device is an interface to ``dumb terminals,'' i.e.,
 terminals with no special graphics facilities.  It writes a crude
 picture of the graph composed of characters like @code{-} and @code{|}
-to a buffer called @samp{*Gnuplot Trail*}, which Calc then displays.
+to a buffer called @file{*Gnuplot Trail*}, which Calc then displays.
 The graph is made the same size as the Emacs screen, which on most
 dumb terminals will be
 @texline @math{80\times24}
@@ -29678,7 +29678,7 @@ spaces.  These are the desired width and height of the graph in
 characters.  Also, the device name @code{big} is like @code{dumb}
 but creates a graph four times the width and height of the Emacs
 screen.  You will then have to scroll around to view the entire
-graph.  In the @samp{*Gnuplot Trail*} buffer, @key{SPC}, @key{DEL},
+graph.  In the @file{*Gnuplot Trail*} buffer, @key{SPC}, @key{DEL},
 @kbd{<}, and @kbd{>} are defined to scroll by one screenful in each
 of the four directions.
 
@@ -29697,7 +29697,7 @@ used.  Many other ``devices'' are really file formats like
 @code{postscript}; in these cases the output in the desired format
 goes into the file you name with @kbd{g O}.  Type @kbd{g O stdout
 @key{RET}} to set GNUPLOT to write to its standard output stream,
-i.e., to @samp{*Gnuplot Trail*}.  This is the default setting.
+i.e., to @file{*Gnuplot Trail*}.  This is the default setting.
 
 Another special output name is @code{tty}, which means that GNUPLOT
 is going to write graphics commands directly to its standard output,
@@ -29721,7 +29721,7 @@ permanently by the @kbd{m m} (@code{calc-save-modes}) command.  The
 default number of data points (see @kbd{g N}) and the X geometry
 (see @kbd{g X}) are also saved.  Other graph information is @emph{not}
 saved; you can save a graph's configuration simply by saving the contents
-of the @samp{*Gnuplot Commands*} buffer.
+of the @file{*Gnuplot Commands*} buffer.
 
 @vindex calc-gnuplot-plot-command
 @vindex calc-gnuplot-default-device
@@ -29762,7 +29762,7 @@ Entering @samp{800x500+0+0} would create an 800-by-500 pixel
 window in the upper-left corner of the screen.  This command has no
 effect if the current device is @code{windows}.
 
-The buffer called @samp{*Gnuplot Trail*} holds a transcript of the
+The buffer called @file{*Gnuplot Trail*} holds a transcript of the
 session with GNUPLOT@.  This shows the commands Calc has ``typed'' to
 GNUPLOT and the responses it has received.  Calc tries to notice when an
 error message has appeared here and display the buffer for you when
@@ -29779,7 +29779,7 @@ usage of GNUPLOT.
 @pindex calc-graph-command
 The @kbd{g C} (@code{calc-graph-command}) command prompts you to
 enter any line of text, then simply sends that line to the current
-GNUPLOT process.  The @samp{*Gnuplot Trail*} buffer looks deceptively
+GNUPLOT process.  The @file{*Gnuplot Trail*} buffer looks deceptively
 like a Shell buffer but you can't type commands in it yourself.
 Instead, you must use @kbd{g C} for this purpose.
 
@@ -29788,21 +29788,21 @@ Instead, you must use @kbd{g C} for this purpose.
 @pindex calc-graph-view-commands
 @pindex calc-graph-view-trail
 The @kbd{g v} (@code{calc-graph-view-commands}) and @kbd{g V}
-(@code{calc-graph-view-trail}) commands display the @samp{*Gnuplot Commands*}
-and @samp{*Gnuplot Trail*} buffers, respectively, in another window.
+(@code{calc-graph-view-trail}) commands display the @file{*Gnuplot Commands*}
+and @file{*Gnuplot Trail*} buffers, respectively, in another window.
 This happens automatically when Calc thinks there is something you
 will want to see in either of these buffers.  If you type @kbd{g v}
 or @kbd{g V} when the relevant buffer is already displayed, the
-buffer is hidden again.  (Note that on MS-Windows, the @samp{*Gnuplot
+buffer is hidden again.  (Note that on MS-Windows, the @file{*Gnuplot
 Trail*} buffer will usually show nothing of interest, because
 GNUPLOT's responses are not communicated back to Calc.)
 
 One reason to use @kbd{g v} is to add your own commands to the
-@samp{*Gnuplot Commands*} buffer.  Press @kbd{g v}, then use
+@file{*Gnuplot Commands*} buffer.  Press @kbd{g v}, then use
 @kbd{C-x o} to switch into that window.  For example, GNUPLOT has
 @samp{set label} and @samp{set arrow} commands that allow you to
 annotate your plots.  Since Calc doesn't understand these commands,
-you have to add them to the @samp{*Gnuplot Commands*} buffer
+you have to add them to the @file{*Gnuplot Commands*} buffer
 yourself, then use @w{@kbd{g p}} to replot using these new commands.  Note
 that your commands must appear @emph{before} the @code{plot} command.
 To get help on any GNUPLOT feature, type, e.g., @kbd{g C help set label}.
@@ -29826,7 +29826,7 @@ exit Emacs if you haven't killed it manually by then.
 @kindex g K
 @pindex calc-graph-kill
 The @kbd{g K} (@code{calc-graph-kill}) command is like @kbd{g q}
-except that it also views the @samp{*Gnuplot Trail*} buffer so that
+except that it also views the @file{*Gnuplot Trail*} buffer so that
 you can see the process being killed.  This is better if you are
 killing GNUPLOT because you think it has gotten stuck.
 
@@ -30181,7 +30181,7 @@ trail all at once.  This mode would normally be used when running
 Calc standalone (@pxref{Standalone Operation}).
 
 If you aren't using the X window system, you must switch into
-the @samp{*Calc Keypad*} window, place the cursor on the desired
+the @file{*Calc Keypad*} window, place the cursor on the desired
 ``key,'' and type @key{SPC} or @key{RET}.  If you think this
 is easier than using Calc normally, go right ahead.
 
@@ -32313,7 +32313,7 @@ after Calc itself is loaded.
 The properties of @code{calc-define} are evaluated in the same order
 that they were added.  They can assume that the Calc modules @file{calc.el},
 @file{calc-ext.el}, and @file{calc-macs.el} have been fully loaded, and
-that the @samp{*Calculator*} buffer will be the current buffer.
+that the @file{*Calculator*} buffer will be the current buffer.
 
 If your @code{calc-define} property only defines algebraic functions,
 you can be sure that it will have been evaluated before Calc tries to
@@ -32400,9 +32400,9 @@ the function with code that looks roughly like this:
 @end smallexample
 
 @findex calc-select-buffer
-The @code{calc-select-buffer} function selects the @samp{*Calculator*}
+The @code{calc-select-buffer} function selects the @file{*Calculator*}
 buffer if necessary, say, because the command was invoked from inside
-the @samp{*Calc Trail*} window.
+the @file{*Calc Trail*} window.
 
 @findex calc-set-command-flag
 You can call, for example, @code{(calc-set-command-flag 'no-align)} to
@@ -32432,7 +32432,7 @@ Do not clear @code{calc-inverse-flag}, @code{calc-hyperbolic-flag},
 and @code{calc-keep-args-flag} at the end of this command.
 
 @item do-edit
-Switch to buffer @samp{*Calc Edit*} after this command.
+Switch to buffer @file{*Calc Edit*} after this command.
 
 @item hold-trail
 Do not move trail pointer to end of trail when something is recorded
@@ -33154,7 +33154,7 @@ It is, of course, polite to put the Calc stack back the way you
 found it when you are done, unless the user of your program is
 actually expecting it to affect the stack.
 
-Note that you do not actually have to switch into the @samp{*Calculator*}
+Note that you do not actually have to switch into the @file{*Calculator*}
 buffer in order to use @code{calc-eval}; it temporarily switches into
 the stack buffer if necessary.
 
@@ -33689,7 +33689,7 @@ entries.)
 @end defun
 
 @defun calc-refresh
-Erase the @code{*Calculator*} buffer and reformat its contents from memory.
+Erase the @file{*Calculator*} buffer and reformat its contents from memory.
 This must be called after changing any parameter, such as the current
 display radix, which might change the appearance of existing stack
 entries.  (During a keyboard macro invoked by the @kbd{X} key, refreshing
index 2d916b8416cc8d00f39bf0a402c75e1b9188ea56..c7f51b4dcbe7fc238bebcdabf1bfea8335cac919 100644 (file)
@@ -751,6 +751,7 @@ very useful in this case.
 @end itemize
 
 @table @asis
+@c FIXME: This should be `electric-indent-just-newline' since GNU Emacs 24.4.
 @item @kbd{C-j} (@code{newline-and-indent})
 @kindex C-j
 @findex newline-and-indent
@@ -7054,6 +7055,7 @@ Set the variable @code{c-basic-offset}.  @xref{Getting Started}.
 @kindex RET
 @kindex C-j
 @emph{Why doesn't the @kbd{RET} key indent the new line?}
+@c FIXME: `electric-indent-mode' is enabled by default in GNU Emacs 24.4.
 
 Emacs's convention is that @kbd{RET} just adds a newline, and that
 @kbd{C-j} adds a newline and indents it.  You can make @kbd{RET} do this
index 9e9596d236ac32e3b53df503dd6ae719b28c5c8a..3d1ce5e5da39b5133030af0e3daeb6dda0ec19d0 100644 (file)
@@ -495,7 +495,7 @@ The same functionality is available from the menu opened with
 
 @node Member Display
 @section Displaying Members
-@cindex @samp{*Members*} buffer
+@cindex @file{*Members*} buffer
 @cindex @samp{*Globals*}
 @cindex freezing a member buffer
 @cindex member lists, in tree buffers
index 3ae040debeaa383d8aa37bf3a17b65f2ff2112d3..16c70a5647ed389379a9118eed5877ab8d730121 100644 (file)
@@ -764,7 +764,7 @@ correctly configured Android SDK via @cedet{} support.
 
 @defun cedet-android-sdk-root
 @anchor{cedet-android-sdk-root}
-The root to the android @var{SDK}.
+The root to the Android @var{SDK}.
 @end defun
 
 Android projects support different configurations including compile,
index c4937d4ae6edb55b602ca2d02ee9676dd9dbf365..ef27d339e9edcc92ad7462f75df79a3aa0a5e5d5 100644 (file)
@@ -91,7 +91,7 @@ initiate an Emacs session, by adding the following line to your
 @file{.emacs} file:
 
 @example
-(add-hook term-setup-hook 'edt-emulation-on)
+(add-hook 'emacs-startup-hook 'edt-emulation-on)
 @end example
 
 @noindent @strong{Important:} Be sure to read the rest of this manual.
@@ -295,7 +295,7 @@ initiate an Emacs session, by adding the following line to your
 @file{.emacs} file:
 
 @example
-(add-hook term-setup-hook 'edt-emulation-on)
+(add-hook 'emacs-startup-hook 'edt-emulation-on)
 @end example
 
 A reference sheet is included (later on) listing the default EDT
index 17f1af61200683cc47f795abd7af8df99682ca9e..314aa8db36e1287cafd166d9e64f53946279d46a 100644 (file)
@@ -1464,7 +1464,7 @@ default shell in Emacs, you can place the following in your init file:
   (setq comint-eol-on-send t)
   (setq w32-quote-process-args ?\")
 
-(setq shell-mode-hook 'my-shell-setup)
+(add-hook 'shell-mode-hook 'my-shell-setup)
 @end example
 
 If you find that you are having trouble with Emacs tracking drive
index a13d3df43f1020930bdbe4efd034f95e2d0794a8..51d2cc00d5a67f334a7e795361f5dd077b723534 100644 (file)
@@ -2410,12 +2410,12 @@ printed an error message?  If so, compiling from within Emacs using the
 @kbd{M-x compile} and @kbd{M-x recompile} commands is a much more
 effective way of doing that.  Emacs automatically intercepts the compile
 error messages, inserts them into a special buffer called
-@code{*compilation*}, and lets you visit the locus of each message in
+@file{*compilation*}, and lets you visit the locus of each message in
 the source.  Type @kbd{C-x `} to step through the offending lines one by
 one (starting with Emacs 22, you can also use @kbd{M-g M-p} and
 @kbd{M-g M-n} to go to the previous and next matches directly).  Click
 @kbd{Mouse-2} or press @key{RET} on a message text in the
-@code{*compilation*} buffer to go to the line whose number is mentioned
+@file{*compilation*} buffer to go to the line whose number is mentioned
 in that message.
 
 But if you indeed need to go to a certain text line, type @kbd{M-g M-g}
@@ -2684,8 +2684,8 @@ Use the function @code{w32-send-sys-command}.  For example, you can
 put the following in your @file{.emacs} file:
 
 @lisp
-(add-hook 'term-setup-hook
-          #'(lambda () (w32-send-sys-command ?\xF030)))
+(add-hook 'emacs-startup-hook
+          (lambda () (w32-send-sys-command ?\xF030)))
 @end lisp
 
 To avoid the slightly distracting visual effect of Emacs starting with
@@ -3594,12 +3594,12 @@ been executed but is not, then you will experience this problem (this
 code/file execution order is not enforced after startup).
 
 To postpone the execution of Emacs Lisp code until after terminal or
-window-system setup, treat the code as a @dfn{lambda list} and set the
-value of either the @code{term-setup-hook} or @code{window-setup-hook}
-variable to this lambda function.  For example,
+window-system setup, treat the code as a @dfn{lambda list} and add it to
+@code{emacs-startup-hook} (or @code{tty-setup-hook} in Emacs 24.4 and
+newer).  For example,
 
 @lisp
-(add-hook 'term-setup-hook
+(add-hook 'emacs-startup-hook
           (lambda ()
            (when (string-match "\\`vt220" (or (getenv "TERM") ""))
              ;; Make vt220's "Do" key behave like M-x:
index a06b45f665f2c43ca4a900e9437de4a2467b8306..bc1f2988738c86c0a609e8e465432f7061e8caf8 100644 (file)
@@ -610,7 +610,7 @@ This is the default.
 @item :depth-first
 Search for methods in the class hierarchy in a depth first order.
 @item :c3
-Searches for methods in in a linearized way that most closely matches
+Searches for methods in a linearized way that most closely matches
 what CLOS does when a monotonic class structure is defined.
 @end table
 
@@ -644,7 +644,7 @@ It is now possible to create objects of that class type.
 
 Calling @code{defclass} has defined two new functions.  One is the
 constructor @var{record}, and the other is the predicate,
-@var{record-p}.
+@var{record}-p.
 
 @defun record object-name &rest slots
 
@@ -1022,8 +1022,8 @@ This is the default.
 @item :depth-first
 Search for methods in the class hierarchy in a depth first order.
 @item :c3
-Searches for methods in in a linearized way that most closely matches
-what CLOS does when CLOS when a monotonic class structure is defined.
+Searches for methods in a linearized way that most closely matches
+what CLOS does when a monotonic class structure is defined.
 
 This is derived from the Dylan language documents by
 Kim Barrett et al.: A Monotonic Superclass Linearization for Dylan
@@ -1826,7 +1826,7 @@ It therefore has the same issues as that package.  Extensions include
 the ability to provide object names.
 @end table
 
-Defclass also supports class options, but does not currently use values
+defclass also supports class options, but does not currently use values
 of @code{:metaclass}, and @code{:default-initargs}.
 
 @item make-instance
index 9d250e06888f03470cf02ccff02c0267eaa65dd5..d6a95a46296c42f7b9c108bfe1ccbf40d288bcc5 100644 (file)
@@ -104,7 +104,7 @@ properly.  Well, there's something to be done in the last case.
 @defvar gnutls-log-level
 The @code{gnutls-log-level} variable sets the log level.  1 is
 verbose.  2 is very verbose.  5 is crazy.  Crazy!  Set it to 1 or 2
-and look in the @code{*Messages*} buffer for the debugging
+and look in the @file{*Messages*} buffer for the debugging
 information.
 @end defvar
 
@@ -148,7 +148,7 @@ instead.
 
 Because of the low-level interactions with the GnuTLS library, there
 is no way currently to ask if a certificate can be accepted.  You have
-to look in the @code{*Messages*} buffer.
+to look in the @file{*Messages*} buffer.
 @end defvar
 
 @defvar gnutls-min-prime-bits
index 4dbc1373d3267caaa4cabb5f2077f6e83a6c3a01..76794517692505eedef47bc792c58450b497c2d5 100644 (file)
@@ -97,7 +97,7 @@ EasyPG Assistant commands are prefixed by @samp{epa-}.  For example,
 
 EasyPG Assistant provides several cryptographic features which can be
 integrated into other Emacs functionalities.  For example, automatic
-encryption/decryption of @samp{*.gpg} files.
+encryption/decryption of @file{*.gpg} files.
 
 @node Commands
 @chapter Commands
@@ -161,7 +161,7 @@ Show all keys matched with @var{name} from the private keyring.
 @end deffn
 
 @noindent
-In @samp{*Keys*} buffer, several commands are available.  The common
+In @file{*Keys*} buffer, several commands are available.  The common
 use case is to export some keys to a file.  To do that, type @kbd{m}
 to select keys, type @kbd{o}, and then supply the filename.
 
@@ -355,10 +355,10 @@ use that option to ignore specific recipients for encryption purposes.
 
 @node Encrypting/decrypting gpg files
 @section Encrypting/decrypting gpg files
-By default, every file whose name ends with @samp{.gpg} will be
+By default, every file whose name ends with @file{.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.
-Similarly, when you save the buffer to a @samp{foo.gpg} file,
+Similarly, when you save the buffer to a @file{foo.gpg} file,
 encrypted data is written.
 
 The file name pattern for encrypted files can be controlled by
@@ -492,7 +492,7 @@ collect necessary information to fix the bug, such as:
 
 Before reporting the bug, you should set @code{epg-debug} in the
 @file{~/.emacs} file and repeat the bug.  Then, include the contents
-of the @samp{ *epg-debug*} buffer.  Note that the first letter of the
+of the @file{ *epg-debug*} buffer.  Note that the first letter of the
 buffer name is a whitespace.
 
 @node GNU Free Documentation License
index d57e629775c01a77a1089794462e0af595af7e7f..586fab6cd5b5cb4de5bcf843b5db9b7a18245b90 100644 (file)
@@ -513,7 +513,7 @@ occurs even if the test fails.
 
 An exception to this are messages that the code under test prints with
 @code{message} and similar logging; tests should not bother restoring
-the @code{*Message*} buffer to its original state.
+the @file{*Message*} buffer to its original state.
 
 The above guidelines imply that tests should avoid calling highly
 customizable commands such as @code{find-file}, except, of course, if
index befe3187d89eba5fd8d5f907901ee747c3c76811..d52f3d92747ec1dbdcb09f34694258189ccbbe59 100644 (file)
@@ -665,7 +665,7 @@ virtual devices.
 The buffer redirection operator, @code{>>>}, expects a buffer object
 on the right-hand side, into which it inserts the output of the
 left-hand side.  e.g., @samp{echo hello >>> #<buffer *scratch*>}
-inserts the string @code{"hello"} into the @code{*scratch*} buffer.
+inserts the string @code{"hello"} into the @file{*scratch*} buffer.
 
 @code{eshell-virtual-targets} is a list of mappings of virtual device
 names to functions.  Eshell comes with two virtual devices:
index 38bec5a4c8bdd2aac0fbacdf33dc9f5d53e64f9c..884850c98d7df0c0b9c5bd172134bb5603db6a46 100644 (file)
@@ -91,7 +91,7 @@ either prefix the file name with @code{file://} or use the command
 @kindex q
 @kindex w
 @kindex g
-  If loading the URL was successful the buffer @code{*eww*} is opened
+  If loading the URL was successful the buffer @file{*eww*} is opened
 and the web page is rendered in it.  You can leave EWW by pressing
 @kbd{q} or exit the browser by calling @kbd{eww-quit}.  To reload the
 web page hit @kbd{g} (@code{eww-reload}).  Pressing @kbd{w}
@@ -117,7 +117,7 @@ forth between them.  By pressing @kbd{l} (@code{eww-back-url}) you go
 to the previous URL.  You can go forward again with @kbd{r}
 (@code{eww-forward-url}).  If you want an overview of your browsing
 history press @kbd{H} (@code{eww-list-histories}) to open the history
-buffer @code{*eww history*}.  The history is lost when EWW is quit.
+buffer @file{*eww history*}.  The history is lost when EWW is quit.
 If you want to remember websites you can use bookmarks.
 
 @findex eww-add-bookmark
@@ -129,7 +129,7 @@ If you want to remember websites you can use bookmarks.
 (@code{eww-add-bookmark}) to store a bookmark for the current website.
 You can view stored bookmarks with @kbd{B}
 (@code{eww-list-bookmarks}).  This will open the bookmark buffer
-@code{*eww bookmarks*}.
+@file{*eww bookmarks*}.
 
 @findex eww-browse-with-external-browser
 @vindex shr-external-browser
@@ -156,7 +156,7 @@ browser by customizing
 @cindex Viewing Source
   You can view the source of a website with @kbd{v}
 (@code{eww-view-source}).  This will open a new buffer
-@code{*eww-source*} and insert the source.  The buffer will be set to
+@file{*eww-source*} and insert the source.  The buffer will be set to
 @code{html-mode} if available.
 
 @findex url-cookie-list
@@ -206,24 +206,7 @@ Emacs Web Wowser.  EWW was announced on 16 June 2013:
 @url{http://lars.ingebrigtsen.no/2013/06/16/eww/}.
 
 EWW was then moved from the Gnus repository to GNU Emacs and several
-developers started contributing to it as well.  A list of contributors
-at the time of writing this manual:
-
-@itemize @bullet
-@item Daniel Hackney
-@item Eli Zaretskii
-@item Glenn Morris
-@item Ivan Kanis
-@item Juri Linkov
-@item Katsumi Yamaoka
-@item Kenjiro NAKAYAMA
-@item Lars Magne Ingebrigtsen
-@item Leo Liu
-@item Paul Eggert
-@item Rüdiger Sonderfeld
-@item Stefan Monnier
-@item Ted Zlatanov
-@end itemize
+developers started contributing to it as well.
 
 @node GNU Free Documentation License
 @chapter GNU Free Documentation License
index 5125acd1f0d0439f10deb897b5787f2a1cc5a6a9..362bcd8280b3ce9d59069aa3c52f61a7fec6ece3 100644 (file)
@@ -255,7 +255,7 @@ syntax check tool).
 
 Flymake uses a simple logging facility for indicating important points
 in the control flow.  The logging facility sends logging messages to
-the @code{*Messages*} buffer.  The information logged can be used for
+the @file{*Messages*} buffer.  The information logged can be used for
 resolving various problems related to Flymake.
 
 Logging output is controlled by the @code{flymake-log-level}
@@ -326,7 +326,7 @@ started after @code{flymake-no-changes-timeout} seconds.
 @item flymake-gui-warnings-enabled
 A boolean flag indicating whether Flymake will show message boxes for
 non-recoverable errors.  If @code{flymake-gui-warnings-enabled} is
-@code{nil}, these errors will only be logged to the @code{*Messages*}
+@code{nil}, these errors will only be logged to the @file{*Messages*}
 buffer.
 
 @item flymake-start-syntax-check-on-newline
index 6ad0c26f9ac0269ba6e0560487d0df98d28f54b5..10bc617734fc5d71e900b69f1700dde8f4bad181 100644 (file)
@@ -461,7 +461,7 @@ Group Buffer
 * Selecting a Group::           Actually reading news.
 * Subscription Commands::       Unsubscribing, killing, subscribing.
 * Group Data::                  Changing the info for a group.
-* Group Levels::                Levels? What are those, then?
+* Group Levels::                Levels?  What are those, then?
 * Group Score::                 A mechanism for finding out what groups you like.
 * Marking Groups::              You can mark groups for later processing.
 * Foreign Groups::              Creating and editing groups.
@@ -521,7 +521,7 @@ Summary Buffer
 * Charsets::                    Character set issues.
 * Article Commands::            Doing various things with the article buffer.
 * Summary Sorting::             Sorting the summary buffer in various ways.
-* Finding the Parent::          No child support? Get the parent.
+* Finding the Parent::          No child support?  Get the parent.
 * Alternative Approaches::      Reading using non-default summaries.
 * Tree Display::                A more visual display of threads.
 * Mail Group Commands::         Some commands can only be used in mail groups.
@@ -998,7 +998,7 @@ terminology section (@pxref{Terminology}).
 @cindex finding news
 
 First of all, you should know that there is a special buffer called
-@code{*Server*} that lists all the servers Gnus knows about.  You can
+@file{*Server*} that lists all the servers Gnus knows about.  You can
 press @kbd{^} from the Group buffer to see it.  In the Server buffer,
 you can press @kbd{RET} on a defined server to see all the groups it
 serves (subscribed or not!).  You can also add or delete servers, edit
@@ -1095,7 +1095,7 @@ your mail without bothering with the server at all, you can use the
 if you're in a hurry as well.  This command will not attempt to contact
 your primary server---instead, it will just activate all groups on level
 1 and 2.  (You should preferably keep no native groups on those two
-levels.) Also @pxref{Group Levels}.
+levels.)  Also @pxref{Group Levels}.
 
 
 @node Slave Gnusae
@@ -1678,7 +1678,7 @@ long as Gnus is active.
 * Selecting a Group::           Actually reading news.
 * Subscription Commands::       Unsubscribing, killing, subscribing.
 * Group Data::                  Changing the info for a group.
-* Group Levels::                Levels? What are those, then?
+* Group Levels::                Levels?  What are those, then?
 * Group Score::                 A mechanism for finding out what groups you like.
 * Marking Groups::              You can mark groups for later processing.
 * Foreign Groups::              Creating and editing groups.
@@ -2854,7 +2854,7 @@ If the group parameter list has the element @code{(visible . t)},
 that group will always be visible in the Group buffer, regardless
 of whether it has any unread articles.
 
-This parameter cannot be set via @code{gnus-parameters}. See
+This parameter cannot be set via @code{gnus-parameters}.  See
 @code{gnus-permanently-visible-groups} as an alternative.
 
 @item broken-reply-to
@@ -3036,8 +3036,8 @@ like this in the group parameters:
 
 If you're using topics to organize your group buffer
 (@pxref{Group Topics}), note that posting styles can also be set in
-the topics parameters. Posting styles in topic parameters apply to all
-groups in this topic. More precisely, the posting-style settings for a
+the topics parameters.  Posting styles in topic parameters apply to all
+groups in this topic.  More precisely, the posting-style settings for a
 group result from the hierarchical merging of all posting-style
 entries in the parameters of this group and all the topics it belongs
 to.
@@ -4750,7 +4750,7 @@ command or better use it as a prefix key.  For example:
 * Charsets::                    Character set issues.
 * Article Commands::            Doing various things with the article buffer.
 * Summary Sorting::             Sorting the summary buffer in various ways.
-* Finding the Parent::          No child support? Get the parent.
+* Finding the Parent::          No child support?  Get the parent.
 * Alternative Approaches::      Reading using non-default summaries.
 * Tree Display::                A more visual display of threads.
 * Mail Group Commands::         Some commands can only be used in mail groups.
@@ -5888,7 +5888,7 @@ have posted almost the same article twice.
 If you have just posted the article, and change your mind right away,
 there is a trick you can use to cancel/supersede the article without
 waiting for the article to appear on your site first.  You simply return
-to the post buffer (which is called @code{*sent ...*}).  There you will
+to the post buffer (which is called @file{*sent ...*}).  There you will
 find the article you just posted, with all the headers intact.  Change
 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
 header by substituting one of those words for the word
@@ -8508,7 +8508,7 @@ pseudo-articles when decoding.  It is @code{t} by default.
 
 So; there you are, reading your @emph{pseudo-articles} in your
 @emph{virtual newsgroup} from the @emph{virtual server}; and you think:
-Why isn't anything real anymore? How did we get here?
+Why isn't anything real anymore?  How did we get here?
 
 
 @node Article Treatment
@@ -9546,7 +9546,7 @@ Display the original date (@code{gnus-article-date-original}).  This can
 be useful if you normally use some other conversion function and are
 worried that it might be doing something totally wrong.  Say, claiming
 that the article was posted in 1854.  Although something like that is
-@emph{totally} impossible.  Don't you trust me? *titter*
+@emph{totally} impossible.  Don't you trust me?  *titter*
 
 @end table
 
@@ -11139,7 +11139,7 @@ If you're in the habit of exiting groups, and then changing your mind
 about it, you might set @code{gnus-kill-summary-on-exit} to @code{nil}.
 If you do that, Gnus won't kill the summary buffer when you exit it.
 (Quelle surprise!)  Instead it will change the name of the buffer to
-something like @samp{*Dead Summary ... *} and install a minor mode
+something like @file{*Dead Summary ... *} and install a minor mode
 called @code{gnus-dead-summary-mode}.  Now, if you switch back to this
 buffer, you'll find that all keys are mapped to a function called
 @code{gnus-summary-wake-up-the-dead}.  So tapping any keys in a dead
@@ -13732,7 +13732,7 @@ A hook run before attempting to connect to an @acronym{NNTP} server.
 @item nntp-record-commands
 @vindex nntp-record-commands
 If non-@code{nil}, @code{nntp} will log all commands it sends to the
-@acronym{NNTP} server (along with a timestamp) in the @samp{*nntp-log*}
+@acronym{NNTP} server (along with a timestamp) in the @file{*nntp-log*}
 buffer.  This is useful if you are debugging a Gnus/@acronym{NNTP} connection
 that doesn't seem to work.
 
@@ -14302,7 +14302,7 @@ Here's a complete example @code{nnimap} backend with a client-side
 @cindex reading mail
 @cindex mail
 
-Reading mail with a newsreader---isn't that just plain WeIrD@? But of
+Reading mail with a newsreader---isn't that just plain WeIrD@?  But of
 course.
 
 @menu
@@ -16001,7 +16001,7 @@ this, it keeps a cache of old @code{Message-ID}s:
 default.  The approximate maximum number of @code{Message-ID}s stored
 there is controlled by the @code{nnmail-message-id-cache-length}
 variable, which is 1000 by default.  (So 1000 @code{Message-ID}s will be
-stored.) If all this sounds scary to you, you can set
+stored.)  If all this sounds scary to you, you can set
 @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by
 default), and @code{nnmail} won't delete duplicate mails.  Instead it
 will insert a warning into the head of the mail saying that it thinks
@@ -16767,11 +16767,11 @@ incompatible group parameters, slightly different from those of other
 mail back ends.
 
 @code{nnmaildir} is largely similar to @code{nnml}, with some notable
-differences. Each message is stored in a separate file, but the
+differences.  Each message is stored in a separate file, but the
 filename is unrelated to the article number in Gnus. @code{nnmaildir}
 also stores the equivalent of @code{nnml}'s overview files in one file
 per article, so it uses about twice as many inodes as @code{nnml}.
-(Use @code{df -i} to see how plentiful your inode supply is.) If this
+(Use @code{df -i} to see how plentiful your inode supply is.)  If this
 slows you down or takes up very much space, a non-block-structured
 file system.
 
@@ -18100,7 +18100,7 @@ sending the diary message to them as well.
 @item
 However, since @code{nndiary} also has a @code{request-post} method, you
 can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the
-message won't actually be sent; just stored locally in the group. This
+message won't actually be sent; just stored locally in the group.  This
 comes in very handy for private appointments.
 @end itemize
 
@@ -19438,7 +19438,7 @@ Display the score of the current article
 @kindex V t (Summary)
 @findex gnus-score-find-trace
 Display all score rules that have been used on the current article
-(@code{gnus-score-find-trace}).  In the @code{*Score Trace*} buffer, you
+(@code{gnus-score-find-trace}).  In the @file{*Score Trace*} buffer, you
 may type @kbd{e} to edit score file corresponding to the score rule on
 current line and @kbd{f} to format (@code{gnus-score-pretty-print}) the
 score file and edit it.
@@ -20934,7 +20934,7 @@ very interesting:
 @end example
 
 Suppose you're reading a high volume group and you're only interested
-in replies. The plan is to score down all articles that don't have
+in replies.  The plan is to score down all articles that don't have
 subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all
 parents of articles that have subjects that begin with reply marks.
 
@@ -21065,7 +21065,7 @@ comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
 as well.
 
 This chapter describes tools for searching groups and servers for
-articles matching a query and then retrieving those articles. Gnus
+articles matching a query and then retrieving those articles.  Gnus
 provides a simpler mechanism for searching through articles in a summary buffer
 to find those matching a pattern. @xref{Searching for Articles}.
 
@@ -21091,13 +21091,13 @@ within gnus.
 @subsection What is nnir?
 
 @code{nnir} is a Gnus interface to a number of tools for searching
-through mail and news repositories. Different backends (like
+through mail and news repositories.  Different backends (like
 @code{nnimap} and @code{nntp}) work with different tools (called
 @dfn{engines} in @code{nnir} lingo), but all use the same basic search
 interface.
 
 The @code{nnimap} and @code{gmane} search engines should work with no
-configuration. Other engines require a local index that needs to be
+configuration.  Other engines require a local index that needs to be
 created and maintained outside of Gnus.
 
 
@@ -21108,35 +21108,35 @@ In the group buffer typing @kbd{G G} will search the group on the
 current line by calling @code{gnus-group-make-nnir-group}.  This prompts
 for a query string, creates an ephemeral @code{nnir} group containing
 the articles that match this query, and takes you to a summary buffer
-showing these articles. Articles may then be read, moved and deleted
+showing these articles.  Articles may then be read, moved and deleted
 using the usual commands.
 
 The @code{nnir} group made in this way is an @code{ephemeral} group,
 and some changes are not permanent: aside from reading, moving, and
-deleting, you can't act on the original article. But there is an
+deleting, you can't act on the original article.  But there is an
 alternative: you can @emph{warp} (i.e., jump) to the original group
 for the article on the current line with @kbd{A W}, aka
-@code{gnus-warp-to-article}. Even better, the function
+@code{gnus-warp-to-article}.  Even better, the function
 @code{gnus-summary-refer-thread}, bound by default in summary buffers
 to @kbd{A T}, will first warp to the original group before it works
-its magic and includes all the articles in the thread. From here you
+its magic and includes all the articles in the thread.  From here you
 can read, move and delete articles, but also copy them, alter article
-marks, whatever. Go nuts.
+marks, whatever.  Go nuts.
 
 You say you want to search more than just the group on the current line?
-No problem: just process-mark the groups you want to search. You want
-even more? Calling for an nnir search with the cursor on a topic heading
+No problem: just process-mark the groups you want to search.  You want
+even more?  Calling for an nnir search with the cursor on a topic heading
 will search all the groups under that heading.
 
-Still not enough? OK, in the server buffer
+Still not enough?  OK, in the server buffer
 @code{gnus-group-make-nnir-group} (now bound to @kbd{G}) will search all
-groups from the server on the current line. Too much? Want to ignore
-certain groups when searching, like spam groups? Just customize
+groups from the server on the current line.  Too much?  Want to ignore
+certain groups when searching, like spam groups?  Just customize
 @code{nnir-ignored-newsgroups}.
 
 One more thing: individual search engines may have special search
-features. You can access these special features by giving a prefix-arg
-to @code{gnus-group-make-nnir-group}. If you are searching multiple
+features.  You can access these special features by giving a prefix-arg
+to @code{gnus-group-make-nnir-group}.  If you are searching multiple
 groups with different search engines you will be prompted for the
 special search features for each engine separately.
 
@@ -21144,16 +21144,16 @@ special search features for each engine separately.
 @node Setting up nnir
 @subsection Setting up nnir
 
-To set up nnir you may need to do some prep work. Firstly, you may need
-to configure the search engines you plan to use. Some of them, like
-@code{imap} and @code{gmane}, need no special configuration. Others,
+To set up nnir you may need to do some prep work.  Firstly, you may need
+to configure the search engines you plan to use.  Some of them, like
+@code{imap} and @code{gmane}, need no special configuration.  Others,
 like @code{namazu} and @code{swish}, require configuration as described
-below. Secondly, you need to associate a search engine with a server or
+below.  Secondly, you need to associate a search engine with a server or
 a backend.
 
 If you just want to use the @code{imap} engine to search @code{nnimap}
 servers, and the @code{gmane} engine to search @code{gmane} then you
-don't have to do anything. But you might want to read the details of the
+don't have to do anything.  But you might want to read the details of the
 query language anyway.
 
 @menu
@@ -21173,9 +21173,9 @@ query language anyway.
 
 
 When searching a group, @code{nnir} needs to know which search engine to
-use. You can configure a given server to use a particular engine by
+use.  You can configure a given server to use a particular engine by
 setting the server variable @code{nnir-search-engine} to the engine
-name. For example to use the @code{namazu} engine to search the server
+name.  For example to use the @code{namazu} engine to search the server
 named @code{home} you can use
 
 @lisp
@@ -21186,14 +21186,14 @@ named @code{home} you can use
 @end lisp
 
 Alternatively you might want to use a particular engine for all servers
-with a given backend. For example, you might want to use the @code{imap}
-engine for all servers using the @code{nnimap} backend. In this case you
-can customize the variable @code{nnir-method-default-engines}. This is
-an alist of pairs of the form @code{(backend . engine)}. By default this
+with a given backend.  For example, you might want to use the @code{imap}
+engine for all servers using the @code{nnimap} backend.  In this case you
+can customize the variable @code{nnir-method-default-engines}.  This is
+an alist of pairs of the form @code{(backend . engine)}.  By default this
 variable is set to use the @code{imap} engine for all servers using the
 @code{nnimap} backend, and the @code{gmane} backend for @code{nntp}
-servers. (Don't worry, the @code{gmane} search engine won't actually try
-to search non-gmane @code{nntp} servers.) But if you wanted to use
+servers.  (Don't worry, the @code{gmane} search engine won't actually try
+to search non-gmane @code{nntp} servers.)  But if you wanted to use
 @code{namazu} for all your servers with an @code{nnimap} backend you
 could change this to
 
@@ -21215,10 +21215,10 @@ features (inspired by the Google search input language):
 
 @item Boolean query operators
 AND, OR, and NOT are supported, and parentheses can be used to control
-operator precedence, e.g., (emacs OR xemacs) AND linux. Note that
+operator precedence, e.g., (emacs OR xemacs) AND linux.  Note that
 operators must be written with all capital letters to be
-recognized. Also preceding a term with a @minus{} sign is equivalent to NOT
-term.
+recognized.  Also preceding a term with a @minus{} sign is equivalent
+to NOT term.
 
 @item Automatic AND queries
 If you specify multiple words then they will be treated as an AND
@@ -21230,20 +21230,20 @@ literal string.
 
 @end table
 
-By default the whole message will be searched. The query can be limited
-to a specific part of a message by using a prefix-arg. After inputting
+By default the whole message will be searched.  The query can be limited
+to a specific part of a message by using a prefix-arg.  After inputting
 the query this will prompt (with completion) for a message part.
 Choices include ``Whole message'', ``Subject'', ``From'', and
-``To''. Any unrecognized input is interpreted as a header name. For
+``To''.  Any unrecognized input is interpreted as a header name.  For
 example, typing @kbd{Message-ID} in response to this prompt will limit
 the query to the Message-ID header.
 
 Finally selecting ``Imap'' will interpret the query as a raw
-@acronym{IMAP} search query. The format of such queries can be found in
+@acronym{IMAP} search query.  The format of such queries can be found in
 RFC3501.
 
 If you don't like the default of searching whole messages you can
-customize @code{nnir-imap-default-search-key}. For example to use
+customize @code{nnir-imap-default-search-key}.  For example to use
 @acronym{IMAP} queries by default
 
 @lisp
@@ -21273,14 +21273,14 @@ The search engine converts all text to utf-8, so searching should work
 in any language.
 
 @item Stopwords
-Common English words (like 'the' and 'a') are ignored by default. You
+Common English words (like 'the' and 'a') are ignored by default.  You
 can override this by prefixing such words with a + (e.g., +the) or
 enclosing the word in quotes (e.g., "the").
 
 @end table
 
 The query can be limited to articles by a specific author using a
-prefix-arg. After inputting the query this will prompt for an author
+prefix-arg.  After inputting the query this will prompt for an author
 name (or part of a name) to match.
 
 @node The swish++ Engine
@@ -21294,15 +21294,15 @@ Documentation for swish++ may be found at the swish++ sourceforge page:
 @table @code
 
 @item nnir-swish++-program
-The name of the swish++ executable. Defaults to @code{search}
+The name of the swish++ executable.  Defaults to @code{search}
 
 @item nnir-swish++-additional-switches
 A list of strings to be given as additional arguments to
-swish++. @code{nil} by default.
+swish++.  @code{nil} by default.
 
 @item nnir-swish++-remove-prefix
 The prefix to remove from each file name returned by swish++ in order
-to get a group name. By default this is @code{$HOME/Mail}.
+to get a group name.  By default this is @code{$HOME/Mail}.
 
 @end table
 
@@ -21317,15 +21317,15 @@ Documentation for swish-e may be found at the swish-e homepage
 @table @code
 
 @item nnir-swish-e-program
-The name of the swish-e search program. Defaults to @code{swish-e}.
+The name of the swish-e search program.  Defaults to @code{swish-e}.
 
 @item nnir-swish-e-additional-switches
 A list of strings to be given as additional arguments to
-swish-e. @code{nil} by default.
+swish-e.  @code{nil} by default.
 
 @item nnir-swish-e-remove-prefix
 The prefix to remove from each file name returned by swish-e in order
-to get a group name. By default this is @code{$HOME/Mail}.
+to get a group name.  By default this is @code{$HOME/Mail}.
 
 @end table
 
@@ -21338,7 +21338,7 @@ where to find them by setting the @code{nnir-namazu-index-directory}
 variable.
 
 To work correctly the @code{nnir-namazu-remove-prefix} variable must
-also be correct. This is the prefix to remove from each file name
+also be correct.  This is the prefix to remove from each file name
 returned by Namazu in order to get a proper group name (albeit with `/'
 instead of `.').
 
@@ -21358,7 +21358,7 @@ output format.  Good switches to use include `--sort', `--ascending',
 information on valid switches.
 
 Mail must first be indexed  with the `mknmz' program.  Read the documentation
-for namazu to create a configuration file. Here is an example:
+for namazu to create a configuration file.  Here is an example:
 
 @cartouche
 @example
@@ -21423,8 +21423,8 @@ This engine is obsolete.
 @table @code
 
 @item nnir-method-default-engines
-Alist of pairs of server backends and search engines. The default associations
-are
+Alist of pairs of server backends and search engines.  The default
+associations are
 @example
 (nnimap . imap)
 (nntp . gmane)
@@ -21451,9 +21451,9 @@ If nil (the default) this will use @code{gnus-summary-line-format}.
 If non-nil, a function that retrieves article headers rather than using
 the gnus built-in function.  This function takes an article list and
 group as arguments and populates the `nntp-server-buffer' with the
-retrieved headers. It should then return either 'nov or 'headers
-indicating the retrieved header format. Failure to retrieve headers
-should return @code{nil}
+retrieved headers.  It should then return either 'nov or 'headers
+indicating the retrieved header format.  Failure to retrieve headers
+should return @code{nil}.
 
 If this variable is nil, or if the provided function returns nil for a
 search result, @code{gnus-retrieve-headers} will be called instead."
@@ -21881,104 +21881,104 @@ tips and tricks}).
 @subsection Propagating marks
 
 First of: you really need a patched mairix binary for using the marks
-propagation feature efficiently. Otherwise, you would have to update
-the mairix database all the time. You can get the patch at
+propagation feature efficiently.  Otherwise, you would have to update
+the mairix database all the time.  You can get the patch at
 
 @uref{http://www.randomsample.de/mairix-maildir-patch.tar}
 
 You need the mairix v0.21 source code for this patch; everything else
-is explained in the accompanied readme file. If you don't want to use
+is explained in the accompanied readme file.  If you don't want to use
 marks propagation, you don't have to apply these patches, but they also
 fix some annoyances regarding changing maildir flags, so it might still
 be useful to you.
 
 With the patched mairix binary, you can use @code{nnmairix} as an
-alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
+alternative to mail splitting (@pxref{Fancy Mail Splitting}).  For
 example, instead of splitting all mails from @samp{david@@foobar.com}
 into a group, you can simply create a search group with the query
-@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
+@samp{f:david@@foobar.com}.  This is actually what ``smart folders'' are
 all about: simply put everything in one mail folder and dynamically
-create searches instead of splitting. This is more flexible, since you
-can dynamically change your folders any time you want to. This also
+create searches instead of splitting.  This is more flexible, since you
+can dynamically change your folders any time you want to.  This also
 implies that you will usually read your mails in the @code{nnmairix}
 groups instead of your ``real'' mail groups.
 
 There is one problem, though: say you got a new mail from
 @samp{david@@foobar.com}; it will now show up in two groups, the
 ``real'' group (your INBOX, for example) and in the @code{nnmairix}
-search group (provided you have updated the mairix database). Now you
-enter the @code{nnmairix} group and read the mail. The mail will be
+search group (provided you have updated the mairix database).  Now you
+enter the @code{nnmairix} group and read the mail.  The mail will be
 marked as read, but only in the @code{nnmairix} group---in the ``real''
 mail group it will be still shown as unread.
 
 You could now catch up the mail group (@pxref{Group Data}), but this is
 tedious and error prone, since you may overlook mails you don't have
-created @code{nnmairix} groups for. Of course, you could first use
+created @code{nnmairix} groups for.  Of course, you could first use
 @code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
 shortcuts}) and then read the mail in the original group, but that's
 even more cumbersome.
 
 Clearly, the easiest way would be if marks could somehow be
-automatically set for the original article. This is exactly what
+automatically set for the original article.  This is exactly what
 @emph{marks propagation} is about.
 
-Marks propagation is inactive by default. You can activate it for a
+Marks propagation is inactive by default.  You can activate it for a
 certain @code{nnmairix} group with
 @code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
-p}). This function will warn you if you try to use it with your default
+p}).  This function will warn you if you try to use it with your default
 search group; the reason is that the default search group is used for
 temporary searches, and it's easy to accidentally propagate marks from
-this group. However, you can ignore this warning if you really want to.
+this group.  However, you can ignore this warning if you really want to.
 
 With marks propagation enabled, all the marks you set in a @code{nnmairix}
-group should now be propagated to the original article. For example,
+group should now be propagated to the original article.  For example,
 you can now tick an article (by default with @kbd{!}) and this mark should
 magically be set for the original article, too.
 
 A few more remarks which you may or may not want to know:
 
 @vindex nnmairix-propagate-marks-upon-close
-Marks will not be set immediately, but only upon closing a group. This
+Marks will not be set immediately, but only upon closing a group.  This
 not only makes marks propagation faster, it also avoids problems with
 dangling symlinks when dealing with maildir files (since changing flags
-will change the file name). You can also control when to propagate marks
+will change the file name).  You can also control when to propagate marks
 via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
 details).
 
 Obviously, @code{nnmairix} will have to look up the original group for every
-article you want to set marks for. If available, @code{nnmairix} will first use
-the registry for determining the original group. The registry is very
+article you want to set marks for.  If available, @code{nnmairix} will first
+use the registry for determining the original group.  The registry is very
 fast, hence you should really, really enable the registry when using
-marks propagation. If you don't have to worry about RAM and disc space,
+marks propagation.  If you don't have to worry about RAM and disc space,
 set @code{gnus-registry-max-entries} to a large enough value; to be on
 the safe side, choose roughly the amount of mails you index with mairix.
 
 @vindex nnmairix-only-use-registry
 If you don't want to use the registry or the registry hasn't seen the
 original article yet, @code{nnmairix} will use an additional mairix
-search for determining the file name of the article. This, of course, is
+search for determining the file name of the article.  This, of course, is
 way slower than the registry---if you set hundreds or even thousands of
-marks this way, it might take some time. You can avoid this situation by
+marks this way, it might take some time.  You can avoid this situation by
 setting @code{nnmairix-only-use-registry} to t.
 
 Maybe you also want to propagate marks the other way round, i.e., if you
 tick an article in a "real" mail group, you'd like to have the same
-article in a @code{nnmairix} group ticked, too. For several good
-reasons, this can only be done efficiently if you use maildir. To
+article in a @code{nnmairix} group ticked, too.  For several good
+reasons, this can only be done efficiently if you use maildir.  To
 immediately contradict myself, let me mention that it WON'T work with
 @code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
-not in the file name. Therefore, propagating marks to @code{nnmairix}
+not in the file name.  Therefore, propagating marks to @code{nnmairix}
 groups will usually only work if you use an IMAP server which uses
 maildir as its file format.
 
 @vindex nnmairix-propagate-marks-to-nnmairix-groups
 If you work with this setup, just set
 @code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
-happens. If you don't like what you see, just set it to @code{nil} again. One
-problem might be that you get a wrong number of unread articles; this
+happens.  If you don't like what you see, just set it to @code{nil} again.
+One problem might be that you get a wrong number of unread articles; this
 usually happens when you delete or expire articles in the original
-groups. When this happens, you can recreate the @code{nnmairix} group on the
-back end using @kbd{G b d}.
+groups.  When this happens, you can recreate the @code{nnmairix} group on
+the back end using @kbd{G b d}.
 
 @node nnmairix tips and tricks
 @subsection nnmairix tips and tricks
@@ -21988,7 +21988,7 @@ back end using @kbd{G b d}.
 Checking Mail
 
 @findex nnmairix-update-groups
-I put all my important mail groups at group level 1. The mairix groups
+I put all my important mail groups at group level 1.  The mairix groups
 have group level 5, so they do not get checked at start up (@pxref{Group
 Levels}).
 
@@ -22006,7 +22006,7 @@ I use the following to check for mails:
 @end lisp
 
 Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
-server. See the doc string for @code{nnmairix-update-groups} for
+server.  See the doc string for @code{nnmairix-update-groups} for
 details.
 
 @item
@@ -22018,13 +22018,13 @@ articles always stay unread:
 Hit @kbd{G b g}, enter group name (e.g., @samp{important}), use
 @samp{F:f} as query and do not include threads.
 
-Now activate marks propagation for this group by using @kbd{G b p}. Then
+Now activate marks propagation for this group by using @kbd{G b p}.  Then
 activate the always-unread feature by using @kbd{G b r} twice.
 
 So far so good---but how do you remove the tick marks in the @code{nnmairix}
 group?  There are two options: You may simply use
 @code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
-tick marks from the original article. The other possibility is to set
+tick marks from the original article.  The other possibility is to set
 @code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
 comments about this option.  If it works for you, the tick marks should
 also exist in the @code{nnmairix} group and you can remove them as usual,
@@ -22033,19 +22033,19 @@ e.g., by marking an article as read.
 When you have removed a tick mark from the original article, this
 article should vanish from the @code{nnmairix} group after you have updated the
 mairix database and updated the group.  Fortunately, there is a function
-for doing exactly that: @code{nnmairix-update-groups}. See the previous code
+for doing exactly that: @code{nnmairix-update-groups}.  See the previous code
 snippet and the doc string for details.
 
 @item
 Dealing with auto-subscription of mail groups
 
 As described before, all @code{nnmairix} groups are in fact stored on
-the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
-see them when you enter the back end server in the server buffer. You
-should not subscribe these groups! Unfortunately, these groups will
+the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}.  You can
+see them when you enter the back end server in the server buffer.  You
+should not subscribe these groups!  Unfortunately, these groups will
 usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
 @code{nnml}, i.e., you will suddenly see groups of the form
-@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
+@samp{zz_mairix*} pop up in your group buffer.  If this happens to you,
 simply kill these groups with C-k.  For avoiding this, turn off
 auto-subscription completely by setting the variable
 @code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
@@ -22103,25 +22103,25 @@ mairix does only support us-ascii characters.
 @code{nnmairix} uses a rather brute force method to force Gnus to
 completely reread the group on the mail back end after mairix was
 called---it simply deletes and re-creates the group on the mail
-back end. So far, this has worked for me without any problems, and I
+back end.  So far, this has worked for me without any problems, and I
 don't see how @code{nnmairix} could delete other mail groups than its
 own, but anyway: you really should have a backup of your mail
 folders.
 
 @item
 All necessary information is stored in the group parameters
-(@pxref{Group Parameters}). This has the advantage that no active file
+(@pxref{Group Parameters}).  This has the advantage that no active file
 is needed, but also implies that when you kill a @code{nnmairix} group,
 it is gone for good.
 
 @item
 @findex nnmairix-purge-old-groups
 If you create and kill a lot of @code{nnmairix} groups, the
-``zz_mairix-*'' groups will accumulate on the mail back end server. To
+``zz_mairix-*'' groups will accumulate on the mail back end server.  To
 delete old groups which are no longer needed, call
-@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
+@code{nnmairix-purge-old-groups}.  Note that this assumes that you don't
 save any ``real'' mail in folders of the form
-@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
+@code{zz_mairix-<NAME>-<NUMBER>}.  You can change the prefix of
 @code{nnmairix} groups by changing the variable
 @code{nnmairix-group-prefix}.
 
@@ -22132,14 +22132,14 @@ for mairix (@pxref{Propagating marks}):
 A problem can occur when using @code{nnmairix} with maildir folders and
 comes with the fact that maildir stores mail flags like @samp{Seen} or
 @samp{Replied} by appending chars @samp{S} and @samp{R} to the message
-file name, respectively. This implies that currently you would have to
+file name, respectively.  This implies that currently you would have to
 update the mairix database not only when new mail arrives, but also when
-mail flags are changing. The same applies to new mails which are indexed
+mail flags are changing.  The same applies to new mails which are indexed
 while they are still in the @samp{new} folder but then get moved to
-@samp{cur} when Gnus has seen the mail. If you don't update the database
+@samp{cur} when Gnus has seen the mail.  If you don't update the database
 after this has happened, a mairix query can lead to symlinks pointing to
-non-existing files. In Gnus, these messages will usually appear with
-``(none)'' entries in the header and can't be accessed. If this happens
+non-existing files.  In Gnus, these messages will usually appear with
+``(none)'' entries in the header and can't be accessed.  If this happens
 to you, using @kbd{G b u} and updating the group will usually fix this.
 
 @end itemize
@@ -23479,7 +23479,7 @@ Using the last function would be something like this:
 @c #### FIXME: faces and x-faces' implementations should really be harmonized.
 
 @code{Face} headers are essentially a funkier version of @code{X-Face}
-ones. They describe a 48x48 pixel colored image that's supposed to
+ones.  They describe a 48x48 pixel colored image that's supposed to
 represent the author of the message.
 
 @cindex face
@@ -23511,7 +23511,7 @@ easier insertion of Face headers in outgoing messages.
 converts the file to Face format by using the
 @code{gnus-convert-image-to-face-command} shell command.
 
-Here's how you would typically use this function. Put something like the
+Here's how you would typically use this function.  Put something like the
 following in your @file{~/.gnus.el} file:
 
 @lisp
@@ -23690,7 +23690,7 @@ The following variables offer control over how things are displayed.
 
 @item gnus-gravatar-size
 @vindex gnus-gravatar-size
-The size in pixels of gravatars. Gravatars are always square, so one
+The size in pixels of gravatars.  Gravatars are always square, so one
 number for the size is enough.
 
 @item gnus-gravatar-properties
@@ -25919,7 +25919,7 @@ Fortunately, setting up the Gnus registry is pretty easy:
 @end lisp
 
 This adds registry saves to Gnus newsrc saves (which happen on exit
-and when you press @kbd{s} from the @code{*Group*} buffer.  It also
+and when you press @kbd{s} from the @file{*Group*} buffer.  It also
 adds registry calls to article actions in Gnus (copy, move, etc.)@: so
 it's not easy to undo the initialization.  See
 @code{gnus-registry-initialize} for the gory details.
@@ -26204,8 +26204,8 @@ This variable controls whether to add timestamps to messages that are
 controlled by @code{gnus-verbose} and @code{gnus-verbose-backends} and
 are issued.  The default value is @code{nil} which means never to add
 timestamp.  If it is @code{log}, add timestamps to only the messages
-that go into the @samp{*Messages*} buffer (in XEmacs, it is the
-@w{@samp{ *Message-Log*}} buffer).  If it is neither @code{nil} nor
+that go into the @file{*Messages*} buffer (in XEmacs, it is the
+@w{@file{ *Message-Log*}} buffer).  If it is neither @code{nil} nor
 @code{log}, add timestamps not only to log messages but also to the ones
 displayed in the echo area.
 
@@ -27874,7 +27874,7 @@ The estimated number of unread articles in the group buffer should now
 be correct for nnimap groups.  This is achieved by calling
 @code{nnimap-fixup-unread-after-getting-new-news} from the
 @code{gnus-setup-news-hook} (called on startup) and
-@code{gnus-after-getting-new-news-hook}. (called after getting new
+@code{gnus-after-getting-new-news-hook} (called after getting new
 mail).  If you have modified those variables from the default, you may
 want to add @code{nnimap-fixup-unread-after-getting-new-news} again.  If
 you were happy with the estimate and want to save some (minimal) time
@@ -28760,7 +28760,7 @@ specified by RFC 1153.
 @cindex splitting, terminology
 @cindex mail sorting
 @cindex mail filtering (splitting)
-The action of sorting your emails according to certain rules. Sometimes
+The action of sorting your emails according to certain rules.  Sometimes
 incorrectly called mail filtering.
 
 @end table
index ad317dc638030a881b152f3d2bc73e0b9343e11b..810f4d0f371f912626d86fbf9da895032b99f7b0 100644 (file)
@@ -69,6 +69,8 @@ instruction sequence.
 To read about advanced Info commands, type @kbd{n} twice.  This
 brings you to @cite{Advanced Info Commands}, skipping over the `Getting
 Started' chapter.
+
+Type @kbd{H} to see a summary of all available commands.
 @end ifinfo
 @end ifnottex
 
@@ -77,20 +79,18 @@ Started' chapter.
 @menu
 * Getting Started::             Getting started using an Info reader.
 * Advanced::                    Advanced Info commands.
-* Expert Info::                 Info commands for experts.
+* Further Reading::             Where to learn more about Info files.
 * GNU Free Documentation License::  The license for this documentation.
 * Index::                       An index of topics, commands, and variables.
 @end menu
 
-@node Getting Started, Advanced, Top, Top
-@comment  node-name,  next,  previous,  up
+@node Getting Started
 @chapter Getting Started
 
 This first part of this Info manual describes how to get around inside
 of Info.  The second part of the manual describes various advanced
-Info commands.  The third part briefly explains how to generate Info
-files from Texinfo files, and describes how to write an Info file
-by hand.
+Info commands.  The third part contains references to other sources,
+which explain how to generate Info files from Texinfo files.
 
 @ifnotinfo
 This manual is primarily designed for browsing with an Info reader
@@ -216,8 +216,7 @@ don't type the Return key afterward---to get to the normal start of
 the course.
 @end ifinfo
 
-@node Help, Help-P, Help-Small-Screen, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help
 @section How to use Info
 
 You are talking to the program Info, for reading documentation.
@@ -263,8 +262,7 @@ links.
    mouse button on the @samp{Next} link to do the same ``the mouse way''.
 @end format
 
-@node Help-P, Help-^L, Help, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-P
 @section Returning to the Previous node
 
 @kindex p @r{(Info mode)}
@@ -296,8 +294,7 @@ coming up.
    the @samp{Next} link, to get to the node @samp{Help-^L} and learn more.
 @end format
 
-@node Help-^L, Help-Inv, Help-P, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-^L
 @section The Space, DEL, B and ^L commands
 
   This node's mode line tells you that you are now at node
@@ -421,8 +418,7 @@ the same size screen, it would be impossible to warn you anyway.
    to visit the next node.
 @end format
 
-@node Help-Inv, Help-M, Help-^L, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-Inv
 @section Invisible text in Emacs Info
 
   Before discussing menus, we need to make some remarks that are only
@@ -492,8 +488,7 @@ For instance, typing this sequence will come back here in three steps:
 
 Now type @kbd{]} to go to the next node and learn about menus.
 
-@node Help-M, Help-Xref, Help-Inv, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-M
 @section Menus and the @kbd{m} command
 
 @cindex menus in an Info document
@@ -731,8 +726,7 @@ pointer shown in the header line (provided that you have a mouse).
 >> Now type @kbd{u} to move back up to @samp{Help-M}.
 @end format
 
-@node Help-Xref, Help-Int, Help-M, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-Xref
 @section Following Cross-References
 
 @cindex cross references in Info documents
@@ -814,8 +808,30 @@ set @code{Info-hide-note-references} to a value other than @code{t}
 >> Now type @kbd{n} to learn more commands.
 @end format
 
-@node Help-Int, Help-Q, Help-Xref, Getting Started
-@comment  node-name,  next,  previous,  up
+
+@menu
+* Help-Cross::                  Target of a cross-reference.
+@end menu
+
+
+@node Help-Cross, , , Help-Xref
+@subsection The node reached by the cross reference in Info
+
+  This is the node reached by the cross reference named @samp{Cross}.
+
+  While this node is specifically intended to be reached by a cross
+reference, most cross references lead to nodes that ``belong''
+someplace else far away in the structure of an Info document.  So you
+cannot expect this node to have a @samp{Next}, @samp{Previous} or
+@samp{Up} links pointing back to where you came from.  In general, the
+@kbd{l} (el) command is the only way to get back there.
+
+@format
+>> Type @kbd{l} to return to the node where the cross reference was.
+@end format
+
+
+@node Help-Int
 @section Some intermediate Info commands
 
   The introductory course is almost over; please continue
@@ -904,8 +920,7 @@ is @code{Info-top-node}.
 @c If a menu appears at the end of this node, remove it.
 @c It is an accident of the menu updating command.
 
-@node Help-Q,  , Help-Int, Getting Started
-@comment  node-name,  next,  previous,  up
+@node Help-Q
 @section Quitting Info
 
 @kindex q @r{(Info mode)}
@@ -964,8 +979,7 @@ an actual @samp{?} character, the simplest way is to insert it using
 @end menu
 
 
-@node Search Text, Search Index,  , Advanced
-@comment  node-name,  next,  previous,  up
+@node Search Text
 @section @kbd{s} searches Info documents
 
 @cindex searching Info documents
@@ -1006,8 +1020,7 @@ emacs, The GNU Emacs Manual}.  In Emacs, you can disable this behavior
 by setting the variable @code{Info-isearch-search} to @code{nil}
 (@pxref{Emacs Info Variables}).
 
-@node Search Index, Go to node, Search Text, Advanced
-@comment  node-name,  next,  previous,  up
+@node Search Index
 @section @kbd{i} searches the indices for specific subjects
 
 @cindex searching Info indices
@@ -1059,8 +1072,7 @@ index-apropos} command in the stand-alone reader.  It prompts for
 a string and then looks up that string in all the indices of all the
 Info documents installed on your system.
 
-@node Go to node, Choose menu subtopic, Search Index, Advanced
-@comment  node-name,  next,  previous,  up
+@node Go to node
 @section @kbd{g} goes to a node by name
 
 @kindex g @r{(Info mode)}
@@ -1087,8 +1099,7 @@ top node of the Emacs manual.
 all of the current file by typing @kbd{g*@key{RET}} or all of any
 other file with @kbd{g(@var{filename})*@key{RET}}.
 
-@node Choose menu subtopic, Create Info buffer, Go to node, Advanced
-@comment  node-name,  next,  previous,  up
+@node Choose menu subtopic
 @section @kbd{1}--@kbd{9} choose a menu subtopic by its number
 
 @kindex 1 @r{through} 9 @r{(Info mode)}
@@ -1113,8 +1124,7 @@ underlining.  If you need to actually count items, it is better to use
 @kbd{m} instead, and specify the name, or use @key{TAB} to quickly
 move between menu items.
 
-@node Create Info buffer, Emacs Info Variables, Choose menu subtopic, Advanced
-@comment  node-name,  next,  previous,  up
+@node Create Info buffer
 @section @kbd{M-n} creates a new independent Info buffer in Emacs
 
 @kindex M-n @r{(Info mode)}
@@ -1135,7 +1145,7 @@ select in another window.
   Another way to produce new Info buffers in Emacs is to use a numeric
 prefix argument for the @kbd{C-h i} command (@code{info}) which
 switches to the Info buffer with that number.  Thus, @kbd{C-u 2 C-h i}
-switches to the buffer @samp{*info*<2>}, creating it if necessary.
+switches to the buffer @file{*info*<2>}, creating it if necessary.
 
 @findex info-display-manual
   If you have created many Info buffers in Emacs, you might find it
@@ -1143,8 +1153,7 @@ difficult to remember which buffer is showing which manual.  You can
 use the command @kbd{M-x info-display-manual} to show an Info manual
 by name, reusing an existing buffer if there is one.
 
-@node Emacs Info Variables, , Create Info buffer, Advanced
-@comment  node-name,  next,  previous,  up
+@node Emacs Info Variables
 @section Emacs Info-mode Variables
 
 The following variables may modify the behavior of Info-mode in Emacs;
@@ -1230,14 +1239,13 @@ this:
 @end vtable
 
 
-@node Expert Info
-@chapter Info for Experts
+@node Further Reading
+@chapter Further Reading
 @cindex Texinfo
 
-  This chapter explains how to write an Info file by hand.  However,
-in most cases, writing a Texinfo file is better, since you can use it
-to make a printed manual or produce other formats, such as HTML and
-DocBook, as well as for generating Info files.
+  Info files are created from Texinfo source files.  You can use the
+same source file to make a printed manual or produce other formats,
+such as HTML and DocBook.
 
 The @code{makeinfo} command converts a Texinfo file into an Info file;
 @code{texinfo-format-region} and @code{texinfo-format-buffer} are GNU
@@ -1253,254 +1261,6 @@ Format}, for how to create an Info file from a Texinfo file.
 Documentation Format}, for how to install an Info file after you
 have created one.
 
-However, if you want to edit an Info file manually and install it manually,
-here is how.
-
-@menu
-* Add::                   Describes how to add new nodes to the hierarchy.
-                            Also tells what nodes look like.
-* Menus::                 How to add to or create menus in Info nodes.
-* Cross-refs::            How to add cross-references to Info nodes.
-* Tags::                  How to make tags tables for Info files.
-* Checking::              Checking an Info File.
-@end menu
-
-@node Add, Menus,  , Expert Info
-@comment  node-name,  next,  previous,  up
-@section Adding a new node to Info
-
-To add a new topic to the list in the Info directory, you must:
-
-@enumerate
-@item
-Create some nodes, in some file, to document that topic.
-@item
-Put that topic in the menu in the directory.  @xref{Menus, Menu}.
-@end enumerate
-
-@cindex node delimiters
-  The new node can live in an existing documentation file, or in a new
-one.  It must have a @samp{^_} character before it (invisible to the
-user; this node has one but you cannot see it), and it ends with either
-a @samp{^_}, a @samp{^L} (``formfeed''), or the end of file.@footnote{If
-you put in a @samp{^L} to end a new node, be sure that there is a
-@samp{^_} after it to start the next one, since @samp{^L} cannot
-@emph{start} a node.  Also, a nicer way to make a node boundary be a
-page boundary as well is to put a @samp{^L} @emph{right after} the
-@samp{^_}.}
-
-  The @samp{^_} starting a node must be followed by a newline or a
-@samp{^L} newline, after which comes the node's header line.  The
-header line must give the node's name (by which Info finds it), and
-state the names of the @samp{Next}, @samp{Previous}, and @samp{Up}
-nodes (if there are any).  As you can see, this node's @samp{Up} node
-is the node @samp{Expert Info}.  The @samp{Next} node is @samp{Menus}.
-
-@cindex node header line format
-@cindex format of node headers
-  The keywords @dfn{Node}, @dfn{Next}, @dfn{Previous}, and @dfn{Up}
-may appear in any order, anywhere in the header line, but the
-recommended order is the one in this sentence.  Each keyword must be
-followed by a colon, spaces and tabs, and then the appropriate name.
-The name may be terminated with a tab, a comma, or a newline.  A space
-does not end it; node names may contain spaces.  The case of letters
-in the names is insignificant.
-
-@cindex node name format
-@cindex Directory node
-  A node name has two forms.  A node in the current file is named by
-what appears after the @samp{Node: } in that node's first line.  For
-example, this node's name is @samp{Add}.  A node in another file is
-named by @samp{(@var{filename})@var{node-within-file}}, as in
-@samp{(info)Add} for this node.  If the file name starts with @samp{./},
-then it is relative to the current directory; otherwise, it is
-relative starting from the standard directory for Info files of your
-site.  The name @samp{(@var{filename})Top} can be abbreviated to just
-@samp{(@var{filename})}.  By convention, the name @samp{Top} is used
-for the ``highest'' node in any single file---the node whose @samp{Up}
-points out of the file.  The @samp{Directory} node is @file{(dir)}, it
-points to a file @file{dir} which holds a large menu listing all the
-Info documents installed on your site.  The @samp{Top} node of a
-document file listed in the @samp{Directory} should have an @samp{Up:
-(dir)} in it.
-
-@cindex unstructured documents
-  The node name @kbd{*} is special: it refers to the entire file.
-Thus, @kbd{g*} shows you the whole current file.  The use of the
-node @kbd{*} is to make it possible to make old-fashioned,
-unstructured files into nodes of the tree.
-
-  The @samp{Node:} name, in which a node states its own name, must not
-contain a file name, since when Info searches for a node, it does not
-expect a file name to be there.  The @samp{Next}, @samp{Previous} and
-@samp{Up} names may contain them.  In this node, since the @samp{Up}
-node is in the same file, it was not necessary to use one.
-
-  Note that the nodes in this file have a file name in the header
-line.  The file names are ignored by Info, but they serve as comments
-to help identify the node for the user.
-
-@node Menus, Cross-refs, Add, Expert Info
-@comment  node-name,  next,  previous,  up
-@section How to Create Menus
-
-  Any node in the Info hierarchy may have a @dfn{menu}---a list of subnodes.
-The @kbd{m} command searches the current node's menu for the topic which it
-reads from the terminal.
-
-@cindex menu and menu entry format
-  A menu begins with a line starting with @w{@samp{* Menu:}}.  The
-rest of the line is a comment.  After the starting line, every line
-that begins with a @samp{* } lists a single topic.  The name of the
-topic---what the user must type at the @kbd{m}'s command prompt to
-select this topic---comes right after the star and space, and is
-followed by a colon, spaces and tabs, and the name of the node which
-discusses that topic.  The node name, like node names following
-@samp{Next}, @samp{Previous} and @samp{Up}, may be terminated with a
-tab, comma, or newline; it may also be terminated with a period.
-
-  If the node name and topic name are the same, then rather than
-giving the name twice, the abbreviation @samp{* @var{name}::} may be
-used (and should be used, whenever possible, as it reduces the visual
-clutter in the menu).
-
-  It is considerate to choose the topic names so that they differ
-from each other very near the beginning---this allows the user to type
-short abbreviations.  In a long menu, it is a good idea to capitalize
-the beginning of each item name which is the minimum acceptable
-abbreviation for it (a long menu is more than 5 or so entries).
-
-  The nodes listed in a node's menu are called its ``subnodes,'' and it
-is their ``superior''.  They should each have an @samp{Up:} pointing at
-the superior.  It is often useful to arrange all or most of the subnodes
-in a sequence of @samp{Next} and @samp{Previous} pointers so that
-someone who wants to see them all need not keep revisiting the Menu.
-
-  The Info Directory is simply the menu of the node @samp{(dir)Top}---that
-is, node @samp{Top} in file @file{.../info/dir}.  You can put new entries
-in that menu just like any other menu.  The Info Directory is @emph{not} the
-same as the file directory called @file{info}.  It happens that many of
-Info's files live in that file directory, but they do not have to; and
-files in that directory are not automatically listed in the Info
-Directory node.
-
-  Also, although the Info node graph is claimed to be a ``hierarchy,''
-in fact it can be @emph{any} directed graph.  Shared structures and
-pointer cycles are perfectly possible, and can be used if they are
-appropriate to the meaning to be expressed.  There is no need for all
-the nodes in a file to form a connected structure.  In fact, this file
-has two connected components.  You are in one of them, which is under
-the node @samp{Top}; the other contains the node @samp{Help} which the
-@kbd{h} command goes to.  In fact, since there is no garbage
-collector on the node graph, nothing terrible happens if a substructure
-is not pointed to, but such a substructure is rather useless since nobody
-can ever find out that it exists.
-
-@node Cross-refs, Tags, Menus, Expert Info
-@comment  node-name,  next,  previous,  up
-@section Creating Cross References
-
-@cindex cross reference format
-  A cross reference can be placed anywhere in the text, unlike a menu
-item which must go at the front of a line.  A cross reference looks
-like a menu item except that it has @samp{*note} instead of @samp{*}.
-It @emph{cannot} be terminated by a @samp{)}, because @samp{)}'s are
-so often part of node names.  If you wish to enclose a cross reference
-in parentheses, terminate it with a period first.  Here are two
-examples of cross references pointers:
-
-@example
-*Note details: commands.  (See *note 3: Full Proof.)
-@end example
-
-@noindent
-@emph{These are just examples.}  The places they ``lead to'' do not
-really exist!
-
-@menu
-* Help-Cross::                  Target of a cross-reference.
-@end menu
-
-
-@node Help-Cross,  ,  , Cross-refs
-@subsection The node reached by the cross reference in Info
-
-  This is the node reached by the cross reference named @samp{Cross}.
-
-  While this node is specifically intended to be reached by a cross
-reference, most cross references lead to nodes that ``belong''
-someplace else far away in the structure of an Info document.  So you
-cannot expect this node to have a @samp{Next}, @samp{Previous} or
-@samp{Up} links pointing back to where you came from.  In general, the
-@kbd{l} (el) command is the only way to get back there.
-
-@format
->> Type @kbd{l} to return to the node where the cross reference was.
-@end format
-
-@node Tags, Checking, Cross-refs, Expert Info
-@comment  node-name,  next,  previous,  up
-@section Tags Tables for Info Files
-
-@cindex tags tables in Info files
-  You can speed up the access to nodes of a large Info file by giving
-it a tags table.  Unlike the tags table for a program, the tags table for
-an Info file lives inside the file itself and is used
-automatically whenever Info reads in the file.
-
-@findex Info-tagify
-  To make a tags table, go to a node in the file using Emacs Info mode and type
-@kbd{M-x Info-tagify}.  Then you must use @kbd{C-x C-s} to save the
-file.  Info files produced by the @code{makeinfo} command that is part
-of the Texinfo package always have tags tables to begin with.
-
-@cindex stale tags tables
-@cindex update Info tags table
-  Once the Info file has a tags table, you must make certain it is up
-to date.  If you edit an Info file directly (as opposed to editing its
-Texinfo source), and, as a result of deletion of text, any node moves back
-more than a thousand characters in the file from the position
-recorded in the tags table, Info will no longer be able to find that
-node.  To update the tags table, use the @code{Info-tagify} command
-again.
-
-  An Info file tags table appears at the end of the file and looks like
-this:
-
-@example
-^_^L
-Tag Table:
-File: info, Node: Cross-refs^?21419
-File: info,  Node: Tags^?22145
-^_
-End Tag Table
-@end example
-
-@noindent
-Note that it contains one line per node, and this line contains
-the beginning of the node's header (ending just after the node name),
-a @samp{DEL} character, and the character position in the file of the
-beginning of the node.
-
-@node Checking, , Tags, Expert Info
-@section Checking an Info File
-
-When creating an Info file, it is easy to forget the name of a node when
-you are making a pointer to it from another node.  If you put in the
-wrong name for a node, this is not detected until someone tries to go
-through the pointer using Info.  Verification of the Info file is an
-automatic process which checks all pointers to nodes and reports any
-pointers which are invalid.  Every @samp{Next}, @samp{Previous}, and
-@samp{Up} is checked, as is every menu item and every cross reference.  In
-addition, any @samp{Next} which does not have a @samp{Previous} pointing
-back is reported.  Only pointers within the file are checked, because
-checking pointers to other files would be terribly slow.  But those are
-usually few.
-
-@findex Info-validate
-To check an Info file, do @kbd{M-x Info-validate} while looking at any
-node of the file with Emacs Info mode.
-
 @node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
index 4f0795eccc45af0f44fccfae28e9a9de411448fb..9be8ca05620ef9a56b709a556d1615d3c3d51990 100644 (file)
@@ -1451,7 +1451,7 @@ Look like @code{angles} if that doesn't require quoting, and
 Headers in this list that were previously generated by Message will be
 deleted before posting.  Let's say you post an article.  Then you decide
 to post it again to some other group, you naughty boy, so you jump back
-to the @code{*post-buf*} buffer, edit the @code{Newsgroups} line, and
+to the @file{*post-buf*} buffer, edit the @code{Newsgroups} line, and
 ship it off again.  By default, this variable makes sure that the old
 generated @code{Message-ID} is deleted, and a new one generated.  If
 this isn't done, the entire empire would probably crumble, anarchy would
index f08ad954a93fa6643f6260ead3307f395f6afb5e..c3b646fa14537c2f6bb6db529dd0afd10753a8eb 100644 (file)
@@ -1086,7 +1086,7 @@ on a desert island with a laptop and are without your manuals, you can
 get a summary of all these commands with GNU Emacs online help: use
 @kbd{C-h m} (@code{describe-mode}) for a brief summary of commands,
 @kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This
-help appears in a buffer called @samp{*MH-E Help*}
+help appears in a buffer called @file{*MH-E Help*}
 (@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h
 i} to read this manual via Info. The online help is quite good; try
 running @kbd{C-h C-h}. This brings up a list of available help topics,
@@ -3692,8 +3692,8 @@ Set the options @code{mh-new-messages-folders} and
 folders. Otherwise, list the folders that should be searched with the
 @samp{Choose Folders} menu item. See @code{mh-recursive-folders-flag}.
 
-@cindex buffers, @samp{*MH-E Folders*}
-@cindex @samp{*MH-E Folders*}
+@cindex buffers, @file{*MH-E Folders*}
+@cindex @file{*MH-E Folders*}
 @findex mh-kill-folder
 @findex mh-list-folders
 @findex mh-pack-folder
@@ -3707,7 +3707,7 @@ folders. Otherwise, list the folders that should be searched with the
 
 Other commands you can perform on folders include: @kbd{F l}
 (@code{mh-list-folders}), to place a listing of all the folders in
-your mail directory in a buffer called @samp{*MH-E Folders*}
+your mail directory in a buffer called @file{*MH-E Folders*}
 (@pxref{Miscellaneous}); @kbd{F k} (@code{mh-kill-folder}), to remove
 a folder; @kbd{F S} (@code{mh-sort-folder}), to sort the messages by
 date (see @command{sortm}(1) to see how to sort by other criteria);
@@ -3781,7 +3781,7 @@ When you want to quit using MH-E and go back to editing, you can use
 the @kbd{q} (@code{mh-quit}) command. This buries the buffers of the
 current MH-E folder and restores the buffers that were present when
 you first ran @kbd{M-x mh-rmail}. It also removes any MH-E working
-buffers whose name begins with @samp{ *mh-} or @samp{*MH-E }
+buffers whose name begins with @samp{ *mh-} or @file{*MH-E }
 (@pxref{Miscellaneous}). You can later restore your MH-E session by
 selecting the @samp{+inbox} buffer or by running @kbd{M-x mh-rmail}
 again.
@@ -5618,10 +5618,10 @@ field, this setting is vital so that you can read the mail you write!
 @node Checking Recipients, Sending Message, Sending PGP, Editing Drafts
 @section Checking Recipients
 
-@cindex @samp{*MH-E Recipients*}
+@cindex @file{*MH-E Recipients*}
 @cindex @command{whom}
 @cindex MH commands, @command{whom}
-@cindex buffers, @samp{*MH-E Recipients*}
+@cindex buffers, @file{*MH-E Recipients*}
 @cindex checking recipients
 @cindex recipients, checking
 @findex mh-check-whom
@@ -5629,7 +5629,7 @@ field, this setting is vital so that you can read the mail you write!
 
 The command @kbd{C-c C-w} (@code{mh-check-whom}) expands aliases so
 you can check the actual address(es) in the alias. A new buffer named
-@samp{*MH-E Recipients*} is created with the output of @command{whom}
+@file{*MH-E Recipients*} is created with the output of @command{whom}
 (@pxref{Miscellaneous})@footnote{See the section
 @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now?---and the
 whatnow Program} in the MH book.}.
@@ -5637,8 +5637,8 @@ whatnow Program} in the MH book.}.
 @node Sending Message, Killing Draft, Checking Recipients, Editing Drafts
 @section Sending a Message
 
-@cindex buffers, @samp{*MH-E Mail Delivery*}
-@cindex @samp{*MH-E Mail Delivery*}
+@cindex buffers, @file{*MH-E Mail Delivery*}
+@cindex @file{*MH-E Mail Delivery*}
 @cindex sending mail
 @findex mh-send-letter
 @kindex C-c C-c
@@ -5646,7 +5646,7 @@ whatnow Program} in the MH book.}.
 When you are all through editing a message, you send it with the
 command @kbd{C-c C-c} (@code{mh-send-letter}). You can give a prefix
 argument (as in @kbd{C-u C-c C-c}) to monitor the first stage of the
-delivery; this output can be found in a buffer called @samp{*MH-E Mail
+delivery; this output can be found in a buffer called @file{*MH-E Mail
 Delivery*} (@pxref{Miscellaneous}).
 
 @cindex sending mail
@@ -7157,7 +7157,7 @@ MH-E has been byte-compiled, you could try running @samp{locate
 mh-thread.elc} or otherwise find MH-E on your system and ensure that
 @file{mh-thread.elc} exists. If you have multiple versions and you
 find that one is compiled but the other is not, then go into your
-@samp{*scratch*} buffer in Emacs, enter @kbd{load-path C-j}, and
+@file{*scratch*} buffer in Emacs, enter @kbd{load-path C-j}, and
 ensure that the byte-compiled version appears first in the
 @code{load-path}. If you find that MH-E is not compiled and you
 installed MH-E yourself, please refer to the installation directions
@@ -7443,8 +7443,8 @@ sequence, use @kbd{S '} (@code{mh-narrow-to-tick}). When you want to
 widen the view to all your messages again, use @kbd{S w}
 (@code{mh-widen}).
 
-@cindex buffers, @samp{*MH-E Sequences*}
-@cindex @samp{*MH-E Sequences*}
+@cindex buffers, @file{*MH-E Sequences*}
+@cindex @file{*MH-E Sequences*}
 @findex mh-list-sequences
 @findex mh-msg-is-in-seq
 @kindex S l
@@ -7456,7 +7456,7 @@ display the sequences in which another message appears (as in @kbd{C-u
 42 S s @key{RET}}). Or, you can list all sequences in a selected
 folder (default is current folder) with @kbd{S l}
 (@code{mh-list-sequences}). The list appears in a buffer named
-@samp{*MH-E Sequences*} (@pxref{Miscellaneous}).
+@file{*MH-E Sequences*} (@pxref{Miscellaneous}).
 
 @cindex MH profile component, @samp{Previous-Sequence}
 @cindex @samp{cur} sequence
@@ -7676,8 +7676,8 @@ If a message is in any sequence (except @samp{Previous-Sequence:} and
 sequences in the destination folder. If this behavior is not desired,
 then turn off the option @code{mh-whitelist-preserves-sequences-flag}.
 
-@cindex @samp{*MH-E Log*}
-@cindex buffers, @samp{*MH-E Log*}
+@cindex @file{*MH-E Log*}
+@cindex buffers, @file{*MH-E Log*}
 @findex call-process
 @vindex mh-junk-background
 
@@ -7688,7 +7688,7 @@ turning on the option @code{mh-junk-background}. @footnote{Note that
 the option @code{mh-junk-background} is used as the @code{display}
 argument in the call to @code{call-process}. Therefore, turning on
 this option means setting its value to @samp{0}. You can also set its
-value to @samp{t} to direct the programs' output to the @samp{*MH-E
+value to @samp{t} to direct the programs' output to the @file{*MH-E
 Log*} buffer; this may be useful for debugging.}
 
 The following sections discuss the various counter-spam measures that
@@ -7976,16 +7976,16 @@ Display version information about MH-E and the MH mail handling
 system.
 @end ftable
 
-@cindex buffers, @samp{*MH-E Info*}
+@cindex buffers, @file{*MH-E Info*}
 @cindex MH-E version
-@cindex @samp{*MH-E Info*}
+@cindex @file{*MH-E Info*}
 @cindex version
 @kindex M-x mh-version
 
 One command worth noting is @kbd{M-x mh-version}. You can compare the
 version this command prints to the latest release (@pxref{Getting
 MH-E}). The output of @kbd{M-x mh-version}, found in a buffer named
-@samp{*MH-E Info*}, should usually be included with any bug report you
+@file{*MH-E Info*}, should usually be included with any bug report you
 submit (@pxref{Bug Reports}).
 
 @subheading MH-E Buffers
@@ -7994,16 +7994,16 @@ Besides the MH-Folder, MH-Show, and MH-Letter buffers, MH-E creates
 several other buffers. They are:
 
 @table @samp
-@cindex @samp{*MH-E Folders*}
-@cindex buffers, @samp{*MH-E Folders*}
+@cindex @file{*MH-E Folders*}
+@cindex buffers, @file{*MH-E Folders*}
 @findex mh-list-folders
 @item *MH-E Folders*
 @kindex F l
 This buffer contains the output of @kbd{F l} (@code{mh-list-folders}).
 @xref{Folders}.
 @c -------------------------
-@cindex @samp{*MH-E Help*}
-@cindex buffers, @samp{*MH-E Help*}
+@cindex @file{*MH-E Help*}
+@cindex buffers, @file{*MH-E Help*}
 @findex mh-help
 @item *MH-E Help*
 @kindex ?
@@ -8011,25 +8011,25 @@ This buffer contains the output of @kbd{F l} (@code{mh-list-folders}).
 This buffer contains the output of @kbd{?} (@code{mh-help}) and
 @kbd{C-c ?} in MH-Letter mode. @xref{Using This Manual}.
 @c -------------------------
-@cindex @samp{*MH-E Info*}
-@cindex buffers, @samp{*MH-E Info*}
+@cindex @file{*MH-E Info*}
+@cindex buffers, @file{*MH-E Info*}
 @item *MH-E Info*
 This buffer contains the output of @kbd{M-x mh-version @key{RET}}.
 @c -------------------------
-@cindex @samp{*MH-E Log*}
-@cindex buffers, @samp{*MH-E Log*}
+@cindex @file{*MH-E Log*}
+@cindex buffers, @file{*MH-E Log*}
 @item *MH-E Log*
 This buffer contains the last 100 lines of the output of the various
 MH commands.
 @c -------------------------
-@cindex @samp{*MH-E Mail Delivery*}
-@cindex buffers, @samp{*MH-E Mail Delivery*}
+@cindex @file{*MH-E Mail Delivery*}
+@cindex buffers, @file{*MH-E Mail Delivery*}
 @item *MH-E Mail Delivery*
 This buffer contains the transcript of a mail delivery. @xref{Sending
 Message}.
 @c -------------------------
-@cindex @samp{*MH-E Recipients*}
-@cindex buffers, @samp{*MH-E Recipients*}
+@cindex @file{*MH-E Recipients*}
+@cindex buffers, @file{*MH-E Recipients*}
 @findex mh-check-whom
 @item *MH-E Recipients*
 @kindex C-c C-w
@@ -8037,14 +8037,14 @@ This buffer contains the output of @kbd{C-c C-w}
 (@code{mh-check-whom}) and is killed when draft is sent.
 @xref{Checking Recipients}.
 @c -------------------------
-@cindex @samp{*MH-E Sequences*}
-@cindex buffers, @samp{*MH-E Sequences*}
+@cindex @file{*MH-E Sequences*}
+@cindex buffers, @file{*MH-E Sequences*}
 @item *MH-E Sequences*
 This buffer contains the output of @kbd{S l}
 (@code{mh-list-sequences}). @xref{Sequences}.
 @c -------------------------
-@cindex @samp{*mh-temp*}
-@cindex buffers, @samp{*mh-temp*}
+@cindex @file{*mh-temp*}
+@cindex buffers, @file{*mh-temp*}
 @item *mh-temp*
 This is a scratch, ephemeral, buffer used by MH-E functions. Note that
 it is hidden because the first character in the name is a space.
index 0fc320e49e412094d746fb1ba7334a532dfe23bd..6ad8df52fd4ecaf97a93e470e58c9505cc43b329 100644 (file)
@@ -166,8 +166,8 @@ feeds (in tree form), a list of headlines for the current feed, and
 the content of the current headline.  Feeds can be placed into groups,
 which themselves can be placed in groups and so on.
 @item Newsticker's @emph{plainview} displays all headlines in a
-single buffer, called @samp{*newsticker*}.  The modeline in the
-@samp{*newsticker*} buffer informs you whenever new headlines have
+single buffer, called @file{*newsticker*}.  The modeline in the
+@file{*newsticker*} buffer informs you whenever new headlines have
 arrived.
 @end itemize
 In both views clicking mouse-button 2 or pressing @key{RET} on a
index 305a54800c103d5b29a12b9cdb89345198ddf569..cc2e4c305cda7e309e70e67e4f52363c461cbba9 100644 (file)
@@ -148,38 +148,6 @@ and return values which have to be entered without parentheses
 in one of your Emacs startup files.
 @end table
 
-A common problem is that the @key{RET} key does @emph{not} indent the
-line to where the new text should go after inserting the newline.  This
-is because the standard Emacs convention is that @key{RET} (aka
-@kbd{C-m}) just adds a newline, whereas @key{LFD} (aka @kbd{C-j}) adds a
-newline and indents it.  This is particularly inconvenient for users with
-keyboards which do not have a special @key{LFD} key at all; in such
-cases, it is typically more convenient to use @key{RET} as the @key{LFD}
-key (rather than typing @kbd{C-j}).
-
-You can make @key{RET} do this by adding
-@lisp
-(define-key octave-mode-map "\C-m"
-  'octave-reindent-then-newline-and-indent)
-@end lisp
-@noindent
-to one of your Emacs startup files.  Another, more generally applicable
-solution is
-@lisp
-(defun RET-behaves-as-LFD ()
-  (let ((x (key-binding "\C-j")))
-    (local-set-key "\C-m" x)))
-(add-hook 'octave-mode-hook 'RET-behaves-as-LFD)
-@end lisp
-@noindent
-(this works for all modes by adding to the startup hooks, without
-having to know the particular binding of @key{RET} in that mode!).
-Similar considerations apply for using @key{M-RET} as @key{M-LFD}.  As
-@email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} says in the
-documentation for his @code{cc-mode}, ``This is a very common
-question.  @code{:-)} If you want this to be the default behavior,
-don't lobby me, lobby RMS!''
-
 The following variables can be used to customize Octave mode.
 
 @vtable @code
index 4667ec3a61845e5bdbce29f126e13a0415eb3666..c6b8c90293fb5b81bf971adbfe77345435594059 100644 (file)
@@ -4,11 +4,6 @@
 @settitle The Org Manual
 @set VERSION 8.2.5c
 
-@c Use proper quote and backtick for code sections in PDF output
-@c Cf. Texinfo manual 14.2
-@set txicodequoteundirected
-@set txicodequotebacktick
-
 @c Version and Contact Info
 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers web page}
 @set AUTHOR Carsten Dominik
index a1e49d7b165a6369a0a4cd71bc8017242ed218ca..d024d993a3bef409a307f46471bf5eab088b9a89 100644 (file)
@@ -116,7 +116,7 @@ Commands
 * Removing handled entries::    Uninteresting lines can easily be removed.
 * Ignoring files::              Telling CVS to ignore generated files.
 * Viewing differences::         Commands to @samp{diff} different versions.
-* Invoking Ediff::              Running @samp{ediff} from @samp{*cvs*} buffer.
+* Invoking Ediff::              Running @samp{ediff} from @file{*cvs*} buffer.
 * Updating files::              Updating files that Need-update.
 * Tagging files::               Tagging files.
 * Miscellaneous commands::      Miscellaneous commands.
@@ -264,7 +264,7 @@ The function @code{cvs-examine} will ask for a directory.  The command
 @samp{cvs -n update} will be run in that directory.  (It should contain
 files that have been checked out from a CVS archive.)  The output from
 @code{cvs} will be parsed and presented in a table in a buffer called
-@samp{*cvs*}.  It might look something like this:
+@file{*cvs*}.  It might look something like this:
 
 @example
 Repository : /usr/CVSroot
@@ -298,7 +298,7 @@ You can move the cursor up and down in the buffer with @kbd{C-n} and
 repository. @xref{Committing changes}.  You can also press @kbd{O} to
 update any of the files that are marked @samp{Need-Update}.  You can
 also run @kbd{M-x cvs-update @key{RET}} (bound to @kbd{M-u} in the
-@samp{*cvs*} buffer) to update all the files.
+@file{*cvs*} buffer) to update all the files.
 
 You can then press @kbd{=} to easily get a @samp{diff} between your
 modified file and the base version that you started from, or you can
@@ -309,7 +309,7 @@ about files}).
 @node Buffer contents
 @chapter Buffer contents
 @cindex Buffer contents
-@cindex @code{*cvs*} buffer contents
+@cindex @file{*cvs*} buffer contents
 
 The display contains several columns, some of which are optional.
 These columns are, from left to right:
@@ -449,7 +449,7 @@ marks are not ignored) or whichever file or directory the cursor is on.
 
 If a directory is selected but the command cannot be applied to a
 directory, then it will be applied to the set of files under this
-directory which are in the @samp{*cvs*} buffer.
+directory which are in the @file{*cvs*} buffer.
 
 @findex cvs-mode-force-command
 @findex cvs-allow-dir-commit
@@ -504,7 +504,7 @@ you can use in PCL-CVS@.  They are grouped together by type.
 * Removing handled entries::    Uninteresting lines can easily be removed.
 * Ignoring files::              Telling CVS to ignore generated files.
 * Viewing differences::         Commands to @samp{diff} different versions.
-* Invoking Ediff::              Running @samp{ediff} from @samp{*cvs*} buffer.
+* Invoking Ediff::              Running @samp{ediff} from @file{*cvs*} buffer.
 * Updating files::              Updating files that Need-update.
 * Tagging files::               Tagging files.
 * Miscellaneous commands::      Miscellaneous commands.
@@ -520,10 +520,10 @@ you can use in PCL-CVS@.  They are grouped together by type.
 @findex cvs-quickdir
 @cindex Creating the *cvs* buffer
 
-Most commands in PCL-CVS require that you have a @samp{*cvs*}
+Most commands in PCL-CVS require that you have a @file{*cvs*}
 buffer.  The commands that you use to get one are listed below.
 For each, a @samp{cvs} process will be run, the output will be parsed by
-PCL-CVS, and the result will be printed in the @samp{*cvs*} buffer (see
+PCL-CVS, and the result will be printed in the @file{*cvs*} buffer (see
 @ref{Buffer contents}, for a description of the buffer's contents).
 
 @table @kbd
@@ -547,7 +547,7 @@ in which the @samp{cvs update} will be run and the module to be checked
 out.
 
 @item M-x cvs-quickdir
-Populate the @samp{*cvs*} buffer by just looking at the @file{CVS/Entries}
+Populate the @file{*cvs*} buffer by just looking at the @file{CVS/Entries}
 files.  This is very much like @code{cvs-examine} except that it does
 not access the CVS repository, which is a major advantage when the
 repository is far away.  But of course, it will not be able to detect
@@ -628,7 +628,7 @@ to the ones PCL-CVS thinks are relevant.
 @end table
 
 @node Updating the buffer
-@section Updating the @samp{*cvs*} buffer
+@section Updating the @file{*cvs*} buffer
 @findex cvs-update
 @findex cvs-examine
 @findex cvs-status
@@ -636,7 +636,7 @@ to the ones PCL-CVS thinks are relevant.
 @findex cvs-mode-examine
 @findex cvs-mode-status
 
-The following commands can be used from within the @samp{*cvs*} buffer
+The following commands can be used from within the @file{*cvs*} buffer
 to update the display:
 
 @table @kbd
@@ -667,7 +667,7 @@ top-level directory, this is equivalent to @kbd{M-e}.
 @item s
 Runs @code{cvs-mode-status} on the selected files.  When run on the
 top-level directory, this is equivalent to @kbd{M-s}, except that
-CVS output will be shown in a @samp{*cvs-info*} buffer that will be
+CVS output will be shown in a @file{*cvs-info*} buffer that will be
 put in @samp{cvs-status-mode}.
 @end table
 
@@ -775,7 +775,7 @@ Committing changes basically works as follows:
 @item
 After having selected the files you want to commit, you type either
 @kbd{c} or @kbd{C} which brings up a special buffer
-@samp{*cvs-commit*}.
+@file{*cvs-commit*}.
 
 @item
 You type in the log message describing the changes you're about to
@@ -800,8 +800,8 @@ change this last detail with @code{log-edit-confirm}.
 
 As for the difference between @kbd{c} (i.e., @code{cvs-mode-commit}) and
 @kbd{C} (i.e., @code{cvs-mode-commit-setup}) is that the first gets you
-straight to @samp{*cvs-commit*} without erasing it or changing anything
-to its content, while the second first erases @samp{*cvs-commit*}
+straight to @file{*cvs-commit*} without erasing it or changing anything
+to its content, while the second first erases @file{*cvs-commit*}
 and tries to initialize it with a sane default (it does that by either
 using a template provided by the CVS administrator or by extracting a
 relevant log message from a @file{ChangeLog} file).
@@ -866,12 +866,12 @@ directory (@code{cvs-mode-add-change-log-entry-other-window}).
 @item l
 Call the command @code{cvs-mode-log} which runs @samp{cvs log} on all
 selected files, and show the result in a temporary buffer
-@samp{*cvs-info*} (@pxref{Log View Mode}).
+@file{*cvs-info*} (@pxref{Log View Mode}).
 
 @item s
 Call the command @code{cvs-mode-status} which runs @samp{cvs status} on
 all selected files, and show the result in a temporary buffer
-@samp{*cvs-info*}.
+@file{*cvs-info*}.
 @c Fixme: reinstate when node is written:
 @c (@pxref{CVS Status Mode}).
 @end table
@@ -1142,11 +1142,11 @@ Byte compile all selected files that end in @file{.el}.
 
 @item M-x cvs-mode-delete-lock
 This command deletes the lock files that
-the @samp{*cvs*} buffer informs you about.  You should normally never have to
+the @file{*cvs*} buffer informs you about.  You should normally never have to
 use this command, since CVS tries very carefully to always remove the
 lock files itself.
 
-You can only use this command when a message in the @samp{*cvs*} buffer tells
+You can only use this command when a message in the @file{*cvs*} buffer tells
 you so.  You should wait a while before using this command in case
 someone else is running a @code{cvs} command.
 
@@ -1161,7 +1161,7 @@ area (@code{cvs-help}).
 Bury the PCL-CVS buffer (@code{cvs-bury-buffer}).
 
 @item M-x cvs-mode-quit
-Quit PCL-CVS, killing the @samp{*cvs*} buffer.
+Quit PCL-CVS, killing the @file{*cvs*} buffer.
 @end table
 
 @node Log Edit Mode
@@ -1260,7 +1260,7 @@ entries}.
 @item cvs-auto-remove-directories
 If this variable is set to any non-@code{nil} value, directories that do
 not contain any files to be checked in will not be listed in the
-@samp{*cvs*} buffer.
+@file{*cvs*} buffer.
 
 @item cvs-auto-revert
 If this variable is set to any non-@samp{nil} value any buffers you have
@@ -1284,7 +1284,7 @@ useful if your site has several repositories.
 @item log-edit-require-final-newline
 @c wordy to avoid underfull hbox
 When you enter a log message by typing into the
-@samp{*cvs-commit-message*} buffer, PCL-CVS normally automatically
+@file{*cvs-commit-message*} buffer, PCL-CVS normally automatically
 inserts a trailing newline, unless there already is one.  This behavior
 can be controlled via @samp{cvs-commit-buffer-require-final-newline}.
 If it is @samp{t} (the default behavior), a newline will always be
@@ -1340,7 +1340,7 @@ default.
 @vindex cvs-msg (face)
 
 PCL-CVS adds a few extra features, including menus, mouse bindings, and
-fontification of the @samp{*cvs*} buffer.  The faces defined for
+fontification of the @file{*cvs*} buffer.  The faces defined for
 fontification are listed below:
 
 @table @samp
@@ -1402,10 +1402,10 @@ Below is a partial list of currently known problems with PCL-CVS.
 @table @asis
 @item Unexpected output from CVS
 Unexpected output from CVS may confuse PCL-CVS@.  It will create
-warning messages in the @samp{*cvs*} buffer alerting you to any parse errors.
+warning messages in the @file{*cvs*} buffer alerting you to any parse errors.
 If you get these messages, please send a bug report to the email
-addresses listed above.  Include the contents of the @samp{*cvs*} buffer, the
-output of the CVS process (which should be found in the @samp{ *cvs-tmp*}
+addresses listed above.  Include the contents of the @file{*cvs*} buffer, the
+output of the CVS process (which should be found in the @file{ *cvs-tmp*}
 buffer), and the versions of Emacs, PCL-CVS and CVS you are using.
 @end table
 
index 96acdf86cd23a8e2097b3127742fd08cd2cebc43..6e136c3345a82c6fe8d0c7a7d957c5a6c01b564c 100644 (file)
@@ -212,7 +212,7 @@ Emacs, or join @code{#rcirc}, the channel about @code{rcirc}.
 
 @cindex server buffer
 When you have answered these questions, @code{rcirc} will create a server
-buffer, which will be named something like @code{*irc.freenode.net*},
+buffer, which will be named something like @file{*irc.freenode.net*},
 and a channel buffer for each of the channels you wanted to join.
 
 @kindex RET
index 30556569cbbdad9becca2f92eb2349f12b502722..ebd301cf5f9f920e30aa123ee736eeae79261562 100644 (file)
@@ -483,9 +483,9 @@ for them once, which will be used over and over for tools such as
 summary-mode, or the analyzer.
 
 @deffn Command semanticdb-create-ebrowse-database dir
-Create an @var{ebrowse} database for directory @var{dir}.
-The database file is stored in ~/.semanticdb, or whichever directory
-is specified by @code{semanticdb-default-system-save-directory}.
+Create an Ebrowse database for directory @var{dir}.  The database file
+is stored in ~/.semanticdb, or whichever directory is specified by
+@code{semanticdb-default-system-save-directory}.
 @end deffn
 
 @node Idle Scheduler
@@ -903,12 +903,12 @@ at a given buffer position.  The return value is an EIEIO object
 describing the context at @var{pos} (@pxref{Top,,,eieio,EIEIO
 manual}).
 
-When called interactively, this displays a @samp{*Semantic Context
+When called interactively, this displays a @file{*Semantic Context
 Analysis*} buffer containing a summary of the context at point.
 @end deffn
 
 @noindent
-The Prefix section of the @samp{*Semantic Context Analysis*} buffer
+The Prefix section of the @file{*Semantic Context Analysis*} buffer
 lists the tags based on the text at point.  If it shows only a simple
 string, the Semantic was unable to identify what the data type was.
 
@@ -1303,7 +1303,7 @@ You can create new types of decorations using the following function:
 Define a new decoration style with @var{name}.
 @var{doc} is a documentation string describing the decoration style @var{name}.
 It is appended to auto-generated doc strings.
-An Optional list of @var{flags} can also be specified.  Flags are:
+An optional list of @var{flags} can also be specified.  Flags are:
   @code{:enabled} <value>  - specify the default enabled value for @var{name}.
 
 
index 6e39d410223c1bf70bc10fab2353f50e9da8f524..f9ccd034fe6e9c4ac998e5f0e1ae5b7c4bb5407f 100644 (file)
@@ -227,12 +227,12 @@ grammar developers; it is useful mostly for the hackers who would like
 to learn more about how @semantic{} works.
 
 @menu
-* Parser code ::          Code used for the parsers
-* Tag handling ::         Code used for manipulating tags
-* Semanticdb Internals :: Code used in the semantic database
-* Analyzer Internals ::   Code used in the code analyzer
-* Tools ::                Code used in user tools
-* Tests ::                Code used for testing
+* Parser code::          Code used for the parsers
+* Tag handling::         Code used for manipulating tags
+* Semanticdb Internals:: Code used in the semantic database
+* Analyzer Internals::   Code used in the code analyzer
+* Tools::                Code used in user tools
+* Tests::                Code used for testing
 @end menu
 
 @node Parser code
index 24cbc56ecfa8a84aa050d3bf3a0ee3d49118c301..901bfb0a9034c24e6c751ecb397dad39ecdcb3c8 100644 (file)
@@ -409,7 +409,7 @@ clues to the reason for the error.
 @vindex smtpmail-debug-info
   The variable @code{smtpmail-debug-info} controls whether to print
 the SMTP protocol exchange in the minibuffer, and retain the entire
-exchange in a buffer @samp{*trace of SMTP session to @var{server}*},
+exchange in a buffer @file{*trace of SMTP session to @var{server}*},
 where @var{server} is the name of the mail server to which you send
 mail.
 
index b51ac3dc21ce17effbcf88680fa75d9c2a81202e..3e521840ca29e35f81557396a7ded1a463fb6a8d 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2014-02-09.15}
+\def\texinfoversion{2014-02-16.16}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -4428,7 +4428,7 @@ end
   % complicated, when \tex is in effect and \{ is a \delimiter again.
   % We can't use \lbracecmd and \rbracecmd because texindex assumes
   % braces and backslashes are used only as delimiters.  Perhaps we
-  % should define @lbrace and @rbrace commands a la @comma.
+  % should use @lbracechar and @rbracechar?
   \def\{{{\tt\char123}}%
   \def\}{{\tt\char125}}%
   %
@@ -4449,8 +4449,7 @@ end
   % @end macro
   % ...
   % @funindex commtest
-  %
-  % The above is not enough to reproduce the bug, but it gives the flavor.
+  % This is not enough to reproduce the bug, but it gives the flavor.
   %
   % Sample whatsit resulting:
   % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
@@ -4663,6 +4662,9 @@ end
   \let\xeatspaces = \eatspaces
 }
 
+% For testing: output @{ and @} in index sort strings as \{ and \}.
+\newif\ifusebracesinindexes
+
 % \indexnofonts is used when outputting the strings to sort the index
 % by, and when constructing control sequence names.  It eliminates all
 % control sequences and just writes whatever the best ASCII sort string
@@ -4691,11 +4693,16 @@ end
   % Unfortunately, texindex is not prepared to handle braces in the
   % content at all.  So for index sorting, we map @{ and @} to strings
   % starting with |, since that ASCII character is between ASCII { and }.
-  \def\{{|a}%
-  \def\lbracechar{|a}%
+  \ifusebracesinindexes
+    \def\lbracechar{\lbracecmd}%
+    \def\rbracechar{\rbracecmd}%
+  \else
+    \def\lbracechar{|a}%
+    \def\rbracechar{|b}%
+  \fi
+  \let\{=\lbracechar
+  \let\}=\rbracechar
   %
-  \def\}{|b}%
-  \def\rbracechar{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
index 5cda62eade79c27ae711c6ee527c386caddc899c..9c9e4f5a2bc02b6319b92dc17ccab582ef666ebe 100644 (file)
@@ -1249,7 +1249,7 @@ if it exists.
 @defopt url-debug
 @cindex debugging
 Specifies the types of debug messages which are logged to
-the @code{*URL-DEBUG*} buffer.
+the @file{*URL-DEBUG*} buffer.
 @code{t} means log all messages.
 A number means log all messages and show them with @code{message}.
 It may also be a list of the types of messages to be logged.
index 367ed2adb4c9f9483aa05ec71a8a24a32a7872e7..95f829d14edac25258fa84687ea7ceaa72894320 100644 (file)
@@ -165,7 +165,7 @@ directory and it will be executed every time you invoke Emacs.  If you wish
 to be in vi mode whenever Emacs starts up, you can include the following
 line in your @file{.emacs} file instead of the above line:
 @example
-(setq term-setup-hook 'vip-mode)
+(add-hook 'emacs-startup-hook 'vip-mode)
 @end example
 @noindent
 (@xref{Vi Mode}, for the explanation of vi mode.)
@@ -1568,6 +1568,7 @@ Set mark and push previous mark on mark ring (@code{set-mark-command}).
 @kindex 011 TAB (@code{indent-for-tab-command})
 Indent line for current major mode (@code{indent-for-tab-command}).
 @item C-j
+@c FIXME: This should be `electric-indent-just-newline' since GNU Emacs 24.4.
 @kindex 012 @kbd{C-j} (@code{newline-and-indent})
 Insert a newline, then indent according to mode (@code{newline-and-indent}).
 @item C-k
index 5cbf32c92970dd78fb2c2ac97baa1385a69d23d6..58e74473b873d22989d87acacb36a14c312649de 100644 (file)
@@ -354,7 +354,7 @@ M-x viper-mode
 @end lisp
 
 When Emacs first comes up, if you have not specified a file on the
-command line, it will show the @samp{*scratch*} buffer, in the
+command line, it will show the @file{*scratch*} buffer, in the
 @samp{Lisp Interaction} mode.  After you invoke Viper, you can start
 editing files by using @kbd{:e}, @kbd{:vi}, or @kbd{v} commands.
 (@xref{File and Buffer Handling}, for more information on @kbd{v} and other
@@ -1840,7 +1840,7 @@ usually most effective:
 (set-face-background viper-replace-overlay-face "yellow")
 @end smallexample
 For a complete list of colors available to you, evaluate the expression
-@code{(x-defined-colors)}.  (Type it in the buffer @code{*scratch*} and then
+@code{(x-defined-colors)}.  (Type it in the buffer @file{*scratch*} and then
 hit the @kbd{C-j} key.
 
 @item viper-replace-overlay-cursor-color  "Red"
index 3ee080f50e09a3a96f1a417d8f6280140b43716f..3eb5a58291418ebd622ee1d093f513044abc63cd 100644 (file)
@@ -689,7 +689,7 @@ Toggle whether to report verbose information on generated parser.
 @end deffn
 
 The verbose report is printed in the temporary buffer
-@code{*wisent-log*} when running interactively, or in file
+@file{*wisent-log*} when running interactively, or in file
 @file{wisent.output} when running in batch mode.  Different
 reports are separated from each other by a line like this:
 
@@ -760,7 +760,7 @@ Grammar contains 7 shift/reduce conflicts
 @end group
 @end example
 
-The @samp{*wisent-log*} buffer details things!
+The @file{*wisent-log*} buffer details things!
 
 The first section reports conflicts that were solved using precedence
 and/or associativity:
index b221a380fa925fe61ecb6001fcadf8df1ba38f63..fbd4ede7aa2325e7ecfe542a5792ba804a1469fb 100644 (file)
@@ -826,7 +826,7 @@ shows manual sections and subsections by default, but you can change
 this by customizing @code{woman-imenu-generic-expression}.
 
 WoMan is configured not to replace spaces in an imenu
-@code{*Completion*} buffer.  For further documentation on the use of
+@file{*Completion*} buffer.  For further documentation on the use of
 imenu, such as menu sorting, see the source file @file{imenu.el}, which
 is distributed with GNU Emacs.
 
@@ -852,7 +852,7 @@ customization should be possible via existing user options.
 @vtable @code
 @item woman-show-log
 A boolean value that defaults to @code{nil}.  If non-@code{nil} then show the
-@code{*WoMan-Log*} buffer if appropriate, i.e., if any warning messages
+@file{*WoMan-Log*} buffer if appropriate, i.e., if any warning messages
 are written to it.  @xref{Log, , The *WoMan-Log* Buffer}.
 
 @item woman-pre-format-hook
@@ -1295,7 +1295,7 @@ on @uref{http://savannah.gnu.org/projects/emacs/}.  If it still fails, please
 @item
 use @kbd{M-x report-emacs-bug} to send a bug report.
 Please include the entry from the
-@code{*WoMan-Log*} buffer relating to the problem file, together with
+@file{*WoMan-Log*} buffer relating to the problem file, together with
 a brief description of the problem.  Please indicate where you got the
 man source file from, but do not send it unless asked to send it.
 @end enumerate
index 62f00d05aca47ad72acad802d5afa098c01c52a2..833fecaaba68debbfbe174dba274c22d8ad8a81e 100644 (file)
@@ -1,3 +1,47 @@
+2014-03-14  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
+
+       * tutorials/TUTORIAL.de: Adapt to recent changes in TUTORIAL.
+       Thanks to Jorgen Schäfer for help with the translation.
+
+2014-03-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix "\" problem in tutorials by using natural-language quotes.
+       * tutorials/TUTORIAL, tutorials/TUTORIAL.cs, tutorials/TUTORIAL.eo:
+       * tutorials/TUTORIAL.es, tutorials/TUTORIAL.it, tutorials/TUTORIAL.ja:
+       * tutorials/TUTORIAL.ko, tutorials/TUTORIAL.nl, tutorials/TUTORIAL.pl:
+       * tutorials/TUTORIAL.pt_BR, tutorials/TUTORIAL.ro:
+       * tutorials/TUTORIAL.ru, tutorials/TUTORIAL.sk, tutorials/TUTORIAL.sv:
+       * tutorials/TUTORIAL.th:
+       Avoid using ` for natural-language quotes.  Instead, work around
+       the problem with "\" by using non-" quotation marks appropriate
+       for the natural language in question, e.g., «...» for Spanish.
+       For English “...” could be used, but use '...' instead so that
+       TUTORIAL continues to be encoded in ASCII.
+
+2014-03-10  Bastien Guerry  <bzg@gnu.org>
+
+       * tutorials/TUTORIAL.fr: Adapt to the recent changes in TUTORIAL.
+
+2014-03-08  Luis Felipe López Acevedo  <felipe.lopac@gmail.com>  (tiny change)
+
+       * tutorials/TUTORIAL.es: Fix typos.  (Bug#116707)
+
+2014-03-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * tutorials/TUTORIAL.he: Adapt to the recent changes in TUTORIAL.
+
+2014-03-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * tutorials/TUTORIAL.es: Adapt to change in English language tutorial.
+
+2014-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * tutorials/TUTORIAL: Mention electric behavior of RET.
+
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * refcards/vipcard.tex: Hook fix.
+
 2014-02-23  Juanma Barranquero  <lekktu@gmail.com>
 
        * NEWS: Fix references to ?« and ?» that got mangled somehow.
        Rename to \versionemacs, same as all the other refcards.
        * refcards/Makefile (ENVADD): New variable.
        (sk-dired-ref.pdf, sk-survival.pdf, pl-refcard.pdf)
-       (%.pdf, %,dvi, sk-dired-ref.dvi, sk-survival.dvi, pl-refcard.dvi):
+       (%.pdf, %.dvi, sk-dired-ref.dvi, sk-survival.dvi, pl-refcard.dvi):
        Depend on emacsver.tex.  Add "." to TEXINPUTS for TeX commands.
 
 2012-09-16  Paul Eggert  <eggert@cs.ucla.edu>
index f7a36c51fc26ed8efba1b0641407568729365ca9..78b2df2ecc41ddbbd467ceda62d1f24d18116df8 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -24,17 +24,24 @@ otherwise leave it unmarked.
 \f
 * Installation Changes in Emacs 24.4
 
+---
 ** Emacs can now be compiled with ACL support.
 This happens by default if a suitable support library is found at
 build time, like libacl on GNU/Linux.  To prevent this, use the
-configure option `--disable-acl'.
-FIXME?  Should be --without-acl?
+configure option `--disable-acl'.  See below for related features.
 
+---
 ** Emacs can now be compiled with file notification support.
 This happens by default if a suitable system library is found at
 build time.  To prevent this, use the configure option
 `--without-file-notification'.  See below for file-notify features.
-FIXME?  This feature is not available for the Nextstep port. (?)
+This feature is not available for the Nextstep port.
+
+---
+** Emacs can now be compiled with zlib support.
+This happens by default if zlib is present, which it normally is.
+To prevent this, use the configure option `--without-zlib'.
+This provides the function `zlib-decompress-region'; see below for details.
 
 ---
 ** The configure option `--without-compress-info' has been generalized,
@@ -49,14 +56,9 @@ It is no longer needed, as the crt*.o files are no longer linked specially.
 ** Directories passed to configure option `--enable-locallisppath' are
 no longer created during installation.
 
-** Emacs can be compiled with zlib support.
-If this library is present (which it normally is on most systems), the
-function `zlib-decompress-region' becomes available, which can
-decompress gzip- and zlib-format compressed data.
-
 ---
 ** Emacs for NS (Mac OS X, GNUstep) can be built with ImageMagick support.
-This requires pkg-config to be available at configure time.
+This requires pkg-config to be available at build time.
 
 \f
 * Startup Changes in Emacs 24.4
@@ -89,6 +91,10 @@ to set up the initial buffer.
 \f
 * Changes in Emacs 24.4
 
++++
+** New function `zlib-decompress-region', which decompresses gzip- and
+zlib-format compressed data using built-in zlib support, if available.
+
 +++
 ** New option `gnutls-verify-error', if non-nil, means that Emacs
 should reject SSL/TLS certificates that GnuTLS determines as invalid.
@@ -117,25 +123,30 @@ a new major mode, with read-only status.  Any code that might create
 the *Messages* buffer should call the function `messages-buffer' to do
 so and set up the mode.
 
-** Emacs now supports ACLs (access control lists).
++++
+** Emacs can now support ACLs (access control lists).
+This requires a suitable support library to be found at build time.
+On GNU/Linux, the POSIX ACL interface is used via libacl.
+On MS-Windows, the NT Security APIs are used to emulate the POSIX interface.
+
 +++
 *** Emacs preserves the ACL entries of files when backing up.
 +++
 *** New functions `file-acl' and `set-file-acl' get and set the ACL
-entries of a file.  On GNU/Linux, the POSIX ACL interface is used via
-libacl.  On MS-Windows, the NT Security APIs are used to emulate the
-POSIX ACL interfaces.
+entries of a file.
 
 ** Multi-monitor support has been added.
 
++++
 *** New functions `display-monitor-attributes-list' and
 `frame-monitor-attributes' can be used to obtain information about
 each physical monitor on multi-monitor setups.
 
++++
 *** The functions `display-pixel-width' and `display-pixel-height' now
 behave consistently among the platforms: they return the pixel width
 or height for all physical monitors associated with the given display
-as if they were on X11.  To get information for each physical
+as if they were on X.  To get information for each physical
 monitor, use the new functions above.  Similar notes also apply to
 `x-display-pixel-width', `x-display-pixel-height', `display-mm-width',
 `display-mm-height', `x-display-mm-width', and `x-display-mm-height'.
@@ -185,6 +196,12 @@ content-type that is found in the new variable `image-format-suffixes'.
 
 ** Frame and window changes
 
++++
+*** The function `window-in-direction' introduced in Emacs 24.1 now
+takes additional arguments for specifying a reference point, wrapping
+selection around frame borders, and specifying ways to select the
+minibuffer window.
+
 +++
 *** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
 bound to <f11> and M-<f10>, respectively.
@@ -209,6 +226,11 @@ resize windows pixelwise.  Most functions for changing or accessing
 window sizes now have an additional argument that allows changes to apply,
 or values to be returned, in pixels instead of lines/columns.
 
++++
+*** The functions `window-body-height' and `window-body-width' now never
+count partially visible lines or columns if called with a nil PIXELWISE
+argument.
+
 *** Emacs can now draw dividers between adjacent windows.  To put
 dividers between side-by-side/vertically stacked windows customize the
 frame parameters `right-divider-width' and `bottom-divider-width' to
@@ -229,14 +251,13 @@ text of a window's buffer in pixels.  This allows functions like
 `fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a
 window to its buffer as it will be displayed.
 
-*** `fit-window-to-buffer' can now resize windows horizontally.
+*** `fit-window-to-buffer' can now resize windows in both dimensions.
 This behavior is controlled by the new option
-`fit-window-to-buffer-horizontally'.
+`fit-window-to-buffer-horizontally'.  The new option
+`fit-frame-to-buffer' allows to fit the window's frame to its buffer.
 
-*** `fit-frame-to-buffer' can now fit frames in both directions.
-This behavior is controlled by the option `fit-frame-to-buffer' which
-tells in which direction(s) the frame shall be fit.  The new options
-`fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes' allow to
+*** `fit-frame-to-buffer' now fits frames in both dimensions.  The new
+options `fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes'
 control the size of the frame and its position on screen.
 
 *** Temp Buffer Resize Mode can now adjust height and width of windows
@@ -253,9 +274,11 @@ As a command, it was a special case of `C-x 2' (`split-window-below'),
 and as such superfluous.  After being reimplemented in Lisp, its
 interactive form was mistakenly retained.
 
++++
 *** The functions `window-size' and `window-total-size' now have an
 optional argument to return a rounded size value.
 
++++
 *** `window-state-put' now allows to put a window state into internal
 windows too.
 
@@ -265,14 +288,23 @@ Available only on X, this option allows to control over-scrolling
 using the scroll bar (i.e. dragging the thumb down even when the end
 of the buffer is visible).
 
++++
 *** New basic action function `display-buffer-in-previous-window' has
 `display-buffer' display a buffer in a window previously showing that
 buffer.
 
++++
 *** New basic action function `display-buffer-at-bottom' has
 `display-buffer' choose or make a window at the bottom of the selected
 frame.
 
+*** New display action function `display-buffer-no-window' to not
+display the buffer in a window.
+
+*** New display action alist entry `allow-no-window' to indicate the
+caller of `display-buffer' is ready to handle the case of not
+displaying the buffer in a window.
+
 ** Lisp evaluation changes
 +++
 *** `eval-defun' on an already defined defcustom calls the :set function,
@@ -323,6 +355,13 @@ means to always load the .elc file.
 
 ** Indentation changes
 
+*** `electric-indent-mode' is now enabled by default.
+E.g., typing RET reindents the current line and indents the new line.
+`C-j' inserts a newline but does not indent.
+
++++
+*** New buffer-local `electric-indent-local-mode'.
+
 +++
 *** The behavior of `C-x TAB' (`indent-rigidly') has changed.
 When invoked without a prefix argument, it now activates a transient
@@ -330,8 +369,6 @@ mode in which typing <left>, <right>, <S-left>, and <S-right> adjusts
 the text indentation in the region.  Typing any other key resumes
 normal editing behavior.
 
-*** `electric-indent-mode' is enabled by default.
-
 +++
 *** `tab-stop-list' is now implicitly extended to infinity by repeating
 the last step.  Its default value is changed to nil, which means a tab
@@ -350,6 +387,7 @@ conventions.  To use it, add it to the `fill-nobreak-predicate' hook.
 +++
 ** Uniquify is enabled by default, with `post-forward-angle-brackets' style.
 
++++
 ** New command `C-x SPC' (`rectangle-mark-mode') makes a rectangular region.
 Most commands are still unaware of it, but kill/yank do work on the rectangle.
 
@@ -385,6 +423,11 @@ macros in registers.
 This searches the region for identical lines, and removes all but one
 copy of each repeated line.  The lines need not be sorted.
 
++++
+** `blink-matching-paren' now only highlights the matching open-paren
+by default, instead of moving cursor.  Set this variable to `jump' to
+enable the old behavior.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 24.4
 
@@ -416,6 +459,7 @@ Also the following files used by the now obsolete otodo-mode.el:
 *** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the
 display of local variables of the current stack frame.
 
++++
 *** The Lisp debugger's `e' command (`debugger-eval-expression') now includes
 the lexical environment when evaluating the code in the context at point
 (and so allows you to access lexical variables).
@@ -532,10 +576,11 @@ if your version doesn't support that option.  See option `cfengine-cf-promises'.
 after `desktop-auto-save-timeout'.  To disable this, customize that option
 to nil (or zero).
 
-*** `desktop-restore-frames', enabled by default, allows saving and
-restoring the frame/window configuration (frameset).  Additional options
-`desktop-restore-in-current-display', `desktop-restore-reuses-frames'
-and `desktop-restore-forces-onscreen' offer further customization.
++++
+*** Desktop now saves and restores the frame/window configuration.
+To disable this, set `desktop-restore-frames' to nil.
+See also related options `desktop-restore-reuses-frames',
+`desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'.
 
 +++
 ** New Dired minor mode `dired-hide-details-mode' toggles whether details,
@@ -724,7 +769,7 @@ are lined up to the first one.
 +++
 ** Octave mode
 
-*** Font locking for texinfo comments and new keywords.
+*** Font locking for Texinfo comments and new keywords.
 
 *** Completion in Octave file buffers.
 
@@ -755,7 +800,7 @@ Use `electric-indent-mode' instead.
 to filter the list of packages by a keyword.
 
 +++
-*** In the `describe-package' buffer, there are now buttons listing the 
+*** In the `describe-package' buffer, there are now buttons listing the
 keywords related to the package.  Click on a button to see other packages
 related to that keyword.
 
@@ -826,8 +871,10 @@ symbol found near point added to the search string initially.
 *** `C-x 8 RET' in Isearch mode reads a character by its Unicode name
 and adds it to the search string.
 
++++
 *** `M-s i' in Isearch mode toggles whether search matches invisible text.
 
++++
 *** `query-replace' skips invisible text when `search-invisible' is nil,
 and opens overlays with hidden text when `search-invisible' is `open'.
 
@@ -869,9 +916,20 @@ All non-ancient Bash versions support this option.
 ---
 *** `sh-mode' now has its own setting for `add-log-current-defun-function'.
 
-** SMIE indentation can be customized via `smie-config'.
-Emacs can learn the appropriate indentation settings if you provide it
-with an indented sample file.
+** SMIE
+
++++
+*** You can customize the SMIE indentation of a mode via `smie-config'.
+The command `smie-config-guess' can help you derive the appropriate
+indentation settings, if you provide it with an indented sample file.
+Use `smie-config-save' to save the result.
+
++++
+*** You can customize the SMIE indentation of a file by adding an entry to
+the file's local variables of the form: `eval: (smie-config-local '(RULES))'.
+
++++
+*** New commands `smie-config-show-indent' and `smie-config-set-indent'.
 
 ---
 ** SQL mode
@@ -1148,6 +1206,7 @@ treated as regexps rather than literal strings.
 +++
 ** New functions `special-form-p' and `macrop'.
 
++++
 ** New macro `define-alternatives' can be used to define generic commands.
 Generic commands are interactive functions whose implementation can be
 selected among several alternatives, as a matter of user preference.
@@ -1172,24 +1231,30 @@ as a function to call to provide default values.
 
 ** Completion changes
 
-*** The separator for `completing-read-multiple' can now be a regexp.
-The default separator has been changed to allow surrounding spaces
+---
+*** The separator used by `completing-read-multiple' is now a regexp.
+The default `crm-separator' has been changed to allow surrounding spaces
 around the comma.
 
-*** The `common-substring' arg of `display-completion-list' is obsolete.
-Either use `completion-all-completions', which returns highlighted
-strings (including for partial or substring completion), or call
-`completion-hilit-commonality' to add the highlight.
++++
+*** The `common-substring' argument of `display-completion-list',
+which has been documented as obsolete since Emacs 23.1, is now _really_
+obsolete, and no longer advertised.  Instead either call
+`completion-hilit-commonality' to add the highlighting; or use
+`completion-all-completions', which returns highlighted strings.
 
++++
 *** New function `completion-table-with-cache' is a wrapper for
 `completion-table-dynamic' that caches the result of the last lookup.
 
++++
 *** New function `completion-table-merge' to combine several
 completion tables by merging their completions.
 
++++
 ** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode'
-let you enable symbol prettification (replacing a string like "lambda" with
-the Greek lambda character).
+display specified symbols as composed characters.  E.g., in Emacs Lisp mode,
+this replaces the string "lambda" with the Greek lambda character.
 
 ** Terminal changes
 
@@ -1202,17 +1267,14 @@ The function `display-popup-menus-p' will now return non-nil for a
 display or frame whenever a mouse is supported on that display or
 frame.
 
-*** New hook `tty-setup-hook'.
-
-** Window Handling
-
-*** New display action function `display-buffer-no-window' to not
-display the buffer in a window.
++++
+*** New hook `tty-setup-hook', run at the end of initializing a text terminal.
 
-*** New display action alist entry `allow-no-window' to indicate the
-caller of `display-buffer' is ready to handle the case of not
-displaying the buffer in a window.
++++
+*** The hook `term-setup-hook' is obsolete.  It is entirely equivalent
+to `emacs-startup-hook'.  See also the new `tty-setup-hook'.
 
++++
 ** New hook `pre-redisplay-function'.
 
 +++
@@ -1267,6 +1329,7 @@ This is like the old `eval-after-load', but better behaved.
 *** `generic-make-keywords-list'
 *** `get-upcase-table' (use `case-table-get-table' instead).
 
++++
 ** `with-wrapper-hook' is obsoleted by `add-function'.
 The few hooks that used with-wrapper-hook are replaced as follows:
 *** `abbrev-expand-function' obsoletes `abbrev-expand-functions'.
@@ -1333,6 +1396,7 @@ of remote files when set to non-nil.
 
 ** Face changes
 
++++
 *** The function `face-spec-set' is now like `setq' for face specs.
 Its third arg now accepts values specifying a face spec type (defface,
 custom, or override spec), and the relevant spec is set accordingly.
@@ -1341,9 +1405,14 @@ custom, or override spec), and the relevant spec is set accordingly.
 *** New function `add-face-text-property', which can be used to
 conveniently prepend/append new face properties.
 
+---
 *** Face specs set via Custom themes now replace the `defface' spec
-rather than inheriting from it (as do face specs set via Customize).
+rather than inheriting from it.  In other words, setting a face via a
+theme now behaves like setting it via Customize: you only need to
+specify the attributes that you want, you don't need to unset those
+that you don't want.
 
+---
 *** New face characteristic (supports :underline (:style wave))
 specifies whether or not the terminal can display a wavy line.
 
index deb42a7f34f2ec79333c66659630e91155f6755d..23f263202a77df9b85a33853cf2100a780ea861a 100644 (file)
@@ -279,7 +279,7 @@ If you wish to be in vi mode just after you startup Emacs,
 include the line:
 
 \hskip 5ex
-\kbd{(setq term-setup-hook 'vip-mode)}
+\kbd{(add-hook 'emacs-startup-hook 'vip-mode)}
 
 in your \kbd{.emacs} file.
 Or, you can put the following alias in your \kbd{.cshrc} file.
index 106c67ef1a79c5f2da53d09a107d44cf7f442107..d755122437b9ff63bf797057214b35cb6edae5c8 100644 (file)
@@ -312,7 +312,7 @@ of text is "continued" onto a second screen line.  If you're using a
 graphical display, little curved arrows appear in the narrow spaces on
 each side of the text area (the left and right "fringes"), to indicate
 where a line has been continued.  If you're using a text terminal, the
-continued line is indicated by a backslash ("\") on the rightmost
+continued line is indicated by a backslash ('\') on the rightmost
 screen column.
 
 >> Insert text until you reach the right margin, and keep on inserting.
@@ -331,6 +331,19 @@ screen width, it will be displayed with a continuation line.
 
 >> Type <Return> to reinsert the Newline you deleted.
 
+The <Return> key is special, in that pressing it may do more than
+just insert a Newline character.  Depending on the surrounding text,
+it may insert whitespace after the Newline character, so that when
+you start typing on the newly created line, the text lines up with
+that on the previous line.  We call this behavior (where pressing a
+key does more than simply inserting the relevant character) "electric".
+
+>> Here is an example of <Return> being electric.
+   Type <Return> at the end of this line.
+
+You should see that after inserting the Newline, Emacs inserts spaces
+so that the cursor moves under the "T" of "Type".
+
 Remember that most Emacs commands can be given a repeat count;
 this includes text characters.  Repeating a text character inserts
 it several times.
@@ -391,7 +404,7 @@ Note that a single C-k kills the contents of the line, and a second
 C-k kills the line itself, and makes all the other lines move up.  C-k
 treats a numeric argument specially: it kills that many lines AND
 their contents.  This is not mere repetition.  C-u 2 C-k kills two
-lines and their newlines; typing C-k twice would not do that.
+lines and their Newlines; typing C-k twice would not do that.
 
 You can yank the killed text either at the same place where it was
 killed, or at some other place in the text you are editing, or even in
@@ -633,7 +646,7 @@ C-z is the command to exit Emacs *temporarily*--so that you can go
 back to the same Emacs session afterward.  When Emacs is running on a
 text terminal, C-z "suspends" Emacs; that is, it returns to the shell
 but does not destroy the Emacs job.  In the most common shells, you
-can resume Emacs with the `fg' command or with `%emacs'.
+can resume Emacs with the "fg" command or with "%emacs".
 
 The time to use C-x C-c is when you are about to log out.  It's also
 the right thing to use to exit an Emacs invoked for a quick edit, such
@@ -822,7 +835,7 @@ called an incremental search waiting for you to type the thing that
 you want to search for.  <Return> terminates a search.
 
 >> Now type C-s to start a search.  SLOWLY, one letter at a time,
-   type the word 'cursor', pausing after you type each
+   type the word "cursor", pausing after you type each
    character to notice what happens to the cursor.
    Now you have searched for "cursor", once.
 >> Type C-s again, to search for the next occurrence of "cursor".
@@ -831,7 +844,7 @@ you want to search for.  <Return> terminates a search.
 
 Did you see what happened?  Emacs, in an incremental search, tries to
 go to the occurrence of the string that you've typed out so far.  To
-go to the next occurrence of 'cursor' just type C-s again.  If no such
+go to the next occurrence of "cursor" just type C-s again.  If no such
 occurrence exists, Emacs beeps and tells you the search is currently
 "failing".  C-g would also terminate the search.
 
@@ -1047,7 +1060,7 @@ corresponding command names (such as C-x C-f beside find-file).
 >> Type C-x 1 to delete the help window.
 
    C-h i       Read included Manuals (a.k.a. Info).  This command puts
-               you into a special buffer called `*info*' where you
+               you into a special buffer called "*info*" where you
                can read manuals for the packages installed on your system.
                Type m emacs <Return> to read the Emacs manual.
                If you have never before used Info, type ? and Emacs
@@ -1118,4 +1131,3 @@ and comes with permission to distribute copies on certain conditions:
 Please read the file COPYING and then do give copies of GNU Emacs to
 your friends.  Help stamp out software obstructionism ("ownership") by
 using, writing, and sharing free software!
-
index 2de7433566bf8a2b9a6be4180ecc44d3df6daaa8..6090360fcccd225a52f63232f8c8f840a44956df 100644 (file)
@@ -304,7 +304,7 @@ kurzoru.
 
 Když se řádek textu zvětší natolik, že přesáhne jeden řádek obrazovky,
 je zobrazen na více řádcích obrazovky.  Řádek textu, který pokračuje na
-dalším řádku obrazovky, je indikován zpětným lomítkem ("\") na pravém
+dalším řádku obrazovky, je indikován zpětným lomítkem („\“) na pravém
 okraji obrazovky.
 
 >> Vkládejte text, až dosáhnete pravého okraje, a pokračujte ve vkládání.
@@ -599,13 +599,13 @@ spuštěného Emacsu vrátit.
 
 Na systémech, které to umožňují, C-z Emacs "pozastaví"; tzn. vrátí vás
 do shellu, avšak Emacs neukončí.  V nejběžnějších shellech se můžete do
-Emacsu vrátit příkazem `fg' nebo pomocí `%emacs'.
+Emacsu vrátit příkazem "fg" nebo pomocí "%emacs".
 
 Na systémech, které pozastavování procesů nemají implementováno, C-z
 vytvoří subshell běžící pod Emacsem, aby vám dal šanci spustit jiné
 programy a pak se do Emacsu vrátit; neprovede tedy pravé opuštění
 Emacsu.  V tom případě je obvyklou cestou návratu ze subshellu do Emacsu
-shellovský příkaz `exit'.
+shellovský příkaz "exit".
 
 Chvíle pro použití C-x C-c nastane, když se chystáte odhlásit ze
 systému.  Správné je to také při ukončování Emacsu vyvolaného poštovním
@@ -788,7 +788,7 @@ Když stisknete C-s, uvidíte v echo oblasti prompt "I-search".  To vám
 a čeká, až mu zadáte, co chcete hledat.  <RET> hledání ukončí.
 
 >> Nyní zahajte hledání stiskem C-s.  POMALU, písmeno po písmenu, pište
-   slovo 'kurzor'.  Po každém písmenu si všimněte, co se děje s kurzorem.
+   slovo "kurzor".  Po každém písmenu si všimněte, co se děje s kurzorem.
    Teď jste vyhledali "kurzor" poprvé.
 >> Stiskněte C-s znovu, abyste nalezli další výskyt "kurzor".
 >> Nyní čtyřikrát stiskněte <Delete> a pozorujte, jak se kurzor
@@ -797,7 +797,7 @@ a čeká, až mu zadáte, co chcete hledat.  <RET> hledání ukončí.
 
 Viděli jste, co se stalo?  Emacs se v inkrementálním hledání pokouší
 přejít na další výskyt řetězce, který jste dosud napsali.  Chcete-li
-přejít na další výskyt 'kurzor', jednoduše stiskněte C-s znovu.
+přejít na další výskyt "kurzor", jednoduše stiskněte C-s znovu.
 Jestliže už žádný takový výskyt není, Emacs pípne a řekne vám, že
 hledání momentálně "selhává", C-g hledání ukončí.
 
@@ -983,7 +983,7 @@ odpovídajících jmen příkazů jako find-file.
 >> Stiskněte C-x 1 pro smazání okna s nápovědou.
 
    C-h i       Čtení on-line manuálů (též Info).  Tento příkaz
-               vás přepne do speciálního bufferu s názvem `*info*',
+               vás přepne do speciálního bufferu s názvem "*info*",
                ve kterém můžete číst on-line manuály pro balíky
                nainstalované na vašem systému.  Pokud stisknete
                m emacs <Return> můžete si například přečíst manuál
index a78bc08ce43398790359f814ec1a3263a5dd6438..b65631a1d2a4f25f0a62a1276dc76c1e69621a17 100644 (file)
@@ -411,6 +411,19 @@ Fortsetzungszeile.
 >> Geben Sie <Return> ein, um wieder ein Zeilenvorschubzeichen
    einzufügen.
 
+Die <Return>-Taste ist insofern besonders, als dass sie mehr bewirken
+kann, als einfach ein Zeilenvorschubszeichen einzufügen.  Abhängig vom
+umgebenden Text können zusätzliche Leerzeichen eingefügt werden, damit
+der neue Zeilenanfang bündig zur vorherigen Zeile ist.  Wir nennen
+dieses Verhalten (wenn das Drücken einer Taste mehr bewirkt, als nur
+das entsprechende Zeichen einzufügen) »electric«.
+
+>> Ein Beispiel für dieses Verhalten von <Return>.
+   Drücken Sie <Return> am Ende dieser Zeile.
+
+Sie sollten sehen, dass sich nach dem Einfügen des
+Zeilenvorschubzeichen der Cursor unter dem »D« von »Drücken« befindet.
+
 Denken Sie daran, dass die meisten Emacs-Befehle mit einem
 Wiederholungszähler aufgerufen werden können.  Tun Sie das mit einem
 Textzeichen, dann wird es entsprechend dem numerischen Parameter
index 1dd007b623fc3c60d24813bf8534f7e8f24d9a3c..17effb9e80fe05d524d9df193d2f7ab97b8a594e 100644 (file)
@@ -318,7 +318,7 @@ la nuna kursorloko.
    kopio por vi.
 
 Kiam linio da teksto iĝas pli longa ol la ekrana linio, la teksta
-linio transiras sur la sekvan ekranan linion.  Retroklino ("\") -- aŭ,
+linio transiras sur la sekvan ekranan linion.  Retroklino (“\”) -- aŭ,
 en grafika fenestrosistemo, kurba sageto -- en la dekstra marĝeno
 indikas tian transiron.
 
index 95b2e236505c16d141673dea569b9ad4afee2927..604aaf76c3a30fed8ecb9dfe38d71fe3373fd510 100644 (file)
@@ -29,8 +29,8 @@ Note que se superponen dos líneas cuando se mueve de pantalla en
 pantalla; esto provee una continuidad para que pueda seguir leyendo el
 texto.
 
-Lo primero que necesita saber es como moverse de un lugar a otro en el
-texto.  Ya sabe como avanzar una pantalla, con C-v.  Para retroceder
+Lo primero que necesita saber es cómo moverse de un lugar a otro en el
+texto.  Ya sabe cómo avanzar una pantalla, con C-v.  Para retroceder
 una pantalla teclee M-v (mantenga oprimida la tecla META y teclee v, o
 teclee <ESC>v si no tiene las teclas META, EDIT o ALT).
 
@@ -52,7 +52,7 @@ Los siguientes comandos son útiles para ver pantallas completas:
    Luego teclee C-l.  Encuentre el cursor otra vez y note que el mismo
    texto está todavía cerca del cursor, pero ahora está en el centro
    de la pantalla.
-   Si vuelve teclear C-l, ese texto se moverá al principio de la
+   Si vuelve teclear C-l, ese texto se moverá al principio de la
    pantalla.  Al teclear C-l otra vez, se moverá al final de la
    pantalla.
 
@@ -104,7 +104,7 @@ pero Emacs no requiere que sea así.)
 
 C-f puede moverse a través de una nueva línea igual que C-b.
 
->> Teclee algunos C-b más para que sienta por donde se encuentra el
+>> Teclee algunos C-b más para que sienta por dónde se encuentra el
    cursor.
    Luego teclee C-f para regresar al final de la línea.
    Luego teclee otro C-f más para moverse a la línea siguiente.
@@ -118,7 +118,7 @@ especificado en el texto sin moverlo fuera de la pantalla.
    observe lo que sucede.
 
 Si moverse por caracteres es muy lento, puede moverse por palabras.
-M-f (META-f) mueve adelante una palabra y M-b mueva atrás una palabra.
+M-f (META-f) mueve adelante una palabra y M-b mueve atrás una palabra.
 
 >> Teclee algunos M-f y M-b
 
@@ -281,7 +281,7 @@ desactivado, conteste la pregunta con "n".
 ----------
 
 Emacs puede tener varias "ventanas", cada una mostrando su propio texto.
-Explicaremos después como usar múltiples ventanas.  Ahora mismo
+Explicaremos después cómo usar múltiples ventanas.  Ahora mismo
 queremos explicar cómo deshacerse de ventanas adicionales y volver a
 la edición básica en una ventana.  Es sencillo:
 
@@ -332,7 +332,7 @@ pantalla. Si está usando un entorno gráfico, se mostrarán pequeñas
 flechas curvas en las estrechas franjas vacías (los "márgenes" derecho
 e izquierdo) a cada lado del área de texto, para indicar que la línea
 continúa. Si está utilizando una terminal, la continuación se señala
-mediante una barra invertida ("\") en la última columna de la derecha.
+mediante una barra invertida («\») en la última columna de la derecha.
 
 >> Inserte texto hasta que llegue al margen derecho, y siga
    insertando.  Verá aparecer una línea de continuación.
@@ -351,6 +351,20 @@ de continuación.
 
 >> Teclee <Return> para reinsertar la nueva línea que borró.
 
+La tecla <Return> es especial, porque, aparte de insertar un carácter
+de nueva línea, puede tener otros efectos.  En función del texto
+circundante, puede además insertar espacio en blanco tras el carácter
+de fin de línea, de forma que, al seguir tecleando en la línea recién
+creada, el texto que tecleamos quede alineado con el de la línea
+anterior.  Este comportamiento (que la pulsación de una tecla no solo
+inserte el carácter correspondiente) se denomina "eléctrico".
+
+>> Veamos un ejemplo de comportamiento "eléctrico" de <Return>
+   Teclee <Return> al final de esta línea.
+
+Fíjese que, tras insertar el carácter de nueva línea, Emacs inserta
+también espacios para que el cursor se sitúe bajo la "T" de "Teclee".
+
 Recuerde que a la mayoría de los comandos de Emacs se les puede dar un
 factor de repetición; esto incluye los caracteres de texto.  Repetir
 un carácter de texto lo inserta varias veces.
@@ -401,7 +415,7 @@ eliminado se llama "yanking" o "pegar".  Generalmente, los comandos
 que pueden quitar mucho texto lo eliminan (para que pueda pegarlo de
 nuevo) mientras que los comandos que quitan solo un carácter, o solo
 líneas en blanco y espacios, borran (y por tanto no se puede pegar lo
-borrado).  Si se normalmente, sin pasar un argumento, <DEL> y C-d
+borrado).  Si se usa normalmente, sin pasar un argumento, <DEL> y C-d
 borran.  Con un argumento, eliminan.
 
 >> Mueva el cursor al comienzo de una línea que no esté vacía.
@@ -520,7 +534,7 @@ un archivo con Emacs, el nombre de ese archivo aparecerá en ese mismo
 punto.
 
 Una cosa especial acerca del comando para encontrar un archivo, es que
-tendrá que decir que nombre de archivo desea.  Decimos que el comando
+tendrá que decir qué nombre de archivo desea.  Decimos que el comando
 "lee un argumento" (en este caso, el argumento es el nombre del
 archivo).  Después de teclear el comando:
 
@@ -572,7 +586,7 @@ editando un archivo existente.
 ---------
 
 Si visita un segundo archivo con C-x C-f, el primer archivo permanece
-dentro de Emacs.  Puede volver a el encontrándolo de nuevo con C-x
+dentro de Emacs.  Puede volver a él encontrándolo de nuevo con C-x
 C-f.  De esta forma puede mantener un gran número de archivos dentro
 de Emacs.
 
@@ -610,7 +624,7 @@ muestra el nombre de cada buffer y de su archivo correspondiente.
 Algunos buffers no corresponden a un archivo.  El buffer llamado
 "*Buffer List*", que contiene la lista de buffers que ha creado con
 C-x C-b, no tiene archivo.  Este buffer TUTORIAL.es al principio no
-tenía archivo, pero ahora ya sí, porque en la sección anterior tecleó
+tenía archivo, pero ahora sí, porque en la sección anterior tecleó
 C-x C-s y lo guardó en un archivo.
 
 El buffer llamado "*Messages*" tampoco tiene un archivo
@@ -631,7 +645,7 @@ con C-x C-s sería una molestia.  Por tanto, tenemos
        C-x s   Guardar algunos buffers
 
 C-x s le pregunta sobre cada buffer que contenga cambios que no haya
-guardada.  Le pregunta, por cada buffer, si quiere guardarlo o no.
+guardado.  Le pregunta, por cada buffer, si quiere guardarlo o no.
 
 >> Inserte una línea de texto, luego teclee C-x s.
    Debería preguntarle si desea guardar el buffer llamado TUTORIAL.es.
@@ -668,7 +682,7 @@ regresar a la misma sesión de Emacs después.  Cuando Emacs está
 ejecutándose en una terminal, C-z "suspende" Emacs; esto es, se
 regresa al intérprete de comandos pero no se destruye Emacs.  En los
 intérpretes de comandos más comunes, puede reanudar Emacs con el
-comando `fg' o con `%emacs'.
+comando "fg" o con "%emacs".
 
 El momento para usar C-x C-c es cuando está listo para salir del
 sistema.  Es además el paso correcto para salir de un Emacs invocado
@@ -789,7 +803,7 @@ debería usar el modo de texto.
 
 No se preocupe, ninguno de los comandos de Emacs que ha aprendido
 cambia de manera significativa.  Pero puede observar que M-f y M-b
-tratan los apóstrofes como parte de las palabras.  Previamente, en
+tratan los apóstrofos como parte de las palabras.  Previamente, en
 modo Fundamental, M-f y M-b trataban los apóstrofes como separadores
 de palabras.
 
@@ -804,7 +818,7 @@ Para ver la documentación del modo mayor actual, teclee C-h m.
 >> Use C-l C-l para traer esta línea a la parte superior de la
    pantalla.
 
->> Teclee C-h m, para ver como el modo de Texto difiere del modo
+>> Teclee C-h m para ver cómo el modo de Texto difiere del modo
    Fundamental.
 
 >> Teclee C-x 1 para eliminar la documentación de la pantalla.
@@ -839,7 +853,7 @@ un argumento numérico.
 
 >> Teclee C-x f con un argumento de 20.  (C-u 2 0 C-x f).  Luego
    teclee algún texto y vea como Emacs lo parte en líneas de 20
-   caracteres.  A continuación ponga de nuevo el margen a 70 usando
+   caracteres.  A continuación ponga de nuevo el margen en 70 usando
    otra vez C-x f.
 
 Si hace cambios en el medio de un párrafo, el modo Auto Fill no lo
@@ -871,7 +885,7 @@ se conoce como búsqueda incremental, esperando que teclee lo que
 quiere buscar.  <Return> termina una búsqueda.
 
 >> Ahora teclee C-s para comenzar la búsqueda.  LENTAMENTE, una letra
-   a la vez, teclee la palabra 'cursor', haciendo pausa después de
+   a la vez, teclee la palabra "cursor", haciendo pausa después de
    cada carácter para notar lo que pasa con el cursor.
    Ahora ha buscado "cursor", una vez.
 >> Teclee C-s de nuevo, para buscar la siguiente ocurrencia de
@@ -881,7 +895,7 @@ quiere buscar.  <Return> termina una búsqueda.
 
 ¿Vió lo que ocurrió?  Emacs, en una búsqueda incremental, trata de ir
 a la ocurrencia de la cadena que ha tecleado hasta el momento.  Para
-ir a la próxima ocurrencia de 'cursor' solo teclee C-s de nuevo.  Si
+ir a la próxima ocurrencia de "cursor" solo teclee C-s de nuevo.  Si
 tal ocurrencia no existe, Emacs pita y le dice que la búsqueda actual
 está fallando ("failing").  C-g también termina la búsqueda.
 
@@ -937,7 +951,7 @@ Emacs contiene un Glosario de términos.)
 Puede continuar usando C-x o para cambiar entre las ventanas.  La
 "ventana seleccionada", donde tiene lugar casi toda la edición, es la
 que tiene un cursor muy visible que parpadea cuando usted no está
-tecleando.  Las otras ventanas tienen sus propia posición del cursor;
+tecleando.  Las otras ventanas tienen su propia posición del cursor;
 si está ejecutando Emacs en una pantalla gráfica, esos cursores se
 muestran como rectángulos vacíos que no parpadean.
 
@@ -1109,7 +1123,7 @@ ejemplo, C-x C-f junto a find-file).
 >> Teclee C-x 1 para borrar la ventana de ayuda.
 
    C-h i        Leer los manuales incluidos (alias Info).  Este comando
-                lo pone en un buffer especial llamado `*info*' donde
+                lo pone en un buffer especial llamado "*info*" donde
                 puede leer manuales de los paquetes instalados en su
                 sistema. Teclee m emacs <Return> para leer el manual
                 de Emacs.  Si nunca ha usado Info, teclee ? y Emacs y
@@ -1129,7 +1143,7 @@ ahorra teclear, y dired, que simplifica el manejo de archivos.
 
 La completación es una manera de ahorrar teclear innecesariamente.
 Por ejemplo, si quiere cambiarse al buffer "*Messages*", puede teclear
-C-x b *M<Tab> y emacs encontrará el resto del nombre del buffer tan
+C-x b *M<Tab> y Emacs encontrará el resto del nombre del buffer tan
 lejos como pueda determinar de lo que ya haya tecleado.  La
 completación también funciona con nombres de comandos y de archivos.
 La completación se describe en el Info del manual de Emacs en el nodo
@@ -1179,6 +1193,7 @@ La versión en español ha sido revisada y corregida por:
        Vladimir Támara <vtamara@gnu.org>
         Rafael Sepúlveda <drs@gnulinux.org.mx>
         Juanma Barranquero <lektu@terra.es>
+        Luis Felipe López Acevedo <felipe.lopac@gmail.com>
 
 La versión en español ha sido actualizada por:
 
index bf3fd7d7be794319e88e96f5c9b3d702cab43dd6..916ec51285de60c8d4157a8fa17949694e722997 100644 (file)
@@ -365,11 +365,24 @@ continuation.
 
 >> Faites <Entrée> pour remettre le Newline que vous avez supprimé.
 
+La touche <Entrée> est particulière : l'appuyer peut faire plus que
+simplement insérer le caractère Newline.  En fonction du texte autour,
+des espaces pourront être insérées après le caractère Newline, de
+façon à ce qu'en commençant à taper dans la ligne nouvelle créée, le
+texte s'aligne avec celui de la ligne précédente.  Nous appelons ce
+comportement (où le fait d'appuyer sur une touche fait plus que de
+simplement insérer le caractère correspondant) « électrique ».
+
+>> Voici un exemple de touche <Entrée> « électrique ».
+   Tapez <Entrée> à la fin de cette ligne.
+
+Vous devriez voir qu'après l'insertion du Newline, Emacs insère des espaces de façon à ce que le curseur se déplace sous le « T » de « Tapez ».
+
 Rappelez-vous que la plupart des commandes Emacs peuvent utiliser un
 nombre de répétitions ; les caractères de texte font de même. La
 répétition d'un caractère de texte l'insère plusieurs fois.
 
->> Faites C-u 8 * pour insérer ********.
+>> Essayez ça tout de suite -- tapez C-u 8 * pour insérer ********.
 
 Vous connaissez maintenant la méthode la plus simple pour taper du
 texte dans Emacs et pour corriger les erreurs. Vous pouvez également
index 2784e56eab8b0b09dc8b19cafd12e03e2e07cfd9..9a4430b85ef91b927ac6fba51f4572bc161fec39 100644 (file)
@@ -279,7 +279,8 @@ argument) משום מקישים אותו לפני הפקודה אליה הוא 
 כאשר שורה של טקסט נעשית ארוכה משורה אחת של תצוגה, חלק מהטקסט ממשיך
 בשורת תצוגה נוספת, היא "שורת ההמשך". על תצוגה גרפית יופיע חץ עקלקל קטן
 באזור השוליים -- "fringe" שמסמל כי לשורה יש שורת המשך, ואילו על תצוגה
-טקסטואלית יופיע תו לוכסן ("/") לאותה תכלית בסוף השורה.
+טקסטואלית יופיע תו לוכסן ('/' או '\', תלוי אם הוא בצד שמאל או בצד ימין)
+לאותה תכלית, בסוף השורה.
 
 >> הקישו טקסט עד שתגיעו לקצה השורה, ואז תמשיכו להקיש עוד טקסט.
    כתוצאה, תראו שמופיעה שורת המשך.
@@ -296,6 +297,12 @@ argument) משום מקישים אותו לפני הפקודה אליה הוא 
 
 >> עתה הקישו <Return> כדי להחזיר את ה־Newline שמחקתם.
 
+מקש <Return> הוא מיוחד בכך שהקשה עליו עשויה לגרום יותר מהכנסת תו
+ה־Newline. בתלות בטקסט מסביב יתכן כי Emacs יכניס תווי רווח או TAB אחרי
+תו ה־Newline, וזאת כדי ליישר את תחילת השורה החדשה עם הטקסט בשורה
+הקודמת. התנהגות זו, שבה הקשה על מקש גורמת לתוצאות מעבר להכנסה פשוטה של
+התו המתאים, נקראת "חשמלית" ("electric").
+
 זכרו כי לרוב הפקודות ב־Emacs אפשר לציין מספר חזרות. גם תוי טקסט
 שייכים לקבוצת פקודות זו. חזרה על תו טקסט מכניסה אותו מספר פעמים.
 
index a9f25f91e8e6b87f3069380dcea31a83a8e8823c..b0a5bc10a138069f58d287699ce473648aa192a8 100644 (file)
@@ -319,7 +319,7 @@ della posizione attuale del cursore.
 
 Quando una riga di testo diventa troppo lunga per essere visualizzata su
 una riga di schermo essa viene "continuata" su una seconda riga dello
-schermo.  Un carattere barra retroversa ("\") posto accanto al margine
+schermo.  Un carattere barra retroversa («\») posto accanto al margine
 sinistro indica la prosecuzione della riga precedente.  Quando si usa un
 sistema a finestre grafico, invece della barra retroversa comparirà una
 piccola freccia ricurva.
@@ -379,7 +379,7 @@ testo posto tra i due estremi.
    C-SPC.  Emacs dovrebbe mostrarti il messaggio "Mark set" nella parte
    bassa dello schermo.  Muovi il cursore sulla s di "estremi" del
    paragrafo precedente.  Premi C-w.  Questo cancellerà il testo a partire
-   dalla `P' e fino alla lettera che precede `s'.
+   dalla "P" e fino alla lettera che precede "s".
 
 La differenza tra "killing" (eliminazione) e "deleting" (cancellazione) è
 che il testo "eliminato" può essere inserito di nuovo, mentre quello che
@@ -628,13 +628,13 @@ poter tornare alla stessa sessione di Emacs in un momento successivo.
 Su sistemi che lo permettono C-z "sospende" Emacs, cioè riporta alla shell
 che lo aveva invocato senza però porre termine alla sessione attuale.
 Nelle shell più comuni si può riaprire la sessione in corso con il comando
-`fg' oppure con `%emacs'.
+"fg" oppure con "%emacs".
 
 Su sistemi che non prevedono la possibilità di "sospensione", C-z crea una
 subshell che funziona all'interno di Emacs per dare la possibilità di
 usare altri programmi e poi tornare a Emacs successivamente; in pratica
 non fa "uscire" veramente da Emacs.  In questo caso il comando di shell
-`exit' è il modo comune per tornare ad Emacs dalla subshell.
+"exit" è il modo comune per tornare ad Emacs dalla subshell.
 
 Il momento di usare C-x C-c è quando si sta per effettuare il log-out dal
 sistema.  È anche il comando giusto quando si deve chiudere Emacs che è
@@ -838,7 +838,7 @@ di eco", ciò significa che Emacs aspetta che si indichi ciò che deve
 cercare.  <Invio> serve a concludere la ricerca.
 
 >> Adesso usa C-s per inziare la ricerca.  LENTAMENTE, una lettera alla
-   volta, inserisci la parola `cursore', facendo una pausa dopo ogni
+   volta, inserisci la parola "cursore", facendo una pausa dopo ogni
    carattere scritto per vedere cosa succede al cursore.  Hai cercato
    "cursore" una volta sola.
 >> Usa C-s un'altra volta per trovare il punto in cui la parola "cursore"
@@ -849,7 +849,7 @@ cercare.  <Invio> serve a concludere la ricerca.
 Hai visto cos'è successo?  Durante una ricerca incrementale Emacs prova ad
 andare al punto successivo in cui compare la stringa indicata fino a quel
 momento.  Per raggiungere il punto successivo in cui compare di nuovo
-`cursore' basta solo premere C-s ancora una volta.  Se la stringa cercata
+"cursore" basta solo premere C-s ancora una volta.  Se la stringa cercata
 non compare in alcun punto successivo Emacs emette un "beep" e informa che
 la ricerca non è andata a buon fine ("failing").  C-g è un modo
 alternativo per concludere la ricerca.
@@ -1045,7 +1045,7 @@ come "find-file".
 >> Usa C-x 1 per eliminare la finestra di aiuto.
 
     C-h i    Leggi la documentazione.  Questo comando apre un buffer
-             speciale chiamato `*info*' in cui puoi leggere i manuali
+             speciale chiamato "*info*" in cui puoi leggere i manuali
              on-line dei pacchetti installati sul tuo sistema.  Batti m
              emacs <Invio> per leggere il manuale di Emacs.  Se non hai
              mai usato il sistema Info prima d'ora premi ? ed Emacs ti
index 61c7904f00159b75a004e2d820cc07c597396b00..c4d2d4ebfb92938c6f440d02e2697131eb1f2bec 100644 (file)
@@ -309,7 +309,7 @@ Emacs \e$B$O4v$D$b$N%&%#%s%I%&$K!"$=$l$>$l8DJL$NJ8>O$rI=<($9$k$3$H$,$G$-$^\e(B
 
 \e$BJ8>O$N0l9T$,2hLL$K<}$^$i$J$$DxD9$/$J$C$?>l9g!"$=$N9T$O2hLL>e$N<!$N9T$X\e(B
 \e$B$H7QB3!J\e(Bcontinued\e$B!K$5$l$^$9!#2hLL$N1&C<!J1&B&$N%U%j%s%8%(%j%"!K$N\e(B
-backslash \e$BJ8;z\e(B "\" \e$B!J$"$k$$$O!"$b$7%&%#%s%I%&%7%9%F%`$r;H$C$F$$$k$J$i!"\e(B
+backslash \e$BJ8;z\e(B \e$B!V\e(B\\e$B!W\e(B \e$B!J$"$k$$$O!"$b$7%&%#%s%I%&%7%9%F%`$r;H$C$F$$$k$J$i!"\e(B
 \e$B>.$5$J6J$C$?Lp0u!K$O!"$=$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#\e(B
 
 >> \e$B2hLL$N1&C<$^$GJ8>O$rF~NO$7!"$5$i$KF~NO$rB3$1$F2<$5$$!#\e(B
@@ -608,13 +608,13 @@ C-z \e$B$O!V0l;~E*$K!W\e(B Emacs \e$B$rH4$1$k%3%^%s%I$G$9!#$^$?F1$8\e(B Emacs \e$B%;%
 
 \e$B$=$l$,$G$-$k%7%9%F%`>e$J$i!"\e(BC-z \e$B$O\e(B Emacs \e$B$r!VCfCG!W$5$;$^$9!#$D$^$j\e(B
 Emacs \e$B$r=*N;$9$k$3$H$J$/!"%3%^%s%I%7%'%k$KLa$k$3$H$,$G$-$^$9!#BgJ}$NI8\e(B
-\e$B=`E*$J%7%'%k$J$i!"\e(B`fg' \e$B%3%^%s%I$b$7$/$O\e(B `%emacs' \e$B$K$h$C$F\e(B Emacs \e$B$r:F3+\e(B
+\e$B=`E*$J%7%'%k$J$i!"!V\e(Bfg\e$B!W\e(B \e$B%3%^%s%I$b$7$/$O\e(B \e$B!V\e(B%emacs\e$B!W\e(B \e$B$K$h$C$F\e(B Emacs \e$B$r:F3+\e(B
 \e$B$G$-$^$9!#\e(B
 
 \e$B!VCfCG!W5!G=$r<BAu$7$F$$$J$$%7%9%F%`$G$O!"\e(BC-z \e$B$O\e(B Emacs \e$B$N2<$GAv$k%5%V\e(B
 \e$B%7%'%k$r:n$j!"B>$N%W%m%0%i%`$rAv$i$;$F$+$i$^$?\e(B Emacs \e$B$KLa$k$3$H$,$G$-\e(B
 \e$B$k$h$&$K$7$^$9!#$3$N>l9gK\Ev$K\e(B Emacs \e$B$+$iH4$1=P$k$o$1$G$O$"$j$^$;$s$N\e(B
-\e$B$G!"%7%'%k%3%^%s%I$N\e(B `exit' \e$B$,$=$N%5%V%7%'%k$+$i\e(B Emacs \e$B$KLa$kIaDL$N$d\e(B
+\e$B$G!"%7%'%k%3%^%s%I$N\e(B \e$B!V\e(Bexit\e$B!W\e(B \e$B$,$=$N%5%V%7%'%k$+$i\e(B Emacs \e$B$KLa$kIaDL$N$d\e(B
 \e$B$jJ}$G$9!#\e(B
 
 C-x C-c \e$B$O%m%0%"%&%H$7$h$&$H;W$&;~$K;H$&$b$N$G$9!#%a!<%k%D!<%k!J\e(Bmail
@@ -695,7 +695,7 @@ C-x \e$B%3%^%s%I$O$?$/$5$s$"$j$^$9!#$3$l$^$G$K!"0J2<$r3X$S$^$7$?!#\e(B
 L \e$B$H$=$l$KB3$/?t;z$O8=:_$N9THV9f$r<($7$F$$$^$9!#\e(B
 
 \e$B@hF,6a$/$N@10u$O!"$"$J$?$,J8>O$rJQ99$7$?$3$H$r<($7$F$$$^$9!#%U%!%$%k$r\e(B
-\e$B3+$$$?D>8e$d!"%;!<%V$7$?D>8e$O!"$=$NItJ,$K$O@10u$NBe$o$j$K%@%C%7%e\e(B `-'
+\e$B3+$$$?D>8e$d!"%;!<%V$7$?D>8e$O!"$=$NItJ,$K$O@10u$NBe$o$j$K%@%C%7%e\e(B \e$B!V\e(B-\e$B!W\e(B
 \e$B$,I=<($5$l$^$9!#\e(B
 
 \e$B3g8L$K0O$^$l$?ItJ,$O$I$s$JJT=8%b!<%I$K$$$k$+$r<($7$^$9!#%G%U%)%k%H$O\e(B
@@ -996,7 +996,7 @@ C-h \e$B$K$OB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#\e(B
 >> C-x 1 \e$B$G%X%k%W%&%#%s%I%&$r>C$7$F2<$5$$!#\e(B
 
    C-h i       \e$BImB0%^%K%e%"%k!J\e(BInfo\e$B!K$rFI$`!#$3$N%3%^%s%I$r;H$&$H!"$"\e(B
-               \e$B$J$?$O\e(B `*info*' \e$B$H$$$&L>$NFC<l$J%P%C%U%!$K0\$5$l$^$9!#\e(B
+               \e$B$J$?$O\e(B \e$B!V\e(B*info*\e$B!W\e(B \e$B$H$$$&L>$NFC<l$J%P%C%U%!$K0\$5$l$^$9!#\e(B
                \e$B$=$3$G!"%7%9%F%`$K%$%s%9%H!<%k$5$l$F$$$k%Q%C%1!<%8$N%^\e(B
                \e$B%K%e%"%k$,FI$a$^$9!#\e(B m emacs <Return>\e$B$H%?%$%W$9$l$P\e(B
                Emacs \e$B$N%^%K%e%"%k$,FI$a$^$9!#$b$7\e(B Info\e$B$r;H$&$N$,=i$a\e(B
index 330addc5f91fbaaa70bb28fdd6c91bc6532b2627..5664022851223bf5313f1fa7c072b71687fc46b4 100644 (file)
@@ -295,7 +295,7 @@ C-g는 숫자 인수를 무시해 버릴 때나 어떤 명령을 시작하였지
 
 글월이 화면의 한 줄에 다 들어가지 못할 정도로 커지면 글월의 줄은
 화면의 두번째 줄에서 "계속"됩니다.  오른쪽 한계에 있는 역사선 문자
-("\")는 줄이 다음 줄로 이어지는 것을 가리킵니다.
+(“\”)는 줄이 다음 줄로 이어지는 것을 가리킵니다.
 
 >> 글월을 계속 끼워서 오른쪽 한계를 넘어서도록 하십시오.  그러면 줄
    계속 표시가 나타날 것입니다.
@@ -342,11 +342,11 @@ C-e와 M-e와 다릅니다.
 그 부분의 다른쪽 끝으로 이동해서 C-w를 칩니다.  그러면 그 두
 위치사이의 모든 글월은 죽여집니다.
 
->> 깜빡이를 전 문단의 시작인 `일'자로 움직이십시오.
+>> 깜빡이를 전 문단의 시작인 “일”자로 움직이십시오.
 >> C-SPC를 치시오.  이맥스는 화면의 바닥에 "Mark set"이라는 알림말을
    보여줄 것입니다.
->> 깜빡이를 위 문단의 두번째 줄에 있는 `끝'자로 움직이시오.
->> C-w를 치시오.  그러면 `일'자로 시작해서 `끝'자까지의 글월이 죽여질
+>> 깜빡이를 위 문단의 두번째 줄에 있는 “끝”자로 움직이시오.
+>> C-w를 치시오.  그러면 “일”자로 시작해서 “끝”자까지의 글월이 죽여질
    것입니다.
 
 "죽이기"와 "지우기"의 다른 점은 "죽여진" 글월은 재차 끼워넣을 수 있는
@@ -579,13 +579,13 @@ C-z는 이맥스를 *임시로* 나오기 위한 명령입니다--그래서 다
 
 운영 체계가 허용하면 C-z는 이맥스를 "중지"시킵니다(suspend); 즉, 이
 명령은 조가비(shell)로 돌아 가도록 하지만 이맥스를 파괴하는 것은
-아닙니다. 대부분의 조가비에서는 `fg'나 `%emacs'명령으로 이맥스를 계속할
+아닙니다. 대부분의 조가비에서는 “fg”나 “%emacs”명령으로 이맥스를 계속할
 수 있습니다.
 
 중지하는 것을 제공하지 않는 운영 체계에서는 C-z에 의해, 이맥스 밑에서
 실행되는 아랫조가비가 만들어 지게 되는데 여기서 다른 프로그램들을
 실행한 후 이맥스로 돌아 올 수 있는 기회가 있습니다; 사실상 이맥스로부터
-"나가는" 것은 아닙니다.  이 경우 보통, 조가비 명령인 `exit'으로
+"나가는" 것은 아닙니다.  이 경우 보통, 조가비 명령인 “exit”으로
 아랫조가비에서 이맥스에 되돌아 옵니다.
 
 C-x C-c는 전산기에서 벗어나기 할 때나 사용합니다.  편지를 취급하는
@@ -758,10 +758,10 @@ C-s를 치면 메아리 터에, 길잡이로 "I-search"라는 문자열이 나
 마칩니다.
 
 >> 이제 C-s를 쳐서 찾기를 시작하십시오.  천천히, 한 번에 한 글자씩
-   'cursor'라고 치면서 각각의 문자를 친 후 깜박이에 어떤 일이 일어
+   “cursor”라고 치면서 각각의 문자를 친 후 깜박이에 어떤 일이 일어
    나는가를 유의하십시오.
-   이제 "cursor"를 한 번 찾은 것입니다.
->> C-s를 다시 쳐서 다음에 나타나는 "cursor"를 찾으십시오.
+   이제 “cursor”를 한 번 찾은 것입니다.
+>> C-s를 다시 쳐서 다음에 나타나는 “cursor”를 찾으십시오.
 >> 자, 이제는 <Delete>를 네 번 쳐서 깜박이가 어떻게 움직이는가를
    보십시오.
 >> <Return>을 쳐서 찾기를 끝내십시오.
@@ -953,7 +953,7 @@ C-x C-s와 (META쇠나 EDIT쇠 혹은 교체쇠가 있으면) <ESC>v와 같은 
 >> C-x 1을 쳐서 도움말 창을 지우십시오.
 
    C-h i       온라인 설명서를 읽기 (즉 Info).  이 명령은
-               `*info*'라는 특별한 사이칸에서 시스템에 설치된
+               “*info*”라는 특별한 사이칸에서 시스템에 설치된
                꾸러미의 온라인 설명서를 보여줍니다.  m emacs
                <복귀쇠>를  치면 이맥스 설명서를 읽을 수 있습니다.
                전에 Info를 읽어 본 적이 없으면 ?를 치십시오.  그러면
index 6330d855f05ebca043b7f2031f784f4482de5f0a..eebcacc00dbca35d6a1ed94d5311647ba66cda1d 100644 (file)
@@ -339,7 +339,7 @@ Als een regel tekst te lang wordt om helemaal op het scherm getoond te
 worden, dan gaat hij verder op de volgende schermregel.  Als je een
 grafisch scherm gebruikt verschijnen kleine gebogen pijltjes links en
 rechts van het tekstgebied om aan te geven waar een regel voortgezet
-is.  In een tekstvenster of terminal geeft een backslash ("\") in de
+is.  In een tekstvenster of terminal geeft een backslash (‘\’) in de
 laatste kolom een vervolgregel aan.
 
 >> Voeg nu tekst toe totdat je de rechter kantlijn raakt, en blijf
index 3eaa2c0082fb5ce55dad0055cd153a9e82266413..9f2bbb52e548d4384ae8d46ad489ac5e0ef72129 100644 (file)
@@ -252,7 +252,7 @@ wciśnięcia klawisza <ESC>.
 * ZABLOKOWANE POLECENIA
 -----------------------
 
-Pewne polecenia Emacsa są ,,zablokowane'' -- po to, by początkujący
+Pewne polecenia Emacsa są „zablokowane” -- po to, by początkujący
 użytkownicy nie mogli ich wywołać przez przypadek.
 
 Jeśli wywołasz jedno z zablokowanych poleceń, to Emacs wypisze komunikat
@@ -263,7 +263,7 @@ Jeśli naprawdę chcesz wywołać to polecenie, to odpowiedz na pytanie,
 naciskając spację. Jeśli nie chcesz wywołać zablokowanego polecenia,
 to na pytanie odpowiedz, naciskając n.
 
->> Napisz `C-x C-l' (co jest zablokowanym poleceniem) i odpowiedz n
+>> Napisz „C-x C-l” (co jest zablokowanym poleceniem) i odpowiedz n
    na zadane pytanie.
 
 
@@ -271,7 +271,7 @@ to na pytanie odpowiedz, naciskając n.
 ------
 
 Emacs może mieć otwartych kilka okien, z których każde wyświetla
-własny tekst. Pojęcie ,,okna'', jeśli chodzi o Emacsa, nie odnosi
+własny tekst. Pojęcie „okna”, jeśli chodzi o Emacsa, nie odnosi
 się do osobnego okienka systemu okienkowego, lecz do pojedynczego
 panelu wewnątrz okienka systemowego. (Emacs może też pracować
 na kilku oknach systemowych (X-oknach); w terminologii Emacsa
@@ -291,10 +291,10 @@ kasując zarazem pozostałe okna Emacsa.
 >> Przesuń kursor do tej linii i naciśnij C-u 0 C-l.
 
 (C-l, jak pamiętasz odświeża zawartość ekranu. Jeśli temu poleceniu
-poda się argument liczbowy, to będzie to oznaczało ,,odśwież zawartość
-ekranu i umieść bieżąca linię o tyle linii od góry ekranu''. Tak więc,
-C-u 0 C-1 oznacza ,,odśwież ekran, umieszczając bieżąca linię na samej
-górze''.)
+poda się argument liczbowy, to będzie to oznaczało odśwież zawartość
+ekranu i umieść bieżąca linię o tyle linii od góry ekranu. Tak więc,
+C-u 0 C-1 oznacza odśwież ekran, umieszczając bieżąca linię na samej
+górze.)
 
 >> Naciśnij Control-x 2
    Zauważ, że okno się kurczy, a jednocześnie pojawia się nowe,
@@ -331,8 +331,8 @@ poprzedzający bieżącą pozycję kursora.
    Pracujesz teraz na jego kopii.
 
 Gdy linia tekstu staje się zbyt długa, by zmieścić się w jednym
-wierszu ekranu, to jest ona ,,kontynuowana'' w wierszu następnym.
-Znak ,,backslash'' (`\') (albo - jeśli pracujesz w okienkowym
+wierszu ekranu, to jest ona „kontynuowana” w wierszu następnym.
+Znak „backslash” („\”) (albo - jeśli pracujesz w okienkowym
 trybie graficznym - zagięta strzałka) umieszczony na prawym marginesie
 wskazuje, że dana linia jest kontynuowana w następnym wierszu ekranu.
 
@@ -389,19 +389,19 @@ zawarty między punktami początkowym i końcowym.
 >> Naciśnij C-SPC. Emacs wyświetli "Mark set" (znacznik ustawiony)
    na dole ekranu.
 
->> Przesuń kursor do litery o w słowie ,,kursor'' w drugim zdaniu.
+>> Przesuń kursor do litery o w słowie „kursor” w drugim zdaniu.
 
 >> Naciśnij C-w. Ta komenda wytnie cały fragment zaczynający się od O,
    a kończący tuż przed o.
 
 Gdy usuwasz więcej niż jeden znak naraz, Emacs zachowuje usunięty
 tekst po to, by mógł go z powrotem gdzieś wstawić. Wstawianie
-usuniętego tekstu nazywa się ,,wklejaniem''. Usunięty tekst
+usuniętego tekstu nazywa się „wklejaniem”. Usunięty tekst
 możesz wkleić zarówno w to samo miejsce, z którego został usunięty,
 bądź też w inne miejsca. Ten sam tekst możesz wkleić wielokrotnie,
 w celu uzyskania wielu kopii. Poleceniem wklejenia tekstu jest C-y.
 
-Zauważ różnicę między ,,wycinaniem'' i ,,usuwaniem'', polegającą na tym,
+Zauważ różnicę między „wycinaniem” i „usuwaniem”, polegającą na tym,
 że rzeczy wycięte można na nowo wklejać, usuniętych natomiast wklejać nie
 można. Na ogół polecenia Emacsa, które kasują dużo tekstu, zachowują go,
 podczas gdy polecenia, które po prostu kasują jeden znak albo puste
@@ -461,7 +461,7 @@ z którego wystartowałeś (czyli tekstu wyciętego ostatnio).
 --------
 
 Jeśli wprowadzisz zmiany do tekstu, a potem dojdziesz do wniosku, że
-to była pomyłka, to możesz cofnąć zmiany, wydając polecenie ,,cofnij''
+to była pomyłka, to możesz cofnąć zmiany, wydając polecenie „cofnij”
 (ang. undo), C-x u.
 
 C-x u cofa zmiany wprowadzone przez jedno polecenie; jeśli powtórzysz
@@ -494,21 +494,21 @@ tego polecenia.
 Aby edytowany przez Ciebie tekst został na trwałe zachowany, musisz
 umieścić go w pliku. Jeśli tego nie zrobisz, to tekst zniknie, gdy
 zamknięty zostanie Emacs, za pomocą którego go edytowałeś. Aby zachować
-tekst w pliku, najpierw musisz ten plik ,,znaleźć'', i to zanim
+tekst w pliku, najpierw musisz ten plik „znaleźć”, i to zanim
 zaczniesz wprowadzać tekst. Czynność znajdowania pliku (ang. "file
-finding") bywa też nazywana ,,odwiedzaniem pliku'' (ang. "file
+finding") bywa też nazywana „odwiedzaniem pliku” (ang. "file
 visiting").
 
 Odwiedzanie pliku w Emacsie powoduje wyświetlenie jego zawartości.
 Bardzo często jest to początek edycji pliku. Jednakże zmiany, które
-wprowadzasz do pliku, nie są w nim utrwalone, zanim go nie ,,zachowasz''
+wprowadzasz do pliku, nie są w nim utrwalone, zanim go nie „zachowasz”
 (ang. save). Ma to zapobiec pozostawieniu w systemie pliku, który został
 zmieniony tylko w połowie, a tego chcesz uniknąć. Gdy zachowujesz
 zmieniony plik, Emacs zostawia oryginał (pod inna nazwą) na wypadek,
 gdybyś doszedł do wniosku, że wprowadzone zmiany były błędne.
 
 Jeśli popatrzysz na dół ekranu, to zauważysz linię, która zaczyna się
-i kończy myślnikami, a zawiera tekst ,,TUTORIAL''. W tej
+i kończy myślnikami, a zawiera tekst „TUTORIAL”. W tej
 części ekranu zawsze możesz znaleźć nazwę pliku, który właśnie
 odwiedzasz. W tej chwili odwiedzasz plik o nazwie TUTORIAL, który
 jest Twoją własną kopią samouczka Emacsa. Obojętnie, który plik
@@ -523,14 +523,14 @@ te mają długość dwóch, trzech lub czterech znaków.
 
 Kolejną nowością odnośnie polecenia odwiedzania pliku jest to, że
 musisz mu podać nazwę pliku, który chcesz znaleźć. Mówimy o tym, że
-polecenie ,,czyta argument z terminala'' (w tym wypadku argument jest
+polecenie „czyta argument z terminala” (w tym wypadku argument jest
 nazwą pliku). Po wpisaniu polecenia
 
        C-x C-f znajdź plik (ang. find a file)
 
 Emacs poprosi Cię o wpisanie nazwy pliku. Pojawia się ona w dolnej linii
 ekranu. Gdy ta linia jest używana do wprowadzania tego typu danych,
-nazywa się ją ,,minibuforem'' (ang. "minibuffer"). Do edycji nazwy pliku
+nazywa się ją „minibuforem” (ang. "minibuffer"). Do edycji nazwy pliku
 w minibuforze możesz używać zwykłych poleceń Emacsa.
 
 Wprowadzanie nazwy pliku (lub jakichkolwiek innych danych w
@@ -585,7 +585,7 @@ mieć w Emacsie odwiedzonych jednocześnie wiele plików.
    Wpisz w niego jakiś tekst i zachowaj "foo" za pomocą C-x C-s.
    W końcu napisz C-x C-f TUTORIAL <Return>, by wrócić do samouczka.
 
-Emacs przechowuje tekst każdego pliku w obiekcie, zwanym ,,buforem''.
+Emacs przechowuje tekst każdego pliku w obiekcie, zwanym „buforem”.
 Odwiedzenie pliku powoduje utworzenie nowego bufora wewnątrz Emacsa. By
 zobaczyć listę buforów, które istnieją w Twoim Emacsie, naciśnij
 
@@ -674,7 +674,7 @@ wrócić do niej wrócić po jakimś czasie.
 W systemach, w których jest to możliwe, C-z zawiesza proces Emacsa;
 powoduje to powrót do powłoki (ang. shell), ale nie niszczy Emacsa.
 W najpopularniejszych powłokach możesz wrócić do Emacsa za pomocą
-polecenia `fg' lub `%emacs'.
+polecenia „fg” lub „%emacs”.
 
 W systemach, w których nie ma zawieszania procesów, C-z tworzy proces
 podpowłoki (ang. "subshell"), który działa pod Emacsem i daje Ci szansę
@@ -718,7 +718,7 @@ klawisza <Return>.
    Naciśnij M-x repl s<Return>zmieni<Return>zmodyfikuje<Return>.
 
    Zwróć uwagę, jak ta linia się zmieniła: zastąpiłeś słowem
-   ,,zmodyfikuje'' każde wystąpienie słowa z-m-i-e-n-i poniżej początkowej
+   „zmodyfikuje” każde wystąpienie słowa z-m-i-e-n-i poniżej początkowej
    pozycji kursora.
 
 
@@ -781,7 +781,7 @@ nie będzie w tym miejscu gwiazdek, lecz myślniki.
 Wewnątrz nawiasów znajdziesz informacje na temat trybu edycji, w
 którym właśnie jest Emacs. Domyślnym trybem edycji nazywa się
 podstawowym (ang. fundamental); jest to tryb używanym właśnie w
-tej chwili. Jest to przykład ,,trybu głównego'' (ang. major mode).
+tej chwili. Jest to przykład „trybu głównego” (ang. major mode).
 
 Emacs może działać w wielu trybach głównych. Zostały one zaprojektowane,
 aby ułatwić edycję napisów w rozmaitych językach programowania, takich
@@ -811,7 +811,7 @@ M-f i M-b traktują apostrofy jako części słów. Poprzednio, w trybie
 podstawowym, polecenia te traktowały apostrofy jako separatory słów.
 
 Główne tryby edycji wprowadzają zwykle subtelne zmiany, takie jak
-opisana powyżej; większość poleceń nadal robi ,,to samo'', chociaż
+opisana powyżej; większość poleceń nadal robi „to samo”, chociaż
 być może w troszeczkę inny sposób.
 
 By zobaczyć dokumentację na temat bieżącego głównego trybu edycji,
@@ -825,8 +825,8 @@ naciśnij C-h m.
 
 >> Naciśnij q, by usunąć dokumentację trybu z ekranu.
 
-Główne tryby edycji nazywają się właśnie ,,głównymi'', gdyż występują
-także ,,podrzędne'' tryby edycji (ang. minor modes). Podrzędne tryby
+Główne tryby edycji nazywają się właśnie „głównymi”, gdyż występują
+także „podrzędne” tryby edycji (ang. minor modes). Podrzędne tryby
 edycji nie są alternatywą dla trybów głównych, lecz jedynie ich
 niewielką modyfikacją. Każdy podrzędny tryb edycji można włączyć lub
 wyłączyć niezależnie od pozostałych trybów podrzędnych, a także
@@ -842,10 +842,10 @@ podczas wstawiania tekstu linia robi się za szeroka.
 Tryb automatycznego wstawiania włącza się na przykład poleceniem M-x
 auto-fill-mode<Return>. Powtórzenie tego polecenie powoduje wyłączenie
 trybu, ponowne powtórzenie --- jego włączenie, i tak dalej. Mówimy, że
-polecenie ,,przełącza tryb''.
+polecenie „przełącza tryb”.
 
 >> Napisz M-x auto-fill-mode<Return>. Wstaw potem wiele napisów
-   ,,asdf '' tak długo, aż zobaczysz, że linia podzieli na dwie.
+   „asdf ” tak długo, aż zobaczysz, że linia podzieli na dwie.
    Między literami musisz wstawiać spacje, ponieważ tryb
    automatycznego wypełniania łamie linie tylko tam, gdzie są spacje.
 
@@ -902,7 +902,7 @@ przejść do miejsca wystąpienia łańcucha, który wpisałeś do tej pory,
 i podświetla go dla Twojej wygody. By znaleźć następne wystąpienie
 słowa kursor, po prostu jeszcze raz naciśnij C-s. Jeśli takiego
 wystąpienia nie ma, to Emacs zapiszczy i napisze, że szukanie
-,,skończyło się porażką''.
+„skończyło się porażką”.
 
 Kombinacja C-g przerywa proces szukania, podobnie jak to czyni
 z innymi poleceniami.
@@ -958,7 +958,7 @@ jednego okna na raz.
 Każde okno pamięta położenie swojego kursora, lecz w danej chwili
 tylko jedno z okien wyświetla kursor. Wszystkie polecenia edycyjne
 stosują się do okna, w którym jest kursor. To okno nazywane jest
-,,oknem wybranym''.
+„oknem wybranym”.
 
 Polecenie C-M-v przyda Ci się, gdy będziesz chciał edytować tekst w
 jednym oknie, a drugiego używał jako punktu odniesienia. Dzięki niemu
@@ -980,8 +980,8 @@ Wynika to z tego, że ESC jest znakiem, a nie modyfikatorem.
 >> Naciśnij C-x 1 (w górnym oknie), by pozbyć się okna dolnego.
 
 (Jeśli nacisnąłbyś C-x 1 w dolnym oknie, to górne by znikło. Możesz
-sobie to polecenie tłumaczyć jako ,,pozostaw tylko jedno okno --- to w
-którym właśnie jestem''.)
+sobie to polecenie tłumaczyć jako pozostaw tylko jedno okno --- to w
+którym właśnie jestem.)
 
 Nie musi być tak, że obydwa okna pokazują ten sam bufor. Jeśli użyjesz
 C-x C-f, by odwiedzić jakiś plik w jednym z nich, to zawartość drugiego
@@ -1009,7 +1009,7 @@ trybu edycji. Mógłbyś na przykład zobaczyć [(Fundamental)] zamiast
 (Fundamental).
 
 By wyjść z rekursywnego poziomu edycji, naciśnij ESC ESC ESC. Jest to
-ogólnego przeznaczenia polecenie ,,wychodzimy''. Możesz go użyć także,
+ogólnego przeznaczenia polecenie „wychodzimy”. Możesz go użyć także,
 by pozbyć się nadmiaru okien albo wyjść z minibufora.
 
 >> Naciśnij M-x by wejść do minibufora, potem naciśnij ESC ESC ESC, by
@@ -1048,7 +1048,7 @@ Powinno to przywołać komunikat, o treści podobnej do
 
        C-p runs the command previous-line
 
-W ten sposób możesz uzyskać ,,nazwę funkcji'' przypisanej kombinacji
+W ten sposób możesz uzyskać „nazwę funkcji” przypisanej kombinacji
 klawiszy. Przydaje się to podczas pisania kodu w Lispie, w którym
 zapisane są rozszerzenia Emacsa; wystarcza to także do przypomnienia
 Ci, co dane polecenie robi, jeśli widziałeś je już wcześniej, lecz
@@ -1183,7 +1183,7 @@ PODSUMOWANIE
 Pamiętaj, że by wyjść z Emacsa na stałe, trzeba wydać polecenie C-x C-c.
 By wyjść do powłoki na chwilę tak, by jeszcze Do Emacsa wrócić, trzeba
 użyć C-z. (To nie działa pod X-Windows, ponieważ tam nie ma prawdziwego
-konceptu przejścia na chwilę do powłoki. Zamiast tego C-z ,,ikonizuje''
+konceptu przejścia na chwilę do powłoki. Zamiast tego C-z „ikonizuje”
 okno Emacsa.)
 
 Ten samouczek był pisany tak, by wszyscy nowi użytkownicy mogli go
index 1b59232c34896fd6d9dff86a0795c26d53b3e73c..086a36422475777a2653f89bbf799317324470b2 100644 (file)
@@ -326,7 +326,7 @@ posição corrente do cursor.
    pessoal dele.
 
 Quando uma linha de texto fica muito grande na tela, a linha do texto é
-continuada na linha seguinte. Uma barra invertida ("\") na margem
+continuada na linha seguinte. Uma barra invertida (“\”) na margem
 direita indica a linha que foi continuada.
 
 >> Insira texto até que você alcance a margem direita, e mantenha
@@ -630,12 +630,12 @@ voltar para a mesma seção do Emacs depois.
 
 Em sistemas que permitem isso, C-z "suspende" o Emacs; isso e, retorna
 ao shell mas não destrói o Emacs. Nos shells mais comum, você pode
-resumir o Emacs com o comando 'fg' ou com '%emacs'.
+resumir o Emacs com o comando "fg" ou com "%emacs".
 
 Nos sistemas que não implementam suspensão, C-z cria um subshell rodando
 sobre o Emacs para dar a você a chance de rodar outros programas e
 retornar ao Emacs depois; isso não "sai" verdadeiramente do Emacs. Nesse
-caso, o comando shell 'exit' é o comando usual para voltar ao Emacs do
+caso, o comando shell "exit" é o comando usual para voltar ao Emacs do
 subshell.
 
 A hora de usar o C-x C-c é quando você esta prestes a sair do sistema
@@ -829,7 +829,7 @@ esta no que chamamos de pesquisa incremental esperando que você digite o
 que você quer procurar. <Return> termina a pesquisa.
 
 >> Agora digite C-s para iniciar a pesquisa. DEVAGAR, uma letra por vez,
-   digite o caractere 'cursor', pausando cada vez que você digitar um
+   digite o caractere "cursor", pausando cada vez que você digitar um
    caractere, perceba o que acontece com o cursor. Agora que você
    pesquisou por "cursor", uma vez.
 >> Digite C-s novamente, para pesquisa a próxima ocorrência de "cursor".
@@ -838,7 +838,7 @@ que você quer procurar. <Return> termina a pesquisa.
 
 Você viu o que aconteceu? O Emacs, em uma pesquisa incremental, tenta ir
 para a ocorrência que você digitou ate o momento. Para ir para próxima
-ocorrência de 'cursor' apenas digite C-s novamente. Se nenhuma
+ocorrência de "cursor" apenas digite C-s novamente. Se nenhuma
 ocorrência existir, o Emacs bipa e te diz que a pesquisa atual
 falhou. C-g também termina a pesquisa.
 
index 7bd8f47e3affb5303f19ac8363a8d6c95c0dab8d..ec437968251c652c4fac6a84e5fcb2691636f23a 100644 (file)
@@ -328,7 +328,7 @@ cursorului.
 
 Când o linie de text devine prea mare pentru a putea fi reprezentată
 pe o linie de ecran, linia de text este continuată pe următoarea linie
-de pe ecran.  Un caracter backslash ("\") la marginea din dreapta
+de pe ecran.  Un caracter backslash („\”) la marginea din dreapta
 indică o linie care a fost continuată.
 
 >> Introduceţi text până când depăşiţi cu câteva caractere marginea
@@ -636,13 +636,13 @@ C-z este comanda cu care puteţi ieşi din Emacs *temporar* - astfel
 Pe sistemele unde este posibil, C-z "suspendă" Emacs-ul; asta înseamnă
 că, deşi vă veţi întoarce la prompt-ul shell-ului, Emacs-ul nu a fost
 distrus.  În shell-urile (interpretoarele de comenzi Unix) cele mai
-uzuale puteţi reactiva Emacs-ul cu comanda `fg' sau `%emacs'.
+uzuale puteţi reactiva Emacs-ul cu comanda "fg" sau "%emacs".
 
 Pe sistemele care nu implementează mecanismele de suspendare, C-z
 creează un subshell care rulează sub Emacs pentru a vă oferi
 posibilitatea de a rula alte programe şi de a vă întoarce la Emacs mai
 târziu; pe aceste sisteme C-z nu iese cu adevărat din Emacs - comanda
-`exit' la promptul subshell-ului este modalitatea uzuală de a vă
+"exit" la promptul subshell-ului este modalitatea uzuală de a vă
 întoarce în Emacs.
 
 În general C-x C-c se foloseşte înainte de părăsirea sistemului.
index d440ae273f64102512eaf7dab8a92fd468755b19..ff898bc57a9995199388f8196512ebafb47d82dd 100644 (file)
@@ -43,8 +43,8 @@ M-v (удерживайте клавишу META и наберите v, или н
 
        C-v     Перейти на один экран вперед
        M-v     Перейти на один экран назад
-       C-l     Очистить экран и отобразить все заново, 
-               разместив текст, находящийся возле курсора, 
+       C-l     Очистить экран и отобразить все заново,
+               разместив текст, находящийся возле курсора,
                в центре экрана. (это CONTROL-L, а не CONTROL-1.)
 
 >> Найдите курсор и запомните текст возле него. Потом нажмите C-l.
@@ -166,7 +166,7 @@ Control-сочетания работают с базовыми единицам
        M-a     Назад, в начало предложения
        M-e     Вперед, в конец предложения
 
->> Попробуйте сейчас несколько раз использовать все эти команды. 
+>> Попробуйте сейчас несколько раз использовать все эти команды.
    Это наиболее часто используемые команды.
 
 Две другие важные команды перемещения курсора: M-< (META Less-then
@@ -178,10 +178,10 @@ Greater-than {Больше-Чем}), которая перемещает кур
 же должны использовать Shift, чтобы набрать M-< (без удержания клавиши Shift
 вы наберете M-точка).
 
->> Сейчас попробуйте M-<, чтобы переместиться в начало учебника. 
+>> Сейчас попробуйте M-<, чтобы переместиться в начало учебника.
    Потом используйте C-v, пока не вернетесь назад.
 
->> Сейчас попробуйте M->, чтобы переместиться к концу учебника. 
+>> Сейчас попробуйте M->, чтобы переместиться к концу учебника.
    Используйте M-v, пока не вернетесь назад.
 
 Курсор можно перемещать клавишами управления курсора (стрелками), если ваш
@@ -259,11 +259,11 @@ META. Мы рекомендуем привыкнуть к использован
 говорящее о том, какая команда вызывается, и запросит у вас, хотите ли вы
 продолжать работу и выполнить данную команду.
 
-Если вы действительно хотите выполнить эту команду, то нажмите клавишу 
+Если вы действительно хотите выполнить эту команду, то нажмите клавишу
 <SPC> (пробел) в ответ на заданный вопрос. А если вы не хотите выполнить
 запрещенную команду, то ответьте на вопрос нажатием клавиши "n".
 
->> Нажмите `C-x C-l' ("запрещенная" команда), а потом ответьте "n" на
+>> Нажмите "C-x C-l" ("запрещенная" команда), а потом ответьте "n" на
    заданный вопрос.
 
 
@@ -320,7 +320,7 @@ Emacs может отображать информацию в нескольки
 дисплей, то небольшие изогнутые стрелки появятся на обоих сторонах экрана
 ("fringes") чтобы показать, что строка продолжается с предыдущей
 строки. Если вы используете текстовый терминал, то "продолжаемая" строка
-обозначается символом "обратный слэш" ("\") в правой части экрана.
+обозначается символом "обратный слэш" («\») в правой части экрана.
 
 >> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку
    символов. Вы увидите что появится "продолжаемая" строка.
@@ -649,7 +649,7 @@ C-z -- это команда *временного* выхода из Emacs. В
 ту же сессию Emacs.  Когда Emacs запускается на текстовом терминале, команда
 C-z "приостанавливает" (suspend) Emacs, т.е. она возвращает вас в командный
 процессор (shell), но не завершает Emacs. В большинстве командных
-процессоров вы можете вернуться в Emacs с помощью команды `fg' или `%emacs'.
+процессоров вы можете вернуться в Emacs с помощью команды "fg" или "%emacs".
 
 Чтобы покинуть Emacs используйте C-x C-c.  Это сочетание также используется,
 чтобы выйти из Emacs, вызванного из почтовой программы или другой утилиты.
@@ -803,13 +803,13 @@ M-x auto-fill-mode<Return>. Если режим включен, то такая
 используя команду C-x f.  Вы должны задать границу в виде числового
 аргумента для этой команды.
 
->> Введите C-x f с аргументом 20 (C-u 2 0 C-x f). 
+>> Введите C-x f с аргументом 20 (C-u 2 0 C-x f).
    Затем введите какой-нибудь текст и посмотрите как Emacs заполняет строки
    по 20 символов в каждой.  Верните значение границы равное 70 назад,
    используя команду C-x f.
 
 Если вы сделали изменения в середине параграфа, то автозаполнение не
-переформатирует текст автоматически. 
+переформатирует текст автоматически.
 Чтобы переформатировать параграф, наберите M-q (META-q), когда курсор
 находится внутри параграфа.
 
@@ -834,7 +834,7 @@ Emacs умеет искать строки (строка -- непрерывна
 <Return> завершает поиск.
 
 >> Теперь нажмите C-s для начала поиска. Медленно, по одной букве, набирайте
-   слово 'курсор', останавливаясь после каждой введенной буквы и замечая, что
+   слово "курсор", останавливаясь после каждой введенной буквы и замечая, что
    происходит с курсором.
    Сейчас вы нашли первое вхождение слова "курсор".
 >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор".
@@ -843,7 +843,7 @@ Emacs умеет искать строки (строка -- непрерывна
 
 Вы заметили, что произошло? Emacs в режиме инкрементального поиска пытался
 переходить к строкам, совпадающим с набираемой вами строкой.  Чтобы перейти
-к следующему вхождению слова 'курсор', просто нажмите C-s снова. Если больше
+к следующему вхождению слова "курсор", просто нажмите C-s снова. Если больше
 нет вхождений, то Emacs издаст звуковой сигнал и сообщит, что ваш поиск не
 удался ("failing"), C-g также завершает поиск.
 
@@ -1054,7 +1054,7 @@ C-x 1.
 >> Наберите C-x 1 для удаления окна справки.
 
    C-h i Читать интерактивные руководства (команда Info). Эта команда
-         переходит в специальный буфер с именем `*info*', где вы можете
+         переходит в специальный буфер с именем "*info*", где вы можете
          читать интерактивные руководства для пакетов, установленных в вашей
          системе. Наберите m emacs <Return> для чтения руководства по
          Emacs. Если вы никогда ранее не использовали Info, то наберите ? и
@@ -1132,4 +1132,3 @@ Copyright (C) 1985, 1996, 1998, 2001-2014 Free Software Foundation, Inc.
 ;;; sentence-end-double-space: nil
 ;;; fill-column: 76
 ;;; End:
-
index f3e7ba3ab14156667a4997cb6bb9e1799dd36c72..0a963d0f33a26d92d0ee2928d5fa1a5cefb8cbdb 100644 (file)
@@ -323,7 +323,7 @@ Všeobecne, <Delback> maže znak bezprostredne pred momentálnou pozíciou kurzo
 
 Keď sa riadok textu zväčší natoľko, že presiahne jeden riadok obrazovky, je
 zobrazený na viacerých riadkoch obrazovky.  Riadok textu, ktorý pokračuje na
-ďalšom riadku obrazovky, je indikovaný spätným lomítkom ("\") (alebo, ak
+ďalšom riadku obrazovky, je indikovaný spätným lomítkom („\“) (alebo, ak
 používate grafický systém, malá zakrivená šípka) na pravom okraji obrazovky.
 
 >> Vkladajte text, pokiaľ nedosiahnete pravého okraju, a pokračujte vo
@@ -632,13 +632,13 @@ spusteného Emacsu vrátiť.
 
 Na systémoch, ktoré to umožňujú, C-z Emacs "pozastaví"; tzn. vráti Vás
 do shellu, ale Emacs neskončí.  V najbežnejších shelloch sa môžete do
-Emacsu vrátiť príkazom `fg' alebo pomocou `%emacs'.
+Emacsu vrátiť príkazom "fg" alebo pomocou "%emacs".
 
 Na systémoch, ktoré pozastavovanie procesov nemajú implementované, C-z
 vytvorí subshell bežiaci pod Emacsom, aby Vám dal šancu spustiť iné
 programy a potom sa do Emacsu vrátiť; nevykoná teda pravé opustenie
 Emacsu.  V tom prípade je obvyklou cestou návratu zo subshellu do Emacsu
-shellový príkaz `exit'.
+shellový príkaz "exit".
 
 Chvíľa pre použitie C-x C-c nastane vtedy, keď sa chystáte odhlásiť sa zo
 systému.  Správne je to tiež pri ukončovaní Emacsu vyvolaného poštovým
@@ -1022,7 +1022,7 @@ zodpovedajúcich mien príkazov ako find-file.
 >> Stlačte C-x 1 pre zmazanie okna s nápovedou.
 
    C-h i        Čítanie on-line manuálov (tiež Info).  Tento príkaz
-        Vás prepne do špeciálneho buffera s názvom `*info*',
+        Vás prepne do špeciálneho buffera s názvom "*info*",
                v ktorom môžete čítať on-line manuály pre balíky
         inštalované na vašom systéme.  Ak stlačíte m emacs <Return>,
                môžete si napríklad prečítať manuál k Emacsu.  Ak ste
index d43a65f3f78ce92a6d30c3d07806e4c9a3545dff..aa574e02b2a0fd8fe0d53290f8fcbb58e0b71ea0 100644 (file)
@@ -322,7 +322,7 @@ När en rad blir för lång för att rymmas på en skärmbredd så fortsätter
 den på raden under. Om du använder ett fönstersystem, visas små böjda
 pilar i det lilla utrymmet på bägge sidor om textmassan (i vänster och
 höger marginal) för att ange var en rad fortsätter, Om du använder
-en textterminal anges med ett bakstreck ("\") i kolumnen längst till
+en textterminal anges med ett bakstreck (”\”) i kolumnen längst till
 höger att raden fortsätter.
 
 >>  Skriv in lite text så att du kommer till slutet av raden och
index 45bfd4e20885a41a462de121b292e89445e66f04..77e8cfbdfedfdffef960969b24bc912ea2d40283 100644 (file)
@@ -302,7 +302,7 @@ ALT), ท่านสามารถจะทำได้ด้วยอีก
    ท่านจะไม่ทำให้ข้อความในต้นฉบับของคู่มือการใช้เปลี่ยนแปลง. นี่เป็นเพียงฉบับสำเนาเท่านั้น.
 
 เมื่อข้อความในบรรทัดยาวเกินกว่าหนึ่งบรรทัดของหน้าจอ, ข้อความในบรรทัดนั้นจะต่อเนื่อง
-ไปยังบรรทัดถัดไปของหน้าจอ. อักขระ backslash ("\") ที่ปลายของขอบขวามือจะบ่งชี้
+ไปยังบรรทัดถัดไปของหน้าจอ. อักขระ backslash (“\”) ที่ปลายของขอบขวามือจะบ่งชี้
 ว่าข้อความของบรรทัดนั้นต่อเนื่องไปยังบรรทัดถัดไป.
 
 >> ป้อนข้อความจนกระทั่งถึงขอบขวา, แล้วป้อนต่อไปอีก. ท่านจะเห็นการแสดงผลของ
@@ -560,11 +560,11 @@ C-x C-f ก็จะทำงาน, และจะเยือนแฟ้ม
 
 สำหรับระบบที่อนุญาตให้ใช้คำสั่ง, C-z "suspends" อีแมกส์; นั่นคือการกลับไปยังเชลล์
 (shell) โดยไม่ได้ทำลายอีแมกส์. ในเชลล์ทั่วไป, ท่านสามารถรีซูม (resume) อีแมกส์
-ได้ด้วยคำสั่ง `fg' หรือด้วยคำสั่ง `%emacs'.
+ได้ด้วยคำสั่ง "fg" หรือด้วยคำสั่ง "%emacs".
 
 สำหรับระบบที่ไม่มีฟังก์ชัน "suspend", คำสั่ง C-z จะสร้างซับเชลล์ (subshell)
 ภายใต้อีแมกส์เพื่อให้ท่านมีโอกาสดำเนินงานโปรแกรมอื่นก่อนแล้วค่อยกลับมายังอีแมกส์อีกครั้ง;
-ซึ่งไม่ใช่การ "ออกจาก (exit)" อีแมกส์จริง. ในกรณีนี้, คำสั่งเชลล์ `exit' เป็นคำสั่ง
+ซึ่งไม่ใช่การ "ออกจาก (exit)" อีแมกส์จริง. ในกรณีนี้, คำสั่งเชลล์ "exit" เป็นคำสั่ง
 ปรกติที่ใช้ในการกลับไปยังอีแมกส์จากซับเชลล์.
 
 ใช้คำสั่ง C-x C-c ก็ต่อเมื่อท่านต้องการจะเลิกใช้อีแมกส์จริงๆ. วิธีนี้เป็นวิธีที่ถูกต้องใน
index fcdde8003bcb285c5f86bf54a733c141c2166798..7e7f6bf3771e5bc6349e302e71063d0a5fb91595 100644 (file)
@@ -1,3 +1,22 @@
+2014-03-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacsclient.c (main): #ifdef out previous change on Windows.
+
+2014-03-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix emacsclient terminal corruption when in background (Bug#16892).
+       * emacsclient.c (handle_sigcont): Check for tcgetpgrp failure.
+       Cancel the continue only if tty.  Send SIGTTIN to the process
+       group, not SIGSTOP to self, as this is what the glibc manual
+       recommends.
+       (main): If tty, and if started in the background, send SIGTTIN
+       to the process group.
+
+2014-02-25  Andreas Amann  <a.amann@ucc.ie>  (tiny change)
+
+       Fix emacsclient's handling of SIGCONT (Bug#16883).
+       * emacsclient.c (handle_sigcont): Cancel the continue only if tty.
+
 2014-01-22  Eli Zaretskii  <eliz@gnu.org>
 
        * update-game-score.c (write_scores) [WINDOWSNT]: Use chmod
        * make-docfile.c (IF_LINT):
        * emacsclient.c (IF_LINT): Remove (in config.h now).
 
-       * make-docfile.c (main):
+       * make-docfile.c (main)
        (fopen) [!WINDOWSNT]:
        (chdir) [!DOS_NT]: No more need to undef.
 
 
 2012-06-05  Glenn Morris  <rgm@gnu.org>
 
-       * makefile.w32-in ($(BLD)/getdate.$(O), $(BLD)/leditcfns.$(O)):
-       ($(BLD)/make-path.$(O), $(BLD)/qsort.$(O)):
+       * makefile.w32-in ($(BLD)/getdate.$(O), $(BLD)/leditcfns.$(O))
+       ($(BLD)/make-path.$(O), $(BLD)/qsort.$(O))
        ($(BLD)/timer.$(O)): Remove cruft.
 
 2012-06-03  Glenn Morris  <rgm@gnu.org>
 
        * emacsclient.c (main): Avoid dangling 'if'.
        (xstrdup): Remove; no longer needed.
-       (get_current_dir_name, w32_getenv, get_server_config, find_tty):
+       (get_current_dir_name, w32_getenv, get_server_config, find_tty)
        (set_local_socket, main):
        Use const char *, not char *, for pointers that are not assigned
        through.
 
        * fakemail.c (action): Convert function definitions to standard C.
        (add_a_stream):
-       * test-distrib.c (cool_read):
-       (main): Likewise.
+       * test-distrib.c (cool_read, main): Likewise.
 
 2010-07-03  Andreas Schwab  <schwab@linux-m68k.org>
 
 2007-08-29  Jason Rumney  <jasonr@gnu.org>
 
        * emacsclient.c (SEND_STRING, SEND_QUOTED): Remove obfuscation macros.
-       (quote_argument, set_tcp_socket, handle_sigcont, handle_sigtstp):
+       (quote_argument, set_tcp_socket, handle_sigcont, handle_sigtstp)
        (main): Expand removed macros inline.
        (main) [WINDOWSNT]: Don't call ttyname.  Don't recognize -suspend
        option.
 
 2001-11-30  Andrew Innes  <andrewi@gnu.org>
 
-       * makefile.w32-in (FACE_SUPPORT):
-       (MOUSE_SUPPORT):
-       (FLOAT_SUPPORT):
-       (WINNT_SUPPORT):
-       (lisp): Reference .el files instead of .elc files, to simplify
-       bootstrapping.
+       * makefile.w32-in (FACE_SUPPORT, MOUSE_SUPPORT, FLOAT_SUPPORT)
+       (WINNT_SUPPORT, lisp): Reference .el files instead of .elc files,
+       to simplify bootstrapping.
        ($(DOC)): Change dependency to just `make-docfile'.
 
 2001-11-29  Pavel Janík  <Pavel@Janik.cz>
index 6593b91e39ac14fd60f2e9a3f3f8d1bcea69bd0a..bd0aa121836902cf44bbf0b02c6fe8157cb2fb71 100644 (file)
@@ -1105,16 +1105,18 @@ static void
 handle_sigcont (int signalnum)
 {
   int old_errno = errno;
+  pid_t pgrp = getpgrp ();
+  pid_t tcpgrp = tcgetpgrp (1);
 
-  if (tcgetpgrp (1) == getpgrp ())
+  if (tcpgrp == pgrp)
     {
-      /* We are in the foreground. */
+      /* We are in the foreground.  */
       send_to_emacs (emacs_socket, "-resume \n");
     }
-  else
+  else if (0 <= tcpgrp && tty)
     {
-      /* We are in the background; cancel the continue. */
-      raise (SIGSTOP);
+      /* We are in the background; cancel the continue.  */
+      kill (-pgrp, SIGTTIN);
     }
 
   signal (signalnum, handle_sigcont);
@@ -1554,6 +1556,16 @@ main (int argc, char **argv)
       exit (EXIT_FAILURE);
     }
 
+#ifndef WINDOWSNT
+  if (tty)
+    {
+      pid_t pgrp = getpgrp ();
+      pid_t tcpgrp = tcgetpgrp (1);
+      if (0 <= tcpgrp && tcpgrp != pgrp)
+       kill (-pgrp, SIGTTIN);
+    }
+#endif /* !WINDOWSNT */
+
   /* If alternate_editor is the empty string, start the emacs daemon
      in case of failure to connect.  */
   start_daemon_if_needed = (alternate_editor
index 0f22beb3f5f97a6a67487af516d4ea1b699d4183..e219292aa3435683b35f1f88c62e8ae3b790406c 100644 (file)
@@ -21,7 +21,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 byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros 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 update-copyright 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=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros 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 update-copyright utimens warnings
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -1549,6 +1549,31 @@ EXTRA_DIST += sys_time.in.h
 
 ## end   gnulib module sys_time
 
+## begin gnulib module sys_types
+
+BUILT_SOURCES += sys/types.h
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+sys/types.h: sys_types.in.h $(top_builddir)/config.status
+       $(AM_V_at)$(MKDIR_P) sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+             -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+             < $(srcdir)/sys_types.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += sys/types.h sys/types.h-t
+
+EXTRA_DIST += sys_types.in.h
+
+## end   gnulib module sys_types
+
 ## begin gnulib module tempname
 
 if gl_GNULIB_ENABLED_tempname
index 5deca3969abc41631df7b47a48d647e5e2b77653..247f0d89619fd5f69f5e8f97ae3aa42a6c07f319 100644 (file)
@@ -38,8 +38,7 @@
    other system header files; just include the system's <stdint.h>.
    Ideally we should test __BIONIC__ here, but it is only defined after
    <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
-#if defined __ANDROID__ \
-    && defined _SYS_TYPES_H_ && !defined __need_size_t
+#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H
 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
 #else
 
index d3a4be1074aa8e930e14dffd56d86ff68733f329..deb5d67d1d7d2d8a573984911bfc89ea24dbe192 100644 (file)
@@ -23,7 +23,9 @@
 #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
 
 /* The include_next requires a split double-inclusion guard.  */
+# define _GL_INCLUDING_SYS_TYPES_H
 #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+# undef _GL_INCLUDING_SYS_TYPES_H
 
 #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
 #define _@GUARD_PREFIX@_SYS_TYPES_H
index 39b128a6da7c1f47844d554d5192a83df5bcd6bc..622b2287577279453a5945201277600e33cd7e59 100644 (file)
 #endif
 @PRAGMA_COLUMNS@
 
+#ifdef _GL_INCLUDING_UNISTD_H
+/* Special invocation convention:
+   - On Mac OS X 10.3.9 we have a sequence of nested includes
+     <unistd.h> -> <signal.h> -> <pthread.h> -> <unistd.h>
+     In this situation, the functions are not yet declared, therefore we cannot
+     provide the C++ aliases.  */
+
+#@INCLUDE_NEXT@ @NEXT_UNISTD_H@
+
+#else
+/* Normal invocation convention.  */
+
 /* The include_next requires a split double-inclusion guard.  */
 #if @HAVE_UNISTD_H@
+# define _GL_INCLUDING_UNISTD_H
 # @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+# undef _GL_INCLUDING_UNISTD_H
 #endif
 
 /* Get all possible declarations of gethostname().  */
@@ -1539,4 +1553,5 @@ _GL_CXXALIASWARN (write);
 _GL_INLINE_HEADER_END
 
 #endif /* _@GUARD_PREFIX@_UNISTD_H */
+#endif /* _GL_INCLUDING_UNISTD_H */
 #endif /* _@GUARD_PREFIX@_UNISTD_H */
index 12481eff13968c52ebb2c319459b2d122d6c463e..cf42e8ccef65450b815ef0f0d3caacf648c3e6a9 100644 (file)
@@ -1,3 +1,660 @@
+2014-03-16  Martin Rudalics  <rudalics@gmx.at>
+
+       Fix behavior of with-temp-buffer-window (Bug#16816, Bug#17007).
+       * window.el (with-temp-buffer-window): Don't make BUFFER-OR-NAME
+       current (Bug#16816, Bug#17007).
+       (with-current-buffer-window): New macro doing the same as
+       `with-temp-buffer-window' but with BUFFER-OR-NAME current.
+       * help.el (help-print-return-message): Warn in doc-string to not
+       use this in `with-help-window'.
+       (describe-bindings-internal): Call `describe-buffer-bindings'
+       from within help buffer.  See Juanma's scenario in (Bug#16816).
+       (with-help-window): Update doc-string.
+       * dired.el (dired-mark-pop-up):
+       * files.el (save-buffers-kill-emacs):
+       * register.el (register-preview): Use `with-current-buffer-window'
+       instead of `with-temp-buffer-window'.
+
+2014-03-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/rst.el (rst-arabic-to-roman, rst-roman-to-arabic):
+       Implement inserting into current buffer, documented in their docstrings.
+       (rst-define-key, rst-compare-adornments, rst-insert-list-new-item)
+       (rst-section-tree-point, rst-forward-section, rst-indent)
+       (rst-compute-tabs, rst-font-lock-find-unindented-line-end)
+       (rst-font-lock-find-unindented-line-limit, rst-adornment-level)
+       (rst-font-lock-handle-adornment-pre-match-form)
+       (rst-repeat-last-character): Reflow docstrings.
+       (rst-preferred-adornments, rst-update-section, rst-find-title-line)
+       (rst-adjust-adornment-work, rst-initial-items, rst-insert-list)
+       (rst-toc-insert-style, rst-toc-insert-node, rst-goto-section)
+       (rst-compile, rst-imenu-convert-cell, rst-imenu-create-index):
+       Fix docstring typos.
+       (rst-all-sections, rst-section-hierarchy, rst-adjust): Doc fixes.
+       (rst-uncomment-region, rst-font-lock-find-unindented-line-match)
+       (rst-font-lock-handle-adornment-matcher): Mark unused arguments.
+
+2014-03-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * term/ns-win.el (x-command-line-resources): Rename from ns-... version,
+       for compatibility with other ports.
+       (ns-initialize-window-system): Use it.  It is set in term/common-win.el
+       from the -xrm command line argument, but in the Nextstep port its value
+       is irrelevant because nsfns.m:Fx_open_connection ignores it for now.
+
+       * progmodes/python.el (defconst, python-syntax-count-quotes)
+       (python-indent-region, python-indent-shift-right)
+       (python-indent-dedent-line-backspace, python-nav-backward-sexp)
+       (python-nav-backward-sexp-safe, python-nav-backward-up-list)
+       (python-shell-prompt-block-regexp, python-shell-prompt-output-regexp)
+       (python-shell-prompt-pdb-regexp, python-shell-enable-font-lock)
+       (inferior-python-mode, python-shell-make-comint, run-python-internal)
+       (python-shell-buffer-substring, python-shell-send-buffer)
+       (python-pdbtrack-activate, python-pdbtrack-stacktrace-info-regexp)
+       (python-completion-complete-at-point, python-fill-docstring-style)
+       (python-eldoc-function, python-imenu-format-item-label)
+       (python-imenu-format-parent-item-label)
+       (python-imenu-format-parent-item-jump-label)
+       (python-imenu--build-tree, python-imenu-create-index)
+       (python-imenu-create-flat-index): Fix docstring typos.
+       (python-indent-context, python-shell-prompt-regexp, run-python):
+       Remove superfluous backslashes.
+       (python-indent-line, python-nav-beginning-of-defun)
+       (python-shell-get-buffer, python-shell-get-process)
+       (python-info-current-defun, python-info-current-line-comment-p)
+       (python-info-current-line-empty-p, python-util-popn): Doc fixes.
+       (python-indent-post-self-insert-function, python-shell-send-file)
+       (python-shell-completion-get-completions)
+       (python-shell-completion-complete-or-indent)
+       (python-eldoc--get-doc-at-point): Reflow docstrings.
+
+2014-03-14  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/package.el (package-menu-mode-map):
+       Replace use of obsolete function alias.  Tweak menu item text.
+
+       * info.el (Info-finder-find-node):
+       Ignore the `emacs' metapackage.  (Bug#10813)
+
+       * finder.el (finder-list-matches): Include unversioned packages
+       in the result of a keyword search.
+
+       * finder.el (finder--builtins-descriptions): New constant.
+       (finder-compile-keywords): Use finder--builtins-descriptions.
+
+2014-03-14  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * simple.el (blink-matching-paren): Describe the new value,
+       `jump', enabling the old behavior.
+       (blink-matching-open): Use that value.  (Bug#17008)
+
+2014-03-14  Glenn Morris  <rgm@gnu.org>
+
+       * finder.el (finder-no-scan-regexp): Add leim-list.
+       (finder-compile-keywords):
+       Don't skip files with same basename.  (Bug#14010)
+       * Makefile.in (setwins_finder): New, excluding leim.
+       (finder-data): Use setwins_finder.
+
+       * help-fns.el (help-split-fundoc, help-add-fundoc-usage)
+       (help-function-arglist, help-make-usage): Move from here...
+       * help.el (help-split-fundoc, help-add-fundoc-usage)
+       (help-function-arglist, help-make-usage): ... to here.  (Bug#17001)
+       * emacs-lisp/bytecomp.el (byte-compile-lambda): Do not load help-fns.
+
+2014-03-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * net/socks.el (socks, socks-override-functions)
+       (socks-find-services-entry):
+       * progmodes/hideif.el (hif-set-var, hif-nexttoken, hif-comma)
+       (hif-find-ifdef-block):
+       * progmodes/modula2.el (m2-indent): Fix docstring typos.
+
+       * net/tls.el (tls-program): Reflow docstring.
+
+       * progmodes/pascal.el (pascal-mode-abbrev-table)
+       (pascal-imenu-generic-expression, pascal-auto-endcomments)
+       (pascal-mark-defun, pascal-comment-area, pascal-indent-level)
+       (pascal-outline-mode): Fix docstring typos.
+       (pascal-mode): Let define-derived-mode document mode hook.
+       (pascal-uncomment-area): Reflow.
+       (pascal-exclude-str-start, pascal-exclude-str-end): Add docstring.
+
+       * progmodes/opascal.el (opascal-compound-block-indent)
+       (opascal-case-label-indent): Fix docstring typos.
+       (opascal-mode): Fix typos; let defined-derived-mode document mode hook.
+
+2014-03-13  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-font-lock-keywords): Fontify
+       multiple adjacent negation chars.  (Bug#17004)
+
+2014-03-13  Tom Willemse  <tom@ryuslash.org>  (tiny change)
+
+       * emacs-lisp/package.el (package--prepare-dependencies):
+       Accept requirements without explicit version (bug#14941).
+
+2014-03-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * register.el (register-separator, copy-to-register): Doc fixes.
+       (register-preview-default): Remove unnecessary call to concat.
+
+       * frameset.el (frameset-restore): When checking for a visible frame,
+       use the action map instead of calling visible-frame-list.
+
+2014-03-12  Jonas Bernoulli  <jonas@bernoul.li>
+
+       * emacs-lisp/eieio.el (with-slots): Use cl-symbol-macrolet (bug#16998).
+
+2014-03-12  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (fit-frame-to-buffer): Get maximum width from
+       display's width instead of height.
+
+2014-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * desktop.el (desktop-restore-frames)
+       (desktop-restore-in-current-display, desktop-restore-forces-onscreen)
+       (desktop-restore-reuses-frames): Doc tweaks.
+
+       * electric.el (electric-indent-mode): Doc fix.
+
+2014-03-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * vc/pcvs.el (cvs-temp-buffer, defun-cvs-mode, cvs-get-cvsroot)
+       (cvs-checkout, cvs-mode-checkout, cvs-update-filter, cvs-mode-mark)
+       (cvs-mode-diff-head, cvs-mode-diff-repository, cvs-mode-diff-yesterday)
+       (cvs-mode-diff-vendor, cvs-mode-do, cvs-change-cvsroot)
+       (cvs-dired-use-hook): Fix docstring typos.
+       (cvs-mode-view-file-other-window, cvs-mode-byte-compile-files):
+       Doc fixes.
+
+       * vc/pcvs-defs.el (cvs-auto-remove-handled)
+       (cvs-auto-remove-directories, cvs-default-ignore-marks)
+       (cvs-idiff-imerge-handlers, cvs-reuse-cvs-buffer)
+       (cvs-execute-single-dir): Fix docstring typos.
+
+       * vc/pcvs-info.el (cvs-status-map, cvs-states): Fix docstring typos.
+       (cvs-fileinfo-pp, cvs-fileinfo-from-entries): Doc fixes.
+
+       * vc/pcvs-parse.el (cvs-parsed-fileinfo): Reflow docstring.
+
+       * vc/pcvs-util.el (cvs-flags-query, cvs-flags-set, cvs-prefix-set):
+       Fix docstring typos.
+
+2014-03-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frameset.el (frameset--jump-to-register): Add autoload; it could be
+       called from jump-to-register after unloading the frameset package.
+
+2014-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (set-mark): Ensure mark-active is nil if the mark is nil
+       (bug#16975).  Deactivate the mark before setting it to nil.
+       (activate-mark): Do nothing if region is already active.
+
+2014-03-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frameset.el (frameset--target-display): Remove definition; declare.
+       (frameset-save, frameset-restore): Let-bind frameset--target-display.
+
+2014-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/nadvice.el (advice--make-1): Fix autoloading avoidance.
+       (advice-add): Add a :advice--pending marker, so advice--make-1 knows
+       when the advice is pending.
+       (advice-remove): Remove this marker when not needed any more.
+
+2014-03-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frameset.el: Separate options for reusing frames and cleaning up.
+       (frameset--reuse-list): Remove definition; declare.
+       (frameset--action-map): Declare.
+       (frameset--find-frame-if): Doc fix.
+       (frameset--restore-frame): Cache frame action.
+       (frameset-restore): New keyword arg CLEANUP-FRAMES, allows to select
+       how to clean up the frame list after restoring.  Remove cleaning
+       options from REUSE-FRAMES.  Change all keyword values to symbols.
+       (frameset--jump-to-register): Simplify by using CLEANUP-FRAMES.
+
+       * desktop.el (desktop-restore-forces-onscreen)
+       (desktop-restore-reuses-frames): Use non-keyword values.
+       (desktop-restore-frameset): Use CLEANUP-FRAMES arg of frameset-restore.
+
+2014-03-10  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (find-file): Doc fix: update info node name.
+
+       * emacs-lisp/advice.el (ad-add-advice, defadvice):
+       Doc fix: remove references to deleted info nodes.
+
+2014-03-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
+       Do not add `nil' to the environment, when there's no remote `locale'.
+       (tramp-find-inline-encoding): Check, that the remote host has
+       installed perl, before sending scripts.
+
+2014-03-10  Leo Liu  <sdl.web@gmail.com>
+
+       * emacs-lisp/eldoc.el (eldoc-minibuffer-message):
+       Clear eldoc-last-message.  (Bug#16920)
+
+2014-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * desktop.el (desktop-create-buffer): Don't run activate-mark-hook
+       (bug#14430).
+
+2014-03-09  Juri Linkov  <juri@jurta.org>
+
+       * ansi-color.el (ansi-color-names-vector): Copy default colors
+       from `xterm-standard-colors' that look well on the default white
+       background (and also on the black background) to avoid illegible
+       color combinations like yellow-on-white and white-on-white.
+       http://lists.gnu.org/archive/html/emacs-devel/2014-02/msg00157.html
+
+2014-03-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frameset.el (frameset-restore): When no frame is visible, do not
+       generate a list of frames, just make visible the selected one.
+
+2014-03-08  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * vc/vc-git.el (vc-git-command): Turn FILE-OR-LIST into nil when
+       it only contains the repository root.  (Bug#16897)
+
+2014-03-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-sh-handle-vc-registered): Run first pass
+       only when `remote-file-name-inhibit-cache' is nil.
+       (tramp-sh-file-name-handler): Use `tramp-error'.  Simplify code.
+
+2014-03-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (fit-frame-to-buffer, fit-frame-to-buffer-margins):
+       Fix doc-strings.
+       (fit-frame-to-buffer): New argument ONLY.  Remove dependency on
+       fit-frame-to-buffer variable.  Fix doc-string.
+       (fit-window-to-buffer): Set ONLY argument in call of
+       fit-frame-to-buffer.  Fix doc-string.
+
+2014-03-06  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-error): VEC-OR-PROC can be nil.
+       (tramp-action-password): Clear password cache if needed.
+       (tramp-read-passwd): Do not clear password cache.
+
+       * net/tramp-gvfs.el (tramp-gvfs-handler-askpassword): Clear password
+       cache unless it is the first password request.
+
+2014-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * simple.el (newline): Doc tweak.
+
+       * emacs-lisp/shadow.el (load-path-shadows-find):
+       Ignore dir-locals.  (Bug#12357)
+
+2014-03-05  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (interpreter-mode-alist):
+       * progmodes/sh-script.el (sh-ancestor-alist): Add dash.  (Bug#16938)
+
+2014-03-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frameset.el (frameset--initial-params): Filter out null entries.
+
+2014-03-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (window-min-height, window-min-width):
+       Rewrite doc-strings.
+       (window-body-size): Add PIXELWISE argument to make it consistent
+       with its callees.
+
+2014-03-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * finder.el (finder-mode-map, finder-mode-syntax-table):
+       Revert part of 2014-02-28 change.
+
+2014-03-05  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * net/eww.el (eww-mode-map): [tab] doesn't work on tty.
+       (eww-setup-buffer): Clear next/prev/etc more reliably.
+       (eww-textarea-map): [tab] doesn't work on tty.
+       Reported by Mario Lang.
+
+       * net/shr.el (shr-map): Ditto.
+
+2014-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * minibuffer.el (completion-hilit-commonality):
+       Revert 2014-03-01 short-cut, which changed the return value. (Bug#16933)
+
+2014-03-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hilit-chg.el (hilit-chg-unload-function): New function.
+       (highlight-changes-mode, highlight-changes-visible-mode): Fix typos.
+       (hilit-chg-map-changes): Prefer cardinal number to digit.
+       (hilit-chg-display-changes): Reflow docstring.
+       (highlight-changes-rotate-faces): Remove superfluous backslash.
+
+2014-03-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-sh-handle-vc-registered): Do not call
+       `tramp-send-command-and-check'.
+
+2014-03-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hexl.el (hexl-address-region, hexl-ascii-region)
+       (hexl-goto-hex-address, hexl-backward-char, hexl-forward-char)
+       (hexl-backward-short, hexl-forward-short, hexl-backward-word)
+       (hexl-forward-word, hexl-previous-line, hexl-next-line):
+       Use "Hexl mode" for non-hyperlinked hexl-mode references in docstrings.
+       (hexl-mode): Doc fix.
+       (hexl-ascii-start-column, hexl-beginning-of-line, hexl-end-of-line)
+       (hexl-mode-ruler): Fix typos in docstrings.
+
+       * strokes.el (strokes-xpm-header, strokes-rate-stroke): Fix typos.
+       (strokes-character, strokes-get-grid-position, strokes-list-strokes):
+       Remove superfluous backslashes.
+       (strokes-last-stroke, strokes-global-map, strokes-mode):
+       Reflow docstrings.
+       (strokes-xpm-for-stroke, strokes-xpm-to-compressed-string)
+       (strokes-xpm-for-compressed-string): Use quotes with buffer name.
+       (strokes-distance-squared, strokes-global-set-stroke)
+       (strokes-global-set-stroke-string): Doc fixes.
+       (strokes-help): Fix typos; reflow docstring.
+
+2014-03-04  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (window-in-direction): Fix doc-string.
+
+2014-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/smie.el (smie-config-guess): Doc fix.
+       Explicit error if no grammar.
+       (smie-config-save): Doc fix.  Fix quote typo.
+
+2014-03-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-mode.el (c-initialize-cc-mode): Only hook into
+       electric-indent-mode-hook if we obey electric-indent-mode.
+       (c-basic-common-init): Use (fboundp 'electric-indent-local-mode) to
+       decide whether we obey electric-indent-mode.
+       (c-change-set-fl-decl-start, c-extend-after-change-region):
+       Silence warnings.
+       (c-electric-indent-mode-hook): Assume we do want to obey
+       electric-indent-mode.
+
+       * electric.el (electric-indent-mode-has-been-called): Remove.
+       (electric-indent-mode): Fix accordingly.
+
+       * files.el (hack-local-variables): Mention file name in warning.
+
+       * htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message.
+
+2014-03-04  Michal Nazarewicz  <mina86@mina86.com>
+
+       * binding.el: Add comment describing why C-d binds to `delete-char'.
+       * simple.el (delete-forward-char): Mark as interactive-only.
+
+2014-03-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * icomplete.el (icomplete-completions):
+       Follow-up to 2014-03-01 change.
+
+       * icomplete.el: Miscellaneous doc fixes.
+       Use Icomplete everywhere instead of icomplete for consistency.
+       (icomplete-max-delay-chars): Fix typo.
+       (icomplete-mode): Use \[].
+       (icomplete-tidy, icomplete-exhibit): Reflow.
+       (icomplete-minibuffer-setup-hook, icomplete-completions):
+       Remove superfluous backlashes.
+
+       * ido.el: Miscellaneous doc fixes.
+       Use Ido everywhere instead of ido or `ido' for consistency.
+       (ido-record-ftp-work-directories, ido-merge-ftp-work-directories)
+       (ido-cache-ftp-work-directory-time, ido-slow-ftp-hosts)
+       (ido-slow-ftp-host-regexps, ido-reread-directory): Upcase "ftp".
+       (ido-separator): Extract obsolescence info from docstring and declare
+       with make-obsolete-variable.
+       (ido-minibuffer-setup-hook): Simplify example.
+       (ido-text, ido-text-init, ido-input-stack, ido-report-no-match)
+       (ido-wide-find-file, ido-wide-find-dir, ido-wide-find-dir-or-delete-dir)
+       (ido-completion-help, ido-completing-read): Fix typos in docstrings.
+       (ido-everywhere): Reflow docstring.
+       (ido-toggle-vc): Doc fix.
+       (ido-switch-buffer, ido-find-file): Use tabs to improve legibility
+       of long list of keybindings.
+
+2014-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * frame.el (display-pixel-height, display-pixel-width)
+       (display-mm-dimensions-alist, display-mm-height)
+       (display-mm-width): Doc tweaks.
+
+2014-03-02  Barry O'Reilly  <gundaetiapo@gmail.com>
+
+       * simple.el (undo-elt-in-region): Fix buffer corruption for edge
+       case of undo in region.
+
+2014-03-02  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (fit-window-to-buffer): Fix argument in window-size
+       call when window is horizontally combined.
+
+2014-03-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * icomplete.el (icomplete-completions): Use string-width.
+       Suggested by Stefan Monnier <monnier@iro.umontreal.ca>.
+
+2014-03-01  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-font-lock-keywords):
+       Highlight regexp options.  (Bug#16914)
+
+2014-03-01  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (window--max-delta-1): Round down when calculating
+       how many lines/columns we can get from a window.
+
+2014-03-01  Glenn Morris  <rgm@gnu.org>
+
+       * isearch.el (search-invisible): Doc fix.
+
+       * minibuffer.el (completion-hilit-commonality):
+       Make `base-size' argument optional.  Short-cut if `prefix-len' is 0.
+       * comint.el (comint-dynamic-list-completions): Doc fix.
+       * comint.el (comint-dynamic-list-completions):
+       * filecache.el (file-cache-minibuffer-complete):
+       * tempo.el (tempo-display-completions):
+       * eshell/em-hist.el (eshell-list-history):
+       Replace use of obsolete argument of display-completion-list.
+
+2014-03-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * icomplete.el (icomplete-completions):
+       Revert back to using "..." when ?… cannot be displayed.
+
+2014-02-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * finder.el (finder-unload-function): New function.
+
+2014-02-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * dframe.el (dframe-detach):
+       * find-dired.el (find-dired, find-name-dired):
+       * finder.el (finder-mode-map, finder-mode-syntax-table)
+       (finder-headmark, finder-select, finder-mouse-select):
+       Fix docstring typos.
+
+2014-02-28  Martin Rudalics  <rudalics@gmx.at>
+
+       Revert recent with-temp-buffer-window change (Bug#16816, Bug#16882).
+       * window.el (with-temp-buffer-window): Revert change from 2014-02-21.
+       Suggested by Thierry Volpiatto <thierry.volpiatto@gmail.com>.
+       Fix doc-string based on a suggestion by Nicolas Richard
+       <theonewiththeevillook@yahoo.fr>.
+       * help.el (with-help-window): Fix doc-string.
+
+2014-02-28  Ivan Kanis  <ivan@kanis.fr>
+
+       * net/shr.el (shr-image-animate): New option.
+       (shr-put-image): Respect shr-image-animate.
+
+2014-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-adb.el (tramp-adb-parse-device-names):
+       Use `accept-process-output'.
+       (tramp-adb-handle-file-truename): Cache the localname only.
+       (tramp-adb-handle-make-directory)
+       (tramp-adb-handle-delete-directory): Flush file properties correctly.
+       (tramp-adb-handle-set-file-modes): Do not raise an error when file
+       modes cannot be changed.
+
+       * net/tramp-cache.el (tramp-flush-directory-property): Remove also
+       file properties of symlinks.
+
+2014-02-28  Per Starbäck  <starback@stp.lingfil.uu.se>
+
+       * textmodes/bibtex.el (bibtex-biblatex-entry-alist): Update
+       required/optional fields to match development biblatex.  (Bug#16781)
+
+2014-02-28  Andy Sawyer  <andy.sawyer@gmail.com>  (tiny change)
+
+       * saveplace.el (toggle-save-place):
+       Fix argument handling.  (Bug#16673)
+
+2014-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * minibuffer.el (completions-first-difference)
+       (completions-common-part, completion-hilit-commonality): Doc fixes.
+
+2014-02-28  Karl Berry  <karl@gnu.org>
+
+       * info.el (Info-mode-map): Add H for describe-mode,
+       to synchronize with standalone Info.
+
+2014-02-28  Emilio C. Lopes  <eclig@gmx.net>
+
+       * progmodes/sql.el (sql-interactive-mode):
+       Avoid setting global comint-input-ring-separator.  (Bug#16814)
+
+2014-02-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/dbus.el (dbus--init-bus): Declare function.
+       (dbus-path-local, dbus-interface-local): New defconst.
+       (dbus-init-bus): Use them.
+       (dbus-return-values-table): Extend doc.
+       (dbus-handle-bus-disconnect): Extend error message.
+
+2014-02-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * subr.el (y-or-n-p): Fix double space issue in message.
+
+2014-02-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-call-process): Improve trace message.
+       (tramp-handle-insert-file-contents): Trace error case.
+
+       * net/tramp-adb.el (tramp-adb-file-name-handler-alist)
+       <insert-directory>: Use `tramp-handle-insert-directory'.
+       (tramp-adb-handle-insert-directory): Remove function.
+       (tramp-adb-send-command-and-check): New defun, replacing
+       `tramp-adb-command-exit-status'.  Change all callees.
+       (tramp-adb-handle-file-attributes)
+       (tramp-adb-handle-directory-files-and-attributes): Use it.
+       (tramp-adb-ls-output-name-less-p):
+       Use `directory-listing-before-filename-regexp'.
+       (tramp-adb-handle-delete-directory): Flush also file properties of
+       the truename of directory.
+       (tramp-adb-handle-file-name-all-completions): Add "./" and "../".
+       (tramp-adb-handle-file-local-copy): Make the local copy readable.
+       (tramp-adb-handle-write-region): Implement APPEND.
+       (tramp-adb-handle-rename-file): Make it more robust.  Flush file
+       properties correctly.
+       (tramp-adb-maybe-open-connection): Set `tramp-current-*'
+       variables.  Check for connected devices only when needed.
+
+2014-02-27  Glenn Morris  <rgm@gnu.org>
+
+       * minibuffer.el (completion-table-dynamic)
+       (completion-table-with-cache): Doc fixes.
+
+       * emacs-lisp/crm.el (crm-default-separator, crm-separator)
+       (completing-read-multiple): Doc fixes.
+
+2014-02-27  Daniel Colascione  <dancol@dancol.org>
+
+       * minibuffer.el (completion--nth-completion): Fix indentation.
+
+       * net/tramp-sh.el (tramp-get-remote-path): Don't signal error when
+       explicit tramp path is empty.
+
+2014-02-27  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/crm.el (completing-read-multiple):
+       Empower help-enable-auto-load.
+
+2014-02-26  Glenn Morris  <rgm@gnu.org>
+
+       * startup.el (command-line): Don't init the tty in daemon mode.
+
+       Avoid calling tty-setup-hook twice, eg if a term file
+       explicitly calls tty-run-terminal-initialization.  (Bug#16859)
+       * faces.el (tty-run-terminal-initialization): Add run-hook argument.
+       (tty-create-frame-with-faces): Use it.
+       * startup.el (command-line): Pass run-hook argument
+       to tty-run-terminal-initialization.
+
+       * dired.el (dired-restore-desktop-buffer): Demote errors;
+       eg in case a glob match fails.  (Bug#16884)
+
+2014-02-26  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * emacs-lisp/lisp.el (lisp--local-variables): Catch `end-of-file'
+       error from `read-from-string'.  (Bug#16850)
+
+       * emacs-lisp/ert.el (ert-run-tests-interactively): `read' the
+       result of `completing-read' in the interactive form.  (Bug#16854)
+
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * image.el (image-animate, image-animate-timeout):
+       Stop animating images in dead buffers.  (Bug#16878)
+
+       * emacs-lisp/edebug.el (defmacro): Fix debug spec.  (Bug#16868)
+
+       * faces.el (tty-setup-hook, tty-run-terminal-initialization):
+       Doc fixes.
+       * startup.el (term-setup-hook): Doc fix.  Make obsolete.
+       * term/sun.el (sun-raw-prefix-hooks):
+       Use tty-setup-hook instead of term-setup-hook.
+       (terminal-init-sun): Construct message from bytecomp plist.
+       * term/wyse50.el (enable-arrow-keys): Doc fix.
+
+2014-02-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * term/sun.el (kill-region-and-unmark, sun-raw-prefix-hooks):
+       Fix docstring typos.
+
+2014-02-24  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-sh-handle-file-truename): Improve last fix.
+
+2014-02-24  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
+
+       * minibuffer.el (completion--try-word-completion):
+       Fix error when completing M-x commands (bug#16808).
+
+2014-02-24  Leo Liu  <sdl.web@gmail.com>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Fix debug spec.
+
+2014-02-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * apropos.el (apropos-print): Avoid formatting error when
+       apropos-do-all and apropos-compact-layout are both t.
+
 2014-02-23  Juanma Barranquero  <lekktu@gmail.com>
 
        * apropos.el (apropos-property, apropos-all-words-regexp)
 
 2014-02-22  Daniel Colascione  <dancol@dancol.org>
 
-       * net/secrets.el (secrets-create-item,secrets-search-items): Check
-       that attribute values are strings, avoiding the construction of
-       invalid dbus messages.
+       * net/secrets.el (secrets-create-item, secrets-search-items):
+       Check that attribute values are strings, avoiding the construction
+       of invalid dbus messages.
 
 2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
 
        (sql-oracle-options): New default value ("-L").
        (sql-mode-oracle-font-lock-keywords): Add placeholder highlighting.
        (sql-placeholders-filter): Correct placeholder pattern.
-       (sql-read-table-name): Bug fix. Detect absence of SQLi process.
+       (sql-read-table-name): Bug fix.  Detect absence of SQLi process.
        (sql-login-delay): New variable.
        (sql-product-interactive): Use it.
 
 
 2014-02-04  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
-       * progmodes/python.el (python-shell-send-string):
+       * progmodes/python.el (python-shell-send-string)
        (python-shell-send-string-no-output): Fix docstring (Bug#16547).
 
 2014-02-04  Anders Lindgren  <andlind@gmail.com>
 
 2014-02-02  Daniel Colascione  <dancol@dancol.org>
 
-       * progmodes/cc-defs.el (c-find-assignment-for-mode): Make loading cc-mode silent.
+       * progmodes/cc-defs.el (c-find-assignment-for-mode):
+       Make loading cc-mode silent.
 
 2014-02-02  Daniel Colascione  <dancol@dancol.org>
 
-       * comint.el (comint-prompt-read-only): Change doc to suggest remap keybinding.
+       * comint.el (comint-prompt-read-only): Change doc to suggest
+       remap keybinding.
 
 2014-02-02  Glenn Morris  <rgm@gnu.org>
 
 
        * international/quail.el (quail-define-package): Doc fix.
 
-       * emacs-lisp/authors.el (authors-valid-file-names):
+       * emacs-lisp/authors.el (authors-valid-file-names)
        (authors-renamed-files-alist): Additions.
 
        * vc/vc-git.el (vc-git-print-log): Remove --follow;
        * emacs-lisp/authors.el (authors-aliases): Remove unnecessary entries.
 
        Make M-x authors return zero *Authors Errors* from current logs.
-       * emacs-lisp/authors.el (authors-obsolete-files-regexps):
+       * emacs-lisp/authors.el (authors-obsolete-files-regexps)
        (authors-ignored-files): Add some entries, remove others.
        (authors-ambiguous-files, authors-valid-file-names):
        Add some entries.
        Spelling fixes.
        * emacs-lisp/generic.el (generic--normalize-comments):
        Rename from generic--normalise-comments.  All uses changed.
-       * play/bubbles.el (bubbles--neighborhood-score):
+       * play/bubbles.el (bubbles--neighborhood-score)
        (bubbles--mark-direct-neighbors, bubbles--mark-neighborhood)
        (bubbles--neighborhood-available)
        (bubbles--update-neighborhood-score):
 
 2013-12-25  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
-       * progmodes/python.el:
-       (python-nav--lisp-forward-sexp): New function.
+       * progmodes/python.el (python-nav--lisp-forward-sexp): New function.
        (python-nav--lisp-forward-sexp-safe): Use it.  Rename from
        python-nav-lisp-forward-sexp-safe.
        (python-nav--forward-sexp): New argument SAFE allows switching
        * emacs-lisp/debug.el (debug): Use window-total-height instead
        of window-total-size.
        * frame.el (tool-bar-lines-needed): Defalias to tool-bar-height.
-       * help.el (describe-bindings-internal): Call help-buffer
+       * help.el (describe-bindings-internal): Use help-buffer as
+       argument for with-help-window.
        (temp-buffer-max-width): New option.
        (resize-temp-buffer-window, help-window-setup)
        (with-help-window): Rewrite.
        (find-buffer-file-type-coding-system): Mark obsolete.
        (w32-find-file-not-found-set-buffer-file-coding-system): Rename from
        find-file-not-found-set-buffer-file-coding-system.
-       (w32-untranslated-filesystem-list, w32-untranslated-canonical-name):
+       (w32-untranslated-filesystem-list, w32-untranslated-canonical-name)
        (w32-add-untranslated-filesystem, w32-remove-untranslated-filesystem)
-       (w32-direct-print-region-use-command-dot-com, w32-untranslated-file-p):
+       (w32-direct-print-region-use-command-dot-com, w32-untranslated-file-p)
        (w32-direct-print-region-helper, w32-direct-print-region-function)
        (w32-direct-ps-print-region-function): Rename by adding a "w32-" prefix.
        * startup.el (normal-top-level-add-subdirs-to-load-path):
 
 2013-10-27  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * image.el (defimage):
-       (image-load-path): Doc fixes.
+       * image.el (defimage, image-load-path): Doc fixes.
 
 2013-10-27  Alan Mackenzie  <acm@muc.de>
 
        (verilog-in-struct-nested-p, verilog-at-struct-mv-p)
        (verilog-at-close-struct-p): New functions.
        (verilog-beg-block-re-ordered, verilog-extended-case-re)
-       (verilog-forward-sexp, verilog-set-auto-endcomments):
+       (verilog-forward-sexp, verilog-set-auto-endcomments)
        (verilog-leap-to-case-head): Handle "unique0" case.
        (verilog-in-constraint-re): New constant.
        (verilog-keywords, verilog-type-font-keywords):
        (ruby-smie-rules): Adjust handling of open-paren, now that it's never
        followed by implicit semi-colons.  Add rule for string concatenation
        and for indentation at BOB.
-       (ruby-forward-sexp, ruby-backward-sexp): Adjust for when smie is in use.
+       (ruby-forward-sexp, ruby-backward-sexp): Adjust for when SMIE is in use.
 
        * emacs-lisp/smie.el (smie-next-sexp): Don't go back to pos before
        calling next-sexp, since next-token may have skipped chars which
 
 2013-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * emacs-lisp/cl-macs.el:
-       (cl--loop-destr-temps): Remove.
+       * emacs-lisp/cl-macs.el (cl--loop-destr-temps): Remove.
        (cl--loop-iterator-function): Rename from cl--loop-map-form and change
        its convention.
        (cl--loop-set-iterator-function): New function.
 2013-08-04  Xue Fuqiao  <xfq.free@gmail.com>
 
        * vc/vc.el (vc-ignore): Rewrite.
-       (vc-default-ignore-completion-table):
-       (vc--read-lines):
+       (vc-default-ignore-completion-table, vc--read-lines)
        (vc--add-line, vc--remove-regexp): New functions.
 
        * vc/vc-svn.el (vc-svn-ignore): Doc fix.
        (vc-svn-ignore-completion-table): New function.
 
        * vc/vc-hg.el (vc-hg-ignore): Rewrite.
-       (vc-hg-ignore-completion-table):
+       (vc-hg-ignore-completion-table)
        (vc-hg-find-ignore-file): New functions.
 
        * vc/vc-git.el (vc-git-ignore): Rewrite.
-       (vc-git-ignore-completion-table):
+       (vc-git-ignore-completion-table)
        (vc-git-find-ignore-file): New functions.
 
        * vc/vc-dir.el (vc-dir-menu-map): Add menu for vc-dir-ignore.
 
        * vc/vc-bzr.el (vc-bzr-ignore): Rewrite.
-       (vc-bzr-ignore-completion-table):
+       (vc-bzr-ignore-completion-table)
        (vc-bzr-find-ignore-file): New functions.
 
 2013-08-03  Juanma Barranquero  <lekktu@gmail.com>
        * net/tramp-sh.el (tramp-sh-handle-file-notify-supported-p):
        Remove functions.
 
-       * autorevert.el (auto-revert-use-notify):
+       * autorevert.el (auto-revert-use-notify)
        (auto-revert-notify-add-watch):
        * net/tramp.el (tramp-file-name-for-operation):
        * net/tramp-adb.el (tramp-adb-file-name-handler-alist):
 
 2013-07-24  Xue Fuqiao  <xfq.free@gmail.com>
 
-       * ido.el (ido-fractionp):
-       (ido-cache-ftp-work-directory-time, ido-max-prospects, ido-mode)
-       (ido-max-file-prompt-width, ido-unc-hosts-cache)
-       (ido-max-directory-size, ido-max-dir-file-cache)
+       * ido.el (ido-fractionp, ido-cache-ftp-work-directory-time)
+       (ido-max-prospects, ido-mode, ido-max-file-prompt-width)
+       (ido-unc-hosts-cache, ido-max-directory-size, ido-max-dir-file-cache)
        (ido-decorations): Doc fix.
 
        * ansi-color.el: Fix old URL.
 
 2013-07-12  Dmitry Gutov  <dgutov@yandex.ru>
 
-       * progmodes/ruby-mode.el (ruby-percent-literals-beg-re):
+       * progmodes/ruby-mode.el (ruby-percent-literals-beg-re)
        (ruby-syntax-expansion-allowed-p): Support array of symbols, for
        Ruby 2.0.
        (ruby-font-lock-keywords): Distinguish calls to functions with
 
 2013-07-06  Michael Albinus  <michael.albinus@gmx.de>
 
-       * net/tramp-sh.el (tramp-sh-file-gvfs-monitor-dir-process-filter):
+       * net/tramp-sh.el (tramp-sh-file-gvfs-monitor-dir-process-filter)
        (tramp-sh-file-inotifywait-process-filter): Handle file names with
        spaces.
 
        (dired-safe-switches-p, dired-switches-escape-p)
        (dired-insert-old-subdirs, dired-move-to-end-of-filename)
        (dired-glob-regexp, dired-in-this-tree, dired-goto-file-1)
-       (dired-sort-set-mode-line, dired-sort-toggle, dired-sort-R-check):
+       (dired-sort-set-mode-line, dired-sort-toggle, dired-sort-R-check)
        (dired-goto-next-nontrivial-file): Use `string-match-p'.
        (dired-align-file, dired-insert-directory, dired-mark-files-in-region)
        (dired-toggle-marks, dired-mark-files-containing-regexp)
        * eshell/em-term.el (eshell-visual-command-p): New function.
        (eshell-term-initialize): Move long lambda to separate function
        eshell-visual-command-p.
-       * eshell/em-dirs.el (eshell-dirs-initialise):
+       * eshell/em-dirs.el (eshell-dirs-initialize):
        * eshell/em-script.el (eshell-script-initialize):
        Add missing #' to lambda.
 
 
 2013-06-05  Leo Liu  <sdl.web@gmail.com>
 
-       Re-implement smie matching block highlight using
+       Re-implement SMIE matching block highlight using
        show-paren-data-function.  (Bug#14395)
        * emacs-lisp/smie.el (smie-matching-block-highlight)
        (smie--highlight-matching-block-overlay)
 
        * net/tramp-sh.el (tramp-perl-pack, tramp-perl-unpack): New defconst.
        (tramp-local-coding-commands, tramp-remote-coding-commands): Use them.
-       (tramp-sh-handle-file-local-copy, tramp-sh-handle-write-region):
+       (tramp-sh-handle-file-local-copy, tramp-sh-handle-write-region)
        (tramp-find-inline-compress): Improve traces.
        (tramp-maybe-send-script): Check for Perl binary.
        (tramp-get-inline-coding): Do not redirect STDOUT for local decoding.
 2013-04-19  Masatake YAMATO  <yamato@redhat.com>
 
        * progmodes/sh-script.el (sh-imenu-generic-expression):
-       Handle function names with a single character.   (Bug#14111)
+       Handle function names with a single character.  (Bug#14111)
 
-2013-04-19  Dima Kogan  <dima@secretsauce.net>    (tiny change)
+2013-04-19  Dima Kogan  <dima@secretsauce.net>  (tiny change)
 
        * progmodes/gud.el (gud-perldb-marker-filter): Understand position info
        for subroutines defined in an eval (bug#14182).
index 6595d5c5f61e508b4b387a9b2a10c086358aba25..dd5267725e5b3238427e2d875be053981411f6ed 100644 (file)
        (bibtex-pop): Simplify.
        (bibtex-mode): Move setting of bibtex-string to bibtex-parse-strings.
        Set choose-completion-string-functions.
-       (bibtex-print-help-message,bibtex-make-field, bibtex-end-of-entry)
+       (bibtex-print-help-message, bibtex-make-field, bibtex-end-of-entry)
        (bibtex-count-entries): Simplify.
        (bibtex-entry-index, bibtex-lessp): New funs for generalized sorting
        scheme of indices, see bibtex-maintain-sorted-entries.
        * ediff-util.el (ediff-maybe-save-and-delete-merge): Change in a
        message.
 
-       * ediff.el (ediff-directories,ediff-directory-revisions)
-       (ediff-directories3,ediff-merge-directories)
-       (ediff-merge-directories-with-ancestor,ediff-merge-directory-revisions)
+       * ediff.el (ediff-directories, ediff-directory-revisions)
+       (ediff-directories3, ediff-merge-directories)
+       (ediff-merge-directories-with-ancestor, ediff-merge-directory-revisions)
        (ediff-merge-directory-revisions-with-ancestor): Make use of the new
        ediff-default-filtering-regexp variable.
 
        scroll event where a click on the mouse wheel button is ignored.
        (mouse-wheel-click-event, mouse-wheel-inhibit-click-time): New customs.
        (mouse-wheel-click-button, mwheel-inhibit-click-event-timer): New vars.
-       (mwheel-inhibit-click-timeout,mwheel-filter-click-events): New defuns.
+       (mwheel-inhibit-click-timeout, mwheel-filter-click-events): New defuns.
        (mwheel-scroll): Add mwheel-filter-click-events as pre-command-hook.
        Start mwheel-inhibit-click-event-timer with timeout handler
        mwheel-inhibit-click-timeout.
        (cvs-addto-collection): Use it to preserve point.
        (cvs-vc-command-advice): Ad-hoc workaround for `cvs -q add'.
 
-       * mwheel.el (mouse-wheel-scroll-amount,mwheel-scroll,mouse-wheel-mode):
-       Don't require the first element to be modifier-free.
+       * mwheel.el (mouse-wheel-scroll-amount, mwheel-scroll)
+       (mouse-wheel-mode): Don't require the first element to be modifier-free.
 
        * pcvs-parse.el (cvs-parse-table):
        Handle `nothing known about' with more care.
 
        * ediff-diff.el (ediff-install-fine-diff-if-necessary):
        Take the current highlighting style into account.
-       (ediff-forward-word-function,ediff-whitespace,ediff-word-1)
-       (ediff-word-2,ediff-word-3,ediff-word-4): Make them buffer local.
+       (ediff-forward-word-function, ediff-whitespace, ediff-word-1)
+       (ediff-word-2, ediff-word-3, ediff-word-4): Make them buffer local.
 
        * ediff-init.el (ediff-patch-job): New macro.
 
        is loaded.
 
        * ediff-mult.el (ediff-intersect-directories)
-       (ediff-prepare-meta-buffer,ediff-get-directory-files-under-revision):
+       (ediff-prepare-meta-buffer, ediff-get-directory-files-under-revision):
        Cleanup.
        (ediff-draw-dir-diffs): Now supports the "C" command in directory
        difference buffer.
        * textmodes/texnfo-upd.el: Use `when', `dolist', `push', ...
        (texinfo-update-node, texinfo-sequential-node-update):
        Don't bind the obsolete `auto-fill-hook'.
-       (texinfo-multi-file-included-list,texinfo-multi-file-master-menu-list):
+       (texinfo-multi-file-included-list, texinfo-multi-file-master-menu-list):
        Use `set-buffer' rather than `switch-to-buffer'.
        (texinfo-multi-file-update): Use "Top" rather than `up-node-name'.
        Use `set-buffer' rather than `switch-to-buffer'.
index 224f84ead077d9450b8142fca0d001524db5d7ae..bbba11dd9be7402591016ac07f679d0cbddb66a3 100644 (file)
        string to kill-ring.
 
        * calc/calc-aent.el (calc-alg-exp, math-toks)
-       (math-exp-pos,math-exp-old-pos, math-exp-token)
+       (math-exp-pos, math-exp-old-pos, math-exp-token)
        (math-exp-keep-spaces, math-exp-str): New variables.
        (calc-do-alg-entry, calcAlg-equals, calcAlg-edit)
        (calcAlg-enter): Use declared variable calc-alg-exp.
 
 2004-10-26  Jay Belanger  <belanger@truman.edu>
 
-       * calc/calc.el (calc,full-calc, calc-quit, calc-keypad)
+       * calc/calc.el (calc, full-calc, calc-quit, calc-keypad)
        (full-calc-keypad, calc-trail-display): Use an extra argument
        instead of `interactive-p'.
 
        (isearch-*-char, isearch-|-char): Now just call `isearch-fallback'
        appropriately.
        (isearch-mode-map): Bind `}' to `isearch-}-char'.
-       (isearch-string, isearch-message,string, isearch-point)
+       (isearch-string, isearch-message-string, isearch-point)
        (isearch-success, isearch-forward-flag, isearch-other-end)
        (isearch-word, isearch-invalid-regexp, isearch-wrapped)
        (isearch-barrier, isearch-within-brackets, isearch-case-fold-search):
        * emacs-lisp/shadow.el (shadow-same-file-or-nonexistent):
        * man.el (Man-init-defvars):
        * jka-compr.el (jka-compr-call-process):
-       * files.el (get-free-disk-space,insert-directory):
+       * files.el (get-free-disk-space, insert-directory):
        * ediff-ptch.el (ediff-test-patch-utility):
        * ediff-diff.el (ediff-test-utility):
        * dired-aux.el (dired-check-process):
 
 2003-11-25  Stephen Eglen  <stephen@gnu.org>
 
-       * iswitchb.el (iswitchb-read-buffer,iswitchb-exit-minibuffer):
+       * iswitchb.el (iswitchb-read-buffer, iswitchb-exit-minibuffer):
        iswitchb-exit is set to 'usefirst when user selects buffer at head
        of list using RET.  (Selecting buffers at the head of the list was
        broken if the substring was also a complete buffer name.)
        (ediff-select-difference): Set current difference.
        (ediff-unselect-and-select-difference): Add comment.
 
-       * ediff.el (ediff-directories,ediff-directory-revisions)
-       (ediff-directories3,ediff-merge-directories)
+       * ediff.el (ediff-directories, ediff-directory-revisions)
+       (ediff-directories3, ediff-merge-directories)
        (ediff-merge-directories-with-ancestor)
        (ediff-merge-directory-revisions)
        (ediff-merge-directory-revisions-with-ancestor):
 
        * gdb-ui.el (gdb-var-list, gdb-var-changed, gdb-update-flag)
        (gdb-update-flag): New variables.
-       (gdb-var-update, gdb-var-update-handler,gdb-var-delete)
+       (gdb-var-update, gdb-var-update-handler, gdb-var-delete)
        (gdb-speedbar-expand-node, gdb-var-evaluate-expression-handler)
        (gud-watch, gdb-var-create-handler): New functions.
        (gdb-var-list-children, gdb-var-list-children-handler)
        (gdb-array-size, gdb-display-mode-map, gdb-expressions-mode-map):
        (gdb-expressions-mode-menu, gdb-dive): Remove variables.
        (gud-display, gud-display1)
-       (gdb-display-begin,gdb-display-number-end, gdb-delete-line)
+       (gdb-display-begin, gdb-display-number-end, gdb-delete-line)
        (gdb-display-end, gdb-display-go-back, gdb-array-section-end)
-       (gdb-field-begin, gdb-field-end, gdb-elt,gdb-field-format-begin)
+       (gdb-field-begin, gdb-field-end, gdb-elt, gdb-field-format-begin)
        (gdb-field-format-end, gdb-dive, gdb-dive-new-frame)
        (gdb-insert-field, gdb-array-format, gdb-mouse-array-slice)
        (gdb-array-slice, gdb-array-format1, gdb-info-display-custom)
 2003-09-08  David Ponce  <david@dponce.com>
 
        Ensure that recentf correctly updates the menu bar.
-       * recentf.el (recentf-menu-path,recentf-menu-before): Doc fix.
+       * recentf.el (recentf-menu-path, recentf-menu-before): Doc fix.
        (recentf-menu-bar): New function.
        (recentf-clear-data): Use it.
        (recentf-update-menu): Likewise.  Use easy-menu-add-item instead
        * gdb-ui.el (gud-display1): Use gud-call to prevent extra prompt
        being displayed in GUD buffer.
        (gdb-idle-input-queue): Remove var.  Use just one queue.
-       (gdb-enqueue-idle-input,gdb-dequeue-idle-input):
+       (gdb-enqueue-idle-input, gdb-dequeue-idle-input):
        Remove functions.  Use just one queue.
        (gdb-prompt, gdb-subprompt, def-gdb-auto-update-trigger)
        (gdb-invalidate-assembler, gdb-get-current-frame):
index a3d1bd2e2964cbfeb308f772f39483e6e47efab8..6f71a6ade88497bdbe99ad7a7519e49d4f73afbe 100644 (file)
        (version-list-not-zero, version<, version<=, version=): Doc fix.
        (Bug#5744).
 
-2010-02-31  Dan Nicolaescu  <dann@ics.uci.edu>
+2010-03-31  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * vc.el (vc-root-diff): Doc fix.
 
index c9af60c6dc541d6ead7aeda028cc1329033cc7b6..8a6431f2bac61ff78ce9be8fc7846cba09f4ed37 100644 (file)
@@ -51,8 +51,8 @@
        * progmodes/hideshow.el (hs-minor-mode-menu): Fix omission bug;
        was used but not declared.
 
-       (hs-discard-overlays, hs-isearch-show, hs-isearch-show-temporary,
-       hs-find-block-beginning): Add or modify docstrings.
+       (hs-discard-overlays, hs-isearch-show, hs-isearch-show-temporary)
+       (hs-find-block-beginning): Add or modify docstrings.
 
        (hs-isearch-show): Rewrite.
 
        * font-lock.el (c-keywords): Only highlight preprocessor
        directives when spelled correctly.
 
-       * font-lock.el (font-lock-match-c++-structor-declaration,
-       c++-keywords): Fontify constructors and destructors with function
+       * font-lock.el (font-lock-match-c++-structor-declaration)
+       (c++-keywords): Fontify constructors and destructors with function
        face inside C++ class declarations.
 
 1999-12-16  Gerd Moellmann  <gerd@gnu.org>
        ps-mule-cmpchar-prologue-generated.
        (ps-mule-composition-prologue): New named from
        ps-mule-cmpchar-prologue.  Modified for new composition.
-       (ps-mule-plot-rule-cmpchar, ps-mule-plot-cmpchar,
-       ps-mule-prepare-cmpchar-font): Deleted.
+       (ps-mule-plot-rule-cmpchar, ps-mule-plot-cmpchar)
+       (ps-mule-prepare-cmpchar-font): Deleted.
        (ps-mule-string-encoding): New arg NO-SETFONT.
        (ps-mule-bitmap-prologue): In PostScript code of BuildGlyphCommon,
        check Composing, not Cmpchar.
 
 1999-12-12  Martin Stjernholm  <bug-cc-mode@gnu.org>
 
-       * cc-align.el (c-indent-multi-line-block,
-       c-lineup-whitesmith-in-block): Two new lineup functions for
+       * cc-align.el (c-indent-multi-line-block)
+       (c-lineup-whitesmith-in-block): Two new lineup functions for
        use in whitesmith style.
 
        * cc-styles.el (c-style-alist): More fixes to whitesmith
        beginning-of-defun/end-of-defun wrappers separated from
        c-point.
 
-       * cc-menus.el (imenu-generic-expression,
-       imenu-case-fold-search, imenu-progress-message): Dummy
+       * cc-menus.el (imenu-generic-expression)
+       (imenu-case-fold-search, imenu-progress-message): Dummy
        definitions to avoid compiler warnings if imenu can't be
        loaded.
        * cc-menus.el (cc-imenu-init): New function called at mode
 
 1999-12-06  Michael Kifer  <kifer@cs.sunysb.edu>
 
-       * viper-cmd.el (viper-minibuffer-standard-hook,
-       viper-minibuffer-real-start): Mew functions.
-       (viper-read-string-with-history,viper-file-add-suffix,
-       viper-trim-replace-chars-to-delete-if-necessary): Adapt to the
+       * viper-cmd.el (viper-minibuffer-standard-hook)
+       (viper-minibuffer-real-start): Mew functions.
+       (viper-read-string-with-history, viper-file-add-suffix)
+       (viper-trim-replace-chars-to-delete-if-necessary): Adapt to the
        change in the status of the minibuffer prompt.
 
 1999-12-06  Gerd Moellmann  <gerd@gnu.org>
        for better approximation of X colors.
        (msdos-face-setup): Call tty-color-clear.  Remove code that sets
        up tty-color-alist (it is now on startup.el).
-       (x-display-color-p, x-color-defined-p, x-color-values,
-       x-defined-colors, face-color-supported-p, face-color-gray-p):
+       (x-display-color-p, x-color-defined-p, x-color-values)
+       (x-defined-colors, face-color-supported-p, face-color-gray-p):
        Remove.
 
        * facemenu.el (facemenu-read-color, list-colors-display): Use
        of frames.
        (defined-colors, color-defined-p, color-values, display-color-p):
        New functions.
-       (x-defined-colors, x-color-defined-p, x-color-values,
-       x-display-color-p): Aliases for the above.
+       (x-defined-colors, x-color-defined-p, x-color-values)
+       (x-display-color-p): Aliases for the above.
 
        * startup.el (command-line): Register terminal colors for frame
        types other than x and w32, but only if the terminal supports
 
 1999-11-15  Sam Steingold  <sds@goems.com>
 
-       * goto-addr.el (goto-address-at-mouse,
-       goto-address-find-address-at-point): Use compose-mail.
+       * goto-addr.el (goto-address-at-mouse)
+       (goto-address-find-address-at-point): Use compose-mail.
        (goto-address-mail-method): Removed variable.
-       (goto-address-send-using-mh-e, goto-address-send-using-mhe,
-       goto-address-send-using-mail): Removed functions.
+       (goto-address-send-using-mh-e, goto-address-send-using-mhe)
+       (goto-address-send-using-mail): Removed functions.
 
 1998-11-15  Sam Steingold  <sds@goems.com>
 
        windows.
        (ediff-file-checked-in-p): Don't consider CVS
        files checked in.
-       (ediff-make-temp-file,ediff-make-empty-tmp-file): Make sure you
+       (ediff-make-temp-file, ediff-make-empty-tmp-file): Make sure you
        are writing to a newly created empty file.
 
        * ediff-mult.el (ediff-show-session-group-hook): New default.
 
        * viper-util.el (viper-nontrivial-find-file-function): Deleted.
        (viper-glob-unix-files, viper-glob-mswindows-files): New functions.
-       (viper-save-cursor-color,viper-restore-cursor-color):
+       (viper-save-cursor-color, viper-restore-cursor-color):
        Improved cursor color handling.
        (viper-get-saved-cursor-color-in-replace-mode)
        (viper-get-saved-cursor-color-in-insert-mode): New functions for
        better cursor color handling.
 
-       * viper-ex.el (ex-read,ex-edit):
+       * viper-ex.el (ex-read, ex-edit):
        Fixes for correct interpretation of #,%.
        (viper-ex): Now works correctly when called from other functions.
        (viper-glob-function): New variable.
        * textmodes/reftex-cite.el (reftex-pop-to-bibtex-entry): Fixed bug
        with recentering window.
        (reftex-extract-bib-entries-from-thebibliography)
-       (reftex-offer-bib-menu,reftex-bibtex-selection-callback):
+       (reftex-offer-bib-menu, reftex-bibtex-selection-callback):
        Deal with multiple thebibliography environments.
 
        * textmodes/reftex-vars.el (reftex-section-levels):
        Changes from Didier Verna:
        (custom-prompt-variable): Optional third arg makes prompt for a
        comment string.
-       (customize-set-value, customize-set-variable,
-       customize-save-variable): Optional prefix makes function handle
+       (customize-set-value, customize-set-variable)
+       (customize-save-variable): Optional prefix makes function handle
        variable comments.
        (customize-customized, customize-saved, custom-variable-state-set)
        (custom-variable-set, custom-variable-save, custom-face-state-set)
        thrown in gratuitously.
        (hanoi): Changed default number of rings back to 3.
        (hanoi-unix, hanoi-unix-64): New commands.
-       (hanoi-horizontal-flag, hanoi-move-period, hanoi-use-faces,
-       hanoi-pole-face, hanoi-base-face, hanoi-even-ring-face,
-       hanoi-odd-ring-face): New variables.
-       (hanoi-internal, hanoi-current-time-float, hanoi-put-face,
-       hanoi-n, hanoi-insert-ring, hanoi-goto-char, hanoi-sit-for,
-       hanoi-ring-to-pos, hanoi-pos-on-tower-p): New functions.
+       (hanoi-horizontal-flag, hanoi-move-period, hanoi-use-faces)
+       (hanoi-pole-face, hanoi-base-face, hanoi-even-ring-face)
+       (hanoi-odd-ring-face): New variables.
+       (hanoi-internal, hanoi-current-time-float, hanoi-put-face)
+       (hanoi-n, hanoi-insert-ring, hanoi-goto-char, hanoi-sit-for)
+       (hanoi-ring-to-pos, hanoi-pos-on-tower-p): New functions.
        (hanoi-0): Renamed from hanoi0, for symmetry with hanoi-n.
        (hanoi-topos, hanoi-draw-ring): Removed.
 
        * progmodes/ada-mode.el (ada-tmp-directory):
        Use temporary-file-directory.
 
-       * progmodes/compile.el (compilation-parsing-end,compilation-setup)
+       * progmodes/compile.el (compilation-parsing-end, compilation-setup)
        (compilation-filter, compilation-forget-errors)
        (compilation-parse-errors): Use a marker instead of an integer for
        `compilation-parsing-end'.
        * international/mule.el (coding-system-lessp): Moved here from
        mule-util.el.
        (add-to-coding-system-list): New function.
-       (make-subsidiary-coding-system, make-coding-system,
-       define-coding-system-alias): Use it instead of setting
+       (make-subsidiary-coding-system, make-coding-system)
+       (define-coding-system-alias): Use it instead of setting
        coding-system-list directly.
 
 1999-02-07  Dave Love  <fx@gnu.org>
        (speedbar-buffers-line-path): Return is dir name only.
        (speedbar-mode-functions-list): New variable.
        (speedbar-mouse-item-info): Rewrote to be a replaceable fn.
-       (speedbar-item-info-file-helper, speedbar-item-info-tag-helper
-       speedbar-files-item-info speedbar-buffers-item-info): New functions.
-       (speedbar-fetch-replacement-function,speedbar-add-mode-functions-list):
+       (speedbar-item-info-file-helper, speedbar-item-info-tag-helpe)
+       (speedbar-files-item-info speedbar-buffers-item-info): New functions.
+       (speedbar-fetch-replacement-function, speedbar-add-mode-functions-list):
        New functions.
        (speedbar-line-file): Broke out part that fetches file from a line.
        (speedbar-line-text): New function extracted from speedbar-line-file.
        (ps-mule-generate-font): If FONT-NAME is a cons cell, use its car.
        (ps-mule-prepare-font): Likewise.
 
-       * international/codepage.el (cp855-decode-table,
-       cp850-decode-table): Fill some nil entries.
+       * international/codepage.el (cp855-decode-table)
+       (cp850-decode-table): Fill some nil entries.
 
 1999-01-16  Dave Love  <fx@gnu.org>
 
        set-coding-priority, so that the internal array of priorities is
        also updated.
 
-       * international/mule-util.el:
-       (coding-system-change-eol-conversion,
-       coding-system-change-text-conversion): Don't define here.
+       * international/mule-util.el
+       (coding-system-change-eol-conversion)
+       (coding-system-change-text-conversion): Don't define here.
 
        * international/mule-cmds.el: Define them here.  Remove the
        autoload cookies.
 
 1998-12-02  Andre Spiegel  <spiegel@inf.fu-berlin.de>
 
-       * vc.el (vc-dired-window-configuration, vc-ediff-windows,
-       vc-ediff-result, vc-dired-switches, vc-dired-terse-mode):
+       * vc.el (vc-dired-window-configuration, vc-ediff-windows)
+       (vc-ediff-result, vc-dired-switches, vc-dired-terse-mode):
        Added defvars to suppress compilation warnings.
 
 1998-11-30  Ken Stevens  <k.stevens@ieee.org>
 
        * textmodes/reftex.el (reftex-finding-files): Group documentation fixed.
        (reftex-toc-toggle-file-boundary, reftex-toc-toggle-labels)
-       (reftex-toc-toggle-context,reftex-find-start-point): New functions.
+       (reftex-toc-toggle-context, reftex-find-start-point): New functions.
        (reftex-toc-include-labels, reftex-toc-include-context)
        (reftex-toc-include-file-boundaries, reftex-toc-keep-other-windows):
        New options.
        * international/mule-diag.el (describe-coding-system): Describe
        all flags.
 
-       * mail/sendmail.el (sendmail-coding-system,
-       default-sendmail-coding-system): Doc fix.
+       * mail/sendmail.el (sendmail-coding-system)
+       (default-sendmail-coding-system): Doc fix.
 
        * simple.el (shell-command-on-region): Doc fix.
 
        (eldoc-get-var-docstring): Here also.
        (eldoc-docstring-first-line): Minimize interim string consing.
        Call substitute-command-keys on the result.
-       (eldoc-print-var-docstrings, eldoc-print-docstring,
-       eldoc-docstring-message): Functions removed.
+       (eldoc-print-var-docstrings, eldoc-print-docstring)
+       (eldoc-docstring-message): Functions removed.
        (eldoc-docstring-format-sym-doc): New function, functionality
        ripped out of eldoc-docstring-message.
        (eldoc-get-fnsym-args-string, eldoc-get-var-docstring): Use it.
 
        * mail/rmail.el (rmail-movemail-program): Fix customize type.
 
-       * mail/feedmail.el (feedmail-x-mailer-line-user-appendage,
-       feedmail-fiddle-plex-user-list,
-       feedmail-spray-address-fiddle-plex-list,
-       feedmail-prompt-before-queue-user-alist,
-       feedmail-prompt-before-queue-help-supplement,
-       feedmail-queue-reminder-alist, feedmail-queue-default-file-slug,
-       feedmail-queue-alternative-mail-header-separator): Fix customize
+       * mail/feedmail.el (feedmail-x-mailer-line-user-appendage)
+       (feedmail-fiddle-plex-user-list)
+       (feedmail-spray-address-fiddle-plex-list)
+       (feedmail-prompt-before-queue-user-alist)
+       (feedmail-prompt-before-queue-help-supplement)
+       (feedmail-queue-reminder-alist, feedmail-queue-default-file-slug)
+       (feedmail-queue-alternative-mail-header-separator): Fix customize
        type.
 
        * startup.el (site-run-file): Fix customize type.
        * ps-print.el (ps-font-info-database): Add missing dots in value.
        Improve layout of customize type.
 
-       * net-utils.el (traceroute-program-options, ping-program-options,
-       ipconfig-program-options, netstat-program-options,
-       arp-program-options, route-program-options,
-       nslookup-program-options, ftp-program-options): Fix customize
+       * net-utils.el (traceroute-program-options, ping-program-options)
+       (ipconfig-program-options, netstat-program-options)
+       (arp-program-options, route-program-options)
+       (nslookup-program-options, ftp-program-options): Fix customize
        type.
 
-       * midnight.el (clean-buffer-list-kill-regexps,
-       clean-buffer-list-kill-buffer-names,
-       clean-buffer-list-kill-never-buffer-names,
-       clean-buffer-list-kill-never-regexps): Fix customize type.
+       * midnight.el (clean-buffer-list-kill-regexps)
+       (clean-buffer-list-kill-buffer-names)
+       (clean-buffer-list-kill-never-buffer-names)
+       (clean-buffer-list-kill-never-regexps): Fix customize type.
 
        * man.el (Man-init-defvars): Avoid trailing nil on
        Man-filter-list.
        (ps-mule-prepare-font): New fun.
        (ps-mule-charset-list): New var.
        (ps-mule-prologue-generated, ps-mule-prologue): New vars.
-       (ps-mule-skip-same-charset, ps-mule-find-wrappoint,
-       ps-mule-plot-string): New funs.
+       (ps-mule-skip-same-charset, ps-mule-find-wrappoint)
+       (ps-mule-plot-string): New funs.
        (ps-mule-cmpchar-prologue-generated, ps-mule-cmpchar-prologue):
        New vars.
-       (ps-mule-plot-rule-cmpchar, ps-mule-plot-cmpchar,
-       ps-mule-prepare-cmpchar-font): New funs.
+       (ps-mule-plot-rule-cmpchar, ps-mule-plot-cmpchar)
+       (ps-mule-prepare-cmpchar-font): New funs.
        (ps-mule-bitmap-prologue-generated, ps-mule-bitmap-prologue): New
        vars.
-       (ps-mule-generate-bitmap-prologue, ps-mule-generate-bitmap-font,
-       ps-mule-generate-bitmap-glyph): New funs.
+       (ps-mule-generate-bitmap-prologue, ps-mule-generate-bitmap-font)
+       (ps-mule-generate-bitmap-glyph): New funs.
        (ps-mule-initialize, ps-mule-begin): New funs.
        (ps-output-string-prim): Insert string as unibyte.
        (ps-output-prologue): New fun.
index d17e85ad80129cfde1360835d71da6d002e6a523..1d4fa7f40139ade022f2fa7dd30a36aa5717e3f7 100644 (file)
        * ediff-util.el: Copyright years.
        (ediff-choose-syntax-table): New function.
        (ediff-setup): Use ediff-choose-syntax-table.
-       (ediff-file-checked-out-p,ediff-file-checked-in-p): Check if
+       (ediff-file-checked-out-p, ediff-file-checked-in-p): Check if
        vc-state is available.
        (ediff-make-temp-file): Use ediff-coding-system-for-write.
 
        (ediff-patch-file-internal): Use ediff-coding-system-for-write.
 
        * ediff-diff.el (ediff-coding-system-for-read): Moved to ediff-init.el.
-       (ediff-match-diff3-line,ediff-get-diff3-group): Improved pattern.
+       (ediff-match-diff3-line, ediff-get-diff3-group): Improved pattern.
 
        * ediff.el: Date of last update, copyright years.
 
        * ediff-wind.el (ediff-setup-control-frame): Nill->nil.
 
-       * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
+       * viper-ex.el (ex-token-list, ex-cmd-execute): Revamped, courtesy
        of Scott Bronson.
-       (ex-cmd-assoc,ex-compile,ex-cmd-one-letr): New functions.
-       (viper-check-sub,viper-get-ex-command,viper-execute-ex-command):
+       (ex-cmd-assoc, ex-compile, ex-cmd-one-letr): New functions.
+       (viper-check-sub, viper-get-ex-command, viper-execute-ex-command):
        Deleted functions.
-       (viper-get-ex-com-subr,viper-ex,ex-mark): Changed to use the new
+       (viper-get-ex-com-subr, viper-ex, ex-mark): Changed to use the new
        ex-token-list.
        (viper-get-ex-address-subr): Convert registers to char data type.
 
-       * viper-util.el (viper-int-to-char,viper-char-equal): New functions.
+       * viper-util.el (viper-int-to-char, viper-char-equal): New functions.
        (viper-memq-char): Use viper-int-to-char.
        (viper-file-checked-in-p): Use vc-locking-user, if vc doesn't have
        vc-locking-state.
        (viper-read-key-sequence): New function that replaces the
        previously used advice to read-key-sequence.
 
-       * viper-cmd.el (viper-test-com-defun,viper-exec-change)
-       (viper-exec-Change,viper-execute-com,viper-insert,viper-append)
-       (viper-Append,viper-Insert,viper-open-line,viper-Open-line)
-       (viper-open-line-at-point,viper-substitute,viper-overwrite)
-       (viper-replace-char-subr,viper-forward-word,viper-forward-Word):
+       * viper-cmd.el (viper-test-com-defun, viper-exec-change)
+       (viper-exec-Change, viper-execute-com, viper-insert, viper-append)
+       (viper-Append, viper-Insert, viper-open-line, viper-Open-line)
+       (viper-open-line-at-point, viper-substitute, viper-overwrite)
+       (viper-replace-char-subr, viper-forward-word, viper-forward-Word):
        Got rid of the negative character hack.
-       (viper-escape-to-state,viper-replace-state-exit-cmd):
+       (viper-escape-to-state, viper-replace-state-exit-cmd):
        Use viper-read-key-sequence.
        (viper-envelop-ESC-key): No need for ad-get-orig-definition.
-       (viper-minibuffer-standard-hook,viper-read-string-with-history):
+       (viper-minibuffer-standard-hook, viper-read-string-with-history):
        Don't override existing minibuffer-setup-hook.
-       (viper-mark-point,viper-goto-mark-subr,viper-brac-function):
+       (viper-mark-point, viper-goto-mark-subr, viper-brac-function):
        Convert registers to char data type.
        (viper-autoindent): Use viper-indent-line.
 
 
        * ediff-wind.el (ediff-setup-control-frame): Nill->nil.
 
-       * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
+       * viper-ex.el (ex-token-list, ex-cmd-execute): Revamped, courtesy
        of Scott Bronson.
-       (ex-cmd-assoc,ex-cmd-one-letr): New functions.
-       (viper-check-sub,viper-get-ex-command,viper-execute-ex-command):
+       (ex-cmd-assoc, ex-cmd-one-letr): New functions.
+       (viper-check-sub, viper-get-ex-command, viper-execute-ex-command):
        Deleted functions.
-       (viper-get-ex-com-subr,viper-ex,ex-mark): Changed to use the new
+       (viper-get-ex-com-subr, viper-ex, ex-mark): Changed to use the new
        ex-token-list.
 
        * viper-util.el: Spaces, indentation.
 
        * viper-init.el (viper-restore-cursor-type): Added condition-case guard.
 
-       * ediff-init.el (ediff-quit-hook,ediff-suspend-hook):
+       * ediff-init.el (ediff-quit-hook, ediff-suspend-hook):
        Changed initialization; use add-hook.
        (ediff-file-remote-p): Use file-local-copy.
 
        * viper-cmd.el (viper-change-state-to-vi): Disable overwrite mode.
        (viper-downgrade-to-insert): Protect against errors in hooks.
 
-       * viper-init.el (viper-vi-state-hook,viper-insert-state-hook)
-       (viper-replace-state-hook,viper-emacs-state-hook): Do cursor handling.
-       (viper-restore-cursor-type,viper-set-insert-cursor-type):
+       * viper-init.el (viper-vi-state-hook, viper-insert-state-hook)
+       (viper-replace-state-hook, viper-emacs-state-hook): Do cursor handling.
+       (viper-restore-cursor-type, viper-set-insert-cursor-type):
        New functions.
 
        * viper-util.el (viper-memq-char): Bug fixes.
        Use viper-preserve-cursor-color.
        Many functions changed to use viper= instead of = when comparing
        characters.
-       * viper-util.el (viper-memq-char,viper=): New functions for
+       * viper-util.el (viper-memq-char, viper=): New functions for
        working with characters.
        (viper-change-cursor-color): Fixed buglet.
        Many functions changed to use viper= instead of = when comparing
        * ediff-util.el (ediff-setup): Run ediff-before-setup-hook.
        (ediff-other-buffer): Use selected buffers if in Buffer-menu buffer.
        (ediff-get-selected-buffers): New function.
-       * ediff-vers.el (ediff-vc-internal,ediff-rcs-internal)
-       (ediff-vc-merge-internal,ediff-rcs-merge-internal):
+       * ediff-vers.el (ediff-vc-internal, ediff-rcs-internal)
+       (ediff-vc-merge-internal, ediff-rcs-merge-internal):
        Use save-window-excursion.
        * ediff-wind.el (ediff-skip-unsuitable-frames): More robust
        termination check in while loop.
        * ediff.el (ediff-get-default-file-name): Better defaults when in
        dired buffer.
-       (ediff-files,ediff-merge-files,ediff-files3)
+       (ediff-files, ediff-merge-files, ediff-files3)
        (ediff-merge-files-with-ancestor): Use ediff-get-default-file-name.
 
 2000-10-28  Dave Love  <fx@gnu.org>
 
 2000-10-04  Andre Spiegel  <spiegel@gnu.org>
 
-       * vc-hooks.el (vc-before-save, vc-default-make-version-backups,
-       vc-version-backup-file-name): New functions.
+       * vc-hooks.el (vc-before-save, vc-default-make-version-backups)
+       (vc-version-backup-file-name): New functions.
 
        * files.el (basic-save-buffer): Call vc-before-save before saving.
 
        * vc.el: Require dired-aux during compilation.
        (vc-name-assoc-file): Moved to vc-sccs.el.
        (with-vc-properties): New macro.
-       (vc-checkin, vc-checkout, vc-revert, vc-cancel-version,
-       vc-finish-steal): Use it.
+       (vc-checkin, vc-checkout, vc-revert, vc-cancel-version)
+       (vc-finish-steal): Use it.
        (vc-cancel-version): Moved RCS-specific code to vc-rcs.el.  The call
        to the backend-specific function is now supposed to do the checkout,
        too.
 
 2000-09-04  Stefan Monnier  <monnier@cs.yale.edu>
 
-       * vc-rcs-hooks.el (vc-rcs-templates-grabbed,
-       vc-rcs-grab-templates)
+       * vc-rcs-hooks.el (vc-rcs-templates-grabbed, vc-rcs-grab-templates)
        (vc-rcs-registered): Remove.  The default function works as well.
-       * vc-sccs-hooks.el (vc-sccs-templates-grabbed,
-       vc-sccs-grab-templates)
+       * vc-sccs-hooks.el (vc-sccs-templates-grabbed)
+       (vc-sccs-grab-templates)
        (vc-sccs-registered): Remove.  The default function works as well.
 
        * vc.el (vc-version-diff): Left out a vc- in call to
        (vc-rcs-trunk-p, vc-rcs-branch-part): Move to vc-rcs-hooks.
        (vc-rcs-backend-release-p): Remove (use vc-rcs-release-p).
        (vc-release-greater-or-equal-p): Move from vc.
-       (vc-rcs-trunk-p, vc-rcs-branch-p, vc-rcs-branch-part,
-       vc-rcs-minor-part, vc-rcs-previous-version): Remove duplicates.
+       (vc-rcs-trunk-p, vc-rcs-branch-p, vc-rcs-branch-part)
+       (vc-rcs-minor-part, vc-rcs-previous-version): Remove duplicates.
        (vc-rcs-checkout): Add a missing `new-version' argument in the
        call to vc-rcs-latest-on-branch-p.  Hopefully that was the right one.
 
 
 2000-09-04  Martin Lorentzson  <martinl@delysid.gnu.org>
 
-       * vc-cvs.el (vc-cvs-revert,vc-cvs-checkout): References to
+       * vc-cvs.el (vc-cvs-revert, vc-cvs-checkout): References to
        `vc-checkout-model' updated to `vc-cvs-update-model'.
 
 2000-09-04  Andre Spiegel  <spiegel@inf.fu-berlin.de>
 
 2000-09-04  Martin Lorentzson  <martinl@gnu.org>
 
-       * vc.el (vc-workfile-unchanged-p,vc-diff,vc-version-diff):
+       * vc.el (vc-workfile-unchanged-p, vc-diff, vc-version-diff):
        Update to use the vc-BACKEND-diff functions instead.
        `vc-diff' is now working.
 
        This checkin is made with our new VC code base for the very first time.
        A simple `(vc-checkin (buffer-file-name))' was used to perform it.
 
-       * vc-cvs.el (vc-cvs-revert,vc-cvs-checkout): Function calls to
+       * vc-cvs.el (vc-cvs-revert, vc-cvs-checkout): Function calls to
        `vc-checkout-required' updated to `vc-cvs-uses-locking'.
 
        * vc-hooks.el (vc-backend-hook-functions): `vc-checkout-required'
 
        * vc-rcs-hooks.el: Require vc-hooks when compiling.
        (vc-rcs-master-templates): Improve :type.
-       (vc-rcsdiff-knows-brief, vc-rcs-lock-from-diff,
-       vc-master-workfile-version): Moved from vc-hooks.
+       (vc-rcsdiff-knows-brief, vc-rcs-lock-from-diff)
+       (vc-master-workfile-version): Moved from vc-hooks.
 
        * vc-sccs-hooks.el: Require vc-hooks when compiling.
        (vc-sccs-master-templates): Improve :type.
 
        * progmodes/cc-cmds.el (c-indent-command): Obey c-syntactic-indentation.
 
-       * progmodes/cc-cmds.el (c-electric-brace, c-electric-slash,
-       c-electric-star, c-electric-semi&comma, c-electric-colon,
-       c-electric-lt-gt, c-electric-paren): Don't reindent old lines
+       * progmodes/cc-cmds.el (c-electric-brace, c-electric-slash)
+       (c-electric-star, c-electric-semi&comma, c-electric-colon)
+       (c-electric-lt-gt, c-electric-paren): Don't reindent old lines
        when c-syntactic-indentation is nil.
 
        * progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed bug where
        * progmodes/cc-styles.el (c-copy-tree): Obsolete.  The standard function
        copy-alist is sufficient now.
 
-       * progmodes/cc-styles.el (c-set-style, c-set-style-1,
-       c-get-style-variables): Fixes to variable initialization so
+       * progmodes/cc-styles.el (c-set-style, c-set-style-1)
+       (c-get-style-variables): Fixes to variable initialization so
        that duplicate entries in styles have the same effect
        regardless of DONT-OVERRIDE.
 
        Support for bibentry.
        (reftex-compile-variables): Fixed problem with end of section-re.
 
-       * textmodes/reftex-dcr.el (reftex-view-crossref,
-       reftex-view-crossref-from-bibtex):
+       * textmodes/reftex-dcr.el (reftex-view-crossref)
+       (reftex-view-crossref-from-bibtex):
        Deal with changed `reftex-find-citation-regexp-format'.
        (reftex-view-regexp-match, reftex-view-crossref-from-bibtex):
        Replaced `remprop' with `put'.
 
        * international/mule-conf.el: Specify CHARSET-ID explicitly for
        private charsets.
-       (mule-unicode-0100-24ff, japanese-jisx0213-1,
-       japanese-jisx0213-2): New charsets.
+       (mule-unicode-0100-24ff, japanese-jisx0213-1)
+       (japanese-jisx0213-2): New charsets.
 
        * international/fontset.el: Setup default fontset for new charsets.
 
 
        * ediff-diff.el (ediff-forward-word): Take syntactic word class into
        account.
-       (ediff-test-utility,ediff-diff-mandatory-option)
+       (ediff-test-utility, ediff-diff-mandatory-option)
        (ediff-reset-diff-options): Utilities for proper initialization of
        ediff-diff-options and ediff-diff3-options on Windows.
 
 
        * textmodes/ispell.el (ispell-cmd-args, ispell-output-buffer)
        (ispell-session-buffer): New variables.
-       (ispell-start-process, ispell-process-status,
-       ispell-accept-output, ispell-send-string): New functions, for
+       (ispell-start-process, ispell-process-status)
+       (ispell-accept-output, ispell-send-string): New functions, for
        Ispell invocation when async subprocesses aren't supported.
-       (ispell-word, ispell-pdict-save, ispell-command-loop,
-       ispell-process-line, ispell-buffer-local-parsing): Replace calls
+       (ispell-word, ispell-pdict-save, ispell-command-loop)
+       (ispell-process-line, ispell-buffer-local-parsing): Replace calls
        to process-send-string with calls to ispell-send-string, and
        accept-process-output with ispell-accept-output.
        (ispell-init-process): Call ispell-process-status instead of
index ebd2432e10c928c25564fb2ac9899862e3e74b9f..a1cd6d19ce87885513393052f11e72915c50ff66 100644 (file)
@@ -124,6 +124,15 @@ setwins_almost=for file in `find ${srcdir} -type d -print`; do \
           esac; \
         done
 
+# Find all subdirectories except `obsolete', `term', and `leim' (and subdirs).
+# We don't want the leim files listed as packages, especially
+# since many share basenames with files in language/.
+setwins_finder=for file in `find ${srcdir} -type d -print`; do \
+          case $$file in ${srcdir}*/obsolete | ${srcdir}*/term | ${srcdir}*/leim* ) ;; \
+            *) wins="$$wins$${wins:+ }$$file" ;; \
+          esac; \
+        done
+
 # Find all subdirectories in which we might want to create subdirs.el.
 setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \
           case $$file in \
@@ -166,7 +175,7 @@ custom-deps: doit
 $(lisp)/finder-inf.el:
        $(MAKE) $(MFLAGS) finder-data
 finder-data: doit
-       $(setwins_almost); \
+       $(setwins_finder); \
        echo Directories: $$wins; \
        $(emacs) -l finder \
          --eval '(setq generated-finder-keywords-file (unmsys--file-name "$(srcdir)/finder-inf.el"))' \
index 0ab811c720534ae0bb16fd51eb3a7bb1a1c1cba0..4a18c05a880c614715e007910a141dfcb0a3ceca 100644 (file)
@@ -117,7 +117,7 @@ map.  This color map is stored in the variable `ansi-color-map'."
   :group 'ansi-colors)
 
 (defcustom ansi-color-names-vector
-  ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"]
+  ["black" "red3" "green3" "yellow3" "blue2" "magenta3" "cyan3" "gray90"]
   "Colors used for SGR control sequences determining a color.
 This vector holds the colors used for SGR control sequences parameters
 30 to 37 (foreground colors) and 40 to 47 (background colors).
@@ -147,6 +147,7 @@ foreground and background colors, respectively."
                  (choice color (cons color color)))
   :set 'ansi-color-map-update
   :initialize 'custom-initialize-default
+  :version "24.4" ; default colors copied from `xterm-standard-colors'
   :group 'ansi-colors)
 
 (defconst ansi-color-regexp "\033\\[\\([0-9;]*m\\)"
index 47e44485c627a55165c5b633f4781f74befc5a6b..2cba65e95598281ecf4321299f2b02285b871f6e 100644 (file)
@@ -1052,6 +1052,7 @@ If non-nil, TEXT is a string that will be printed as a heading."
       (let ((p apropos-accumulator)
            (old-buffer (current-buffer))
            (inhibit-read-only t)
+           (button-end 0)
            symbol item)
        (set-buffer standard-output)
        (apropos-mode)
@@ -1069,10 +1070,12 @@ If non-nil, TEXT is a string that will be printed as a heading."
              (setq apropos-item
                    (cons (car apropos-item)
                          (cons nil (cdr apropos-item)))))
+         (when (= (point) button-end) (terpri))
          (insert-text-button (symbol-name symbol)
                              'type 'apropos-symbol
                              'skip apropos-multi-type
                              'face 'apropos-symbol)
+         (setq button-end (point))
          (if (and (eq apropos-sort-by-scores 'verbose)
                   (cadr apropos-item))
              (insert " (" (number-to-string (cadr apropos-item)) ") "))
index 416f6337d646c76eeb10e305e9c73ca761b60f4e..fac34ed4106b83934fd64977d5434761872086f3 100644 (file)
@@ -873,6 +873,11 @@ if `inhibit-field-text-motion' is non-nil."
 
 ;; Update tutorial--default-keys if you change these.
 (define-key global-map "\177" 'delete-backward-char)
+;; We explicitly want C-d to use `delete-char' instead of
+;; `delete-forward-char' so that it ignores `delete-active-region':
+;; Most C-d users are old-timers who don't expect
+;; `delete-active-region' here, while newer users who expect
+;; `delete-active-region' use C-d much less.
 (define-key global-map "\C-d" 'delete-char)
 
 (define-key global-map "\C-k" 'kill-line)
index 9a4d88715684d33eb428ca9b1c2d1e339e5b9cca..fbe32ff610bfab955de1d9c1e92e5f4508494649 100644 (file)
@@ -1,3 +1,8 @@
+2014-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/util.el (semantic-complete-symbol):
+       Replace use of obsolete argument of display-completion-list.
+
 2014-02-03  Glenn Morris  <rgm@gnu.org>
 
        * semantic/senator.el (senator-copy-tag-to-register):
 
        * semantic/wisent/python.el (wisent-python-string-start-re)
        (wisent-python-string-re, wisent-python-forward-string)
-       (wisent-python-forward-line,wisent-python-lex-string):
+       (wisent-python-forward-line, wisent-python-lex-string):
        New variables.
        (wisent-python-forward-balanced-expression): New function.
 
        (ede-directory-safe-p): Check it.
        (ede-initialize-state-current-buffer, ede, ede-new)
        (ede-check-project-directory, ede-rescan-toplevel)
-       (ede-load-project-file, ede-parent-project, ede-current-project):
+       (ede-load-project-file, ede-parent-project, ede-current-project)
        (ede-target-parent): Avoid loading in a project unless it is safe,
        since it may involve malicious code.  This security flaw was
        pointed out by Hiroshi Oota.
        (semantic-decoration-unknown-include-describe): Fix filenames in
        docstring.
 
-       * semantic/ede-grammar.el (semantic-ede-grammar-compiler-wisent):
+       * semantic/ede-grammar.el (semantic-ede-grammar-compiler-wisent)
        (semantic-ede-grammar-compiler-bovine): Fix requires that are
        added to the grammar-make-script.
 
 
 2011-10-19  Chong Yidong  <cyd@gnu.org>
 
-       * ede.el (ede-minor-mode,global-ede-mode):
+       * ede.el (ede-minor-mode, global-ede-mode):
        * semantic.el (semantic-mode): Doc fix to reflect new
        define-minor-mode calling behavior.
 
        Synch EDE to CEDET 1.0.
 
        * cedet-idutils.el (cedet-idutils-make-command): New option.
-       (cedet-idutils-mkid-call):
+       (cedet-idutils-mkid-call)
        (cedet-idutils-create/update-database): New functions.
 
-       * cedet-cscope.el (cedet-cscope-create):
+       * cedet-cscope.el (cedet-cscope-create)
        (cedet-cscope-create/update-database): New functions.
        (cedet-cscope-support-for-directory): Make interactive.
 
        (ede-project-root, ede-project-root-directory): Move to
        ede/auto.el.
 
-       * ede/locate.el (ede-locate-flush-hash):
+       * ede/locate.el (ede-locate-flush-hash)
        (ede-locate-create/update-root-database): New methods.
        (initialize-instance): Use ede-locate-flush-hash.
 
        (semantic-decoration-on-includes-highlight-default): Check that
        the include tag has a position.
 
-       * semantic/complete.el (semantic-collector-local-members):
+       * semantic/complete.el (semantic-collector-local-members)
        (semantic-complete-read-tag-local-members)
        (semantic-complete-jump-local-members): New class and functions.
        (semantic-complete-self-insert): Save excursion before completing.
 
        Use define-minor-mode in CEDET where applicable.
 
-       * srecode/mode.el (srecode-minor-mode,global-srecode-minor-mode):
+       * srecode/mode.el (srecode-minor-mode, global-srecode-minor-mode):
        Use define-minor-mode.
 
        * semantic/util-modes.el (semantic-add-minor-mode):
        (semantic-analyzer-debug-global-symbol)
        (semantic-analyzer-debug-missing-innertype)
        (semantic-analyzer-debug-insert-include-summary):
-       * semantic/util.el (semantic-file-tag-table):
+       * semantic/util.el (semantic-file-tag-table)
        (semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
        (semantic-recursive-find-nonterminal-by-name):
        * semantic/tag-ls.el (semantic-tag-calculate-parent-default):
        * semantic/symref.el (semantic-symref-parse-tool-output):
        * semantic/sb.el (semantic-sb-fetch-tag-table):
        * semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
-       * semantic/idle.el (semantic-idle-work-for-one-buffer):
+       * semantic/idle.el (semantic-idle-work-for-one-buffer)
        (semantic-idle-summary-maybe-highlight):
        * semantic/ia-sb.el (semantic-ia-speedbar)
        (semantic-ia-sb-tag-info):
        * semantic/grammar.el (semantic-analyze-possible-completions):
        * semantic/find.el (semantic-brute-find-tag-by-position):
-       * semantic/ede-grammar.el (project-compile-target):
+       * semantic/ede-grammar.el (project-compile-target)
        (ede-proj-makefile-insert-variables):
-       * semantic/debug.el (semantic-debug-set-parser-location):
+       * semantic/debug.el (semantic-debug-set-parser-location)
        (semantic-debug-set-source-location, semantic-debug-interface-layout)
        (semantic-debug-mode, semantic-debug):
        * semantic/db.el (semanticdb-needs-refresh-p):
        * ede.el (ede-buffer-header-file, ede-find-target)
        (ede-buffer-documentation-files, ede-project-buffers, ede-set)
        (ede-target-buffers, ede-buffers, ede-make-project-local-variable):
-       * cedet-idutils.el (cedet-idutils-fnid-call):
+       * cedet-idutils.el (cedet-idutils-fnid-call)
        (cedet-idutils-lid-call, cedet-idutils-expand-filename)
        (cedet-idutils-version-check):
-       * cedet-global.el (cedet-gnu-global-call):
+       * cedet-global.el (cedet-gnu-global-call)
        (cedet-gnu-global-expand-filename, cedet-gnu-global-root)
        (cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
        * cedet-cscope.el (cedet-cscope-call)
index c7a1e2180ca8c11735450aa9bf6fd46e05444fee..ea9e158e6c2eb3bfb18a9ba6b3459895bf6561f8 100644 (file)
@@ -419,7 +419,8 @@ determining which symbols are considered."
            (setq list (sort list 'string<))
            (if (> (length list) 1)
                (with-output-to-temp-buffer "*Completions*"
-                 (display-completion-list list pattern))
+                 (display-completion-list
+                  (completion-hilit-commonality list (length pattern) nil)))
              ;; Bury any out-of-date completions buffer.
              (let ((win (get-buffer-window "*Completions*" 0)))
                (if win (with-selected-window win (bury-buffer))))))
index 8faa5243a1159965961d7db12f31f70178dd75f2..76b1d8038776969c6e1f10bc0a7495e4cc98e2c0 100644 (file)
@@ -3274,8 +3274,12 @@ See also `comint-dynamic-complete-filename'."
 
 (defun comint-dynamic-list-completions (completions &optional common-substring)
   "Display a list of sorted COMPLETIONS.
-The meaning of COMMON-SUBSTRING is the same as in `display-completion-list'.
-Typing SPC flushes the completions buffer."
+Typing SPC flushes the completions buffer.
+
+The optional argument COMMON-SUBSTRING, if non-nil, should be a string
+specifying a common substring for adding the faces
+`completions-first-difference' and `completions-common-part' to
+the completions."
   (let ((window (get-buffer-window "*Completions*" 0)))
     (setq completions (sort completions 'string-lessp))
     (if (and (eq last-command this-command)
@@ -3306,7 +3310,8 @@ Typing SPC flushes the completions buffer."
       (setq comint-dynamic-list-completions-config
            (current-window-configuration))
       (with-output-to-temp-buffer "*Completions*"
-       (display-completion-list completions common-substring))
+        (display-completion-list
+         (completion-hilit-commonality completions (length common-substring))))
       (if (window-minibuffer-p)
          (minibuffer-message "Type space to flush; repeat completion command to scroll")
        (message "Type space to flush; repeat completion command to scroll")))
index 69c17015030793be9469c350ed2b5b11b6e06421..5e43c03ade77d7e199195d88c00e107810dd0ed2 100644 (file)
@@ -387,15 +387,18 @@ modes are restored automatically; they should not be listed here."
   :group 'desktop)
 
 (defcustom desktop-restore-frames t
-  "When non-nil, save frames to desktop file."
+  "When non-nil, save and restore the frame and window configuration.
+See related options `desktop-restore-reuses-frames',
+`desktop-restore-in-current-display', and `desktop-restore-forces-onscreen'."
   :type 'boolean
   :group 'desktop
   :version "24.4")
 
 (defcustom desktop-restore-in-current-display nil
-  "If t, frames are restored in the current display.
-If nil, frames are restored, if possible, in their original displays.
-If `delete', frames on other displays are deleted instead of restored."
+  "Controls how restoring of frames treats displays.
+If t, restores frames into the current display.
+If nil, restores frames into their original displays (if possible).
+If `delete', deletes frames on other displays instead of restoring them."
   :type '(choice (const :tag "Restore in current display" t)
                 (const :tag "Restore in original display" nil)
                 (const :tag "Delete frames in other displays" delete))
@@ -403,21 +406,23 @@ If `delete', frames on other displays are deleted instead of restored."
   :version "24.4")
 
 (defcustom desktop-restore-forces-onscreen t
-  "If t, offscreen frames are restored onscreen instead.
-If `:all', frames that are partially offscreen are also forced onscreen.
-NOTE: Checking of frame boundaries is only approximate and can fail
-to reliably detect frames whose onscreen/offscreen state depends on a
-few pixels, especially near the right / bottom borders of the screen."
+  "If t, restores frames that are fully offscreen onscreen instead.
+If `all', also restores frames that are partially offscreen onscreen.
+
+Note that checking of frame boundaries is only approximate.
+It can fail to reliably detect frames whose onscreen/offscreen state
+depends on a few pixels, especially near the right / bottom borders
+of the screen."
   :type '(choice (const :tag "Only fully offscreen frames" t)
-                (const :tag "Also partially offscreen frames" :all)
+                (const :tag "Also partially offscreen frames" all)
                 (const :tag "Do not force frames onscreen" nil))
   :group 'desktop
   :version "24.4")
 
 (defcustom desktop-restore-reuses-frames t
   "If t, restoring frames reuses existing frames.
-If nil, existing frames are deleted.
-If `:keep', existing frames are kept and not reused."
+If nil, deletes existing frames.
+If `keep', keeps existing frames and does not reuse them."
   :type '(choice (const :tag "Reuse existing frames" t)
                 (const :tag "Delete existing frames" nil)
                 (const :tag "Keep existing frames" :keep))
@@ -491,13 +496,13 @@ Handlers are called with argument list
 
 Furthermore, they may use the following variables:
 
-   desktop-file-version
-   desktop-buffer-major-mode
-   desktop-buffer-minor-modes
-   desktop-buffer-point
-   desktop-buffer-mark
-   desktop-buffer-read-only
-   desktop-buffer-locals
+   `desktop-file-version'
+   `desktop-buffer-major-mode'
+   `desktop-buffer-minor-modes'
+   `desktop-buffer-point'
+   `desktop-buffer-mark'
+   `desktop-buffer-read-only'
+   `desktop-buffer-locals'
 
 If a handler returns a buffer, then the saved mode settings
 and variable values for that buffer are copied into it.
@@ -551,15 +556,15 @@ Handlers are called with argument list
 
 Furthermore, they may use the following variables:
 
-   desktop-file-version
-   desktop-buffer-file-name
-   desktop-buffer-name
-   desktop-buffer-major-mode
-   desktop-buffer-minor-modes
-   desktop-buffer-point
-   desktop-buffer-mark
-   desktop-buffer-read-only
-   desktop-buffer-misc
+   `desktop-file-version'
+   `desktop-buffer-file-name'
+   `desktop-buffer-name'
+   `desktop-buffer-major-mode'
+   `desktop-buffer-minor-modes'
+   `desktop-buffer-point'
+   `desktop-buffer-mark'
+   `desktop-buffer-read-only'
+   `desktop-buffer-misc'
 
 When a handler is called, the buffer has been created and the major mode has
 been set, but local variables listed in desktop-buffer-locals has not yet been
@@ -692,7 +697,7 @@ if different)."
                        (frame-parameter frame 'desktop-dont-clear))
              (delete-frame frame))
          (error
-        (delay-warning 'desktop (error-message-string err))))))))
+          (delay-warning 'desktop (error-message-string err))))))))
 
 ;; ----------------------------------------------------------------------------
 (unless noninteractive
@@ -1058,7 +1063,8 @@ This function depends on the value of `desktop-saved-frameset'
 being set (usually, by reading it from the desktop)."
   (when (desktop-restoring-frameset-p)
     (frameset-restore desktop-saved-frameset
-                     :reuse-frames desktop-restore-reuses-frames
+                     :reuse-frames (eq desktop-restore-reuses-frames t)
+                     :cleanup-frames (not (eq desktop-restore-reuses-frames 'keep))
                      :force-display desktop-restore-in-current-display
                      :force-onscreen desktop-restore-forces-onscreen)))
 
@@ -1380,20 +1386,21 @@ after that many seconds of idle time."
                 (eval desktop-buffer-point)
               (error (message "%s" (error-message-string err)) 1))))
          (when desktop-buffer-mark
-           (if (consp desktop-buffer-mark)
-               (progn
-                 (set-mark (car desktop-buffer-mark))
-                 (setq mark-active (car (cdr desktop-buffer-mark))))
-             (set-mark desktop-buffer-mark)))
+            (if (consp desktop-buffer-mark)
+                (progn
+                  (move-marker (mark-marker) (car desktop-buffer-mark))
+                  ;; FIXME: Should we call (de)activate-mark instead?
+                  (setq mark-active (car (cdr desktop-buffer-mark))))
+              (move-marker (mark-marker) desktop-buffer-mark)))
          ;; Never override file system if the file really is read-only marked.
          (when desktop-buffer-read-only (setq buffer-read-only desktop-buffer-read-only))
          (dolist (this desktop-buffer-locals)
            (if (consp this)
-               ;; an entry of this form `(symbol . value)'
+               ;; An entry of this form `(symbol . value)'.
                (progn
                  (make-local-variable (car this))
                  (set (car this) (cdr this)))
-             ;; an entry of the form `symbol'
+             ;; An entry of the form `symbol'.
              (make-local-variable this)
              (makunbound this))))))))
 
index 0fc455cef68da9ddff37c0a046b854179fd1e1cf..872b922d783ad1b0a4d71d4730680e12b3f76f84 100644 (file)
@@ -530,7 +530,7 @@ LOCATION can be one of 'random, 'left-right, or 'top-bottom."
 
 (defun dframe-detach (frame-var cache-var buffer-var)
   "Detach the frame in symbol FRAME-VAR.
-CACHE-VAR and BUFFER-VAR are symbols as in `dframe-frame-mode'"
+CACHE-VAR and BUFFER-VAR are symbols as in `dframe-frame-mode'."
   (with-current-buffer (symbol-value buffer-var)
     (rename-buffer (buffer-name) t)
     (let ((oldframe (symbol-value frame-var)))
index b1b22a6a99aa54aa556c1c0f97e38b072e42bf0b..162c9beb0c0fd443e5357c5bee8c4a3b96cb6db3 100644 (file)
@@ -3087,7 +3087,7 @@ argument or confirmation)."
       (apply function args)
     (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*"))))
       (with-current-buffer buffer
-       (with-temp-buffer-window
+       (with-current-buffer-window
         buffer
         (cons 'display-buffer-below-selected
               '((window-height . fit-window-to-buffer)))
@@ -3845,7 +3845,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
   (let* ((dired-dir (car misc-data))
          (dir (if (consp dired-dir) (car dired-dir) dired-dir)))
     (if (file-directory-p (file-name-directory dir))
-        (progn
+        (with-demoted-errors "Desktop: Problem restoring directory: %S"
           (dired dired-dir)
           ;; The following elements of `misc-data' are the keys
           ;; from `dired-subdir-alist'.
index 992553685e27631fb45fbece2af8e9d00bb32fb3..7debe0b7f98faed676a4bffefaa2295c071e4c84 100644 (file)
@@ -286,9 +286,7 @@ mode set `electric-indent-inhibit', but this can be used as a workaround.")
   (let ((electric-indent-mode nil))
     (newline arg 'interactive)))
 
-(defvar electric-indent-mode-has-been-called 0
-  "How many times has `electric-indent-mode' been called?
-It's > 1 if it's been called at least once by the user.")
+
 ;;;###autoload
 (define-minor-mode electric-indent-mode
   "Toggle on-the-fly reindentation (Electric Indent mode).
@@ -296,14 +294,14 @@ With a prefix argument ARG, enable Electric Indent mode if ARG is
 positive, and disable it otherwise.  If called from Lisp, enable
 the mode if ARG is omitted or nil.
 
-This is a global minor mode.  When enabled, it reindents whenever
-the hook `electric-indent-functions' returns non-nil, or you
-insert a character from `electric-indent-chars'."
+When enabled, this reindents whenever the hook `electric-indent-functions'
+returns non-nil, or if you insert a character from `electric-indent-chars'.
+
+This is a global minor mode.  To toggle the mode in a single buffer,
+use `electric-indent-local-mode'."
   :global t :group 'electricity
   :initialize 'custom-initialize-delay
   :init-value t
-  (setq electric-indent-mode-has-been-called
-       (1+ electric-indent-mode-has-been-called))
   (if (not electric-indent-mode)
       (progn
         (when (eq (lookup-key global-map [?\C-j])
index 0340076720c11a29bc5cd9998fb0f40ab3d22007..62d50728350d658f57b0ceaeb332b8c1fdbf5f5b 100644 (file)
@@ -2079,9 +2079,7 @@ mapped to the closest extremal position).
 
 If FUNCTION was not advised already, its advice info will be
 initialized.  Redefining a piece of advice whose name is part of
-the cache-id will clear the cache.
-
-See Info node `(elisp)Computed Advice' for detailed documentation."
+the cache-id will clear the cache."
   (cond ((not (ad-is-advised function))
          (ad-initialize-advice-info function)
         (ad-set-advice-info-field
@@ -3149,7 +3147,6 @@ time.  This generates a compiled advised definition according to the current
 advice state that will be used during activation if appropriate.  Only use
 this if the `defadvice' gets actually compiled.
 
-See Info node `(elisp)Advising Functions' for comprehensive documentation.
 usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
           [DOCSTRING] [INTERACTIVE-FORM]
           BODY...)"
index e2e468717a6f590adfc079be2d72f74e6a9390aa..e5f8a8cc22ab4ec2e8a058358191e240e08f0946 100644 (file)
@@ -2706,7 +2706,6 @@ for symbols generated by the byte compiler itself."
               (cdr compiled)
               ;; optionally, the doc string.
               (cond (lexical-binding
-                     (require 'help-fns)
                      (list (help-add-fundoc-usage doc arglist)))
                     ((or doc int)
                      (list doc)))
index c911d9d9293a4a95b4d43ee1f5b42e8688ac0723..e991c4782f71170c628452766b59fd9dc4f91e7b 100644 (file)
 
 ;; This code defines a function, `completing-read-multiple', which
 ;; provides the ability to read multiple strings in the minibuffer,
-;; with completion.
-
-;; By using this functionality, a user may specify multiple strings at
-;; a single prompt, optionally using completion.
-
-;; Multiple strings are specified by separating each of the strings
-;; with a prespecified separator regexp.  For example, if the
-;; separator regexp is ",", the strings 'alice', 'bob', and
-;; 'eve' would be specified as 'alice,bob,eve'.
-
-;; The default value for the separator regexp is the value of
-;; `crm-default-separator' (comma).  The separator regexp may be
-;; changed by modifying the value of `crm-separator'.
-
-;; Contiguous strings of non-separator-characters are referred to as
-;; 'elements'.  In the aforementioned example, the elements are:
-;; 'alice', 'bob', and 'eve'.
-
-;; Completion is available on a per-element basis.  For example, if
-;; the contents of the minibuffer are 'alice,bob,eve' and point is
-;; between 'l' and 'i', pressing TAB operates on the element 'alice'.
+;; with completion.  See that function's documentation for details.
 
 ;; For the moment, I have decided to not bind any special behavior to
 ;; the separator key.  In the future, the separator key might be used
 ;;   first revamped version
 
 ;;; Code:
+
+;; FIXME I don't see that this needs to exist as a separate variable.
+;; crm-separator should suffice.
 (defconst crm-default-separator "[ \t]*,[ \t]*"
-  "Default separator regexp for `completing-read-multiple'.")
+  "Default value of `crm-separator'.")
 
 (defvar crm-separator crm-default-separator
   "Separator regexp used for separating strings in `completing-read-multiple'.
 It should be a regexp that does not match the list of completion candidates.
-Modify this value to make `completing-read-multiple' use a separator other
-than `crm-default-separator'.")
+The default value is `crm-default-separator'.")
 
 (defvar crm-local-completion-map
   (let ((map (make-sparse-keymap)))
@@ -240,37 +222,29 @@ exiting the minibuffer."
     t))
 
 ;; superemulates behavior of completing_read in src/minibuf.c
+;; Use \\<crm-local-completion-map> so that help-enable-auto-load can
+;; do its thing.  Any keymap that is defined will do.
 ;;;###autoload
 (defun completing-read-multiple
   (prompt table &optional predicate require-match initial-input
          hist def inherit-input-method)
   "Read multiple strings in the minibuffer, with completion.
-By using this functionality, a user may specify multiple strings at a
-single prompt, optionally using completion.
-
-Multiple strings are specified by separating each of the strings with
-a prespecified separator regexp.  For example, if the separator
-regexp is \",\", the strings 'alice', 'bob', and 'eve' would be
-specified as 'alice,bob,eve'.
+The arguments are the same as those of `completing-read'.
+\\<crm-local-completion-map>
+Input multiple strings by separating each one with a string that
+matches the regexp `crm-separator'.  For example, if the separator
+regexp is \",\", entering \"alice,bob,eve\" specifies the strings
+\"alice\", \"bob\", and \"eve\".
 
-The default value for the separator regexp is the value of
-`crm-default-separator' (comma).  The separator regexp may be
-changed by modifying the value of `crm-separator'.
-
-Contiguous strings of non-separator-characters are referred to as
-'elements'.  In the aforementioned example, the elements are: 'alice',
-'bob', and 'eve'.
+We refer to contiguous strings of non-separator-characters as
+\"elements\".  In this example there are three elements.
 
 Completion is available on a per-element basis.  For example, if the
-contents of the minibuffer are 'alice,bob,eve' and point is between
-'l' and 'i', pressing TAB operates on the element 'alice'.
-
-The return value of this function is a list of the read strings
-with empty strings removed.
+contents of the minibuffer are \"alice,bob,eve\" and point is between
+\"l\" and \"i\", pressing \\[minibuffer-complete] operates on the element \"alice\".
 
-See the documentation for `completing-read' for details on the arguments:
-PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and
-INHERIT-INPUT-METHOD."
+This function returns a list of the strings that were read,
+with empty strings removed."
   (unwind-protect
       (progn
        (add-hook 'choose-completion-string-functions
index 2db629ea86c3dcade4240b12642a8292b93ea23b..b5b6566cf665745539b6a59cc2e454f563b64040 100644 (file)
@@ -148,7 +148,7 @@ For example, you could write
     :lighter \" Foo\" :require 'foo :global t :group 'hassle :version \"27.5\"
     ...BODY CODE...)"
   (declare (doc-string 2)
-           (debug (&define name stringp
+           (debug (&define name string-or-null-p
                           [&optional [&not keywordp] sexp
                            &optional [&not keywordp] sexp
                            &optional [&not keywordp] sexp]
index e4bcb4bf294b58b78862dc9fb6a613e7c0e28ec6..e2d38ffe85899b3eaa8adcb284ff65d76d1ab3c1 100644 (file)
@@ -1,7 +1,6 @@
 ;;; edebug.el --- a source-level debugger for Emacs Lisp  -*- lexical-binding: t -*-
 
-;; Copyright (C) 1988-1995, 1997, 1999-2014 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1988-1995, 1997, 1999-2014 Free Software Foundation, Inc.
 
 ;; Author: Daniel LaLiberte <liberte@holonexus.org>
 ;; Maintainer: emacs-devel@gnu.org
@@ -1936,11 +1935,11 @@ expressions; a `progn' form will be returned enclosing these forms."
           [&optional stringp]
           [&optional ("interactive" interactive)]
           def-body))
-;; FIXME? Isn't this missing the doc-string?  Cf defun.
 (def-edebug-spec defmacro
   ;; FIXME: Improve `declare' so we can Edebug gv-expander and
   ;; gv-setter declarations.
-  (&define name lambda-list [&optional ("declare" &rest sexp)] def-body))
+  (&define name lambda-list [&optional stringp]
+           [&optional ("declare" &rest sexp)] def-body))
 
 (def-edebug-spec arglist lambda-list)  ;; deprecated - use lambda-list.
 
index a1b5b381571d591dfa750507907f7f21fec4a99e..566821ede91697c0c872fcda8907b34fcde17444 100644 (file)
@@ -246,13 +246,13 @@ Where each VAR is the local variable given to the associated
 SLOT.  A slot specified without a variable name is given a
 variable name of the same name as the slot."
   (declare (indent 2))
-  ;; Transform the spec-list into a symbol-macrolet spec-list.
+  ;; Transform the spec-list into a cl-symbol-macrolet spec-list.
   (let ((mappings (mapcar (lambda (entry)
                            (let ((var  (if (listp entry) (car entry) entry))
                                  (slot (if (listp entry) (cadr entry) entry)))
                              (list var `(slot-value ,object ',slot))))
                          spec-list)))
-    (append (list 'symbol-macrolet mappings)
+    (append (list 'cl-symbol-macrolet mappings)
            body)))
 \f
 ;;; Simple generators, and query functions.  None of these would do
index cedfd44dd1f73c8d5320ca2bb734c5f667398ced..c64ec52decb5341c0cb9aa2abe186ea14112ff66 100644 (file)
@@ -219,7 +219,9 @@ Otherwise work like `message'."
   (if (minibufferp)
       (progn
        (add-hook 'minibuffer-exit-hook
-                 (lambda () (setq eldoc-mode-line-string nil))
+                 (lambda () (setq eldoc-mode-line-string nil
+                             ;; http://debbugs.gnu.org/16920
+                             eldoc-last-message nil))
                  nil t)
        (with-current-buffer
            (window-buffer
index ee058a8f607d2e2b782e7b2a7e87c9e0b5b7ec51..34041aab9a8ca37e29a9a62d78ab172cbaeaee33 100644 (file)
@@ -1882,11 +1882,12 @@ and how to display message."
                             ;; defined without cl.
                             (car ert--selector-history)
                           "t")))
-           (completing-read (if (null default)
-                               "Run tests: "
-                             (format "Run tests (default %s): " default))
-                           obarray #'ert-test-boundp nil nil
-                           'ert--selector-history default nil))
+           (read
+            (completing-read (if (null default)
+                                 "Run tests: "
+                               (format "Run tests (default %s): " default))
+                             obarray #'ert-test-boundp nil nil
+                             'ert--selector-history default nil)))
          nil))
   (unless message-fn (setq message-fn 'message))
   (let ((output-buffer-name output-buffer-name)
index 03be2f5c1aae51d74a03454604e4ae717d96d426..0487515a142f79e7cc0d621f69fc24d3dbe0af30 100644 (file)
@@ -719,8 +719,10 @@ considered."
       (dolist (p (nth 9 ppss))
         (push (cdr (syntax-after p)) closer))
       (setq closer (apply #'string closer))
-      (let* ((sexp (car (read-from-string
-                         (concat txt "lisp--witness--lisp" closer))))
+      (let* ((sexp (condition-case nil
+                       (car (read-from-string
+                             (concat txt "lisp--witness--lisp" closer)))
+                     (end-of-file nil)))
              (macroexpand-advice (lambda (expander form &rest args)
                                    (condition-case nil
                                        (apply expander form args)
index 8dc1f19784c1e7fe34b49414181a382fd62710c4..f75fb23147f9bcdf82e9a58f04f4233b5bf363b6 100644 (file)
@@ -141,11 +141,12 @@ Each element has the form (WHERE BYTECODE STACK) where:
   (let ((adv-sig (gethash main advertised-signature-table))
         (advice
          (apply #'make-byte-code 128 byte-code
-                (vector #'apply function main props) stack-depth
-                nil
+                (vector #'apply function main props) stack-depth nil
                 (and (or (commandp function) (commandp main))
-                    (not (and (symbolp main) ;; Don't autoload too eagerly!
-                              (autoloadp (symbol-function main))))
+                    ;; If we're adding the advice on advice--pending, don't
+                    ;; build an interactive-form, which won't be used anyway
+                    ;; and would risk autoloading `main' (or `function').
+                    (not (eq main :advice--pending))
                      (list (advice--make-interactive-form
                             function main))))))
     (when adv-sig (puthash advice adv-sig advertised-signature-table))
@@ -392,6 +393,8 @@ is defined as a macro, alias, command, ..."
                          ;; - `autoload' does nothing if the function is
                          ;;   not an autoload or undefined.
                          ((or (not nf) (autoloadp nf))
+                         (unless (get symbol 'advice--pending)
+                           (put symbol 'advice--pending :advice--pending))
                           (get symbol 'advice--pending))
                          (t (symbol-function symbol)))
                   function props)
@@ -416,6 +419,8 @@ of the piece of advice."
                      function)
     (unless (advice--p (advice--symbol-function symbol))
       ;; Not advised any more.
+      (when (eq (get symbol 'advice--pending) :advice--pending)
+       (put symbol 'advice--pending nil))
       (remove-function (get symbol 'defalias-fset-function)
                        #'advice--defalias-fset)
       (let ((asr (get symbol 'advice--saved-rewrite)))
index b15ae6f1376e3de2de4c5dd44f6c2ba96888bf43..d8d479871b22cff42815f92291aaab7b21830305 100644 (file)
@@ -1128,6 +1128,8 @@ is wrapped around any parts requiring it."
                  ((symbolp dep) `(,dep "0"))
                  ((stringp dep)
                   (error "Invalid requirement specifier: %S" dep))
+                 ((and (listp dep) (null (cdr dep)))
+                  (list (car dep) "0"))
                  (t dep)))
               deps))))
 
@@ -1624,7 +1626,7 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
       '(menu-item "Help" package-menu-quick-help
                  :help "Show short key binding help for package-menu-mode"))
     (define-key menu-map [mc]
-      '(menu-item "View Commentary" package-menu-view-commentary
+      '(menu-item "Describe Package" package-menu-describe-package
                  :help "Display information about this package"))
     map)
   "Local keymap for `package-menu-mode' buffers.")
index aba929035d1dc6a1026894d5d3ab61cb2fcd4005..e8b4eb39576de5200b476a6880e137671812c692 100644 (file)
@@ -115,7 +115,9 @@ See the documentation for `list-load-path-shadows' for further information."
          ;; FILE now contains the current file name, with no suffix.
          (unless (or (member file files-seen-this-dir)
                      ;; Ignore these files.
-                     (member file '("subdirs" "leim-list")))
+                     (member file (list "subdirs" "leim-list"
+                                        (file-name-sans-extension
+                                         dir-locals-file))))
            ;; File has not been seen yet in this directory.
            ;; This test prevents us declaring that XXX.el shadows
            ;; XXX.elc (or vice-versa) when they are in the same directory.
index 02a41cddfab7ddb051a6c427e7bf8a05424ebd08..e65f873b874a34de3b6d4090ba55cec6a58a6fa7 100644 (file)
@@ -2149,8 +2149,11 @@ position corresponding to each rule."
         rules))))
 
 (defun smie-config-guess ()
-  "Try and figure out this buffer's indentation settings."
+  "Try and figure out this buffer's indentation settings.
+To save the result for future sessions, use `smie-config-save'."
   (interactive)
+  (if (eq smie-grammar 'unset)
+      (user-error "This buffer does not seem to be using SMIE"))
   (let ((config (smie-config--guess (point-min) (point-max))))
     (cond
      ((null config) (message "Nothing to change"))
@@ -2168,7 +2171,8 @@ position corresponding to each rule."
       (message "Rules guessed: %S" config)))))
 
 (defun smie-config-save ()
-  "Save local rules for use with this major mode."
+  "Save local rules for use with this major mode.
+One way to generate local rules is the command `smie-config-guess'."
   (interactive)
   (cond
    ((null smie-config--buffer-local)
@@ -2190,7 +2194,7 @@ position corresponding to each rule."
           (setcdr existing config)
         (push (cons major-mode config) smie-config))
       (setq smie-config--mode-local config)
-      (kill-local-variable smie-config--buffer-local)
+      (kill-local-variable 'smie-config--buffer-local)
       (customize-mark-as-set 'smie-config)))))
 
 (provide 'smie)
index 57185053932be79186e2fd97baca43c268fe93e5..a32fb612adb3ebb922497e67be6c460c1c335fc0 100644 (file)
@@ -1,7 +1,6 @@
 ;;; edt.el --- enhanced EDT keypad mode emulation for GNU Emacs
 
-;; Copyright (C) 1986, 1992-1995, 2000-2014 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1986, 1992-1995, 2000-2014 Free Software Foundation, Inc.
 
 ;; Author: Kevin Gallagher <Kevin.Gallagher@boeing.com>
 ;; Maintainer: Kevin Gallagher <Kevin.Gallagher@boeing.com>
@@ -51,7 +50,7 @@
 ;; you initiate a GNU Emacs session, by adding the following line to
 ;; your init file:
 ;;
-;;    (add-hook term-setup-hook 'edt-emulation-on)
+;;    (add-hook 'emacs-startup-hook 'edt-emulation-on)
 
 ;; IMPORTANT: Be sure to read the Info node `edt' for more details.
 ;; It contains very helpful user information.
index 8d0fc723f14c9b4a9de30754170b5ca5be21a05a..6d99fdf73d9ce54cca60926dec24b8c00e9c201c 100644 (file)
@@ -1,3 +1,8 @@
+2014-02-25  Julien Danjou  <julien@danjou.info>
+
+       * erc-networks.el (erc-determine-network): Check that NETWORK as a
+       value, some servers set it to nothing.
+
 2014-01-31  Glenn Morris  <rgm@gnu.org>
 
        * erc.el (erc-accidental-paste-threshold-seconds): Doc tweak.
index 191aad0e0cc03a7243b483b31ce6be5c81e3484c..29a13ae5e306d42b7f71e68eaebaae0b7a30a6e6 100644 (file)
@@ -724,16 +724,17 @@ MATCHER is used to find a corresponding network to a server while connected to
 server parameter NETWORK if provided, otherwise parse the server name and
 search for a match in `erc-networks-alist'."
   ;; The server made it easy for us and told us the name of the NETWORK
-  (if (assoc "NETWORK" erc-server-parameters)
-      (intern (cdr (assoc "NETWORK" erc-server-parameters)))
-    (or
-     ;; Loop through `erc-networks-alist' looking for a match.
-     (let ((server (or erc-server-announced-name erc-session-server)))
-       (cl-loop for (name matcher) in erc-networks-alist
-               when (and matcher
-                         (string-match (concat matcher "\\'") server))
-               do (cl-return name)))
-     'Unknown)))
+  (let ((network-name (cdr (assoc "NETWORK" erc-server-parameters))))
+    (if network-name
+       (intern network-name)
+      (or
+       ;; Loop through `erc-networks-alist' looking for a match.
+       (let ((server (or erc-server-announced-name erc-session-server)))
+        (cl-loop for (name matcher) in erc-networks-alist
+                 when (and matcher
+                           (string-match (concat matcher "\\'") server))
+                 do (cl-return name)))
+       'Unknown))))
 
 (defun erc-network ()
   "Return the value of `erc-network' for the current server."
index ec3cc8e1626c12866ab743849a4ea3d9dd6ddfe9..b721b5d8485390af50a089a2622c6fd0200c6f8f 100644 (file)
@@ -509,7 +509,8 @@ See also `eshell-read-history'."
        ;; Change "completion" to "history reference"
        ;; to make the display accurate.
        (with-output-to-temp-buffer history-buffer
-         (display-completion-list history prefix)
+         (display-completion-list
+          (completion-hilit-commonality history (length prefix)))
          (set-buffer history-buffer)
          (forward-line 3)
          (while (search-backward "completion" nil 'move)
index 3394c721f04bfd2281fe7a70822cc3e9e3c24aa0..e008993b49ff7103ce95c6f9c0fb485011a01457 100644 (file)
@@ -2080,7 +2080,7 @@ If PARAMETERS contains a `reverse' parameter, handle that."
           (unless (terminal-parameter frame 'terminal-initted)
             (set-terminal-parameter frame 'terminal-initted t)
             (set-locale-environment nil frame)
-            (tty-run-terminal-initialization frame))
+            (tty-run-terminal-initialization frame nil t))
          (frame-set-background-mode frame t)
          (face-set-after-frame-default frame parameters)
          (setq success t))
@@ -2107,12 +2107,18 @@ the above example."
 
 (defvar tty-setup-hook nil
   "Hook run after running the initialization function of a new text terminal.
+Specifically, `tty-run-terminal-initialization' runs this.
 This can be used to fine tune the `input-decode-map', for example.")
 
-(defun tty-run-terminal-initialization (frame &optional type)
+(defun tty-run-terminal-initialization (frame &optional type run-hook)
   "Run the special initialization code for the terminal type of FRAME.
 The optional TYPE parameter may be used to override the autodetected
-terminal type to a different value."
+terminal type to a different value.
+
+If optional argument RUN-HOOK is non-nil, then as a final step,
+this runs the hook `tty-setup-hook'.
+
+If you set `term-file-prefix' to nil, this function does nothing."
   (setq type (or type (tty-type frame)))
   ;; Load library for our terminal type.
   ;; User init file can set term-file-prefix to nil to prevent this.
@@ -2135,7 +2141,7 @@ terminal type to a different value."
        (when (fboundp term-init-func)
          (funcall term-init-func))
        (set-terminal-parameter frame 'terminal-initted term-init-func)
-       (run-hooks 'tty-setup-hook)))))
+       (if run-hook (run-hooks 'tty-setup-hook))))))
 
 ;; Called from C function init_display to initialize faces of the
 ;; dumped terminal frame on startup.
index 802308b59c6185517cbb2b29f2a91526415b267c..7d12517fcc37a8aef67e45bacebbf32bcfab0671 100644 (file)
@@ -613,7 +613,9 @@ the name is considered already unique; only the second substitution
                      (append completion-setup-hook
                              (list 'file-cache-completion-setup-function))))
                (with-output-to-temp-buffer file-cache-completions-buffer
-                 (display-completion-list completion-list string))))
+                 (display-completion-list
+                   (completion-hilit-commonality completion-list
+                                                 (length string))))))
          (setq file-cache-string (file-cache-file-name completion-string))
          (if (string= file-cache-string (minibuffer-contents))
              (minibuffer-message file-cache-sole-match-message)
index 7d20e1456b6b615ab5af220d99207f881bb89483..6d0be9234e66987384c086711a92d1ba73effd5e 100644 (file)
@@ -1429,7 +1429,7 @@ You can visit files on remote machines by specifying something
 like /ssh:SOME_REMOTE_MACHINE:FILE for the file name.  You can
 also visit local files as a different user by specifying
 /sudo::FILE for the file name.
-See the Info node `(tramp)Filename Syntax' in the Tramp Info
+See the Info node `(tramp)File name Syntax' in the Tramp Info
 manual, for more about this.
 
 Interactively, or if WILDCARDS is non-nil in a call from Lisp,
@@ -2517,6 +2517,7 @@ and `magic-mode-alist', which determines modes based on file contents.")
      ("scm" . scheme-mode)
      ("[acjkwz]sh" . sh-mode)
      ("r?bash2?" . sh-mode)
+     ("dash" . sh-mode)
      ("\\(dt\\|pd\\|w\\)ksh" . sh-mode)
      ("es" . sh-mode)
      ("i?tcsh" . sh-mode)
@@ -3340,8 +3341,11 @@ local variables, but directory-local variables may still be applied."
                              ((eq var 'lexical-binding)
                               (unless hack-local-variables--warned-lexical
                                 (setq hack-local-variables--warned-lexical t)
-                                (display-warning :warning
-                                                 "Specify `lexical-binding' on the first line, not at the end")))
+                                (display-warning
+                                  :warning
+                                  (format "%s: `lexical-binding' at end of file unreliable"
+                                          (file-name-nondirectory
+                                           (or buffer-file-name ""))))))
                              (t
                               (ignore-errors
                                 (push (cons (if (eq var 'eval)
@@ -6530,7 +6534,7 @@ if any returns nil.  If `confirm-kill-emacs' is non-nil, calls it."
                    (setq active t))
               (setq processes (cdr processes)))
             (or (not active)
-                (with-temp-buffer-window
+                (with-current-buffer-window
                  (get-buffer-create "*Process List*") nil
                  #'(lambda (window _value)
                      (with-selected-window window
index dd8087b1f345d331049707f588e7b40e3eab5ba1..6ddeab7be3494ffb931d0ce8308cf47c1a3f183f 100644 (file)
@@ -30,7 +30,7 @@
 (require 'dired)
 
 (defgroup find-dired nil
-  "Run a `find' command and dired the output."
+  "Run a `find' command and Dired the output."
   :group 'dired
   :prefix "find-")
 
@@ -234,7 +234,7 @@ use in place of \"-ls\" as the final argument."
 ;;;###autoload
 (defun find-name-dired (dir pattern)
   "Search DIR recursively for files matching the globbing pattern PATTERN,
-and run dired on those files.
+and run Dired on those files.
 PATTERN is a shell wildcard (not an Emacs regexp) and need not be quoted.
 The default command run (after changing into DIR) is
 
index e516181876662ce268d7c875f7ee2d285f1fb0d8..092a2ddd8a493744fefa64ee49f53bf3c488124f 100644 (file)
@@ -118,7 +118,7 @@ Each element has the form (KEYWORD . DESCRIPTION).")
   "Font-lock keywords for Finder mode.")
 
 (defvar finder-headmark nil
-  "Internal finder-mode variable, local in finder buffer.")
+  "Internal Finder mode variable, local in Finder buffer.")
 
 ;;; Code for regenerating the keyword list.
 
@@ -135,11 +135,22 @@ Keywords and package names both should be symbols.")
 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00469.html
 ;; ldefs-boot is not auto-generated, but has nothing useful.
 (defvar finder-no-scan-regexp "\\(^\\.#\\|\\(loaddefs\\|ldefs-boot\\|\
-cus-load\\|finder-inf\\|esh-groups\\|subdirs\\)\\.el$\\)"
+cus-load\\|finder-inf\\|esh-groups\\|subdirs\\|leim-list\\)\\.el$\\)"
   "Regexp matching file names not to scan for keywords.")
 
 (autoload 'autoload-rubric "autoload")
 
+(defconst finder--builtins-descriptions
+  ;; I have no idea whether these are supposed to be capitalized
+  ;; and/or end in a full-stop.  Existing file headers are inconsistent,
+  ;; but mainly seem to not do so.
+  '((emacs . "the extensible text editor")
+    (nxml . "a new XML mode"))
+  "Alist of built-in package descriptions.
+Entries have the form (PACKAGE-SYMBOL . DESCRIPTION).
+When generating `package--builtins', this overrides what the description
+would otherwise be.")
+
 (defvar finder--builtins-alist
   '(("calc" . calc)
     ("ede"  . ede)
@@ -155,6 +166,10 @@ cus-load\\|finder-inf\\|esh-groups\\|subdirs\\)\\.el$\\)"
     ("decorate" . semantic)
     ("symref" . semantic)
     ("wisent" . semantic)
+    ;; This should really be ("nxml" . nxml-mode), because nxml-mode.el
+    ;; is the main file for the package.  Then we would not need an
+    ;; entry in finder--builtins-descriptions.  But I do not know if
+    ;; it is safe to change this, in case it is already in use.
     ("nxml" . nxml)
     ("org"  . org)
     ("srecode" . srecode)
@@ -177,7 +192,7 @@ from; the default is `load-path'."
   (setq package--builtins nil)
   (setq finder-keywords-hash (make-hash-table :test 'eq))
   (let ((el-file-regexp "^\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?$")
-       package-override files base-name processed
+       package-override files base-name processed
        summary keywords package version entry desc)
     (dolist (d (or dirs load-path))
       (when (file-exists-p (directory-file-name d))
@@ -192,17 +207,29 @@ from; the default is `load-path'."
          (unless (or (string-match finder-no-scan-regexp f)
                      (null (setq base-name
                                  (and (string-match el-file-regexp f)
-                                      (intern (match-string 1 f)))))
-                     (memq base-name processed))
-           (push base-name processed)
+                                      (intern (match-string 1 f))))))
+;;                   (memq base-name processed))
+;; There are multiple files in the tree with the same basename.
+;; So skipping files based on basename means you randomly (depending
+;; on which order the files are traversed in) miss some packages.
+;; http://debbugs.gnu.org/14010
+;; You might think this could lead to two files providing the same package,
+;; but it does not, because the duplicates are (at time of writing)
+;; all due to files in cedet, which end up with package-override set.
+;; FIXME this is obviously fragile.
+;; Make the (eq base-name package) case below issue a warning if
+;; package-override is nil?
+;;         (push base-name processed)
            (with-temp-buffer
              (insert-file-contents (expand-file-name f d))
-             (setq summary  (lm-synopsis)
-                   keywords (mapcar 'intern (lm-keywords-list))
+             (setq keywords (mapcar 'intern (lm-keywords-list))
                    package  (or package-override
                                 (let ((str (lm-header "package")))
                                   (if str (intern str)))
                                 base-name)
+                   summary  (or (cdr
+                                 (assq package finder--builtins-descriptions))
+                                (lm-synopsis))
                    version  (lm-header "version")))
            (when summary
              (setq version (ignore-errors (version-to-list version)))
@@ -211,6 +238,9 @@ from; the default is `load-path'."
                     (push (cons package
                                  (package-make-builtin version summary))
                           package--builtins))
+                   ;; The idea here is that eg calc.el gets to define
+                   ;; the description of the calc package.
+                   ;; This does not work for eg nxml-mode.el.
                    ((eq base-name package)
                     (setq desc (cdr entry))
                     (aset desc 0 version)
@@ -323,7 +353,8 @@ not `finder-known-keywords'."
         (packages (gethash id finder-keywords-hash)))
     (unless packages
       (error "No packages matching key `%s'" key))
-    (package-show-package-list packages)))
+    (let ((package-list-unversioned t))
+      (package-show-package-list packages))))
 
 (define-button-type 'finder-xref 'action #'finder-goto-xref)
 
@@ -384,7 +415,7 @@ FILE should be in a form suitable for passing to `locate-library'."
       key)))
 
 (defun finder-select ()
-  "Select item on current line in a finder buffer."
+  "Select item on current line in a Finder buffer."
   (interactive)
   (let ((key (finder-current-item)))
       (if (string-match "\\.el$" key)
@@ -392,7 +423,7 @@ FILE should be in a form suitable for passing to `locate-library'."
        (finder-list-matches key))))
 
 (defun finder-mouse-select (event)
-  "Select item in a finder buffer with the mouse."
+  "Select item in a Finder buffer with the mouse."
   (interactive "e")
   (with-current-buffer (window-buffer (posn-window (event-start event)))
     (goto-char (posn-point (event-start event)))
@@ -431,6 +462,12 @@ Delete the window and kill all Finder-related buffers."
   (let ((buf "*Finder*"))
     (and (get-buffer buf) (kill-buffer buf))))
 
+(defun finder-unload-function ()
+  "Unload the Finder library."
+  (with-demoted-errors (unload-feature 'finder-inf t))
+  ;; continue standard unloading
+  nil)
+
 \f
 (provide 'finder)
 
index 59e4d67b769836d0623f7c5118322a892b11ab16..b62c939d536375dccccef316b00e5ea8f35c4eea 100644 (file)
@@ -610,7 +610,6 @@ The functions are run with one arg, the newly created frame.")
 (define-obsolete-function-alias 'new-frame 'make-frame "22.1")
 
 (defvar frame-inherited-parameters '()
-  ;; FIXME: Shouldn't we add `font' here as well?
   "Parameters `make-frame' copies from the `selected-frame' to the new frame.")
 
 (defvar x-display-name)
@@ -1374,7 +1373,7 @@ frame's display)."
       (with-no-warnings
        (not (null dos-windows-version))))
      ((memq frame-type '(x w32 ns))
-      t)    ;; FIXME?
+      t)
      (t
       nil))))
 
@@ -1394,12 +1393,14 @@ If DISPLAY is omitted or nil, it defaults to the selected frame's display."
 
 (defun display-pixel-height (&optional display)
   "Return the height of DISPLAY's screen in pixels.
+If DISPLAY is omitted or nil, it defaults to the selected frame's display.
+
 For character terminals, each character counts as a single pixel.
+
 For graphical terminals, note that on \"multi-monitor\" setups this
 refers to the pixel height for all physical monitors associated
 with DISPLAY.  To get information for each physical monitor, use
-`display-monitor-attributes-list'.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display."
+`display-monitor-attributes-list'."
   (let ((frame-type (framep-on-display display)))
     (cond
      ((memq frame-type '(x w32 ns))
@@ -1411,12 +1412,14 @@ If DISPLAY is omitted or nil, it defaults to the selected frame's display."
 
 (defun display-pixel-width (&optional display)
   "Return the width of DISPLAY's screen in pixels.
+If DISPLAY is omitted or nil, it defaults to the selected frame's display.
+
 For character terminals, each character counts as a single pixel.
+
 For graphical terminals, note that on \"multi-monitor\" setups this
 refers to the pixel width for all physical monitors associated
 with DISPLAY.  To get information for each physical monitor, use
-`display-monitor-attributes-list'.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display."
+`display-monitor-attributes-list'."
   (let ((frame-type (framep-on-display display)))
     (cond
      ((memq frame-type '(x w32 ns))
@@ -1426,14 +1429,14 @@ If DISPLAY is omitted or nil, it defaults to the selected frame's display."
 
 (defcustom display-mm-dimensions-alist nil
   "Alist for specifying screen dimensions in millimeters.
-The dimensions will be used for `display-mm-height' and
-`display-mm-width' if defined for the respective display.
+The functions `display-mm-height' and `display-mm-width' consult
+this list before asking the system.
 
-Each element of the alist has the form (display . (width . height)),
-e.g. (\":0.0\" . (287 . 215)).
+Each element has the form (DISPLAY . (WIDTH . HEIGHT)), e.g.
+\(\":0.0\" . (287 . 215)).
 
-If `display' equals t, it specifies dimensions for all graphical
-displays not explicitly specified."
+If `display' is t, it specifies dimensions for all graphical displays
+not explicitly specified."
   :version "22.1"
   :type '(alist :key-type (choice (string :tag "Display name")
                                  (const :tag "Default" t))
@@ -1446,13 +1449,16 @@ displays not explicitly specified."
 
 (defun display-mm-height (&optional display)
   "Return the height of DISPLAY's screen in millimeters.
-System values can be overridden by `display-mm-dimensions-alist'.
-If the information is unavailable, value is nil.
+If the information is unavailable, this function returns nil.
+If DISPLAY is omitted or nil, it defaults to the selected frame's display.
+
+You can override what the system thinks the result should be by
+adding an entry to `display-mm-dimensions-alist'.
+
 For graphical terminals, note that on \"multi-monitor\" setups this
 refers to the height in millimeters for all physical monitors
 associated with DISPLAY.  To get information for each physical
-monitor, use `display-monitor-attributes-list'.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display."
+monitor, use `display-monitor-attributes-list'."
   (and (memq (framep-on-display display) '(x w32 ns))
        (or (cddr (assoc (or display (frame-parameter nil 'display))
                        display-mm-dimensions-alist))
@@ -1463,13 +1469,16 @@ If DISPLAY is omitted or nil, it defaults to the selected frame's display."
 
 (defun display-mm-width (&optional display)
   "Return the width of DISPLAY's screen in millimeters.
-System values can be overridden by `display-mm-dimensions-alist'.
-If the information is unavailable, value is nil.
+If the information is unavailable, this function returns nil.
+If DISPLAY is omitted or nil, it defaults to the selected frame's display.
+
+You can override what the system thinks the result should be by
+adding an entry to `display-mm-dimensions-alist'.
+
 For graphical terminals, note that on \"multi-monitor\" setups this
 refers to the width in millimeters for all physical monitors
 associated with DISPLAY.  To get information for each physical
-monitor, use `display-monitor-attributes-list'.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display."
+monitor, use `display-monitor-attributes-list'."
   (and (memq (framep-on-display display) '(x w32 ns))
        (or (cadr (assoc (or display (frame-parameter nil 'display))
                        display-mm-dimensions-alist))
index f0d38d911f3ff3cbe136ed298d1d9c506694ab80..05fae1b4fa258d6865dc89041493493988edd6e6 100644 (file)
@@ -417,11 +417,11 @@ Properties can be set with
 ;; `frameset-filter-params' can be useful, even if you're not using
 ;; framesets.  The interface of `frameset-filter-params' is generic
 ;; and does not depend of global state, with one exception: it uses
-;; the internal variable `frameset--target-display' to decide if, and
-;; how, to modify the `display' parameter of FILTERED.  But that
-;; should not represent any problem, because it's only meaningful
-;; when restoring, and customized uses of `frameset-filter-params'
-;; are likely to use their own filter alist and just call
+;; the dynamically bound variable `frameset--target-display' to decide
+;; if, and how, to modify the `display' parameter of FILTERED.  That
+;; should not represent a problem, because it's only meaningful when
+;; restoring, and customized uses of `frameset-filter-params' are
+;; likely to use their own filter alist and just call
 ;;
 ;;   (setq my-filtered (frameset-filter-params my-params my-filters t))
 ;;
@@ -522,13 +522,13 @@ It must return:
 Frame parameters not on this alist are passed intact, as if they were
 defined with ACTION = nil.")
 
-(defvar frameset--target-display nil
-  ;; Either (minibuffer . VALUE) or nil.
-  ;; This refers to the current frame config being processed inside
-  ;; `frameset-restore' and its auxiliary functions (like filtering).
-  ;; If nil, there is no need to change the display.
-  ;; If non-nil, display parameter to use when creating the frame.
-  "Internal use only.")
+;; Dynamically bound in `frameset-save', `frameset-restore'.
+(defvar frameset--target-display)
+;; Either (display . VALUE) or nil.
+;; This refers to the current frame config being processed with
+;; `frameset-filter-params' and its auxiliary filtering functions.
+;; If nil, there is no need to change the display.
+;; If non-nil, display parameter to use when creating the frame.
 
 (defun frameset-switch-to-gui-p (parameters)
   "True when switching to a graphic display.
@@ -760,6 +760,7 @@ PREDICATE is a predicate function, which must return non-nil for frames that
 should be saved; if PREDICATE is nil, all frames from FRAME-LIST are saved.
 PROPERTIES is a user-defined property list to add to the frameset."
   (let* ((list (or (copy-sequence frame-list) (frame-list)))
+        (frameset--target-display nil)
         (frames (cl-delete-if-not #'frame-live-p
                                   (if predicate
                                       (cl-delete-if-not predicate list)
@@ -786,10 +787,9 @@ PROPERTIES is a user-defined property list to add to the frameset."
 \f
 ;; Restoring framesets
 
-(defvar frameset--reuse-list nil
-  "The list of frames potentially reusable.
-Its value is only meaningful during execution of `frameset-restore'.
-Internal use only.")
+;; Dynamically bound in `frameset-restore'.
+(defvar frameset--reuse-list)
+(defvar frameset--action-map)
 
 (defun frameset-compute-pos (value left/top right/bottom)
   "Return an absolute positioning value for a frame.
@@ -871,7 +871,7 @@ NOTE: This only works for non-iconified frames."
          (modify-frame-parameters frame params))))))
 
 (defun frameset--find-frame-if (predicate display &rest args)
-  "Find a frame in `frameset--reuse-list' satisfying PREDICATE.
+  "Find a reusable frame satisfying PREDICATE.
 Look through available frames whose display property matches DISPLAY
 and return the first one for which (PREDICATE frame ARGS) returns t.
 If PREDICATE is nil, it is always satisfied.  Internal use only."
@@ -941,7 +941,7 @@ Setting position and size parameters as soon as possible helps reducing
 flickering; other parameters, like `minibuffer' and `border-width', can
 not be changed once the frame has been created.  Internal use only."
   (cl-loop for param in '(left top with height border-width minibuffer)
-          collect (assq param parameters)))
+          when (assq param parameters) collect it))
 
 (defun frameset--restore-frame (parameters window-state filters force-onscreen)
   "Set up and return a frame according to its saved state.
@@ -982,16 +982,20 @@ Internal use only."
        (push visible alt-cfg)
        (push (cons 'fullscreen fullscreen) alt-cfg)))
 
-    ;; Time to find or create a frame an apply the big bunch of parameters.
-    ;; If a frame needs to be created and it falls partially or fully offscreen,
-    ;; sometimes it gets "pushed back" onscreen; however, moving it afterwards is
-    ;; allowed.  So we create the frame as invisible and then reapply the full
-    ;; parameter alist (including position and size parameters).
-    (setq frame (or (and frameset--reuse-list
-                        (frameset--reuse-frame display filtered-cfg))
-                   (make-frame-on-display display
-                                          (cons '(visibility)
-                                                (frameset--initial-params filtered-cfg)))))
+    ;; Time to find or create a frame and apply the big bunch of parameters.
+    (setq frame (and frameset--reuse-list
+                    (frameset--reuse-frame display filtered-cfg)))
+    (if frame
+       (puthash frame :reused frameset--action-map)
+      ;; If a frame needs to be created and it falls partially or fully offscreen,
+      ;; sometimes it gets "pushed back" onscreen; however, moving it afterwards is
+      ;; allowed.  So we create the frame as invisible and then reapply the full
+      ;; parameter alist (including position and size parameters).
+      (setq frame (make-frame-on-display display
+                                        (cons '(visibility)
+                                              (frameset--initial-params filtered-cfg))))
+      (puthash frame :created frameset--action-map))
+
     (modify-frame-parameters frame
                             (if (eq (frame-parameter frame 'fullscreen) fullscreen)
                                 ;; Workaround for bug#14949
@@ -1038,7 +1042,8 @@ For the meaning of FORCE-DISPLAY, see `frameset-restore'."
 ;;;###autoload
 (cl-defun frameset-restore (frameset
                            &key predicate filters reuse-frames
-                                force-display force-onscreen)
+                                force-display force-onscreen
+                                cleanup-frames)
   "Restore a FRAMESET into the current display(s).
 
 PREDICATE is a function called with two arguments, the parameter alist
@@ -1050,58 +1055,79 @@ and window-state is not restored.
 FILTERS is an alist of parameter filters; if nil, the value of
 `frameset-filter-alist' is used instead.
 
-REUSE-FRAMES selects the policy to use to reuse frames when restoring:
-  t        Reuse existing frames if possible, and delete those not reused.
-  nil      Restore frameset in new frames and delete existing frames.
-  :keep    Restore frameset in new frames and keep the existing ones.
-  LIST     A list of frames to reuse; only these are reused (if possible).
-            Remaining frames in this list are deleted; other frames not
-            included on the list are left untouched.
+REUSE-FRAMES selects the policy to reuse frames when restoring:
+  t        All existing frames can be reused.
+  nil      No existing frame can be reused.
+  match    Only frames with matching frame ids can be reused.
+  PRED     A predicate function; it receives as argument a live frame,
+             and must return non-nil to allow reusing it, nil otherwise.
 
 FORCE-DISPLAY can be:
   t        Frames are restored in the current display.
   nil      Frames are restored, if possible, in their original displays.
-  :delete  Frames in other displays are deleted instead of restored.
+  delete   Frames in other displays are deleted instead of restored.
   PRED     A function called with two arguments, the parameter alist and
             the window state (in that order).  It must return t, nil or
-            `:delete', as above but affecting only the frame that will
+            `delete', as above but affecting only the frame that will
             be created from that parameter alist.
 
 FORCE-ONSCREEN can be:
   t        Force onscreen only those frames that are fully offscreen.
   nil      Do not force any frame back onscreen.
-  :all     Force onscreen any frame fully or partially offscreen.
+  all      Force onscreen any frame fully or partially offscreen.
   PRED     A function called with three arguments,
           - the live frame just restored,
           - a list (LEFT TOP WIDTH HEIGHT), describing the frame,
           - a list (LEFT TOP WIDTH HEIGHT), describing the workarea.
           It must return non-nil to force the frame onscreen, nil otherwise.
 
+CLEANUP-FRAMES allows to \"clean up\" the frame list after restoring a frameset:
+  t        Delete all frames that were not created or restored upon.
+  nil      Keep all frames.
+  FUNC     A function called with two arguments:
+           - FRAME, a live frame.
+           - ACTION, which can be one of
+             :rejected  Frame existed, but was not a candidate for reuse.
+             :ignored   Frame existed, was a candidate, but wasn't reused.
+             :reused    Frame existed, was a candidate, and restored upon.
+             :created   Frame didn't exist, was created and restored upon.
+           Return value is ignored.
+
 Note the timing and scope of the operations described above: REUSE-FRAMES
 affects existing frames; PREDICATE, FILTERS and FORCE-DISPLAY affect the frame
-being restored before that happens; and FORCE-ONSCREEN affects the frame once
-it has been restored.
+being restored before that happens; FORCE-ONSCREEN affects the frame once
+it has been restored; and CLEANUP-FRAMES affects all frames alive after the
+restoration, including those that have been reused or created anew.
 
 All keyword parameters default to nil."
 
   (cl-assert (frameset-valid-p frameset))
 
-  (let (other-frames)
-
-    ;; frameset--reuse-list is a list of frames potentially reusable.  Later we
-    ;; will decide which ones can be reused, and how to deal with any leftover.
-    (pcase reuse-frames
-      ((or `nil `:keep)
-       (setq frameset--reuse-list nil
-            other-frames (frame-list)))
-      ((pred consp)
-       (setq frameset--reuse-list (copy-sequence reuse-frames)
-            other-frames (cl-delete-if (lambda (frame)
-                                         (memq frame frameset--reuse-list))
-                                       (frame-list))))
-      (_
-       (setq frameset--reuse-list (frame-list)
-            other-frames nil)))
+  (let* ((frames (frame-list))
+        (frameset--action-map (make-hash-table :test #'eq))
+        ;; frameset--reuse-list is a list of frames potentially reusable.  Later we
+        ;; will decide which ones can be reused, and how to deal with any leftover.
+        (frameset--reuse-list
+         (pcase reuse-frames
+           (`t
+            frames)
+           (`nil
+            nil)
+           (`match
+            (cl-loop for (state) in (frameset-states frameset)
+                     when (frameset-frame-with-id (frameset-cfg-id state) frames)
+                     collect it))
+           ((pred functionp)
+            (cl-remove-if-not reuse-frames frames))
+           (_
+            (error "Invalid arg :reuse-frames %s" reuse-frames)))))
+
+    ;; Mark existing frames in the map; candidates to reuse are marked as :ignored;
+    ;; they will be reassigned later, if chosen.
+    (dolist (frame frames)
+      (puthash frame
+              (if (memq frame frameset--reuse-list) :ignored :rejected)
+              frameset--action-map))
 
     ;; Sort saved states to guarantee that minibufferless frames will be created
     ;; after the frames that contain their minibuffer windows.
@@ -1116,32 +1142,29 @@ All keyword parameters default to nil."
                     (force-display (if (functionp force-display)
                                        (funcall force-display frame-cfg window-cfg)
                                      force-display))
+                    (frameset--target-display nil)
                     frame to-tty duplicate)
                ;; Only set target if forcing displays and the target display is different.
-               (cond ((frameset-keep-original-display-p force-display)
-                      (setq frameset--target-display nil))
-                     ((eq (frame-parameter nil 'display) (cdr (assq 'display frame-cfg)))
-                      (setq frameset--target-display nil))
-                     (t
-                      (setq frameset--target-display (cons 'display
-                                                           (frame-parameter nil 'display))
-                            to-tty (null (cdr frameset--target-display)))))
+               (unless (or (frameset-keep-original-display-p force-display)
+                           (eq (frame-parameter nil 'display)
+                               (cdr (assq 'display frame-cfg))))
+                 (setq frameset--target-display (cons 'display
+                                                      (frame-parameter nil 'display))
+                       to-tty (null (cdr frameset--target-display))))
                ;; Time to restore frames and set up their minibuffers as they were.
                ;; We only skip a frame (thus deleting it) if either:
                ;; - we're switching displays, and the user chose the option to delete, or
                ;; - we're switching to tty, and the frame to restore is minibuffer-only.
                (unless (and frameset--target-display
-                            (or (eq force-display :delete)
+                            (or (eq force-display 'delete)
                                 (and to-tty
                                      (eq (cdr (assq 'minibuffer frame-cfg)) 'only))))
                  ;; To avoid duplicating frame ids after restoration, we note any
                  ;; existing frame whose id matches a frame configuration in the
                  ;; frameset.  Once the frame config is properly restored, we can
                  ;; reset the old frame's id to nil.
-                 (setq duplicate (and other-frames
-                                      (or (eq reuse-frames :keep) (consp reuse-frames))
-                                      (frameset-frame-with-id (frameset-cfg-id frame-cfg)
-                                                              other-frames)))
+                 (setq duplicate (frameset-frame-with-id (frameset-cfg-id frame-cfg)
+                                                         frames))
                  ;; Restore minibuffers.  Some of this stuff could be done in a filter
                  ;; function, but it would be messy because restoring minibuffers affects
                  ;; global state; it's best to do it here than add a bunch of global
@@ -1187,48 +1210,56 @@ All keyword parameters default to nil."
     ;; other frames are already visible (discussed in thread for bug#14841).
     (sit-for 0 t)
 
-    ;; Delete remaining frames, but do not fail if some resist being deleted.
-    (unless (eq reuse-frames :keep)
-      (dolist (frame (sort (nconc (if (listp reuse-frames) nil other-frames)
-                                 frameset--reuse-list)
-                          ;; Minibufferless frames must go first to avoid
-                          ;; errors when attempting to delete a frame whose
-                          ;; minibuffer window is used by another frame.
-                          #'frameset-minibufferless-first-p))
-       (condition-case err
-           (delete-frame frame)
-         (error
-          (delay-warning 'frameset (error-message-string err))))))
-    (setq frameset--reuse-list nil
-         frameset--target-display nil)
+    ;; Clean up the frame list
+    (when cleanup-frames
+      (let ((map nil)
+           (cleanup (if (eq cleanup-frames t)
+                        (lambda (frame action)
+                          (when (memq action '(:rejected :ignored))
+                            (delete-frame frame)))
+                      cleanup-frames)))
+       (maphash (lambda (frame _action) (push frame map)) frameset--action-map)
+       (dolist (frame (sort map
+                            ;; Minibufferless frames must go first to avoid
+                            ;; errors when attempting to delete a frame whose
+                            ;; minibuffer window is used by another frame.
+                            #'frameset-minibufferless-first-p))
+         (condition-case-unless-debug err
+             (funcall cleanup frame (gethash frame frameset--action-map))
+           (error
+            (delay-warning 'frameset (error-message-string err) :warning))))))
 
     ;; Make sure there's at least one visible frame.
-    (unless (or (daemonp) (visible-frame-list))
-      (make-frame-visible (car (frame-list))))))
+    (unless (or (daemonp)
+               (catch 'visible
+                 (maphash (lambda (frame _)
+                            (and (frame-live-p frame) (frame-visible-p frame)
+                                 (throw 'visible t)))
+                          frameset--action-map)))
+      (make-frame-visible (selected-frame)))))
 
 \f
 ;; Register support
 
+;;;###autoload
 (defun frameset--jump-to-register (data)
   "Restore frameset from DATA stored in register.
 Called from `jump-to-register'.  Internal use only."
-  (let ((fs (aref data 0))
-       reuse-frames iconify-list)
-    (if current-prefix-arg
-       ;; Reuse all frames and delete any left unused
-       (setq reuse-frames t)
-      ;; Reuse matching frames and leave others to be iconified
-      (setq iconify-list (frame-list))
-      (dolist (state (frameset-states fs))
-       (let ((frame (frameset-frame-with-id (frameset-cfg-id (car state))
-                                            iconify-list)))
-         (when frame
-           (push frame reuse-frames)
-           (setq iconify-list (delq frame iconify-list))))))
-    (frameset-restore fs
-                     :filters frameset-session-filter-alist
-                     :reuse-frames reuse-frames)
-    (mapc #'iconify-frame iconify-list))
+  (frameset-restore
+   (aref data 0)
+   :filters frameset-session-filter-alist
+   :reuse-frames (if current-prefix-arg t 'match)
+   :cleanup-frames (if current-prefix-arg
+                      ;; delete frames
+                      nil
+                    ;; iconify frames
+                    (lambda (frame action)
+                      (pcase action
+                        (`rejected (iconify-frame frame))
+                        ;; In the unexpected case that a frame was a candidate
+                        ;; (matching frame id) and yet not restored, remove it
+                        ;; because it is in fact a duplicate.
+                        (`ignored (delete-frame frame))))))
 
   ;; Restore selected frame, buffer and point.
   (let ((frame (frameset-frame-with-id (aref data 1)))
index 4263508f34d7bd18c6b986636bd57b8b6d914b30..cdf22ef256a86cace180aae3305a1ef924766aa6 100644 (file)
@@ -1,3 +1,22 @@
+2014-03-07  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-request-accept-article): Make respooling to nnimap
+       groups work again.
+
+2014-03-07  George McNinch  <gmcninch@gmail.com>  (tiny change)
+
+       * nnir.el (nnir-run-namazu): Parse namazu results that are larger than
+       999 correctly (i.e. "1,342").
+
+2014-03-07  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-update-files-total-fetched-for): Don't bug
+       out if the directory doesn't exist.
+
+2014-03-05  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-group.el (gnus-group-make-group): Clarify prompt.
+
 2014-02-22  Daniel Colascione  <dancol@dancol.org>
 
        * auth-source.el (auth-source-secrets-listify-pattern): New function.
 
 2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
 
-       * message.el (message-default-mail-headers):
+       * message.el (message-default-mail-headers)
        (message-default-headers): Carry the value mail-default-headers over
        into message-default-mail-headers, rather than message-default-headers.
 
 2002-08-07  Simon Josefsson  <jas@extundo.com>
 
        * sieve-manage.el (require): Use SASL, not RFC2104/MD5.
-       (sieve-manage-authenticators):
+       (sieve-manage-authenticators)
        (sieve-manage-authenticator-alist): Add some SASL mechs.
        (sieve-sasl-auth): New function.
-       (sieve-manage-cram-md5-auth):
+       (sieve-manage-cram-md5-auth)
        (sieve-manage-plain-auth): Rewrite using SASL library.
        (sieve-manage-digest-md5-p, sieve-manage-digest-md5-auth)
        (sieve-manage-scram-md5-p, sieve-manage-scram-md5-auth)
index e8a66bfbd43cbb9b83f3139fff3e1a4fc9d89ce2..540db9d29140a6dd88c0511a4acc4cafa8b3acd8 100644 (file)
 1998-08-26  Mike McEwan  <mike@lotusland.demon.co.uk>
 
        * gnus-sum.el (gnus-build-all-threads): `save-excursion' and
-       `set-buffer' back to `gnus-summary-buffer' in order to access
-       buffer-local variables.
+       `set-buffer' back to `gnus-summary-buffer' in order to access
+       buffer-local variables.
 
 1998-08-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 1998-07-11  Mike McEwan  <mike@lotusland.demon.co.uk>
 
        * gnus-agent.el (gnus-agent-fetch-headers): Note last fetched
-       headers per sesion to aid expiry in `headers only' groups.
+       headers per sesion to aid expiry in `headers only' groups.
 
        * gnus-agent.el (gnus-agent-expire): Update group info to add
-       expired articles to list of read articles and prevent
+       expired articles to list of read articles and prevent
        re-fetching.
 
 1998-07-12  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>
 
        * nnmail.el (nnmail-get-split-group): Don't regexp-quote
-       nnmail-procmail-suffix.
+       nnmail-procmail-suffix.
 
 1998-06-24  Kim-Minh Kaplan  <kaplan@sky.fr>
 
        (gnus-picons-setup-buffer): New function.
        (gnus-picons-set-buffer): Use them.
        (gnus-picons-display-x-face): Put back the `buf' binding: it is
-       needed when `gnus-picons-display-where' is not set to article.
-       Also move the X-Face to the left, near the address.  It seems more
-       logical.
+       needed when `gnus-picons-display-where' is not set to article.
+       Also move the X-Face to the left, near the address.  It seems more
+       logical.
 
 1998-02-28  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        (gnus-split-methods): Add default values for choices.
 
        * gnus-score.el (gnus-home-score-file): Add non-nil default for
-       function.
+       function.
        (gnus-home-adapt-file): Ditto.
 
        * gnus-sum.el (gnus-move-split-methods): Add default values for
 1997-12-05  Danny Siu  <dsiu@adobe.com>
 
        * nndoc.el (nndoc-babyl-body-begin): quote the regexp for the
-       string "*** EOOH ***" properly.
+       string "*** EOOH ***" properly.
        (nndoc-babyl-head-begin): Same as above.
 
 1997-12-14  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * nnmail.el (nnmail-file-coding-system): Use `raw-text' in
-       default.
+       default.
 
        * nnheader.el (nnheader-file-coding-system): Use `raw-text' in
-       default.
+       default.
 
 1997-12-06  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
 
 1997-10-16  Colin Rafferty  <craffert@ml.com>
 
        * message.el (message-make-fqdn): Made certain that user-mail is
-                 not nil.
+       not nil.
 
 1997-10-25  David S. Goldberg  <dsg@linus.mitre.org>
 
index 432aabbc4ad293fa886a9cfd53c1047e5d76757d..67525ee0c1b3e0e3da46b2fdc8f920fa19992934 100644 (file)
@@ -4121,8 +4121,8 @@ CLEAN is obsolete and ignored."
 (defun gnus-agent-group-covered-p (group)
   (gnus-agent-method-p (gnus-group-method group)))
 
-(defun gnus-agent-update-files-total-fetched-for
-  (group delta &optional method path)
+(defun gnus-agent-update-files-total-fetched-for (group delta
+                                                       &optional method path)
   "Update, or set, the total disk space used by the articles that the
 agent has fetched."
   (when gnus-agent-total-fetched-hashtb
@@ -4135,27 +4135,29 @@ agent has fetched."
                       (gnus-sethash path (make-list 3 0)
                                     gnus-agent-total-fetched-hashtb)))
            (file-name-coding-system nnmail-pathname-coding-system))
-       (when (listp delta)
-        (if delta
-            (let ((sum 0.0)
+       (when (file-exists-p path)
+        (when (listp delta)
+          (if delta
+              (let ((sum 0.0)
+                    file)
+                (while (setq file (pop delta))
+                  (incf sum (float (or (nth 7 (file-attributes
+                                               (nnheader-concat
+                                                path
+                                                (if (numberp file)
+                                                    (number-to-string file)
+                                                  file)))) 0))))
+                (setq delta sum))
+            (let ((sum (- (nth 2 entry)))
+                  (info (directory-files-and-attributes
+                         path nil "^-?[0-9]+$" t))
                   file)
-              (while (setq file (pop delta))
-                (incf sum (float (or (nth 7 (file-attributes
-                                             (nnheader-concat
-                                              path
-                                              (if (numberp file)
-                                                  (number-to-string file)
-                                                file)))) 0))))
-              (setq delta sum))
-          (let ((sum (- (nth 2 entry)))
-                (info (directory-files-and-attributes path nil "^-?[0-9]+$" t))
-                file)
-            (while (setq file (pop info))
-              (incf sum (float (or (nth 8 file) 0))))
-            (setq delta sum))))
+              (while (setq file (pop info))
+                (incf sum (float (or (nth 8 file) 0))))
+              (setq delta sum))))
 
-       (setq gnus-agent-need-update-total-fetched-for t)
-       (incf (nth 2 entry) delta)))))
+        (setq gnus-agent-need-update-total-fetched-for t)
+        (incf (nth 2 entry) delta))))))
 
 (defun gnus-agent-update-view-total-fetched-for
   (group agent-over &optional method path)
index eb8421c3a4b8a2f529cbc814261abb1c4a53b17b..d8260b404346b35239d7ce3c57dd495d4a5e2fc0 100644 (file)
@@ -2728,7 +2728,7 @@ server."
   (interactive
    (list
     (gnus-read-group "Group name: ")
-    (gnus-read-method "From method")))
+    (gnus-read-method "Select method for new group (use tab for completion)")))
 
   (when (stringp method)
     (setq method (or (gnus-server-to-method method) method)))
index 2dcdcd0a391e54a03462285549e7b049c623ffb7..2fc2dd6af79f9a531c07b5c547a60823cef6f2df 100644 (file)
@@ -1099,6 +1099,14 @@ If LIMIT, first try to limit the search to the N last articles."
          (nnimap-wait-for-response sequence))))))
 
 (deffoo nnimap-request-accept-article (group &optional server last)
+  (unless group
+    ;; We're respooling.  Find out where mail splitting would place
+    ;; this article.
+    (setq group
+         (caar
+          (nnmail-article-group
+           `(lambda (group)
+              (nnml-active-number group ,server))))))
   (setq group (nnimap-decode-gnus-group group))
   (when (nnimap-change-group nil server)
     (nnmail-check-syntax)
index 404cab114da7b1b20e69f5af643ce553f7a4cb35..5910cde1c3d1a145b25b7f864c8826532fc39210 100644 (file)
@@ -1487,7 +1487,7 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
 
       (goto-char (point-min))
       (while (re-search-forward
-              "^\\([0-9]+\\.\\).*\\((score: \\([0-9]+\\)\\))\n\\([^ ]+\\)"
+              "^\\([0-9,]+\\.\\).*\\((score: \\([0-9]+\\)\\))\n\\([^ ]+\\)"
               nil t)
         (setq score (match-string 3)
               group (file-name-directory (match-string 4))
index c772962f64ba33ffd5bd62da2f9025a74132171d..a186254123d99cf62e8ce6274d3d52898a76fd34 100644 (file)
@@ -69,109 +69,6 @@ The functions will receive the function name as argument.")
          ;; Return the text we displayed.
          (buffer-string))))))
 
-(defun help-split-fundoc (docstring def)
-  "Split a function DOCSTRING into the actual doc and the usage info.
-Return (USAGE . DOC) or nil if there's no usage info, where USAGE info
-is a string describing the argument list of DEF, such as
-\"(apply FUNCTION &rest ARGUMENTS)\".
-DEF is the function whose usage we're looking for in DOCSTRING."
-  ;; Functions can get the calling sequence at the end of the doc string.
-  ;; In cases where `function' has been fset to a subr we can't search for
-  ;; function's name in the doc string so we use `fn' as the anonymous
-  ;; function name instead.
-  (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring))
-    (cons (format "(%s%s"
-                 ;; Replace `fn' with the actual function name.
-                 (if (symbolp def) def "anonymous")
-                 (match-string 1 docstring))
-         (unless (zerop (match-beginning 0))
-            (substring docstring 0 (match-beginning 0))))))
-
-;; FIXME: Move to subr.el?
-(defun help-add-fundoc-usage (docstring arglist)
-  "Add the usage info to DOCSTRING.
-If DOCSTRING already has a usage info, then just return it unchanged.
-The usage info is built from ARGLIST.  DOCSTRING can be nil.
-ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
-  (unless (stringp docstring) (setq docstring ""))
-  (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring)
-          (eq arglist t))
-      docstring
-    (concat docstring
-           (if (string-match "\n?\n\\'" docstring)
-               (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
-             "\n\n")
-           (if (and (stringp arglist)
-                    (string-match "\\`([^ ]+\\(.*\\))\\'" arglist))
-               (concat "(fn" (match-string 1 arglist) ")")
-             (format "%S" (help-make-usage 'fn arglist))))))
-
-;; FIXME: Move to subr.el?
-(defun help-function-arglist (def &optional preserve-names)
-  "Return a formal argument list for the function DEF.
-IF PRESERVE-NAMES is non-nil, return a formal arglist that uses
-the same names as used in the original source code, when possible."
-  ;; Handle symbols aliased to other symbols.
-  (if (and (symbolp def) (fboundp def)) (setq def (indirect-function def)))
-  ;; If definition is a macro, find the function inside it.
-  (if (eq (car-safe def) 'macro) (setq def (cdr def)))
-  (cond
-   ((and (byte-code-function-p def) (listp (aref def 0))) (aref def 0))
-   ((eq (car-safe def) 'lambda) (nth 1 def))
-   ((eq (car-safe def) 'closure) (nth 2 def))
-   ((or (and (byte-code-function-p def) (integerp (aref def 0)))
-        (subrp def))
-    (or (when preserve-names
-          (let* ((doc (condition-case nil (documentation def) (error nil)))
-                 (docargs (if doc (car (help-split-fundoc doc nil))))
-                 (arglist (if docargs
-                              (cdar (read-from-string (downcase docargs)))))
-                 (valid t))
-            ;; Check validity.
-            (dolist (arg arglist)
-              (unless (and (symbolp arg)
-                           (let ((name (symbol-name arg)))
-                             (if (eq (aref name 0) ?&)
-                                 (memq arg '(&rest &optional))
-                               (not (string-match "\\." name)))))
-                (setq valid nil)))
-            (when valid arglist)))
-        (let* ((args-desc (if (not (subrp def))
-                              (aref def 0)
-                            (let ((a (subr-arity def)))
-                              (logior (car a)
-                                      (if (numberp (cdr a))
-                                          (lsh (cdr a) 8)
-                                        (lsh 1 7))))))
-               (max (lsh args-desc -8))
-               (min (logand args-desc 127))
-               (rest (logand args-desc 128))
-               (arglist ()))
-          (dotimes (i min)
-            (push (intern (concat "arg" (number-to-string (1+ i)))) arglist))
-          (when (> max min)
-            (push '&optional arglist)
-            (dotimes (i (- max min))
-              (push (intern (concat "arg" (number-to-string (+ 1 i min))))
-                    arglist)))
-          (unless (zerop rest) (push '&rest arglist) (push 'rest arglist))
-          (nreverse arglist))))
-   ((and (autoloadp def) (not (eq (nth 4 def) 'keymap)))
-    "[Arg list not available until function definition is loaded.]")
-   (t t)))
-
-;; FIXME: Move to subr.el?
-(defun help-make-usage (function arglist)
-  (cons (if (symbolp function) function 'anonymous)
-       (mapcar (lambda (arg)
-                 (if (not (symbolp arg)) arg
-                   (let ((name (symbol-name arg)))
-                     (cond
-                       ((string-match "\\`&" name) arg)
-                       ((string-match "\\`_" name)
-                        (intern (upcase (substring name 1))))
-                       (t (intern (upcase name)))))))
-               arglist)))
 
 ;; Could be this, if we make symbol-file do the work below.
 ;; (defun help-C-file-name (subr-or-var kind)
index f00accc370c40142395f48fb1f83ef4f13f26f5e..14dda6456cf3981b861471aa0aded0d710933958 100644 (file)
@@ -133,7 +133,9 @@ This function assumes that `standard-output' is the help buffer.
 It computes a message, and applies the optional argument FUNCTION to it.
 If FUNCTION is nil, it applies `message', thus displaying the message.
 In addition, this function sets up `help-return-method', which see, that
-specifies what to do when the user exits the help buffer."
+specifies what to do when the user exits the help buffer.
+
+Do not call this in the scope of `with-help-window'."
   (and (not (get-buffer-window standard-output))
        (let ((first-message
              (cond ((or
@@ -498,7 +500,10 @@ The optional argument PREFIX, if non-nil, should be a key sequence;
 then we display only bindings that start with that prefix."
   (let ((buf (current-buffer)))
     (with-help-window (help-buffer)
-      (describe-buffer-bindings buf prefix menus))))
+      ;; Be aware that `describe-buffer-bindings' puts its output into
+      ;; the current buffer.
+      (with-current-buffer (help-buffer)
+       (describe-buffer-bindings buf prefix menus)))))
 
 (defun where-is (definition &optional insert)
   "Print message listing key sequences that invoke the command DEFINITION.
@@ -1180,22 +1185,24 @@ Return VALUE."
 ;; providing the following additional twists:
 
 ;; (1) It puts the buffer in `help-mode' (via `help-mode-setup') and
-;; adds cross references (via `help-mode-finish').
+;;     adds cross references (via `help-mode-finish').
 
 ;; (2) It issues a message telling how to scroll and quit the help
-;; window (via `help-window-setup').
+;;     window (via `help-window-setup').
 
 ;; (3) An option (customizable via `help-window-select') to select the
-;; help window automatically.
+;;     help window automatically.
 
 ;; (4) A marker (`help-window-point-marker') to move point in the help
-;; window to an arbitrary buffer position.
-
-;; Note: It's usually always wrong to use `help-print-return-message' in
-;; the body of `with-help-window'.
+;;     window to an arbitrary buffer position.
 (defmacro with-help-window (buffer-name &rest body)
-  "Display buffer with name BUFFER-NAME in a help window evaluating BODY.
-Select help window if the current value of the user option
+  "Display buffer named BUFFER-NAME in a help window.
+Evaluate the forms in BODY with standard output bound to a buffer
+called BUFFER-NAME (creating it if it does not exist), put that
+buffer in `help-mode', display the buffer in a window (see
+`with-temp-buffer-window' for details) and issue a message how to
+deal with that \"help\" window when it's no more needed.  Select
+the help window if the current value of the user option
 `help-window-select' says so.  Return last value in BODY."
   (declare (indent 1) (debug t))
   `(progn
@@ -1217,6 +1224,113 @@ Select help window if the current value of the user option
     (if (stringp msg)
        (with-output-to-temp-buffer " *Char Help*"
          (princ msg)))))
+
+\f
+;; The following functions used to be in help-fns.el, which is not preloaded.
+;; But for various reasons, they are more widely needed, so they were
+;; moved to this file, which is preloaded.  http://debbugs.gnu.org/17001
+
+(defun help-split-fundoc (docstring def)
+  "Split a function DOCSTRING into the actual doc and the usage info.
+Return (USAGE . DOC) or nil if there's no usage info, where USAGE info
+is a string describing the argument list of DEF, such as
+\"(apply FUNCTION &rest ARGUMENTS)\".
+DEF is the function whose usage we're looking for in DOCSTRING."
+  ;; Functions can get the calling sequence at the end of the doc string.
+  ;; In cases where `function' has been fset to a subr we can't search for
+  ;; function's name in the doc string so we use `fn' as the anonymous
+  ;; function name instead.
+  (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring))
+    (cons (format "(%s%s"
+                 ;; Replace `fn' with the actual function name.
+                 (if (symbolp def) def "anonymous")
+                 (match-string 1 docstring))
+         (unless (zerop (match-beginning 0))
+            (substring docstring 0 (match-beginning 0))))))
+
+(defun help-add-fundoc-usage (docstring arglist)
+  "Add the usage info to DOCSTRING.
+If DOCSTRING already has a usage info, then just return it unchanged.
+The usage info is built from ARGLIST.  DOCSTRING can be nil.
+ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
+  (unless (stringp docstring) (setq docstring ""))
+  (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring)
+          (eq arglist t))
+      docstring
+    (concat docstring
+           (if (string-match "\n?\n\\'" docstring)
+               (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
+             "\n\n")
+           (if (and (stringp arglist)
+                    (string-match "\\`([^ ]+\\(.*\\))\\'" arglist))
+               (concat "(fn" (match-string 1 arglist) ")")
+             (format "%S" (help-make-usage 'fn arglist))))))
+
+(defun help-function-arglist (def &optional preserve-names)
+  "Return a formal argument list for the function DEF.
+IF PRESERVE-NAMES is non-nil, return a formal arglist that uses
+the same names as used in the original source code, when possible."
+  ;; Handle symbols aliased to other symbols.
+  (if (and (symbolp def) (fboundp def)) (setq def (indirect-function def)))
+  ;; If definition is a macro, find the function inside it.
+  (if (eq (car-safe def) 'macro) (setq def (cdr def)))
+  (cond
+   ((and (byte-code-function-p def) (listp (aref def 0))) (aref def 0))
+   ((eq (car-safe def) 'lambda) (nth 1 def))
+   ((eq (car-safe def) 'closure) (nth 2 def))
+   ((or (and (byte-code-function-p def) (integerp (aref def 0)))
+        (subrp def))
+    (or (when preserve-names
+          (let* ((doc (condition-case nil (documentation def) (error nil)))
+                 (docargs (if doc (car (help-split-fundoc doc nil))))
+                 (arglist (if docargs
+                              (cdar (read-from-string (downcase docargs)))))
+                 (valid t))
+            ;; Check validity.
+            (dolist (arg arglist)
+              (unless (and (symbolp arg)
+                           (let ((name (symbol-name arg)))
+                             (if (eq (aref name 0) ?&)
+                                 (memq arg '(&rest &optional))
+                               (not (string-match "\\." name)))))
+                (setq valid nil)))
+            (when valid arglist)))
+        (let* ((args-desc (if (not (subrp def))
+                              (aref def 0)
+                            (let ((a (subr-arity def)))
+                              (logior (car a)
+                                      (if (numberp (cdr a))
+                                          (lsh (cdr a) 8)
+                                        (lsh 1 7))))))
+               (max (lsh args-desc -8))
+               (min (logand args-desc 127))
+               (rest (logand args-desc 128))
+               (arglist ()))
+          (dotimes (i min)
+            (push (intern (concat "arg" (number-to-string (1+ i)))) arglist))
+          (when (> max min)
+            (push '&optional arglist)
+            (dotimes (i (- max min))
+              (push (intern (concat "arg" (number-to-string (+ 1 i min))))
+                    arglist)))
+          (unless (zerop rest) (push '&rest arglist) (push 'rest arglist))
+          (nreverse arglist))))
+   ((and (autoloadp def) (not (eq (nth 4 def) 'keymap)))
+    "[Arg list not available until function definition is loaded.]")
+   (t t)))
+
+(defun help-make-usage (function arglist)
+  (cons (if (symbolp function) function 'anonymous)
+       (mapcar (lambda (arg)
+                 (if (not (symbolp arg)) arg
+                   (let ((name (symbol-name arg)))
+                     (cond
+                       ((string-match "\\`&" name) arg)
+                       ((string-match "\\`_" name)
+                        (intern (upcase (substring name 1))))
+                       (t (intern (upcase name)))))))
+               arglist)))
+
 \f
 (provide 'help)
 
index 16948df96b0fe6a59d0e62a4104753108f0ff500..5c23f49176158bedb4e85d4a0027dd723397819d 100644 (file)
@@ -95,12 +95,12 @@ as that will override any bit grouping options set here."
 
 (defface hexl-address-region
   '((t (:inherit header-line)))
-  "Face used in address area of hexl-mode buffer."
+  "Face used in address area of Hexl mode buffer."
   :group 'hexl)
 
 (defface hexl-ascii-region
   '((t (:inherit header-line)))
-  "Face used in ascii area of hexl-mode buffer."
+  "Face used in ASCII area of Hexl mode buffer."
   :group 'hexl)
 
 (defvar hexl-max-address 0
@@ -282,10 +282,10 @@ using the function `hexlify-buffer'.
 Each line in the buffer has an \"address\" (displayed in hexadecimal)
 representing the offset into the file that the characters on this line
 are at and 16 characters from the file (displayed as hexadecimal
-values grouped every `hexl-bits' bits) and as their ASCII values.
+values grouped every `hexl-bits' bits, and as their ASCII values).
 
 If any of the characters (displayed as ASCII characters) are
-unprintable (control or meta characters) they will be replaced as
+unprintable (control or meta characters) they will be replaced by
 periods.
 
 If `hexl-mode' is invoked with an argument the buffer is assumed to be
@@ -309,8 +309,8 @@ A sample format:
   000000b0: 7461 626c 6520 6368 6172 6163 7465 7220  table character
   000000c0: 7265 6769 6f6e 2e0a                      region..
 
-Movement is as simple as movement in a normal Emacs text buffer.  Most
-cursor movement bindings are the same: use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line]
+Movement is as simple as movement in a normal Emacs text buffer.
+Most cursor movement bindings are the same: use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line]
 to move the cursor left, right, down, and up.
 
 Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are
@@ -335,7 +335,7 @@ into the buffer at the current point.
 \\[hexl-insert-decimal-char] will insert a given decimal value (if it is between 0 and 255)
 into the buffer at the current point.
 
-\\[hexl-mode-exit] will exit hexl-mode.
+\\[hexl-mode-exit] will exit `hexl-mode'.
 
 Note: saving the file with any of the usual Emacs commands
 will actually convert it back to binary format while saving.
@@ -565,7 +565,7 @@ This function is intended to be used as eldoc callback."
     (format "Current address is %d/0x%08x" addr addr)))
 
 (defun hexl-ascii-start-column ()
-  "Column at which the ascii portion of the hexl display starts."
+  "Column at which the ASCII portion of the hexl display starts."
   (+ 43 (/ 128 hexl-bits)))
 
 (defun hexl-address-to-marker (address)
@@ -586,7 +586,7 @@ Signal error if ADDRESS is out of range."
   (goto-char (hexl-address-to-marker address)))
 
 (defun hexl-goto-hex-address (hex-address)
-  "Go to hexl-mode address (hex string) HEX-ADDRESS.
+  "Go to Hexl mode address (hex string) HEX-ADDRESS.
 Signal error if HEX-ADDRESS is out of range."
   (interactive "sHex Address: ")
   (hexl-goto-address (hexl-hex-string-to-integer hex-address)))
@@ -615,17 +615,17 @@ Signal error if HEX-ADDRESS is out of range."
 ;; move point functions
 
 (defun hexl-backward-char (arg)
-  "Move to left ARG bytes (right if ARG negative) in hexl-mode."
+  "Move to left ARG bytes (right if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-goto-address (- (hexl-current-address) arg)))
 
 (defun hexl-forward-char (arg)
-  "Move to right ARG bytes (left if ARG negative) in hexl-mode."
+  "Move to right ARG bytes (left if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-goto-address (+ (hexl-current-address) arg)))
 
 (defun hexl-backward-short (arg)
-  "Move to left ARG shorts (right if ARG negative) in hexl-mode."
+  "Move to left ARG shorts (right if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-goto-address (let ((address (hexl-current-address)))
                       (if (< arg 0)
@@ -657,12 +657,12 @@ Signal error if HEX-ADDRESS is out of range."
                       address)))
 
 (defun hexl-forward-short (arg)
-  "Move to right ARG shorts (left if ARG negative) in hexl-mode."
+  "Move to right ARG shorts (left if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-backward-short (- arg)))
 
 (defun hexl-backward-word (arg)
-  "Move to left ARG words (right if ARG negative) in hexl-mode."
+  "Move to left ARG words (right if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-goto-address (let ((address (hexl-current-address)))
                       (if (< arg 0)
@@ -694,18 +694,18 @@ Signal error if HEX-ADDRESS is out of range."
                       address)))
 
 (defun hexl-forward-word (arg)
-  "Move to right ARG words (left if ARG negative) in hexl-mode."
+  "Move to right ARG words (left if ARG negative) in Hexl mode."
   (interactive "p")
   (hexl-backward-word (- arg)))
 
 (defun hexl-previous-line (arg)
-  "Move vertically up ARG lines [16 bytes] (down if ARG negative) in hexl-mode.
+  "Move vertically up ARG lines [16 bytes] (down if ARG negative) in Hexl mode.
 If there is no byte at the target address move to the last byte in that line."
   (interactive "p")
   (hexl-next-line (- arg)))
 
 (defun hexl-next-line (arg)
-  "Move vertically down ARG lines [16 bytes] (up if ARG negative) in hexl-mode.
+  "Move vertically down ARG lines [16 bytes] (up if ARG negative) in Hexl mode.
 If there is no byte at the target address move to the last byte in that line."
   (interactive "p")
   (hexl-goto-address (let ((address (+ (hexl-current-address) (* arg 16))))
@@ -739,12 +739,12 @@ With prefix arg N, puts point N bytes of the way from the true beginning."
   (hexl-goto-address (- hexl-max-address (1- arg))))
 
 (defun hexl-beginning-of-line ()
-  "Goto beginning of line in hexl mode."
+  "Goto beginning of line in Hexl mode."
   (interactive)
   (goto-char (+ (* (/ (point) (hexl-line-displen)) (hexl-line-displen)) 11)))
 
 (defun hexl-end-of-line ()
-  "Goto end of line in hexl mode."
+  "Goto end of line in Hexl mode."
   (interactive)
   (hexl-goto-address (let ((address (logior (hexl-current-address) 15)))
                       (if (> address hexl-max-address)
@@ -1099,7 +1099,7 @@ This function is assumed to be used as callback function for `hl-line-mode'."
     ))
 
 (defun hexl-mode-ruler ()
-  "Return a string ruler for hexl mode."
+  "Return a string ruler for Hexl mode."
   (let* ((highlight (mod (hexl-current-address) 16))
         (s (cdr (assq hexl-bits hexl-rulers)))
         (pos 0))
index eb930c5d8fa2b2650f6a911a1e0399df12755f77..0960aeed618fb13d91be18f3e585e25e5a7633ce 100644 (file)
@@ -333,7 +333,7 @@ enable the mode if ARG is omitted or nil.
 
 When Highlight Changes is enabled, changes are marked with a text
 property.  Normally they are displayed in a distinctive face, but
-command \\[highlight-changes-visible-mode] can be used to toggles
+command \\[highlight-changes-visible-mode] can be used to toggle
 this on and off.
 
 Other functions for buffers in this mode include:
@@ -379,7 +379,7 @@ in a distinctive face.
 The default value can be customized with variable
 `highlight-changes-visibility-initial-state'.
 
-This command does not itself set highlight-changes mode."
+This command does not itself set Highlight Changes mode."
 
   t            ;; init-value
   nil          ;; lighter
@@ -455,7 +455,7 @@ Otherwise, this list will be constructed when needed from
   "Call function FUNC for each region used by Highlight Changes mode.
 If START-POSITION is nil, (point-min) is used.
 If END-POSITION is nil, (point-max) is used.
-FUNC is called with 3 params: PROPERTY START STOP."
+FUNC is called with three params: PROPERTY START STOP."
   (let ((start (or start-position (point-min)))
        (limit (or end-position (point-max)))
        prop end)
@@ -470,8 +470,8 @@ FUNC is called with 3 params: PROPERTY START STOP."
 (defun hilit-chg-display-changes (&optional beg end)
   "Display face information for Highlight Changes mode.
 
-An overlay from BEG to END containing a change face is added from the
-information in the text property of type `hilit-chg'.
+An overlay from BEG to END containing a change face is added
+from the information in the text property of type `hilit-chg'.
 
 This is the opposite of `hilit-chg-hide-changes'."
   (hilit-chg-map-changes 'hilit-chg-make-ov beg end))
@@ -731,7 +731,7 @@ You can automatically rotate colors when the buffer is saved by adding
 this function to `write-file-functions' as a buffer-local value.  To do
 this, eval the following in the buffer to be saved:
 
-  \(add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)"
+  (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t)"
   (interactive)
   (when (and highlight-changes-mode highlight-changes-visible-mode)
     (let ((modified (buffer-modified-p))
@@ -1022,6 +1022,12 @@ This is called when `global-highlight-changes-mode' is turned on."
 ;;
 ;; ================== end of debug ===============
 
+(defun hilit-chg-unload-function ()
+  "Unload the Highlight Changes library."
+  (global-hi-lock-mode -1)
+  ;; continue standard unloading
+  nil)
+
 (provide 'hilit-chg)
 
 ;;; hilit-chg.el ends here
index 6501339c4add5f1611ff8bc2ba18851a1c355fe6..1282654899ff335813e15d4b76b9a43ede4b62d9 100644 (file)
@@ -1709,7 +1709,7 @@ FILE, if set, is the file name."
     ;; think we only need to relocate the hfy-endl property, as the hfy-linkp
     ;; property has already served its main purpose by this point.
     ;;(message "mapcar over the CSS-MAP")
-    (message "invis-ranges:\n%S" invis-ranges)
+    ;; (message "invis-ranges:\n%S" invis-ranges)
     (dolist (point-face css-map)
       (let ((pt (car point-face))
             (fn (cdr point-face))
index 18bdd899e6e7f1e31715c42d450609e123d4dab9..0c5a2babd8623bd6426555a631f599ecd263f23c 100644 (file)
@@ -61,7 +61,7 @@
  'icomplete-prospects-length 'icomplete-prospects-height "23.1")
 
 (defcustom icomplete-separator " | "
-  "String used by icomplete to separate alternatives in the minibuffer."
+  "String used by Icomplete to separate alternatives in the minibuffer."
   :type 'string
   :version "24.4")
 
@@ -77,7 +77,7 @@ When nil, show candidates in full."
   :version "24.4")
 
 (defcustom icomplete-with-completion-tables t
-  "Specialized completion tables with which icomplete should operate.
+  "Specialized completion tables with which Icomplete should operate.
 If this is t, Icomplete operates on all tables.
 Otherwise this should be a list of the completion tables (e.g.,
 `internal-complete-buffer') on which Icomplete should operate."
@@ -87,7 +87,7 @@ Otherwise this should be a list of the completion tables (e.g.,
                 (repeat function)))
 
 (defface icomplete-first-match '((t :weight bold))
-  "Face used by icomplete for highlighting first match."
+  "Face used by Icomplete for highlighting first match."
   :version "24.4")
 
 ;;;_* User Customization variables
@@ -109,7 +109,7 @@ See `icomplete-delay-completions-threshold'."
   :type 'integer)
 
 (defcustom icomplete-max-delay-chars 3
-  "Maximum number of initial chars to apply icomplete compute delay."
+  "Maximum number of initial chars to apply `icomplete-compute-delay'."
   :type 'integer)
 
 (defvar icomplete-in-buffer nil
@@ -118,12 +118,12 @@ See `icomplete-delay-completions-threshold'."
 (defcustom icomplete-minibuffer-setup-hook nil
   "Icomplete-specific customization of minibuffer setup.
 
-This hook is run during minibuffer setup if icomplete is active.
-It is intended for use in customizing icomplete for interoperation
+This hook is run during minibuffer setup if Icomplete is active.
+It is intended for use in customizing Icomplete for interoperation
 with other features and packages.  For instance:
 
-  \(add-hook 'icomplete-minibuffer-setup-hook
-            \(lambda () (setq-local max-mini-window-height 3)))
+  (add-hook 'icomplete-minibuffer-setup-hook
+            (lambda () (setq-local max-mini-window-height 3)))
 
 will constrain Emacs to a maximum minibuffer height of 3 lines when
 icompletion is occurring."
@@ -197,7 +197,7 @@ the string you have typed.  See `icomplete-completions' for a
 description of how prospective completions are displayed.
 
 For more information, see Info node `(emacs)Icomplete'.
-For options you can set, `M-x customize-group icomplete'.
+For options you can set, `\\[customize-group] icomplete'.
 
 You can use the following key bindings to navigate and select
 completions:
@@ -295,16 +295,16 @@ Usually run by inclusion in `minibuffer-setup-hook'."
 
 ;;;_ > icomplete-tidy ()
 (defun icomplete-tidy ()
-  "Remove completions display \(if any) prior to new user input.
-Should be run in on the minibuffer `pre-command-hook'.  See `icomplete-mode'
-and `minibuffer-setup-hook'."
+  "Remove completions display (if any) prior to new user input.
+Should be run in on the minibuffer `pre-command-hook'.
+See `icomplete-mode' and `minibuffer-setup-hook'."
   (delete-overlay icomplete-overlay))
 
 ;;;_ > icomplete-exhibit ()
 (defun icomplete-exhibit ()
-  "Insert icomplete completions display.
-Should be run via minibuffer `post-command-hook'.  See `icomplete-mode'
-and `minibuffer-setup-hook'."
+  "Insert Icomplete completions display.
+Should be run via minibuffer `post-command-hook'.
+See `icomplete-mode' and `minibuffer-setup-hook'."
   (when (and icomplete-mode
              (icomplete-simple-completing-p)) ;Shouldn't be necessary.
     (save-excursion
@@ -352,17 +352,17 @@ The display is updated with each minibuffer keystroke during
 minibuffer completion.
 
 Prospective completion suffixes (if any) are displayed, bracketed by
-one of \(), \[], or \{} pairs.  The choice of brackets is as follows:
+one of (), [], or {} pairs.  The choice of brackets is as follows:
 
-  \(...) - a single prospect is identified and matching is enforced,
-  \[...] - a single prospect is identified but matching is optional, or
-  \{...} - multiple prospects, separated by commas, are indicated, and
+  (...) - a single prospect is identified and matching is enforced,
+  [...] - a single prospect is identified but matching is optional, or
+  {...} - multiple prospects, separated by commas, are indicated, and
           further input is required to distinguish a single one.
 
 If there are multiple possibilities, `icomplete-separator' separates them.
 
 The displays for unambiguous matches have ` [Matched]' appended
-\(whether complete or not), or ` \[No matches]', if no eligible
+\(whether complete or not), or ` [No matches]', if no eligible
 matches exist."
   (let* ((minibuffer-completion-table candidates)
         (minibuffer-completion-predicate predicate)
@@ -392,6 +392,7 @@ matches exist."
              ;; a prefix of most, or something else.
             (compare (compare-strings name nil nil
                                       most nil nil completion-ignore-case))
+            (ellipsis (if (char-displayable-p ?…) "…" "..."))
             (determ (unless (or (eq t compare) (eq t most-try)
                                 (= (setq compare (1- (abs compare)))
                                    (length most)))
@@ -402,14 +403,14 @@ matches exist."
                                 (substring most compare))
                                 ;; Don't bother truncating if it doesn't gain
                                 ;; us at least 2 columns.
-                               ((< compare 3) most)
-                               (t (concat "…" (substring most compare))))
+                               ((< compare (+ 2 (string-width ellipsis))) most)
+                               (t (concat ellipsis (substring most compare))))
                               close-bracket)))
             ;;"-prospects" - more than one candidate
             (prospects-len (+ (string-width
                                (or determ (concat open-bracket close-bracket)))
                               (string-width icomplete-separator)
-                              3 ;; take {…} into account
+                              (+ 2 (string-width ellipsis)) ;; take {…} into account
                               (string-width (buffer-string))))
              (prospects-max
               ;; Max total length to use, including the minibuffer content.
@@ -482,7 +483,7 @@ matches exist."
            (concat determ
                    "{"
                    (mapconcat 'identity prospects icomplete-separator)
-                   (and limit (concat icomplete-separator "…"))
+                   (and limit (concat icomplete-separator ellipsis))
                    "}")
          (concat determ " [Matched]"))))))
 
index 9267274e0dbc4df3da4b5b6e5ca99b6f5d322791..b16ab1f91a6d7fcca7b60650afd3b70cd52c0e3c 100644 (file)
 ;;
 ;; The standard way of completion with Unix-shells and Emacs is to insert a
 ;; PREFIX and then hitting TAB (or another completion key).  Cause of this
-;; behavior has become second nature to a lot of Emacs users `ido' offers in
+;; behavior has become second nature to a lot of Emacs users, Ido offers in
 ;; addition to the default substring-matching-method (look above) also the
 ;; prefix-matching-method.  The kind of matching is the only difference to
 ;; the description of the substring-matching above.
 ;; Customization
 ;; -------------
 ;;
-;; Customize the `ido' group to change the `ido' functionality.
+;; Customize the Ido group to change the Ido functionality.
 ;;
 ;; To modify the keybindings, use the ido-setup-hook.  For example:
 ;;(add-hook 'ido-setup-hook 'ido-my-keys)
 ;; If you don't want to rely on the `ido-everywhere' functionality,
 ;; ido-read-buffer, ido-read-file-name, and ido-read-directory-name
 ;; can be used by other packages to read a buffer name, a file name,
-;; or a directory name in the `ido' way.
+;; or a directory name in the Ido way.
 
 ;;; Acknowledgments
 
 (defcustom ido-mode nil
   "Determines for which buffer/file Ido should be enabled.
 The following values are possible:
-- `buffer': Turn only on ido buffer behavior (switching, killing,
+- `buffer': Turn only on Ido buffer behavior (switching, killing,
   displaying...)
-- `file': Turn only on ido file behavior (finding, writing, inserting...)
-- `both': Turn on ido buffer and file behavior.
--  nil: Turn off any ido switching.
+- `file': Turn only on Ido file behavior (finding, writing, inserting...)
+- `both': Turn on Ido buffer and file behavior.
+-  nil: Turn off any Ido switching.
 
 Setting this variable directly does not take effect;
 use either \\[customize] or the function `ido-mode'."
@@ -467,7 +467,7 @@ See `ido-default-file-method' for details."
     :group 'ido)
 
 (defcustom ido-enable-flex-matching nil
-  "Non-nil means that `ido' will do flexible string matching.
+  "Non-nil means that Ido will do flexible string matching.
 Flexible matching means that if the entered string does not
 match any item, any item containing the entered characters
 in the given sequence will match."
@@ -476,8 +476,8 @@ in the given sequence will match."
 
 
 (defcustom ido-enable-regexp nil
-  "Non-nil means that `ido' will do regexp matching.
-Value can be toggled within `ido' using `ido-toggle-regexp'."
+  "Non-nil means that Ido will do regexp matching.
+Value can be toggled within Ido using `ido-toggle-regexp'."
   :type 'boolean
   :group 'ido)
 
@@ -485,7 +485,7 @@ Value can be toggled within `ido' using `ido-toggle-regexp'."
   "Non-nil means only match if the entered text is a prefix of file name.
 This behavior is like the standard Emacs completion.
 If nil, match if the entered text is an arbitrary substring.
-Value can be toggled within `ido' using `ido-toggle-prefix'."
+Value can be toggled within Ido using `ido-toggle-prefix'."
   :type 'boolean
   :group 'ido)
 
@@ -499,7 +499,7 @@ as first char even if `ido-enable-prefix' is nil."
 ;; See http://debbugs.gnu.org/2042 for more info.
 (defcustom ido-buffer-disable-smart-matches t
   "Non-nil means not to re-order matches for buffer switching.
-By default, ido arranges matches in the following order:
+By default, Ido arranges matches in the following order:
 
   full-matches > suffix matches > prefix matches > remaining matches
 
@@ -564,7 +564,7 @@ the frame width."
   :group 'ido)
 
 (defcustom ido-enable-last-directory-history t
-  "Non-nil means that `ido' will remember latest selected directory names.
+  "Non-nil means that Ido will remember latest selected directory names.
 See `ido-last-directory-list' and `ido-save-directory-list-file'."
   :type 'boolean
   :group 'ido)
@@ -585,7 +585,7 @@ the `ido-work-directory-list' list."
 
 
 (defcustom ido-use-filename-at-point nil
-  "Non-nil means that ido shall look for a filename at point.
+  "Non-nil means that Ido shall look for a filename at point.
 May use `ffap-guesser' to guess whether text at point is a filename.
 If found, use that as the starting point for filename selection."
   :type '(choice
@@ -603,38 +603,38 @@ If found, call `find-file-at-point' to visit it."
 
 
 (defcustom ido-enable-tramp-completion t
-  "Non-nil means that ido shall perform tramp method and server name completion.
+  "Non-nil means that Ido shall perform tramp method and server name completion.
 A tramp file name uses the following syntax: /method:user@host:filename."
   :type 'boolean
   :group 'ido)
 
 (defcustom ido-record-ftp-work-directories t
-  "Non-nil means record ftp file names in the work directory list."
+  "Non-nil means record FTP file names in the work directory list."
   :type 'boolean
   :group 'ido)
 
 (defcustom ido-merge-ftp-work-directories nil
-  "If nil, merging ignores ftp file names in the work directory list."
+  "If nil, merging ignores FTP file names in the work directory list."
   :type 'boolean
   :group 'ido)
 
 (defcustom ido-cache-ftp-work-directory-time 1.0
-  "Maximum time to cache contents of an ftp directory (in hours).
+  "Maximum time to cache contents of an FTP directory (in hours).
 \\<ido-file-completion-map>
 Use \\[ido-reread-directory] in prompt to refresh list.
-If zero, ftp directories are not cached."
+If zero, FTP directories are not cached."
   :type 'number
   :group 'ido)
 
 (defcustom ido-slow-ftp-hosts nil
-  "List of slow ftp hosts where ido prompting should not be used.
-If an ftp host is on this list, ido automatically switches to the non-ido
+  "List of slow FTP hosts where Ido prompting should not be used.
+If an FTP host is on this list, Ido automatically switches to the non-Ido
 equivalent function, e.g. `find-file' rather than `ido-find-file'."
   :type '(repeat string)
   :group 'ido)
 
 (defcustom ido-slow-ftp-host-regexps nil
-  "List of regexps matching slow ftp hosts (see `ido-slow-ftp-hosts')."
+  "List of regexps matching slow FTP hosts (see `ido-slow-ftp-hosts')."
   :type '(repeat regexp)
   :group 'ido)
 
@@ -726,16 +726,16 @@ See also `ido-dir-file-cache' and `ido-save-directory-list-file'."
   :group 'ido)
 
 (defcustom ido-max-directory-size nil
-  "Maximum size (in bytes) for directories to use ido completion.
+  "Maximum size (in bytes) for directories to use Ido completion.
 \\<ido-completion-map>
-If you enter a directory with a size larger than this size, ido will
+If you enter a directory with a size larger than this size, Ido will
 not provide the normal completion.  To show the completions, use \\[ido-toggle-ignore]."
   :type '(choice (const :tag "No limit" nil)
                 (integer :tag "Size in bytes" 30000))
   :group 'ido)
 
 (defcustom ido-rotate-file-list-default nil
-  "Non-nil means that `ido' will always rotate file list to get default in front."
+  "Non-nil means that Ido will always rotate file list to get default in front."
   :type 'boolean
   :group 'ido)
 
@@ -762,21 +762,23 @@ ask user whether to create buffer, or 'never to never create new buffer."
   :group 'ido)
 
 (defcustom ido-setup-hook  nil
-  "Hook run after the ido variables and keymap have been setup.
+  "Hook run after the Ido variables and keymap have been setup.
 The dynamic variable `ido-cur-item' contains the current type of item that
-is read by ido; possible values are file, dir, buffer, and list.
+is read by Ido; possible values are file, dir, buffer, and list.
 Additional keys can be defined in `ido-completion-map'."
   :type 'hook
   :group 'ido)
 
 (defcustom ido-separator nil
-  "String used by ido to separate the alternatives in the minibuffer.
-Obsolete.  Set 3rd element of `ido-decorations' instead."
+  "String used by Ido to separate the alternatives in the minibuffer."
   :type '(choice string (const nil))
   :group 'ido)
+(make-obsolete-variable 'ido-separator
+                       "set 3rd element of `ido-decorations' instead." nil)
 
-(defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]")
-  "List of strings used by ido to display the alternatives in the minibuffer.
+(defcustom ido-decorations '("{" "}" " | " " | ..." "[" "]" " [No match]"
+                            " [Matched]" " [Not readable]" " [Too big]" " [Confirm]")
+  "List of strings used by Ido to display the alternatives in the minibuffer.
 There are between 11 and 13 elements in this list:
 1st and 2nd elements are used as brackets around the prospect list,
 3rd element is the separator between prospects (ignored if
@@ -820,19 +822,19 @@ enabled if this variable is configured to a non-nil value."
   :group 'ido)
 
 (defcustom ido-use-faces t
-  "Non-nil means use ido faces to highlighting first match, only match and
+  "Non-nil means use Ido faces to highlighting first match, only match and
 subdirs in the alternatives."
   :type 'boolean
   :group 'ido)
 
 (defface ido-first-match  '((t :weight bold))
-  "Face used by ido for highlighting first match."
+  "Face used by Ido for highlighting first match."
   :group 'ido)
 
 (defface ido-only-match  '((((class color))
                            :foreground "ForestGreen")
                           (t :slant italic))
-  "Face used by ido for highlighting only match."
+  "Face used by Ido for highlighting only match."
   :group 'ido)
 
 (defface ido-subdir  '((((min-colors 88) (class color))
@@ -840,11 +842,11 @@ subdirs in the alternatives."
                       (((class color))
                        :foreground "red")
                       (t :underline t))
-  "Face used by ido for highlighting subdirs in the alternatives."
+  "Face used by Ido for highlighting subdirs in the alternatives."
   :group 'ido)
 
 (defface ido-virtual '((t :inherit font-lock-builtin-face))
-  "Face used by ido for matching virtual buffer names."
+  "Face used by Ido for matching virtual buffer names."
   :version "24.1"
   :group 'ido)
 
@@ -853,7 +855,7 @@ subdirs in the alternatives."
                         (((class color))
                          :foreground "yellow" :background "red" :width condensed)
                         (t :inverse-video t))
-  "Face used by ido for highlighting its indicators."
+  "Face used by Ido for highlighting its indicators."
   :group 'ido)
 
 (defface ido-incomplete-regexp
@@ -901,7 +903,7 @@ The following variables are available, but should not be changed:
   :group 'ido)
 
 (defvar ido-rewrite-file-prompt-rules nil
-  "Alist of rewriting rules for directory names in ido prompts.
+  "Alist of rewriting rules for directory names in Ido prompts.
 A list of elements of the form (FROM . TO) or (FROM . FUNC), each
 meaning to rewrite the directory name if matched by FROM by either
 substituting the matched string by TO or calling the function FUNC
@@ -911,7 +913,7 @@ also modify the dynamic variables described for the variable
 `ido-rewrite-file-prompt-functions'.")
 
 (defcustom ido-completion-buffer "*Ido Completions*"
-  "Name of completion buffer used by ido.
+  "Name of completion buffer used by Ido.
 Set to nil to disable completion buffers popping up."
   :type 'string
   :group 'ido)
@@ -934,40 +936,37 @@ See documentation of `walk-windows' for useful values."
 (defcustom ido-minibuffer-setup-hook nil
   "Ido-specific customization of minibuffer setup.
 
-This hook is run during minibuffer setup if `ido' is active.
-It is intended for use in customizing ido for interoperation
+This hook is run during minibuffer setup if Ido is active.
+It is intended for use in customizing Ido for interoperation
 with other packages.  For instance:
 
-  \(add-hook 'ido-minibuffer-setup-hook
-           \(function
-            \(lambda ()
-              \(make-local-variable 'max-mini-window-height)
-              \(setq max-mini-window-height 3))))
+  (add-hook 'ido-minibuffer-setup-hook
+           (lambda () (setq-local max-mini-window-height 3)))
 
 will constrain Emacs to a maximum minibuffer height of 3 lines when
-ido is running.  Copied from `icomplete-minibuffer-setup-hook'."
+Ido is running.  Copied from `icomplete-minibuffer-setup-hook'."
   :type 'hook
   :group 'ido)
 
 (defcustom ido-save-directory-list-file
   (locate-user-emacs-file "ido.last" ".ido.last")
-  "File in which the ido state is saved between invocations.
+  "File in which the Ido state is saved between invocations.
 Variables stored are: `ido-last-directory-list', `ido-work-directory-list',
 `ido-work-file-list', and `ido-dir-file-cache'.
-Must be set before enabling ido mode."
+Must be set before enabling Ido mode."
   :version "24.4"                       ; added locate-user-emacs-file
   :type 'string
   :group 'ido)
 
 (defcustom ido-read-file-name-as-directory-commands '()
-  "List of commands which uses `read-file-name' to read a directory name.
+  "List of commands which use `read-file-name' to read a directory name.
 When `ido-everywhere' is non-nil, the commands in this list will read
 the directory using `ido-read-directory-name'."
   :type '(repeat symbol)
   :group 'ido)
 
 (defcustom ido-read-file-name-non-ido '()
-  "List of commands which shall not read file names the ido way.
+  "List of commands which shall not read file names the Ido way.
 When `ido-everywhere' is non-nil, the commands in this list will read
 the file name using normal `read-file-name' style."
   :type '(repeat symbol)
@@ -984,19 +983,19 @@ The fallback command is passed as an argument to the functions."
 ;; Persistent variables
 
 (defvar ido-completion-map nil
-  "Currently active keymap for ido commands.")
+  "Currently active keymap for Ido commands.")
 
 (defvar ido-common-completion-map nil
-  "Keymap for all ido commands.")
+  "Keymap for all Ido commands.")
 
 (defvar ido-file-completion-map nil
-  "Keymap for ido file commands.")
+  "Keymap for Ido file commands.")
 
 (defvar ido-file-dir-completion-map nil
-  "Keymap for ido file and directory commands.")
+  "Keymap for Ido file and directory commands.")
 
 (defvar ido-buffer-completion-map nil
-  "Keymap for ido buffer commands.")
+  "Keymap for Ido buffer commands.")
 
 (defvar  ido-file-history nil
   "History of files selected using `ido-find-file'.")
@@ -1024,8 +1023,8 @@ at the front of this list.")
 Each element in the list is of the form (DIR (MTIME) FILE...).")
 
 (defvar ido-ignore-item-temp-list nil
-  "List of items to ignore in current ido invocation.
-Intended to be let-bound by functions which call ido repeatedly.
+  "List of items to ignore in current Ido invocation.
+Intended to be let-bound by functions which call Ido repeatedly.
 Should never be set permanently.")
 
 ;; Temporary storage
@@ -1045,19 +1044,19 @@ Copied from `icomplete-eoinput'.")
   "Non-nil means we are rotating list of matches.")
 
 (defvar ido-text nil
-  "Stores the users string as it is typed in.")
+  "Stores the user's string as it is typed in.")
 
 (defvar ido-text-init nil
-  "The initial string for the users string it is typed in.")
+  "The initial string for the user's string it is typed in.")
 
 (defvar ido-input-stack nil
-  "Stores the users strings when user hits M-b/M-f.")
+  "Stores the user's strings when user hits M-b/M-f.")
 
 (defvar ido-matches nil
   "List of files currently matching `ido-text'.")
 
 (defvar ido-report-no-match t
-  "Report [No Match] when no completions matches `ido-text'.")
+  "Report \"[No Match]\" when no completions matches `ido-text'.")
 
 (defvar ido-exit nil
   "Flag to monitor how `ido-find-file' exits.
@@ -1071,8 +1070,8 @@ selected.")
   "Delay timer for auto merge.")
 
 (defvar ido-use-mycompletion-depth 0
-  "Non-nil means use `ido' completion feedback.
-Is set by ido functions to the current `minibuffer-depth',
+  "Non-nil means use Ido completion feedback.
+Is set by Ido functions to the current `minibuffer-depth',
 so that it doesn't interfere with other minibuffer usage.")
 
 (defvar ido-incomplete-regexp nil
@@ -1283,7 +1282,8 @@ Only used if `ido-use-virtual-buffers' is non-nil.")
 (defun ido-is-ftp-directory (&optional dir)
   (string-match
    (if ido-enable-tramp-completion
-       "\\`/[^/:][^/:]+:"  ;; like tramp-file-name-regexp-unified, but doesn't match single drive letters
+       ;; like tramp-file-name-regexp-unified, but doesn't match single drive letters
+       "\\`/[^/:][^/:]+:"
      "\\`/[^/:][^/:]+:/")
    (or dir ido-current-directory)))
 
@@ -1353,7 +1353,7 @@ Only used if `ido-use-virtual-buffers' is non-nil.")
     (insert "\n)\n")))
 
 (defun ido-save-history ()
-  "Save ido history and cache information between sessions."
+  "Save Ido history and cache information between sessions."
   (interactive)
   (when (and ido-last-directory-list ido-save-directory-list-file)
     (let ((buf (get-buffer-create " *ido session*"))
@@ -1374,7 +1374,7 @@ Only used if `ido-use-virtual-buffers' is non-nil.")
        (kill-buffer buf)))))
 
 (defun ido-load-history (&optional arg)
-  "Load ido history and cache information from previous session.
+  "Load Ido history and cache information from previous session.
 With prefix argument, reload history unconditionally."
   (interactive "P")
   (if (or arg (and ido-save-directory-list-file (not ido-last-directory-list)))
@@ -1397,7 +1397,7 @@ With prefix argument, reload history unconditionally."
   (ido-wash-history))
 
 (defun ido-wash-history ()
-  "Clean-up ido history and cache information.
+  "Clean-up Ido history and cache information.
 Removes badly formatted data and ignored directories."
   (interactive)
   ;; Check format of each of our lists, discard bogus elements
@@ -1510,8 +1510,8 @@ Removes badly formatted data and ignored directories."
 (define-minor-mode ido-everywhere
   "Toggle use of Ido for all buffer/file reading.
 With a prefix argument ARG, enable this feature if ARG is
-positive, and disable it otherwise.  If called from Lisp, enable
-the mode if ARG is omitted or nil."
+positive, and disable it otherwise.  If called from Lisp,
+enable the mode if ARG is omitted or nil."
   :global t
   :group 'ido
   (when (get 'ido-everywhere 'file)
@@ -1532,11 +1532,11 @@ the mode if ARG is omitted or nil."
 
 ;;;###autoload
 (defun ido-mode (&optional arg)
-  "Toggle ido mode on or off.
-With ARG, turn ido-mode on if arg is positive, off otherwise.
-Turning on ido-mode will remap (via a minor-mode keymap) the default
+  "Toggle Ido mode on or off.
+With ARG, turn Ido mode on if arg is positive, off otherwise.
+Turning on Ido mode will remap (via a minor-mode keymap) the default
 keybindings for the `find-file' and `switch-to-buffer' families of
-commands to the ido versions of these functions.
+commands to the Ido versions of these functions.
 However, if ARG arg equals 'files, remap only commands for files, or
 if it equals 'buffers, remap only commands for buffer switching.
 This function also adds a hook to the minibuffer."
@@ -1598,7 +1598,7 @@ This function also adds a hook to the minibuffer."
 
 ;;; IDO KEYMAP
 (defun ido-init-completion-maps ()
-  "Set up the completion keymaps used by `ido'."
+  "Set up the completion keymaps used by Ido."
 
   ;; Common map
   (let ((map (make-sparse-keymap)))
@@ -1679,7 +1679,7 @@ This function also adds a hook to the minibuffer."
 
 
 (defun ido-setup-completion-map ()
-  "Set up the keymap for `ido'."
+  "Set up the keymap for Ido."
 
   ;; generated every time so that it can inherit new functions.
   (let ((map (make-sparse-keymap))
@@ -2205,7 +2205,7 @@ If INITIAL is non-nil, it specifies the initial input string."
     ido-selected))
 
 (defun ido-edit-input ()
-  "Edit absolute file name entered so far with ido; terminate by RET.
+  "Edit absolute file name entered so far with Ido; terminate by RET.
 If cursor is not at the end of the user input, move to end of input."
   (interactive)
   (if (not (eobp))
@@ -2616,7 +2616,7 @@ If cursor is not at the end of the user input, move to end of input."
     (ido-complete)))
 
 (defun ido-undo-merge-work-directory (&optional text try refresh)
-  "Undo or redo last ido directory merge operation.
+  "Undo or redo last Ido directory merge operation.
 If no merge has yet taken place, toggle automatic merging option."
   (interactive)
   (cond
@@ -2648,9 +2648,9 @@ If no merge has yet taken place, toggle automatic merging option."
   "Move forward in user input or perform magic action.
 If no user input is present, or at end of input, perform magic actions:
 C-x C-b ... C-f  switch to `ido-find-file'.
-C-x C-f ... C-f  fallback to non-ido `find-file'.
-C-x C-d ... C-f  fallback to non-ido brief `dired'.
-C-x d ... C-f    fallback to non-ido `dired'."
+C-x C-f ... C-f  fallback to non-Ido `find-file'.
+C-x C-d ... C-f  fallback to non-Ido brief `dired'.
+C-x d ... C-f    fallback to non-Ido `dired'."
   (interactive "P")
   (cond
    ((or arg (not (eobp)))
@@ -2671,7 +2671,7 @@ If no user input is present, or at start of input, perform magic actions:
 C-x C-f C-b  switch to `ido-switch-buffer'.
 C-x C-d C-b  switch to `ido-switch-buffer'.
 C-x d C-b    switch to `ido-switch-buffer'.
-C-x C-b C-b  fallback to non-ido `switch-to-buffer'."
+C-x C-b C-b  fallback to non-Ido `switch-to-buffer'."
   (interactive "P")
   (cond
    ((or arg (> (point) (minibuffer-prompt-end)))
@@ -2744,7 +2744,7 @@ C-x C-f ... C-d  enter `dired' on current directory."
     (exit-minibuffer)))
 
 (defun ido-toggle-vc ()
-  "Disable version control for this file."
+  "Toggle version control for this file."
   (interactive)
   (if (and ido-mode (eq ido-cur-item 'file))
       (progn
@@ -2781,7 +2781,7 @@ See `ido-use-virtual-buffers' for explanation of virtual buffer."
 (defun ido-reread-directory ()
   "Read current directory again.
 May be useful if cached version is no longer valid, but directory
-timestamp has not changed (e.g. with ftp or on Windows)."
+timestamp has not changed (e.g. with FTP or on Windows)."
   (interactive)
   (if (and ido-mode (memq ido-cur-item '(file dir)))
       (progn
@@ -2815,7 +2815,7 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
   (exit-minibuffer))
 
 (defun ido-fallback-command ()
-  "Fallback to non-ido version of current command."
+  "Fallback to non-Ido version of current command."
   (interactive)
   (let ((i (length ido-text)))
     (while (> i 0)
@@ -2949,7 +2949,7 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
   (exit-minibuffer))
 
 (defun ido-wide-find-file (&optional file)
-  "Prompt for FILE to search for using find, starting from current directory."
+  "Prompt for FILE to search for using `find', starting from current directory."
   (interactive)
   (unless file
     (let ((enable-recursive-minibuffers t))
@@ -2965,7 +2965,7 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
     (exit-minibuffer)))
 
 (defun ido-wide-find-dir (&optional dir)
-  "Prompt for DIR to search for using find, starting from current directory."
+  "Prompt for DIR to search for using `find', starting from current directory."
   (interactive)
   (unless dir
     (let ((enable-recursive-minibuffers t))
@@ -2981,7 +2981,7 @@ If no buffer or file exactly matching the prompt exists, maybe create a new one.
     (exit-minibuffer)))
 
 (defun ido-wide-find-dir-or-delete-dir (&optional _dir)
-  "Prompt for DIR to search for using find, starting from current directory.
+  "Prompt for DIR to search for using `find', starting from current directory.
 If input stack is non-empty, delete current directory component."
   (interactive)
   (if ido-input-stack
@@ -3938,7 +3938,7 @@ If `ido-change-word-sub' cannot be found in WORD, return nil."
     t))
 
 (defun ido-completion-help ()
-  "Show possible completions in a *File Completions* buffer."
+  "Show possible completions in a \"*File Completions*\" buffer."
   (interactive)
   (setq ido-rescan nil)
   (let ((temp-buf (and ido-completion-buffer
@@ -4119,31 +4119,31 @@ default is to show it in the same window, unless it is already visible
 in another frame.
 
 As you type in a string, all of the buffers matching the string are
-displayed if substring-matching is used \(default).  Look at
+displayed if substring-matching is used (default).  Look at
 `ido-enable-prefix' and `ido-toggle-prefix'.  When you have found the
 buffer you want, it can then be selected.  As you type, most keys have
 their normal keybindings, except for the following: \\<ido-buffer-completion-map>
 
-RET Select the buffer at the front of the list of matches.  If the
-list is empty, possibly prompt to create new buffer.
-
-\\[ido-select-text] Use the current input string verbatim.
-
-\\[ido-next-match] Put the first element at the end of the list.
-\\[ido-prev-match] Put the last element at the start of the list.
-\\[ido-complete] Complete a common suffix to the current string that
-matches all buffers.  If there is only one match, select that buffer.
-If there is no common suffix, show a list of all matching buffers
-in a separate window.
-\\[ido-edit-input] Edit input string.
-\\[ido-fallback-command] Fallback to non-ido version of current command.
-\\[ido-toggle-regexp] Toggle regexp searching.
-\\[ido-toggle-prefix] Toggle between substring and prefix matching.
-\\[ido-toggle-case] Toggle case-sensitive searching of buffer names.
-\\[ido-completion-help] Show list of matching buffers in separate window.
-\\[ido-enter-find-file] Drop into `ido-find-file'.
-\\[ido-kill-buffer-at-head] Kill buffer at head of buffer list.
-\\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'."
+RET\tSelect the buffer at the front of the list of matches.
+\tIf the list is empty, possibly prompt to create new buffer.
+
+\\[ido-select-text]\tUse the current input string verbatim.
+
+\\[ido-next-match]\tPut the first element at the end of the list.
+\\[ido-prev-match]\tPut the last element at the start of the list.
+\\[ido-complete]\tComplete a common suffix to the current string that matches
+\tall buffers.  If there is only one match, select that buffer.
+\tIf there is no common suffix, show a list of all matching buffers
+\tin a separate window.
+\\[ido-edit-input]\tEdit input string.
+\\[ido-fallback-command]\tFallback to non-ido version of current command.
+\\[ido-toggle-regexp]\tToggle regexp searching.
+\\[ido-toggle-prefix]\tToggle between substring and prefix matching.
+\\[ido-toggle-case]\tToggle case-sensitive searching of buffer names.
+\\[ido-completion-help]\tShow list of matching buffers in separate window.
+\\[ido-enter-find-file]\tDrop into `ido-find-file'.
+\\[ido-kill-buffer-at-head]\tKill buffer at head of buffer list.
+\\[ido-toggle-ignore]\tToggle ignoring buffers listed in `ido-ignore-buffers'."
   (interactive)
   (ido-buffer-internal ido-default-buffer-method))
 
@@ -4169,7 +4169,8 @@ For details of keybindings, see `ido-switch-buffer'."
 The buffer name is selected interactively by typing a substring.
 For details of keybindings, see `ido-switch-buffer'."
   (interactive)
-  (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)) nil 'ignore))
+  (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: "
+                      (buffer-name (current-buffer)) nil 'ignore))
 
 ;;;###autoload
 (defun ido-insert-buffer ()
@@ -4177,7 +4178,8 @@ For details of keybindings, see `ido-switch-buffer'."
 The buffer name is selected interactively by typing a substring.
 For details of keybindings, see `ido-switch-buffer'."
   (interactive)
-  (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil nil 'ido-enter-insert-file))
+  (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: "
+                      nil nil 'ido-enter-insert-file))
 
 ;;;###autoload
 (defun ido-switch-buffer-other-frame ()
@@ -4200,42 +4202,45 @@ For details of keybindings, see `ido-switch-buffer'."
 (defun ido-find-file ()
   "Edit file with name obtained via minibuffer.
 The file is displayed according to `ido-default-file-method' -- the
-default is to show it in the same window, unless it is already
-visible in another frame.
+default is to show it in the same window, unless it is already visible
+in another frame.
 
 The file name is selected interactively by typing a substring.  As you
 type in a string, all of the filenames matching the string are displayed
-if substring-matching is used \(default).  Look at `ido-enable-prefix' and
+if substring-matching is used (default).  Look at `ido-enable-prefix' and
 `ido-toggle-prefix'.  When you have found the filename you want, it can
 then be selected.  As you type, most keys have their normal keybindings,
 except for the following: \\<ido-file-completion-map>
 
-RET Select the file at the front of the list of matches.  If the
-list is empty, possibly prompt to create new file.
-
-\\[ido-select-text] Use the current input string verbatim.
-
-\\[ido-next-match] Put the first element at the end of the list.
-\\[ido-prev-match] Put the last element at the start of the list.
-\\[ido-complete] Complete a common suffix to the current string that
-matches all files.  If there is only one match, select that file.
-If there is no common suffix, show a list of all matching files
-in a separate window.
-\\[ido-magic-delete-char] Open the specified directory in Dired mode.
-\\[ido-edit-input] Edit input string (including directory).
-\\[ido-prev-work-directory] or \\[ido-next-work-directory] go to previous/next directory in work directory history.
-\\[ido-merge-work-directories] search for file in the work directory history.
-\\[ido-forget-work-directory] removes current directory from the work directory history.
-\\[ido-prev-work-file] or \\[ido-next-work-file] cycle through the work file history.
-\\[ido-wide-find-file-or-pop-dir] and \\[ido-wide-find-dir-or-delete-dir] prompts and uses find to locate files or directories.
-\\[ido-make-directory] prompts for a directory to create in current directory.
-\\[ido-fallback-command] Fallback to non-ido version of current command.
-\\[ido-toggle-regexp] Toggle regexp searching.
-\\[ido-toggle-prefix] Toggle between substring and prefix matching.
-\\[ido-toggle-case] Toggle case-sensitive searching of file names.
-\\[ido-toggle-literal] Toggle literal reading of this file.
-\\[ido-completion-help] Show list of matching files in separate window.
-\\[ido-toggle-ignore] Toggle ignoring files listed in `ido-ignore-files'."
+RET\tSelect the file at the front of the list of matches.
+\tIf the list is empty, possibly prompt to create new file.
+
+\\[ido-select-text]\tUse the current input string verbatim.
+
+\\[ido-next-match]\tPut the first element at the end of the list.
+\\[ido-prev-match]\tPut the last element at the start of the list.
+\\[ido-complete]\tComplete a common suffix to the current string that matches
+\tall files.  If there is only one match, select that file.
+\tIf there is no common suffix, show a list of all matching files
+\tin a separate window.
+\\[ido-magic-delete-char]\tOpen the specified directory in Dired mode.
+\\[ido-edit-input]\tEdit input string (including directory).
+\\[ido-prev-work-directory]\tGo to previous directory in work directory history.
+\\[ido-next-work-directory]\tGo to next directory in work directory history.
+\\[ido-merge-work-directories]\tSearch for file in the work directory history.
+\\[ido-forget-work-directory]\tRemove current directory from the work directory history.
+\\[ido-prev-work-file]\tCycle to previous file in work file history.
+\\[ido-next-work-file]\tCycle to next file in work file history.
+\\[ido-wide-find-file-or-pop-dir]\tPrompt for a file and use find to locate it.
+\\[ido-wide-find-dir-or-delete-dir]\tPrompt for a directory and use find to locate it.
+\\[ido-make-directory]\tPrompt for a directory to create in current directory.
+\\[ido-fallback-command]\tFallback to non-Ido version of current command.
+\\[ido-toggle-regexp]\tToggle regexp searching.
+\\[ido-toggle-prefix]\tToggle between substring and prefix matching.
+\\[ido-toggle-case]\tToggle case-sensitive searching of file names.
+\\[ido-toggle-literal]\tToggle literal reading of this file.
+\\[ido-completion-help]\tShow list of matching files in separate window.
+\\[ido-toggle-ignore]\tToggle ignoring files listed in `ido-ignore-files'."
 
   (interactive)
   (ido-file-internal ido-default-file-method))
@@ -4270,7 +4275,8 @@ For details of keybindings, see `ido-find-file'."
 The file name is selected interactively by typing a substring.
 For details of keybindings, see `ido-find-file'."
   (interactive)
-  (ido-file-internal 'read-only 'find-file-read-only-other-window nil "Find file read-only other window: "))
+  (ido-file-internal 'read-only 'find-file-read-only-other-window nil
+                    "Find file read-only other window: "))
 
 ;;;###autoload
 (defun ido-find-file-read-only-other-frame ()
@@ -4278,7 +4284,8 @@ For details of keybindings, see `ido-find-file'."
 The file name is selected interactively by typing a substring.
 For details of keybindings, see `ido-find-file'."
   (interactive)
-  (ido-file-internal 'read-only 'find-file-read-only-other-frame nil "Find file read-only other frame: "))
+  (ido-file-internal 'read-only 'find-file-read-only-other-frame nil
+                    "Find file read-only other frame: "))
 
 ;;;###autoload
 (defun ido-display-file ()
@@ -4320,7 +4327,7 @@ For details of keybindings, see `ido-find-file'."
 
 ;;;###autoload
 (defun ido-dired ()
-  "Call `dired' the ido way.
+  "Call `dired' the Ido way.
 The directory is selected interactively by typing a substring.
 For details of keybindings, see `ido-find-file'."
   (interactive)
@@ -4329,7 +4336,7 @@ For details of keybindings, see `ido-find-file'."
     (ido-file-internal 'dired 'dired nil "Dired: " 'dir)))
 
 (defun ido-list-directory ()
-  "Call `list-directory' the ido way.
+  "Call `list-directory' the Ido way.
 The directory is selected interactively by typing a substring.
 For details of keybindings, see `ido-find-file'."
   (interactive)
@@ -4367,7 +4374,7 @@ For details of keybindings, see `ido-find-file'."
       (throw 'ido contents))))
 
 (defun ido-exhibit ()
-  "Post command hook for `ido'."
+  "Post command hook for Ido."
   ;; Find matching files and display a list in the minibuffer.
   ;; Copied from `icomplete-exhibit' with two changes:
   ;; 1. It prints a default file name when there is no text yet entered.
@@ -4695,7 +4702,7 @@ Modified from `icomplete-completions'."
              (nth 1 ido-decorations)))))))
 
 (defun ido-minibuffer-setup ()
-  "Minibuffer setup hook for `ido'."
+  "Minibuffer setup hook for Ido."
   ;; Copied from `icomplete-minibuffer-setup-hook'.
   (when (ido-active)
     (add-hook 'pre-command-hook 'ido-tidy nil t)
@@ -4709,7 +4716,7 @@ Modified from `icomplete-completions'."
       (setq ido-initial-position nil))))
 
 (defun ido-tidy ()
-  "Pre command hook for `ido'."
+  "Pre command hook for Ido."
   ;; Remove completions display, if any, prior to new user input.
   ;; Copied from `icomplete-tidy'."
 
@@ -4868,10 +4875,10 @@ See `read-directory-name' for additional parameters."
 (defun ido-completing-read (prompt choices &optional _predicate require-match
                             initial-input hist def _inherit-input-method)
   "Ido replacement for the built-in `completing-read'.
-Read a string in the minibuffer with ido-style completion.
+Read a string in the minibuffer with Ido-style completion.
 PROMPT is a string to prompt with; normally it ends in a colon and a space.
 CHOICES is a list of strings which are the possible completions.
-PREDICATE and INHERIT-INPUT-METHOD is currently ignored; it is included
+PREDICATE and INHERIT-INPUT-METHOD are currently ignored; they are included
  to be compatible with `completing-read'.
 If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless
  the input is (or completes to) an element of CHOICES or is null.
index 29cb06f0e03d908c11b1adaea3b3714d04d8b715..ef39fa7909f5ebebbe6da4c5f5616ae2116b3e53 100644 (file)
@@ -662,6 +662,7 @@ number, play until that number of seconds has elapsed."
     (when animation
       (if (setq timer (image-animate-timer image))
          (cancel-timer timer))
+      (plist-put (cdr image) :animate-buffer (current-buffer))
       (run-with-timer 0.2 nil 'image-animate-timeout
                      image (or index 0) (car animation)
                      0 limit))))
@@ -726,30 +727,31 @@ The minimum delay between successive frames is `image-minimum-frame-delay'.
 
 If the image has a non-nil :speed property, it acts as a multiplier
 for the animation speed.  A negative value means to animate in reverse."
-  (image-show-frame image n t)
-  (let* ((speed (image-animate-get-speed image))
-        (time (float-time))
-        (animation (image-multi-frame-p image))
-        ;; Subtract off the time we took to load the image from the
-        ;; stated delay time.
-        (delay (max (+ (* (or (cdr animation) image-default-frame-delay)
-                          (/ 1 (abs speed)))
-                       time (- (float-time)))
-                    image-minimum-frame-delay))
-        done)
-    (setq n (if (< speed 0)
-               (1- n)
-             (1+ n)))
-    (if limit
-       (cond ((>= n count) (setq n 0))
-             ((< n 0) (setq n (1- count))))
-      (and (or (>= n count) (< n 0)) (setq done t)))
-    (setq time-elapsed (+ delay time-elapsed))
-    (if (numberp limit)
-       (setq done (>= time-elapsed limit)))
-    (unless done
-      (run-with-timer delay nil 'image-animate-timeout
-                     image n count time-elapsed limit))))
+  (when (buffer-live-p (plist-get (cdr image) :animate-buffer))
+    (image-show-frame image n t)
+    (let* ((speed (image-animate-get-speed image))
+          (time (float-time))
+          (animation (image-multi-frame-p image))
+          ;; Subtract off the time we took to load the image from the
+          ;; stated delay time.
+          (delay (max (+ (* (or (cdr animation) image-default-frame-delay)
+                            (/ 1 (abs speed)))
+                         time (- (float-time)))
+                      image-minimum-frame-delay))
+          done)
+      (setq n (if (< speed 0)
+                 (1- n)
+               (1+ n)))
+      (if limit
+         (cond ((>= n count) (setq n 0))
+               ((< n 0) (setq n (1- count))))
+       (and (or (>= n count) (< n 0)) (setq done t)))
+      (setq time-elapsed (+ delay time-elapsed))
+      (if (numberp limit)
+         (setq done (>= time-elapsed limit)))
+      (unless done
+       (run-with-timer delay nil 'image-animate-timeout
+                       image n count time-elapsed limit)))))
 
 \f
 (defvar imagemagick-types-inhibit)
index 77f69f914c9b226ddcfd504b46a3b2037121052d..2b2490b5bdc11eebdff820073b22a7cb24293bf8 100644 (file)
@@ -3698,7 +3698,9 @@ Build a menu of the possible matches."
          hits desc)
       (dolist (keyword keywords)
        (push (copy-tree (gethash keyword finder-keywords-hash)) hits))
-      (setq hits (delete-dups (apply 'append hits)))
+      (setq hits (delete-dups (apply 'append hits))
+           ;; Not a meaningful package.
+           hits (delete 'emacs hits))
       (dolist (package hits)
        (setq desc (cdr-safe (assq package package--builtins)))
        (when (vectorp desc)
@@ -3713,6 +3715,9 @@ Build a menu of the possible matches."
     (insert "*****************\n\n")
     (insert
      "Commentary section of the package `" nodename "':\n\n")
+    ;; FIXME this assumes that a file named package.el exists,
+    ;; which is not always true.  E.g. for the nxml package,
+    ;; there is no "nxml.el" (it's nxml-mode.el).
     (let ((str (lm-commentary (find-library-name nodename))))
       (if (null str)
          (insert "Can't find any Commentary section\n\n")
@@ -3962,6 +3967,10 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
     (define-key map "f" 'Info-follow-reference)
     (define-key map "g" 'Info-goto-node)
     (define-key map "h" 'Info-help)
+    ;; This is for compatibility with standalone info (>~ version 5.2).
+    ;; Though for some time, standalone info had H and h reversed.
+    ;; See <http://debbugs.gnu.org/16455>.
+    (define-key map "H" 'describe-mode)
     (define-key map "i" 'Info-index)
     (define-key map "I" 'Info-virtual-index)
     (define-key map "l" 'Info-history-back)
index a158c96c06de2d69e028381abc29f301025b2563..20dabdc5b6c2085411710bc5622364d87cb58fcf 100644 (file)
@@ -131,7 +131,7 @@ a tab, a carriage return (control-M), a newline, and `]+'."
   :version "24.3")
 
 (defcustom search-invisible 'open
-  "If t incremental search can match hidden text.
+  "If t incremental search/query-replace can match hidden text.
 A nil value means don't match invisible text.
 When the value is `open', if the text matched is made invisible by
 an overlay having an `invisible' property and that overlay has a property
index ba30d11848e3664625f3656015ce21f83df8ef7d..74746d9f3124822af8af12a6a4a75d316ea65201 100644 (file)
@@ -108,7 +108,7 @@ Completion is available.
 
 ;;;***
 \f
-;;;### (autoloads nil "add-log" "vc/add-log.el" (21187 63826 213216
+;;;### (autoloads nil "add-log" "vc/add-log.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from vc/add-log.el
 
@@ -238,8 +238,8 @@ old-style time formats for entries are supported.
 
 ;;;***
 \f
-;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21190 39993
-;;;;;;  744837 0))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/advice.el
 
 (defvar ad-redefinition-action 'warn "\
@@ -377,7 +377,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
 
 ;;;***
 \f
-;;;### (autoloads nil "align" "align.el" (21187 63826 213216 0))
+;;;### (autoloads nil "align" "align.el" (21240 46395 727291 0))
 ;;; Generated autoloads from align.el
 
 (autoload 'align "align" "\
@@ -899,7 +899,7 @@ outline hot-spot navigation (see `allout-mode').
 
 ;;;***
 \f
-;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21204 37210 187838
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from net/ange-ftp.el
 
@@ -1040,7 +1040,7 @@ ARG is positive, otherwise off.
 
 ;;;***
 \f
-;;;### (autoloads nil "apropos" "apropos.el" (21195 23530 495420
+;;;### (autoloads nil "apropos" "apropos.el" (21259 10807 217062
 ;;;;;;  0))
 ;;; Generated autoloads from apropos.el
 
@@ -1068,7 +1068,7 @@ variables, not just user options.
 
 (autoload 'apropos-variable "apropos" "\
 Show variables that match PATTERN.
-When DO-NOT-ALL is not-nil, show user options only, i.e. behave
+When DO-NOT-ALL is non-nil, show user options only, i.e. behave
 like `apropos-user-option'.
 
 \(fn PATTERN &optional DO-NOT-ALL)" t nil)
@@ -1177,7 +1177,7 @@ archive.
 
 ;;;***
 \f
-;;;### (autoloads nil "array" "array.el" (21187 63826 213216 0))
+;;;### (autoloads nil "array" "array.el" (21240 46395 727291 0))
 ;;; Generated autoloads from array.el
 
 (autoload 'array-mode "array" "\
@@ -1455,8 +1455,8 @@ Keymap summary
 
 ;;;***
 \f
-;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/asm-mode.el
 
 (autoload 'asm-mode "asm-mode" "\
@@ -1483,8 +1483,8 @@ Special commands:
 
 ;;;***
 \f
-;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21257
+;;;;;;  55477 969423 0))
 ;;; Generated autoloads from gnus/auth-source.el
 
 (defvar auth-source-cache-expiry 7200 "\
@@ -1568,7 +1568,7 @@ Major mode for editing Autoconf configure.ac files.
 
 ;;;***
 \f
-;;;### (autoloads nil "autoinsert" "autoinsert.el" (21187 63826 213216
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from autoinsert.el
 
@@ -1878,8 +1878,8 @@ For non-interactive use see also `benchmark-run' and
 
 ;;;***
 \f
-;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21264 28773
+;;;;;;  629489 0))
 ;;; Generated autoloads from textmodes/bibtex.el
 
 (autoload 'bibtex-initialize "bibtex" "\
@@ -2320,8 +2320,8 @@ Incremental search of bookmarks, hiding the non-matches as we go.
 
 ;;;***
 \f
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2720,8 +2720,8 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
 
 ;;;***
 \f
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21218
-;;;;;;  19382 890650 0))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from emacs-lisp/bytecomp.el
 (put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
 (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2973,7 +2973,7 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 \f
-;;;### (autoloads nil "calculator" "calculator.el" (21187 63826 213216
+;;;### (autoloads nil "calculator" "calculator.el" (21231 31415 579137
 ;;;;;;  0))
 ;;; Generated autoloads from calculator.el
 
@@ -3094,8 +3094,8 @@ Obsoletes `c-forward-into-nomenclature'.
 
 ;;;***
 \f
-;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21213
-;;;;;;  1461 513511 0))
+;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21231
+;;;;;;  31415 579137 0))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3204,8 +3204,8 @@ the absolute file name of the file if STYLE-NAME is nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21227 3180
-;;;;;;  84924 320000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21251 16696
+;;;;;;  39562 0))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3684,8 +3684,8 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
 
 ;;;***
 \f
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/cconv.el
 
 (autoload 'cconv-closure-convert "cconv" "\
@@ -4006,7 +4006,7 @@ Encode the text in the current buffer to HZ.
 
 ;;;***
 \f
-;;;### (autoloads nil "chistory" "chistory.el" (21187 63826 213216
+;;;### (autoloads nil "chistory" "chistory.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from chistory.el
 
@@ -4046,8 +4046,8 @@ and runs the normal hook `command-history-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4177,7 +4177,7 @@ For use inside Lisp programs, see also `c-macro-expansion'.
 
 ;;;***
 \f
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21187 63826 213216
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from cmuscheme.el
 
@@ -4217,7 +4217,7 @@ If FRAME cannot display COLOR, return nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "comint" "comint.el" (21209 55410 356925 0))
+;;;### (autoloads nil "comint" "comint.el" (21265 49588 918402 0))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4316,8 +4316,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
 
 ;;;***
 \f
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from vc/compare-w.el
 
 (autoload 'compare-windows "compare-w" "\
@@ -4350,8 +4350,8 @@ on third call it again advances points to the next difference and so on.
 
 ;;;***
 \f
-;;;### (autoloads nil "compile" "progmodes/compile.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4532,7 +4532,7 @@ This is the value of `next-error-function' in Compilation buffers.
 
 ;;;***
 \f
-;;;### (autoloads nil "completion" "completion.el" (21187 63826 213216
+;;;### (autoloads nil "completion" "completion.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from completion.el
 
@@ -4711,7 +4711,7 @@ For details see `conf-mode'.  Example:
 
 ;;;***
 \f
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21187 63826 213216
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (21245 64312 799897
 ;;;;;;  0))
 ;;; Generated autoloads from play/cookie1.el
 
@@ -5023,39 +5023,29 @@ if ARG is omitted or nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21187 63826 213216
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21263 7861 493097
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload 'completing-read-multiple "crm" "\
 Read multiple strings in the minibuffer, with completion.
-By using this functionality, a user may specify multiple strings at a
-single prompt, optionally using completion.
-
-Multiple strings are specified by separating each of the strings with
-a prespecified separator regexp.  For example, if the separator
-regexp is \",\", the strings 'alice', 'bob', and 'eve' would be
-specified as 'alice,bob,eve'.
-
-The default value for the separator regexp is the value of
-`crm-default-separator' (comma).  The separator regexp may be
-changed by modifying the value of `crm-separator'.
+The arguments are the same as those of `completing-read'.
+\\<crm-local-completion-map>
+Input multiple strings by separating each one with a string that
+matches the regexp `crm-separator'.  For example, if the separator
+regexp is \",\", entering \"alice,bob,eve\" specifies the strings
+\"alice\", \"bob\", and \"eve\".
 
-Contiguous strings of non-separator-characters are referred to as
-'elements'.  In the aforementioned example, the elements are: 'alice',
-'bob', and 'eve'.
+We refer to contiguous strings of non-separator-characters as
+\"elements\".  In this example there are three elements.
 
 Completion is available on a per-element basis.  For example, if the
-contents of the minibuffer are 'alice,bob,eve' and point is between
-'l' and 'i', pressing TAB operates on the element 'alice'.
+contents of the minibuffer are \"alice,bob,eve\" and point is between
+\"l\" and \"i\", pressing \\[minibuffer-complete] operates on the element \"alice\".
 
-The return value of this function is a list of the read strings
+This function returns a list of the strings that were read,
 with empty strings removed.
 
-See the documentation for `completing-read' for details on the arguments:
-PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and
-INHERIT-INPUT-METHOD.
-
 \(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)" nil nil)
 
 ;;;***
@@ -5071,8 +5061,8 @@ Major mode to edit Cascading Style Sheets.
 
 ;;;***
 \f
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21222 52808
-;;;;;;  160149 187000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21243 49747
+;;;;;;  293438 0))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5129,7 +5119,7 @@ Activates the region if needed.  Only lasts until the region is deactivated.
 
 ;;;***
 \f
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21187 63826 213216
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from cus-edit.el
 
@@ -5362,6 +5352,7 @@ Optional NAME is the name of the buffer.
 OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
 SYMBOL is a customization option, and WIDGET is a widget for editing
 that option.
+DESCRIPTION is unused.
 
 \(fn OPTIONS &optional NAME DESCRIPTION)" nil nil)
 
@@ -5441,7 +5432,7 @@ The format is suitable for use with `easy-menu-define'.
 
 ;;;***
 \f
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21187 63826 213216
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from cus-theme.el
 
@@ -5618,7 +5609,7 @@ Create a new data-debug buffer with NAME.
 
 ;;;***
 \f
-;;;### (autoloads nil "dbus" "net/dbus.el" (21187 63826 213216 0))
+;;;### (autoloads nil "dbus" "net/dbus.el" (21263 60369 592555 0))
 ;;; Generated autoloads from net/dbus.el
 
 (autoload 'dbus-handle-event "dbus" "\
@@ -5758,8 +5749,8 @@ There is some minimal font-lock support (see vars
 
 ;;;***
 \f
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21194 37048
-;;;;;;  599945 0))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger 'debug)
@@ -5857,7 +5848,7 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 \f
-;;;### (autoloads nil "delsel" "delsel.el" (21227 34360 69622 0))
+;;;### (autoloads nil "delsel" "delsel.el" (21251 41787 268999 0))
 ;;; Generated autoloads from delsel.el
 
 (defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5885,8 +5876,8 @@ point regardless of any selection.
 
 ;;;***
 \f
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload 'define-derived-mode "derived" "\
@@ -5952,7 +5943,7 @@ the first time the mode is used.
 
 ;;;***
 \f
-;;;### (autoloads nil "descr-text" "descr-text.el" (21187 63826 213216
+;;;### (autoloads nil "descr-text" "descr-text.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from descr-text.el
 
@@ -5987,25 +5978,39 @@ relevant to POS.
 
 ;;;***
 \f
-;;;### (autoloads nil "desktop" "desktop.el" (21187 63826 213216
+;;;### (autoloads nil "desktop" "desktop.el" (21256 34613 967717
 ;;;;;;  0))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
 Non-nil if Desktop-Save mode is enabled.
-See the command `desktop-save-mode' for a description of this minor mode.")
+See the command `desktop-save-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `desktop-save-mode'.")
 
 (custom-autoload 'desktop-save-mode "desktop" nil)
 
 (autoload 'desktop-save-mode "desktop" "\
 Toggle desktop saving (Desktop Save mode).
-With a prefix argument ARG, enable Desktop Save mode if ARG is
-positive, and disable it otherwise.  If called from Lisp, enable
-the mode if ARG is omitted or nil.
+With a prefix argument ARG, enable Desktop Save mode if ARG is positive,
+and disable it otherwise.  If called from Lisp, enable the mode if ARG
+is omitted or nil.
+
+When Desktop Save mode is enabled, the state of Emacs is saved from
+one session to another.  In particular, Emacs will save the desktop when
+it exits (this may prompt you; see the option `desktop-save').  The next
+time Emacs starts, if this mode is active it will restore the desktop.
+
+To manually save the desktop at any time, use the command `M-x desktop-save'.
+To load it, use `M-x desktop-read'.
+
+Once a desktop file exists, Emacs will auto-save it according to the
+option `desktop-auto-save-timeout'.
 
-If Desktop Save mode is enabled, the state of Emacs is saved from
-one session to another.  See variable `desktop-save' and function
-`desktop-read' for details.
+To see all the options you can set, browse the `desktop' customization group.
+
+For further details, see info node `(emacs)Saving Emacs Sessions'.
 
 \(fn &optional ARG)" t nil)
 
@@ -6254,7 +6259,7 @@ Major mode for editing the diary file.
 
 ;;;***
 \f
-;;;### (autoloads nil "diff" "vc/diff.el" (21187 63826 213216 0))
+;;;### (autoloads nil "diff" "vc/diff.el" (21240 46395 727291 0))
 ;;; Generated autoloads from vc/diff.el
 
 (defvar diff-switches (purecopy "-c") "\
@@ -6346,7 +6351,7 @@ Optional arguments are passed to `dig-invoke'.
 
 ;;;***
 \f
-;;;### (autoloads nil "dired" "dired.el" (21222 53814 660119 962000))
+;;;### (autoloads nil "dired" "dired.el" (21262 15747 490127 657000))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches (purecopy "-al") "\
@@ -6497,8 +6502,8 @@ from `default-directory'.
 
 ;;;***
 \f
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload 'disassemble "disass" "\
@@ -6512,7 +6517,7 @@ redefine OBJECT if it is a symbol.
 
 ;;;***
 \f
-;;;### (autoloads nil "disp-table" "disp-table.el" (21187 63826 213216
+;;;### (autoloads nil "disp-table" "disp-table.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from disp-table.el
 
@@ -6634,8 +6639,8 @@ in `.emacs'.
 
 ;;;***
 \f
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload 'dissociated-press "dissociate" "\
@@ -6651,7 +6656,7 @@ Default is 2.
 
 ;;;***
 \f
-;;;### (autoloads nil "dnd" "dnd.el" (21187 63826 213216 0))
+;;;### (autoloads nil "dnd" "dnd.el" (21240 46395 727291 0))
 ;;; Generated autoloads from dnd.el
 
 (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
@@ -6742,7 +6747,7 @@ See the command `doc-view-mode' for more information on this mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "doctor" "play/doctor.el" (21187 63826 213216
+;;;### (autoloads nil "doctor" "play/doctor.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from play/doctor.el
 
@@ -6781,8 +6786,8 @@ Switch to *dungeon* buffer and start game.
 
 ;;;***
 \f
-;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21259
+;;;;;;  10807 217062 0))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -7326,8 +7331,8 @@ See `ebnf-style-database' documentation.
 
 ;;;***
 \f
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7475,7 +7480,7 @@ Display statistics for a class tree.
 
 ;;;***
 \f
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21187 63826 213216
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from ebuff-menu.el
 
@@ -7508,7 +7513,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 
 ;;;***
 \f
-;;;### (autoloads nil "echistory" "echistory.el" (21187 63826 213216
+;;;### (autoloads nil "echistory" "echistory.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from echistory.el
 
@@ -7571,8 +7576,8 @@ an EDE controlled project.
 
 ;;;***
 \f
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21205 7349
-;;;;;;  58947 0))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21261 4402
+;;;;;;  232258 508000))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -8002,7 +8007,7 @@ or nil, use a compact 80-column format.
 
 ;;;***
 \f
-;;;### (autoloads nil "edt" "emulation/edt.el" (21187 63826 213216
+;;;### (autoloads nil "edt" "emulation/edt.el" (21260 31670 94248
 ;;;;;;  0))
 ;;; Generated autoloads from emulation/edt.el
 
@@ -8020,7 +8025,7 @@ Turn on EDT Emulation.
 
 ;;;***
 \f
-;;;### (autoloads nil "ehelp" "ehelp.el" (21187 63826 213216 0))
+;;;### (autoloads nil "ehelp" "ehelp.el" (21240 46395 727291 0))
 ;;; Generated autoloads from ehelp.el
 
 (autoload 'with-electric-help "ehelp" "\
@@ -8124,7 +8129,7 @@ Emacs Lisp mode) that support ElDoc.")
 
 ;;;***
 \f
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21193 16180 875828
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (21257 55477 969423
 ;;;;;;  0))
 ;;; Generated autoloads from elec-pair.el
 
@@ -8212,7 +8217,7 @@ optional prefix argument REINIT is non-nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21187 63826 213216
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
@@ -8247,7 +8252,7 @@ displayed.
 
 ;;;***
 \f
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21187 63826 213216
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lock.el
 
@@ -8275,8 +8280,8 @@ Other values are interpreted as usual.
 
 ;;;***
 \f
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21198 34110
-;;;;;;  565653 0))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload 'report-emacs-bug "emacsbug" "\
@@ -8287,7 +8292,7 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21032 23080 765139
+;;;### (autoloads nil "emerge" "vc/emerge.el" (21231 31415 579137
 ;;;;;;  0))
 ;;; Generated autoloads from vc/emerge.el
 
@@ -8384,7 +8389,7 @@ Commands:
 
 ;;;***
 \f
-;;;### (autoloads nil "epa" "epa.el" (21220 61111 156047 0))
+;;;### (autoloads nil "epa" "epa.el" (21235 28473 29431 0))
 ;;; Generated autoloads from epa.el
 
 (autoload 'epa-list-keys "epa" "\
@@ -8719,7 +8724,7 @@ Look at CONFIG and try to expand GROUP.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc" "erc/erc.el" (21227 34360 69622 0))
+;;;### (autoloads nil "erc" "erc/erc.el" (21240 46395 727291 0))
 ;;; Generated autoloads from erc/erc.el
 (push (purecopy '(erc 5 3)) package--builtin-versions)
 
@@ -8768,35 +8773,35 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21187 63826 213216
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-dcc.el
  (autoload 'erc-dcc-mode "erc-dcc")
@@ -8833,8 +8838,8 @@ that subcommand.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8896,7 +8901,7 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21187 63826 213216
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
@@ -8909,8 +8914,8 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -8931,8 +8936,8 @@ system.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8942,21 +8947,21 @@ system.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21187 63826 213216
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-lang" "erc/erc-lang.el" (21193 16180 875828
+;;;### (autoloads nil "erc-lang" "erc/erc-lang.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-lang.el
 (push (purecopy '(erc-lang 1 0 0)) package--builtin-versions)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21187 63826 213216
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-list.el
 (push (purecopy '(erc-list 0 1)) package--builtin-versions)
@@ -8964,7 +8969,7 @@ system.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21187 63826 213216
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
@@ -8994,8 +8999,8 @@ You can save every individual message by putting this function on
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9041,15 +9046,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21187 63826 213216
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9060,8 +9065,8 @@ Show who's gone.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21260
+;;;;;;  55795 711190 0))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload 'erc-determine-network "erc-networks" "\
@@ -9078,8 +9083,8 @@ Interactively select a server to connect to using `erc-server-alist'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9097,36 +9102,36 @@ with args, toggle notify status of people.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21187 63826 213216
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21187 63826 213216
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9143,15 +9148,15 @@ When called interactively, read the password using `read-passwd'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9162,22 +9167,22 @@ This will add a speedbar major display mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9202,8 +9207,8 @@ keybindings will not do anything useful.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9222,7 +9227,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21187 63826 213216
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from erc/erc-xdcc.el
  (autoload 'erc-xdcc-mode "erc-xdcc")
@@ -9234,7 +9239,7 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 \f
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21187 63826 213216
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21261 52533 628241
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/ert.el
 
@@ -9360,7 +9365,7 @@ corresponding to a successful execution.
 
 ;;;***
 \f
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21187 63826 213216
+;;;### (autoloads nil "etags" "progmodes/etags.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from progmodes/etags.el
 
@@ -10165,7 +10170,7 @@ with no args, if that value is non-nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "face-remap" "face-remap.el" (21187 63826 213216
+;;;### (autoloads nil "face-remap" "face-remap.el" (21241 18251 378509
 ;;;;;;  0))
 ;;; Generated autoloads from face-remap.el
 
@@ -10380,7 +10385,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "ffap" "ffap.el" (21187 63826 213216 0))
+;;;### (autoloads nil "ffap" "ffap.el" (21240 46395 727291 0))
 ;;; Generated autoloads from ffap.el
 
 (autoload 'ffap-next "ffap" "\
@@ -10443,7 +10448,7 @@ Evaluate the forms in variable `ffap-bindings'.
 
 ;;;***
 \f
-;;;### (autoloads nil "filecache" "filecache.el" (21187 63826 213216
+;;;### (autoloads nil "filecache" "filecache.el" (21265 49588 918402
 ;;;;;;  0))
 ;;; Generated autoloads from filecache.el
 
@@ -10514,7 +10519,7 @@ Otherwise, signal a `file-notify-error'.
 
 ;;;***
 \f
-;;;### (autoloads nil "files-x" "files-x.el" (21187 63826 213216
+;;;### (autoloads nil "files-x" "files-x.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from files-x.el
 
@@ -10580,7 +10585,7 @@ Copy directory-local variables to the -*- line.
 
 ;;;***
 \f
-;;;### (autoloads nil "filesets" "filesets.el" (21194 37048 599945
+;;;### (autoloads nil "filesets" "filesets.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from filesets.el
 
@@ -10613,7 +10618,7 @@ result is a string that should be ready for the command line.
 
 ;;;***
 \f
-;;;### (autoloads nil "find-dired" "find-dired.el" (21187 63826 213216
+;;;### (autoloads nil "find-dired" "find-dired.el" (21264 57319 597552
 ;;;;;;  0))
 ;;; Generated autoloads from find-dired.el
 
@@ -10630,16 +10635,18 @@ use in place of \"-ls\" as the final argument.
 
 (autoload 'find-name-dired "find-dired" "\
 Search DIR recursively for files matching the globbing pattern PATTERN,
-and run dired on those files.
+and run Dired on those files.
 PATTERN is a shell wildcard (not an Emacs regexp) and need not be quoted.
-The command run (after changing into DIR) is
+The default command run (after changing into DIR) is
 
     find . -name 'PATTERN' -ls
 
+See `find-name-arg' to customize the arguments.
+
 \(fn DIR PATTERN)" t nil)
 
 (autoload 'find-grep-dired "find-dired" "\
-Find files in DIR containing a regexp REGEXP and start Dired on output.
+Find files in DIR matching a regexp REGEXP and start Dired on output.
 The command run (after changing into DIR) is
 
   find . \\( -type f -exec `grep-program' `find-grep-options' \\
@@ -10652,7 +10659,7 @@ use in place of \"-ls\" as the final argument.
 
 ;;;***
 \f
-;;;### (autoloads nil "find-file" "find-file.el" (21187 63826 213216
+;;;### (autoloads nil "find-file" "find-file.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from find-file.el
 
@@ -10743,8 +10750,8 @@ Visit the file you click on in another window.
 
 ;;;***
 \f
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21230
+;;;;;;  10550 983182 0))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload 'find-library "find-func" "\
@@ -10923,7 +10930,7 @@ Change the filter on a `find-lisp-find-dired' buffer to REGEXP.
 
 ;;;***
 \f
-;;;### (autoloads nil "finder" "finder.el" (21187 63826 213216 0))
+;;;### (autoloads nil "finder" "finder.el" (21264 57319 597552 0))
 ;;; Generated autoloads from finder.el
 (push (purecopy '(finder 1 0)) package--builtin-versions)
 
@@ -10945,7 +10952,7 @@ Find packages matching a given keyword.
 
 ;;;***
 \f
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21187 63826 213216
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from flow-ctrl.el
 
@@ -10983,8 +10990,8 @@ to get the effect of a C-q.
 
 ;;;***
 \f
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21220 61111
-;;;;;;  156047 0))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21245 64312
+;;;;;;  799897 0))
 ;;; Generated autoloads from progmodes/flymake.el
 (push (purecopy '(flymake 0 3)) package--builtin-versions)
 
@@ -11014,8 +11021,8 @@ Turn flymake mode off.
 
 ;;;***
 \f
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -11085,14 +11092,14 @@ Flyspell whole buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "foldout" "foldout.el" (21187 63826 213216
+;;;### (autoloads nil "foldout" "foldout.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from foldout.el
 (push (purecopy '(foldout 1 10)) package--builtin-versions)
 
 ;;;***
 \f
-;;;### (autoloads nil "follow" "follow.el" (21207 49087 974317 0))
+;;;### (autoloads nil "follow" "follow.el" (21240 46395 727291 0))
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
@@ -11343,7 +11350,7 @@ and choose the directory as the fortune-file.
 
 ;;;***
 \f
-;;;### (autoloads nil "frameset" "frameset.el" (21187 63826 213216
+;;;### (autoloads nil "frameset" "frameset.el" (21253 58421 377974
 ;;;;;;  0))
 ;;; Generated autoloads from frameset.el
 
@@ -11500,7 +11507,9 @@ Store the current frameset in register REGISTER.
 Use \\[jump-to-register] to restore the frameset.
 Argument is a character, naming the register.
 
-\(fn REGISTER &optional ARG)" t nil)
+Interactively, reads the register using `register-read-with-preview'.
+
+\(fn REGISTER)" t nil)
 
 ;;;***
 \f
@@ -11511,8 +11520,8 @@ Argument is a character, naming the register.
 
 ;;;***
 \f
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/gdb-mi.el
 
 (defvar gdb-enable-debug nil "\
@@ -12268,8 +12277,8 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
 
 ;;;***
 \f
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21235 28473
+;;;;;;  29431 0))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12526,7 +12535,7 @@ A value of nil says to use the default GnuTLS value.")
 
 ;;;***
 \f
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21187 63826 213216
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from play/gomoku.el
 
@@ -12553,8 +12562,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 \f
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
@@ -12612,7 +12621,7 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
 
 ;;;***
 \f
-;;;### (autoloads nil "grep" "progmodes/grep.el" (21187 63826 213216
+;;;### (autoloads nil "grep" "progmodes/grep.el" (21245 64312 799897
 ;;;;;;  0))
 ;;; Generated autoloads from progmodes/grep.el
 
@@ -12654,8 +12663,9 @@ The default grep program for `grep-command' and `grep-find-command'.
 This variable's value takes effect when `grep-compute-defaults' is called.")
 
 (defvar find-program (purecopy "find") "\
-The default find program for `grep-find-command'.
-This variable's value takes effect when `grep-compute-defaults' is called.")
+The default find program.
+This is used by commands like `grep-find-command', `find-dired'
+and others.")
 
 (defvar xargs-program (purecopy "xargs") "\
 The default xargs program for `grep-find-command'.
@@ -12776,7 +12786,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'.
 
 ;;;***
 \f
-;;;### (autoloads nil "gs" "gs.el" (21187 63826 213216 0))
+;;;### (autoloads nil "gs" "gs.el" (21240 46395 727291 0))
 ;;; Generated autoloads from gs.el
 
 (autoload 'gs-load-image "gs" "\
@@ -12789,7 +12799,7 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if successful.
 
 ;;;***
 \f
-;;;### (autoloads nil "gud" "progmodes/gud.el" (21207 49087 974317
+;;;### (autoloads nil "gud" "progmodes/gud.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from progmodes/gud.el
 
@@ -12878,7 +12888,7 @@ it if ARG is omitted or nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21187 63826 213216
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21255 45558 780901
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/gv.el
 
@@ -12924,9 +12934,9 @@ arguments as NAME.  DO is a function as defined in `gv-get'.
 
 \(fn SYMBOL NAME ARGS HANDLER &optional FIX)" nil nil)
 
-(push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander)) defun-declarations-alist)
+(or (assq 'gv-expander defun-declarations-alist) (push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander)) defun-declarations-alist))
 
-(push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter)) defun-declarations-alist)
+(or (assq 'gv-setter defun-declarations-alist) (push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter)) defun-declarations-alist))
 
 (autoload 'gv-define-setter "gv" "\
 Define a setter method for generalized variable NAME.
@@ -12999,7 +13009,7 @@ Variables: `handwrite-linespace'     (default 12)
 
 ;;;***
 \f
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (20478 3673 653810
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from play/hanoi.el
 
@@ -13070,7 +13080,7 @@ Prefix arg sets default accept amount temporarily.
 
 ;;;***
 \f
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21187 63826 213216
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21231 31415 579137
 ;;;;;;  0))
 ;;; Generated autoloads from help-at-pt.el
 
@@ -13198,7 +13208,7 @@ different regions.  With numeric argument ARG, behaves like
 
 ;;;***
 \f
-;;;### (autoloads nil "help-fns" "help-fns.el" (21198 34110 565653
+;;;### (autoloads nil "help-fns" "help-fns.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from help-fns.el
 
@@ -13278,7 +13288,7 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file.
 
 ;;;***
 \f
-;;;### (autoloads nil "help-macro" "help-macro.el" (21187 63826 213216
+;;;### (autoloads nil "help-macro" "help-macro.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from help-macro.el
 
@@ -13293,7 +13303,7 @@ gives the window that lists the options.")
 
 ;;;***
 \f
-;;;### (autoloads nil "help-mode" "help-mode.el" (21187 63826 213216
+;;;### (autoloads nil "help-mode" "help-mode.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from help-mode.el
 
@@ -13393,8 +13403,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 \f
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
@@ -13409,7 +13419,7 @@ Provide help for current mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "hexl" "hexl.el" (21226 13501 706948 0))
+;;;### (autoloads nil "hexl" "hexl.el" (21240 46395 727291 0))
 ;;; Generated autoloads from hexl.el
 
 (autoload 'hexl-mode "hexl" "\
@@ -13503,7 +13513,7 @@ This discards the buffer's undo information.
 
 ;;;***
 \f
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21187 63826 213216
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (21236 49338 435234
 ;;;;;;  0))
 ;;; Generated autoloads from hi-lock.el
 
@@ -13597,9 +13607,8 @@ See `hi-lock-mode' for more information on Hi-Lock mode.
 
 (autoload 'hi-lock-line-face-buffer "hi-lock" "\
 Set face of all lines containing a match of REGEXP to FACE.
-Interactively, prompt for REGEXP then FACE.  Use
-`read-regexp-defaults-function' to customize default
-value(s) of REGEXP.  Use the global history list for FACE.
+Interactively, prompt for REGEXP using `read-regexp', then FACE.
+Use the global history list for FACE.
 
 Use Font lock mode, if enabled, to highlight REGEXP.  Otherwise,
 use overlays for highlighting.  If overlays are used, the
@@ -13611,9 +13620,8 @@ highlighting will not update as you type.
 
 (autoload 'hi-lock-face-buffer "hi-lock" "\
 Set face of each match of REGEXP to FACE.
-Interactively, prompt for REGEXP then FACE.  Use
-`read-regexp-defaults-function' to customize default
-value(s) of REGEXP.  Use the global history list for FACE.
+Interactively, prompt for REGEXP using `read-regexp', then FACE.
+Use the global history list for FACE.
 
 Use Font lock mode, if enabled, to highlight REGEXP.  Otherwise,
 use overlays for highlighting.  If overlays are used, the
@@ -13625,12 +13633,12 @@ highlighting will not update as you type.
 
 (autoload 'hi-lock-face-phrase-buffer "hi-lock" "\
 Set face of each match of phrase REGEXP to FACE.
-Interactively, prompt for REGEXP then FACE.  Use
-`read-regexp-defaults-function' to customize default
-value(s) of REGEXP.  Use the global history list for FACE.  When
-called interactively, replace whitespace in user provided regexp
-with arbitrary whitespace and make initial lower-case letters
-case-insensitive before highlighting with `hi-lock-set-pattern'.
+Interactively, prompt for REGEXP using `read-regexp', then FACE.
+Use the global history list for FACE.
+
+When called interactively, replace whitespace in user-provided
+regexp with arbitrary whitespace, and make initial lower-case
+letters case-insensitive, before highlighting with `hi-lock-set-pattern'.
 
 Use Font lock mode, if enabled, to highlight REGEXP.  Otherwise,
 use overlays for highlighting.  If overlays are used, the
@@ -13641,14 +13649,13 @@ highlighting will not update as you type.
 (defalias 'highlight-symbol-at-point 'hi-lock-face-symbol-at-point)
 
 (autoload 'hi-lock-face-symbol-at-point "hi-lock" "\
-Set face of each match of the symbol at point.
-Use `find-tag-default-as-symbol-regexp' to retrieve the symbol at point.
-Use non-nil `hi-lock-auto-select-face' to retrieve the next face
-from `hi-lock-face-defaults' automatically.
+Highlight each instance of the symbol at point.
+Uses the next face from `hi-lock-face-defaults' without prompting,
+unless you use a prefix argument.
+Uses `find-tag-default-as-symbol-regexp' to retrieve the symbol at point.
 
-Use Font lock mode, if enabled, to highlight symbol at point.
-Otherwise, use overlays for highlighting.  If overlays are used,
-the highlighting will not update as you type.
+This uses Font lock mode if it is enabled; otherwise it uses overlays,
+in which case the highlighting will not update as you type.
 
 \(fn)" t nil)
 
@@ -13674,8 +13681,8 @@ be found in variable `hi-lock-interactive-patterns'.
 
 ;;;***
 \f
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21223 37302
-;;;;;;  81938 0))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload 'hide-ifdef-mode "hideif" "\
@@ -13913,7 +13920,7 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21224 58166 697544
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from hippie-exp.el
 (push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
@@ -13946,7 +13953,7 @@ argument VERBOSE non-nil makes the function verbose.
 
 ;;;***
 \f
-;;;### (autoloads nil "hl-line" "hl-line.el" (21195 23530 495420
+;;;### (autoloads nil "hl-line" "hl-line.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from hl-line.el
 
@@ -14373,7 +14380,7 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 \f
-;;;### (autoloads nil "icomplete" "icomplete.el" (21187 63826 213216
+;;;### (autoloads nil "icomplete" "icomplete.el" (21265 49588 918402
 ;;;;;;  0))
 ;;; Generated autoloads from icomplete.el
 
@@ -14392,6 +14399,19 @@ With a prefix argument ARG, enable Icomplete mode if ARG is
 positive, and disable it otherwise.  If called from Lisp, enable
 the mode if ARG is omitted or nil.
 
+When this global minor mode is enabled, typing in the minibuffer
+continuously displays a list of possible completions that match
+the string you have typed.  See `icomplete-completions' for a
+description of how prospective completions are displayed.
+
+For more information, see Info node `(emacs)Icomplete'.
+For options you can set, `M-x customize-group icomplete'.
+
+You can use the following key bindings to navigate and select
+completions:
+
+\\{icomplete-minibuffer-map}
+
 \(fn &optional ARG)" t nil)
 
 ;;;***
@@ -14592,7 +14612,7 @@ The main features of this mode are
 
 ;;;***
 \f
-;;;### (autoloads nil "ido" "ido.el" (21227 34360 69622 0))
+;;;### (autoloads nil "ido" "ido.el" (21251 16696 39562 0))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14851,7 +14871,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 \f
-;;;### (autoloads nil "ielm" "ielm.el" (21226 13501 706948 0))
+;;;### (autoloads nil "ielm" "ielm.el" (21240 46395 727291 0))
 ;;; Generated autoloads from ielm.el
 
 (autoload 'ielm "ielm" "\
@@ -14879,7 +14899,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
 
 ;;;***
 \f
-;;;### (autoloads nil "image" "image.el" (21215 43189 822371 0))
+;;;### (autoloads nil "image" "image.el" (21261 4487 230861 399000))
 ;;; Generated autoloads from image.el
 
 (autoload 'image-type-from-data "image" "\
@@ -15321,7 +15341,7 @@ on these modes.
 
 ;;;***
 \f
-;;;### (autoloads nil "imenu" "imenu.el" (21187 63826 213216 0))
+;;;### (autoloads nil "imenu" "imenu.el" (21257 55477 969423 0))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15509,7 +15529,7 @@ of `inferior-lisp-program').  Runs the hooks from
 
 ;;;***
 \f
-;;;### (autoloads nil "info" "info.el" (21203 52022 581300 0))
+;;;### (autoloads nil "info" "info.el" (21263 61769 818166 484000))
 ;;; Generated autoloads from info.el
 
 (defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
@@ -15720,7 +15740,7 @@ Otherwise, visit the manual in a new Info buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "info-look" "info-look.el" (21187 63826 213216
+;;;### (autoloads nil "info-look" "info-look.el" (21238 4664 559807
 ;;;;;;  0))
 ;;; Generated autoloads from info-look.el
 
@@ -15740,7 +15760,7 @@ minibuffer.  In the minibuffer, use M-n to yank the default argument
 value into the minibuffer so you can edit it.  The default symbol is the
 one found at point.
 
-With prefix arg a query for the symbol help mode is offered.
+With prefix arg MODE a query for the symbol help mode is offered.
 
 \(fn SYMBOL &optional MODE)" t nil)
  (put 'info-lookup-file 'info-file "emacs")
@@ -15752,7 +15772,7 @@ In the minibuffer, use M-n to yank the default file name
 into the minibuffer so you can edit it.
 The default file name is the one found at point.
 
-With prefix arg a query for the file help mode is offered.
+With prefix arg MODE a query for the file help mode is offered.
 
 \(fn FILE &optional MODE)" t nil)
 
@@ -15852,7 +15872,7 @@ the sources handy.
 
 ;;;***
 \f
-;;;### (autoloads nil "informat" "informat.el" (21187 63826 213216
+;;;### (autoloads nil "informat" "informat.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from informat.el
 
@@ -15932,7 +15952,7 @@ Toggle input method in interactive search.
 
 ;;;***
 \f
-;;;### (autoloads nil "isearchb" "isearchb.el" (21187 63826 213216
+;;;### (autoloads nil "isearchb" "isearchb.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from isearchb.el
 (push (purecopy '(isearchb 1 5)) package--builtin-versions)
@@ -16039,7 +16059,7 @@ Add submenus to the File menu, to convert to and from various formats.
 ;;;***
 \f
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (21187 63826 213216 0))
+;;;;;;  (21240 46395 727291 0))
 ;;; Generated autoloads from international/iso-transl.el
  (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
  (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap)
@@ -16278,32 +16298,6 @@ You can bind this to the key C-c i in GNUS or mail by adding to
 
 \(fn)" t nil)
 
-;;;***
-\f
-;;;### (autoloads nil "iswitchb" "iswitchb.el" (21187 63826 213216
-;;;;;;  0))
-;;; Generated autoloads from iswitchb.el
-
-(defvar iswitchb-mode nil "\
-Non-nil if Iswitchb mode is enabled.
-See the command `iswitchb-mode' for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `iswitchb-mode'.")
-
-(custom-autoload 'iswitchb-mode "iswitchb" nil)
-
-(autoload 'iswitchb-mode "iswitchb" "\
-Toggle Iswitchb mode.
-With a prefix argument ARG, enable Iswitchb mode if ARG is
-positive, and disable it otherwise.  If called from Lisp, enable
-the mode if ARG is omitted or nil.
-
-Iswitchb mode is a global minor mode that enables switching
-between buffers using substrings.  See `iswitchb' for details.
-
-\(fn &optional ARG)" t nil)
-
 ;;;***
 \f
 ;;;### (autoloads nil "japan-util" "language/japan-util.el" (21187
@@ -16384,8 +16378,8 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
 
 ;;;***
 \f
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21208 39894 970127
-;;;;;;  901000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (21240 46395 727291
+;;;;;;  0))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16408,7 +16402,7 @@ by `jka-compr-installed'.
 
 ;;;***
 \f
-;;;### (autoloads nil "js" "progmodes/js.el" (21187 63826 213216
+;;;### (autoloads nil "js" "progmodes/js.el" (21243 22582 782931
 ;;;;;;  0))
 ;;; Generated autoloads from progmodes/js.el
 (push (purecopy '(js 9)) package--builtin-versions)
@@ -16528,7 +16522,7 @@ and the return value is the length of the conversion.
 
 ;;;***
 \f
-;;;### (autoloads nil "kmacro" "kmacro.el" (21187 63826 213216 0))
+;;;### (autoloads nil "kmacro" "kmacro.el" (21244 11875 194797 0))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16540,6 +16534,7 @@ and the return value is the length of the conversion.
 
 (autoload 'kmacro-exec-ring-item "kmacro" "\
 Execute item ITEM from the macro ring.
+ARG is the number of times to execute the item.
 
 \(fn ITEM ARG)" nil nil)
 
@@ -16808,7 +16803,7 @@ A major mode to edit GNU ld script files
 
 ;;;***
 \f
-;;;### (autoloads nil "life" "play/life.el" (21187 63826 213216 0))
+;;;### (autoloads nil "life" "play/life.el" (21240 46395 727291 0))
 ;;; Generated autoloads from play/life.el
 
 (autoload 'life "life" "\
@@ -16821,7 +16816,7 @@ generations (this defaults to 1).
 
 ;;;***
 \f
-;;;### (autoloads nil "linum" "linum.el" (21187 63826 213216 0))
+;;;### (autoloads nil "linum" "linum.el" (21240 46395 727291 0))
 ;;; Generated autoloads from linum.el
 (push (purecopy '(linum 0 9 24)) package--builtin-versions)
 
@@ -16858,7 +16853,7 @@ See `linum-mode' for more information on Linum mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "loadhist" "loadhist.el" (21187 63826 213216
+;;;### (autoloads nil "loadhist" "loadhist.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from loadhist.el
 
@@ -16942,7 +16937,7 @@ except that FILTER is not optional.
 
 ;;;***
 \f
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21204 16865 279294
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21239 25528 651427
 ;;;;;;  0))
 ;;; Generated autoloads from vc/log-edit.el
 
@@ -16985,7 +16980,7 @@ Major mode for browsing CVS log output.
 
 ;;;***
 \f
-;;;### (autoloads nil "lpr" "lpr.el" (21194 37048 599945 0))
+;;;### (autoloads nil "lpr" "lpr.el" (21240 46395 727291 0))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17080,7 +17075,7 @@ for further customization of the printer command.
 
 ;;;***
 \f
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21187 63826 213216
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from ls-lisp.el
 
@@ -17118,7 +17113,7 @@ A major mode to edit m4 macro files.
 
 ;;;***
 \f
-;;;### (autoloads nil "macros" "macros.el" (21187 63826 213216 0))
+;;;### (autoloads nil "macros" "macros.el" (21240 46395 727291 0))
 ;;; Generated autoloads from macros.el
 
 (autoload 'name-last-kbd-macro "macros" "\
@@ -17130,7 +17125,8 @@ Such a \"function\" cannot be called from Lisp, but it is a valid editor command
 \(fn SYMBOL)" t nil)
 
 (autoload 'insert-kbd-macro "macros" "\
-Insert in buffer the definition of kbd macro NAME, as Lisp code.
+Insert in buffer the definition of kbd macro MACRONAME, as Lisp code.
+MACRONAME should be a symbol.
 Optional second arg KEYS means also record the keys it is on
 \(this is the prefix argument, when calling interactively).
 
@@ -17206,8 +17202,8 @@ and then select the region of un-tablified names and use
 
 ;;;***
 \f
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload 'mail-extract-address-components "mail-extr" "\
@@ -17267,8 +17263,8 @@ This function normally would be called when the message is sent.
 
 ;;;***
 \f
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17342,8 +17338,8 @@ matches may be returned from the message body.
 
 ;;;***
 \f
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (defvar mail-abbrevs-mode nil "\
@@ -17392,8 +17388,8 @@ double-quotes.
 
 ;;;***
 \f
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style 'angles "\
@@ -17459,8 +17455,8 @@ The mail client is taken to be the handler of mailto URLs.
 
 ;;;***
 \f
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -17577,7 +17573,7 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 \f
-;;;### (autoloads nil "makesum" "makesum.el" (21187 63826 213216
+;;;### (autoloads nil "makesum" "makesum.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from makesum.el
 
@@ -17589,7 +17585,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 \f
-;;;### (autoloads nil "man" "man.el" (21187 63826 213216 0))
+;;;### (autoloads nil "man" "man.el" (21240 46395 727291 0))
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -17700,8 +17696,8 @@ recursion depth in the minibuffer prompt.  This is only useful if
 
 ;;;***
 \f
-;;;### (autoloads nil "message" "gnus/message.el" (21199 204 550114
-;;;;;;  319000))
+;;;### (autoloads nil "message" "gnus/message.el" (21239 25528 651427
+;;;;;;  0))
 ;;; Generated autoloads from gnus/message.el
 
 (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -18174,7 +18170,7 @@ is modified to remove the default indication.
 
 ;;;***
 \f
-;;;### (autoloads nil "misc" "misc.el" (21187 63826 213216 0))
+;;;### (autoloads nil "misc" "misc.el" (21240 46395 727291 0))
 ;;; Generated autoloads from misc.el
 
 (autoload 'butterfly "misc" "\
@@ -18202,7 +18198,7 @@ The return value is always nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "misearch" "misearch.el" (21187 63826 213216
+;;;### (autoloads nil "misearch" "misearch.el" (21245 64312 799897
 ;;;;;;  0))
 ;;; Generated autoloads from misearch.el
  (add-hook 'isearch-mode-hook 'multi-isearch-setup)
@@ -18467,8 +18463,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 \f
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (20355 10021
-;;;;;;  546955 0))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (defalias 'modula-2-mode 'm2-mode)
@@ -18595,7 +18591,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 \f
-;;;### (autoloads nil "msb" "msb.el" (21187 63826 213216 0))
+;;;### (autoloads nil "msb" "msb.el" (21240 46395 727291 0))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -19087,8 +19083,8 @@ a greeting from the server.
 
 ;;;***
 \f
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21260
+;;;;;;  57908 370145 500000))
 ;;; Generated autoloads from net/newst-backend.el
 
 (autoload 'newsticker-running-p "newst-backend" "\
@@ -19225,7 +19221,7 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 \f
-;;;### (autoloads nil "novice" "novice.el" (21187 63826 213216 0))
+;;;### (autoloads nil "novice" "novice.el" (21240 46395 727291 0))
 ;;; Generated autoloads from novice.el
 
 (define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
@@ -19257,8 +19253,8 @@ future sessions.
 
 ;;;***
 \f
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload 'nroff-mode "nroff-mode" "\
@@ -19366,8 +19362,8 @@ the variable `nxml-enabled-unicode-blocks'.
 
 ;;;***
 \f
-;;;### (autoloads nil "octave" "progmodes/octave.el" (21202 31159
-;;;;;;  541460 0))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/octave.el
 
 (autoload 'octave-mode "octave" "\
@@ -20067,8 +20063,8 @@ Load FILE with optional arguments NOERROR and MUSTSUFFIX.  Drop the MUSTSUFFIX a
 
 ;;;***
 \f
-;;;### (autoloads nil "org-version" "org/org-version.el" (21196 19423
-;;;;;;  102965 0))
+;;;### (autoloads nil "org-version" "org/org-version.el" (21260 56437
+;;;;;;  870858 217000))
 ;;; Generated autoloads from org/org-version.el
 
 (autoload 'org-release "org-version" "\
@@ -20083,12 +20079,9 @@ The Git version of org-mode.
 
 \(fn)" nil nil)
 
-(defvar org-odt-data-dir "/usr/share/emacs/etc/org" "\
-The location of ODT styles.")
-
 ;;;***
 \f
-;;;### (autoloads nil "outline" "outline.el" (21187 63826 213216
+;;;### (autoloads nil "outline" "outline.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'stringp)
@@ -20150,8 +20143,8 @@ See the command `outline-mode' for more information on this mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (21216 7010
-;;;;;;  238506 0))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (21242 52061
+;;;;;;  270865 616000))
 ;;; Generated autoloads from emacs-lisp/package.el
 (push (purecopy '(package 1 0 1)) package--builtin-versions)
 
@@ -20223,7 +20216,7 @@ The list is displayed in a buffer named `*Packages*'.
 
 ;;;***
 \f
-;;;### (autoloads nil "paren" "paren.el" (21187 63826 213216 0))
+;;;### (autoloads nil "paren" "paren.el" (21240 46395 727291 0))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -20694,8 +20687,8 @@ Global menu used by PCL-CVS.")
 
 ;;;***
 \f
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from progmodes/perl-mode.el
 (put 'perl-indent-level 'safe-local-variable 'integerp)
 (put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20756,8 +20749,8 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload 'picture-mode "picture" "\
@@ -20881,7 +20874,7 @@ pong-mode keybindings:\\<pong-mode-map>
 
 ;;;***
 \f
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21193 16180 875828 0))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (21240 46395 727291 0))
 ;;; Generated autoloads from gnus/pop3.el
 
 (autoload 'pop3-movemail "pop3" "\
@@ -21877,8 +21870,8 @@ If EXTENSION is any other symbol, it is ignored.
 
 ;;;***
 \f
-;;;### (autoloads nil "python" "progmodes/python.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "python" "progmodes/python.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from progmodes/python.el
 (push (purecopy '(python 0 24 2)) package--builtin-versions)
 
@@ -22661,8 +22654,8 @@ of master file.
 
 ;;;***
 \f
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload 'regexp-opt "regexp-opt" "\
@@ -22698,8 +22691,8 @@ This means the number of non-shy regexp grouping constructs
 
 ;;;***
 \f
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21222 16439
-;;;;;;  978802 0))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (21252 37559
+;;;;;;  125878 0))
 ;;; Generated autoloads from textmodes/remember.el
 (push (purecopy '(remember 2 0)) package--builtin-versions)
 
@@ -22729,35 +22722,31 @@ Extract diary entries from the region.
 \(fn)" nil nil)
 
 (autoload 'remember-notes "remember" "\
-Creates notes buffer and switches to it if called interactively.
-
-If a notes buffer created by a previous invocation of this
-function already exist, it will be returned.  Otherwise a new
-buffer will be created whose content will be read from file
-pointed by `remember-data-file'.  If a buffer visiting this file
-already exist, that buffer will be used instead of creating a new
-one (see `find-file-noselect' function for more details).
-
-Name of the created buffer is taken from `remember-notes-buffer-name'
-variable and if a buffer with that name already exist (but was not
-created by this function), it will be first killed.
-\\<remember-notes-mode-map>
-`remember-notes-mode' is active in the notes buffer which by default
-contains only one \\[save-and-bury-buffer] binding which saves and
-buries the buffer.
-
-Function returns notes buffer.  When called interactively,
-switches to it as well.
-
-Notes buffer is meant for keeping random notes which you'd like to
-preserve across Emacs restarts.  The notes will be stored in the
-`remember-data-file'.
+Return the notes buffer, creating it if needed, and maybe switch to it.
+This buffer is for notes that you want to preserve across Emacs sessions.
+The notes are saved in `remember-data-file'.
+
+If a buffer is already visiting that file, just return it.
+
+Otherwise, create the buffer, and rename it to `remember-notes-buffer-name',
+unless a buffer of that name already exists.  Set the major mode according
+to `remember-notes-initial-major-mode', and enable `remember-notes-mode'
+minor mode.
+
+Use \\<remember-notes-mode-map>\\[remember-notes-save-and-bury-buffer] to save and bury the notes buffer.
+
+Interactively, or if SWITCH-TO is non-nil, switch to the buffer.
+Return the buffer.
+
+Set `initial-buffer-choice' to `remember-notes' to visit your notes buffer
+when Emacs starts.  Set `remember-notes-buffer-name' to \"*scratch*\"
+to turn the *scratch* buffer into your notes buffer.
 
 \(fn &optional SWITCH-TO)" t nil)
 
 ;;;***
 \f
-;;;### (autoloads nil "repeat" "repeat.el" (21187 63826 213216 0))
+;;;### (autoloads nil "repeat" "repeat.el" (21239 25528 651427 0))
 ;;; Generated autoloads from repeat.el
 (push (purecopy '(repeat 0 51)) package--builtin-versions)
 
@@ -22780,8 +22769,8 @@ recently executed command not bound to an input event\".
 
 ;;;***
 \f
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21227 3131 80151
-;;;;;;  382000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload 'reporter-submit-bug-report "reporter" "\
@@ -22812,7 +22801,7 @@ mail-sending package is used for editing and sending the message.
 
 ;;;***
 \f
-;;;### (autoloads nil "reposition" "reposition.el" (21187 63826 213216
+;;;### (autoloads nil "reposition" "reposition.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from reposition.el
 
@@ -22874,7 +22863,7 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21187 63826 213216
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
@@ -22935,8 +22924,8 @@ variable.
 
 ;;;***
 \f
-;;;### (autoloads nil "rmail" "mail/rmail.el" (21215 8902 333002
-;;;;;;  878000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (21245 3427 941571
+;;;;;;  853000))
 ;;; Generated autoloads from mail/rmail.el
 
 (defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23133,8 +23122,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
 
 ;;;***
 \f
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/rmailout.el
 (put 'rmail-output-file-alist 'risky-local-variable t)
 
@@ -23315,7 +23304,7 @@ Start using robin package NAME, which is a string.
 
 ;;;***
 \f
-;;;### (autoloads nil "rot13" "rot13.el" (21187 63826 213216 0))
+;;;### (autoloads nil "rot13" "rot13.el" (21240 46395 727291 0))
 ;;; Generated autoloads from rot13.el
 
 (autoload 'rot13 "rot13" "\
@@ -23383,8 +23372,8 @@ for modes derived from Text mode, like Mail mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21228
-;;;;;;  55223 319602 0))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21257
+;;;;;;  55477 969423 0))
 ;;; Generated autoloads from progmodes/ruby-mode.el
 (push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
 
@@ -23395,7 +23384,7 @@ Major mode for editing Ruby code.
 
 \(fn)" t nil)
 
-(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." "rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|gemspec\\|podspec" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
+(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." "rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|gemspec\\|podspec" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
 
 (dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
 
@@ -23420,7 +23409,7 @@ if ARG is omitted or nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21193 16180 875828
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
@@ -23739,7 +23728,7 @@ enclosed in `(and ...)'.
 
 ;;;***
 \f
-;;;### (autoloads nil "savehist" "savehist.el" (21187 63826 213216
+;;;### (autoloads nil "savehist" "savehist.el" (21255 13756 851229
 ;;;;;;  0))
 ;;; Generated autoloads from savehist.el
 (push (purecopy '(savehist 24)) package--builtin-versions)
@@ -23852,8 +23841,8 @@ one window apply to all visible windows in the same frame.
 
 ;;;***
 \f
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23869,7 +23858,7 @@ vertically fixed relative to window boundaries during scrolling.
 
 ;;;***
 \f
-;;;### (autoloads nil "secrets" "net/secrets.el" (21187 63826 213216
+;;;### (autoloads nil "secrets" "net/secrets.el" (21256 34613 967717
 ;;;;;;  0))
 ;;; Generated autoloads from net/secrets.el
 (when (featurep 'dbusbind)
@@ -23957,8 +23946,8 @@ Major mode for editing Wisent grammars.
 
 ;;;***
 \f
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21194 37048
-;;;;;;  599945 0))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24239,7 +24228,7 @@ Like `mail' command, but display mail buffer in another frame.
 
 ;;;***
 \f
-;;;### (autoloads nil "server" "server.el" (21187 63826 213216 0))
+;;;### (autoloads nil "server" "server.el" (21240 46395 727291 0))
 ;;; Generated autoloads from server.el
 
 (put 'server-host 'risky-local-variable t)
@@ -24350,8 +24339,8 @@ formula:
 
 ;;;***
 \f
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload 'sgml-mode "sgml-mode" "\
@@ -24416,8 +24405,8 @@ To work around that, do:
 
 ;;;***
 \f
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21215
-;;;;;;  8729 374161 0))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from progmodes/sh-script.el
 (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
 (put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24570,7 +24559,7 @@ Set up file shadowing.
 
 ;;;***
 \f
-;;;### (autoloads nil "shell" "shell.el" (21187 63826 213216 0))
+;;;### (autoloads nil "shell" "shell.el" (21240 46395 727291 0))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24618,7 +24607,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
 ;;;***
 \f
-;;;### (autoloads nil "shr" "net/shr.el" (21228 55223 319602 0))
+;;;### (autoloads nil "shr" "net/shr.el" (21264 60073 653706 828000))
 ;;; Generated autoloads from net/shr.el
 
 (autoload 'shr-render-region "shr" "\
@@ -24726,7 +24715,7 @@ with no arguments, if that value is non-nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "skeleton" "skeleton.el" (21187 63826 213216
+;;;### (autoloads nil "skeleton" "skeleton.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from skeleton.el
 
@@ -25046,7 +25035,7 @@ Pick your favorite shortcuts:
 
 ;;;***
 \f
-;;;### (autoloads nil "sort" "sort.el" (21227 34360 69622 0))
+;;;### (autoloads nil "sort" "sort.el" (21240 46395 727291 0))
 ;;; Generated autoloads from sort.el
 (put 'sort-fold-case 'safe-local-variable 'booleanp)
 
@@ -25303,7 +25292,7 @@ selected.  If the speedbar frame is active, then select the attached frame.
 
 ;;;***
 \f
-;;;### (autoloads nil "spook" "play/spook.el" (21187 63826 213216
+;;;### (autoloads nil "spook" "play/spook.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from play/spook.el
 
@@ -25319,10 +25308,10 @@ Return a vector containing the lines from `spook-phrases-file'.
 
 ;;;***
 \f
-;;;### (autoloads nil "sql" "progmodes/sql.el" (21190 39993 744837
-;;;;;;  0))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (21263 60346 30834
+;;;;;;  928000))
 ;;; Generated autoloads from progmodes/sql.el
-(push (purecopy '(sql 3 3)) package--builtin-versions)
+(push (purecopy '(sql 3 4)) package--builtin-versions)
 
 (autoload 'sql-add-product-keywords "sql" "\
 Add highlighting KEYWORDS for SQL PRODUCT.
@@ -25825,7 +25814,7 @@ GnuTLS requires a port number.
 
 ;;;***
 \f
-;;;### (autoloads nil "strokes" "strokes.el" (21222 16439 978802
+;;;### (autoloads nil "strokes" "strokes.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from strokes.el
 
@@ -25939,7 +25928,7 @@ Read a complex stroke and insert its glyph into the current buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "studly" "play/studly.el" (20355 10021 546955
+;;;### (autoloads nil "studly" "play/studly.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from play/studly.el
 
@@ -26055,8 +26044,8 @@ See `superword-mode' for more information on Superword mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21215 9357
-;;;;;;  840145 208000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload 'sc-cite-original "supercite" "\
@@ -26088,7 +26077,7 @@ and `sc-post-hook' is run after the guts of this function.
 
 ;;;***
 \f
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21187 63826 213216
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from t-mouse.el
 
@@ -26117,7 +26106,7 @@ It relies on the `gpm' daemon being activated.
 
 ;;;***
 \f
-;;;### (autoloads nil "tabify" "tabify.el" (21187 63826 213216 0))
+;;;### (autoloads nil "tabify" "tabify.el" (21240 46395 727291 0))
 ;;; Generated autoloads from tabify.el
 
 (autoload 'untabify "tabify" "\
@@ -26739,7 +26728,7 @@ converts a table into plain text without frames.  It is a companion to
 
 ;;;***
 \f
-;;;### (autoloads nil "talk" "talk.el" (21187 63826 213216 0))
+;;;### (autoloads nil "talk" "talk.el" (21240 46395 727291 0))
 ;;; Generated autoloads from talk.el
 
 (autoload 'talk-connect "talk" "\
@@ -26754,7 +26743,7 @@ Connect to the Emacs talk group from the current X display or tty frame.
 
 ;;;***
 \f
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21187 63826 213216
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from tar-mode.el
 
@@ -26778,7 +26767,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
 
 ;;;***
 \f
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21187 63826 213216
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from progmodes/tcl.el
 
@@ -26827,7 +26816,7 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
 
 ;;;***
 \f
-;;;### (autoloads nil "telnet" "net/telnet.el" (21187 63826 213216
+;;;### (autoloads nil "telnet" "net/telnet.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from net/telnet.el
 
@@ -26932,8 +26921,8 @@ tetris-mode keybindings:
 
 ;;;***
 \f
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21199 54969
-;;;;;;  178188 0))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27274,8 +27263,8 @@ if large.  You can use `Info-split' to do this manually.
 
 ;;;***
 \f
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote (purecopy "``") "\
@@ -27387,7 +27376,7 @@ Compose Thai characters in the current buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (21187 63826 213216
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from thingatpt.el
 
@@ -27452,7 +27441,7 @@ Return the Lisp list at point, or nil if none is found.
 
 ;;;***
 \f
-;;;### (autoloads nil "thumbs" "thumbs.el" (21187 63826 213216 0))
+;;;### (autoloads nil "thumbs" "thumbs.el" (21240 46395 727291 0))
 ;;; Generated autoloads from thumbs.el
 
 (autoload 'thumbs-find-thumb "thumbs" "\
@@ -27585,7 +27574,7 @@ This function performs no refilling of the changed text.
 
 ;;;***
 \f
-;;;### (autoloads nil "time" "time.el" (21187 63826 213216 0))
+;;;### (autoloads nil "time" "time.el" (21240 46395 727291 0))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27933,7 +27922,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
 
 ;;;***
 \f
-;;;### (autoloads nil "tmm" "tmm.el" (21187 63826 213216 0))
+;;;### (autoloads nil "tmm" "tmm.el" (21240 46395 727291 0))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28186,7 +28175,7 @@ your local X guru can try to figure out why the key is being ignored.
 
 ;;;***
 \f
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21187 63826 213216
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
@@ -28200,8 +28189,8 @@ to a tcp server on another machine.
 
 ;;;***
 \f
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21227 34360
-;;;;;;  69622 0))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -28246,7 +28235,7 @@ the output buffer or changing the window configuration.
 
 ;;;***
 \f
-;;;### (autoloads nil "tramp" "net/tramp.el" (21209 55410 356925
+;;;### (autoloads nil "tramp" "net/tramp.el" (21263 60369 592555
 ;;;;;;  0))
 ;;; Generated autoloads from net/tramp.el
 
@@ -28381,7 +28370,7 @@ Discard Tramp from loading remote files.
 
 ;;;***
 \f
-;;;### (autoloads nil "tutorial" "tutorial.el" (21187 63826 213216
+;;;### (autoloads nil "tutorial" "tutorial.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from tutorial.el
 
@@ -28677,8 +28666,8 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus.
 
 ;;;***
 \f
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload 'underline-region "underline" "\
@@ -28698,7 +28687,7 @@ which specify the range to operate on.
 
 ;;;***
 \f
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21199 54969 178188
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from mail/unrmail.el
 
@@ -29364,8 +29353,8 @@ This uses `url-current-object', set locally to the buffer.
 
 ;;;***
 \f
-;;;### (autoloads nil "userlock" "userlock.el" (21187 63826 213216
-;;;;;;  0))
+;;;### (autoloads nil "userlock" "userlock.el" (21260 57764 872288
+;;;;;;  374000))
 ;;; Generated autoloads from userlock.el
 
 (autoload 'ask-user-about-lock "userlock" "\
@@ -29735,8 +29724,8 @@ Return the branch part of a revision number REV.
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21187 63826
-;;;;;;  213216 0))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21240 46395
+;;;;;;  727291 0))
 ;;; Generated autoloads from vc/vc-annotate.el
 
 (autoload 'vc-annotate "vc-annotate" "\
@@ -29784,7 +29773,7 @@ mode-specific menu.  `vc-annotate-color-map' and
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21187 63826 213216
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from vc/vc-bzr.el
 
@@ -29874,7 +29863,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21187 63826 213216 0))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21240 46395 727291 0))
 ;;; Generated autoloads from vc/vc-hg.el
  (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
@@ -31091,8 +31080,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
 
 ;;;***
 \f
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21187
-;;;;;;  63826 213216 0))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21240
+;;;;;;  46395 727291 0))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -31152,6 +31141,7 @@ See also `warning-series', `warning-prefix-function' and
 
 (autoload 'lwarn "warnings" "\
 Display a warning message made from (format MESSAGE ARGS...).
+\\<special-mode-map>
 Aside from generating the message with `format',
 this is equivalent to `display-warning'.
 
@@ -31247,7 +31237,7 @@ in certain major modes.
 
 ;;;***
 \f
-;;;### (autoloads nil "whitespace" "whitespace.el" (21222 47372 997188
+;;;### (autoloads nil "whitespace" "whitespace.el" (21255 45558 780901
 ;;;;;;  0))
 ;;; Generated autoloads from whitespace.el
 (push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
@@ -31676,7 +31666,7 @@ if ARG is omitted or nil.
 
 ;;;***
 \f
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (21197 43194 200483
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (21240 46395 727291
 ;;;;;;  0))
 ;;; Generated autoloads from wid-edit.el
 
@@ -31795,7 +31785,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
 
 ;;;***
 \f
-;;;### (autoloads nil "woman" "woman.el" (21220 61111 156047 0))
+;;;### (autoloads nil "woman" "woman.el" (21240 46395 727291 0))
 ;;; Generated autoloads from woman.el
 (push (purecopy '(woman 0 551)) package--builtin-versions)
 
@@ -32201,8 +32191,8 @@ Zone out, completely.
 ;;;;;;  "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
 ;;;;;;  "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
 ;;;;;;  "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el"
-;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21228 55244 661375
-;;;;;;  865000))
+;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21265 49730 375624
+;;;;;;  657000))
 
 ;;;***
 \f
index b4e9402fcba19e8bd5608770d57783477cd21143..b3d37ac4b1b430780cc58f373e7f2b532b6c2557 100644 (file)
@@ -1,7 +1,13 @@
-2014-02-24  Bill Wohler  <wohler@newt.com>
+2014-03-16  Bill Wohler  <wohler@newt.com>
 
        * mh-folder.el (mh-regenerate-headers): Fix scan: bad message list
        `unseen' error (closes SF #471).
+       * mh-e.el (mh-version): Add +bzr to version.
+
+2014-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * mh-compat.el (mh-display-completion-list):
+       Replace use of obsolete argument of display-completion-list.
 
 2013-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 
        * mh-comp.el (mh-regexp-in-field-p): Minor simplification.
 
-2013-03-03  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.el (mh-version): Add +bzr to version.
-
 2013-03-02  Bill Wohler  <wohler@newt.com>
 
        Release MH-E version 8.5.
 
 2011-07-09  Bill Wohler  <wohler@newt.com>
 
-       * mh-speed.el (mh-speed-toggle,mh-speed-view): Document "ignored"
+       * mh-speed.el (mh-speed-toggle, mh-speed-view): Document "ignored"
        arguments to keep checkdoc happy.
 
        * mh-search.el (mh-flists-execute): Ditto.
 2009-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * mh-thread.el (mh-thread-set-tables):
-       * mh-speed.el (mh-folder-speedbar-menu-items, mh-speed-stealth-update):
-       (mh-speed-extract-folder-name, mh-speed-parse-flists-output):
+       * mh-speed.el (mh-folder-speedbar-menu-items, mh-speed-stealth-update)
+       (mh-speed-extract-folder-name, mh-speed-parse-flists-output)
        (mh-speed-invalidate-map, mh-speed-add-folder):
        * mh-show.el (mh-invalidate-show-buffer, mh-show-sequence-menu):
        * mh-seq.el (mh-list-sequences):
        * mh-e.el (mh-exec-cmd, mh-exec-cmd-error, mh-exec-cmd-daemon)
        (mh-handle-process-error, mh-variant-info):
        * mh-comp.el (mh-forward):
-       * mh-alias.el (mh-alias-local-users, mh-alias-which-file-has-alias):
+       * mh-alias.el (mh-alias-local-users, mh-alias-which-file-has-alias)
        (mh-alias-add-alias-to-file): Use with-current-buffer (closes SF
        #1903293).
 
 
        * mh-acros.el (mh-do-in-gnu-emacs, mh-do-in-xemacs)
        (with-mh-folder-updating, mh-in-show-buffer)
-       (mh-iterate-on-messages-in-region, mh-iterate-on-range):
+       (mh-iterate-on-messages-in-region, mh-iterate-on-range)
        (mh-do-at-event-location): Add debug decls.
        (mh-seq-msgs): Use defsubst.
 
index af9f1364970bf6ea214fa3aadca15cfb1aa797b6..db46be7bec44a337e105dcc751d4a6adf232d021 100644 (file)
@@ -96,12 +96,18 @@ expected to return an integer."
 (defmacro mh-display-completion-list (completions &optional common-substring)
   "Display the list of COMPLETIONS.
 See documentation for `display-completion-list' for a description of the
-arguments COMPLETIONS and perhaps COMMON-SUBSTRING.
-This macro is used by Emacs versions that lack a COMMON-SUBSTRING
-argument, introduced in Emacs 22."
-  (if (< emacs-major-version 22)
-      `(display-completion-list ,completions)
-    `(display-completion-list ,completions ,common-substring)))
+arguments COMPLETIONS.
+The optional argument COMMON-SUBSTRING, if non-nil, should be a string
+specifying a common substring for adding the faces
+`completions-first-difference' and `completions-common-part' to
+the completions."
+  (cond ((< emacs-major-version 22) `(display-completion-list ,completions))
+        ((fboundp 'completion-hilit-commonality) ; Emacs 23.1 and later
+         `(display-completion-list
+           (completion-hilit-commonality ,completions
+                                         ,(length common-substring) nil)))
+        (t                              ; Emacs 22
+         `(display-completion-list ,completions ,common-substring))))
 
 (defmacro mh-face-foreground (face &optional frame inherit)
   "Return the foreground color name of FACE, or nil if unspecified.
index edc4c950104b60d2ac1e3da5037cc45d75c26f20..bbb7114610db49d7902c103013d15c75f907d148 100644 (file)
@@ -179,7 +179,9 @@ FUN will be called in the buffer from which the minibuffer was entered.
 
 The result of the `completion-table-dynamic' form is a function
 that can be used as the COLLECTION argument to `try-completion' and
-`all-completions'.  See Info node `(elisp)Programmed Completion'."
+`all-completions'.  See Info node `(elisp)Programmed Completion'.
+
+See also the related function `completion-table-with-cache'."
   (lambda (string pred action)
     (if (or (eq (car-safe action) 'boundaries) (eq action 'metadata))
         ;; `fun' is not supposed to return another function but a plain old
@@ -191,13 +193,15 @@ that can be used as the COLLECTION argument to `try-completion' and
         (complete-with-action action (funcall fun string) string pred)))))
 
 (defun completion-table-with-cache (fun &optional ignore-case)
-  "Create dynamic completion table from FUN, with cache.
-This wraps `completion-table-dynamic', but saves the last
+  "Create dynamic completion table from function FUN, with cache.
+This is a wrapper for `completion-table-dynamic' that saves the last
 argument-result pair from FUN, so that several lookups with the
 same argument (or with an argument that starts with the first one)
-only need to call FUN once.  Most useful when FUN performs a relatively
-slow operation, such as calling an external process (see Bug#11906).
+only need to call FUN once.  This can be useful when FUN performs a
+relatively slow operation, such as calling an external process.
+
 When IGNORE-CASE is non-nil, FUN is expected to be case-insensitive."
+  ;; See eg bug#11906.
   (let* (last-arg last-result
          (new-fun
           (lambda (arg)
@@ -850,12 +854,12 @@ completing buffer and file names, respectively."
              (setq table (pop new))
              (setq point (pop new))
              (pop new))))
-       (result
-        (completion--some (lambda (style)
-                            (funcall (nth n (assq style
-                                                  completion-styles-alist))
-                                     string table pred point))
-                          (completion--styles metadata))))
+        (result
+         (completion--some (lambda (style)
+                             (funcall (nth n (assq style
+                                                   completion-styles-alist))
+                                      string table pred point))
+                           (completion--styles metadata))))
     (if requote
         (funcall requote result n)
       result)))
@@ -1371,7 +1375,7 @@ appear to be a match."
                                   (concat before ext after)
                                   table predicate (1+ point) md))
                                exts))))
-         (when (and (= 1 (length comps) (consp (car comps))))
+         (when (and (null (cdr comps)) (consp (car comps)))
            (setq comp (car comps)))))
 
       ;; Completing a single word is actually more difficult than completing
@@ -1572,15 +1576,26 @@ See also `display-completion-list'.")
 
 (defface completions-first-difference
   '((t (:inherit bold)))
-  "Face added on the first uncommon character in completions in *Completions* buffer.")
+  "Face for the first uncommon character in completions.
+See also the face `completions-common-part'.")
 
 (defface completions-common-part '((t nil))
-  "Face added on the common prefix substring in completions in *Completions* buffer.
-The idea of `completions-common-part' is that you can use it to
-make the common parts less visible than normal, so that the rest
-of the differing parts is, by contrast, slightly highlighted.")
-
-(defun completion-hilit-commonality (completions prefix-len base-size)
+  "Face for the common prefix substring in completions.
+The idea of this face is that you can use it to make the common parts
+less visible than normal, so that the differing parts are emphasized
+by contrast.
+See also the face `completions-first-difference'.")
+
+(defun completion-hilit-commonality (completions prefix-len &optional base-size)
+  "Apply font-lock highlighting to a list of completions, COMPLETIONS.
+PREFIX-LEN is an integer.  BASE-SIZE is an integer or nil (meaning zero).
+
+This adds the face `completions-common-part' to the first
+\(PREFIX-LEN - BASE-SIZE) characters of each completion, and the face
+`completions-first-difference' to the first character after that.
+
+It returns a list with font-lock properties applied to each element,
+and with BASE-SIZE appended as the last element."
   (when completions
     (let ((com-str-len (- prefix-len (or base-size 0))))
       (nconc
index 3500c84dde908fd4e09a40a5d27fe1aec39e8d7d..4d146a33248a99cad098cab09ca26cbb363776dc 100644 (file)
@@ -35,7 +35,7 @@
 
 ;; Declare used subroutines and variables.
 (declare-function dbus-message-internal "dbusbind.c")
-(declare-function dbus-init-bus-1 "dbusbind.c")
+(declare-function dbus--init-bus "dbusbind.c")
 (defvar dbus-message-type-invalid)
 (defvar dbus-message-type-method-call)
 (defvar dbus-message-type-method-return)
@@ -55,6 +55,9 @@
 (defconst dbus-path-dbus "/org/freedesktop/DBus"
   "The object path used to talk to the bus itself.")
 
+(defconst dbus-path-local (concat dbus-path-dbus "/Local")
+  "The object path used in local/in-process-generated messages.")
+
 ;; Default D-Bus interfaces.
 
 (defconst dbus-interface-dbus "org.freedesktop.DBus"
@@ -129,6 +132,15 @@ See URL `http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interf
 ;;   </signal>
 ;; </interface>
 
+(defconst dbus-interface-local (concat dbus-interface-dbus ".Local")
+  "An interface whose methods can only be invoked by the local implementation.")
+
+;; <interface name="org.freedesktop.DBus.Local">
+;;   <signal name="Disconnected">
+;;     <arg name="object_path"               type="o"/>
+;;   </signal>
+;; </interface>
+
 ;; Emacs defaults.
 (defconst dbus-service-emacs "org.gnu.Emacs"
   "The well known service name of Emacs.")
@@ -167,15 +179,20 @@ caught in `condition-case' by `dbus-error'.")
 A key in this hash table is a list (:serial BUS SERIAL), like in
 `dbus-registered-objects-table'.  BUS is either a Lisp symbol,
 `:system' or `:session', or a string denoting the bus address.
-SERIAL is the serial number of the reply message.")
+SERIAL is the serial number of the reply message.
+
+The value of an entry is a cons (STATE . RESULT).  STATE can be
+either `:pending' (we are still waiting for the result),
+`:complete' (the result is available) or `:error' (the reply
+message was an error message).")
 
 (defun dbus-call-method-handler (&rest args)
   "Handler for reply messages of asynchronous D-Bus message calls.
 It calls the function stored in `dbus-registered-objects-table'.
 The result will be made available in `dbus-return-values-table'."
-  (let* ((key (list  :serial
-                     (dbus-event-bus-name last-input-event)
-                     (dbus-event-serial-number last-input-event)))
+  (let* ((key (list :serial
+                   (dbus-event-bus-name last-input-event)
+                   (dbus-event-serial-number last-input-event)))
          (result (gethash key dbus-return-values-table)))
     (when (consp result)
       (setcar result :complete)
@@ -183,9 +200,9 @@ The result will be made available in `dbus-return-values-table'."
 
 (defun dbus-notice-synchronous-call-errors (ev er)
   "Detect errors resulting from pending synchronous calls."
-  (let* ((key (list  :serial
-                     (dbus-event-bus-name ev)
-                     (dbus-event-serial-number ev)))
+  (let* ((key (list :serial
+                   (dbus-event-bus-name ev)
+                   (dbus-event-serial-number ev)))
          (result (gethash key dbus-return-values-table)))
     (when (consp result)
       (setcar result :error)
@@ -1718,7 +1735,7 @@ pending at the time of disconnect to fail."
                 nil
                 nil
                 value)
-          '(dbus-error "Bus disconnected"))
+          (list 'dbus-error "Bus disconnected" bus))
          (push key keys-to-remove)))
      dbus-registered-objects-table)
     (dolist (key keys-to-remove)
@@ -1745,14 +1762,11 @@ This can be used, if it is necessary to distinguish from another
 connection used in the same Emacs process, like the one established by
 GTK+.  It should be used with care for at least the `:system' and
 `:session' buses, because other Emacs Lisp packages might already use
-this connection to those buses.
-"
-  (dbus-init-bus-1 bus private)
-  (dbus-register-signal bus nil
-                        "/org/freedesktop/DBus/Local"
-                        "org.freedesktop.DBus.Local"
-                        "Disconnected"
-                        #'dbus-handle-bus-disconnect))
+this connection to those buses."
+  (dbus--init-bus bus private)
+  (dbus-register-signal
+   bus nil dbus-path-local dbus-interface-local
+   "Disconnected" #'dbus-handle-bus-disconnect))
 
  \f
 ;; Initialize `:system' and `:session' buses.  This adds their file
index 65b1c6b2d7dedf0a839fda55c3a8d1077f1ccd1e..e8eb09c9a8e3f8369a4728ccdaa58195b533b0de 100644 (file)
@@ -186,12 +186,6 @@ word(s) will be searched for via `eww-search-prefix'."
   (let ((redirect (plist-get status :redirect)))
     (when redirect
       (setq url redirect)))
-  (setq-local eww-next-url nil)
-  (setq-local eww-previous-url nil)
-  (setq-local eww-up-url nil)
-  (setq-local eww-home-url nil)
-  (setq-local eww-start-url nil)
-  (setq-local eww-contents-url nil)
   (let* ((headers (eww-parse-headers))
         (content-type
          (mail-header-parse-content-type
@@ -393,7 +387,13 @@ word(s) will be searched for via `eww-search-prefix'."
     (remove-overlays)
     (erase-buffer))
   (unless (eq major-mode 'eww-mode)
-    (eww-mode)))
+    (eww-mode))
+  (setq-local eww-next-url nil)
+  (setq-local eww-previous-url nil)
+  (setq-local eww-up-url nil)
+  (setq-local eww-home-url nil)
+  (setq-local eww-start-url nil)
+  (setq-local eww-contents-url nil))
 
 (defun eww-view-source ()
   (interactive)
@@ -412,8 +412,8 @@ word(s) will be searched for via `eww-search-prefix'."
     (suppress-keymap map)
     (define-key map "q" 'quit-window)
     (define-key map "g" 'eww-reload)
-    (define-key map [tab] 'shr-next-link)
-    (define-key map [backtab] 'shr-previous-link)
+    (define-key map [?\t] 'shr-next-link)
+    (define-key map [?\M-\t] 'shr-previous-link)
     (define-key map [delete] 'scroll-down-command)
     (define-key map [?\S-\ ] 'scroll-down-command)
     (define-key map "\177" 'scroll-down-command)
@@ -592,8 +592,8 @@ appears in a <link> or <a> tag."
     (define-key map [(control a)] 'eww-beginning-of-text)
     (define-key map [(control c) (control c)] 'eww-submit)
     (define-key map [(control e)] 'eww-end-of-text)
-    (define-key map [tab] 'shr-next-link)
-    (define-key map [backtab] 'shr-previous-link)
+    (define-key map [?\t] 'shr-next-link)
+    (define-key map [?\M-\t] 'shr-previous-link)
     map))
 
 (defvar eww-textarea-map
@@ -601,8 +601,8 @@ appears in a <link> or <a> tag."
     (set-keymap-parent map text-mode-map)
     (define-key map "\r" 'forward-line)
     (define-key map [(control c) (control c)] 'eww-submit)
-    (define-key map [tab] 'shr-next-link)
-    (define-key map [backtab] 'shr-previous-link)
+    (define-key map [?\t] 'shr-next-link)
+    (define-key map [?\M-\t] 'shr-previous-link)
     map))
 
 (defvar eww-select-map
index 7736e29b0dae2e902fe84e24999739340aa34376..f67baccda7ce7c1877dbdbf147d51a86c7a66b83 100644 (file)
@@ -196,7 +196,7 @@ RSS or Atom file.  The file is retrieved by calling wget, or whatever you
 specify as `newsticker-wget-name'.
 
 URL may also be a function which returns news data.  In this case
-`newsticker-retrieval-method' etc.  are ignored for this feed.
+`newsticker-retrieval-method' etc. are ignored for this feed.
 
 The START-TIME can be either a string, or nil.  If it is a string it
 specifies a fixed time at which this feed shall be retrieved for the
index f23faaa3437704e926609653a726a52dac36989d..8b68b6f4bc7fbf355dee8d549a3149a45fec4901 100644 (file)
@@ -100,6 +100,12 @@ Alternative suggestions are:
   :group 'shr
   :type 'function)
 
+(defcustom shr-image-animate t
+  "Non nil means that images that can be animated will be."
+  :version "24.4"
+  :group 'shr
+  :type 'boolean)
+
 (defvar shr-content-function nil
   "If bound, this should be a function that will return the content.
 This is used for cid: URLs, and the function is called with the
@@ -141,8 +147,8 @@ cid: URL as the argument.")
     (define-key map "a" 'shr-show-alt-text)
     (define-key map "i" 'shr-browse-image)
     (define-key map "z" 'shr-zoom-image)
-    (define-key map [tab] 'shr-next-link)
-    (define-key map [backtab] 'shr-previous-link)
+    (define-key map [?\t] 'shr-next-link)
+    (define-key map [?\M-\t] 'shr-previous-link)
     (define-key map [follow-link] 'mouse-face)
     (define-key map [mouse-2] 'shr-browse-url)
     (define-key map "I" 'shr-insert-image)
@@ -765,14 +771,15 @@ element is the data blob and the second element is the content-type."
              (insert-sliced-image image (or alt "*") nil 20 1)
            (insert-image image (or alt "*")))
          (put-text-property start (point) 'image-size size)
-         (when (cond ((fboundp 'image-multi-frame-p)
+         (when (and shr-image-animate
+                     (cond ((fboundp 'image-multi-frame-p)
                       ;; Only animate multi-frame things that specify a
                       ;; delay; eg animated gifs as opposed to
                       ;; multi-page tiffs.  FIXME?
-                      (cdr (image-multi-frame-p image)))
-                     ((fboundp 'image-animated-p)
-                      (image-animated-p image)))
-           (image-animate image nil 60)))
+                            (cdr (image-multi-frame-p image)))
+                           ((fboundp 'image-animated-p)
+                            (image-animated-p image))))
+            (image-animate image nil 60)))
        image)
     (insert alt)))
 
index 556a7b4adc28394536dededa2f29dd5ec20c2a22..90ee20c8118fa8ea683d6d31b0c89e558c297ad6 100644 (file)
@@ -102,7 +102,7 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
 ;;; Customization support
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (defgroup socks nil
-  "SOCKS Support"
+  "SOCKS support."
   :version "22.2"
   :prefix "socks-"
   :group 'processes)
@@ -347,7 +347,7 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
 ;; could get a wrapper hook, or defer to open-network-stream-function.
 
 (defvar socks-override-functions nil
-  "Whether to overwrite the open-network-stream function with the SOCKSified
+  "Whether to overwrite the `open-network-stream' function with the SOCKSified
 version.")
 
 (require 'network-stream)
@@ -533,7 +533,7 @@ version.")
                             socks-tcp-services))))))
 
 (defun socks-find-services-entry (service &optional udp)
-  "Return the port # associated with SERVICE"
+  "Return the port # associated with SERVICE."
   (if (= (hash-table-count socks-tcp-services) 0)
       (socks-parse-services))
   (gethash (downcase service)
index 8d7c695b3c34926c51f6e4a85711513eac2a3e45..6abb0483d52d849910c95fc9c64a46ca64effc61 100644 (file)
@@ -80,8 +80,7 @@ and `gnutls-cli' (version 2.0.1) output."
   "List of strings containing commands to start TLS stream to a host.
 Each entry in the list is tried until a connection is successful.
 %h is replaced with server hostname, %p with port to connect to.
-The program should read input on stdin and write output to
-stdout.
+The program should read input on stdin and write output to stdout.
 
 See `tls-checktrust' on how to check trusted root certs.
 
index 8f2098c136b565d5e055452bc1632316f279ffd2..27f20dea754e23cf56562926e7c3b6fd5cd0d400 100644 (file)
@@ -38,7 +38,6 @@
 
 ;; Pacify byte-compiler.
 (defvar directory-sep-char)
-(defvar dired-move-to-filename-regexp)
 
 (defcustom tramp-adb-program "adb"
   "Name of the Android Debug Bridge program."
     (find-backup-file-name . tramp-handle-find-backup-file-name)
     ;; `find-file-noselect' performed by default handler.
     ;; `get-file-buffer' performed by default handler.
-    (insert-directory . tramp-adb-handle-insert-directory)
+    (insert-directory . tramp-handle-insert-directory)
     (insert-file-contents . tramp-handle-insert-file-contents)
     (load . tramp-handle-load)
     (make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
@@ -187,7 +186,8 @@ pass to the OPERATION."
            result)
        (tramp-compat-set-process-query-on-exit-flag p nil)
        (while (eq 'run (process-status p))
-         (sleep-for 0.1))
+         (accept-process-output p 0.1))
+       (accept-process-output p 0.1)
        (goto-char (point-min))
        (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t)
          (add-to-list 'result (list nil (match-string 1))))
@@ -228,98 +228,105 @@ pass to the OPERATION."
 ;; code could be shared?
 (defun tramp-adb-handle-file-truename (filename)
   "Like `file-truename' for Tramp files."
-  (with-parsed-tramp-file-name (expand-file-name filename) nil
-    (with-tramp-file-property v localname "file-truename"
-      (let ((result nil))                      ; result steps in reverse order
-       (tramp-message v 4 "Finding true name for `%s'" filename)
-       (let* ((directory-sep-char ?/)
-              (steps (tramp-compat-split-string localname "/"))
-              (localnamedir (tramp-run-real-handler
-                             'file-name-as-directory (list localname)))
-              (is-dir (string= localname localnamedir))
-              (thisstep nil)
-              (numchase 0)
-              ;; Don't make the following value larger than
-              ;; necessary.  People expect an error message in a
-              ;; timely fashion when something is wrong; otherwise
-              ;; they might think that Emacs is hung.  Of course,
-              ;; correctness has to come first.
-              (numchase-limit 20)
-              symlink-target)
-         (while (and steps (< numchase numchase-limit))
-           (setq thisstep (pop steps))
-           (tramp-message
-            v 5 "Check %s"
-            (mapconcat 'identity
-                       (append '("") (reverse result) (list thisstep))
-                       "/"))
-           (setq symlink-target
-                 (nth 0 (file-attributes
-                         (tramp-make-tramp-file-name
-                          method user host
-                          (mapconcat 'identity
-                                     (append '("")
-                                             (reverse result)
-                                             (list thisstep))
-                                     "/")))))
-           (cond ((string= "." thisstep)
-                  (tramp-message v 5 "Ignoring step `.'"))
-                 ((string= ".." thisstep)
-                  (tramp-message v 5 "Processing step `..'")
-                  (pop result))
-                 ((stringp symlink-target)
-                  ;; It's a symlink, follow it.
-                  (tramp-message v 5 "Follow symlink to %s" symlink-target)
-                  (setq numchase (1+ numchase))
-                  (when (file-name-absolute-p symlink-target)
-                    (setq result nil))
-                  ;; If the symlink was absolute, we'll get a string
-                  ;; like "/user@host:/some/target"; extract the
-                  ;; "/some/target" part from it.
-                  (when (tramp-tramp-file-p symlink-target)
-                    (unless (tramp-equal-remote filename symlink-target)
-                      (tramp-error
-                       v 'file-error
-                       "Symlink target `%s' on wrong host" symlink-target))
-                    (setq symlink-target localname))
-                  (setq steps
-                        (append (tramp-compat-split-string
-                                 symlink-target "/")
-                                steps)))
-                 (t
-                  ;; It's a file.
-                  (setq result (cons thisstep result)))))
-         (when (>= numchase numchase-limit)
-           (tramp-error
-            v 'file-error
-            "Maximum number (%d) of symlinks exceeded" numchase-limit))
-         (setq result (reverse result))
-         ;; Combine list to form string.
-         (setq result
-               (if result
-                   (mapconcat 'identity (cons "" result) "/")
-                 "/"))
-         (when (and is-dir (or (string= "" result)
-                               (not (string= (substring result -1) "/"))))
-           (setq result (concat result "/"))))
-
-        (tramp-message v 4 "True name of `%s' is `%s'" filename result)
-        (tramp-make-tramp-file-name method user host result)))))
+  (format
+   "%s%s"
+   (with-parsed-tramp-file-name (expand-file-name filename) nil
+     (tramp-make-tramp-file-name
+      method user host
+      (with-tramp-file-property v localname "file-truename"
+       (let ((result nil))                     ; result steps in reverse order
+         (tramp-message v 4 "Finding true name for `%s'" filename)
+         (let* ((directory-sep-char ?/)
+                (steps (tramp-compat-split-string localname "/"))
+                (localnamedir (tramp-run-real-handler
+                               'file-name-as-directory (list localname)))
+                (is-dir (string= localname localnamedir))
+                (thisstep nil)
+                (numchase 0)
+                ;; Don't make the following value larger than
+                ;; necessary.  People expect an error message in a
+                ;; timely fashion when something is wrong; otherwise
+                ;; they might think that Emacs is hung.  Of course,
+                ;; correctness has to come first.
+                (numchase-limit 20)
+                symlink-target)
+           (while (and steps (< numchase numchase-limit))
+             (setq thisstep (pop steps))
+             (tramp-message
+              v 5 "Check %s"
+              (mapconcat 'identity
+                         (append '("") (reverse result) (list thisstep))
+                         "/"))
+             (setq symlink-target
+                   (nth 0 (file-attributes
+                           (tramp-make-tramp-file-name
+                            method user host
+                            (mapconcat 'identity
+                                       (append '("")
+                                               (reverse result)
+                                               (list thisstep))
+                                       "/")))))
+             (cond ((string= "." thisstep)
+                    (tramp-message v 5 "Ignoring step `.'"))
+                   ((string= ".." thisstep)
+                    (tramp-message v 5 "Processing step `..'")
+                    (pop result))
+                   ((stringp symlink-target)
+                    ;; It's a symlink, follow it.
+                    (tramp-message v 5 "Follow symlink to %s" symlink-target)
+                    (setq numchase (1+ numchase))
+                    (when (file-name-absolute-p symlink-target)
+                      (setq result nil))
+                    ;; If the symlink was absolute, we'll get a string
+                    ;; like "/user@host:/some/target"; extract the
+                    ;; "/some/target" part from it.
+                    (when (tramp-tramp-file-p symlink-target)
+                      (unless (tramp-equal-remote filename symlink-target)
+                        (tramp-error
+                         v 'file-error
+                         "Symlink target `%s' on wrong host" symlink-target))
+                      (setq symlink-target localname))
+                    (setq steps
+                          (append (tramp-compat-split-string
+                                   symlink-target "/")
+                                  steps)))
+                   (t
+                    ;; It's a file.
+                    (setq result (cons thisstep result)))))
+           (when (>= numchase numchase-limit)
+             (tramp-error
+              v 'file-error
+              "Maximum number (%d) of symlinks exceeded" numchase-limit))
+           (setq result (reverse result))
+           ;; Combine list to form string.
+           (setq result
+                 (if result
+                     (mapconcat 'identity (cons "" result) "/")
+                   "/"))
+           (when (and is-dir (or (string= "" result)
+                                 (not (string= (substring result -1) "/"))))
+             (setq result (concat result "/"))))
+
+         (tramp-message v 4 "True name of `%s' is `%s'" localname result)
+         result))))
+
+   ;; Preserve trailing "/".
+   (if (string-equal (file-name-nondirectory filename) "") "/" "")))
 
 (defun tramp-adb-handle-file-attributes (filename &optional id-format)
   "Like `file-attributes' for Tramp files."
   (unless id-format (setq id-format 'integer))
-  (ignore-errors
-    (with-parsed-tramp-file-name filename nil
-      (with-tramp-file-property
-         v localname (format "file-attributes-%s" id-format)
-       (tramp-adb-barf-unless-okay
-        v (format "%s -d -l %s"
-                  (tramp-adb-get-ls-command v)
-                  (tramp-shell-quote-argument localname)) "")
-       (with-current-buffer (tramp-get-buffer v)
-         (tramp-adb-sh-fix-ls-output)
-         (cdar (tramp-do-parse-file-attributes-with-ls v id-format)))))))
+  (with-parsed-tramp-file-name filename nil
+    (with-tramp-file-property
+       v localname (format "file-attributes-%s" id-format)
+      (and
+       (tramp-adb-send-command-and-check
+       v (format "%s -d -l %s"
+                 (tramp-adb-get-ls-command v)
+                 (tramp-shell-quote-argument localname)))
+       (with-current-buffer (tramp-get-buffer v)
+        (tramp-adb-sh-fix-ls-output)
+        (cdar (tramp-do-parse-file-attributes-with-ls v id-format)))))))
 
 (defun tramp-do-parse-file-attributes-with-ls (vec &optional id-format)
   "Parse `file-attributes' for Tramp files using the ls(1) command."
@@ -366,11 +373,19 @@ pass to the OPERATION."
       (with-tramp-file-property
          v localname (format "directory-files-attributes-%s-%s-%s-%s"
                              full match id-format nosort)
-       (tramp-adb-barf-unless-okay
-        v (format "%s -a -l %s"
-                  (tramp-adb-get-ls-command v)
-                  (tramp-shell-quote-argument localname)) "")
        (with-current-buffer (tramp-get-buffer v)
+         (when (tramp-adb-send-command-and-check
+                v (format "%s -a -l %s"
+                          (tramp-adb-get-ls-command v)
+                          (tramp-shell-quote-argument localname)))
+           ;; We insert also filename/. and filename/.., because "ls" doesn't.
+           (narrow-to-region (point) (point))
+           (tramp-adb-send-command
+            v (format "%s -d -a -l %s %s"
+                      (tramp-adb-get-ls-command v)
+                      (concat (file-name-as-directory localname) ".")
+                      (concat (file-name-as-directory localname) "..")))
+           (widen))
          (tramp-adb-sh-fix-ls-output)
          (let ((result (tramp-do-parse-file-attributes-with-ls
                         v (or id-format 'integer))))
@@ -392,8 +407,7 @@ pass to the OPERATION."
 (defun tramp-adb-get-ls-command (vec)
   (with-tramp-connection-property vec "ls"
     (tramp-message vec 5 "Finding a suitable `ls' command")
-    (if        (zerop (tramp-adb-command-exit-status
-               vec "ls --color=never -al /dev/null"))
+    (if (tramp-adb-send-command-and-check vec "ls --color=never -al /dev/null")
        ;; On CyanogenMod based system BusyBox is used and "ls" output
        ;; coloring is enabled by default.  So we try to disable it
        ;; when possible.
@@ -417,35 +431,6 @@ Convert (\"-al\") to (\"-a\" \"-l\").  Remove arguments like \"--dired\"."
                           (and (not (string-match "\\(^--\\|^[^-]\\)" s)) s))
                         switches))))))
 
-(defun tramp-adb-handle-insert-directory
-  (filename switches &optional _wildcard _full-directory-p)
-  "Like `insert-directory' for Tramp files."
-  (when (stringp switches)
-    (setq switches (tramp-adb--gnu-switches-to-ash (split-string switches))))
-  (with-parsed-tramp-file-name (file-truename filename) nil
-    (with-current-buffer (tramp-get-buffer v)
-      (let ((name (tramp-shell-quote-argument (directory-file-name localname)))
-           (switch-d (member "-d" switches))
-           (switch-t (member "-t" switches))
-           (switches (mapconcat 'identity (remove "-t" switches) " ")))
-       (tramp-adb-barf-unless-okay
-        v (format "%s %s %s" (tramp-adb-get-ls-command v) switches name)
-        "Cannot insert directory listing: %s" filename)
-       (unless switch-d
-         ;; We insert also filename/. and filename/.., because "ls" doesn't.
-         (narrow-to-region (point) (point))
-         (ignore-errors
-           (tramp-adb-barf-unless-okay
-            v (format "%s -d %s %s %s"
-                      (tramp-adb-get-ls-command v)
-                      switches
-                      (concat (file-name-as-directory name) ".")
-                      (concat (file-name-as-directory name) ".."))
-            "Cannot insert directory listing: %s" filename))
-         (widen))
-       (tramp-adb-sh-fix-ls-output switch-t)))
-    (insert-buffer-substring (tramp-get-buffer v))))
-
 (defun tramp-adb-sh-fix-ls-output (&optional sort-by-time)
   "Insert dummy 0 in empty size columns.
 Androids \"ls\" command doesn't insert size column for directories:
@@ -489,9 +474,9 @@ Emacs dired can't find files."
 (defun tramp-adb-ls-output-name-less-p (a b)
   "Sort \"ls\" output by name, ascending."
   (let (posa posb)
-    (string-match dired-move-to-filename-regexp a)
+    (string-match directory-listing-before-filename-regexp a)
     (setq posa (match-end 0))
-    (string-match dired-move-to-filename-regexp b)
+    (string-match directory-listing-before-filename-regexp b)
     (setq posb (match-end 0))
     (string-lessp (substring a posa) (substring b posb))))
 
@@ -506,7 +491,8 @@ Emacs dired can't find files."
     (tramp-adb-barf-unless-okay
      v (format "mkdir %s" (tramp-shell-quote-argument localname))
      "Couldn't make directory %s" dir)
-    (tramp-flush-directory-property v (file-name-directory localname))))
+    (tramp-flush-file-property v (file-name-directory localname))
+    (tramp-flush-directory-property v localname)))
 
 (defun tramp-adb-handle-delete-directory (directory &optional recursive)
   "Like `delete-directory' for Tramp files."
@@ -538,20 +524,22 @@ Emacs dired can't find files."
      (with-tramp-file-property v localname "file-name-all-completions"
        (save-match-data
         (tramp-adb-send-command
-         v (format "%s %s"
+         v (format "%s -a %s"
                    (tramp-adb-get-ls-command v)
                    (tramp-shell-quote-argument localname)))
         (mapcar
          (lambda (f)
-           (if (file-directory-p f)
+           (if (file-directory-p (expand-file-name f directory))
                (file-name-as-directory f)
              f))
          (with-current-buffer (tramp-get-buffer v)
-           (delq
-            nil
-            (mapcar
-             (lambda (l) (and (not (string-match  "^[[:space:]]*$" l)) l))
-             (split-string (buffer-string) "\n"))))))))))
+           (append
+            '("." "..")
+            (delq
+             nil
+             (mapcar
+              (lambda (l) (and (not (string-match  "^[[:space:]]*$" l)) l))
+              (split-string (buffer-string) "\n")))))))))))
 
 (defun tramp-adb-handle-file-local-copy (filename)
   "Like `file-local-copy' for Tramp files."
@@ -567,7 +555,10 @@ Emacs dired can't find files."
          (delete-file tmpfile)
          (tramp-error
           v 'file-error "Cannot make local copy of file `%s'" filename))
-       (set-file-modes tmpfile (file-modes filename)))
+       (set-file-modes
+        tmpfile
+        (logior (or (file-modes filename) 0)
+                (tramp-compat-octal-to-decimal "0400"))))
       tmpfile)))
 
 (defun tramp-adb-handle-file-writable-p (filename)
@@ -577,9 +568,8 @@ But handle the case, if the \"test\" command is not available."
     (with-tramp-file-property v localname "file-writable-p"
       (if (tramp-adb-find-test-command v)
          (if (file-exists-p filename)
-             (zerop
-              (tramp-adb-command-exit-status
-               v (format "test -w %s" (tramp-shell-quote-argument localname))))
+             (tramp-adb-send-command-and-check
+              v (format "test -w %s" (tramp-shell-quote-argument localname)))
            (and
             (file-directory-p (file-name-directory filename))
             (file-writable-p (file-name-directory filename))))
@@ -599,9 +589,6 @@ But handle the case, if the \"test\" command is not available."
   "Like `write-region' for Tramp files."
   (setq filename (expand-file-name filename))
   (with-parsed-tramp-file-name filename nil
-    (when append
-      (tramp-error
-       v 'file-error "Cannot append to file using Tramp (`%s')" filename))
     (when (and confirm (file-exists-p filename))
       (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
                                filename))
@@ -612,6 +599,12 @@ But handle the case, if the \"test\" command is not available."
     (tramp-flush-file-property v localname)
     (let* ((curbuf (current-buffer))
           (tmpfile (tramp-compat-make-temp-file filename)))
+      (when (and append (file-exists-p filename))
+       (copy-file filename tmpfile 'ok)
+       (set-file-modes
+        tmpfile
+        (logior (or (file-modes tmpfile) 0)
+                (tramp-compat-octal-to-decimal "0600"))))
       (tramp-run-real-handler
        'write-region
        (list start end tmpfile append 'no-message lockname confirm))
@@ -634,9 +627,8 @@ But handle the case, if the \"test\" command is not available."
   "Like `set-file-modes' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     (tramp-flush-file-property v localname)
-    (tramp-adb-barf-unless-okay
-     v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname)
-     "Error while changing file's mode %s" filename)))
+    (tramp-adb-send-command-and-check
+     v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname))))
 
 (defun tramp-adb-handle-set-file-times (filename &optional time)
   "Like `set-file-times' for Tramp files."
@@ -645,8 +637,8 @@ But handle the case, if the \"test\" command is not available."
     (let ((time (if (or (null time) (equal time '(0 0)))
                    (current-time)
                  time)))
-      (tramp-adb-command-exit-status
-       ;; use shell arithmetic because of Emacs integer size limit
+      (tramp-adb-send-command-and-check
+       ;; Use shell arithmetic because of Emacs integer size limit.
        v (format "touch -t $(( %d * 65536 + %d )) %s"
                 (car time) (cadr time)
                 (tramp-shell-quote-argument localname))))))
@@ -704,32 +696,36 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
   (setq filename (expand-file-name filename)
        newname (expand-file-name newname))
 
-  (with-parsed-tramp-file-name
-      (if (tramp-tramp-file-p filename) filename newname) nil
-    (with-tramp-progress-reporter
-       v 0 (format "Renaming %s to %s" newname filename)
-
-      (if (and (tramp-equal-remote filename newname)
-              (not (file-directory-p filename)))
-         (progn
-           (when (and (not ok-if-already-exists)
-                      (file-exists-p newname))
-             (tramp-error v 'file-already-exists newname))
-           ;; We must also flush the cache of the directory, because
-           ;; `file-attributes' reads the values from there.
-           (tramp-flush-file-property v (file-name-directory localname))
-           (tramp-flush-file-property v localname)
-           ;; Short track.
-           (tramp-adb-barf-unless-okay
-            v (format
-               "mv %s %s"
-               (tramp-file-name-handler 'file-remote-p filename 'localname)
-               localname)
-            "Error renaming %s to %s" filename newname))
-
-       ;; Rename by copy.
-       (copy-file filename newname ok-if-already-exists t t)
-       (delete-file filename)))))
+  (let ((t1 (tramp-tramp-file-p filename))
+       (t2 (tramp-tramp-file-p newname)))
+    (with-parsed-tramp-file-name (if t1 filename newname) nil
+      (with-tramp-progress-reporter
+         v 0 (format "Renaming %s to %s" filename newname)
+
+       (if (and t1 t2
+                (tramp-equal-remote filename newname)
+                (not (file-directory-p filename)))
+           (let ((l1 (tramp-file-name-handler
+                      'file-remote-p filename 'localname))
+                 (l2 (tramp-file-name-handler
+                      'file-remote-p newname 'localname)))
+             (when (and (not ok-if-already-exists)
+                        (file-exists-p newname))
+               (tramp-error v 'file-already-exists newname))
+             ;; We must also flush the cache of the directory, because
+             ;; `file-attributes' reads the values from there.
+             (tramp-flush-file-property v (file-name-directory l1))
+             (tramp-flush-file-property v l1)
+             (tramp-flush-file-property v (file-name-directory l2))
+             (tramp-flush-file-property v l2)
+             ;; Short track.
+             (tramp-adb-barf-unless-okay
+              v (format "mv %s %s" l1 l2)
+              "Error renaming %s to %s" filename newname))
+
+         ;; Rename by copy.
+         (copy-file filename newname ok-if-already-exists t t)
+         (delete-file filename))))))
 
 (defun tramp-adb-handle-process-file
   (program &optional infile destination display &rest args)
@@ -1010,7 +1006,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
   "Checks, whether the ash has a builtin \"test\" command.
 This happens for Android >= 4.0."
   (with-tramp-connection-property vec "test"
-    (zerop (tramp-adb-command-exit-status vec "type test"))))
+    (tramp-adb-send-command-and-check vec "type test")))
 
 ;; Connection functions
 
@@ -1033,9 +1029,9 @@ This happens for Android >= 4.0."
       (while (re-search-forward "\r+$" nil t)
        (replace-match "" nil nil)))))
 
-(defun tramp-adb-command-exit-status
+(defun tramp-adb-send-command-and-check
   (vec command)
-  "Run COMMAND and return its exit status.
+  "Run COMMAND and and check its exit status.
 Sends `echo $?' along with the COMMAND for checking the exit status.  If
 COMMAND is nil, just sends `echo $?'.  Returns the exit status found."
   (tramp-adb-send-command
@@ -1049,14 +1045,14 @@ COMMAND is nil, just sends `echo $?'.  Returns the exit status found."
        vec 'file-error "Couldn't find exit status of `%s'" command))
     (skip-chars-forward "^ ")
     (prog1
-       (read (current-buffer))
+       (zerop (read (current-buffer)))
       (let (buffer-read-only)
        (delete-region (match-beginning 0) (point-max))))))
 
 (defun tramp-adb-barf-unless-okay (vec command fmt &rest args)
   "Run COMMAND, check exit status, throw error if exit status not okay.
 FMT and ARGS are passed to `error'."
-  (unless (zerop (tramp-adb-command-exit-status vec command))
+  (unless (tramp-adb-send-command-and-check vec command)
     (apply 'tramp-error vec 'file-error fmt args)))
 
 (defun tramp-adb-wait-for-output (proc &optional timeout)
@@ -1099,7 +1095,7 @@ connection if a previous connection has died for some reason."
         (p (get-buffer-process buf))
         (host (tramp-file-name-host vec))
         (user (tramp-file-name-user vec))
-        (devices (mapcar 'cadr (tramp-adb-parse-device-names nil))))
+        devices)
 
     ;; Maybe we know already that "su" is not supported.  We cannot
     ;; use a connection property, because we have not checked yet
@@ -1111,6 +1107,10 @@ connection if a previous connection has died for some reason."
        (and p (processp p) (memq (process-status p) '(run open)))
       (save-match-data
        (when (and p (processp p)) (delete-process p))
+       (setq tramp-current-method (tramp-file-name-method vec)
+             tramp-current-user (tramp-file-name-user vec)
+             tramp-current-host (tramp-file-name-host vec)
+             devices (mapcar 'cadr (tramp-adb-parse-device-names nil)))
        (if (not devices)
            (tramp-error vec 'file-error "No device connected"))
        (if (and (> (length host) 0) (not (member host devices)))
@@ -1165,7 +1165,7 @@ connection if a previous connection has died for some reason."
            ;; Change user if indicated.
            (when user
              (tramp-adb-send-command vec (format "su %s" user))
-             (unless (zerop (tramp-adb-command-exit-status vec nil))
+             (unless (tramp-adb-send-command-and-check vec nil)
                (delete-process p)
                (tramp-set-file-property vec "" "su-command-p" nil)
                (tramp-error
index 825731c5ce84f986bb9a0667d13411975f7f9961..be66f18d9e44664b8cdf1f5b6757aff73a8d4d17 100644 (file)
@@ -168,7 +168,7 @@ Returns VALUE."
 ;;;###tramp-autoload
 (defun tramp-flush-file-property (key file)
   "Remove all properties of FILE in the cache context of KEY."
-  ;; Remove file property of symlinks.
+  ;; Remove file properties of symlinks.
   (let ((truename (tramp-get-file-property key file "file-truename" nil)))
     (when (and (stringp truename)
               (not (string-equal file truename)))
@@ -183,8 +183,13 @@ Returns VALUE."
 (defun tramp-flush-directory-property (key directory)
   "Remove all properties of DIRECTORY in the cache context of KEY.
 Remove also properties of all files in subdirectories."
-  (let ((directory (tramp-run-real-handler
-                   'directory-file-name (list directory))))
+  (let* ((directory (tramp-run-real-handler
+                   'directory-file-name (list directory)))
+        (truename (tramp-get-file-property key directory "file-truename" nil)))
+    ;; Remove file properties of symlinks.
+    (when (and (stringp truename)
+              (not (string-equal directory truename)))
+      (tramp-flush-directory-property key truename))
     (tramp-message key 8 "%s" directory)
     (maphash
      (lambda (key _value)
index 320e00c681db669c2cb392d8ef2c03b6f339f39e..52189e091fb40c0654ad531306ef58d62b6c023f 100644 (file)
@@ -1180,10 +1180,14 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
                      (zerop (logand flags tramp-gvfs-password-need-username))))
            (setq user (read-string "User name: ")))
          (when (and (zerop (length domain))
-                    (not (zerop (logand flags tramp-gvfs-password-need-domain))))
+                    (not
+                     (zerop (logand flags tramp-gvfs-password-need-domain))))
            (setq domain (read-string "Domain name: ")))
 
          (tramp-message l 6 "%S %S %S %d" message user domain flags)
+         (unless (tramp-get-connection-property l "first-password-request" nil)
+           (tramp-clear-passwd l))
+
          (setq tramp-current-method l-method
                tramp-current-user user
                tramp-current-host l-host
@@ -1474,7 +1478,7 @@ connection if a previous connection has died for some reason."
              (format "Opening connection for %s using %s" host method)
            (format "Opening connection for %s@%s using %s" user host method))
 
-       ;; Enable auth-source and password-cache.
+       ;; Enable `auth-source'.
        (tramp-set-connection-property vec "first-password-request" t)
 
        ;; There will be a callback of "askPassword" when a password is
index efad151dac88d079e2d36492ec2e07b164812f7a..ee37373a0fa020b13ca5a1f410625a0b7e694edb 100644 (file)
@@ -938,8 +938,11 @@ target of the symlink differ."
 
 (defun tramp-sh-handle-file-truename (filename)
   "Like `file-truename' for Tramp files."
-  (with-parsed-tramp-file-name (expand-file-name filename) nil
-    (tramp-make-tramp-file-name method user host
+  (format
+   "%s%s"
+   (with-parsed-tramp-file-name (expand-file-name filename) nil
+     (tramp-make-tramp-file-name
+      method user host
       (with-tramp-file-property v localname "file-truename"
        (let ((result nil))                     ; result steps in reverse order
          (tramp-message v 4 "Finding true name for `%s'" filename)
@@ -1042,8 +1045,10 @@ target of the symlink differ."
                  (setq result (concat result "/"))))))
 
          (tramp-message v 4 "True name of `%s' is `%s'" localname result)
-         (if (string-equal (file-name-nondirectory localname) "")
-             (file-name-as-directory result) result))))))
+         result))))
+
+   ;; Preserve trailing "/".
+   (if (string-equal (file-name-nondirectory filename) "") "/" "")))
 
 ;; Basic functions.
 
@@ -3301,49 +3306,49 @@ the result will be a local, non-Tramp, filename."
       (with-tramp-progress-reporter
          v 3 (format "Checking `vc-registered' for %s" file)
 
-       ;; There could be new files, created by the vc backend.  We
-       ;; cannot reuse the old cache entries, therefore.
-       (let (tramp-vc-registered-file-names
-             (remote-file-name-inhibit-cache (current-time))
-             (file-name-handler-alist
-              `((,tramp-file-name-regexp . tramp-vc-file-name-handler))))
-
-         ;; Here we collect only file names, which need an operation.
-         (ignore-errors (tramp-run-real-handler 'vc-registered (list file)))
-         (tramp-message v 10 "\n%s" tramp-vc-registered-file-names)
-
-         ;; Send just one command, in order to fill the cache.
-         (when tramp-vc-registered-file-names
-           (tramp-maybe-send-script
-            v
-            (format tramp-vc-registered-read-file-names
-                    (tramp-get-file-exists-command v)
-                    (format "%s -r" (tramp-get-test-command v)))
-            "tramp_vc_registered_read_file_names")
-
-           (dolist
-               (elt
-                (ignore-errors
-                  ;; We cannot use `tramp-send-command-and-read',
-                  ;; because this does not cooperate well with
-                  ;; heredoc documents.
-                  (tramp-send-command
-                   v
-                   (format
-                    "tramp_vc_registered_read_file_names <<'%s'\n%s\n%s\n"
-                    tramp-end-of-heredoc
-                    (mapconcat 'tramp-shell-quote-argument
-                               tramp-vc-registered-file-names
-                               "\n")
-                    tramp-end-of-heredoc))
-                  (tramp-send-command-and-check v nil)
-                  (with-current-buffer (tramp-get-connection-buffer v)
-                    ;; Read the expression.
-                    (goto-char (point-min))
-                    (read (current-buffer)))))
-
-             (tramp-set-file-property
-              v (car elt) (cadr elt) (cadr (cdr elt))))))
+       (unless remote-file-name-inhibit-cache
+         ;; There could be new files, created by the vc backend.  We
+         ;; cannot reuse the old cache entries, therefore.
+         (let (tramp-vc-registered-file-names
+               (remote-file-name-inhibit-cache (current-time))
+               (file-name-handler-alist
+                `((,tramp-file-name-regexp . tramp-vc-file-name-handler))))
+
+           ;; Here we collect only file names, which need an operation.
+           (ignore-errors (tramp-run-real-handler 'vc-registered (list file)))
+           (tramp-message v 10 "\n%s" tramp-vc-registered-file-names)
+
+           ;; Send just one command, in order to fill the cache.
+           (when tramp-vc-registered-file-names
+             (tramp-maybe-send-script
+              v
+              (format tramp-vc-registered-read-file-names
+                      (tramp-get-file-exists-command v)
+                      (format "%s -r" (tramp-get-test-command v)))
+              "tramp_vc_registered_read_file_names")
+
+             (dolist
+                 (elt
+                  (ignore-errors
+                    ;; We cannot use `tramp-send-command-and-read',
+                    ;; because this does not cooperate well with
+                    ;; heredoc documents.
+                    (tramp-send-command
+                     v
+                     (format
+                      "tramp_vc_registered_read_file_names <<'%s'\n%s\n%s\n"
+                      tramp-end-of-heredoc
+                      (mapconcat 'tramp-shell-quote-argument
+                                 tramp-vc-registered-file-names
+                                 "\n")
+                      tramp-end-of-heredoc))
+                    (with-current-buffer (tramp-get-connection-buffer v)
+                      ;; Read the expression.
+                      (goto-char (point-min))
+                      (read (current-buffer)))))
+
+               (tramp-set-file-property
+                v (car elt) (cadr elt) (cadr (cdr elt)))))))
 
        ;; Second run.  Now all `file-exists-p' or `file-readable-p'
        ;; calls shall be answered from the file cache.  We unset
@@ -3359,17 +3364,18 @@ the result will be a local, non-Tramp, filename."
 Fall back to normal file name handler if no Tramp handler exists."
   (when (and tramp-locked (not tramp-locker))
     (setq tramp-locked nil)
-    (signal 'file-error (list "Forbidden reentrant call of Tramp")))
+    (tramp-error
+     (car-safe tramp-current-connection) 'file-error
+     "Forbidden reentrant call of Tramp"))
   (let ((tl tramp-locked))
+    (setq tramp-locked t)
     (unwind-protect
-       (progn
-         (setq tramp-locked t)
-         (let ((tramp-locker t))
-           (save-match-data
-             (let ((fn (assoc operation tramp-sh-file-name-handler-alist)))
-               (if fn
-                   (apply (cdr fn) args)
-                 (tramp-run-real-handler operation args))))))
+       (let ((tramp-locker t))
+         (save-match-data
+           (let ((fn (assoc operation tramp-sh-file-name-handler-alist)))
+             (if fn
+                 (apply (cdr fn) args)
+               (tramp-run-real-handler operation args)))))
       (setq tramp-locked tl))))
 
 (defun tramp-vc-file-name-handler (operation &rest args)
@@ -3945,7 +3951,8 @@ process to set up.  VEC specifies the connection."
   ;; Set the environment.
   (tramp-message vec 5 "Setting default environment")
 
-  (let ((env (append `(,(tramp-get-remote-locale vec))
+  (let ((env (append (when (tramp-get-remote-locale vec) ; Discard `(nil)'.
+                      `(,(tramp-get-remote-locale vec)))
                     (copy-sequence tramp-remote-process-environment)))
        unset item)
     (while env
@@ -4084,6 +4091,10 @@ Goes through the list `tramp-local-coding-commands' and
                     vec 5 "Checking remote test command `%s'" rem-test)
                    (unless (tramp-send-command-and-check vec rem-test t)
                      (throw 'wont-work-remote nil)))
+                 ;; Check if remote perl exists when necessary.
+                 (when (and (not (stringp rem-enc))
+                            (not (tramp-get-remote-perl vec)))
+                   (throw 'wont-work-remote nil))
                  ;; Check if remote encoding and decoding commands can be
                  ;; called remotely with null input and output.  This makes
                  ;; sure there are no syntax errors and the command is really
@@ -4841,7 +4852,7 @@ Return ATTR."
       (when elt1
        (setcdr elt1
                (append
-                (tramp-compat-split-string default-remote-path ":")
+                (tramp-compat-split-string (or default-remote-path "") ":")
                 (cdr elt1)))
        (setq remote-path (delq 'tramp-default-remote-path remote-path)))
 
@@ -4849,7 +4860,7 @@ Return ATTR."
       (when elt2
        (setcdr elt2
                (append
-                (tramp-compat-split-string own-remote-path ":")
+                (tramp-compat-split-string (or own-remote-path "") ":")
                 (cdr elt2)))
        (setq remote-path (delq 'tramp-own-remote-path remote-path)))
 
@@ -5308,5 +5319,7 @@ function cell is returned to be applied on a buffer."
 ;;   rsync.
 ;; * Try telnet+curl as new method.  It might be useful for busybox,
 ;;   without built-in uuencode/uudecode.
+;; * Try telnet+nc as new method.  It might be useful for busybox,
+;;   without built-in uuencode/uudecode.
 
 ;;; tramp-sh.el ends here
index 581aaa40c996384cd77b6bc0cad16ea4eef5cc51..face017946dcb32a1b9b5d682551c0bbfe69e1a8 100644 (file)
@@ -1560,12 +1560,13 @@ signal identifier to be raised, remaining arguments passed to
 `tramp-message'.  Finally, signal SIGNAL is raised."
   (let (tramp-message-show-message)
     (tramp-backtrace vec-or-proc)
-    (tramp-message
-     vec-or-proc 1 "%s"
-     (error-message-string
-      (list signal
-           (get signal 'error-message)
-           (apply 'format fmt-string arguments))))
+    (when vec-or-proc
+      (tramp-message
+       vec-or-proc 1 "%s"
+       (error-message-string
+       (list signal
+             (get signal 'error-message)
+             (apply 'format fmt-string arguments)))))
     (signal signal (list (apply 'format fmt-string arguments)))))
 
 (defsubst tramp-error-with-buffer
@@ -3050,10 +3051,13 @@ User is always nil."
          v 3 (format "Inserting `%s'" filename)
        (unwind-protect
            (if (not (file-exists-p filename))
-               ;; We don't raise a Tramp error, because it might be
-               ;; suppressed, like in `find-file-noselect-1'.
-               (signal 'file-error
-                       (list "File not found on remote host" filename))
+               (progn
+                 ;; We don't raise a Tramp error, because it might be
+                 ;; suppressed, like in `find-file-noselect-1'.
+                 (tramp-message
+                  v 1 "File not `%s' found on remote host" filename)
+                 (signal 'file-error
+                         (list "File not found on remote host" filename)))
 
              (if (and (tramp-local-host-p v)
                       (let (file-name-handler-alist)
@@ -3397,6 +3401,12 @@ of."
   (with-current-buffer (process-buffer proc)
     (let ((enable-recursive-minibuffers t)
          (case-fold-search t))
+      ;; Let's check whether a wrong password has been sent already.
+      ;; Sometimes, the process returns a new password request
+      ;; immediately after rejecting the previous (wrong) one.
+      (goto-char (point-min))
+      (when (search-forward-regexp tramp-wrong-passwd-regexp nil t)
+       (tramp-clear-passwd vec))
       (tramp-check-for-regexp proc tramp-password-prompt-regexp)
       (tramp-message vec 3 "Sending %s" (match-string 1))
       ;; We don't call `tramp-send-string' in order to hide the
@@ -3505,8 +3515,8 @@ The terminal type can be configured with `tramp-terminal-type'."
 PROC and VEC indicate the remote connection to be used.  POS, if
 set, is the starting point of the region to be deleted in the
 connection buffer."
-  ;; Enable `auth-source' and `password-cache'.  We must use
-  ;; tramp-current-* variables in case we have several hops.
+  ;; Enable `auth-source'.  We must use tramp-current-* variables in
+  ;; case we have several hops.
   (tramp-set-connection-property
    (tramp-dissect-file-name
     (tramp-make-tramp-file-name
@@ -4082,7 +4092,7 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1.
 Furthermore, traces are written with verbosity of 6."
   (tramp-message
    (vector tramp-current-method tramp-current-user tramp-current-host nil nil)
-   6 "%s %s %s" program infile args)
+   6 "`%s %s' %s" program (mapconcat 'identity args " ") infile)
   (if (executable-find program)
       (apply 'call-process program infile destination display args)
     1))
@@ -4128,9 +4138,6 @@ Invokes `password-read' if available, `read-passwd' else."
                    "password" tramp-current-host tramp-current-method)))
           ;; Try the password cache.
           (when (functionp 'password-read)
-            (unless (tramp-get-connection-property
-                     v "first-password-request" nil)
-              (tramp-compat-funcall 'password-cache-remove key))
             (let ((password
                    (tramp-compat-funcall 'password-read pw-prompt key)))
               (tramp-compat-funcall 'password-cache-add key password)
index 05549c7eb6b7accaf81614255a710b5816704e30..ebc7799a9a6d0174f1b94c98b87bccaf27a8576a 100644 (file)
@@ -1,3 +1,8 @@
+2014-02-25  Glenn Morris  <rgm@gnu.org>
+
+       * org-version.el (org-odt-data-dir):
+       Remove incorrect, duplicate definition.  (Bug#16734)
+
 2014-01-08  Paul Eggert  <eggert@cs.ucla.edu>
 
        Spelling fixes.
index 7ccddb52a925b54e9b11fefcff8d50df84cb0ba7..d6317274bd3b9704ce7902d267d7608e1bedbc43 100644 (file)
@@ -13,9 +13,6 @@
   Inserted by installing org-mode or when a release is made."
    (let ((org-git-version "release_8.2.5c"))
      org-git-version))
-;;;###autoload
-(defvar org-odt-data-dir "/usr/share/emacs/etc/org"
-  "The location of ODT styles.")
 \f
 (provide 'org-version)
 \f
index 9b18bbf82a9e356ca97738d4c77becd91ee8c492..1ce076734ff656b03416ffe308c0cac97c1f2a35 100644 (file)
@@ -75,7 +75,7 @@
 
 ;; For Emacs < 22.2.
 (eval-and-compile
-  (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+  (unless (fboundp 'declare-function) (defmacro declare-function (&rest _r))))
 
 (eval-when-compile
   (let ((load-path
@@ -190,11 +190,10 @@ control).  See \"cc-mode.el\" for more info."
            (add-hook 'change-major-mode-hook 'c-leave-cc-mode-mode)
            (setq c-initialization-ok t)
            ;; Connect up with Emacs's electric-indent-mode, for >= Emacs 24.4
-           (when (fboundp 'electric-indent-mode)
+            (when (fboundp 'electric-indent-local-mode)
              (add-hook 'electric-indent-mode-hook 'c-electric-indent-mode-hook)
-             (when (fboundp 'electric-indent-local-mode)
-               (add-hook 'electric-indent-local-mode-hook
-                           'c-electric-indent-local-mode-hook))))
+              (add-hook 'electric-indent-local-mode-hook
+                        'c-electric-indent-local-mode-hook)))
        ;; Will try initialization hooks again if they failed.
        (put 'c-initialize-cc-mode initprop c-initialization-ok))))
 
@@ -588,8 +587,9 @@ that requires a literal mode spec at compile time."
   ;; messing up CC Mode's, and set `c-electric-flag' if `electric-indent-mode'
   ;; has been called by the user.
   (when (boundp 'electric-indent-inhibit) (setq electric-indent-inhibit t))
-  (when (and (boundp 'electric-indent-mode-has-been-called)
-            (> electric-indent-mode-has-been-called 1))
+  ;; CC-mode should obey Emacs's generic preferences, tho only do it if
+  ;; Emacs's generic preferences can be set per-buffer (Emacs>=24.4).
+  (when (fboundp 'electric-indent-local-mode)
     (setq c-electric-flag electric-indent-mode))
 
 ;;   ;; Put submode indicators onto minor-mode-alist, but only once.
@@ -1165,7 +1165,7 @@ Note that the style variables are always made local to the buffer."
       (backward-char))
     new-pos))                          ; back over (, [, <.
 
-(defun c-change-set-fl-decl-start (beg end old-len)
+(defun c-change-set-fl-decl-start (_beg _end _old-len)
   ;; Set c-new-BEG to the beginning of a "local" declaration if it('s BOL) is
   ;; inside one.  This is called from an after-change-function, but the
   ;; parameters BEG END and OLD-LEN are ignored.  See `c-set-fl-decl-start'
@@ -1239,7 +1239,7 @@ This function is called from `c-common-init', once per mode initialization."
       (make-local-hook 'font-lock-mode-hook))
   (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
 
-(defun c-extend-after-change-region (beg end old-len)
+(defun c-extend-after-change-region (_beg _end _old-len)
   "Extend the region to be fontified, if necessary."
   ;; Note: the parameters are ignored here.  This somewhat indirect
   ;; implementation exists because it is minimally different from the
@@ -1256,15 +1256,13 @@ This function is called from `c-common-init', once per mode initialization."
 (defun c-electric-indent-mode-hook ()
   ;; Emacs has en/disabled `electric-indent-mode'.  Propagate this through to
   ;; each CC Mode buffer.
-  (when (and (boundp 'electric-indent-mode-has-been-called)
-            (> electric-indent-mode-has-been-called 1))
-    (mapc (lambda (buf)
-           (with-current-buffer buf
-             (when c-buffer-is-cc-mode
-               ;; Don't use `c-toggle-electric-state' here due to recursion.
-               (setq c-electric-flag electric-indent-mode)
-               (c-update-modeline))))
-         (buffer-list))))
+  (mapc (lambda (buf)
+          (with-current-buffer buf
+            (when c-buffer-is-cc-mode
+              ;; Don't use `c-toggle-electric-state' here due to recursion.
+              (setq c-electric-flag electric-indent-mode)
+              (c-update-modeline))))
+        (buffer-list)))
 
 (defun c-electric-indent-local-mode-hook ()
   ;; Emacs has en/disabled `electric-indent-local-mode' for this buffer.
index 9a811481f49559f0730c1f90cff9d1bf835245bd..39ad676f5932f94f60d9578c811cf9997043326f 100644 (file)
@@ -327,7 +327,7 @@ that form should be displayed.")
 
 
 (defun hif-set-var (var value)
-  "Prepend (var value) pair to hide-ifdef-env."
+  "Prepend (var value) pair to `hide-ifdef-env'."
   (setq hide-ifdef-env (cons (cons var value) hide-ifdef-env)))
 
 (declare-function semantic-c-hideif-lookup  "semantic/bovine/c" (var))
@@ -479,7 +479,7 @@ that form should be displayed.")
 ;;  | Comma                | ,                           | left-to-right |
 
 (defsubst hif-nexttoken ()
-  "Pop the next token from token-list into the let variable \"hif-token\"."
+  "Pop the next token from token-list into the let variable `hif-token'."
   (setq hif-token (pop hif-token-list)))
 
 (defun hif-parse-if-exp (token-list)
@@ -712,7 +712,7 @@ that form should be displayed.")
 
 
 (defun hif-comma (&rest expr)
-  "Evaluate a list of expr, return the result of the last item"
+  "Evaluate a list of expr, return the result of the last item."
   (let ((result nil))
     (dolist (e expr)
       (ignore-errors
@@ -1118,7 +1118,7 @@ Turn off hiding by calling `show-ifdefs'."
 
 
 (defun hif-find-ifdef-block ()
-  "Utility for hide and show `ifdef-block'.
+  "Utility to hide and show ifdef block.
 Return as (TOP . BOTTOM) the extent of ifdef block."
   (let (max-bottom)
     (cons (save-excursion
index d7d0da84ed952d738986f3e9ada8791267bcecdd..582e495a2bfbfea6993d9a8945fc2257cc4be2e1 100644 (file)
   "Keymap used in Modula-2 mode.")
 
 (defcustom m2-indent 5
-  "This variable gives the indentation in Modula-2-Mode."
+  "This variable gives the indentation in Modula-2 mode."
   :type 'integer
   :group 'modula2)
 (put 'm2-indent 'safe-local-variable
index dfb2b72a9d6f12c1628e7880f42cc89a40218f28..fd8e249bbb935120985d4ac3621566d88a11441a 100644 (file)
@@ -73,7 +73,7 @@ end;"
 (define-obsolete-variable-alias
   'delphi-compound-block-indent 'opascal-compound-block-indent "24.4")
 (defcustom opascal-compound-block-indent 0
-  "Extra indentation for blocks in compound statements. E.g.
+  "Extra indentation for blocks in compound statements.  E.g.
 
 // block indent = 0     vs      // block indent = 2
 if b then                       if b then
@@ -87,7 +87,7 @@ end;                            else
 (define-obsolete-variable-alias
   'delphi-case-label-indent 'opascal-case-label-indent "24.4")
 (defcustom opascal-case-label-indent opascal-indent-level
-  "Extra indentation for case statement labels. E.g.
+  "Extra indentation for case statement labels.  E.g.
 
 // case indent = 0      vs      // case indent = 3
 case value of                   case value of
@@ -1744,7 +1744,7 @@ comment block.  If not in a // comment, just does a normal newline."
 (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
 ;;;###autoload
 (define-derived-mode opascal-mode prog-mode "OPascal"
-  "Major mode for editing OPascal code. \\<opascal-mode-map>
+  "Major mode for editing OPascal code.\\<opascal-mode-map>
 \\[opascal-find-unit]\t- Search for a OPascal source file.
 \\[opascal-fill-comment]\t- Fill the current comment.
 \\[opascal-new-comment-line]\t- If in a // comment, do a new comment line.
@@ -1766,11 +1766,8 @@ Customization:
 
 Coloring:
 
- `opascal-keyword-face'                (default font-lock-keyword-face)
-    Face used to color OPascal keywords.
-
-Turning on OPascal mode calls the value of the variable `opascal-mode-hook'
-with no args, if that value is non-nil."
+ `opascal-keyword-face'                (default `font-lock-keyword-face')
+    Face used to color OPascal keywords."
 
   ;; Buffer locals:
   (setq-local indent-line-function #'opascal-indent-line)
index ed79eacecc488503b78582d4d892cd5ba158b873..a6932953ab964974aa1eadfb5b788affb7cbeedc 100644 (file)
@@ -64,7 +64,7 @@
   :group 'languages)
 
 (defvar pascal-mode-abbrev-table nil
-  "Abbrev table in use in Pascal-mode buffers.")
+  "Abbrev table in use in Pascal mode buffers.")
 (define-abbrev-table 'pascal-mode-abbrev-table ())
 
 (defvar pascal-mode-map
@@ -99,7 +99,7 @@
 
 (defvar pascal-imenu-generic-expression
   '((nil "^[ \t]*\\(function\\|procedure\\)[ \t\n]+\\([a-zA-Z0-9_.:]+\\)" 2))
-  "Imenu expression for Pascal-mode.  See `imenu-generic-expression'.")
+  "Imenu expression for Pascal mode.  See `imenu-generic-expression'.")
 
 (defvar pascal-keywords
   '("and" "array" "begin" "case" "const" "div" "do" "downto" "else" "end"
   "\\<\\(label\\|var\\|type\\|const\\|until\\|end\\|begin\\|repeat\\|else\\)\\>")
 
 ;;; Strings used to mark beginning and end of excluded text
-(defconst pascal-exclude-str-start "{-----\\/----- EXCLUDED -----\\/-----")
-(defconst pascal-exclude-str-end " -----/\\----- EXCLUDED -----/\\-----}")
+(defconst pascal-exclude-str-start "{-----\\/----- EXCLUDED -----\\/-----"
+  "String used to mark beginning of excluded text.")
+(defconst pascal-exclude-str-end " -----/\\----- EXCLUDED -----/\\-----}"
+  "String used to mark end of excluded text.")
 
 (defvar pascal-mode-syntax-table
   (let ((st (make-syntax-table)))
@@ -227,7 +229,7 @@ and follows non-whitespace text."
 
 (defcustom pascal-auto-endcomments t
   "Non-nil means automatically insert comments after certain `end's.
-Specifically, this is done after the ends of cases statements and functions.
+Specifically, this is done after the ends of case statements and functions.
 The name of the function or case is included between the braces."
   :type 'boolean
   :group 'pascal)
@@ -314,7 +316,7 @@ are handled in another way, and should not be added to this list."
 
 ;;;###autoload
 (define-derived-mode pascal-mode prog-mode "Pascal"
-  "Major mode for editing Pascal code. \\<pascal-mode-map>
+  "Major mode for editing Pascal code.\\<pascal-mode-map>
 TAB indents for Pascal code.  Delete converts tabs to spaces as it moves back.
 
 \\[completion-at-point] completes the word around current point with respect \
@@ -355,10 +357,7 @@ Variables controlling indentation/edit style:
     List of contexts where auto lineup of :'s or ='s should be done.
 
 See also the user variables `pascal-type-keywords', `pascal-start-keywords' and
-`pascal-separator-keywords'.
-
-Turning on Pascal mode calls the value of the variable pascal-mode-hook with
-no args, if that value is non-nil."
+`pascal-separator-keywords'."
   (setq-local local-abbrev-table pascal-mode-abbrev-table)
   (setq-local indent-line-function 'pascal-indent-line)
   (setq-local comment-indent-function 'pascal-indent-comment)
@@ -507,7 +506,7 @@ no args, if that value is non-nil."
   (insert "  "))
 
 (defun pascal-mark-defun ()
-  "Mark the current pascal function (or procedure).
+  "Mark the current Pascal function (or procedure).
 This puts the mark at the end, and point at the beginning."
   (interactive)
   (push-mark (point))
@@ -518,14 +517,14 @@ This puts the mark at the end, and point at the beginning."
     (zmacs-activate-region)))
 
 (defun pascal-comment-area (start end)
-  "Put the region into a Pascal comment.
+  "Put the region into a Pascal comment.\\<pascal-mode-map>
 The comments that are in this area are \"deformed\":
 `*)' becomes `!(*' and `}' becomes `!{'.
 These deformed comments are returned to normal if you use
 \\[pascal-uncomment-area] to undo the commenting.
 
-The commented area starts with `pascal-exclude-str-start', and ends with
-`pascal-include-str-end'.  But if you change these variables,
+The commented area starts with `pascal-exclude-str-start', and ends
+with `pascal-exclude-str-end'.  But if you change these variables,
 \\[pascal-uncomment-area] won't recognize the comments."
   (interactive "r")
   (save-excursion
@@ -553,8 +552,8 @@ The commented area starts with `pascal-exclude-str-start', and ends with
 
 (defun pascal-uncomment-area ()
   "Uncomment a commented area; change deformed comments back to normal.
-This command does nothing if the pointer is not in a commented
-area.  See also `pascal-comment-area'."
+This command does nothing if the pointer is not in a commented area.
+See also `pascal-comment-area'."
   (interactive)
   (save-excursion
     (let ((start (point))
@@ -938,7 +937,7 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."
 
 (defun pascal-indent-level ()
   "Return the indent-level the current statement has.
-Do not count labels, case-statements or records."
+Do not count labels, case statements or records."
   (save-excursion
     (beginning-of-line)
     (if (looking-at "[ \t]*[0-9a-zA-Z]+[ \t]*:[^=]")
@@ -995,7 +994,7 @@ Do not count labels, case-statements or records."
 
 (defun pascal-indent-paramlist (&optional arg)
   "Indent current line in parameterlist.
-If optional arg is non-nil, just return the
+If optional ARG is non-nil, just return the
 indent of the current line in parameterlist."
   (save-excursion
     (let* ((oldpos (point))
@@ -1414,7 +1413,7 @@ and disable it otherwise.  If called from Lisp, enable the mode
 if ARG is omitted or nil.
 
 When enabled, portions of the text being edited may be made
-invisible. \\<pascal-outline-map>
+invisible.\\<pascal-outline-map>
 
 Pascal Outline mode provides some additional commands.
 
@@ -1428,7 +1427,7 @@ Pascal Outline mode provides some additional commands.
 \\[pascal-show-all]\t- Show the whole buffer.
 \\[pascal-hide-other-defuns]\
 \t- Hide everything but the current function (function under the cursor).
-\\[pascal-outline]\t- Leave pascal-outline-mode."
+\\[pascal-outline]\t- Leave Pascal Outline mode."
   :init-value nil :lighter " Outl" :keymap pascal-outline-map
   (add-to-invisibility-spec '(pascal . t))
   (unless pascal-outline-mode
index 670451e58aea7cac26a62164d364e57afe8d254b..b0102c55ffd78a1215293b32d08d30cd2e4f643b 100644 (file)
 
   (defmacro python-rx (&rest regexps)
     "Python mode specialized rx macro.
-This variant of `rx' supports common python named REGEXPS."
+This variant of `rx' supports common Python named REGEXPS."
     (let ((rx-constituents (append python-rx-constituents rx-constituents)))
       (cond ((null regexps)
              (error "No regexp"))
@@ -528,7 +528,7 @@ The type returned can be `comment', `string' or `paren'."
 (defsubst python-syntax-count-quotes (quote-char &optional point limit)
   "Count number of quotes around point (max is 3).
 QUOTE-CHAR is the quote char to count.  Optional argument POINT is
-the point where scan starts (defaults to current point) and LIMIT
+the point where scan starts (defaults to current point), and LIMIT
 is used to limit the scan."
   (let ((i 0))
     (while (and (< i 3)
@@ -683,7 +683,7 @@ AFTER-LINE.")
 (defun python-indent-context ()
   "Get information on indentation context.
 Context information is returned with a cons with the form:
-    \(STATUS . START)
+    (STATUS . START)
 
 Where status can be any of the following symbols:
 
@@ -963,11 +963,11 @@ variable `python-indent-current-level'.
 
 When the variable `last-command' is not equal to one of the
 symbols inside `python-indent-trigger-commands' and FORCE-TOGGLE
-is nil it calculates possible indentation levels and saves it in
-the variable `python-indent-levels'.  Afterwards it sets the
+is nil it calculates possible indentation levels and saves them
+in the variable `python-indent-levels'.  Afterwards it sets the
 variable `python-indent-current-level' correctly so offset is
-equal to (`nth' `python-indent-current-level'
-`python-indent-levels')"
+equal to
+   (nth python-indent-current-level python-indent-levels)"
   (or
    (and (or (and (memq this-command python-indent-trigger-commands)
                  (eq last-command this-command))
@@ -1010,14 +1010,14 @@ See `python-indent-line' for details."
 (defun python-indent-dedent-line-backspace (arg)
   "De-indent current line.
 Argument ARG is passed to `backward-delete-char-untabify' when
-point is  not in between the indentation."
+point is not in between the indentation."
   (interactive "*p")
   (when (not (python-indent-dedent-line))
     (backward-delete-char-untabify arg)))
 (put 'python-indent-dedent-line-backspace 'delete-selection 'supersede)
 
 (defun python-indent-region (start end)
-  "Indent a python region automagically.
+  "Indent a Python region automagically.
 
 Called from a program, START and END specify the region to indent."
   (let ((deactivate-mark nil))
@@ -1076,7 +1076,7 @@ any lines in the region are indented less than COUNT columns."
 (add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
 
 (defun python-indent-shift-right (start end &optional count)
-  "Shift lines contained in region START END by COUNT columns to the left.
+  "Shift lines contained in region START END by COUNT columns to the right.
 COUNT defaults to `python-indent-offset'.  If region isn't
 active, the current line is shifted.  The shifted region includes
 the lines in which START and END lie."
@@ -1091,10 +1091,9 @@ the lines in which START and END lie."
 
 (defun python-indent-post-self-insert-function ()
   "Adjust indentation after insertion of some characters.
-This function is intended to be added to the
-`post-self-insert-hook.'  If a line renders a paren alone, after
-adding a char before it, the line will be re-indented
-automatically if needed."
+This function is intended to be added to `post-self-insert-hook.'
+If a line renders a paren alone, after adding a char before it,
+the line will be re-indented automatically if needed."
   (when (and electric-indent-mode
              (eq (char-before) last-command-event))
     (cond
@@ -1176,10 +1175,10 @@ With positive ARG search backwards, else search forwards."
 
 (defun python-nav-beginning-of-defun (&optional arg)
   "Move point to `beginning-of-defun'.
-With positive ARG search backwards else search forward.  When ARG
-is nil or 0 defaults to 1.  When searching backwards nested
-defuns are handled with care depending on current point
-position.  Return non-nil if point is moved to
+With positive ARG search backwards else search forward.
+ARG nil or 0 defaults to 1.  When searching backwards,
+nested defuns are handled with care depending on current
+point position.  Return non-nil if point is moved to
 `beginning-of-defun'."
   (when (or (null arg) (= arg 0)) (setq arg 1))
   (let ((found))
@@ -1559,7 +1558,7 @@ backward N times."
 (defun python-nav-backward-sexp (&optional arg)
   "Move backward across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-backward N times."
+forward N times."
   (interactive "^p")
   (or arg (setq arg 1))
   (python-nav-forward-sexp (- arg)))
@@ -1580,7 +1579,7 @@ backward N times."
 (defun python-nav-backward-sexp-safe (&optional arg)
   "Move backward safely across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-backward N times."
+forward N times."
   (interactive "^p")
   (or arg (setq arg 1))
   (python-nav-forward-sexp-safe (- arg)))
@@ -1640,7 +1639,7 @@ This command assumes point is not in a string or comment."
 (defun python-nav-backward-up-list (&optional arg)
   "Move backward out of one level of parentheses (or blocks).
 With ARG, do this that many times.
-A negative argument means move backward but still to a less deep spot.
+A negative argument means move forward but still to a less deep spot.
 This command assumes point is not in a string or comment."
   (interactive "^p")
   (or arg (setq arg 1))
@@ -1695,36 +1694,36 @@ position, else returns nil."
   :group 'python)
 
 (defcustom python-shell-prompt-regexp ">>> "
-  "Regular Expression matching top\-level input prompt of python shell.
+  "Regular expression matching top-level input prompt of Python shell.
 It should not contain a caret (^) at the beginning."
   :type 'string
   :group 'python
   :safe 'stringp)
 
 (defcustom python-shell-prompt-block-regexp "[.][.][.] "
-  "Regular Expression matching block input prompt of python shell.
+  "Regular expression matching block input prompt of Python shell.
 It should not contain a caret (^) at the beginning."
   :type 'string
   :group 'python
   :safe 'stringp)
 
 (defcustom python-shell-prompt-output-regexp ""
-  "Regular Expression matching output prompt of python shell.
+  "Regular expression matching output prompt of Python shell.
 It should not contain a caret (^) at the beginning."
   :type 'string
   :group 'python
   :safe 'stringp)
 
 (defcustom python-shell-prompt-pdb-regexp "[(<]*[Ii]?[Pp]db[>)]+ "
-  "Regular Expression matching pdb input prompt of python shell.
+  "Regular expression matching pdb input prompt of Python shell.
 It should not contain a caret (^) at the beginning."
   :type 'string
   :group 'python
   :safe 'stringp)
 
 (defcustom python-shell-enable-font-lock t
-  "Should syntax highlighting be enabled in the python shell buffer?
-Restart the python shell after changing this variable for it to take effect."
+  "Should syntax highlighting be enabled in the Python shell buffer?
+Restart the Python shell after changing this variable for it to take effect."
   :type 'boolean
   :group 'python
   :safe 'booleanp)
@@ -1890,9 +1889,9 @@ It makes parens and quotes be treated as punctuation chars.")
 (define-derived-mode inferior-python-mode comint-mode "Inferior Python"
   "Major mode for Python inferior process.
 Runs a Python interpreter as a subprocess of Emacs, with Python
-I/O through an Emacs buffer.  Variables
-`python-shell-interpreter' and `python-shell-interpreter-args'
-controls which Python interpreter is run.  Variables
+I/O through an Emacs buffer.  Variables `python-shell-interpreter'
+and `python-shell-interpreter-args' control which Python
+interpreter is run.  Variables
 `python-shell-prompt-regexp',
 `python-shell-prompt-output-regexp',
 `python-shell-prompt-block-regexp',
@@ -1960,8 +1959,8 @@ variable.
   (compilation-shell-minor-mode 1))
 
 (defun python-shell-make-comint (cmd proc-name &optional pop internal)
-  "Create a python shell comint buffer.
-CMD is the python command to be executed and PROC-NAME is the
+  "Create a Python shell comint buffer.
+CMD is the Python command to be executed and PROC-NAME is the
 process name the comint buffer will get.  After the comint buffer
 is created the `inferior-python-mode' is activated.  When
 optional argument POP is non-nil the buffer is shown.  When
@@ -2000,8 +1999,8 @@ command used to call the interpreter and define DEDICATED, so a
 dedicated process for the current buffer is open.  When numeric
 prefix arg is other than 0 or 4 do not SHOW.
 
-Runs the hook `inferior-python-mode-hook' (after the
-`comint-mode-hook' is run).  \(Type \\[describe-mode] in the
+Runs the hook `inferior-python-mode-hook' after
+`comint-mode-hook' is run.  (Type \\[describe-mode] in the
 process buffer for a list of commands.)"
   (interactive
    (if current-prefix-arg
@@ -2021,7 +2020,7 @@ Input and output via buffer named after
 `python-shell-internal-get-process-name' returns.
 
 This new kind of shell is intended to be used for generic
-communication related to defined configurations, the main
+communication related to defined configurations; the main
 difference with global or dedicated shells is that these ones are
 attached to a configuration, not a buffer.  This means that can
 be used for example to retrieve the sys.path and other stuff,
@@ -2037,7 +2036,7 @@ startup."
       (python-shell-internal-get-process-name) nil t))))
 
 (defun python-shell-get-buffer ()
-  "Get inferior Python buffer for current buffer and return it."
+  "Return inferior Python buffer for current buffer."
   (let* ((dedicated-proc-name (python-shell-get-process-name t))
          (dedicated-proc-buffer-name (format "*%s*" dedicated-proc-name))
          (global-proc-name  (python-shell-get-process-name nil))
@@ -2049,7 +2048,7 @@ startup."
         (and global-running global-proc-buffer-name))))
 
 (defun python-shell-get-process ()
-  "Get inferior Python process for current buffer and return it."
+  "Return inferior Python process for current buffer."
   (get-buffer-process (python-shell-get-buffer)))
 
 (defun python-shell-get-or-create-process ()
@@ -2216,7 +2215,7 @@ source file.")
 This is a wrapper over `buffer-substring' that takes care of
 different transformations for the code sent to be evaluated in
 the python shell:
-  1. When Optional Argument NOMAIN is non-nil everything under an
+  1. When optional argument NOMAIN is non-nil everything under an
      \"if __name__ == '__main__'\" block will be removed.
   2. When a subregion of the buffer is sent, it takes care of
      appending extra empty lines so tracebacks are correct.
@@ -2288,7 +2287,7 @@ the python shell:
 (defun python-shell-send-buffer (&optional arg)
   "Send the entire buffer to inferior Python process.
 With prefix ARG allow execution of code inside blocks delimited
-by \"if __name__== '__main__':\""
+by \"if __name__== '__main__':\"."
   (interactive "P")
   (save-restriction
     (widen)
@@ -2319,8 +2318,8 @@ When argument ARG is non-nil do not include decorators."
                                          delete)
   "Send FILE-NAME to inferior Python PROCESS.
 If TEMP-FILE-NAME is passed then that file is used for processing
-instead, while internally the shell will continue to use
-FILE-NAME.  If DELETE is non-nil, delete the file afterwards."
+instead, while internally the shell will continue to use FILE-NAME.
+If DELETE is non-nil, delete the file afterwards."
   (interactive "fFile to send: ")
   (let* ((process (or process (python-shell-get-or-create-process)))
          (temp-file-name (when temp-file-name
@@ -2420,8 +2419,7 @@ and use the following as the value of this variable:
 
 (defun python-shell-completion-get-completions (process line input)
   "Do completion at point for PROCESS.
-LINE is used to detect the context on how to complete given
-INPUT."
+LINE is used to detect the context on how to complete given INPUT."
   (let* ((prompt
           ;; Get last prompt of the inferior process buffer (this
           ;; intentionally avoids using `comint-last-prompt' because
@@ -2507,8 +2505,8 @@ using that one instead of current buffer's process."
 
 (defun python-shell-completion-complete-or-indent ()
   "Complete or indent depending on the context.
-If content before pointer is all whitespace indent.  If not try
-to complete."
+If content before pointer is all whitespace, indent.
+If not try to complete."
   (interactive)
   (if (string-match "^[[:space:]]*$"
                     (buffer-substring (comint-line-beginning-position)
@@ -2520,14 +2518,14 @@ to complete."
 ;;; PDB Track integration
 
 (defcustom python-pdbtrack-activate t
-  "Non-nil makes python shell enable pdbtracking."
+  "Non-nil makes Python shell enable pdbtracking."
   :type 'boolean
   :group 'python
   :safe 'booleanp)
 
 (defcustom python-pdbtrack-stacktrace-info-regexp
   "> \\([^\"(<]+\\)(\\([0-9]+\\))\\([?a-zA-Z0-9_<>]+\\)()"
-  "Regular Expression matching stacktrace information.
+  "Regular expression matching stacktrace information.
 Used to extract the current line and module being inspected."
   :type 'string
   :group 'python
@@ -2613,9 +2611,9 @@ Argument OUTPUT is a string with the output from the comint process."
 
 (defun python-completion-complete-at-point ()
   "Complete current symbol at point.
-For this to work the best as possible you should call
+For this to work as best as possible you should call
 `python-shell-send-buffer' from time to time so context in
-inferior python process is updated properly."
+inferior Python process is updated properly."
   (let ((process (python-shell-get-process)))
     (if (not process)
         (error "Completion needs an inferior Python process running")
@@ -2660,12 +2658,12 @@ fill parens."
 This affects `python-fill-string' behavior with regards to
 triple quotes positioning.
 
-Possible values are DJANGO, ONETWO, PEP-257, PEP-257-NN,
-SYMMETRIC, and NIL.  A value of NIL won't care about quotes
+Possible values are `django', `onetwo', `pep-257', `pep-257-nn',
+`symmetric', and nil.  A value of nil won't care about quotes
 position and will treat docstrings a normal string, any other
 value may result in one of the following docstring styles:
 
-DJANGO:
+`django':
 
     \"\"\"
     Process foo, return bar.
@@ -2677,7 +2675,7 @@ DJANGO:
     If processing fails throw ProcessingError.
     \"\"\"
 
-ONETWO:
+`onetwo':
 
     \"\"\"Process foo, return bar.\"\"\"
 
@@ -2688,7 +2686,7 @@ ONETWO:
 
     \"\"\"
 
-PEP-257:
+`pep-257':
 
     \"\"\"Process foo, return bar.\"\"\"
 
@@ -2698,7 +2696,7 @@ PEP-257:
 
     \"\"\"
 
-PEP-257-NN:
+`pep-257-nn':
 
     \"\"\"Process foo, return bar.\"\"\"
 
@@ -2707,7 +2705,7 @@ PEP-257-NN:
     If processing fails throw ProcessingError.
     \"\"\"
 
-SYMMETRIC:
+`symmetric':
 
     \"\"\"Process foo, return bar.\"\"\"
 
@@ -3064,8 +3062,8 @@ The skeleton will be bound to python-skeleton-NAME."
 
 (defun python-check (command)
   "Check a Python file (default current buffer's file).
-Runs COMMAND, a shell command, as if by `compile'.  See
-`python-check-command' for the default."
+Runs COMMAND, a shell command, as if by `compile'.
+See `python-check-command' for the default."
   (interactive
    (list (read-string "Check command: "
                       (or python-check-custom-command
@@ -3130,10 +3128,9 @@ Runs COMMAND, a shell command, as if by `compile'.  See
 
 (defun python-eldoc--get-doc-at-point (&optional force-input force-process)
   "Internal implementation to get documentation at point.
-If not FORCE-INPUT is passed then what
-`python-info-current-symbol' returns will be used.  If not
-FORCE-PROCESS is passed what `python-shell-get-process' returns
-is used."
+If not FORCE-INPUT is passed then what `python-info-current-symbol'
+returns will be used.  If not FORCE-PROCESS is passed what
+`python-shell-get-process' returns is used."
   (let ((process (or force-process (python-shell-get-process))))
     (if (not process)
         (error "Eldoc needs an inferior Python process running")
@@ -3146,9 +3143,9 @@ is used."
 
 (defun python-eldoc-function ()
   "`eldoc-documentation-function' for Python.
-For this to work the best as possible you should call
+For this to work as best as possible you should call
 `python-shell-send-buffer' from time to time so context in
-inferior python process is updated properly."
+inferior Python process is updated properly."
   (python-eldoc--get-doc-at-point))
 
 (defun python-eldoc-at-point (symbol)
@@ -3185,15 +3182,15 @@ It must be a function with two arguments: TYPE and NAME.")
 It must be a function with two arguments: TYPE and NAME.")
 
 (defun python-imenu-format-item-label (type name)
-  "Return imenu label for single node using TYPE and NAME."
+  "Return Imenu label for single node using TYPE and NAME."
   (format "%s (%s)" name type))
 
 (defun python-imenu-format-parent-item-label (type name)
-  "Return imenu label for parent node using TYPE and NAME."
+  "Return Imenu label for parent node using TYPE and NAME."
   (format "%s..." (python-imenu-format-item-label type name)))
 
 (defun python-imenu-format-parent-item-jump-label (type _name)
-  "Return imenu label for parent node jump using TYPE and NAME."
+  "Return Imenu label for parent node jump using TYPE and NAME."
   (if (string= type "class")
       "*class definition*"
     "*function definition*"))
@@ -3210,7 +3207,7 @@ It must be a function with two arguments: TYPE and NAME.")
 
 (defun python-imenu--build-tree (&optional min-indent prev-indent tree)
   "Recursively build the tree of nested definitions of a node.
-Arguments MIN-INDENT PREV-INDENT and TREE are internal and should
+Arguments MIN-INDENT, PREV-INDENT and TREE are internal and should
 not be passed explicitly unless you know what you are doing."
   (setq min-indent (or min-indent 0)
         prev-indent (or prev-indent python-indent-offset))
@@ -3251,7 +3248,7 @@ not be passed explicitly unless you know what you are doing."
                tree)))))))
 
 (defun python-imenu-create-index ()
-  "Return tree Imenu alist for the current python buffer.
+  "Return tree Imenu alist for the current Python buffer.
 Change `python-imenu-format-item-label-function',
 `python-imenu-format-parent-item-label-function',
 `python-imenu-format-parent-item-jump-label-function' to
@@ -3264,18 +3261,19 @@ customize how labels are formatted."
     index))
 
 (defun python-imenu-create-flat-index (&optional alist prefix)
-  "Return flat outline of the current python buffer for Imenu.
-Optional Argument ALIST is the tree to be flattened, when nil
+  "Return flat outline of the current Python buffer for Imenu.
+Optional argument ALIST is the tree to be flattened; when nil
 `python-imenu-build-index' is used with
 `python-imenu-format-parent-item-jump-label-function'
 `python-imenu-format-parent-item-label-function'
-`python-imenu-format-item-label-function' set to (lambda (type
-name) name).  Optional Argument PREFIX is used in recursive calls
-and should not be passed explicitly.
+`python-imenu-format-item-label-function' set to
+  (lambda (type name) name)
+Optional argument PREFIX is used in recursive calls and should
+not be passed explicitly.
 
 Converts this:
 
-    \((\"Foo\" . 103)
+    ((\"Foo\" . 103)
      (\"Bar\" . 138)
      (\"decorator\"
       (\"decorator\" . 173)
@@ -3285,7 +3283,7 @@ Converts this:
 
 To this:
 
-    \((\"Foo\" . 103)
+    ((\"Foo\" . 103)
      (\"Bar\" . 138)
      (\"decorator\" . 173)
      (\"decorator.wrap\" . 353)
@@ -3318,9 +3316,8 @@ To this:
 (defun python-info-current-defun (&optional include-type)
   "Return name of surrounding function with Python compatible dotty syntax.
 Optional argument INCLUDE-TYPE indicates to include the type of the defun.
-This function is compatible to be used as
-`add-log-current-defun-function' since it returns nil if point is
-not inside a defun."
+This function can be used as the value of `add-log-current-defun-function'
+since it returns nil if point is not inside a defun."
   (save-restriction
     (widen)
     (save-excursion
@@ -3583,13 +3580,13 @@ operator."
          (looking-at python-nav-beginning-of-defun-regexp))))
 
 (defun python-info-current-line-comment-p ()
-  "Check if current line is a comment line."
+  "Return non-nil if current line is a comment line."
   (char-equal
    (or (char-after (+ (line-beginning-position) (current-indentation))) ?_)
    ?#))
 
 (defun python-info-current-line-empty-p ()
-  "Check if current line is empty, ignoring whitespace."
+  "Return non-nil if current line is empty, ignoring whitespace."
   (save-excursion
     (beginning-of-line 1)
     (looking-at
@@ -3633,9 +3630,9 @@ Optional argument DIRECTION defines the direction to move to."
 
 (defun python-util-popn (lst n)
   "Return LST first N elements.
-N should be an integer, when it's a natural negative number its
-opposite is used.  When N is bigger than the length of LST, the
-list is returned as is."
+N should be an integer, when negative its opposite is used.
+When N is bigger than the length of LST, the list is
+returned as is."
   (let* ((n (min (abs n)))
          (len (length lst))
          (acc))
index 5cd054a22a814e5f30dc6c44cca60dd868245b7e..fe9346047c6a0681a52002daa86ed5eebb1118ce 100644 (file)
@@ -2127,11 +2127,21 @@ See `font-lock-syntax-table'.")
     (ruby-match-expression-expansion
      2 font-lock-variable-name-face t)
     ;; Negation char.
-    ("[^[:alnum:]_]\\(!\\)[^=]"
+    ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]"
      1 font-lock-negation-char-face)
     ;; Character literals.
     ;; FIXME: Support longer escape sequences.
     ("\\_<\\?\\\\?\\S " 0 font-lock-string-face)
+    ;; Regexp options.
+    ("\\(?:\\s|\\|/\\)\\([imxo]+\\)"
+     1 (when (save-excursion
+               (let ((state (syntax-ppss (match-beginning 0))))
+                 (and (nth 3 state)
+                      (or (eq (char-after) ?/)
+                          (progn
+                            (goto-char (nth 8 state))
+                            (looking-at "%r"))))))
+         font-lock-preprocessor-face))
     )
   "Additional expressions to highlight in Ruby mode.")
 
index 7c677df85929cabda49acc9a361ac164c9c8fecb..8ab6a0466d4b43989b3eae1c07d2ad897964ea72 100644 (file)
@@ -1,7 +1,6 @@
 ;;; sh-script.el --- shell-script editing commands for Emacs  -*- lexical-binding:t -*-
 
-;; Copyright (C) 1993-1997, 1999, 2001-2014 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1993-1997, 1999, 2001-2014 Free Software Foundation, Inc.
 
 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>
 ;; Version: 2.0f
   '((ash . sh)
     (bash . jsh)
     (bash2 . jsh)
+    (dash . ash)
     (dtksh . ksh)
     (es . rc)
     (itcsh . tcsh)
@@ -255,6 +255,7 @@ rc          Plan 9 Shell
   es           Extensible Shell
 sh             Bourne Shell
   ash          Almquist Shell
+    dash       Debian Almquist Shell
   jsh          Bourne Shell with Job Control
     bash       GNU Bourne Again Shell
     ksh88      Korn Shell '88
@@ -267,6 +268,7 @@ sh          Bourne Shell
   posix                IEEE 1003.2 Shell Standard
   wsh          ? Shell"
   :type '(repeat (cons symbol symbol))
+  :version "24.4"                       ; added dash
   :group 'sh-script)
 
 
index 3f935bbaf5f63d48970a222da3d5ed7b7e45b528..13d4178116e653157578af09a8a13ce981f8a71c 100644 (file)
@@ -3928,8 +3928,8 @@ you entered, right above the output it created.
   ;; People wanting a different history file for each
   ;; buffer/process/client/whatever can change separator and file-name
   ;; on the sql-interactive-mode-hook.
-  (setq comint-input-ring-separator sql-input-ring-separator
-       comint-input-ring-file-name sql-input-ring-file-name)
+  (setq-local comint-input-ring-separator sql-input-ring-separator)
+  (setq comint-input-ring-file-name sql-input-ring-file-name)
   ;; Calling the hook before calling comint-read-input-ring allows users
   ;; to set comint-input-ring-file-name in sql-interactive-mode-hook.
   (comint-read-input-ring t))
index 102ba6c60e46d81b52358625e0491a47a0934574..1c64a9a8e6414d4ccc1eaf47e63c13827311dd4c 100644 (file)
@@ -81,10 +81,9 @@ A list of the form (FRAME-CONFIGURATION POSITION)
 (defcustom register-separator nil
   "Register containing the text to put between collected texts, or nil if none.
 
-When collecting text with
-`append-to-register' (resp. `prepend-to-register') contents of
-this register is added to the beginning (resp. end) of the marked
-text."
+When collecting text with \\[append-to-register] (or \\[prepend-to-register]),
+contents of this register is added to the beginning (or end, respectively)
+of the marked text."
   :group 'register
   :type '(choice (const :tag "None" nil)
                 (character :tag "Use register" :value ?+)))
@@ -121,8 +120,8 @@ See the documentation of the variable `register-alist' for possible VALUEs."
 
 (defun register-preview-default (r)
   "Default function for the variable `register-preview-function'."
-  (format "%s %s\n"
-         (concat (single-key-description (car r)) ":")
+  (format "%s: %s\n"
+         (single-key-description (car r))
          (register-describe-oneline (car r))))
 
 (defvar register-preview-function #'register-preview-default
@@ -135,7 +134,7 @@ Returns a string.")
 If SHOW-EMPTY is non-nil show the window even if no registers.
 Format of each entry is controlled by the variable `register-preview-function'."
   (when (or show-empty (consp register-alist))
-    (with-temp-buffer-window
+    (with-current-buffer-window
      buffer
      (cons 'display-buffer-below-selected
           '((window-height . fit-window-to-buffer)))
@@ -456,10 +455,10 @@ Interactively, reads the register using `register-read-with-preview'."
 (defun copy-to-register (register start end &optional delete-flag region)
   "Copy region into register REGISTER.
 With prefix arg, delete as well.
-Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
-START and END are buffer positions indicating what to copy.
-The optional argument REGION if non-nil, indicates that we're not just copying
-some text between START and END, but we're copying the region.
+Called from program, takes five args: REGISTER, START, END, DELETE-FLAG,
+and REGION.  START and END are buffer positions indicating what to copy.
+The optional argument REGION if non-nil, indicates that we're not just
+copying some text between START and END, but we're copying the region.
 
 Interactively, reads the register using `register-read-with-preview'."
   (interactive (list (register-read-with-preview "Copy to register: ")
index 6b23410951240a6afa82e1617d2142c047c550f7..a25dba2e39ecf6d658f60233401d747ba6953985 100644 (file)
@@ -155,12 +155,12 @@ file:
   (if (not (or buffer-file-name (and (derived-mode-p 'dired-mode)
                                     dired-directory)))
       (message "Buffer `%s' not visiting a file or directory" (buffer-name))
-    (if (and save-place (or (not parg) (<= parg 0)))
-       (progn
-         (message "No place will be saved in this file")
-         (setq save-place nil))
-      (message "Place will be saved")
-      (setq save-place t))))
+    (setq save-place (if parg
+                         (> (prefix-numeric-value parg) 0)
+                       (not save-place)))
+    (message (if save-place
+                 "Place will be saved"
+               "No place will be saved in this file"))))
 
 (declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep))
 
index 85a7476dbe09a4ff5a0ab21564dd343467276bdf..d84708217b49c64874c8125533edc3aeac38c02d 100644 (file)
@@ -383,8 +383,9 @@ If option `use-hard-newlines' is non-nil, the newline is marked with the
 text-property `hard'.
 With ARG, insert that many newlines.
 
-To turn off indentation by this command, disable Electric Indent mode
-\(see \\[electric-indent-mode]).
+If `electric-indent-mode' is enabled, this indents the final new line
+that it adds, and reindents the preceding line.  To just insert
+a newline, use \\[electric-indent-just-newline].
 
 Calls `auto-fill-function' if the current column number is greater
 than the value of `fill-column' and ARG is nil.
@@ -1008,6 +1009,7 @@ KILLFLAG is set if N was explicitly specified."
 
        ;; Otherwise, do simple deletion.
        (t (delete-char n killflag))))
+(put 'delete-forward-char 'interactive-only 'delete-char)
 
 (defun mark-whole-buffer ()
   "Put point at beginning and mark at end of buffer.
@@ -2426,7 +2428,7 @@ If it crosses the edge, we return nil."
        ((stringp (car undo-elt))
         ;; (TEXT . POSITION)
         (and (>= (abs (cdr undo-elt)) start)
-             (< (abs (cdr undo-elt)) end)))
+             (<= (abs (cdr undo-elt)) end)))
        ((and (consp undo-elt) (markerp (car undo-elt)))
         ;; This is a marker-adjustment element (MARKER . ADJUSTMENT).
         ;; See if MARKER is inside the region.
@@ -3468,7 +3470,6 @@ extract characters that are special to a buffer, and should not
 be copied into other buffers."
   (funcall filter-buffer-substring-function beg end delete))
 
-;; FIXME: `with-wrapper-hook' is obsolete
 (defun buffer-substring--filter (beg end &optional delete)
   (with-wrapper-hook filter-buffer-substring-functions (beg end delete)
     (cond
@@ -4391,12 +4392,12 @@ run `deactivate-mark-hook'."
   "Activate the mark.
 If NO-TMM is non-nil, leave `transient-mark-mode' alone."
   (when (mark t)
-    (unless (and mark-active transient-mark-mode)
-      (force-mode-line-update)) ;Refresh toolbar (bug#16382).
-    (setq mark-active t)
-    (unless (or transient-mark-mode no-tmm)
-      (setq transient-mark-mode 'lambda))
-    (run-hooks 'activate-mark-hook)))
+    (unless (region-active-p)
+      (force-mode-line-update) ;Refresh toolbar (bug#16382).
+      (setq mark-active t)
+      (unless (or transient-mark-mode no-tmm)
+        (setq transient-mark-mode 'lambda))
+      (run-hooks 'activate-mark-hook))))
 
 (defun set-mark (pos)
   "Set this buffer's mark to POS.  Don't use this function!
@@ -4414,14 +4415,18 @@ To remember a location for internal use in the Lisp program,
 store it in a Lisp variable.  Example:
 
    (let ((beg (point))) (forward-line 1) (delete-region beg (point)))."
-
-  (set-marker (mark-marker) pos (current-buffer))
   (if pos
-      (activate-mark 'no-tmm)
+      (progn
+        (set-marker (mark-marker) pos (current-buffer))
+        (activate-mark 'no-tmm))
     ;; Normally we never clear mark-active except in Transient Mark mode.
     ;; But when we actually clear out the mark value too, we must
     ;; clear mark-active in any mode.
-    (deactivate-mark t)))
+    (deactivate-mark t)
+    ;; `deactivate-mark' sometimes leaves mark-active non-nil, but
+    ;; it should never be nil if the mark is nil.
+    (setq mark-active nil)
+    (set-marker (mark-marker) nil)))
 
 (defcustom use-empty-active-region nil
   "Whether \"region-aware\" commands should act on empty regions.
@@ -6336,8 +6341,12 @@ If called from Lisp, enable the mode if ARG is omitted or nil."
   :group 'paren-matching)
 
 (defcustom blink-matching-paren t
-  "Non-nil means show matching open-paren when close-paren is inserted."
-  :type 'boolean
+  "Non-nil means show matching open-paren when close-paren is inserted.
+If t, highlight the paren.  If `jump', move cursor to its position."
+  :type '(choice
+          (const :tag "Disable" nil)
+          (const :tag "Highlight" t)
+          (const :tag "Move cursor" jump))
   :group 'paren-blinking)
 
 (defcustom blink-matching-paren-on-screen t
@@ -6447,17 +6456,21 @@ The function should return non-nil if the two tokens do not match.")
             (message "No matching parenthesis found"))))
        ((not blinkpos) nil)
        ((pos-visible-in-window-p blinkpos)
-        ;; Matching open within window, temporarily highlight char
-        ;; after blinkpos but only if `blink-matching-paren-on-screen'
+        ;; Matching open within window, temporarily move to or highlight
+        ;; char after blinkpos but only if `blink-matching-paren-on-screen'
         ;; is non-nil.
         (and blink-matching-paren-on-screen
              (not show-paren-mode)
-             (unwind-protect
-                 (progn
-                   (move-overlay blink-matching--overlay blinkpos (1+ blinkpos)
-                                 (current-buffer))
+             (if (eq blink-matching-paren 'jump)
+                 (save-excursion
+                   (goto-char blinkpos)
                    (sit-for blink-matching-delay))
-               (delete-overlay blink-matching--overlay))))
+               (unwind-protect
+                   (progn
+                     (move-overlay blink-matching--overlay blinkpos (1+ blinkpos)
+                                   (current-buffer))
+                     (sit-for blink-matching-delay))
+                 (delete-overlay blink-matching--overlay)))))
        (t
         (save-excursion
           (goto-char blinkpos)
index b3f2316729b1a95b49d67ee4ed5d15ecd0e907e7..d6d0ff9bd42ea5955e769b5319a18a5baf95af8d 100644 (file)
@@ -1,7 +1,6 @@
 ;;; startup.el --- process Emacs shell arguments  -*- lexical-binding: t -*-
 
-;; Copyright (C) 1985-1986, 1992, 1994-2014 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1985-1986, 1992, 1994-2014 Free Software Foundation, Inc.
 
 ;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: internal
@@ -282,10 +281,15 @@ these functions will invoke the debugger.")
   "Normal hook run after loading init files and handling the command line.")
 
 (defvar term-setup-hook nil
-  "Normal hook run after loading terminal-specific Lisp code.
-It also follows `emacs-startup-hook'.  This hook exists for users to set,
-so as to override the definitions made by the terminal-specific file.
-Emacs never sets this variable itself.")
+  "Normal hook run immediately after `emacs-startup-hook'.
+In new code, there is no reason to use this instead of `emacs-startup-hook'.
+If you want to execute terminal-specific Lisp code, for example
+to override the definitions made by the terminal-specific file,
+see `tty-setup-hook'.")
+
+(make-obsolete-variable 'term-setup-hook
+                       "use either `emacs-startup-hook' or \
+`tty-setup-hook' instead." "24.4")
 
 (defvar inhibit-startup-hooks nil
   "Non-nil means don't run `term-setup-hook' and `emacs-startup-hook'.
@@ -1281,8 +1285,9 @@ the `--debug-init' option to view a complete error backtrace."
   ;; Load library for our terminal type.
   ;; User init file can set term-file-prefix to nil to prevent this.
   (unless (or noninteractive
-              initial-window-system)
-    (tty-run-terminal-initialization (selected-frame)))
+              initial-window-system
+              (daemonp))
+    (tty-run-terminal-initialization (selected-frame) nil t))
 
   ;; Update the out-of-memory error message based on user's key bindings
   ;; for save-some-buffers.
index fdaf31a93126e3cc89266497ea8e927af23b5354..040b4e7135a038bb2665c22fef56fdfec4d69c4b 100644 (file)
@@ -202,7 +202,7 @@ static char * stroke_xpm[] = {
 \"P    c #FFFF0000FFFF\",
 \".    c #45458B8B0000\",
 /* pixels */\n"
-  "The header to all xpm buffers created by strokes.")
+  "The header to all XPM buffers created by strokes.")
 
 ;;; user variables...
 
@@ -221,7 +221,7 @@ static char * stroke_xpm[] = {
 
 (defcustom strokes-character ?@
   "Character used when drawing strokes in the strokes buffer.
-\(The default is `@', which works well.\)"
+\(The default is `@', which works well.)"
   :type 'character
   :group 'strokes)
 
@@ -284,16 +284,15 @@ This is set properly in the function `strokes-update-window-configuration'.")
 
 (defvar strokes-last-stroke nil
   "Last stroke entered by the user.
-Its value gets set every time the function
-`strokes-fill-stroke' gets called,
-since that is the best time to set the variable.")
+Its value gets set every time the function `strokes-fill-stroke'
+gets called, since that is the best time to set the variable.")
 
 (defvar strokes-global-map '()
   "Association list of strokes and their definitions.
 Each entry is (STROKE . COMMAND) where STROKE is itself a list of
 coordinates (X . Y) where X and Y are lists of positions on the
-normalized stroke grid, with the top left at (0 . 0).  COMMAND is the
-corresponding interactive function.")
+normalized stroke grid, with the top left at (0 . 0).  COMMAND is
+the corresponding interactive function.")
 
 (defvar strokes-load-hook nil
   "Functions to be called when Strokes is loaded.")
@@ -349,7 +348,7 @@ corresponding interactive function.")
   (* x x))
 
 (defsubst strokes-distance-squared (p1 p2)
-  "Gets the distance (squared) between to points P1 and P2.
+  "Compute the distance (squared) between to points P1 and P2.
 P1 and P2 are cons cells in the form (X . Y)."
   (let ((x1 (car p1))
        (y1 (cdr p1))
@@ -434,9 +433,9 @@ or for window START-WINDOW if that is specified."
 ;;;###autoload
 (defun strokes-global-set-stroke (stroke command)
   "Interactively give STROKE the global binding as COMMAND.
-Operated just like `global-set-key', except for strokes.
-COMMAND is a symbol naming an interactively-callable function.  STROKE
-is a list of sampled positions on the stroke grid as described in the
+Works just like `global-set-key', except for strokes.  COMMAND is
+a symbol naming an interactively-callable function.  STROKE is a
+list of sampled positions on the stroke grid as described in the
 documentation for the `strokes-define-stroke' function.
 
 See also `strokes-global-set-stroke-string'."
@@ -450,7 +449,7 @@ See also `strokes-global-set-stroke-string'."
 
 (defun strokes-global-set-stroke-string (stroke string)
   "Interactively give STROKE the global binding as STRING.
-Operated just like `global-set-key', except for strokes.  STRING
+Works just like `global-set-key', except for strokes.  STRING
 is a string to be inserted by the stroke.  STROKE is a list of
 sampled positions on the stroke grid as described in the
 documentation for the `strokes-define-stroke' function.
@@ -476,7 +475,7 @@ Compare `strokes-global-set-stroke'."
 (defun strokes-get-grid-position (stroke-extent position &optional grid-resolution)
   "Map POSITION to a new grid position.
 Do so based on its STROKE-EXTENT and GRID-RESOLUTION.
-STROKE-EXTENT as a list \(\(XMIN . YMIN\) \(XMAX . YMAX\)\).
+STROKE-EXTENT is a list ((XMIN . YMIN) (XMAX . YMAX)).
 If POSITION is a `strokes-lift', then it is itself returned.
 Optional GRID-RESOLUTION may be used in place of `strokes-grid-resolution'.
 The grid is a square whose dimension is [0,GRID-RESOLUTION)."
@@ -651,7 +650,7 @@ NOTE: This is where the global variable `strokes-last-stroke' is set."
                                                    y))))))))))
 
 (defun strokes-rate-stroke (stroke1 stroke2)
-  "Rates STROKE1 with STROKE2 and return a score based on a distance metric.
+  "Rate STROKE1 with STROKE2 and return a score based on a distance metric.
 Note: the rating is an error rating, and therefore, a return of 0
 represents a perfect match.  Also note that the order of stroke
 arguments is order-independent for the algorithm used here."
@@ -857,6 +856,9 @@ Optional EVENT is acceptable as the starting event of the stroke."
 The command will be executed provided one exists for that stroke,
 based on the variable `strokes-minimum-match-score'.
 If no stroke matches, nothing is done and return value is nil."
+  ;; FIXME: Undocument return value.  It is not documented for all cases,
+  ;; and doesn't allow to difference between no stroke matches and
+  ;; command-execute returning nil, anyway.
   (let* ((match (strokes-match-stroke stroke strokes-global-map))
         (command (car match))
         (score (cdr match)))
@@ -969,8 +971,8 @@ and you can enter in any arbitrary stroke.  Remember: The strokes
 package lets you program in simple and complex (multi-lift) strokes.
 The only difference is how you *invoke* the two.  You will most likely
 use simple strokes, as complex strokes were developed for
-Chinese/Japanese/Korean.  So the shifted middle mouse button (S-mouse-2) will
-invoke the command `strokes-do-stroke'.
+Chinese/Japanese/Korean.  So the shifted middle mouse button (S-mouse-2)
+will invoke the command `strokes-do-stroke'.
 
 If ever you define a stroke which you don't like, then you can unset
 it with the command
@@ -993,8 +995,8 @@ down, then use a prefix argument:
 
 Your strokes are stored as you enter them.  They get saved into the
 file specified by the `strokes-file' variable, along with other strokes
-configuration variables.  You will be prompted to save them when
-you exit Emacs, or you can save them with
+configuration variables.  You will be prompted to save them when you
+exit Emacs, or you can save them with
 
 > M-x strokes-prompt-user-save-strokes
 
@@ -1009,7 +1011,7 @@ If you'd like to create graphical files with strokes, you'll have to
 be running a version of Emacs with XPM support.  You use the binding
 to `strokes-compose-complex-stroke' to start drawing your strokes.
 These are just complex strokes, and thus continue drawing with mouse-1
-or mouse-2 and   end with mouse-3.  Then the stroke image gets inserted
+or mouse-2 and end with mouse-3.  Then the stroke image gets inserted
 into the buffer.  You treat it somewhat like any other character,
 which you can copy, paste, delete, move, etc.  When all is done, you
 may want to send the file, or save it.  This is done with
@@ -1147,7 +1149,7 @@ Returns value of `strokes-use-strokes-buffer'."
          (not strokes-use-strokes-buffer))))
 
 (defun strokes-xpm-for-stroke (&optional stroke bufname b/w-only)
-  "Create an XPM pixmap for the given STROKE in buffer ` *strokes-xpm*'.
+  "Create an XPM pixmap for the given STROKE in buffer \" *strokes-xpm*\".
 If STROKE is not supplied, then `strokes-last-stroke' will be used.
 Optional BUFNAME to name something else.
 The pixmap will contain time information via rainbow dot colors
@@ -1318,8 +1320,8 @@ the stroke as a character in some language."
 ;;;###autoload
 (defun strokes-list-strokes (&optional chronological strokes-map)
   "Pop up a buffer containing an alphabetical listing of strokes in STROKES-MAP.
-With CHRONOLOGICAL prefix arg \(\\[universal-argument]\) list strokes
-chronologically by command name.
+With CHRONOLOGICAL prefix arg (\\[universal-argument]) list strokes chronologically
+by command name.
 If STROKES-MAP is not given, `strokes-global-map' will be used instead."
   (interactive "P")
   (setq strokes-map (or strokes-map
@@ -1386,8 +1388,8 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
 (define-minor-mode strokes-mode
   "Toggle Strokes mode, a global minor mode.
 With a prefix argument ARG, enable Strokes mode if ARG is
-positive, and disable it otherwise.  If called from Lisp, enable
-the mode if ARG is omitted or nil.
+positive, and disable it otherwise.  If called from Lisp,
+enable the mode if ARG is omitted or nil.
 
 \\<strokes-mode-map>
 Strokes are pictographic mouse gestures which invoke commands.
@@ -1540,7 +1542,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer],
 
 (defun strokes-xpm-to-compressed-string (&optional xpm-buffer)
   "Convert XPM in XPM-BUFFER to compressed string representing the stroke.
-XPM-BUFFER defaults to ` *strokes-xpm*'."
+XPM-BUFFER defaults to \" *strokes-xpm*\"."
   (with-current-buffer (setq xpm-buffer (or xpm-buffer " *strokes-xpm*"))
     (goto-char (point-min))
     (search-forward "/* pixels */")    ; skip past header junk
@@ -1707,7 +1709,7 @@ Optional FORCE non-nil will ignore the buffer's read-only status."
 
 (defun strokes-xpm-for-compressed-string (compressed-string &optional bufname)
   "Convert the stroke represented by COMPRESSED-STRING into an XPM.
-Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
+Store XPM in buffer BUFNAME if supplied (default is \" *strokes-xpm*\")"
   (or bufname (setq bufname " *strokes-xpm*"))
   (with-current-buffer (get-buffer-create bufname)
     (erase-buffer)
index ad783acc929244eecc73a2389e8d2638a088132e..e4350bffff858dafe3464ca5b3c06e67d0961095 100644 (file)
@@ -1461,7 +1461,7 @@ Each hook function definition is used to construct the FUN passed
 to the next hook function, if any.  The last (or \"outermost\")
 FUN is then called once."
   (declare (indent 2) (debug (form sexp body))
-           (obsolete "use a <foo>-function variable modified by add-function."
+           (obsolete "use a <foo>-function variable modified by `add-function'."
                      "24.4"))
   ;; We need those two gensyms because CL's lexical scoping is not available
   ;; for function arguments :-(
@@ -2206,14 +2206,16 @@ is nil and `use-dialog-box' is non-nil."
   ;; ¡Beware! when I tried to edebug this code, Emacs got into a weird state
   ;; where all the keys were unbound (i.e. it somehow got triggered
   ;; within read-key, apparently).  I had to kill it.
-  (let ((answer 'recenter))
+  (let ((answer 'recenter)
+       (padded (lambda (prompt &optional dialog)
+                 (let ((l (length prompt)))
+                   (concat prompt
+                           (if (or (zerop l) (eq ?\s (aref prompt (1- l))))
+                               "" " ")
+                           (if dialog "" "(y or n) "))))))
     (cond
      (noninteractive
-      (setq prompt (concat prompt
-                           (if (or (zerop (length prompt))
-                                   (eq ?\s (aref prompt (1- (length prompt)))))
-                               "" " ")
-                           "(y or n) "))
+      (setq prompt (funcall padded prompt))
       (let ((temp-prompt prompt))
        (while (not (memq answer '(act skip)))
          (let ((str (read-string temp-prompt)))
@@ -2224,14 +2226,10 @@ is nil and `use-dialog-box' is non-nil."
      ((and (display-popup-menus-p)
           (listp last-nonmenu-event)
           use-dialog-box)
-      (setq answer
-           (x-popup-dialog t `(,prompt ("Yes" . act) ("No" . skip)))))
+      (setq prompt (funcall padded prompt t)
+           answer (x-popup-dialog t `(,prompt ("Yes" . act) ("No" . skip)))))
      (t
-      (setq prompt (concat prompt
-                           (if (or (zerop (length prompt))
-                                   (eq ?\s (aref prompt (1- (length prompt)))))
-                               "" " ")
-                           "(y or n) "))
+      (setq prompt (funcall padded prompt))
       (while
           (let* ((scroll-actions '(recenter scroll-up scroll-down
                                   scroll-other-window scroll-other-window-down))
@@ -2264,9 +2262,7 @@ is nil and `use-dialog-box' is non-nil."
         (discard-input))))
     (let ((ret (eq answer 'act)))
       (unless noninteractive
-        ;; FIXME this prints one too many spaces, since prompt
-        ;; already ends in a space.  Eg "... (y or n)  y".
-        (message "%s %s" prompt (if ret "y" "n")))
+        (message "%s%c" prompt (if ret ?y ?n)))
       ret)))
 
 \f
index 9ff7a49146def3f32d5fd798fbf1b8865589d9d0..9b6cd75b3138262d2685b512fe7ef76b70fa6b17 100644 (file)
@@ -2,9 +2,9 @@
 
 ;; Copyright (C) 1994-1995, 2001-2014 Free Software Foundation, Inc.
 
-;; Author: David K}gedal <davidk@lysator.liu.se>
+;; Author: David Kågedal <davidk@lysator.liu.se>
 ;; Created: 16 Feb 1994
-;; K}gedal's last version number: 1.2.4
+;; Kågedal's last version number: 1.2.4
 ;; Keywords: extensions, languages, tools
 
 ;; This file is part of GNU Emacs.
@@ -723,13 +723,13 @@ non-nil, a buffer containing possible completions is displayed."
   (if tempo-leave-completion-buffer
       (with-output-to-temp-buffer "*Completions*"
        (display-completion-list
-        (all-completions string tag-list)
-        string))
+        (completion-hilit-commonality (all-completions string tag-list)
+                                      (length string))))
     (save-window-excursion
       (with-output-to-temp-buffer "*Completions*"
        (display-completion-list
-        (all-completions string tag-list)
-        string))
+        (completion-hilit-commonality (all-completions string tag-list)
+                                      (length string))))
       (sit-for 32767))))
 
 ;;;
@@ -763,3 +763,7 @@ space bar, and looks something like this:
 (provide 'tempo)
 
 ;;; tempo.el ends here
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
index d91b594671fb2c0837982ada78724fc11be17157..47d953aebfba76c9a1bef21ee0d7b798925148dc 100644 (file)
@@ -59,7 +59,8 @@
 ;;;; Command line argument handling.
 
 (defvar x-invocation-args)
-(defvar ns-command-line-resources nil)  ; FIXME unused?
+;; Set in term/common-win.el; currently unused by Nextstep's x-open-connection.
+(defvar x-command-line-resources)
 
 ;; nsterm.m.
 (defvar ns-input-file)
@@ -902,7 +903,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
             (format "Creation of the standard fontset failed: %s" err)
             :error)))
 
-  (x-open-connection (system-name) nil t)
+  (x-open-connection (system-name) x-command-line-resources t)
 
   ;; Add GNUstep menu items Services, Hide and Quit.  Rename Help to Info
   ;; and put it first (i.e. omit from menu-bar-final-items.
index 216e8c31735bbcba8fadaf49e82ebecf60590b72..b3af959c30e70efca5b453e94a799461b15fddba 100644 (file)
@@ -38,7 +38,7 @@
   (scroll-up n))
 
 (defun kill-region-and-unmark (beg end)
-  "Like kill-region, but pops the mark [which equals point, anyway.]"
+  "Like `kill-region', but pops the mark [which equals point, anyway.]"
   (interactive "r")
   (kill-region beg end)
   (setq this-command 'kill-region-and-unmark)
 ;; for you to put your own bindings in.
 
 (defvar sun-raw-prefix-hooks nil
-  "List of forms to evaluate after setting sun-raw-prefix.")
-(make-obsolete-variable 'sun-raw-prefix-hooks 'term-setup-hook "21.1")
+  "List of forms to evaluate after setting `sun-raw-prefix'.")
+;; Obsolete since 21.1, but tty-setup-hook only exists since 24.4.
+(make-obsolete-variable 'sun-raw-prefix-hooks 'tty-setup-hook "21.1")
 
 \f
 
   (global-set-key [f7] 'enlarge-window)
 
   (when sun-raw-prefix-hooks
-    (message "sun-raw-prefix-hooks is obsolete!  Use term-setup-hook instead!")
+    (message "sun-raw-prefix-hooks is obsolete!  Use %s instead!"
+            (or (car-safe (get 'sun-raw-prefix-hooks 'byte-obsolete-variable))
+                "emacs-startup-hook"))
     (let ((hooks sun-raw-prefix-hooks))
       (while hooks
        (eval (car hooks))
index a894801f9850f36f75ceab8dda3c2d38dd6ca408..aa9ba43d3d79a859623030529670db55e374c09b 100644 (file)
@@ -1,7 +1,6 @@
 ;;; wyse50.el --- terminal support code for Wyse 50
 
-;; Copyright (C) 1989, 1993-1994, 2001-2014 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1989, 1993-1994, 2001-2014 Free Software Foundation, Inc.
 
 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>,
 ;;     Jim Blandy <jimb@occs.cs.oberlin.edu>
                         (concat "\ea23R" (1+ (frame-width)) "C\eG0"))))))
 
 (defun enable-arrow-keys ()
-  "To be called by `term-setup-hook'. Overrides 6 Emacs standard keys
+  "To be called by `tty-setup-hook'.  Overrides 6 Emacs standard keys
 whose functions are then typed as follows:
 C-a    Funct Left-arrow
 C-h    M-?
index ebb22d6f0555eb65d8a696449361f59fa1bb2f2c..8a99ff2926dda2b20e1dcaaffe1385c59b78bf54 100644 (file)
@@ -546,9 +546,9 @@ alternatives, starting from zero."
       ("location") ("isbn") ("pagetotal") ("addendum") ("pubstate") ("doi")
       ("eprint") ("eprintclass") ("eprinttype") ("url") ("urldate")))
     ("InCollection" "Article in a Collection"
-     (("author") ("editor") ("title") ("year" nil nil 0) ("date" nil nil 0))
+     (("author") ("title") ("year" nil nil 0) ("date" nil nil 0))
      (("booktitle"))
-     (("editora") ("editorb") ("editorc") ("translator") ("annotator")
+     (("editor") ("editora") ("editorb") ("editorc") ("translator") ("annotator")
       ("commentator") ("introduction") ("foreword") ("afterword")
       ("subtitle") ("titleaddon") ("maintitle") ("mainsubtitle")
       ("maintitleaddon") ("booksubtitle") ("booktitleaddon")
@@ -616,10 +616,11 @@ alternatives, starting from zero."
       ("addendum") ("pubstate") ("doi") ("eprint") ("eprintclass")
       ("eprinttype") ("url") ("urldate")))
     ("Proceedings" "Single-Volume Conference Proceedings"
-     (("editor") ("title") ("year" nil nil 0) ("date" nil nil 0))
+     (("title") ("year" nil nil 0) ("date" nil nil 0))
      nil
      (("subtitle") ("titleaddon") ("maintitle") ("mainsubtitle")
       ("maintitleaddon") ("eventtitle") ("eventdate") ("venue") ("language")
+      ("editor")
       ("volume") ("part") ("volumes") ("series") ("number") ("note")
       ("organization") ("publisher") ("location") ("month")
       ("isbn") ("chapter") ("pages") ("pagetotal") ("addendum") ("pubstate")
@@ -633,9 +634,9 @@ alternatives, starting from zero."
       ("isbn") ("pagetotal") ("addendum") ("pubstate")
       ("doi") ("eprint") ("eprintclass") ("eprinttype") ("url") ("urldate")))
     ("InProceedings" "Article in Conference Proceedings"
-     (("author") ("editor") ("title") ("year" nil nil 0) ("date" nil nil 0))
+     (("author") ("title") ("year" nil nil 0) ("date" nil nil 0))
      (("booktitle"))
-     (("subtitle") ("titleaddon") ("maintitle") ("mainsubtitle")
+     (("editor") ("subtitle") ("titleaddon") ("maintitle") ("mainsubtitle")
       ("maintitleaddon") ("booksubtitle") ("booktitleaddon")
       ("eventtitle") ("eventdate") ("venue") ("language")
       ("volume") ("part") ("volumes") ("series") ("number") ("note")
index dbb4988501f2a8fe568bd973570210b44c726ef7..1a07269c9e9144e90c2c5e3c0ac4318dde2011d7 100644 (file)
     ;; FIXME: attribute selectors don't work well because they may contain
     ;; strings which have already been highlighted as f-l-string-face and
     ;; thus prevent this highlighting from being applied (actually now that
-    ;; I use `append' this should work better).  But really the part of hte
+    ;; I use `append' this should work better).  But really the part of the
     ;; selector between [...] should simply not be highlighted.
     (,(concat "^\\([ \t]*[^@:{}\n][^:{}]+\\(?::" (regexp-opt css-pseudo-ids t)
               "\\(?:([^)]+)\\)?[^:{\n]*\\)*\\)\\(?:\n[ \t]*\\)*{")
index 516431006f67663d4c4a4fe3c2be4483d29109f5..d4a3438ce972aabc10785003eb758f07d74da56d 100644 (file)
@@ -608,8 +608,8 @@ After interpretation of ARGS the results are concatenated as for
 (defun rst-define-key (keymap key def &rest deprecated)
   "Bind like `define-key' but add deprecated key definitions.
 KEYMAP, KEY, and DEF are as in `define-key'.  DEPRECATED key
-definitions should be in vector notation.  These are defined as
-well but give an additional message."
+definitions should be in vector notation.  These are defined
+as well but give an additional message."
   (define-key keymap key def)
   (when deprecated
     (let* ((command-name (symbol-name def))
@@ -994,10 +994,10 @@ for modes derived from Text mode, like Mail mode."
 
 A list consisting of lists of the form (CHARACTER STYLE INDENT).
 CHARACTER is the character used.  STYLE is one of the symbols
-OVER-AND-UNDER or SIMPLE.  INDENT is an integer giving the wanted
-indentation for STYLE OVER-AND-UNDER.  CHARACTER and STYLE are
-always used when a section adornment is described.  In other
-places t instead of a list stands for a transition.
+`over-and-under' or `simple'.  INDENT is an integer giving the
+wanted indentation for STYLE `over-and-under'.  CHARACTER and
+STYLE are always used when a section adornment is described.
+In other places, t instead of a list stands for a transition.
 
 This sequence is consulted to offer a new adornment suggestion
 when we rotate the underlines at the end of the existing
@@ -1034,8 +1034,8 @@ style."
 (defun rst-compare-adornments (ado1 ado2)
   "Compare adornments.
 Return true if both ADO1 and ADO2 adornments are equal,
-according to restructured text semantics (only the character and
-the style are compared, the indentation does not matter)."
+according to restructured text semantics (only the character
+and the style are compared, the indentation does not matter)."
   (and (eq (car ado1) (car ado2))
        (eq (cadr ado1) (cadr ado2))))
 
@@ -1091,9 +1091,9 @@ better match."
 (defun rst-update-section (char style &optional indent)
   "Unconditionally update the style of a section adornment.
 
-Do this using the given character CHAR, with STYLE 'simple
-or 'over-and-under, and with indent INDENT.  If the STYLE
-is 'simple, whitespace before the title is removed (indent
+Do this using the given character CHAR, with STYLE `simple'
+or `over-and-under', and with indent INDENT.  If the STYLE
+is `simple', whitespace before the title is removed (indent
 is always assumed to be 0).
 
 If there are existing overline and/or underline from the
@@ -1270,8 +1270,8 @@ point is on a suitable title line use it.
 If no title line is found return nil.
 
 Otherwise return as `rst-classify-adornment' does.  However, if
-the title line has no syntactically valid adornment STYLE is nil
-in the first element.  If there is no adornment around the title
+the title line has no syntactically valid adornment, STYLE is nil
+in the first element.  If there is no adornment around the title,
 CHARACTER is also nil and match groups for overline and underline
 are nil."
   (save-excursion
@@ -1325,15 +1325,15 @@ are nil."
 
 (defvar rst-all-sections nil
   "All section adornments in the buffer as found by `rst-find-all-adornments'.
-t when no section adornments were found.")
+Set to t when no section adornments were found.")
 (make-variable-buffer-local 'rst-all-sections)
 
 ;; FIXME: If this variable is set to a different value font-locking of section
 ;;        headers is wrong.
 (defvar rst-section-hierarchy nil
   "Section hierarchy in the buffer as determined by `rst-get-hierarchy'.
-t when no section adornments were found.  Value depends on
-`rst-all-sections'.")
+Set to t when no section adornments were found.
+Value depends on `rst-all-sections'.")
 (make-variable-buffer-local 'rst-section-hierarchy)
 
 (rst-testcover-add-1value 'rst-reset-section-caches)
@@ -1502,8 +1502,8 @@ REVERSE-DIRECTION is used to reverse the cycling order."
 
 Adjust/rotate the section adornment for the section title around
 point or promote/demote the adornments inside the region,
-depending on if the region is active.  This function is meant to
-be invoked possibly multiple times, and can vary its behavior
+depending on whether the region is active.  This function is meant
+to be invoked possibly multiple times, and can vary its behavior
 with a positive PFXARG (toggle style), or with a negative
 PFXARG (alternate behavior).
 
@@ -1609,7 +1609,7 @@ The adornments consist in
 
 1. a CHARACTER
 
-2. a STYLE which can be either of 'simple' or 'over-and-under'.
+2. a STYLE which can be either `simple' or `over-and-under'.
 
 3. an INDENT (meaningful for the over-and-under style only)
    which determines how many characters and over-and-under
@@ -1652,8 +1652,8 @@ Case 2: Incomplete Adornment
 
 If the current line does have an existing adornment, but the
 adornment is incomplete, that is, the underline/overline does
-not extend to exactly the end of the title line (it is either too
-short or too long), we simply extend the length of the
+not extend to exactly the end of the title line (it is either
+too short or too long), we simply extend the length of the
 underlines/overlines to fit exactly the section title.
 
 If TOGGLE-STYLE we toggle the style of the adornment as well.
@@ -1922,7 +1922,7 @@ in order to adapt it to our preferred style."
 Obviously, NUM must be greater than zero.  Don't blame me, blame the
 Romans, I mean \"what have the Romans ever _done_ for /us/?\" (with
 apologies to Monty Python).
-If optional prefix ARG is non-nil, insert in current buffer."
+If optional ARG is non-nil, insert in current buffer."
   (let ((map rst-arabic-to-roman)
         res)
     (while (and map (> num 0))
@@ -1931,13 +1931,13 @@ If optional prefix ARG is non-nil, insert in current buffer."
           (setq res (concat res (cdar map))
                 num (- num (caar map)))
         (setq map (cdr map))))
-    res))
+    (if arg (insert (or res "")) res)))
 
 (defun rst-roman-to-arabic (string &optional arg)
   "Convert STRING of Roman numerals to an Arabic number.
 
-If STRING contains a letter which isn't a valid Roman numeral, the rest
-of the string from that point onwards is ignored.
+If STRING contains a letter which isn't a valid Roman numeral,
+the rest of the string from that point onwards is ignored.
 
 Hence:
 MMD == 2500
@@ -1951,7 +1951,7 @@ If optional ARG is non-nil, insert in current buffer."
           (setq res (+ res (caar map))
                 string (replace-match "" nil t string))
         (setq map (cdr map))))
-    res))
+    (if arg (insert res) res)))
 ;=================================================
 
 (defun rst-find-pfx-in-region (beg end pfx-re)
@@ -2020,20 +2020,20 @@ Other situations are just ignored and left to users themselves."
 ;; FIXME: Isn't this a `defconst'?
 (defvar rst-initial-items
   (append (mapcar 'char-to-string rst-bullets) rst-initial-enums)
-  "List of initial items.  It's collection of bullets and enumerations.")
+  "List of initial items.  It's collection of bullets and enumerations.")
 
 (defun rst-insert-list-new-item ()
   "Insert a new list item.
 
-User is asked to select the item style first, for example (a), i), +.  Use TAB
-for completion and choices.
+User is asked to select the item style first, for example (a), i), +.
+Use TAB for completion and choices.
 
 If user selects bullets or #, it's just added with position arranged by
 `rst-insert-list-pos'.
 
-If user selects enumerations, a further prompt is given.  User need to input a
-starting item, for example 'e' for 'A)' style.  The position is also arranged by
-`rst-insert-list-pos'."
+If user selects enumerations, a further prompt is given.  User need to
+input a starting item, for example 'e' for 'A)' style.  The position is
+also arranged by `rst-insert-list-pos'."
   (interactive)
   ;; FIXME: Make this comply to `interactive' standards.
   (let* ((itemstyle (completing-read
@@ -2140,7 +2140,7 @@ for completion and choices.
 The position of the new list is arranged according to whether or not the
 current line and the previous line are blank lines.
 
-2. When continuing a list, one thing need to be noticed:
+2. When continuing a list, one thing needs to be noticed:
 
 List style alphabetical list, such as 'a.', and roman numerical list, such as
 'i.', have some overlapping items, for example 'v.' The function can deal with
@@ -2271,13 +2271,11 @@ without UNPROCESSED."
   "Return section containing POINT by returning the closest node in TREE.
 TREE is a section tree as returned by `rst-section-tree'
 consisting of (NODE CHILD...) entries.  POINT defaults to the
-current point.  A NODE must have the structure (IGNORED MARKER
-...).
+current point.  A NODE must have the structure (IGNORED MARKER...).
 
 Return (PATH NODE CHILD...).  NODE is the node where POINT is in
 if any.  PATH is a list of nodes from the top of the tree down to
-and including NODE.  List of CHILD are the children of NODE if
-any."
+and including NODE.  List of CHILD are the children of NODE if any."
   (setq point (or point (point)))
   (let ((cur (car tree))
        (children (cdr tree)))
@@ -2318,10 +2316,10 @@ Also used for formatting insertion, when numbering is disabled."
   "Insertion style for table-of-contents.
 Set this to one of the following values to determine numbering and
 indentation style:
-- plain: no numbering (fixed indentation)
-- fixed: numbering, but fixed indentation
-- aligned: numbering, titles aligned under each other
-- listed: numbering, with dashes like list items (EXPERIMENTAL)"
+- `plain': no numbering (fixed indentation)
+- `fixed': numbering, but fixed indentation
+- `aligned': numbering, titles aligned under each other
+- `listed': numbering, with dashes like list items (EXPERIMENTAL)"
   :type '(choice (const plain)
                  (const fixed)
                  (const aligned)
@@ -2384,7 +2382,7 @@ The TOC is inserted indented at the current column."
 
 (defun rst-toc-insert-node (node level indent pfx)
   "Insert tree node NODE in table-of-contents.
-Recursive function that does printing of the inserted toc.
+Recursive function that does printing of the inserted TOC.
 LEVEL is the depth level of the sections in the tree.
 INDENT is the indentation string.  PFX is the prefix numbering,
 that includes the alignment necessary for all the children of
@@ -2611,7 +2609,7 @@ brings the cursor in that section."
 ;;        paragraph.
 (defun rst-goto-section (&optional kill)
   "Go to the section the current line describes.
-If KILL a toc buffer is destroyed."
+If KILL a TOC buffer is destroyed."
   (interactive)
   (let ((pos (rst-toc-mode-find-section)))
     (when kill
@@ -2682,8 +2680,8 @@ EVENT is the input event."
 
 (defun rst-forward-section (&optional offset)
   "Skip to the next reStructuredText section title.
-OFFSET specifies how many titles to skip.  Use a negative OFFSET to move
-backwards in the file (default is to use 1)."
+OFFSET specifies how many titles to skip.  Use a negative OFFSET
+to move backwards in the file (default is to use 1)."
   (interactive)
   (rst-reset-section-caches)
   (let* (;; Default value for offset.
@@ -2848,10 +2846,9 @@ first of a paragraph."
 (defgroup rst-indent nil "Settings for indentation in reStructuredText.
 
 In reStructuredText indentation points are usually determined by
-preceding lines. Sometimes the syntax allows arbitrary
-indentation points such as where to start the first line
-following a directive. These indentation widths can be customized
-here."
+preceding lines.  Sometimes the syntax allows arbitrary indentation
+points such as where to start the first line following a directive.
+These indentation widths can be customized here."
   :group 'rst
   :package-version '(rst . "1.1.0"))
 
@@ -2957,11 +2954,11 @@ and not from inner alignment points."
 
 (defun rst-compute-tabs (pt)
   "Build the list of possible tabs for all lines above.
-Search backwards from point PT to build the list of possible
-tabs.  Return a list of tabs sorted by likeliness to continue
-writing like `rst-line-tabs'.  Nearer lines have generally a
-higher likeliness than farther lines.  Return nil if no tab is found
-in the text above."
+Search backwards from point PT to build the list of possible tabs.
+Return a list of tabs sorted by likeliness to continue writing
+like `rst-line-tabs'.  Nearer lines have generally a higher
+likeliness than farther lines.  Return nil if no tab is found in
+the text above."
   (save-excursion
     (goto-char pt)
     (let (leftmost ; Leftmost column found so far.
@@ -3136,7 +3133,7 @@ Region is from from BEG to END.  Uncomment if ARG."
        (indent-line-to ind)
        (insert (comment-string-strip comment-start t t))))))
 
-(defun rst-uncomment-region (beg end &optional arg)
+(defun rst-uncomment-region (beg end &optional _arg)
   "Uncomment the current region.
 Region is from BEG to END.  ARG is ignored"
   (save-excursion
@@ -3774,8 +3771,7 @@ point is not moved."
 
 (defvar rst-font-lock-find-unindented-line-end nil
   "End of the match as determined by `rst-font-lock-find-unindented-line-limit'.
-Also used as a trigger for
-`rst-font-lock-find-unindented-line-match'.")
+Also used as a trigger for `rst-font-lock-find-unindented-line-match'.")
 
 (defun rst-font-lock-find-unindented-line-limit (ind-pnt)
   "Find the next unindented line relative to indentation at IND-PNT.
@@ -3783,8 +3779,7 @@ Return this point, the end of the buffer or nil if nothing found.
 If IND-PNT is `next' take the indentation from the next line if
 this is not empty and indented more than the current one.  If
 IND-PNT is non-nil but not a number take the indentation from the
-next non-empty line if this is indented more than the current
-one."
+next non-empty line if this is indented more than the current one."
   (setq rst-font-lock-find-unindented-line-begin ind-pnt)
   (setq rst-font-lock-find-unindented-line-end
        (save-excursion
@@ -3824,12 +3819,11 @@ one."
            (or (rst-forward-indented-block nil (point-max))
                (point-max))))))
 
-(defun rst-font-lock-find-unindented-line-match (limit)
+(defun rst-font-lock-find-unindented-line-match (_limit)
   "Set the match found earlier if match were found.
-Match has been found by
-`rst-font-lock-find-unindented-line-limit' the first time called
-or no match is found.  Return non-nil if match was found.  LIMIT
-is not used but mandated by the caller."
+Match has been found by `rst-font-lock-find-unindented-line-limit'
+the first time called or no match is found.  Return non-nil if
+match was found.  LIMIT is not used but mandated by the caller."
   (when rst-font-lock-find-unindented-line-end
     (set-match-data
      (list rst-font-lock-find-unindented-line-begin
@@ -3850,10 +3844,9 @@ Either section level of the current adornment or t for a transition.")
 
 (defun rst-adornment-level (key)
   "Return section level for adornment KEY.
-KEY is the first element of the return list of
-`rst-classify-adornment'.  If KEY is not a cons return it.  If KEY is found
-in the hierarchy return its level.  Otherwise return a level one
-beyond the existing hierarchy."
+KEY is the first element of the return list of `rst-classify-adornment'.
+If KEY is not a cons return it.  If KEY is found in the hierarchy return
+its level.  Otherwise return a level one beyond the existing hierarchy."
   (if (not (consp key))
       key
     (let* ((hier (rst-get-hierarchy))
@@ -3875,9 +3868,8 @@ as a trigger for `rst-font-lock-handle-adornment-matcher'.")
 (defun rst-font-lock-handle-adornment-pre-match-form (ado ado-end)
   "Determine limit for adornments.
 Determine all things necessary for font-locking section titles
-and transitions and put the result to
-`rst-font-lock-adornment-match' and
-`rst-font-lock-adornment-level'.  ADO is the complete adornment
+and transitions and put the result to `rst-font-lock-adornment-match'
+and `rst-font-lock-adornment-level'.  ADO is the complete adornment
 matched.  ADO-END is the point where ADO ends.  Return the point
 where the whole adorned construct ends.
 
@@ -3892,7 +3884,7 @@ Called as a PRE-MATCH-FORM in the sense of `font-lock-keywords'."
       (goto-char (nth 1 ado-data)) ; Beginning of construct.
       (nth 2 ado-data)))) ; End of construct.
 
-(defun rst-font-lock-handle-adornment-matcher (limit)
+(defun rst-font-lock-handle-adornment-matcher (_limit)
   "Set the match found earlier if match were found.
 Match has been found by
 `rst-font-lock-handle-adornment-pre-match-form' the first time
@@ -3989,7 +3981,7 @@ string)) to be used for converting the document."
 (defun rst-compile (&optional use-alt)
   "Compile command to convert reST document into some output file.
 Attempts to find configuration file, if it can, overrides the
-options.  There are two commands to choose from, with USE-ALT,
+options.  There are two commands to choose from; with USE-ALT,
 select the alternative tool-set."
   (interactive "P")
   ;; Note: maybe we want to check if there is a Makefile too and not do anything
@@ -4094,7 +4086,7 @@ buffer, if the region is not selected."
     a))
 
 (defun rst-imenu-convert-cell (elt adornments)
-  "Convert a cell ELT in a tree returned from `rst-section-tree' to imenu index.
+  "Convert a cell ELT in a tree returned from `rst-section-tree' to Imenu index.
 ADORNMENTS is used as hint information for conversion."
   (let* ((kar (car elt))
         (kdr (cdr elt))
@@ -4128,7 +4120,7 @@ ADORNMENTS is used as hint information for conversion."
 ;; FIXME: Document title and subtitle need to be handled properly. They should
 ;;        get an own "Document" top level entry.
 (defun rst-imenu-create-index ()
-  "Create index for imenu.
+  "Create index for Imenu.
 Return as described for `imenu--index-alist'."
   (rst-reset-section-caches)
   (let ((tree (rst-section-tree))
@@ -4190,8 +4182,8 @@ This is useful for filling list item paragraphs."
 ;; be useful for creating separators.
 (defun rst-repeat-last-character (use-next)
   "Fill the current line using the last character on the current line.
-Fill up to the length of the preceding line or up to
-`fill-column' if preceding line is empty.
+Fill up to the length of the preceding line or up to `fill-column' if preceding
+line is empty.
 
 If USE-NEXT, use the next line rather than the preceding line.
 
index 698c17698bb0036ea51e2947477860aec8e9faec..7c7b09cb0db1238a969cb52105593bc423c68774 100644 (file)
@@ -2,6 +2,8 @@
 
 ;; Copyright (C) 1985-1986, 2001-2014 Free Software Foundation, Inc.
 
+;; Author: Richard King
+;; (according to authors.el)
 ;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: internal
 ;; Package: emacs
index 0d3f81d7a4731d1b40d2272103a263655a1dfd0b..b89c4df581836384987a2af575f7b5df8ed303e4 100644 (file)
@@ -92,17 +92,17 @@ There is no need to set this if $CVSROOT is set to a correct value.")
 
 (defcustom cvs-auto-remove-handled nil
   "If up-to-date files should be acknowledged automatically.
-If T, they will be removed from the *cvs* buffer after every command.
-If DELAYED, they will be removed from the *cvs* buffer before every command.
-If STATUS, they will only be removed after a `cvs-mode-status' command.
+If t, they will be removed from the *cvs* buffer after every command.
+If `delayed', they will be removed from the *cvs* buffer before every command.
+If `status', they will only be removed after a `cvs-mode-status' command.
 Else, they will never be automatically removed from the *cvs* buffer."
   :group 'pcl-cvs
   :type '(choice (const nil) (const status) (const delayed) (const t)))
 
 (defcustom cvs-auto-remove-directories 'handled
-  "If ALL, directory entries will never be shown.
-If HANDLED, only non-handled directories will be shown.
-If EMPTY, only non-empty directories will be shown."
+  "If `all', directory entries will never be shown.
+If `handled', only non-handled directories will be shown.
+If `empty', only non-empty directories will be shown."
   :group 'pcl-cvs
   :type '(choice (const :tag "No" nil) (const all) (const handled) (const empty)))
 
@@ -129,7 +129,7 @@ useful to be able to tag a single file.  The normal way to do that is to use
 Normally they run on the files that are marked (with `cvs-mode-mark'),
 or the file under the cursor if no files are marked.  If this variable
 is set to a non-nil value they will by default run on the file on the
-current line.  See also `cvs-invert-ignore-marks'"
+current line.  See also `cvs-invert-ignore-marks'."
   :group 'pcl-cvs
   :type '(boolean))
 
@@ -235,7 +235,7 @@ Output from cvs is placed here for asynchronous commands.")
   (if (fboundp 'ediff)
       '(cvs-ediff-diff . cvs-ediff-merge)
     '(cvs-emerge-diff . cvs-emerge-merge))
-  "Pair of functions to be used for resp.  diff'ing and merg'ing interactively."
+  "Pair of functions to be used for resp. diff'ing and merg'ing interactively."
   :group 'pcl-cvs
   :type '(choice (const :tag "Ediff" (cvs-ediff-diff . cvs-ediff-merge))
                 (const :tag "Emerge" (cvs-emerge-diff . cvs-emerge-merge))))
@@ -251,10 +251,10 @@ Output from cvs is placed here for asynchronous commands.")
 (defcustom cvs-reuse-cvs-buffer 'subdir
   "When to reuse an existing cvs buffer.
 Alternatives are:
CURRENT: just reuse the current buffer if it is a cvs buffer
SAMEDIR: reuse any cvs buffer displaying the same directory
SUBDIR:  or reuse any cvs buffer displaying any sub- or super- directory
ALWAYS:  reuse any cvs buffer."
`current': just reuse the current buffer if it is a cvs buffer
`samedir': reuse any cvs buffer displaying the same directory
`subdir':  or reuse any cvs buffer displaying any sub- or super- directory
`always':  reuse any cvs buffer."
   :group 'pcl-cvs
   :type '(choice (const always) (const subdir) (const samedir) (const current)))
 
@@ -488,16 +488,16 @@ It is expected to call the function.")
     t)
   "Whether cvs commands should be executed a directory at a time.
 If a list, specifies for which commands the single-dir mode should be used.
-If T, single-dir mode should be used for all operations.
+If t, single-dir mode should be used for all operations.
 
 CVS versions before 1.10 did not allow passing them arguments in different
-directories, so pcl-cvs checks what version you're using to determine
+directories, so PCL-CVS checks what version you're using to determine
 whether to use the new feature or not.
 Sadly, even with a new cvs executable, if you connect to an older cvs server
 \(typically a cvs-1.9 on the server), the old restriction applies.  In such
-a case the sanity check made by pcl-cvs fails and you will have to manually
+a case the sanity check made by PCL-CVS fails and you will have to manually
 set this variable to t (until the cvs server is upgraded).
-When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error
+When the above problem occurs, PCL-CVS should (hopefully) catch cvs' error
 message and replace it with a message telling you to change this variable.")
 
 ;;
index 51e15d2ea6ab7cf71a1a5f9232c5b2be52e8ef46..202f7ddfd2c7b375a26ea7205873bce59fc2142b 100644 (file)
@@ -142,7 +142,7 @@ to confuse some users sometimes."
 
 (easy-mmode-defmap cvs-status-map
   '(([(mouse-2)] . cvs-mode-toggle-mark))
-  "Local keymap for text properties of status")
+  "Local keymap for text properties of status.")
 
 ;; Constructor:
 
@@ -301,8 +301,8 @@ to confuse some users sometimes."
     (DEAD              )
     (MESSAGE))
   "Fileinfo state descriptions for pcl-cvs.
-This is an assoc list.  Each element consists of (STATE . FUNS)
-- STATE (described in `cvs-create-fileinfo') is the key
+This is an assoc list.  Each element consists of (STATE . FUNS):
+- STATE (described in `cvs-create-fileinfo') is the key.
 - FUNS is the list of applicable operations.
   The first one (if any) should be the \"default\" action.
 Most of the actions have the obvious meaning.
@@ -332,7 +332,7 @@ FI-OR-TYPE can either be a symbol (a fileinfo-type) or a fileinfo."
 
 (defun cvs-fileinfo-pp (fileinfo)
   "Pretty print FILEINFO.  Insert a printed representation in current buffer.
-For use by the cookie package."
+For use by the ewoc package."
   (cvs-check-fileinfo fileinfo)
   (let ((type (cvs-fileinfo->type fileinfo))
        (subtype (cvs-fileinfo->subtype fileinfo)))
@@ -416,7 +416,7 @@ fileinfo will appear first, followed by all files (alphabetically)."
 
 (defun cvs-fileinfo-from-entries (dir &optional all)
   "List of fileinfos for DIR, extracted from CVS/Entries.
-Unless ALL is optional, returns only the files that are not up-to-date.
+Unless ALL is non-nil, returns only the files that are not up-to-date.
 DIR can also be a file."
   (let* ((singlefile
          (cond
index 23225d178fdcca060d762b6a7666e9304dc3d019..366e90d5c9ce6595621f2ee6d6e9ef03f7dc98d4 100644 (file)
@@ -165,13 +165,13 @@ Match RE and if successful, execute MATCHES."
 TYPE can either be a type symbol or a cons of the form (TYPE . SUBTYPE).
 PATH is the filename.
 DIRECTORY influences the way PATH is interpreted:
-- if it's a string, it denotes the directory in which PATH (which should then be
+- if a string, it denotes the directory in which PATH (which should then be
   a plain file name with no directory component) resides.
 - if it's nil, the PATH should not be trusted: if it has a directory
   component, use it, else, assume it is relative to the current directory.
-- else, the PATH should be trusted to be relative to the root
-  directory (i.e. if there is no directory component, it means the file
-  is inside the main directory).
+- else, the PATH should be trusted to be relative to the root directory
+  (i.e. if there is no directory component, it means the file is inside
+  the main directory).
 The remaining KEYS are passed directly to `cvs-create-fileinfo'."
   (let ((dir directory)
        (file path))
index 8ef3b30759e5ca3d7c9530f5109825b9739197b8..97ab7dfef7719f9d59a66fe8e09204b0ca6a3925 100644 (file)
@@ -253,7 +253,7 @@ arguments.  If ARGS is not a list, no argument will be passed."
 Optional argument DESC will be used for the prompt.
 If ARG (or a prefix argument) is nil, just use the 0th default.
 If it is a non-negative integer, use the corresponding default.
-If it is a negative integer query for a new value of the corresponding
+If it is a negative integer, query for a new value of the corresponding
   default and return that new value.
 If it is \\[universal-argument], just query and return a value without
   altering the defaults.
@@ -286,7 +286,7 @@ If it is \\[universal-argument] \\[universal-argument], behave just
       (nth numarg defaults))))
 
 (defsubst cvs-flags-set (sym index value)
-  "Set SYM's INDEX'th setting to VALUE."
+  "Set SYM's INDEXth setting to VALUE."
   (setf (nth index (cvs-flags-defaults (symbol-value sym))) value))
 
 ;;;;
@@ -323,7 +323,7 @@ See `cvs-prefix-set' for further description of the behavior."))
   "Set the cvs-prefix contained in SYM.
 If ARG is between 0 and 9, it selects the corresponding default.
 If ARG is negative (or \\[universal-argument] which corresponds to negative 0),
-  it queries the user and sets the -ARG'th default.
+  it queries the user and sets the -ARGth default.
 If ARG is greater than 9 (or \\[universal-argument] \\[universal-argument]),
   the (ARG mod 10)'th prefix is made persistent.
 If ARG is nil toggle the PREFIX's value between its 0th default and nil
index 4f0f1e8e7fe3e1fa22c26dc58c03e9a7cb13d201..e0f514406edffb40d8a947b66f0e6045cfd569ba 100644 (file)
@@ -341,11 +341,11 @@ the \\[cvs-mode-map] prefix."
 (defun cvs-temp-buffer (&optional cmd normal nosetup)
   "Create a temporary buffer to run CMD in.
 If CMD is a string, use it to lookup `cvs-buffer-name-alist' to find
-the buffer name to be used and its `major-mode'.
+the buffer name to be used and its major mode.
 
 The selected window will not be changed.  The new buffer will not maintain undo
 information and will be read-only unless NORMAL is non-nil.  It will be emptied
-\(unless NOSETUP is non-nil\) and its `default-directory' will be inherited
+\(unless NOSETUP is non-nil) and its `default-directory' will be inherited
 from the current buffer."
   (let* ((cvs-buf (current-buffer))
         (info (cdr (assoc cmd cvs-buffer-name-alist)))
@@ -750,13 +750,13 @@ FUN can be either a symbol (i.e. STYLE is nil) or a cons (FUN . STYLE).
 ARGS and DOCSTRING are the normal argument list.
 INTERACT is the interactive specification or nil for non-commands.
 
-STYLE can be either SIMPLE, NOARGS or DOUBLE.  It's an error for it
+STYLE can be either `SIMPLE', `NOARGS' or `DOUBLE'.  It's an error for it
 to have any other value, unless other details of the function make it
 clear what alternative to use.
-- SIMPLE will get all the interactive arguments from the original buffer.
-- NOARGS will get all the arguments from the *cvs* buffer and will
+- `SIMPLE' will get all the interactive arguments from the original buffer.
+- `NOARGS' will get all the arguments from the *cvs* buffer and will
   always behave as if called interactively.
-- DOUBLE is the generic case."
+- `DOUBLE' is the generic case."
   (declare (debug (&define sexp lambda-list stringp
                            ("interactive" interactive) def-body))
           (doc-string 3))
@@ -910,7 +910,7 @@ RM-MSGS if non-nil means remove messages."
        (setq rerun t)))))
 
 (defun cvs-get-cvsroot ()
-  "Gets the CVSROOT for DIR."
+  "Get the CVSROOT for DIR."
   (let ((cvs-cvsroot-file (expand-file-name "Root" "CVS")))
     (or (cvs-file-to-string cvs-cvsroot-file t)
        cvs-cvsroot
@@ -940,7 +940,7 @@ This usually doesn't really work but is a handy initval in a prompt."
 
 ;;;###autoload
 (defun cvs-checkout (modules dir flags &optional root)
-  "Run a 'cvs checkout MODULES' in DIR.
+  "Run a `cvs checkout MODULES' in DIR.
 Feed the output to a *cvs* buffer, display it in the current window,
 and run `cvs-mode' on it.
 
@@ -964,7 +964,7 @@ With a prefix argument, prompt for cvs FLAGS to use."
                :noexist t)))
 
 (defun-cvs-mode (cvs-mode-checkout . NOARGS) (dir)
-  "Run cvs checkout against the current branch.
+  "Run `cvs checkout' against the current branch.
 The files are stored to DIR."
   (interactive
    (let* ((branch (cvs-prefix-get 'cvs-branch-prefix))
@@ -1082,7 +1082,7 @@ Optional argument NOSHOW if non-nil means not to display the buffer."
              :noshow noshow :dont-change-disc t))
 
 (defun cvs-update-filter (proc string)
-  "Filter function for pcl-cvs.
+  "Filter function for PCL-CVS.
 This function gets the output that CVS sends to stdout.  It inserts
 the STRING into (process-buffer PROC) but it also checks if CVS is waiting
 for a lock file.  If so, it inserts a message cookie in the *cvs* buffer."
@@ -1229,7 +1229,7 @@ If a prefix argument is given, move by that many lines."
 (defun-cvs-mode cvs-mode-mark (&optional arg)
   "Mark the fileinfo on the current line.
 If the fileinfo is a directory, all the contents of that directory are
-marked instead. A directory can never be marked."
+marked instead.  A directory can never be marked."
   (interactive)
   (let* ((tin (ewoc-locate cvs-cookies))
         (fi (ewoc-data tin)))
@@ -1397,7 +1397,7 @@ an empty list if it doesn't point to a file at all."
     (nreverse fis)))
 
 (cl-defun cvs-mode-marked (filter &optional cmd
-                               &key read-only one file noquery)
+                                 &key read-only one file noquery)
   "Get the list of marked FIS.
 CMD is used to determine whether to use the marks or not.
 Only files for which FILTER is applicable are returned.
@@ -1636,25 +1636,25 @@ See also `cvs-diff-ignore-marks'."
 
 (defun-cvs-mode (cvs-mode-diff-head . SIMPLE) (flags)
   "Diff the selected files against the head of the current branch.
-See ``cvs-mode-diff'' for more info."
+See `cvs-mode-diff' for more info."
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons "-rHEAD" flags)))
 
 (defun-cvs-mode (cvs-mode-diff-repository . SIMPLE) (flags)
   "Diff the files for changes in the repository since last co/update/commit.
-See ``cvs-mode-diff'' for more info."
+See `cvs-mode-diff' for more info."
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons "-rBASE" (cons "-rHEAD" flags))))
 
 (defun-cvs-mode (cvs-mode-diff-yesterday . SIMPLE) (flags)
   "Diff the selected files against yesterday's head of the current branch.
-See ``cvs-mode-diff'' for more info."
+See `cvs-mode-diff' for more info."
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons "-Dyesterday" flags)))
 
 (defun-cvs-mode (cvs-mode-diff-vendor . SIMPLE) (flags)
   "Diff the selected files against the head of the vendor branch.
-See ``cvs-mode-diff'' for more info."
+See `cvs-mode-diff' for more info."
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons (concat "-r" cvs-vendor-branch) flags)))
 
@@ -1904,7 +1904,7 @@ Executes `cvs CVSARGS CMD FLAGS' on the selected files.
 FILTER is passed to `cvs-applicable-p' to only apply the command to
   files for which it makes sense.
 SHOW indicates that CMD should be not be run in the default temp buffer and
-  should be shown to the user.  The buffer and mode to be used is determined
+  should be shown to the user.  The buffer and mode to be used are determined
   by `cvs-buffer-name-alist'.
 DONT-CHANGE-DISC non-nil indicates that the command will not change the
   contents of files.  This is only used by the parser."
@@ -1999,7 +1999,7 @@ This command ignores files that are not flagged as `Unknown'."
 
 
 (defun cvs-mode-view-file-other-window (e)
-  "View the file."
+  "View the file in another window."
   (interactive (list last-input-event))
   (cvs-mode-find-file e t t))
 
@@ -2209,7 +2209,7 @@ With prefix argument, prompt for cvs flags."
 ;; Byte compile files.
 
 (defun-cvs-mode cvs-mode-byte-compile-files ()
-  "Run byte-compile-file on all selected files that end in '.el'."
+  "Run byte-compile-file on all selected files with '.el' extension."
   (interactive)
   (let ((marked (cvs-get-marked (cvs-ignore-marks-p "byte-compile"))))
     (dolist (fi marked)
@@ -2318,7 +2318,7 @@ this file, or a list of arguments to send to the program."
 
 \f
 (defun cvs-change-cvsroot (newroot)
-  "Change the cvsroot."
+  "Change the CVSROOT."
   (interactive "DNew repository: ")
   (if (or (file-directory-p (expand-file-name "CVSROOT" newroot))
          (y-or-n-p (concat "Warning: no CVSROOT found inside repository."
@@ -2344,7 +2344,7 @@ Sensible values are `cvs-examine', `cvs-status' and `cvs-quickdir'."
 (defcustom cvs-dired-use-hook '(4)
   "Whether or not opening a CVS directory should run PCL-CVS.
 A value of nil means never do it.
-ALWAYS means to always do it unless a prefix argument is given to the
+`always' means to always do it unless a prefix argument is given to the
   command that prompted the opening of the directory.
 Anything else means to do it only if the prefix arg is equal to this value."
   :group 'pcl-cvs
index 06e46eeb663542e5eb1baf6c67e78bac93d55473..c7cae8359bf6b72252fdb66017b30507946b71ff 100644 (file)
@@ -1210,7 +1210,15 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
 The difference to vc-do-command is that this function always invokes
 `vc-git-program'."
   (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program
-         file-or-list (cons "--no-pager" flags)))
+         ;; http://debbugs.gnu.org/16897
+         (unless (and (not (cdr-safe file-or-list))
+                      (let ((file (or (car-safe file-or-list)
+                                      file-or-list)))
+                        (and file
+                             (eq ?/ (aref file (1- (length file))))
+                             (equal file (vc-git-root file)))))
+           file-or-list)
+         (cons "--no-pager" flags)))
 
 (defun vc-git--empty-db-p ()
   "Check if the git db is empty (no commit done yet)."
index 72b3138fd73f7852db74b83b80af3485e9e31b04..60f13e65c4e053f8b702e9cad3fed3de6ead62f1 100644 (file)
@@ -142,28 +142,28 @@ to `display-buffer'."
        ;; Return the window.
        window))))
 
-;; Doc is very similar to with-output-to-temp-buffer.
 (defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body)
   "Bind `standard-output' to BUFFER-OR-NAME, eval BODY, show the buffer.
-BUFFER-OR-NAME must specify either a live buffer, or the name of a
-buffer (if it does not exist, this macro creates it).
+BUFFER-OR-NAME must specify either a live buffer, or the name of
+buffer (if it does not exist, this macro creates it).
 
-This construct makes buffer BUFFER-OR-NAME empty before running BODY.
-It does not make the buffer current for BODY.
-Instead it binds `standard-output' to that buffer, so that output
+Make the buffer specified by BUFFER-OR-NAME empty before running
+BODY and bind `standard-output' to that buffer, so that output
 generated with `prin1' and similar functions in BODY goes into
-the buffer.
-
-At the end of BODY, this marks the specified buffer unmodified and
-read-only, and displays it in a window (but does not select it, or make
-the buffer current).  The display happens by calling `display-buffer'
-with the ACTION argument.  If `temp-buffer-resize-mode' is enabled,
-the relevant window shrinks automatically.
-
-This returns the value returned by BODY, unless QUIT-FUNCTION specifies
-a function.  In that case, it runs the function with two arguments -
+that buffer.  Do not make that buffer current for running the
+forms in BODY.  Use `with-current-buffer-window' instead if you
+need to run BODY with that buffer current.
+
+At the end of BODY, mark the specified buffer unmodified and
+read-only, and display it in a window (but do not select it).
+The display happens by calling `display-buffer' passing it the
+ACTION argument.  If `temp-buffer-resize-mode' is enabled, the
+corresponding window may be resized automatically.
+
+Return the value returned by BODY, unless QUIT-FUNCTION specifies
+a function.  In that case, run that function with two arguments -
 the window showing the specified buffer and the value returned by
-BODY - and returns the value returned by that function.
+BODY - and return the value returned by that function.
 
 If the buffer is displayed on a new frame, the window manager may
 decide to select that frame.  In that case, it's usually a good
@@ -172,15 +172,14 @@ before reading any value from the minibuffer; for example, when
 asking a `yes-or-no-p' question.
 
 This runs the hook `temp-buffer-window-setup-hook' before BODY,
-with the specified buffer temporarily current.  It runs the
-hook `temp-buffer-window-show-hook' after displaying the buffer,
-with that buffer temporarily current, and the window that was used to
+with the specified buffer temporarily current.  It runs the hook
+`temp-buffer-window-show-hook' after displaying the buffer, with
+that buffer temporarily current, and the window that was used to
 display it temporarily selected.
 
-This construct is similar to `with-output-to-temp-buffer', but
-runs different hooks.  In particular, it does not run
-`temp-buffer-setup-hook', which usually puts the buffer in Help mode.
-Also, it does not call `temp-buffer-show-function' (the ACTION
+This construct is similar to `with-output-to-temp-buffer' but,
+neither runs `temp-buffer-setup-hook' which usually puts the
+buffer in Help mode, nor `temp-buffer-show-function' (the ACTION
 argument replaces this)."
   (declare (debug t))
   (let ((buffer (make-symbol "buffer"))
@@ -197,6 +196,26 @@ argument replaces this)."
           (funcall ,quit-function ,window ,value)
         ,value))))
 
+(defmacro with-current-buffer-window (buffer-or-name action quit-function &rest body)
+  "Evaluate BODY with a buffer BUFFER-OR-NAME current and show that buffer.
+This construct is like `with-temp-buffer-window' but unlike that
+makes the buffer specified by BUFFER-OR-NAME current for running
+BODY."
+  (declare (debug t))
+  (let ((buffer (make-symbol "buffer"))
+       (window (make-symbol "window"))
+       (value (make-symbol "value")))
+    `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name))
+           (standard-output ,buffer)
+           ,window ,value)
+       (with-current-buffer ,buffer
+        (setq ,value (progn ,@body))
+        (setq ,window (temp-buffer-window-show ,buffer ,action)))
+
+       (if (functionp ,quit-function)
+          (funcall ,quit-function ,window ,value)
+        ,value))))
+
 ;; The following two functions are like `window-next-sibling' and
 ;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so
 ;; they don't substitute the selected window for nil), and they return
@@ -320,10 +339,11 @@ Anything less might crash Emacs.")
      (frame-char-size (window-normalize-window window))))
 
 (defcustom window-min-height 4
-  "The minimum number of lines of any window.
-The value has to accommodate a mode- or header-line if present.
-A value less than `window-safe-min-height' is ignored.  The value
-of this variable is honored when windows are resized or split.
+  "The minimum total height, in lines, of any window.
+The value has to accommodate one text line, a mode and header
+line, and a bottom divider, if present.  A value less than
+`window-safe-min-height' is ignored.  The value of this variable
+is honored when windows are resized or split.
 
 Applications should never rebind this variable.  To resize a
 window to a height less than the one specified here, an
@@ -350,11 +370,11 @@ Anything less might crash Emacs.")
      (frame-char-size (window-normalize-window window) t)))
 
 (defcustom window-min-width 10
-  "The minimum number of columns of any window.
-The value has to accommodate margins, fringes, or scrollbars if
-present.  A value less than `window-safe-min-width' is ignored.
-The value of this variable is honored when windows are resized or
-split.
+  "The minimum total width, in columns, of any window.
+The value has to accommodate two text columns as well as margins,
+fringes, a scroll bar and a right divider, if present.  A value
+less than `window-safe-min-width' is ignored.  The value of this
+variable is honored when windows are resized or split.
 
 Applications should never rebind this variable.  To resize a
 window to a width less than the one specified here, an
@@ -1471,7 +1491,7 @@ by which WINDOW can be shrunk."
                  (setq delta
                        (+ delta
                           (max
-                           (- (window-size sub horizontal pixelwise 'ceiling)
+                           (- (window-size sub horizontal pixelwise 'floor)
                               (window-min-size
                                sub horizontal ignore pixelwise))
                            0)))))
@@ -1672,16 +1692,17 @@ WINDOW must be a valid window and defaults to the selected one."
   (= (window-pixel-width window)
      (window-pixel-width (frame-root-window window))))
 
-(defun window-body-size (&optional window horizontal)
+(defun window-body-size (&optional window horizontal pixelwise)
   "Return the height or width of WINDOW's text area.
 WINDOW must be a live window and defaults to the selected one.
 
 If HORIZONTAL is omitted or nil, return the height of the text
 area, like `window-body-height'.  Otherwise, return the width of
-the text area, like `window-body-width'."
+the text area, like `window-body-width'.  In either case, the
+optional argument PIXELWISE is passed to the functions."
   (if horizontal
-      (window-body-width window)
-    (window-body-height window)))
+      (window-body-width window pixelwise)
+    (window-body-height window pixelwise)))
 
 (defun window-current-scroll-bars (&optional window)
   "Return the current scroll bar settings for WINDOW.
@@ -1818,10 +1839,9 @@ or bottom edge of WINDOW as reference position instead of
 top edge of WINDOW as reference position.
 
 Optional argument WRAP non-nil means to wrap DIRECTION around
-frame borders.  This means to return for a WINDOW a the top of
-the frame and DIRECTION `above' to return the minibuffer window
-if the frame has one, and a window at the bottom of the frame
-otherwise.
+frame borders.  This means to return for WINDOW at the top of the
+frame and DIRECTION `above' the minibuffer window if the frame
+has one, and a window at the bottom of the frame otherwise.
 
 Optional argument MINI nil means to return the minibuffer window
 if and only if it is currently active.  MINI non-nil means to
@@ -6813,34 +6833,26 @@ can resize windows in both dimensions."
 ;; `fit-frame-to-buffer' eventually wants to know the real frame sizes
 ;; counting title bar and outer borders.
 (defcustom fit-frame-to-buffer nil
-  "Non-nil means `fit-frame-to-buffer' can fit a frame to its buffer.
+  "Non-nil means `fit-window-to-buffer' can fit a frame to its buffer.
 A frame is fit if and only if its root window is a live window
 and this option is non-nil.  If this is `horizontally', frames
 are resized horizontally only.  If this is `vertically', frames
 are resized vertically only.  Any other non-nil value means
-frames can be resized in both dimensions.  See also
-`fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes'.
-
-If this is non-nil and a window is the only window of its frame,
-`fit-window-to-buffer' will invoke `fit-frame-to-buffer' to fit
-the frame to its buffer."
+frames can be resized in both dimensions."
   :type 'boolean
   :version "24.4"
   :group 'help)
 
 (defcustom fit-frame-to-buffer-margins '(nil nil nil nil)
   "Margins around frame for `fit-frame-to-buffer'.
-This list specifies the numbers of pixels to be left free on the
-left, above, the right, and below a frame that shall be fit to
-its buffer.  The value specified here can be overridden for a
-specific frame by that frame's `fit-frame-to-buffer-margins'
-parameter, if present.
-
-This variable controls how fitting a frame to the size of its
-buffer coordinates with the size of your display.  If you don't
-specify a value here, the size of the display's workarea is used.
-
-See also `fit-frame-to-buffer-sizes'."
+This specifies the numbers of pixels to be left free on the left,
+above, on the right, and below a frame fitted to its buffer.  Set
+this to avoid obscuring other desktop objects like the taskbar.
+The default is nil for each side, which means to not add margins.
+
+The value specified here can be overridden for a specific frame
+by that frame's `fit-frame-to-buffer-margins' parameter, if
+present.  See also `fit-frame-to-buffer-sizes'."
   :version "24.4"
   :type '(list
          (choice
@@ -6917,7 +6929,7 @@ See also `fit-frame-to-buffer-margins'."
             (<= left (- right margin)) (<= margin right))
     margin))
 
-(defun fit-frame-to-buffer (&optional frame max-height min-height max-width min-width)
+(defun fit-frame-to-buffer (&optional frame max-height min-height max-width min-width only)
   "Adjust size of FRAME to display the contents of its buffer exactly.
 FRAME can be any live frame and defaults to the selected one.
 Fit only if FRAME's root window is live.  MAX-HEIGHT, MIN-HEIGHT,
@@ -6925,9 +6937,12 @@ MAX-WIDTH and MIN-WIDTH specify bounds on the new total size of
 FRAME's root window.  MIN-HEIGHT and MIN-WIDTH default to the values of
 `window-min-height' and `window-min-width' respectively.
 
-The option `fit-frame-to-buffer' controls whether this function
-has any effect.  New position and size of FRAME are additionally
-determined by the options `fit-frame-to-buffer-sizes' and
+If the optional argument ONLY is `vertically', resize the frame
+vertically only.  If ONLY is `horizontally', resize the frame
+horizontally only.
+
+The new position and size of FRAME can be additionally determined
+by customizing the options `fit-frame-to-buffer-sizes' and
 `fit-frame-to-buffer-margins' or the corresponding parameters of
 FRAME."
   (interactive)
@@ -6936,13 +6951,7 @@ FRAME."
               (fboundp 'display-monitor-attributes-list))
     (user-error "Cannot resize frame in non-graphic Emacs"))
   (setq frame (window-normalize-frame frame))
-  (when (and (window-live-p (frame-root-window frame))
-            fit-frame-to-buffer
-            (or (not window-size-fixed)
-                (and (eq window-size-fixed 'height)
-                     (not (eq fit-frame-to-buffer 'vertically)))
-                (and (eq window-size-fixed 'width)
-                     (not (eq fit-frame-to-buffer 'horizontally)))))
+  (when (window-live-p (frame-root-window frame))
     (with-selected-window (frame-root-window frame)
       (let* ((window (frame-root-window frame))
             (char-width (frame-char-width))
@@ -7054,7 +7063,7 @@ FRAME."
                (- (* (nth 2 sizes) char-width) window-extra-width))
               ((numberp max-width)
                (- (* max-width char-width) window-extra-width))
-              (t display-height)))
+              (t display-width)))
             (min-width
              (cond
               ((numberp (nth 3 sizes))
@@ -7069,11 +7078,11 @@ FRAME."
             (width (+ (car value) (window-right-divider-width)))
             (height (+ (cdr value) (window-bottom-divider-width))))
        ;; Don't change height or width when the window's size is fixed
-       ;; in either direction.
+       ;; in either direction or ONLY forbids it.
        (cond
-        ((eq window-size-fixed 'width)
+        ((or (eq window-size-fixed 'width) (eq only 'vertically))
          (setq width nil))
-        ((eq window-size-fixed 'height)
+        ((or (eq window-size-fixed 'height) (eq only 'horizontally))
          (setq height nil)))
        ;; Fit width to constraints.
        (when width
@@ -7141,13 +7150,13 @@ FRAME."
 WINDOW must be a live window and defaults to the selected one.
 
 If WINDOW is part of a vertical combination, adjust WINDOW's
-height.  The new height is calculated from the number of lines of
+height.  The new height is calculated from the actual height of
 the accessible portion of its buffer.  The optional argument
 MAX-HEIGHT specifies a maximum height and defaults to the height
 of WINDOW's frame.  The optional argument MIN-HEIGHT specifies a
 minimum height and defaults to `window-min-height'.  Both
-MAX-HEIGHT and MIN-HEIGHT are specified in lines and include the
-mode line and header line, if any.
+MAX-HEIGHT and MIN-HEIGHT are specified in lines and include mode
+and header line and a bottom divider, if any.
 
 If WINDOW is part of a horizontal combination and the value of
 the option `fit-window-to-buffer-horizontally' is non-nil, adjust
@@ -7157,11 +7166,11 @@ start position of WINDOW.  The optional argument MAX-WIDTH
 specifies a maximum width and defaults to the width of WINDOW's
 frame.  The optional argument MIN-WIDTH specifies a minimum width
 and defaults to `window-min-width'.  Both MAX-WIDTH and MIN-WIDTH
-are specified in columns and include fringes, margins and
-scrollbars, if any.
+are specified in columns and include fringes, margins, a
+scrollbar and a vertical divider, if any.
 
 Fit pixelwise if the option `window-resize-pixelwise' is non-nil.
-If WINDOW is its frame's root window, then if the option
+If WINDOW is its frame's root window and the option
 `fit-frame-to-buffer' is non-nil, call `fit-frame-to-buffer' to
 adjust the frame's size.
 
@@ -7177,7 +7186,9 @@ accessible position."
        ;; Fit WINDOW's frame to buffer.
        (fit-frame-to-buffer
         (window-frame window)
-        max-height min-height max-width min-width))
+        max-height min-height max-width min-width
+        (and (memq fit-frame-to-buffer '(vertically horizontally))
+             fit-frame-to-buffer)))
     (with-selected-window window
       (let* ((pixelwise window-resize-pixelwise)
             (char-height (frame-char-height))
@@ -7238,7 +7249,7 @@ accessible position."
         ((and fit-window-to-buffer-horizontally
               (not (window-size-fixed-p window t))
               (window-combined-p nil t))
-         (let* ((total-width (window-size window nil pixelwise))
+         (let* ((total-width (window-size window t pixelwise))
                 (min-width
                  ;; Sanitize MIN-WIDTH.
                  (if (numberp min-width)
index 458956a2417457543216367e2e87d102a60c51b1..2a865f7165c4179c16cc3ce972ada41ee6b7f349 100644 (file)
        (lw_create_widget, lw_pop_all_widgets, lw_show_busy)
        (lw_refigure_widget, lw_allow_resizing): Remove alternative K&R
        declarations.
-       * lwlib-Xlw.c (xlw_update_one_widget):
-       (xlw_pop_instance): Likewise.
+       * lwlib-Xlw.c (xlw_update_one_widget, xlw_pop_instance): Likewise.
        * lwlib-Xaw.c (xaw_update_one_widget, xaw_pop_instance):
        Likewise.
        * lwlib-Xm.c (P_): Remove.
        XtCDefaultFace): New.
 
        * xlwmenuP.h (_window_state): Add max_rest_width and xft_draw.
-       (_XlwMenu_part): Add faceName,xft_fg, xft_bg, xft_disabled_fg and
+       (_XlwMenu_part): Add faceName, xft_fg, xft_bg, xft_disabled_fg and
        xft_font.
 
 2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 
        * xlwmenuP.h (_XlwMenu_part): Add fontSet resource.
 
-       * xlwmenu.c (string_width):
-       (MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Ditto.
+       * xlwmenu.c (string_width, MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Ditto.
        (display_menu_item, make_drawing_gcs, XlwMenuInitialize)
        (XlwMenuSetValues): Use font if fontSet is NULL, use only
        font for !HAVE_X_I18N.
index 3b61b239bebe9be42b8dddd3266437f4235fe1bf..20ce40e7441dcab0c3ccb5ca902e1f04b37d4e39 100644 (file)
@@ -379,3 +379,59 @@ AC_DEFUN([gl_CACHE_VAL_SILENT],
 # AS_VAR_COPY was added in autoconf 2.63b
 m4_define_default([AS_VAR_COPY],
 [AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])
+
+# AC_PROG_SED was added in autoconf 2.59b
+m4_ifndef([AC_PROG_SED],
+[AC_DEFUN([AC_PROG_SED],
+[AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED,
+    [dnl ac_script should not contain more than 99 commands (for HP-UX sed),
+     dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed.
+     ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     AS_UNSET([ac_script])
+     if test -z "$SED"; then
+       ac_path_SED_found=false
+       _AS_PATH_WALK([], [
+         for ac_prog in sed gsed; do
+           for ac_exec_ext in '' $ac_executable_extensions; do
+             ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+             AS_EXECUTABLE_P(["$ac_path_SED"]) || continue
+             case `"$ac_path_SED" --version 2>&1` in
+               *GNU*) ac_cv_path_SED=$ac_path_SED ac_path_SED_found=:;;
+               *)
+                 ac_count=0
+                 _AS_ECHO_N([0123456789]) >conftest.in
+                 while :
+                 do
+                   cat conftest.in conftest.in >conftest.tmp
+                   mv conftest.tmp conftest.in
+                   cp conftest.in conftest.nl
+                   echo >> conftest.nl
+                   "$ac_path_SED" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+                   diff conftest.out conftest.nl >/dev/null 2>&1 || break
+                   ac_count=`expr $ac_count + 1`
+                   if test $ac_count -gt ${ac_path_SED_max-0}; then
+                     # Best so far, but keep looking for better
+                     ac_cv_path_SED=$ac_path_SED
+                     ac_path_SED_max=$ac_count
+                   fi
+                   test $ac_count -gt 10 && break
+                 done
+                 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+             esac
+             $ac_path_SED_found && break 3
+           done
+         done])
+       if test -z "$ac_cv_path_SED"; then
+         AC_ERROR([no acceptable sed could be found in \$PATH])
+       fi
+     else
+       ac_cv_path_SED=$SED
+     fi
+ SED="$ac_cv_path_SED"
+ AC_SUBST([SED])dnl
+ rm -f conftest.sed
+])])])
index 52fa116b93d5e4054eb3a8f7c130dc0c6d13ee1a..0ba2d7950af45c0ddf5f3cb8a2073719db2b8c06 100644 (file)
@@ -140,6 +140,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module sys_select:
   # Code from module sys_stat:
   # Code from module sys_time:
+  # Code from module sys_types:
   # Code from module tempname:
   # Code from module time:
   # Code from module time_r:
@@ -372,6 +373,8 @@ AC_DEFUN([gl_INIT],
   AC_PROG_MKDIR_P
   gl_HEADER_SYS_TIME_H
   AC_PROG_MKDIR_P
+  gl_SYS_TYPES_H
+  AC_PROG_MKDIR_P
   gl_HEADER_TIME_H
   gl_TIME_R
   if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then
@@ -907,6 +910,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/sys_select.in.h
   lib/sys_stat.in.h
   lib/sys_time.in.h
+  lib/sys_types.in.h
   lib/tempname.c
   lib/tempname.h
   lib/time.in.h
@@ -1011,6 +1015,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/sys_socket_h.m4
   m4/sys_stat_h.m4
   m4/sys_time_h.m4
+  m4/sys_types_h.m4
   m4/tempname.m4
   m4/time_h.m4
   m4/time_r.m4
index 48921846a689dd6414aa7513743963f7c6a01c72..9748905b5986ad97c588567c525987ae8472a84d 100644 (file)
@@ -1,10 +1,10 @@
-# sys_types_h.m4 serial 4
+# sys_types_h.m4 serial 5
 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
-AC_DEFUN([gl_SYS_TYPES_H],
+AC_DEFUN_ONCE([gl_SYS_TYPES_H],
 [
   AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
   gl_NEXT_HEADERS([sys/types.h])
index 6eceadd59a389f82da64772338869ca550473890..8e2c921cbef74aceab5626d3f33bd166e25485c1 100644 (file)
@@ -28,7 +28,7 @@ AC_DEFUN([gl_TIMER_TIME],
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)) \
-     && !defined __UCLIBC__
+     && !(__UCLIBC__ && __HAS_NO_THREADS__)
   Thread emulation available
  #endif
 #endif
index 9f890596438586c9c20eb7691b9a442151b787f3..ad869f1a19aa1b0cc58ede610b633201543f8c8d 100644 (file)
@@ -1,3 +1,7 @@
+2014-03-13  Glenn Morris  <rgm@gnu.org>
+
+       * templates/Info.plist.in: Make it strictly valid xml.  (Bug#17002)
+
 2013-10-23  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in (${ns_check_file} ${ns_appdir}):
index 1259d72d384568eb09e77db685b2c2d6cece1de7..ce8f9b163bc814a2b58f0d91793027527f61e0e2 100644 (file)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Copyright (C) 2008-2014 Free Software Foundation, Inc.
 
@@ -17,7 +18,6 @@ You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
index ccbeb85c78c114785ef34760a180cf6717dc5f3f..62a33906b0d9569d94f802859c187bd7146428c7 100644 (file)
        * nmake.defs: Use !if, not !ifdef.  For the details, see
        http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00027.html
 
-       * inc/stdint.h (INTPTR_MIN):
+       * inc/stdint.h (INTPTR_MIN)
        (PTRDIFF_MIN) [!__GNUC__]: Define for MSVC.
 
 2012-11-18  Eli Zaretskii  <eliz@gnu.org>
 
 2001-12-03  Andrew Innes  <andrewi@gnu.org>
 
-       * makefile.w32-in (bootstrap-nmake):
+       * makefile.w32-in (bootstrap-nmake)
        (bootstrap-gmake): Extend bootstrap process to first do
        bootstrap-clean in lisp dir and rebuild the DOC file.
        (bootstrap): Do a "normal" make after the bootstrap work.
 
 2001-01-24  Andrew Innes  <andrewi@gnu.org>
 
-       * makefile.w32-in (cleanall-other-dirs-nmake):
+       * makefile.w32-in (cleanall-other-dirs-nmake)
        (cleanall-other-dirs-gmake): New targets.
        (cleanall): Invoke them.
 
index 86605b9776491d18e53ec7acb62e460288278309..54c07f960f11c28328779dc12d35b56517df7eff 100644 (file)
@@ -1,3 +1,248 @@
+2014-03-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * search.c (find_newline): Speed up the function when using the
+       newline cache, by halving the number of calls to
+       region_cache_forward and region_cache_backward.  (Bug#16830)
+
+2014-03-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (Fset_buffer): Document return value (bug#17015).
+
+2014-03-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * w32term.c (x_set_window_size): When frame-resize-pixelwise is
+       nil, always resize character wise to avoid potential loss of the
+       mode line (Bug#16923 related).
+
+2014-03-12  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (x_set_frame_parameters): Always calculate new sizes
+       pixelwise to avoid potential loss when rounding.
+
+2014-03-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xfns.c (x_set_mouse_color): Recolor vertical_drag_cursor.
+       * xterm.c (x_free_frame_resources): Free all allocated cursors.
+
+2014-03-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (fstatat): Don't add an extra slash if the argument ends
+       with a slash: this fails the subsequent call to stat_worker on
+       Windows 9X.  Reported by oslsachem <oslsachem@gmail.com>.
+
+2014-03-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * xdisp.c (Fwindow_text_pixel_size): Adjust doc-string.
+
+2014-03-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.h (MAC_OS_X_VERSION_10_9): Add.
+
+       * nsterm.m (constrainFrameRect:toScreen:): Constrain normally
+       when frame is only on one screen (Bug#14713).
+
+2014-03-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (move_it_in_display_line_to): If word-wrap is ON, and
+       there's a valid wrap point in the display line, the last glyph
+       cannot "just barely fit" on this row, because display_line doesn't
+       let it.  Instead, proceed as if the last glyph didn't fit, so that
+       we eventually back up the iterator to the wrap point.  This avoids
+       delusional behavior of move_it_to, whereby it proceeds to the next
+       display line, but sets current_x to zero for all the glyphs that
+       without word-wrap would fit on the previous display line.  One
+       result was that visual-order cursor movement behaved erratically
+       under word-wrap.
+       (Fmove_point_visually): Add code to find the x coordinate of the
+       last character before wrap point, under word-wrap on a TTY.
+
+2014-03-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fmove_point_visually): When under word-wrap, accept
+       also return value of MOVE_POS_MATCH_OR_ZV from
+       move_it_in_display_line_to, when moving from beginning of line to
+       point's position.  (Bug#16961)
+
+2014-03-07  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffer.c (Vbuffer_list_update_hook): Doc-string fix.
+       * window.c (Fselect_window): Explain NORECORD and
+       `buffer-list-update-hook' in doc-string.
+
+2014-03-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fother_window_for_scrolling): Check that
+       Vother_window_scroll_buffer is a buffer.
+
+2014-03-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xterm.c (xim_initialize): Always pass a copy of resource name
+       to XRegisterIMInstantiateCallback and eassert whether return
+       value is True.  Passing copy is important because Xlib doesn't
+       make its own copy and resource name argument usually points to
+       SSDATA (Vx_resource_name), which may be changed from Lisp.
+       (xim_close_display): For XUnregisterIMInstantiateCallback,
+       always eassert return value and pass exactly the same values
+       as were used for XRegisterIMInstantiateCallback.  Otherwise
+       XUnregisterIMInstantiateCallback will always fail.  See Xlib
+       sources to check why if you are interested.
+
+2014-03-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * dispnew.c (change_frame_size_1): Add new_lines instead of
+       new_height, the latter may be still zero if passed as such.
+       * window.c (Fwindow_pixel_height): Mention bottom divider in
+       doc-string.
+
+2014-03-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix "resource temporarily unavailable" with xgselect
+       (Bug#16925).
+       * xgselect.c: Include <stdbool.h>.
+       (xg_select) [!USE_GTK]: Don't lose track of errno.
+
+       Fix minor --enable-gcc-warnings issues.
+       * widget.c (update_various_frame_slots, EmacsFrameResize):
+       Avoid unused locals.  Prefer 'if' to '#if' when either will do.
+
+2014-03-04  Ken Brown  <kbrown@cornell.edu>
+
+       * gmalloc.c (aligned_alloc): Clarify the code by making `adj'
+       represent the actual adjustment needed for alignment.
+
+2014-03-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * gmalloc.c (aligned_alloc): Don't allocate more memory than
+       needed, and don't reallocate if the initial allocation already
+       fits the bill.  Suggested by Ken Brown <kbrown@cornell.edu>.
+
+2014-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xterm.c (x_draw_stretch_glyph_string): Reset clipping.
+       (Bug#16932)
+
+2014-03-04  Michal Nazarewicz  <mina86@mina86.com>
+
+       * cmds.c (delete-char): Update docstring pointing out that the
+       function ignores `delete-active-region' and `overwrite-mode'.
+
+2014-03-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * font.c (Fframe_font_cache): Fix last change.  (Bug#16930)
+
+       * gmalloc.c (aligned_alloc): Fix adjustment of size of the
+       allocated buffer due to alignment.
+       (freehook): If the block to be freed was allocated by
+       'aligned_alloc', find its real pointer before calling 'free'.
+       (Bug#16901)
+       (mabort) [emacs]: Call 'emacs_abort', not 'abort', to provide a
+       backtrace.
+
+2014-03-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * font.c (toplevel): Adjust comment about font cache layout.
+       (font_clear_cache): Fix to match real font cache layout.
+       Suggested by <namespace_collision@yahoo.com> in Bug#16069.
+       (Fframe_font_cache) [FONT_DEBUG]: New function.
+       (syms_of_font) [FONT_DEBUG]: Defsubr it.
+
+       Avoid crashes when X fonts are erroneously freed on reused X
+       'Display *' connection data (Bug#16069).  Note that X font
+       resources still may be leaked, but currently there is no way
+       to completely avoid it.
+       * xterm.h (struct x_display_info): New member x_id.  Add comments.
+       * xterm.c (x_display_id): New variable.
+       (x_term_init): Assign identifier to each opened X connection.
+       * xfont.c (struct xfont): New member x_display_id.
+       (xfont_open): Initialize it with frame's display id.
+       (xfont_close): Check whether font's display id matches the one
+       recorded for the given display.  Adjust comment.
+       * xftfont.c (struct xftfont_info):
+       (xftfont_open, xftfont_close): Exactly as above with xfont stuff.
+
+2014-03-01  Martin Rudalics  <rudalics@gmx.at>
+
+       Consider Vother_window_scroll_buffer valid iff it's a live buffer.
+       * window.c (Fother_window_for_scrolling): Don't try to scroll a
+       killed Vother_window_scroll_buffer.
+       (Vother_window_scroll_buffer): Fix doc-string accordingly.
+
+2014-03-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fexpand_file_name) [WINDOWSNT]: Don't treat file names
+       that start with more than 2 slashes as UNCs.  (Bug#16751)
+
+2014-02-28  Paul Eggert  <eggert@penguin.cs.ucla.edu>
+
+       Fix a few crashes and leaks when cloning C strings.
+       * alloc.c, lisp.h (dupstring): New function.
+       * gtkutil.c (xg_get_font):
+       * term.c (tty_default_color_capabilities):
+       * xsettings.c (store_monospaced_changed)
+       (store_font_name_changed, parse_settings)
+       (read_and_apply_settings, init_gsettings, init_gconf): Use it.
+       This avoids some unlikely crashes due to accessing freed storage,
+       and avoids some minor memory leaks in the more-typical case.
+
+2014-02-28  Martin Rudalics  <rudalics@gmx.at>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Don't show drag
+       cursor when modeline can't be dragged (Bug#16647).
+
+2014-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * doc.c (Fsnarf_documentation): Snarf not-yet-bound variables
+       from custom-delayed-init-variables.  (Bug#11565)
+
+2014-02-27  Martin Rudalics  <rudalics@gmx.at>
+
+       More fixes for mouse glyph calculations (Bug#16647).
+       * window.c (coordinates_in_window): In intersection of
+       horizontal and vertical window dividers prefer the horizontal
+       one.  Add some extra parens to last fix.
+       (window_relative_x_coord): Return x-coordinate for header and
+       mode line too.
+       * xdisp.c (remember_mouse_glyph): In text area don't extend
+       glyph into mode line to show the vertical drag cursor there
+       immediately.  Subdivide mouse glyphs in right fringes to show a
+       horizontal drag cursor as soon as we enter the "grabbable width"
+       portion.  Handle vertical border case separately.  Do not
+       subdivide window divider areas.
+       (note_mouse_highlight): On bottom divider of bottommost windows
+       show vertical drag cursor only when the minibuffer window can be
+       resized.
+
+2014-02-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (pop_it): Restore the it->face_box_p flag which could be
+       reset by the face of the object just displayed.  See also bug#76.
+       (get_next_display_element): If the string came from a display
+       property, examine the box face attribute at it->position, not at
+       it->current.pos, since the latter was not updated yet.  (Bug#16870)
+       (handle_face_prop): Improve commentary.
+
+2014-02-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * dbusbind.c (Fdbus__init_bus, Qdbus__init_bus, Sdbus__init_bus):
+       Rename from Fdbus_init_bus_1, Qdbus_init_bus_1, Sdbus_init_bus_1.
+
+2014-02-26  Martin Rudalics  <rudalics@gmx.at>
+
+       Fixes around Bug#16647.
+       * xdisp.c (remember_mouse_glyph): Handle ON_RIGHT_DIVIDER and
+       ON_BOTTOM_DIVIDER cases.
+       * window.c (coordinates_in_window): Return ON_VERTICAL_BORDER
+       only if the window has no right divider.
+       (Fcoordinates_in_window_p): Fix doc-string.
+
+2014-02-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * lread.c (Funintern): Fix doc to match advertised calling convention.
+
+2014-02-24  Daniel Colascione  <dancol@dancol.org>
+
+       * keyboard.c (read_char): Close race that resulted in lost events.
+
 2014-02-22  Glenn Morris  <rgm@gnu.org>
 
        * frame.c (frame-alpha-lower-limit, frame-resize-pixelwise):
        * emacs.c (main): Initialize daemon_pipe[1] here ...
        (syms_of_emacs): ... instead of here.
 
-2014-02-16  Anders Lindgern <andlind@gmail.com>
+2014-02-16  Anders Lindgern  <andlind@gmail.com>
 
        * nsterm.m (keyDown:): Check for normal key even if NSNumericPadKeyMask
        is set (Bug#16505).
 
 2014-02-06  Eli Zaretskii  <eliz@gnu.org>
 
-       * w32.c (pMultiByteToWideChar, pWideCharToMultiByte): New
-       variables: pointers through which to call the respective APIs.
+       * w32.c (pMultiByteToWideChar, pWideCharToMultiByte):
+       New variables: pointers through which to call the respective APIs.
        (filename_to_utf16, filename_from_utf16, filename_to_ansi)
-       (filename_from_ansi, sys_link, check_windows_init_file): Call
-       MultiByteToWideChar and WideCharToMultiByte through pointers.
+       (filename_from_ansi, sys_link, check_windows_init_file):
+       Call MultiByteToWideChar and WideCharToMultiByte through pointers.
        This is required on Windows 9X, where we dynamically load
        UNICOWS.DLL which has their non-stub implementations.
        (maybe_load_unicows_dll): Assign addresses to these 2 function
        MultiByteToWideChar and WideCharToMultiByte through function
        pointers.
 
-       * w32.h (pMultiByteToWideChar, pWideCharToMultiByte): New
-       declarations.
+       * w32.h (pMultiByteToWideChar, pWideCharToMultiByte):
+       New declarations.
 
 2014-02-06  Jan Djärv  <jan.h.d@swipnet.se>
 
        * w32menu.c (w32_popup_dialog): Don't condition the whole function
        on HAVE_DIALOGS.  If the dialog is "simple", pop up a message box
        to show it; otherwise return 'unsupported--w32-dialog' to signal
-       to the caller that emulation with menus is necessary.  This
-       resurrects code inadvertently deleted by the 2013-10-08 commit.
+       to the caller that emulation with menus is necessary.
+       This resurrects code inadvertently deleted by the 2013-10-08 commit.
        (Bug#16636)
        (syms_of_w32menu): DEFSYM Qunsupported__w32_dialog.
 
        from 2013-03-29.
        (move_it_to): Re-remove reference to last_max_ascent.
        (Fwindow_text_pixel_size): Add iterator's max_ascent and
-       max_descent here instead of calling line_bottom_y.  Fix
-       doc-string.
+       max_descent here instead of calling line_bottom_y.
+       Fix doc-string.
 
 2014-01-28  Dmitry Antipov  <dmantipov@yandex.ru>
 
 
 2014-01-24  Dmitry Antipov  <dmantipov@yandex.ru>
 
-       * xdisp.c (reseat_1, Fcurrent_bidi_paragraph_direction): Avoid
-       undefined behavior by initializing display property bit of a
+       * xdisp.c (reseat_1, Fcurrent_bidi_paragraph_direction):
+       Avoid undefined behavior by initializing display property bit of a
        string processed by the bidirectional iterator.  For details, see
        <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01920.html>.
 
 
 2014-01-13  Daniel Colascione  <dancol@dancol.org>
 
-       * textprop.c (Fremove_list_of_text_properties): Correctly
-       handle reaching the end of the interval tree. (Bug#15344)
+       * textprop.c (Fremove_list_of_text_properties):
+       Correctly handle reaching the end of the interval tree. (Bug#15344)
 
 2014-01-13  Martin Rudalics  <rudalics@gmx.at>
 
        * macfont.m: Include termchar.h.
        (CG_SET_FILL_COLOR_WITH_FACE_FOREGROUND)
        (CG_SET_FILL_COLOR_WITH_FACE_BACKGROUND)
-       (CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND): Modified from
+       (CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND): Modify from
        *_WITH_GC_* to take face and f as parameters.
        (macfont_draw): Check for DRAW_MOUSE_FACE and set face accordingly.
        Use *_WITH_FACE_*, and pass face as parameter (Bug#16425).
 2014-01-10  Martin Rudalics  <rudalics@gmx.at>
 
        Fix handling of internal borders (Bug#16348).
-       * dispnew.c (adjust_frame_glyphs_for_window_redisplay): Remove
-       internal border width from pixel width of windows.
+       * dispnew.c (adjust_frame_glyphs_for_window_redisplay):
+       Remove internal border width from pixel width of windows.
        (change_frame_size_1): Don't return early when frame's pixel
        size changes - we still have to record the new sizes in the
        frame structure.
        * window.c (check_frame_size): Include internal_border_width in
        check.
        * xdisp.c (Ftool_bar_height): Fix doc-string typo.
-       * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): In
-       non-toolkit/non-GTK version clear internal border.
+       * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines):
+       In non-toolkit/non-GTK version clear internal border.
        * xterm.c (x_clear_under_internal_border): New function for
        non-toolkit/non-GTK version.
        (x_after_update_window_line): In non-toolkit/non-GTK version
        don't do that.
-       (handle_one_xevent, x_set_window_size): Call
-       x_clear_under_internal_border in non-toolkit/non-GTK version.
+       (handle_one_xevent, x_set_window_size):
+       Call x_clear_under_internal_border in non-toolkit/non-GTK version.
        * xterm.h (x_clear_under_internal_border): Extern it.
 
 2014-01-07  Paul Eggert  <eggert@cs.ucla.edu>
 2014-01-02  Martin Rudalics  <rudalics@gmx.at>
 
        Further adjust frame/window scrollbar width calculations.
-       * window.c (apply_window_adjustment): Set
-       windows_or_buffers_changed.
+       * window.c (apply_window_adjustment):
+       Set windows_or_buffers_changed.
        (Fwindow_scroll_bars): Return actual scrollbar width.
        * xfns.c (x_set_scroll_bar_default_width): Rename wid to unit.
        For non-toolkit builds again use 14 as minimum width and set
        (globals_of_w32): Initialize them to zero.
        (set_named_security_info): Set them to non-zero if the
        corresponding API is available.
-       (SetNamedSecurityInfoW_Proc, SetNamedSecurityInfoA_Proc): New
-       function typedefs.
+       (SetNamedSecurityInfoW_Proc, SetNamedSecurityInfoA_Proc):
+       New function typedefs.
 
 2013-12-31  Martin Rudalics  <rudalics@gmx.at>
 
 
 2013-12-25  Chong Yidong  <cyd@gnu.org>
 
-       * keyboard.c (Voverriding_terminal_local_map):
+       * keyboard.c (Voverriding_terminal_local_map)
        (Voverriding_local_map): Doc fix.
 
        * keymap.c (Vemulation_mode_map_alists): Doc fix.
        (decode_coding_c_string):
        * composite.h (COMPOSITION_DECODE_REFS, COMPOSITION_DECODE_RULE):
        * conf_post.h (has_attribute):
-       * dispextern.h (trace_redisplay_p):
+       * dispextern.h (trace_redisplay_p)
        (INC_TEXT_POS, DEC_TEXT_POS, SET_GLYPH_FROM_GLYPH_CODE)
        (SET_CHAR_GLYPH, SET_CHAR_GLYPH_FROM_GLYPH)
-       (SET_GLYPH_FROM_CHAR_GLYPH):
+       (SET_GLYPH_FROM_CHAR_GLYPH)
        (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P)
        (FACE_SUITABLE_FOR_ASCII_CHAR_P, FACE_SUITABLE_FOR_CHAR_P)
        (PRODUCE_GLYPHS, reset_mouse_highlight, in_display_vector_p)
        (FONT_SET_STYLE, CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY)
        (CHECK_FONT_OBJECT, CHECK_FONT_GET_OBJECT, FONT_ADD_LOG)
        (FONT_DEFERRED_LOG):
-       * frame.h (FRAME_W32_P, FRAME_MSDOS_P, FRAME_WINDOW_P):
+       * frame.h (FRAME_W32_P, FRAME_MSDOS_P, FRAME_WINDOW_P)
        (FRAME_EXTERNAL_TOOL_BAR, FRAME_EXTERNAL_MENU_BAR, FOR_EACH_FRAME)
        (FRAME_MOUSE_UPDATE):
        * fringe.c (Fdefine_fringe_bitmap):
        * conf_post.h: Include <stdbool.h>.
        (bool_bf): New type.
        * dispextern.h (TRACE, PREPARE_FACE_FOR_DISPLAY):
-       * intervals.h (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE)
-       Surround statement macro with proper 'do { ... } while (false)' brackets.
+       * intervals.h (RESET_INTERVAL, COPY_INTERVAL_CACHE)
+       (MERGE_INTERVAL_CACHE): Surround statement macro with proper
+       'do { ... } while (false)' brackets.
        * dispextern.h (IF_DEBUG): Properly parenthesize and convert to void.
        Args must now be expressions; all callers changed.
        (SET_MATRIX_ROW_ENABLED_P): Assume 2nd arg is bool.
        ANSI and Unicode APIs.  Use the latter if w32_unicode_filenames is
        non-zero, else the former.
        (codepage_for_filenames, filename_to_utf16, )
-       (filename_from_utf16, filename_to_ansi, filename_from_ansi): New
-       functions.
+       (filename_from_utf16, filename_to_ansi, filename_from_ansi):
+       New functions.
        (init_user_info): Allow $HOME and $SHELL to include non-ANSI
        characters.
        (normalize_filename): Lose the DBCS code, now works on UTF-8.
        * xterm.c (x_make_frame_visible): Restore hack which is needed when
        input polling is used.  This is still meaningful for Cygwin, see
        http://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00351.html.
-       * keyboard.c (poll_for_input_1, input_polling_used): Define
-       unconditionally.
+       * keyboard.c (poll_for_input_1, input_polling_used):
+       Define unconditionally.
        * dispextern.h (FACE_SUITABLE_FOR_CHAR_P): Remove unused macro.
        (FACE_FOR_CHAR): Simplify because face_for_char does the same.
        * fontset.c (face_suitable_for_char_p) [0]: Remove unused function.
 
 2013-10-08  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * nsterm.m (windowDidExitFullScreen:):
+       * nsterm.m (windowDidExitFullScreen:)
        (toggleFullScreen:): Change NS_IMPL_COCOA to HAVE_NATIVE_FS.
 
 2013-10-08  Paul Eggert  <eggert@cs.ucla.edu>
        * process.c (wait_reading_process_output): Change int pnamelen to
        socklen_t.
 
-       * nsterm.m (setMarkedText:selectedRange:):
-       (deleteWorkingText):
+       * nsterm.m (setMarkedText:selectedRange:, deleteWorkingText):
        * nsmenu.m (addDisplayItemWithImage:idx:tag:helpText:enabled:):
        * nsfont.m (ns_get_covering_families, ns_findfonts): Cast NSLog
        argument to unsigned long to avoid warning.
 2013-08-29  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * xterm.c (x_clear_area): Lost 7th arg because it is always False.
-       (x_after_update_window_line, x_scroll_bar_create):
-       (x_scroll_bar_set_handle, XTset_vertical_scroll_bar):
+       (x_after_update_window_line, x_scroll_bar_create)
+       (x_scroll_bar_set_handle, XTset_vertical_scroll_bar)
        (handle_one_xevent, x_clear_frame_area):
        * gtkutil.c (xg_clear_under_internal_border, xg_update_scrollbar_pos):
        * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): Adjust users.
        (menubar_selection_callback, menu_position_func)
        (popup_selection_callback, create_and_show_popup_menu)
        (dialog_selection_callback, create_and_show_dialog):
-       * xrdb.c (x_get_string_resource):
+       * xrdb.c (x_get_string_resource)
        (main) [TESTRM]:
        * xsmfns.c (x_session_check_input):
        * xterm.c (x_draw_glyphless_glyph_string_foreground)
        Fix last font-related change.
        * w32font.h (w32font_list_internal, w32font_match_internal):
        Fix prototype.
-       * w32uniscribe.c (uniscribe_list, uniscribe_match):
+       * w32uniscribe.c (uniscribe_list, uniscribe_match)
        (uniscribe_list_family): Adjust to match font API change.
        MS-Windows breakage reported by Juanma Barranquero <lekktu@gmail.com>
        at http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00006.html.
        functions to accept struct frame * as first arg.
        * font.c (font_score, font_compare, font_sort_entities):
        Remove prototypes.
-       (font_sort_entities, font_list_entities, font_select_entity):
+       (font_sort_entities, font_list_entities, font_select_entity)
        (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
        match font API change.
        * xfont.c (xfont_list, xfont_match, xfont_list_family):
        * ftxfont.c (ftxfont_list, ftxfont_match):
        * xftfont.c (xftfont_list, xftfont_match):
        * nsfont.m (nsfont_list, nsfont_match, nsfont_list_family):
-       * w32font.c (w32font_list, w32font_match, w32font_list):
+       * w32font.c (w32font_list, w32font_match, w32font_list)
        (w32font_list_internal, w32_font_match_internal): Likewise.
        * xfaces.c (Fx_family_fonts): Adjust user.
 
        have more than one X frame on the same X display.
        (any_help_event_p, x_draw_glyph_string_background, x_display_ok):
        Use bool for booleans.
-       (x_draw_glyph_string_background, cvt_string_to_pixel):
+       (x_draw_glyph_string_background, cvt_string_to_pixel)
        (cvt_pixel_dtor): Drop unnecessary prototypes.
        * xterm.h (x_display_ok): Adjust prototype.
 
        (close_on_exec, accept4, process_socket) [!SOCK_CLOEXEC]:
        New functions.
        (socket) [!SOCK_CLOEXEC]: Supply a substitute.
-       (Fmake_network_process, Fnetwork_interface_list):
+       (Fmake_network_process, Fnetwork_interface_list)
        (Fnetwork_interface_info, server_accept_connection):
        Make newly-created socket close-on-exec.
        * sysdep.c (emacs_open, emacs_fopen):
        * image.c (gif_load): Assume pass < 3 to pacify GCC.
        * process.c (Fset_process_datagram_address)
        (Fmake_network_process): Check get_lisp_to_sockaddr_size return value.
-       * xdisp.c (get_char_face_and_encoding):
+       * xdisp.c (get_char_face_and_encoding)
        (get_glyph_face_and_encoding): Ensure that *CHAR2B is initialized.
        (get_glyph_face_and_encoding): Prepare face before possibly using it.
        (get_per_char_metric): Don't use CHAR2B if it might not be initialized.
index 7f0a74ca834a88c2492967bb2af0da7d392864ae..7c671e25cfcff94351f2db8cc357b1811d405df0 100644 (file)
@@ -850,6 +850,20 @@ xlispstrdup (Lisp_Object string)
   return memcpy (xmalloc (size), SSDATA (string), size);
 }
 
+/* Assign to *PTR a copy of STRING, freeing any storage *PTR formerly
+   pointed to.  If STRING is null, assign it without copying anything.
+   Allocate before freeing, to avoid a dangling pointer if allocation
+   fails.  */
+
+void
+dupstring (char **ptr, char const *string)
+{
+  char *old = *ptr;
+  *ptr = string ? xstrdup (string) : 0;
+  xfree (old);
+}
+
+
 /* Like putenv, but (1) use the equivalent of xmalloc and (2) the
    argument is a const pointer.  */
 
index 90c15420d1d296b21b18434aa5c3ac3e0ad03c72..daafbcef0e494b53cbba5d0ae8cbeb9358f16794 100644 (file)
@@ -2187,11 +2187,12 @@ set_buffer_temp (struct buffer *b)
 
 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,
        doc: /* Make buffer BUFFER-OR-NAME current for editing operations.
-BUFFER-OR-NAME may be a buffer or the name of an existing buffer.  See
-also `with-current-buffer' when you want to make a buffer current
+BUFFER-OR-NAME may be a buffer or the name of an existing buffer.
+See also `with-current-buffer' when you want to make a buffer current
 temporarily.  This function does not display the buffer, so its effect
 ends when the current command terminates.  Use `switch-to-buffer' or
-`pop-to-buffer' to switch buffers permanently.  */)
+`pop-to-buffer' to switch buffers permanently.
+The return value is the buffer made current.  */)
   (register Lisp_Object buffer_or_name)
 {
   register Lisp_Object buffer;
@@ -6284,9 +6285,9 @@ The function `kill-all-local-variables' runs this before doing anything else.  *
 
   DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook,
               doc: /* Hook run when the buffer list changes.
-Functions running this hook are `get-buffer-create',
+Functions running this hook are, `get-buffer-create',
 `make-indirect-buffer', `rename-buffer', `kill-buffer',
-and `bury-buffer-internal'.  */);
+`bury-buffer-internal' and `select-window'.  */);
   Vbuffer_list_update_hook = Qnil;
   DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook");
 
index fdc3fcac2815fe594329541f84ef0cfce918cbf4..7459908828d4627ea4ebb083819fc6d8d1a3e1fa 100644 (file)
@@ -229,7 +229,8 @@ Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).
 Interactively, N is the prefix arg, and KILLFLAG is set if
 N was explicitly specified.
 
-The command `delete-forward-char' is preferable for interactive use.  */)
+The command `delete-forward-char' is preferable for interactive use, e.g.
+because it respects values of `delete-active-region' and `overwrite-mode'.  */)
   (Lisp_Object n, Lisp_Object killflag)
 {
   EMACS_INT pos;
index 460733c7239dffe491952a2fb5cd799856b8bfda..8ebc56c72c4bf5fb11504759007a7d30a52b683a 100644 (file)
@@ -42,7 +42,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 \f
 /* Subroutines.  */
-static Lisp_Object Qdbus_init_bus_1;
+static Lisp_Object Qdbus__init_bus;
 static Lisp_Object Qdbus_get_unique_name;
 static Lisp_Object Qdbus_message_internal;
 
@@ -1094,7 +1094,7 @@ xd_close_bus (Lisp_Object bus)
   if (NILP (val))
     return;
 
-  busobj = CDR_SAFE(val);
+  busobj = CDR_SAFE (val);
   if (NILP (busobj)) {
     xd_registered_buses = Fdelete (val, xd_registered_buses);
     return;
@@ -1121,11 +1121,11 @@ xd_close_bus (Lisp_Object bus)
   return;
 }
 
-DEFUN ("dbus-init-bus-1", Fdbus_init_bus_1, Sdbus_init_bus_1, 1, 2, 0,
+DEFUN ("dbus--init-bus", Fdbus__init_bus, Sdbus__init_bus, 1, 2, 0,
        doc: /* Establish the connection to D-Bus BUS.
 
-This function is dbus-internal.  You almost certainly want to use
-dbus-init-bus.
+This function is dbus internal.  You almost certainly want to use
+`dbus-init-bus'.
 
 BUS can be either the symbol `:system' or the symbol `:session', or it
 can be a string denoting the address of the corresponding bus.  For
@@ -1745,8 +1745,8 @@ void
 syms_of_dbusbind (void)
 {
 
-  DEFSYM (Qdbus_init_bus_1, "dbus-init-bus-1");
-  defsubr (&Sdbus_init_bus_1);
+  DEFSYM (Qdbus__init_bus, "dbus--init-bus");
+  defsubr (&Sdbus__init_bus);
 
   DEFSYM (Qdbus_get_unique_name, "dbus-get-unique-name");
   defsubr (&Sdbus_get_unique_name);
index e11d143d0b5bc5e85c0a86d9fc0dab8da3878e4e..7833f8e8af56130f0178674a4f79fa24f3bcb173 100644 (file)
@@ -5539,7 +5539,7 @@ change_frame_size_1 (struct frame *f, int new_width, int new_height,
       /* MSDOS frames cannot PRETEND, as they change frame size by
         manipulating video hardware.  */
       if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f))
-       FrameRows (FRAME_TTY (f)) = new_height;
+       FrameRows (FRAME_TTY (f)) = new_lines;
     }
 
   if (new_text_width != FRAME_TEXT_WIDTH (f)
index ecefd776b853fb0fdec60f8046c5b854998fc7a2..a42874f45032ad9414b4994c4bd0ff22012a7938 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -1,7 +1,6 @@
 /* Record indices of function doc strings stored in a file.
 
-Copyright (C) 1985-1986, 1993-1995, 1997-2014 Free Software Foundation,
-Inc.
+Copyright (C) 1985-1986, 1993-1995, 1997-2014 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -559,6 +558,12 @@ the same file name is found in the `doc-directory'.  */)
   char *p, *name;
   bool skip_file = 0;
   ptrdiff_t count;
+  /* Preloaded defcustoms using custom-initialize-delay are added to
+     this list, but kept unbound.  See http://debbugs.gnu.org/11565  */
+  Lisp_Object delayed_init =
+    find_symbol_value (intern ("custom-delayed-init-variables"));
+
+  if (EQ (delayed_init, Qunbound)) delayed_init = Qnil;
 
   CHECK_STRING (filename);
 
@@ -656,7 +661,8 @@ the same file name is found in the `doc-directory'.  */)
                  /* Install file-position as variable-documentation property
                     and make it negative for a user-variable
                     (doc starts with a `*').  */
-                  if (!NILP (Fboundp (sym)))
+                  if (!NILP (Fboundp (sym))
+                      || !NILP (Fmemq (sym, delayed_init)))
                     Fput (sym, Qvariable_documentation,
                           make_number ((pos + end + 1 - buf)
                                        * (end[1] == '*' ? -1 : 1)));
index d03a2bcf02f9c1a793d2b6a089097c20c23f4977..fb0a33b39dbe53b2da74717da01ed50b811e0318 100644 (file)
@@ -1047,10 +1047,9 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
     nm++;
 
   /* Discard any previous drive specifier if nm is now in UNC format.  */
-  if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1]))
-    {
-      drive = 0;
-    }
+  if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
+      && !IS_DIRECTORY_SEP (nm[2]))
+    drive = 0;
 #endif /* WINDOWSNT */
 #endif /* DOS_NT */
 
@@ -1261,7 +1260,8 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
       && !IS_DIRECTORY_SEP (nm[0])
 #endif
 #ifdef WINDOWSNT
-      && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1]))
+      && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
+          && !IS_DIRECTORY_SEP (nm[2]))
 #endif
       && !newdir)
     {
@@ -1286,7 +1286,8 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
             && IS_DEVICE_SEP (newdir[1]) && IS_DIRECTORY_SEP (newdir[2]))
 #ifdef WINDOWSNT
          /* Detect Windows file names in UNC format.  */
-         && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1]))
+         && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
+               && !IS_DIRECTORY_SEP (newdir[2]))
 #endif
          )
        {
@@ -1346,7 +1347,8 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
       if (IS_DIRECTORY_SEP (nm[0]) && collapse_newdir)
        {
 #ifdef WINDOWSNT
-         if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1]))
+         if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
+             && !IS_DIRECTORY_SEP (newdir[2]))
            {
              char *adir = strcpy (alloca (strlen (newdir) + 1), newdir);
              char *p = adir + 2;
index 843e8561a19cef84ec2c92535f252f000aca11d3..5252db09104dd78ffd260f57e9326245fd825d75 100644 (file)
@@ -1,6 +1,10 @@
 /* Lock files for editing.
-   Copyright (C) 1985-1987, 1993-1994, 1996, 1998-2014 Free Software
-   Foundation, Inc.
+
+Copyright (C) 1985-1987, 1993-1994, 1996, 1998-2014
+  Free Software Foundation, Inc.
+
+Author: Richard King
+  (according to authors.el)
 
 This file is part of GNU Emacs.
 
index 8027de81609080c8ea7936523359db5dd46bdbb3..b49664b5f31f6b16c68d7ca3336f42c8252cabc4 100644 (file)
@@ -2515,7 +2515,7 @@ font_match_p (Lisp_Object spec, Lisp_Object font)
 
    where DRIVER-TYPE is a symbol such as `x', `xft', etc., NUM-FRAMES
    is a number frames sharing this cache, and FONT-CACHE-DATA is a
-   cons (FONT-SPEC FONT-ENTITY ...).  */
+   cons (FONT-SPEC . [FONT-ENTITY ...]).  */
 
 static void font_prepare_cache (struct frame *, struct font_driver *);
 static void font_finish_cache (struct frame *, struct font_driver *);
@@ -2585,18 +2585,21 @@ static void
 font_clear_cache (struct frame *f, Lisp_Object cache, struct font_driver *driver)
 {
   Lisp_Object tail, elt;
-  Lisp_Object tail2, entity;
+  Lisp_Object entity;
+  ptrdiff_t i;
 
   /* CACHE = (DRIVER-TYPE NUM-FRAMES FONT-CACHE-DATA ...) */
   for (tail = XCDR (XCDR (cache)); CONSP (tail); tail = XCDR (tail))
     {
       elt = XCAR (tail);
-      /* elt should have the form (FONT-SPEC FONT-ENTITY ...) */
+      /* elt should have the form (FONT-SPEC . [FONT-ENTITY ...]) */
       if (CONSP (elt) && FONT_SPEC_P (XCAR (elt)))
        {
-         for (tail2 = XCDR (elt); CONSP (tail2); tail2 = XCDR (tail2))
+         elt = XCDR (elt);
+         eassert (VECTORP (elt));
+         for (i = 0; i < ASIZE (elt); i++)
            {
-             entity = XCAR (tail2);
+             entity = AREF (elt, i);
 
              if (FONT_ENTITY_P (entity)
                  && EQ (driver->type, AREF (entity, FONT_TYPE_INDEX)))
@@ -4842,6 +4845,21 @@ Type C-l to recover what previously shown.  */)
 }
 #endif
 
+DEFUN ("frame-font-cache", Fframe_font_cache, Sframe_font_cache, 0, 1, 0,
+       doc: /* Return FRAME's font cache.  Mainly used for debugging.
+If FRAME is omitted or nil, use the selected frame.  */)
+  (Lisp_Object frame)
+{
+#ifdef HAVE_WINDOW_SYSTEM
+  struct frame *f = decode_live_frame (frame);
+
+  if (FRAME_WINDOW_P (f))
+    return FRAME_DISPLAY_INFO (f)->name_list_element;
+  else
+#endif
+    return Qnil;
+}
+
 #endif /* FONT_DEBUG */
 
 #ifdef HAVE_WINDOW_SYSTEM
@@ -5134,6 +5152,7 @@ syms_of_font (void)
 #if 0
   defsubr (&Sdraw_string);
 #endif
+  defsubr (&Sframe_font_cache);
 #endif /* FONT_DEBUG */
 #ifdef HAVE_WINDOW_SYSTEM
   defsubr (&Sfont_info);
index 2d01c6fecaa3ef394ae61183361cbc408bb3d937..3d0c9d057c6b5612e652ef682094106ec463842c 100644 (file)
@@ -2848,14 +2848,14 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
   /* Provide default values for HEIGHT and WIDTH.  */
   width = (f->new_width
           ? (f->new_pixelwise
-             ? (f->new_width / FRAME_COLUMN_WIDTH (f))
-             : f->new_width)
-          : FRAME_COLS (f));
+             ? f->new_width
+             : (f->new_width * FRAME_COLUMN_WIDTH (f)))
+          : FRAME_TEXT_WIDTH (f));
   height = (f->new_height
            ? (f->new_pixelwise
-              ? (f->new_height / FRAME_LINE_HEIGHT (f))
-              : f->new_height)
-           : FRAME_LINES (f));
+              ? f->new_height
+              : (f->new_height * FRAME_LINE_HEIGHT (f)))
+           : FRAME_TEXT_HEIGHT (f));
 
   /* Process foreground_color and background_color before anything else.
      They are independent of other properties, but other properties (e.g.,
@@ -2899,12 +2899,12 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
       if (EQ (prop, Qwidth) && RANGED_INTEGERP (0, val, INT_MAX))
         {
           size_changed = 1;
-          width = XFASTINT (val);
+          width = XFASTINT (val) * FRAME_COLUMN_WIDTH (f) ;
         }
       else if (EQ (prop, Qheight) && RANGED_INTEGERP (0, val, INT_MAX))
         {
           size_changed = 1;
-          height = XFASTINT (val);
+          height = XFASTINT (val) * FRAME_LINE_HEIGHT (f);
         }
       else if (EQ (prop, Qtop))
        top = val;
@@ -2986,15 +2986,15 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
     Lisp_Object frame;
 
     /* Make this 1, eventually.  */
-    check_frame_size (f, &width, &height, 0);
+    check_frame_size (f, &width, &height, 1);
 
     XSETFRAME (frame, f);
 
     if (size_changed
-        && (width != FRAME_COLS (f)
-            || height != FRAME_LINES (f)
+        && (width != FRAME_TEXT_WIDTH (f)
+            || height != FRAME_TEXT_HEIGHT (f)
             || f->new_height || f->new_width))
-      Fset_frame_size (frame, make_number (width), make_number (height), Qnil);
+      Fset_frame_size (frame, make_number (width), make_number (height), Qt);
 
     if ((!NILP (left) || !NILP (top))
        && ! (left_no_change && top_no_change)
index 12c2357de7719779d8ad05b489a779bf6e2cd701..977abbdbbbd2b664310434f96b25007fbdc4227d 100644 (file)
@@ -38,6 +38,10 @@ License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 #include <w32heap.h>   /* for sbrk */
 #endif
 
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
 #ifdef __cplusplus
 extern "C"
 {
@@ -68,6 +72,10 @@ extern int posix_memalign (void **, size_t, size_t);
 extern void malloc_enable_thread (void);
 #endif
 
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
 /* The allocator divides the heap into blocks of fixed size; large
    requests receive one or more whole blocks, and small requests
    receive a fragment of a block.  Fragment sizes are powers of two,
@@ -1589,23 +1597,32 @@ aligned_alloc (size_t alignment, size_t size)
 
   /* Figure out how much we will need to pad this particular block
      to achieve the required alignment.  */
-  adj = (uintptr_t) result % alignment;
+  adj = alignment - (uintptr_t) result % alignment;
+  if (adj == alignment)
+    adj = 0;
 
-  do
+  if (adj != alignment - 1)
     {
-      /* Reallocate the block with only as much excess as it needs.  */
-      free (result);
-      result = malloc (adj + size);
-      if (result == NULL)      /* Impossible unless interrupted.  */
-       return NULL;
-
-      lastadj = adj;
-      adj = (uintptr_t) result % alignment;
-      /* It's conceivable we might have been so unlucky as to get a
-        different block with weaker alignment.  If so, this block is too
-        short to contain SIZE after alignment correction.  So we must
-        try again and get another block, slightly larger.  */
-    } while (adj > lastadj);
+      do
+       {
+         /* Reallocate the block with only as much excess as it
+            needs.  */
+         free (result);
+         result = malloc (size + adj);
+         if (result == NULL)   /* Impossible unless interrupted.  */
+           return NULL;
+
+         lastadj = adj;
+         adj = alignment - (uintptr_t) result % alignment;
+         if (adj == alignment)
+           adj = 0;
+         /* It's conceivable we might have been so unlucky as to get
+            a different block with weaker alignment.  If so, this
+            block is too short to contain SIZE after alignment
+            correction.  So we must try again and get another block,
+            slightly larger.  */
+       } while (adj > lastadj);
+    }
 
   if (adj != 0)
     {
@@ -1631,7 +1648,7 @@ aligned_alloc (size_t alignment, size_t size)
       if (l != NULL)
        {
          l->exact = result;
-         result = l->aligned = (char *) result + alignment - adj;
+         result = l->aligned = (char *) result + adj;
        }
       UNLOCK_ALIGNED_BLOCKS ();
       if (l == NULL)
@@ -1787,6 +1804,22 @@ freehook (void *ptr)
 
   if (ptr)
     {
+      struct alignlist *l;
+
+      /* If the block was allocated by aligned_alloc, its real pointer
+        to free is recorded in _aligned_blocks; find that.  */
+      PROTECT_MALLOC_STATE (0);
+      LOCK_ALIGNED_BLOCKS ();
+      for (l = _aligned_blocks; l != NULL; l = l->next)
+       if (l->aligned == ptr)
+         {
+           l->aligned = NULL;  /* Mark the slot in the list as free.  */
+           ptr = l->exact;
+           break;
+         }
+      UNLOCK_ALIGNED_BLOCKS ();
+      PROTECT_MALLOC_STATE (1);
+
       hdr = ((struct hdr *) ptr) - 1;
       checkhdr (hdr);
       hdr->magic = MAGICFREE;
@@ -1878,7 +1911,11 @@ mabort (enum mcheck_status status)
 #else
   fprintf (stderr, "mcheck: %s\n", msg);
   fflush (stderr);
+# ifdef emacs
+  emacs_abort ();
+# else
   abort ();
+# endif
 #endif
 }
 
index 6e039c7a1411ae151a5e585ba5f31ee34f12c787..cebff68614ff7a8cfbfd2e97294a5d2720bc4301 100644 (file)
@@ -2106,8 +2106,7 @@ xg_get_font (struct frame *f, const char *default_name)
          font = Ffont_spec (8, args);
 
          pango_font_description_free (desc);
-         xfree (x_last_font_name);
-         x_last_font_name = xstrdup (name);
+         dupstring (&x_last_font_name, name);
        }
 
 #else /* Use old font selector, which just returns the font name.  */
index 9dcb58ae66cd09e0b2f9a134d3341995d8205676..038ce6ea601c39b7f631d44b33fd9bab75fb0c17 100644 (file)
@@ -2891,8 +2891,12 @@ read_char (int commandflag, Lisp_Object map,
     {
       c = read_decoded_event_from_main_queue (end_time, local_getcjmp,
                                               prev_event, used_mouse_menu);
-      if (end_time && timespec_cmp (*end_time, current_timespec ()) <= 0)
-        goto exit;
+      if (NILP(c) && end_time &&
+          timespec_cmp (*end_time, current_timespec ()) <= 0)
+        {
+          goto exit;
+        }
+
       if (EQ (c, make_number (-2)))
         {
          /* This is going to exit from read_char
index a7e80a41c28321cd436f231e6796ef7d13012a02..2f9a30fdfe95b7a55f97b3e01d8279238fb89755 100644 (file)
@@ -4398,6 +4398,7 @@ extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
 
 extern char *xstrdup (const char *);
 extern char *xlispstrdup (Lisp_Object);
+extern void dupstring (char **, char const *);
 extern void xputenv (const char *);
 
 extern char *egetenv (const char *);
index 635862f265482c4225b366aeccfbf2270e5f25c9..4990d25eda1a3f86a61ecc04896951bd97ced252 100644 (file)
@@ -3868,7 +3868,8 @@ DEFUN ("unintern", Funintern, Sunintern, 1, 2, 0,
 The value is t if a symbol was found and deleted, nil otherwise.
 NAME may be a string or a symbol.  If it is a symbol, that symbol
 is deleted, if it belongs to OBARRAY--no other symbol is deleted.
-OBARRAY defaults to the value of the variable `obarray'.  */)
+OBARRAY, if nil, defaults to the value of the variable `obarray'.
+usage: (unintern NAME OBARRAY)  */)
   (Lisp_Object name, Lisp_Object obarray)
 {
   register Lisp_Object string, tem;
index f058541027a634deca1cbadb27f0ebccec930066..8e8a9b7f36fd9b14410c105b38fd93ac470f6f44 100644 (file)
@@ -42,6 +42,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #ifndef MAC_OS_X_VERSION_10_8
 #define MAC_OS_X_VERSION_10_8 1080
 #endif
+#ifndef MAC_OS_X_VERSION_10_9
+#define MAC_OS_X_VERSION_10_9 1090
+#endif
 
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
 #define HAVE_NATIVE_FS
index b8dd8bc8ad272f9a12ed5fc8de06388161f185e4..0e8fc56fdd98b20f9971aa6cff991d2a3f03ed43 100644 (file)
@@ -6963,7 +6963,8 @@ if (cols > 0 && rows > 0)
 {
   /* When making the frame visible for the first time or if there is just
      one screen, we want to constrain.  Other times not.  */
-  NSUInteger nr_screens = [[NSScreen screens] count];
+  NSArray *screens = [NSScreen screens];
+  NSUInteger nr_screens = [screens count], nr_eff_screens = 0, i;
   struct frame *f = ((EmacsView *)[self delegate])->emacsframe;
   NSTRACE (constrainFrameRect);
   NSTRACE_RECT ("input", frameRect);
@@ -6971,6 +6972,31 @@ if (cols > 0 && rows > 0)
   if (ns_menu_bar_should_be_hidden ())
     return frameRect;
 
+  if (nr_screens == 1)
+    return [super constrainFrameRect:frameRect toScreen:screen];
+
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
+  // If separate spaces is on, it is like each screen is independent.  There is
+  // no spanning of frames across screens.
+  if ([NSScreen screensHaveSeparateSpaces])
+    return [super constrainFrameRect:frameRect toScreen:screen];
+#endif
+#endif
+
+  for (i = 0; i < nr_screens; ++i) 
+    {
+      NSScreen *s = [screens objectAtIndex: i];
+      NSRect scrrect = [s frame];
+      NSRect intersect = NSIntersectionRect (frameRect, scrrect);
+
+      if (intersect.size.width > 0 || intersect.size.height > 0)
+        ++nr_eff_screens;
+    }
+
+  if (nr_eff_screens == 1)
+    return [super constrainFrameRect:frameRect toScreen:screen];
+  
   /* The default implementation does two things 1) ensure that the top
      of the rectangle is below the menu bar (or below the top of the
      screen) and 2) resizes windows larger than the screen. As we
index 40ab5db495ad85948d071407bc2528b5f570332f..3de194c505657b609964c5de5b33d47bae66502e 100644 (file)
@@ -715,19 +715,62 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
            examine.  */
        ptrdiff_t tem, ceiling_byte = end_byte - 1;
 
-        /* If we're looking for a newline, consult the newline cache
-           to see where we can avoid some scanning.  */
+        /* If we're using the newline cache, consult it to see whether
+           we can avoid some scanning.  */
         if (newline_cache)
           {
             ptrdiff_t next_change;
+           int result = 1;
+
             immediate_quit = 0;
-            while (region_cache_forward
-                   (cache_buffer, newline_cache, start, &next_change))
-              start = next_change;
+            while (start < end && result)
+             {
+               ptrdiff_t lim1;
+
+               result = region_cache_forward (cache_buffer, newline_cache,
+                                              start, &next_change);
+               if (result)
+                 {
+                   start = next_change;
+                   lim1 = next_change = end;
+                 }
+               else
+                 lim1 = min (next_change, end);
+
+               /* The cache returned zero for this region; see if
+                  this is because the region is known and includes
+                  only newlines.  While at that, count any newlines
+                  we bump into, and exit if we found enough off them.  */
+               start_byte = CHAR_TO_BYTE (start);
+               while (start < lim1
+                      && FETCH_BYTE (start_byte) == '\n')
+                 {
+                   start_byte++;
+                   start++;
+                   if (--count == 0)
+                     {
+                       if (bytepos)
+                         *bytepos = start_byte;
+                       return start;
+                     }
+                 }
+               /* If we found a non-newline character before hitting
+                  position where the cache will again return non-zero
+                  (i.e. no newlines beyond that position), it means
+                  this region is not yet known to the cache, and we
+                  must resort to the "dumb loop" method.  */
+               if (start < next_change && !result)
+                 break;
+               result = 1;
+             }
+           if (start >= end)
+             {
+               start = end;
+               start_byte = end_byte;
+               break;
+             }
             immediate_quit = allow_quit;
 
-           start_byte = CHAR_TO_BYTE (start);
-
             /* START should never be after END.  */
             if (start_byte > ceiling_byte)
               start_byte = ceiling_byte;
@@ -762,9 +805,9 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
              unsigned char *nl = memchr (lim_addr + cursor, '\n', - cursor);
              next = nl ? nl - lim_addr : 0;
 
-              /* If we're looking for newlines, cache the fact that
-                 this line's region is free of them. */
-              if (newline_cache)
+              /* If we're using the newline cache, cache the fact that
+                 the region we just traversed is free of newlines. */
+              if (newline_cache && cursor != next)
                {
                  know_region_cache (cache_buffer, newline_cache,
                                     BYTE_TO_CHAR (lim_byte + cursor),
@@ -800,14 +843,47 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
         if (newline_cache)
           {
             ptrdiff_t next_change;
+           int result = 1;
+
             immediate_quit = 0;
-            while (region_cache_backward
-                   (cache_buffer, newline_cache, start, &next_change))
-              start = next_change;
+            while (start > end && result)
+             {
+               ptrdiff_t lim1;
+
+               result = region_cache_backward (cache_buffer, newline_cache,
+                                               start, &next_change);
+               if (result)
+                 {
+                   start = next_change;
+                   lim1 = next_change = end;
+                 }
+               else
+                 lim1 = max (next_change, end);
+               start_byte = CHAR_TO_BYTE (start);
+               while (start > lim1
+                      && FETCH_BYTE (start_byte - 1) == '\n')
+                 {
+                   if (++count == 0)
+                     {
+                       if (bytepos)
+                         *bytepos = start_byte;
+                       return start;
+                     }
+                   start_byte--;
+                   start--;
+                 }
+               if (start > next_change && !result)
+                 break;
+               result = 1;
+             }
+           if (start <= end)
+             {
+               start = end;
+               start_byte = end_byte;
+               break;
+             }
             immediate_quit = allow_quit;
 
-           start_byte = CHAR_TO_BYTE (start);
-
             /* Start should never be at or before end.  */
             if (start_byte <= ceiling_byte)
               start_byte = ceiling_byte + 1;
@@ -840,7 +916,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
 
               /* If we're looking for newlines, cache the fact that
                  this line's region is free of them. */
-              if (newline_cache)
+              if (newline_cache && cursor != prev + 1)
                {
                  know_region_cache (cache_buffer, newline_cache,
                                     BYTE_TO_CHAR (ceiling_byte + prev + 1),
index 0c40c2d16b9db7b1abfd804b6e38436250cdd635..61a8d39d971833f167483f137342c3d609385970 100644 (file)
@@ -2052,17 +2052,9 @@ tty_default_color_capabilities (struct tty_display_info *tty, bool save)
 
   if (save)
     {
-      xfree (default_orig_pair);
-      default_orig_pair = tty->TS_orig_pair ? xstrdup (tty->TS_orig_pair) : NULL;
-
-      xfree (default_set_foreground);
-      default_set_foreground = tty->TS_set_foreground ? xstrdup (tty->TS_set_foreground)
-                              : NULL;
-
-      xfree (default_set_background);
-      default_set_background = tty->TS_set_background ? xstrdup (tty->TS_set_background)
-                              : NULL;
-
+      dupstring (&default_orig_pair, tty->TS_orig_pair);
+      dupstring (&default_set_foreground, tty->TS_set_foreground);
+      dupstring (&default_set_background, tty->TS_set_background);
       default_max_colors = tty->TN_max_colors;
       default_max_pairs = tty->TN_max_pairs;
       default_no_color_video = tty->TN_no_color_video;
index 11fb2a72f69cd9d03a4b8ac2c32061dd10e1dc6f..8802e13e71df7fa8e82d1bdbfc8f8fe6ef1cef41 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -4745,10 +4745,9 @@ stat_worker (const char * path, struct stat * buf, int follow_symlinks)
       return -1;
     }
 
-  /* Remove trailing directory separator, unless name is the root
-     directory of a drive or UNC volume in which case ensure there
-     is a trailing separator. */
   len = strlen (name);
+  /* Allocate 1 extra byte so that we could append a slash to a root
+     directory, down below.  */
   name = strcpy (alloca (len + 2), name);
 
   /* Avoid a somewhat costly call to is_symlink if the filesystem
@@ -4963,6 +4962,7 @@ stat_worker (const char * path, struct stat * buf, int follow_symlinks)
        }
       else if (rootdir)
        {
+         /* Make sure root directories end in a slash.  */
          if (!IS_DIRECTORY_SEP (name[len-1]))
            strcat (name, "\\");
          if (GetDriveType (name) < 2)
@@ -4978,6 +4978,8 @@ stat_worker (const char * path, struct stat * buf, int follow_symlinks)
        {
          int have_wfd = -1;
 
+         /* Make sure non-root directories do NOT end in a slash,
+            otherwise FindFirstFile might fail.  */
          if (IS_DIRECTORY_SEP (name[len-1]))
            name[len - 1] = 0;
 
@@ -5138,7 +5140,10 @@ fstatat (int fd, char const *name, struct stat *st, int flags)
 
   if (fd != AT_FDCWD)
     {
-      if (_snprintf (fullname, sizeof fullname, "%s/%s", dir_pathname, name)
+      char lastc = dir_pathname[strlen (dir_pathname) - 1];
+
+      if (_snprintf (fullname, sizeof fullname, "%s%s%s",
+                    dir_pathname, IS_DIRECTORY_SEP (lastc) ? "" : "/", name)
          < 0)
        {
          errno = ENAMETOOLONG;
index b77d01796d7d3636c2d474380e4c42520c231f4a..2981320e13630e59f36d38df1272ce76c42d9201 100644 (file)
@@ -4684,6 +4684,10 @@ w32_read_socket (struct terminal *terminal,
                  {
                    bool iconified = FRAME_ICONIFIED_P (f);
 
+                   /* The following was made unconditional in a
+                      pathetic attempt to fix bug#16967 in revision
+                      116716 but, considered counterproductive was made
+                      conditional again in revision 116727.  martin */
                    if (iconified)
                      SET_FRAME_VISIBLE (f, 1);
                    SET_FRAME_ICONIFIED (f, 0);
@@ -5644,6 +5648,31 @@ x_set_window_size (struct frame *f, int change_gravity, int width, int height, b
       pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height);
     }
 
+  if (!frame_resize_pixelwise)
+    {
+      /* If we don't resize frames pixelwise, round sizes to multiples
+        of character sizes.  Otherwise, Windows may clip our frame
+        rectangle at a character size boundary and we risk losing our
+        mode line.  Bug#16923 might be a consequence of this.
+
+        So far, this is a Windows specific problem; other toolkits may
+        prefer to not resize the frame if the delta is not large enough
+        (GTK) or resize the frame pixelwise as requested (Lucid,
+        Motif).  Windows just doesn't call us back (probably because of
+        the size hint settings which it apparently interprets strictly)
+        neither when the user tries to mouse-drag a frame border by,
+        nor when calling `set-frame-size' with a delta of less than the
+        canonical character size.  If w32_enable_frame_resize_hack is
+        enabled (which it now is by default) we'd then below resize the
+        frame's root window in preparation of a WM_SIZE message to come
+        which, however, is not going to happen. */
+      int unit_width = FRAME_COLUMN_WIDTH (f);
+      int unit_height = FRAME_LINE_HEIGHT (f);
+
+      pixelwidth = (pixelwidth / unit_width) * unit_width;
+      pixelheight = (pixelheight / unit_height) * unit_height;
+    }
+
   f->win_gravity = NorthWestGravity;
   x_wm_set_size_hint (f, (long) 0, 0);
 
@@ -5666,39 +5695,40 @@ x_set_window_size (struct frame *f, int change_gravity, int width, int height, b
   }
 
   /* If w32_enable_frame_resize_hack is non-nil, immediately apply the
-     new pixel sizes to the frame and its subwindows.  See discussion
-     of Bug#16028 for why we need this.  */
+     new pixel sizes to the frame and its subwindows.  This approach is
+     fragile because Windows might not honor the resize request issued
+     by my_set_window_pos with a WM_SIZE message (see previous comment).
 
-  if (w32_enable_frame_resize_hack)
-    /* The following mirrors what is done in xterm.c. It appears to be
-     for informing lisp of the new size immediately, while the actual
-     resize will happen asynchronously. But on Windows, the menu bar
-     automatically wraps when the frame is too narrow to contain it,
-     and that causes any calculations made here to come out wrong. The
-     end is some nasty buggy behavior, including the potential loss
-     of the minibuffer.
+     Jason Rumney earlier refused to call change_frame_size right here
+     with the following argument:
+
+     The following mirrors what is done in xterm.c. It appears to be for
+     informing lisp of the new size immediately, while the actual resize
+     will happen asynchronously. But on Windows, the menu bar
+     automatically wraps when the frame is too narrow to contain it, and
+     that causes any calculations made here to come out wrong.  The end
+     is some nasty buggy behavior, including the potential loss of the
+     minibuffer.
 
      Disabling this code is either not sufficient to fix the problems
      completely, or it causes fresh problems, but at least it removes
      the most problematic symptom of the minibuffer becoming unusable.
 
-     -----------------------------------------------------------------
-
-     Now, strictly speaking, we can't be sure that this is accurate,
-     but the window manager will get around to dealing with the size
-     change request eventually, and we'll hear how it went when the
-     ConfigureNotify event gets here.
+     However, as the discussion about how to handle frame size
+     parameters on Windows (Bug#1348, Bug#16028) shows, that cure seems
+     worse than the disease.  In particular, menu bar wrapping looks
+     like a non-issue - maybe so because Windows eventually gets back to
+     us with the correct client rectangle anyway.  But we have to avoid
+     calling change_frame_size with a delta of less than one canoncial
+     character size when frame_resize_pixelwise is nil, as explained in
+     the comment above.  */
 
-     We could just not bother storing any of this information here,
-     and let the ConfigureNotify event set everything up, but that
-     might be kind of confusing to the Lisp code, since size changes
-     wouldn't be reported in the frame parameters until some random
-     point in the future when the ConfigureNotify event arrives.
+  if (w32_enable_frame_resize_hack)
 
-     We pass 1 for DELAY since we can't run Lisp code inside of
-     a BLOCK_INPUT.  */
     {
-      change_frame_size (f, width, height, 0, 1, 0, pixelwise);
+      change_frame_size (f, FRAME_PIXEL_TO_TEXT_WIDTH (f, pixelwidth),
+                        FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelheight),
+                        0, 1, 0, 1);
       SET_FRAME_GARBAGED (f);
 
       /* If cursor was outside the new size, mark it as off.  */
@@ -5707,7 +5737,8 @@ x_set_window_size (struct frame *f, int change_gravity, int width, int height, b
       /* Clear out any recollection of where the mouse highlighting was,
         since it might be in a place that's outside the new frame size.
         Actually checking whether it is outside is a pain in the neck,
-        so don't try--just let the highlighting be done afresh with new size.  */
+        so don't try--just let the highlighting be done afresh with new
+        size.  */
       cancel_mouse_face (f);
     }
 
index 838e775f9186127e6fac498bbb63ec37e9fd318e..bd0fe826e6831769d121a5391b74ab597685273e 100644 (file)
@@ -598,16 +598,18 @@ static void
 update_various_frame_slots (EmacsFrame ew)
 {
   struct frame *f = ew->emacs_frame.frame;
-  struct x_output *x = f->output_data.x;
+
   /* Don't do that: It confuses the check in change_frame_size_1 whether
      the pixel size of the frame changed due to a change of the internal
      border width.  Bug#16736.  */
-#if 0
-  FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
-  FRAME_PIXEL_WIDTH (f) = ew->core.width;
-#endif
-  f->internal_border_width = ew->emacs_frame.internal_border_width;
+  if (false)
+    {
+      struct x_output *x = f->output_data.x;
+      FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
+      FRAME_PIXEL_WIDTH (f) = ew->core.width;
+    }
 
+  f->internal_border_width = ew->emacs_frame.internal_border_width;
 }
 
 static void
@@ -682,13 +684,11 @@ EmacsFrameResize (Widget widget)
 {
   EmacsFrame ew = (EmacsFrame)widget;
   struct frame *f = ew->emacs_frame.frame;
-  struct x_output *x = f->output_data.x;
 
-#if 0  /* Always process resize requests pixelwise.  Frame maximizing
-         should work even when frame_resize_pixelwise is nil.  */
-  if (frame_resize_pixelwise)
+  /* Always process resize requests pixelwise.  Frame maximizing
+     should work even when frame_resize_pixelwise is nil.  */
+  if (true || frame_resize_pixelwise)
     {
-#endif /* 0 */
       int width, height;
 
       pixel_to_text_size (ew, ew->core.width, ew->core.height, &width, &height);
@@ -698,10 +698,10 @@ EmacsFrameResize (Widget widget)
       update_various_frame_slots (ew);
 
       cancel_mouse_face (f);
-#if 0  /* See comment above.  */
     }
   else
     {
+      struct x_output *x = f->output_data.x;
       int columns, rows;
 
       pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows);
@@ -717,7 +717,6 @@ EmacsFrameResize (Widget widget)
          cancel_mouse_face (f);
        }
     }
-#endif /* 0 */
 }
 
 static Boolean
index 0ec1aa963240e0b70bafc45fd9ccdda4b62a329f..f42219cae940e1bc748b27d5fd22878253a42f3e 100644 (file)
@@ -559,7 +559,7 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
        doc: /* Select WINDOW which must be a live window.
 Also make WINDOW's frame the selected frame and WINDOW that frame's
-selected window.  In addition, make WINDOW's buffer current and set that
+selected window.  In addition, make WINDOW's buffer current and set its
 buffer's value of `point' to the value of WINDOW's `window-point'.
 Return WINDOW.
 
@@ -567,8 +567,17 @@ Optional second arg NORECORD non-nil means do not put this buffer at the
 front of the buffer list and do not make this window the most recently
 selected one.
 
-Note that the main editor command loop sets the current buffer to the
-buffer of the selected window before each command.  */)
+Run `buffer-list-update-hook' unless NORECORD is non-nil.  Note that
+applications and internal routines often select a window temporarily for
+various purposes; mostly, to simplify coding.  As a rule, such
+selections should be not recorded and therefore will not pollute
+`buffer-list-update-hook'.  Selections that "really count" are those
+causing a visible change in the next redisplay of WINDOW's frame and
+should be always recorded.  So if you think of running a function each
+time a window gets selected put it on `buffer-list-update-hook'.
+
+Also note that the main editor command loop sets the current buffer to
+the buffer of the selected window before each command.  */)
   (register Lisp_Object window, Lisp_Object norecord)
 {
   return select_window (window, norecord, 0);
@@ -699,9 +708,9 @@ DEFUN ("window-pixel-height", Fwindow_pixel_height, Swindow_pixel_height, 0, 1,
        doc: /* Return the height of window WINDOW in pixels.
 WINDOW must be a valid window and defaults to the selected one.
 
-The return value includes the mode line and header line, if any.  If
-WINDOW is an internal window, its pixel height is the height of the
-screen areas spanned by its children.  */)
+The return value includes the mode line and header line and the bottom
+divider, if any.  If WINDOW is an internal window, its pixel height is
+the height of the screen areas spanned by its children.  */)
   (Lisp_Object window)
 {
   return make_number (decode_valid_window (window)->pixel_height);
@@ -1266,18 +1275,18 @@ coordinates_in_window (register struct window *w, int x, int y)
   if (y < top_y || y >= bottom_y || x < left_x || x >= right_x)
     return ON_NOTHING;
 
-  /* On vertical window divider (which prevails horizontal
-     dividers)?  */
-  if (!WINDOW_RIGHTMOST_P (w)
-      && WINDOW_RIGHT_DIVIDER_WIDTH (w)
-      && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w)
-      && x <= right_x)
-    return ON_RIGHT_DIVIDER;
-  /* On the horizontal window divider?  */
-  else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w)
-          && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w))
-          && y <= bottom_y)
+  /* On the horizontal window divider (which prevails the vertical
+     divider)?  */
+  if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) > 0
+      && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w))
+      && y <= bottom_y)
     return ON_BOTTOM_DIVIDER;
+  /* On vertical window divider?  */
+  else if (!WINDOW_RIGHTMOST_P (w)
+          && WINDOW_RIGHT_DIVIDER_WIDTH (w) > 0
+          && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w)
+          && x <= right_x)
+    return ON_RIGHT_DIVIDER;
   /* On the mode or header line?   */
   else if ((WINDOW_WANTS_MODELINE_P (w)
            && y >= (bottom_y
@@ -1294,12 +1303,13 @@ coordinates_in_window (register struct window *w, int x, int y)
         resize windows horizontally in case we're using toolkit scroll
         bars.  Note: If scrollbars are on the left, the window that
         must be eventually resized is that on the left of WINDOW.  */
-      if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
-          && !WINDOW_LEFTMOST_P (w)
-          && eabs (x - left_x) < grabbable_width)
-         || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
-             && !WINDOW_RIGHTMOST_P (w)
-             && eabs (x - right_x) < grabbable_width))
+      if ((WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0)
+         && ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
+              && !WINDOW_LEFTMOST_P (w)
+              && eabs (x - left_x) < grabbable_width)
+             || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
+                 && !WINDOW_RIGHTMOST_P (w)
+                 && eabs (x - right_x) < grabbable_width)))
        return ON_VERTICAL_BORDER;
       else
        return part;
@@ -1331,6 +1341,7 @@ coordinates_in_window (register struct window *w, int x, int y)
   if (FRAME_WINDOW_P (f))
     {
       if (!w->pseudo_window_p
+         && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
          && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
          && !WINDOW_RIGHTMOST_P (w)
          && (eabs (x - right_x) < grabbable_width))
@@ -1339,6 +1350,7 @@ coordinates_in_window (register struct window *w, int x, int y)
   /* Need to say "x > right_x" rather than >=, since on character
      terminals, the vertical line's x coordinate is right_x.  */
   else if (!w->pseudo_window_p
+          && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
           && !WINDOW_RIGHTMOST_P (w)
           /* Why check ux if we are not the rightmost window?  Also
              shouldn't a pseudo window always be rightmost?  */
@@ -1352,8 +1364,8 @@ coordinates_in_window (register struct window *w, int x, int y)
              ? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w))
              : (x < left_x + lmargin_width)))
        return ON_LEFT_MARGIN;
-
-      return ON_LEFT_FRINGE;
+      else
+       return ON_LEFT_FRINGE;
     }
 
   if (x >= text_right)
@@ -1363,8 +1375,8 @@ coordinates_in_window (register struct window *w, int x, int y)
              ? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w))
              : (x >= right_x - rmargin_width)))
        return ON_RIGHT_MARGIN;
-
-      return ON_RIGHT_FRINGE;
+      else
+       return ON_RIGHT_FRINGE;
     }
 
   /* Everything special ruled out - must be on text area */
@@ -1383,6 +1395,8 @@ window_relative_x_coord (struct window *w, enum window_part part, int x)
     case ON_TEXT:
       return x - window_box_left (w, TEXT_AREA);
 
+    case ON_HEADER_LINE:
+    case ON_MODE_LINE:
     case ON_LEFT_FRINGE:
       return x - left_x;
 
@@ -1419,8 +1433,10 @@ measured in characters from the upper-left corner of the frame.
 frame.
 If COORDINATES are in the text portion of WINDOW,
    the coordinates relative to the window are returned.
+If they are in the bottom divider of WINDOW, `bottom-divider' is returned.
+If they are in the right divider of WINDOW, `right-divider' is returned.
 If they are in the mode line of WINDOW, `mode-line' is returned.
-If they are in the top mode line of WINDOW, `header-line' is returned.
+If they are in the header line of WINDOW, `header-line' is returned.
 If they are in the left fringe of WINDOW, `left-fringe' is returned.
 If they are in the right fringe of WINDOW, `right-fringe' is returned.
 If they are on the border between WINDOW and its right sibling,
@@ -5422,8 +5438,10 @@ specifies the window.  This takes precedence over
   if (MINI_WINDOW_P (XWINDOW (selected_window))
       && !NILP (Vminibuf_scroll_window))
     window = Vminibuf_scroll_window;
-  /* If buffer is specified, scroll that buffer.  */
-  else if (!NILP (Vother_window_scroll_buffer))
+  /* If buffer is specified and live, scroll that buffer.  */
+  else if (!NILP (Vother_window_scroll_buffer)
+          && BUFFERP (Vother_window_scroll_buffer)
+          && BUFFER_LIVE_P (XBUFFER (Vother_window_scroll_buffer)))
     {
       window = Fget_buffer_window (Vother_window_scroll_buffer, Qnil);
       if (NILP (window))
@@ -7190,7 +7208,7 @@ is displayed in the `mode-line' face.  */);
   mode_line_in_non_selected_windows = 1;
 
   DEFVAR_LISP ("other-window-scroll-buffer", Vother_window_scroll_buffer,
-              doc: /* If non-nil, this is a buffer and \\[scroll-other-window] should scroll its window.  */);
+              doc: /* If this is a live buffer, \\[scroll-other-window] should scroll its window.  */);
   Vother_window_scroll_buffer = Qnil;
 
   DEFVAR_BOOL ("auto-window-vscroll", auto_window_vscroll_p,
index c35a64d077413f939c680b26309df1f2c518dee1..b7821eb50487e10bd97cd19688a4877c66804fc8 100644 (file)
@@ -2419,7 +2419,13 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
            }
 
          if (part != ON_MODE_LINE && part != ON_HEADER_LINE)
-           gx += window_box_left_offset (w, area);
+           {
+             gx += window_box_left_offset (w, area);
+             /* Don't expand over the modeline to make sure the vertical
+                drag cursor is shown early enough.  */
+             height = min (height,
+                           max (0, WINDOW_BOX_HEIGHT_NO_MODE_LINE (w) - gy));
+           }
        }
       else
        {
@@ -2427,6 +2433,10 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
          gx = (x / width) * width;
          y -= gy;
          gy += (y / height) * height;
+         if (part != ON_MODE_LINE && part != ON_HEADER_LINE)
+           /* See comment above.  */
+           height = min (height,
+                         max (0, WINDOW_BOX_HEIGHT_NO_MODE_LINE (w) - gy));
        }
       break;
 
@@ -2441,7 +2451,22 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
       gx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
            ? window_box_right_offset (w, RIGHT_MARGIN_AREA)
            : window_box_right_offset (w, TEXT_AREA));
-      width = WINDOW_RIGHT_FRINGE_WIDTH (w);
+      if (WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0
+         && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
+         && !WINDOW_RIGHTMOST_P (w))
+       if (gx < WINDOW_PIXEL_WIDTH (w) - width)
+         /* Make sure the vertical border can get her own glyph to the
+            right of the one we build here.  */
+         width = WINDOW_RIGHT_FRINGE_WIDTH (w) - width;
+       else
+         width = WINDOW_PIXEL_WIDTH (w) - gx;
+      else
+       width = WINDOW_RIGHT_FRINGE_WIDTH (w);
+
+      goto row_glyph;
+
+    case ON_VERTICAL_BORDER:
+      gx = WINDOW_PIXEL_WIDTH (w) - width;
       goto row_glyph;
 
     case ON_SCROLL_BAR:
@@ -2472,6 +2497,21 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
        }
       break;
 
+    case ON_RIGHT_DIVIDER:
+      gx = WINDOW_PIXEL_WIDTH (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w);
+      width = WINDOW_RIGHT_DIVIDER_WIDTH (w);
+      gy = 0;
+      /* The bottom divider prevails. */
+      height = WINDOW_PIXEL_HEIGHT (w) - WINDOW_BOTTOM_DIVIDER_WIDTH (w);
+      goto add_edge;;
+
+    case ON_BOTTOM_DIVIDER:
+      gx = 0;
+      width = WINDOW_PIXEL_WIDTH (w);
+      gy = WINDOW_PIXEL_HEIGHT (w) - WINDOW_BOTTOM_DIVIDER_WIDTH (w);
+      height = WINDOW_BOTTOM_DIVIDER_WIDTH (w);
+      goto add_edge;
+
     default:
       ;
     virtual_glyph:
@@ -2492,6 +2532,7 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
       goto store_rect;
     }
 
+ add_edge:
   gx += WINDOW_LEFT_EDGE_X (w);
   gy += WINDOW_TOP_EDGE_Y (w);
 
@@ -3913,6 +3954,15 @@ handle_face_prop (struct it *it)
             For strings from wrap-prefix and line-prefix properties,
             use the default face, possibly remapped via
             Vface_remapping_alist.  */
+         /* Note that the fact that we use the face at _buffer_
+            position means that a 'display' property on an overlay
+            string will not inherit the face of that overlay string,
+            but will instead revert to the face of buffer text
+            covered by the overlay.  This is visible, e.g., when the
+            overlay specifies a box face, but neither the buffer nor
+            the display string do.  This sounds like a design bug,
+            but Emacs always did that since v21.1, so changing that
+            might be a big deal.  */
          base_face_id = it->string_from_prefix_prop_p
            ? (!NILP (Vface_remapping_alist)
               ? lookup_basic_face (it->f, DEFAULT_FACE_ID)
@@ -5946,7 +5996,16 @@ pop_it (struct it *it)
       it->object = it->w->contents;
       break;
     case GET_FROM_STRING:
-      it->object = it->string;
+      {
+       struct face *face = FACE_FROM_ID (it->f, it->face_id);
+
+       /* Restore the face_box_p flag, since it could have been
+          overwritten by the face of the object that we just finished
+          displaying.  */
+       if (face)
+         it->face_box_p = face->box != FACE_NO_BOX;
+       it->object = it->string;
+      }
       break;
     case GET_FROM_DISPLAY_VECTOR:
       if (it->s)
@@ -7033,21 +7092,44 @@ get_next_display_element (struct it *it)
                 If this is the last string character displayed, check
                 the next buffer location.  */
              else if ((IT_STRING_CHARPOS (*it) >= SCHARS (it->string) - 1)
-                      && (it->current.overlay_string_index
-                          == it->n_overlay_strings - 1))
+                      /* n_overlay_strings is unreliable unless
+                         overlay_string_index is non-negative.  */
+                      && ((it->current.overlay_string_index >= 0
+                           && (it->current.overlay_string_index
+                               == it->n_overlay_strings - 1))
+                          /* A string from display property.  */
+                          || it->from_disp_prop_p))
                {
                  ptrdiff_t ignore;
                  int next_face_id;
                  struct text_pos pos = it->current.pos;
-                 INC_TEXT_POS (pos, it->multibyte_p);
 
-                 next_face_id = face_at_buffer_position
-                   (it->w, CHARPOS (pos), &ignore,
-                    (IT_CHARPOS (*it) + TEXT_PROP_DISTANCE_LIMIT), 0,
-                    -1);
-                 it->end_of_box_run_p
-                   = (FACE_FROM_ID (it->f, next_face_id)->box
-                      == FACE_NO_BOX);
+                 /* For a string from a display property, the next
+                    buffer position is stored in the 'position'
+                    member of the iteration stack slot below the
+                    current one, see handle_single_display_spec.  By
+                    contrast, it->current.pos was is not yet updated
+                    to point to that buffer position; that will
+                    happen in pop_it, after we finish displaying the
+                    current string.  Note that we already checked
+                    above that it->sp is positive, so subtracting one
+                    from it is safe.  */
+                 if (it->from_disp_prop_p)
+                   pos = (it->stack + it->sp - 1)->position;
+                 else
+                   INC_TEXT_POS (pos, it->multibyte_p);
+
+                 if (CHARPOS (pos) >= ZV)
+                   it->end_of_box_run_p = true;
+                 else
+                   {
+                     next_face_id = face_at_buffer_position
+                       (it->w, CHARPOS (pos), &ignore,
+                        CHARPOS (pos) + TEXT_PROP_DISTANCE_LIMIT, 0, -1);
+                     it->end_of_box_run_p
+                       = (FACE_FROM_ID (it->f, next_face_id)->box
+                          == FACE_NO_BOX);
+                   }
                }
            }
        }
@@ -8569,7 +8651,12 @@ move_it_in_display_line_to (struct it *it,
                         doesn't fit on the line, e.g. a wide image.  */
                      it->hpos == 0
                      || (new_x == it->last_visible_x
-                         && FRAME_WINDOW_P (it->f)))
+                         && FRAME_WINDOW_P (it->f)
+                         /* When word-wrap is ON and we have a valid
+                            wrap point, we don't allow the last glyph
+                            to "just barely fit" on the line.  */
+                         && (it->line_wrap != WORD_WRAP
+                             || wrap_it.sp < 0)))
                    {
                      ++it->hpos;
                      it->current_x = new_x;
@@ -9513,19 +9600,23 @@ character.  TO, if non-nil, specifies the last text position and
 defaults to the maximum accessible position of the buffer.  If TO is t,
 use the maximum accessible position that is not a newline character.
 
-The optional argument X_LIMIT, if non-nil, specifies the maximum text
-width that can be returned.  X_LIMIT nil or omitted, means to use the
+The optional argument X-LIMIT, if non-nil, specifies the maximum text
+width that can be returned.  X-LIMIT nil or omitted, means to use the
 pixel-width of WINDOW's body; use this if you do not intend to change
 the width of WINDOW.  Use the maximum width WINDOW may assume if you
-intend to change WINDOW's width.
+intend to change WINDOW's width.  In any case, text whose x-coordinate
+is beyond X-LIMIT is ignored.  Since calculating the width of long lines
+can take some time, it's always a good idea to make this argument as
+small as possible; in particular, if the buffer contains long lines that
+shall be truncated anyway.
 
-The optional argument Y_LIMIT, if non-nil, specifies the maximum text
+The optional argument Y-LIMIT, if non-nil, specifies the maximum text
 height that can be returned.  Text lines whose y-coordinate is beyond
-Y_LIMIT are ignored.  Since calculating the text height of a large
+Y-LIMIT are ignored.  Since calculating the text height of a large
 buffer can take some time, it makes sense to specify this argument if
 the size of the buffer is unknown.
 
-Optional argument MODE_AND_HEADER_LINE nil or omitted means do not
+Optional argument MODE-AND-HEADER-LINE nil or omitted means do not
 include the height of the mode- or header-line of WINDOW in the return
 value.  If it is either the symbol `mode-line' or `header-line', include
 only the height of that line, if present, in the return value.  If t,
@@ -20775,6 +20866,30 @@ Value is the new character position of point.  */)
              move_it_by_lines (&it, -1);
              target_x = it.last_visible_x - !FRAME_WINDOW_P (it.f);
              target_is_eol_p = true;
+             /* Under word-wrap, we don't know the x coordinate of
+                the last character displayed on the previous line,
+                which immediately precedes the wrap point.  To find
+                out its x coordinate, we try moving to the right
+                margin of the window, which will stop at the wrap
+                point, and then reset target_x to point at the
+                character that precedes the wrap point.  This is not
+                needed on GUI frames, because (see below) there we
+                move from the left margin one grapheme cluster at a
+                time, and stop when we hit the wrap point.  */
+             if (!FRAME_WINDOW_P (it.f) && it.line_wrap == WORD_WRAP)
+               {
+                 void *it_data = NULL;
+                 struct it it2;
+
+                 SAVE_IT (it2, it, it_data);
+                 move_it_in_display_line_to (&it, ZV, target_x,
+                                             MOVE_TO_POS | MOVE_TO_X);
+                 /* If we arrived at target_x, that _is_ the last
+                    character on the previous line.  */
+                 if (it.current_x != target_x)
+                   target_x = it.current_x - 1;
+                 RESTORE_IT (&it, &it2, it_data);
+               }
            }
        }
       else
@@ -20813,7 +20928,12 @@ Value is the new character position of point.  */)
            new_pos = it.current.pos;
 
          while (it.current_x + it.pixel_width <= target_x
-                && rc == MOVE_X_REACHED)
+                && (rc == MOVE_X_REACHED
+                    /* Under word-wrap, move_it_in_display_line_to
+                       stops at correct coordinates, but sometimes
+                       returns MOVE_POS_MATCH_OR_ZV.  */
+                    || (it.line_wrap == WORD_WRAP
+                        && rc == MOVE_POS_MATCH_OR_ZV)))
            {
              int new_x = it.current_x + it.pixel_width;
 
@@ -28367,6 +28487,10 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
       /* Change the mouse pointer according to what is under it.  */
       if (FRAME_WINDOW_P (f))
        {
+         bool draggable = (! WINDOW_BOTTOMMOST_P (w)
+                           || minibuf_level
+                           || NILP (Vresize_mini_windows));
+
          dpyinfo = FRAME_DISPLAY_INFO (f);
          if (STRINGP (string))
            {
@@ -28383,11 +28507,11 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
                  map = Fget_text_property (pos, Qlocal_map, string);
                  if (!KEYMAPP (map))
                    map = Fget_text_property (pos, Qkeymap, string);
-                 if (!KEYMAPP (map))
+                 if (!KEYMAPP (map) && draggable)
                    cursor = dpyinfo->vertical_scroll_bar_cursor;
                }
            }
-         else
+         else if (draggable)
            /* Default mode-line pointer.  */
            cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
        }
@@ -28631,10 +28755,15 @@ note_mouse_highlight (struct frame *f, int x, int y)
       help_echo_string = build_string ("drag-mouse-1: resize");
     }
   else if (part == ON_BOTTOM_DIVIDER)
-    {
-      cursor = FRAME_X_OUTPUT (f)->vertical_drag_cursor;
-      help_echo_string = build_string ("drag-mouse-1: resize");
-    }
+    if (! WINDOW_BOTTOMMOST_P (w)
+       || minibuf_level
+       || NILP (Vresize_mini_windows))
+      {
+       cursor = FRAME_X_OUTPUT (f)->vertical_drag_cursor;
+       help_echo_string = build_string ("drag-mouse-1: resize");
+      }
+    else
+      cursor = FRAME_X_OUTPUT (f)->nontext_cursor;
   else if (part == ON_LEFT_FRINGE || part == ON_RIGHT_FRINGE
           || part == ON_SCROLL_BAR)
     cursor = FRAME_X_OUTPUT (f)->nontext_cursor;
index ff492dcf12612a091fcc7647b591b5fa02156101..5dbc7053fd9ff87a22705cec098a5e42d65667af 100644 (file)
@@ -716,6 +716,7 @@ x_set_mouse_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
     XRecolorCursor (dpy, hand_cursor, &fore_color, &back_color);
     XRecolorCursor (dpy, hourglass_cursor, &fore_color, &back_color);
     XRecolorCursor (dpy, horizontal_drag_cursor, &fore_color, &back_color);
+    XRecolorCursor (dpy, vertical_drag_cursor, &fore_color, &back_color);
   }
 
   if (FRAME_X_WINDOW (f) != 0)
index 3295a62bbb092cab11c61118a9f5af208e404ab4..525f00031c5b371eb4ea7ca4ccc048431bc4e132 100644 (file)
@@ -42,6 +42,7 @@ struct xfont_info
   struct font font;
   Display *display;
   XFontStruct *xfont;
+  unsigned x_display_id;
 };
 
 /* Prototypes of support functions.  */
@@ -808,6 +809,7 @@ xfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
   font = XFONT_OBJECT (font_object);
   ((struct xfont_info *) font)->xfont = xfont;
   ((struct xfont_info *) font)->display = FRAME_X_DISPLAY (f);
+  ((struct xfont_info *) font)->x_display_id = FRAME_DISPLAY_INFO (f)->x_id;
   font->pixel_size = pixel_size;
   font->driver = &xfont_driver;
   font->encoding_charset = encoding->id;
@@ -892,12 +894,20 @@ xfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
 static void
 xfont_close (struct font *font)
 {
+  struct x_display_info *xdi;
   struct xfont_info *xfi = (struct xfont_info *) font;
 
   /* This function may be called from GC when X connection is gone
      (Bug#16093), and an attempt to free font resources on invalid
-     display may lead to X protocol errors or segfaults.  */
-  if (xfi->xfont && x_display_info_for_display (xfi->display))
+     display may lead to X protocol errors or segfaults.  Moreover,
+     the memory referenced by 'Display *' pointer may be reused for
+     the logically different X connection after the previous display
+     connection was closed.  That's why we also check whether font's
+     ID matches the one recorded in x_display_info for this display.
+     See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16069.  */
+  if (xfi->xfont
+      && ((xdi = x_display_info_for_display (xfi->display))
+         && xfi->x_display_id == xdi->x_id))
     {
       block_input ();
       XFreeFont (xfi->display, xfi->xfont);
index 32816b97f23ba8c659c88cf2467ddae693952f05..18c180f906a0a46fb376c3b37cff67d13713b60b 100644 (file)
@@ -59,6 +59,7 @@ struct xftfont_info
   FT_Matrix matrix;
   Display *display;
   XftFont *xftfont;
+  unsigned x_display_id;
 };
 
 /* Structure pointed by (struct face *)->extra  */
@@ -372,6 +373,7 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
   xftfont_info = (struct xftfont_info *) font;
   xftfont_info->display = display;
   xftfont_info->xftfont = xftfont;
+  xftfont_info->x_display_id = FRAME_DISPLAY_INFO (f)->x_id;
   /* This means that there's no need of transformation.  */
   xftfont_info->matrix.xx = 0;
   if (FcPatternGetMatrix (xftfont->pattern, FC_MATRIX, 0, &matrix)
@@ -481,6 +483,7 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
 static void
 xftfont_close (struct font *font)
 {
+  struct x_display_info *xdi;
   struct xftfont_info *xftfont_info = (struct xftfont_info *) font;
 
 #ifdef HAVE_LIBOTF
@@ -493,7 +496,8 @@ xftfont_close (struct font *font)
 
   /* See comment in xfont_close.  */
   if (xftfont_info->xftfont
-      && x_display_info_for_display (xftfont_info->display))
+      && ((xdi = x_display_info_for_display (xftfont_info->display))
+         && xftfont_info->x_display_id == xdi->x_id))
     {
       block_input ();
       XftUnlockFace (xftfont_info->xftfont);
index a281414610a9ab1e7f252155c32c7934779b668e..1d3f916c9f8284fdc88cf18c7ca7b36d343bd890 100644 (file)
@@ -25,6 +25,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <glib.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <timespec.h>
 #include "frame.h"
 
@@ -43,6 +44,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
   int gfds_size = sizeof gfds_buf / sizeof *gfds_buf;
   int n_gfds, retval = 0, our_fds = 0, max_fds = fds_lim - 1;
   int i, nfds, tmo_in_millisec;
+  bool need_to_dispatch;
   USE_SAFE_ALLOCA;
 
   /* Do not try to optimize with an initial check with g_main_context_pending
@@ -127,10 +129,17 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
   /* If Gtk+ is in use eventually gtk_main_iteration will be called,
      unless retval is zero.  */
 #ifdef USE_GTK
-  if (retval == 0)
+  need_to_dispatch = retval == 0;
+#else
+  need_to_dispatch = true;
 #endif
-    while (g_main_context_pending (context))
-      g_main_context_dispatch (context);
+  if (need_to_dispatch)
+    {
+      int pselect_errno = errno;
+      while (g_main_context_pending (context))
+       g_main_context_dispatch (context);
+      errno = pselect_errno;
+    }
 
   /* To not have to recalculate timeout, return like this.  */
   if ((our_fds > 0 || (nfds == 0 && tmop == &tmo)) && (retval == 0))
index 458c3d45e9aa0fcbf493c0cb83305950bfc7f20a..844da19f638e46000ab0d3540fba3dbbe9378683 100644 (file)
@@ -91,8 +91,7 @@ store_monospaced_changed (const char *newfont)
   if (current_mono_font != NULL && strcmp (newfont, current_mono_font) == 0)
     return; /* No change. */
 
-  xfree (current_mono_font);
-  current_mono_font = xstrdup (newfont);
+  dupstring (&current_mono_font, newfont);
 
   if (dpyinfo_valid (first_dpyinfo) && use_system_font)
     {
@@ -111,8 +110,7 @@ store_font_name_changed (const char *newfont)
   if (current_font != NULL && strcmp (newfont, current_font) == 0)
     return; /* No change. */
 
-  xfree (current_font);
-  current_font = xstrdup (newfont);
+  dupstring (&current_font, newfont);
 
   if (dpyinfo_valid (first_dpyinfo))
     {
@@ -492,13 +490,13 @@ parse_settings (unsigned char *prop,
           ++settings_seen;
           if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
             {
-              settings->tb_style = xstrdup (sval);
+              dupstring (&settings->tb_style, sval);
               settings->seen |= SEEN_TB_STYLE;
             }
 #ifdef HAVE_XFT
           else if (strcmp (name, XSETTINGS_FONT_NAME) == 0)
             {
-              settings->font = xstrdup (sval);
+              dupstring (&settings->font, sval);
               settings->seen |= SEEN_FONT;
             }
           else if (strcmp (name, "Xft/Antialias") == 0)
@@ -742,10 +740,7 @@ read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
       if (send_event_p)
         store_font_name_changed (settings.font);
       else
-        {
-          xfree (current_font);
-          current_font = xstrdup (settings.font);
-        }
+       dupstring (&current_font, settings.font);
       xfree (settings.font);
     }
 #endif
@@ -835,7 +830,7 @@ init_gsettings (void)
     {
       g_variant_ref_sink (val);
       if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
-        current_mono_font = xstrdup (g_variant_get_string (val, NULL));
+       dupstring (&current_mono_font, g_variant_get_string (val, NULL));
       g_variant_unref (val);
     }
 
@@ -844,7 +839,7 @@ init_gsettings (void)
     {
       g_variant_ref_sink (val);
       if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
-        current_font = xstrdup (g_variant_get_string (val, NULL));
+        dupstring (&current_font, g_variant_get_string (val, NULL));
       g_variant_unref (val);
     }
 #endif /* HAVE_XFT */
@@ -886,13 +881,13 @@ init_gconf (void)
   s = gconf_client_get_string (gconf_client, GCONF_MONO_FONT, NULL);
   if (s)
     {
-      current_mono_font = xstrdup (s);
+      dupstring (&current_mono_font, s);
       g_free (s);
     }
   s = gconf_client_get_string (gconf_client, GCONF_FONT_NAME, NULL);
   if (s)
     {
-      current_font = xstrdup (s);
+      dupstring (&current_font, s);
       g_free (s);
     }
   gconf_client_add_dir (gconf_client,
index e1873127276eb20e27dfc8f2d730c6ce0f79e200..8ae26344f95b230ce5b7c97090273153c1f1820b 100644 (file)
@@ -2501,6 +2501,8 @@ x_draw_stretch_glyph_string (struct glyph_string *s)
              XFillRectangle (s->display, s->window, gc, x, y, w, h);
              XSetForeground (s->display, gc, xgcv.foreground);
            }
+
+         XSetClipMask (s->display, gc, None);
        }
     }
   else if (!s->background_filled_p)
@@ -7953,17 +7955,18 @@ xim_initialize (struct x_display_info *dpyinfo, char *resource_name)
     {
 #ifdef HAVE_X11R6_XIM
       struct xim_inst_t *xim_inst = xmalloc (sizeof *xim_inst);
+      Bool ret;
 
       dpyinfo->xim_callback_data = xim_inst;
       xim_inst->dpyinfo = dpyinfo;
       xim_inst->resource_name = xstrdup (resource_name);
-      XRegisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb,
-                                     resource_name, emacs_class,
-                                     xim_instantiate_callback,
-                                     /* This is XPointer in XFree86
-                                        but (XPointer *) on Tru64, at
-                                        least, hence the configure test.  */
-                                     (XRegisterIMInstantiateCallback_arg6) xim_inst);
+      ret = XRegisterIMInstantiateCallback
+       (dpyinfo->display, dpyinfo->xrdb, xim_inst->resource_name,
+        emacs_class, xim_instantiate_callback,
+        /* This is XPointer in XFree86 but (XPointer *)
+           on Tru64, at least, hence the configure test.  */
+        (XRegisterIMInstantiateCallback_arg6) xim_inst);
+      eassert (ret == True);
 #else /* not HAVE_X11R6_XIM */
       xim_open_dpy (dpyinfo, resource_name);
 #endif /* not HAVE_X11R6_XIM */
@@ -7981,12 +7984,18 @@ xim_close_dpy (struct x_display_info *dpyinfo)
   if (use_xim)
     {
 #ifdef HAVE_X11R6_XIM
+      struct xim_inst_t *xim_inst = dpyinfo->xim_callback_data;
+      
       if (dpyinfo->display)
-       XUnregisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb,
-                                         NULL, emacs_class,
-                                         xim_instantiate_callback, NULL);
-      xfree (dpyinfo->xim_callback_data->resource_name);
-      xfree (dpyinfo->xim_callback_data);
+       {
+         Bool ret = XUnregisterIMInstantiateCallback
+           (dpyinfo->display, dpyinfo->xrdb, xim_inst->resource_name,
+            emacs_class, xim_instantiate_callback,
+            (XRegisterIMInstantiateCallback_arg6) xim_inst);
+         eassert (ret == True);
+       }
+      xfree (xim_inst->resource_name);
+      xfree (xim_inst);
 #endif /* HAVE_X11R6_XIM */
       if (dpyinfo->display)
        XCloseIM (dpyinfo->xim);
@@ -9296,6 +9305,22 @@ x_free_frame_resources (struct frame *f)
          f->output_data.x->black_relief.gc = 0;
        }
 
+      /* Free cursors.  */
+      if (f->output_data.x->text_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->text_cursor);
+      if (f->output_data.x->nontext_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->nontext_cursor);
+      if (f->output_data.x->modeline_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->modeline_cursor);
+      if (f->output_data.x->hand_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->hand_cursor);
+      if (f->output_data.x->hourglass_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->hourglass_cursor);
+      if (f->output_data.x->horizontal_drag_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->horizontal_drag_cursor);
+      if (f->output_data.x->vertical_drag_cursor != 0)
+       XFreeCursor (FRAME_X_DISPLAY (f), f->output_data.x->vertical_drag_cursor);
+
       XFlush (FRAME_X_DISPLAY (f));
     }
 
@@ -9679,6 +9704,10 @@ my_log_handler (const gchar *log_domain, GLogLevelFlags log_level,
 }
 #endif
 
+/* Current X display connection identifier.  Incremented for each next
+   connection established.  */
+static unsigned x_display_id;
+
 /* Open a connection to X display DISPLAY_NAME, and return
    the structure that describes the open display.
    If we cannot contact the display, return null.  */
@@ -9896,6 +9925,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
   lim = min (PTRDIFF_MAX, SIZE_MAX) - sizeof "@";
   if (lim - SBYTES (Vinvocation_name) < SBYTES (Vsystem_name))
     memory_full (SIZE_MAX);
+  dpyinfo->x_id = ++x_display_id;
   dpyinfo->x_id_name = xmalloc (SBYTES (Vinvocation_name)
                                + SBYTES (Vsystem_name) + 2);
   strcat (strcat (strcpy (dpyinfo->x_id_name, SSDATA (Vinvocation_name)), "@"),
index 3e79d46702c60a4bf588331388abfdc479cac780..50df88cb592e044699a03c342ce398394d829676 100644 (file)
@@ -198,6 +198,10 @@ struct x_display_info
      mouse-face.  */
   Mouse_HLInfo mouse_highlight;
 
+  /* Logical identifier of this display.  */
+  unsigned x_id;
+
+  /* Default name for all frames on this display.  */
   char *x_id_name;
 
   /* The number of fonts opened for this display.  */
index cf246b7eda95b00da998993f77437c43d1dd388a..c87022cd9485e49f3489aa7da9a29df05091844d 100644 (file)
@@ -1,3 +1,43 @@
+2014-03-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * automated/tramp-tests.el (tramp-copy-size-limit): Declare.
+       (tramp-test10-write-region): Extend for out-of-band copy.
+       (tramp-test31-asynchronous-requests): New test.
+
+2014-03-02  Barry O'Reilly  <gundaetiapo@gmail.com>
+
+       * automated/undo-tests.el (undo-test-in-region-not-most-recent):
+       Add new test of undo in region.
+       (undo-test-in-region-eob): Add test case described at
+       http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16411
+
+2014-02-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * automated/tramp-tests.el (tramp--test-enabled)
+       (tramp-test15-copy-directory): No special handling of tramp-adb.el
+       anymore.  It's fixed in that package.
+
+2014-02-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * automated/tramp-tests.el (tramp--test-enabled): Move connection
+       cleanup into this function.  Remove respective code from all test
+       cases.
+       (tramp--instrument-test-case): Declare `indent' and `debug'.
+       Handle other errors as well.
+       (tramp-test14-delete-directory): Check for `file-error' error.
+       (tramp-test15-copy-directory): Ignore return value of
+       `copy-directory'.  It's too much hassle to handle it for tramp-adb.el.
+       (tramp-test19-directory-files-and-attributes): Take care of
+       timestamp of "../".
+       (tramp-test20-file-modes, tramp-test27-start-file-process)
+       (tramp-test28-shell-command): Skip for tramp-adb.el.
+       (tramp-test21-file-links): `file-truename' shall preserve trailing
+       link of directories.
+       (tramp-test22-file-times): Skip if `set-file-times' returns nil.
+       (tramp-test26-process-file, tramp-test28-shell-command): Let-bind
+       `kill-buffer-query-functions' to nil.
+       (tramp-test28-shell-command): Run `async-shell-command' with timeouts.
+
 2014-02-21  Michael Albinus  <michael.albinus@gmx.de>
 
        * automated/tramp-tests.el
        (tramp-test20-file-modes, tramp-test21-file-links)
        (tramp-test22-file-times, tramp-test23-visited-file-modtime)
        (tramp-test24-file-name-completion, tramp-test25-load)
-       (tramp-test26-process-file, tramp-test27-start-file-process):
+       (tramp-test26-process-file, tramp-test27-start-file-process)
        (tramp-test28-shell-command): Protect unwindforms with `ignore-errors'.
        (tramp-test29-utf8): New test.
 
        * automated/tramp-tests.el (tramp-test-temporary-file-directory):
        Check $TRAMP_TEST_TEMPORARY_FILE_DIRECTORY.
        (tramp-read-passwd): Check $TRAMP_TEST_ALLOW_PASSWORD.
-       (tramp-test09-insert-file-contents, tramp-test10-write-region):
+       (tramp-test09-insert-file-contents, tramp-test10-write-region)
        (tramp-test26-process-file): Add tests.
        (tramp-test11-copy-file): Remove debug message.
        (tramp-test20-file-modes): Special case, if user is "root".
        Add icalendar-testsuite--test-datestring-to-isodate,
        icalendar-testsuite--test-datetime-to-diary-date, and
        icalendar-testsuite--test-calendar-style.
-       (icalendar-testsuite--test-format-ical-event):
+       (icalendar-testsuite--test-format-ical-event)
        (icalendar-testsuite--test-parse-summary-and-rest):
        Doc fix.  Remove european-calendar-style.
        (icalendar-testsuite--get-ical-event): Doc fix.
-       (icalendar-testsuite--test-first-weekday-of-year):
+       (icalendar-testsuite--test-first-weekday-of-year)
        (icalendar-testsuite--run-cycle-tests): Add doc string.
-       (icalendar-testsuite--test-datestring-to-isodate):
-       (icalendar-testsuite--test-datetime-to-diary-date):
+       (icalendar-testsuite--test-datestring-to-isodate)
+       (icalendar-testsuite--test-datetime-to-diary-date)
        (icalendar-testsuite--test-calendar-style): New functions.
        (icalendar-testsuite--test-export): Handle iso date style.
        New arg INPUT-ISO.  Use calendar-date-style.
        (icalendar-testsuite--test-import): Handle iso date style.
        New arg EXPECTED-ISO.  Use calendar-date-style.
        (icalendar-testsuite--test-cycle): Handle iso date style.
-       (icalendar-testsuite--run-import-tests):
-       (icalendar-testsuite--run-export-tests):
+       (icalendar-testsuite--run-import-tests)
+       (icalendar-testsuite--run-export-tests)
        (icalendar-testsuite--run-real-world-tests): Add iso style tests.
 
 2008-02-29  Glenn Morris  <rgm@gnu.org>
index d93fc78f86c89e832408e8b1ec483592d2ecb670..7bf0ab4e9c86ef08f584f811c0e1cbccc9078816 100644 (file)
@@ -44,6 +44,7 @@
 
 (declare-function tramp-find-executable "tramp-sh")
 (declare-function tramp-get-remote-path "tramp-sh")
+(defvar tramp-copy-size-limit)
 
 ;; There is no default value on w32 systems, which could work out of the box.
 (defconst tramp-test-temporary-file-directory
@@ -81,6 +82,13 @@ being the result.")
           (file-remote-p tramp-test-temporary-file-directory)
           (file-directory-p tramp-test-temporary-file-directory)
           (file-writable-p tramp-test-temporary-file-directory))))))
+
+  (when (cdr tramp--test-enabled-checked)
+    ;; Cleanup connection.
+    (tramp-cleanup-connection
+     (tramp-dissect-file-name tramp-test-temporary-file-directory)
+     nil 'keep-password))
+
   ;; Return result.
   (cdr tramp--test-enabled-checked))
 
@@ -93,15 +101,21 @@ being the result.")
   "Run BODY with `tramp-verbose' equal VERBOSE.
 Print the the content of the Tramp debug buffer, if BODY does not
 eval properly in `should', `should-not' or `should-error'."
-  `(let ((tramp-verbose ,verbose))
+  (declare (indent 1) (debug (natnump body)))
+  `(let ((tramp-verbose ,verbose)
+        (tramp-debug-on-error t))
      (condition-case err
         (progn ,@body)
-       (ert-test-failed
+       (ert-test-skipped
+       (signal (car err) (cdr err)))
+       (error
        (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
+         (with-current-buffer (tramp-get-connection-buffer v)
+           (message "%s" (buffer-string)))
          (with-current-buffer (tramp-get-debug-buffer v)
            (message "%s" (buffer-string))))
+       (message "%s" err)
        (signal (car err) (cdr err))))))
-(put 'tramp--instrument-test-case 'lisp-indent-function 1)
 
 (ert-deftest tramp-test00-availability ()
   "Test availability of Tramp functions."
@@ -571,9 +585,6 @@ and `file-name-nondirectory'."
 (ert-deftest tramp-test07-file-exists-p ()
   "Check `file-exist-p', `write-region' and `delete-file'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (should-not (file-exists-p tmp-name))
@@ -585,9 +596,6 @@ and `file-name-nondirectory'."
 (ert-deftest tramp-test08-file-local-copy ()
   "Check `file-local-copy'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name1 (tramp--test-make-temp-name))
        tmp-name2)
@@ -605,9 +613,6 @@ and `file-name-nondirectory'."
 (ert-deftest tramp-test09-insert-file-contents ()
   "Check `insert-file-contents'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -629,9 +634,6 @@ and `file-name-nondirectory'."
 (ert-deftest tramp-test10-write-region ()
   "Check `write-region'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -660,15 +662,20 @@ and `file-name-nondirectory'."
            (write-region 3 5 tmp-name))
          (with-temp-buffer
            (insert-file-contents tmp-name)
-           (should (string-equal (buffer-string) "34"))))
-     (ignore-errors (delete-file tmp-name)))))
+           (should (string-equal (buffer-string) "34")))
+         ;; Trigger out-of-band copy.
+         (let ((string ""))
+           (while (<= (length string) tramp-copy-size-limit)
+             (setq string (concat string (md5 string))))
+           (write-region string nil tmp-name)
+           (with-temp-buffer
+             (insert-file-contents tmp-name)
+             (should (string-equal (buffer-string) string)))))
+      (ignore-errors (delete-file tmp-name)))))
 
 (ert-deftest tramp-test11-copy-file ()
   "Check `copy-file'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name1 (tramp--test-make-temp-name))
        (tmp-name2 (tramp--test-make-temp-name)))
@@ -687,9 +694,6 @@ and `file-name-nondirectory'."
 (ert-deftest tramp-test12-rename-file ()
   "Check `rename-file'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name1 (tramp--test-make-temp-name))
        (tmp-name2 (tramp--test-make-temp-name)))
@@ -708,9 +712,6 @@ and `file-name-nondirectory'."
   "Check `make-directory'.
 This tests also `file-directory-p' and `file-accessible-directory-p'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -723,9 +724,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
 (ert-deftest tramp-test14-delete-directory ()
   "Check `delete-directory'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     ;; Delete empty directory.
@@ -736,16 +734,13 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
     ;; Delete non-empty directory.
     (make-directory tmp-name)
     (write-region "foo" nil (expand-file-name "bla" tmp-name))
-    (should-error (delete-directory tmp-name))
+    (should-error (delete-directory tmp-name) :type 'file-error)
     (delete-directory tmp-name 'recursive)
     (should-not (file-directory-p tmp-name))))
 
 (ert-deftest tramp-test15-copy-directory ()
   "Check `copy-directory'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let* ((tmp-name1 (tramp--test-make-temp-name))
         (tmp-name2 (tramp--test-make-temp-name))
@@ -775,9 +770,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
 (ert-deftest tramp-test16-directory-files ()
   "Check `directory-files'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let* ((tmp-name1 (tramp--test-make-temp-name))
         (tmp-name2 (expand-file-name "bla" tmp-name1))
@@ -806,9 +798,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
 (ert-deftest tramp-test17-insert-directory ()
   "Check `insert-directory'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let* ((tmp-name1 (tramp--test-make-temp-name))
         (tmp-name2 (expand-file-name "foo" tmp-name1)))
@@ -844,9 +833,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
   "Check `file-attributes'.
 This tests also `file-readable-p' and `file-regular-p'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name))
        attr)
@@ -889,39 +875,35 @@ This tests also `file-readable-p' and `file-regular-p'."
 (ert-deftest tramp-test19-directory-files-and-attributes ()
   "Check `directory-files-and-attributes'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
-  (tramp--instrument-test-case 10
-  (let ((tmp-name (tramp--test-make-temp-name))
-       attr)
+  ;; `directory-files-and-attributes' contains also values for "../".
+  ;; Ensure that this doesn't change during tests, for
+  ;; example due to handling temporary files.
+  (let* ((tmp-name1 (tramp--test-make-temp-name))
+        (tmp-name2 (expand-file-name "bla" tmp-name1))
+        attr)
     (unwind-protect
        (progn
-         (make-directory tmp-name)
-         (should (file-directory-p tmp-name))
-         (write-region "foo" nil (expand-file-name "foo" tmp-name))
-         (write-region "bar" nil (expand-file-name "bar" tmp-name))
-         (write-region "boz" nil (expand-file-name "boz" tmp-name))
-         (setq attr (directory-files-and-attributes tmp-name))
+         (make-directory tmp-name1)
+         (should (file-directory-p tmp-name1))
+         (make-directory tmp-name2)
+         (should (file-directory-p tmp-name2))
+         (write-region "foo" nil (expand-file-name "foo" tmp-name2))
+         (write-region "bar" nil (expand-file-name "bar" tmp-name2))
+         (write-region "boz" nil (expand-file-name "boz" tmp-name2))
+         (setq attr (directory-files-and-attributes tmp-name2))
          (should (consp attr))
          (dolist (elt attr)
-           ;; We cannot include "." and "..".  They might have
-           ;; changed their timestamp already.
-           (when (string-match "foo$\\|bar$\\|baz$" (car elt))
-             (should
-              (equal (file-attributes (expand-file-name (car elt) tmp-name))
-                     (cdr elt)))))
-         (setq attr (directory-files-and-attributes tmp-name 'full))
+           (should
+            (equal (file-attributes (expand-file-name (car elt) tmp-name2))
+                   (cdr elt))))
+         (setq attr (directory-files-and-attributes tmp-name2 'full))
          (dolist (elt attr)
-           ;; We cannot include "." and "..".  They might have
-           ;; changed their timestamp already.
-           (when (string-match "foo$\\|bar$\\|baz$" (car elt))
-             (should
-              (equal (file-attributes (car elt)) (cdr elt)))))
-         (setq attr (directory-files-and-attributes tmp-name nil "^b"))
+           (should
+            (equal (file-attributes (car elt)) (cdr elt))))
+         (setq attr (directory-files-and-attributes tmp-name2 nil "^b"))
          (should (equal (mapcar 'car attr) '("bar" "boz"))))
-      (ignore-errors (delete-directory tmp-name 'recursive))))))
+      (ignore-errors (delete-directory tmp-name1 'recursive)))))
 
 (ert-deftest tramp-test20-file-modes ()
   "Check `file-modes'.
@@ -931,10 +913,9 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
    (not
     (memq
      (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
-     '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
+     '(tramp-adb-file-name-handler
+       tramp-gvfs-file-name-handler
+       tramp-smb-file-name-handler))))
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -949,8 +930,7 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
          (should (= (file-modes tmp-name) #o444))
          (should-not (file-executable-p tmp-name))
          ;; A file is always writable for user "root".
-         (when (and (stringp (file-remote-p tmp-name 'user))
-                    (not (string-equal (file-remote-p tmp-name 'user) "root")))
+         (when (not (string-equal (file-remote-p tmp-name 'user) "root"))
            (should-not (file-writable-p tmp-name))))
       (ignore-errors (delete-file tmp-name)))))
 
@@ -958,9 +938,6 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
   "Check `file-symlink-p'.
 This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name1 (tramp--test-make-temp-name))
        (tmp-name2 (tramp--test-make-temp-name))
@@ -1014,7 +991,13 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
           (string-equal (file-truename tmp-name1) (file-truename tmp-name2))))
       (ignore-errors
        (delete-file tmp-name1)
-       (delete-file tmp-name2)))))
+       (delete-file tmp-name2)))
+
+    ;; `file-truename' shall preserve trailing link of directories.
+    (let* ((dir1 (directory-file-name tramp-test-temporary-file-directory))
+          (dir2 (file-name-as-directory dir1)))
+      (should (string-equal (file-truename dir1) (expand-file-name dir1)))
+      (should (string-equal (file-truename dir2) (expand-file-name dir2))))))
 
 (ert-deftest tramp-test22-file-times ()
   "Check `set-file-times' and `file-newer-than-file-p'."
@@ -1024,9 +1007,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
     (memq
      (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
      '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name1 (tramp--test-make-temp-name))
        (tmp-name2 (tramp--test-make-temp-name))
@@ -1036,8 +1016,11 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
          (write-region "foo" nil tmp-name1)
          (should (file-exists-p tmp-name1))
          (should (consp (nth 5 (file-attributes tmp-name1))))
-         ;; '(0 0) means don't know, and will be replaced by `current-time'.
-         (set-file-times tmp-name1 '(0 1))
+         ;; '(0 0) means don't know, and will be replaced by
+         ;; `current-time'.  Therefore, we use '(0 1).
+         ;; We skip the test, if the remote handler is not able to
+         ;; set the correct time.
+         (skip-unless (set-file-times tmp-name1 '(0 1)))
          ;; Dumb busyboxes are not able to return the date correctly.
          ;; They say "don't know.
          (skip-unless (not (equal (nth 5 (file-attributes tmp-name1)) '(0 0))))
@@ -1055,9 +1038,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 (ert-deftest tramp-test23-visited-file-modtime ()
   "Check `set-visited-file-modtime' and `verify-visited-file-modtime'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -1075,9 +1055,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 (ert-deftest tramp-test24-file-name-completion ()
   "Check `file-name-completion' and `file-name-all-completions'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -1100,9 +1077,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 (ert-deftest tramp-test25-load ()
   "Check `load'."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name)))
     (unwind-protect
@@ -1126,12 +1100,10 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
     (memq
      (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
      '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name))
-       (default-directory tramp-test-temporary-file-directory))
+       (default-directory tramp-test-temporary-file-directory)
+       kill-buffer-query-functions)
     (unwind-protect
        (progn
          ;; We cannot use "/bin/true" and "/bin/false"; those paths
@@ -1162,10 +1134,9 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
    (not
     (memq
      (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
-     '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
+     '(tramp-adb-file-name-handler
+       tramp-gvfs-file-name-handler
+       tramp-smb-file-name-handler))))
 
   (let ((default-directory tramp-test-temporary-file-directory)
        (tmp-name (tramp--test-make-temp-name))
@@ -1215,13 +1186,13 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
    (not
     (memq
      (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
-     '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
+     '(tramp-adb-file-name-handler
+       tramp-gvfs-file-name-handler
+       tramp-smb-file-name-handler))))
 
   (let ((tmp-name (tramp--test-make-temp-name))
-       (default-directory tramp-test-temporary-file-directory))
+       (default-directory tramp-test-temporary-file-directory)
+       kill-buffer-query-functions)
     (unwind-protect
        (with-temp-buffer
          (write-region "foo" nil tmp-name)
@@ -1244,10 +1215,12 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
           (async-shell-command
           (format "ls %s" (file-name-nondirectory tmp-name)) (current-buffer))
          (accept-process-output (get-buffer-process (current-buffer)) 1)
-         (while (ignore-errors
-                  (memq (process-status (get-buffer-process (current-buffer)))
-                        '(run open)))
-           (accept-process-output (get-buffer-process (current-buffer)) 1))
+         (with-timeout (10 (ert-fail "`async-shell-command' timed out"))
+           (while
+               (ignore-errors
+                 (memq (process-status (get-buffer-process (current-buffer)))
+                       '(run open)))
+             (accept-process-output (get-buffer-process (current-buffer)) 1)))
          ;; `ls' could produce colorized output.
          (goto-char (point-min))
          (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
@@ -1266,10 +1239,12 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
           (get-buffer-process (current-buffer))
           (format "%s\n" (file-name-nondirectory tmp-name)))
          (accept-process-output (get-buffer-process (current-buffer)) 1)
-         (while (ignore-errors
-                  (memq (process-status (get-buffer-process (current-buffer)))
-                        '(run open)))
-           (accept-process-output (get-buffer-process (current-buffer)) 1))
+         (with-timeout (10 (ert-fail "`async-shell-command' timed out"))
+           (while
+               (ignore-errors
+                 (memq (process-status (get-buffer-process (current-buffer)))
+                       '(run open)))
+             (accept-process-output (get-buffer-process (current-buffer)) 1)))
          (should
           (string-equal
            (format "%s\n" (file-name-nondirectory tmp-name)) (buffer-string))))
@@ -1282,9 +1257,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
    (eq
     (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
     'tramp-sh-file-name-handler))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let* ((default-directory tramp-test-temporary-file-directory)
         (tmp-name1 (tramp--test-make-temp-name))
@@ -1326,9 +1298,6 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 (ert-deftest tramp-test30-utf8 ()
   "Check UTF8 encoding in file names and file contents."
   (skip-unless (tramp--test-enabled))
-  (tramp-cleanup-connection
-   (tramp-dissect-file-name tramp-test-temporary-file-directory)
-   nil 'keep-password)
 
   (let ((tmp-name (tramp--test-make-temp-name))
        (coding-system-for-read 'utf-8)
@@ -1353,6 +1322,96 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
                         (sort `(,arabic ,chinese ,russian) 'string-lessp))))
       (ignore-errors (delete-directory tmp-name 'recursive)))))
 
+;; This test is inspired by Bug#16928.
+(ert-deftest tramp-test31-asynchronous-requests ()
+  "Check parallel asynchronous requests.
+Such requests could arrive from timers, process filters and
+process sentinels.  They shall not disturb each other."
+  ;; Mark as failed until bug has been fixed.
+  :expected-result :failed
+  (skip-unless (tramp--test-enabled))
+  (skip-unless
+   (eq
+    (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
+    'tramp-sh-file-name-handler))
+
+  ;; Keep instrumentation verbosity 0 until Tramp bug is fixed.  This
+  ;; has the side effect, that this test fails instead to abort.  Good
+  ;; for hydra.
+  (tramp--instrument-test-case 0
+  (let* ((tmp-name (tramp--test-make-temp-name))
+        (default-directory tmp-name)
+        (remote-file-name-inhibit-cache t)
+        timer buffers kill-buffer-query-functions)
+
+    (unwind-protect
+       (progn
+         (make-directory tmp-name)
+
+         ;; Setup a timer in order to raise an ordinary command again
+         ;; and again.  `vc-registered' is well suited, because there
+         ;; are many checks.
+         (setq
+          timer
+          (run-at-time
+           0 1
+           (lambda ()
+             (when buffers
+               (vc-registered
+                (buffer-name (nth (random (length buffers)) buffers)))))))
+
+         ;; Create temporary buffers.  The number of buffers
+         ;; corresponds to the number of processes; it could be
+         ;; increased in order to make pressure on Tramp.
+         (dotimes (i 5)
+           (add-to-list 'buffers (generate-new-buffer "*temp*")))
+
+         ;; Open asynchronous processes.  Set process sentinel.
+         (dolist (buf buffers)
+           (async-shell-command "read line; touch $line; echo $line" buf)
+           (set-process-sentinel
+            (get-buffer-process buf)
+            (lambda (proc _state)
+              (delete-file (buffer-name (process-buffer proc))))))
+
+         ;; Send a string.  Use a random order of the buffers.  Mix
+         ;; with regular operation.
+         (let ((buffers (copy-sequence buffers))
+               buf)
+           (while buffers
+             (setq buf (nth (random (length buffers)) buffers))
+             (process-send-string
+              (get-buffer-process buf) (format "'%s'\n" buf))
+             (file-attributes (buffer-name buf))
+             (setq buffers (delq buf buffers))))
+
+         ;; Wait until the whole output has been read.
+         (with-timeout ((* 10 (length buffers))
+                        (ert-fail "`async-shell-command' timed out"))
+           (let ((buffers (copy-sequence buffers))
+                 buf)
+             (while buffers
+               (setq buf (nth (random (length buffers)) buffers))
+               (if (ignore-errors
+                     (memq (process-status (get-buffer-process buf))
+                           '(run open)))
+                   (accept-process-output (get-buffer-process buf) 0.1)
+                 (setq buffers (delq buf buffers))))))
+
+         ;; Check.
+         (dolist (buf buffers)
+           (with-current-buffer buf
+             (should
+              (string-equal (format "'%s'\n" buf) (buffer-string)))))
+         (should-not
+          (directory-files tmp-name nil directory-files-no-dot-files-regexp)))
+
+      ;; Cleanup.
+      (ignore-errors (cancel-timer timer))
+      (ignore-errors (delete-directory tmp-name 'recursive))
+      (dolist (buf buffers)
+       (ignore-errors (kill-buffer buf)))))))
+
 ;; TODO:
 
 ;; * dired-compress-file
@@ -1366,8 +1425,9 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 ;; * set-file-selinux-context
 
 ;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?).
-;; * Fix `tramp-test28-shell-command' on MS Windows (`process-send-eof'?).
+;; * Fix `tramp-test28-shell-command' on MS Windows (nasty plink message).
 ;; * Fix `tramp-test30-utf8' on MS Windows.  Seems to be in `directory-files'.
+;; * Fix Bug#16928.  Set expected error of `tramp-test31-asynchronous-requests'.
 
 (defun tramp-test-all (&optional interactive)
   "Run all tests for \\[tramp]."
index 53af574a8eedad723f578ca4b3c4e6817b3568ee..8a963f100284b30cd4dc4f54a352db193c7f667e 100644 (file)
             (should-not (buffer-modified-p))))
       (delete-file tempfile))))
 
+(ert-deftest undo-test-in-region-not-most-recent ()
+  "Test undo in region of an edit not the most recent."
+  (with-temp-buffer
+    (buffer-enable-undo)
+    (transient-mark-mode 1)
+    (insert "1111")
+    (undo-boundary)
+    (goto-char 2)
+    (insert "2")
+    (forward-char 2)
+    (undo-boundary)
+    (insert "3")
+    (undo-boundary)
+    ;; Highlight around "2", not "3"
+    (push-mark (+ 3 (point-min)) t t)
+    (setq mark-active t)
+    (goto-char (point-min))
+    (undo)
+    (should (string= (buffer-string)
+                     "11131"))))
+
+(ert-deftest undo-test-in-region-eob ()
+  "Test undo in region of a deletion at EOB, demonstrating bug 16411."
+  (with-temp-buffer
+    (buffer-enable-undo)
+    (transient-mark-mode 1)
+    (insert "This sentence corrupted?")
+    (undo-boundary)
+    ;; Same as recipe at
+    ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16411
+    (insert "aaa")
+    (undo-boundary)
+    (undo)
+    ;; Select entire buffer
+    (push-mark (point) t t)
+    (setq mark-active t)
+    (goto-char (point-min))
+    ;; Should undo the undo of "aaa", ie restore it.
+    (undo)
+    (should (string= (buffer-string)
+                     "This sentence corrupted?aaa"))))
+
 (defun undo-test-all (&optional interactive)
   "Run all tests for \\[undo]."
   (interactive "p")
index 344f16b3d13ac9871863c5d47ada727b4ea21643..2ca0e48279702029357606e531b7d71cce04286c 100644 (file)
@@ -29,6 +29,10 @@ a = asub / aslb + bsub / bslb;
 # Highlight the regexp after "if".
 x = toto / foo if /do bar/ =~ "dobar"
 
+# Regexp options are highlighted.
+
+/foo/xi != %r{bar}mo.tee
+
 bar(class: XXX) do              # ruby-indent-keyword-label
   foo
 end
@@ -361,7 +365,7 @@ a.records().map(&:b).zip(
   foo)
 
 # FIXME: This is not consistent with the example below it, but this
-# ofset only happens if the colon is at eol, which wouldn't be often.
+# offset only happens if the colon is at eol, which wouldn't be often.
 # Tokenizing `bar:' as `:bar =>' would be better, but it's hard to
 # distinguish from a variable reference inside a ternary operator.
 foo(bar: