emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 0608bf1 3/4: Merge from origin/emacs-25


From: John Wiegley
Subject: [Emacs-diffs] master 0608bf1 3/4: Merge from origin/emacs-25
Date: Thu, 04 Feb 2016 08:10:35 +0000

branch: master
commit 0608bf1c3d91196bcf06a6da96243f0fac119089
Merge: 91ab662 ee73997
Author: John Wiegley <address@hidden>
Commit: John Wiegley <address@hidden>

    Merge from origin/emacs-25
    
    ee73997 Make erc work better when encountering unknown prefix chars
    b99141d Make erc completion case-insensitive again
    66c4620 Make complection in erc use consistent casing
    8c562b2 Make /QUIT in erc more robust
    d93d2c5 Make tracking faces in Emacs work more reliably
    af6ab7e Make shr not bug out on images on non-graphical displays
    3311f40 Fix bookmark display widths
    d90ab1e Fix typo in eww-make-unique-file-name
    7f81825 Make it possible to TAB to input fields
    a43a1dc Insert complete alt texts when images are disabled
    56ed4e1 Allow eww text fields to grow
    66b315c Make erc work when subword-mode is switched on
    255b68f Fix IMAP doc example
    91557f5 Quoting fixes in doc strings and diagnostics
    2c0dc9f Fix warning message in hack-local-variables
    504696d Etags: yet another improvement in Ruby tags
    8784ebf Fix x-popup-menu on TTYs without a mouse
    8b87ecb * lisp/emacs-lisp/map.el: Improvements to the docstring of the
            pcase macro
    6191003 Use pop-to-buffer-same-window in eww
    fe321fd * autogen.sh: Revert all recent changes.
    74ebd4a * make-dist: Updates related to nt/.
    737193a * make-dist: Add modules/.
    3696bf2 * make-dist: Update for super-special file that can't live in etc/.
    a4278e2 Fix failure to compile ns-win.el in parallel builds
    860da4d Fix names of tags generated for Ruby accessors
    f6213ce Fix file-name recognition in 'etags'
    e42e662 Change Ruby file names and extensions recognized by 'etags'
    58bfb6a More improvements for Ruby support in 'etags'
    c04e911 Add --git-config option to autogen.sh
    5713466 Fix editing undo changes in eww fields
    51362d6 Allow the user more control of popping up the eww window
    ee0fbd8 Make eww-browse-url with new-window parameter work again
    9c3142d Clean up eww code slightly
    cb035f3 Don't insert nil faces in shr
    4c3fae3 ; * lisp/progmodes/prolog.el: Remove some obsolete commentary.
    93f2153 Improve the custom type of some user options.
    9f60d7e Mark some risky calendar variables.
    1d07dcd Highlight two additional SCSS keywords
    ee8b466 Recommend enabling integrity-checking in git
    e639e10 Some corrections in Elisp manual
    d766ca8 Chatter when autogen.sh changes Git configuration
    3b734e1 * org/org-compat.el (org-font-lock-ensure): Fix bogus test 
(bug#22399)
    43cb9f8 Omit unnecessary history from Lisp intro
    2fbd1da * etc/HISTORY: Add some more history, plus git tags.
    c90e1b4 Improve elisp “Security Considerations” doc
    cedd7ca autogen.sh now arranges for git to check hashes
    86ce76b ; Fix ChangeLog.2 commit ID.
    7b1d2b1 Fix (c & 040) typo in emergency escapes
    a8273da Fix display of overlay strings with 'display' and 'box' property
    fc48106 Fix imap-starttls-open
    cdecbed Fix return value of imap-starttls-open
    20c7e34 ; * etc/NEWS: Fix renamed command name
    98bdbdb Correct reference to DARWIN_OS preprocessor symbol
    b250d29 Spelling fix
    b920a0e Spelling fixes
    93b144b Pacify GCC on C library without glibc API
---
 CONTRIBUTE                          |    2 +-
 ChangeLog.2                         |    1 +
 admin/notes/git-workflow            |    5 +
 admin/release-process               |   18 ++--
 configure.ac                        |   10 +--
 doc/lispintro/emacs-lisp-intro.texi |   44 ++-------
 doc/lispref/buffers.texi            |   10 ++-
 doc/lispref/debugging.texi          |    4 +-
 doc/lispref/display.texi            |   21 +++--
 doc/lispref/frames.texi             |    4 +-
 doc/lispref/keymaps.texi            |   19 ++--
 doc/lispref/minibuf.texi            |   10 +-
 doc/lispref/modes.texi              |    8 +-
 doc/lispref/os.texi                 |   27 ++++--
 doc/lispref/strings.texi            |    5 +-
 doc/lispref/text.texi               |    9 +-
 doc/lispref/windows.texi            |   24 +++--
 doc/misc/gnus.texi                  |    2 +-
 doc/misc/tramp.texi                 |    2 +-
 etc/HISTORY                         |   71 +++++++++-----
 etc/NEWS                            |    6 +-
 lib-src/etags.c                     |  111 +++++++++++++++++++++--
 lisp/autoinsert.el                  |   12 ++-
 lisp/calendar/cal-china.el          |    6 +-
 lisp/calendar/calendar.el           |    4 +
 lisp/calendar/diary-lib.el          |    2 +
 lisp/calendar/solar.el              |    2 +
 lisp/emacs-lisp/bytecomp.el         |    8 +-
 lisp/emacs-lisp/map.el              |   17 ++--
 lisp/emacs-lisp/pcase.el            |    6 +-
 lisp/erc/erc-backend.el             |   28 ++++++-
 lisp/erc/erc-button.el              |   16 ++--
 lisp/erc/erc-pcomplete.el           |    8 +-
 lisp/erc/erc-track.el               |    3 +-
 lisp/erc/erc.el                     |   21 +++-
 lisp/files.el                       |    6 +-
 lisp/gnus/gnus-art.el               |    2 +-
 lisp/gnus/gnus-gravatar.el          |    2 +-
 lisp/gnus/gnus-picon.el             |    2 +-
 lisp/gnus/mml-smime.el              |    4 +-
 lisp/net/eww.el                     |   70 ++++++++------
 lisp/net/imap.el                    |   18 +++-
 lisp/net/shr.el                     |   29 +++---
 lisp/org/org-compat.el              |    4 +-
 lisp/progmodes/prolog.el            |   79 +++++++---------
 lisp/replace.el                     |    2 +-
 lisp/ses.el                         |    6 +-
 lisp/textmodes/css-mode.el          |   12 ++-
 lisp/xwidget.el                     |    8 +-
 make-dist                           |   25 ++++-
 src/Makefile.in                     |    5 +
 src/alloc.c                         |   13 ++-
 src/buffer.c                        |   10 +-
 src/keyboard.c                      |    4 +-
 src/menu.c                          |    3 +
 src/xdisp.c                         |   13 ++-
 src/xwidget.c                       |    2 +-
 test/etags/ruby-src/test1.ru        |   42 +++++++++
 test/manual/etags/CTAGS.good        |  172 ++++++++++++++++++++++++-----------
 test/manual/etags/ETAGS.good_1      |  152 ++++++++++++++++++++++---------
 test/manual/etags/ETAGS.good_2      |  153 ++++++++++++++++++++++---------
 test/manual/etags/ETAGS.good_3      |  152 ++++++++++++++++++++++---------
 test/manual/etags/ETAGS.good_4      |  152 ++++++++++++++++++++++---------
 test/manual/etags/ETAGS.good_5      |  153 ++++++++++++++++++++++---------
 test/manual/etags/ETAGS.good_6      |  153 ++++++++++++++++++++++---------
 test/manual/etags/Makefile          |    2 +-
 test/manual/indent/css-mode.css     |    2 +-
 test/manual/indent/scss-mode.scss   |   11 ++-
 68 files changed, 1384 insertions(+), 625 deletions(-)

diff --git a/CONTRIBUTE b/CONTRIBUTE
index 06e1b38..7fdfeb0 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -263,7 +263,7 @@ Emacs uses ERT, Emacs Lisp Regression Testing, for testing. 
 See (info
 for more information on writing and running tests.
 
 If your test lasts longer than some few seconds, mark it in its
-`ert-deftest' definition with ":tags '(:expensive-test)".
+'ert-deftest' definition with ":tags '(:expensive-test)".
 
 To run tests on the entire Emacs tree, run "make check" from the
 top-level directory.  Most tests are in the directory
diff --git a/ChangeLog.2 b/ChangeLog.2
index 40d7bc4..dbb56ab 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -28563,6 +28563,7 @@
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
+2016-02-04b6d89ff9288a49099f041752908b5eb9613e (inclusive).
 commit ffbf163ab5ced1bc464a0034e6abc9a41f5e09c4 (inclusive).
 See ChangeLog.1 for earlier changes.
 
diff --git a/admin/notes/git-workflow b/admin/notes/git-workflow
index 3c2c76c..b6168c3 100644
--- a/admin/notes/git-workflow
+++ b/admin/notes/git-workflow
@@ -9,6 +9,11 @@ If you haven't configured git before you should first do:
 
 git config --global user.name "Frank Chu"
 git config --global user.email "address@hidden"
+git config --global transfer.fsckObjects true
+
+(See the thread "Recommend these .gitconfig settings for git integrity."
+[https://lists.gnu.org/archive/html/emacs-devel/2016-01/threads.html#01802]
+for more details about why that last line is there.)
 
 Initial setup
 =============
diff --git a/admin/release-process b/admin/release-process
index a9f4419..f378662 100644
--- a/admin/release-process
+++ b/admin/release-process
@@ -7,7 +7,7 @@ Each release cycle will be split into two periods.
 ** Phase one: development
 
 The first phase of the release schedule is the "heads-down" working
-period for new features, on the `master' branch and several feature
+period for new features, on the 'master' branch and several feature
 branches.
 
 ** Phase two: fixing and stabilizing the release branch
@@ -23,11 +23,11 @@ new features.
 
 At the beginning of this phase, a release branch called "emacs-NN"
 ("NN" represents the major version number of the new Emacs release)
-will be cut from `master'.  When that happens, the version number on
-`master' should be incremented; use admin/admin.el's `set-version'
+will be cut from 'master'.  When that happens, the version number on
+'master' should be incremented; use admin/admin.el's 'set-version'
 command to do that, then commit the changes it made and push to
-`master'.  For major releases, also update the value of
-`customize-changed-options-previous-release'.
+'master'.  For major releases, also update the value of
+'customize-changed-options-previous-release'.
 
 The 2 main manuals, the User Manual and the Emacs Lisp Manual, need to
 be proofread, preferably by at least 2 different persons, and any
@@ -35,7 +35,7 @@ uncovered problems fixed.  This is a lot of work, so it is 
advisable
 to divide the job between several people (see the checklist near the
 end of this file).
 
-In parallel to this phase, `master' can receive new features, to be
+In parallel to this phase, 'master' can receive new features, to be
 released in the next release cycle.  From time to time, the master
 branches merges bugfix commits from the "emacs-NN" branch.
 
@@ -56,7 +56,7 @@ Change "block" to "unblock" to unblock the bug.
 * TO BE DONE SHORTLY BEFORE RELEASE
 
 ** Make sure the Copyright date reflects the current year in the source
-files.  See `admin/notes/years' for information about maintaining
+files.  See 'admin/notes/years' for information about maintaining
 copyright years for GNU Emacs.
 
 ** Make sure the necessary sources and scripts for any generated files
@@ -345,10 +345,10 @@ windows.texi
 
 * OTHER INFORMATION
 
-For Emacs's versioning scheme, see `admin/notes/versioning'.
+For Emacs's versioning scheme, see 'admin/notes/versioning'.
 
 For instructions to create pretest or release tarballs, announcements,
-etc., see `admin/make-tarball.txt'.
+etc., see 'admin/make-tarball.txt'.
 
 
 Local variables:
diff --git a/configure.ac b/configure.ac
index 1e076c7..286ca52 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3816,14 +3816,8 @@ getpwent endpwent getgrent endgrent \
 cfmakeraw cfsetspeed copysign __executable_start log2)
 LIBS=$OLD_LIBS
 
-dnl No need to check for aligned_alloc and posix_memalign if using
-dnl gmalloc.o, as it supplies them, unless we're using hybrid_malloc.
-dnl Don't use these functions on Darwin as they are incompatible with
-dnl unexmacosx.c.
-if (test -z "$GMALLOC_OBJ" || test "$hybrid_malloc" = yes) \
-  && test "$opsys" != darwin; then
-  AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
-fi
+dnl No need to check for posix_memalign if aligned_alloc works.
+AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
 AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]])
 
 dnl Cannot use AC_CHECK_FUNCS
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index 6c4f305..78c1865 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -4309,38 +4309,18 @@ documentation, an optional interactive declaration, and 
the body of
 the definition.
 
 @need 1250
-For example, in an early version of Emacs, the function definition was
-as follows.  (It is slightly more complex now that it seeks the first
-non-whitespace character rather than the first visible character.)
+For example, in Emacs the function definition of
address@hidden is as follows.
 
 @smallexample
 @group
-(defun back-to-indentation ()
-  "Move point to first visible character on line."
+(defun dired-unmark-all-marks ()
+  "Remove all marks from all files in the Dired buffer."
   (interactive)
-  (beginning-of-line 1)
-  (skip-chars-forward " \t"))
+  (dired-unmark-all-files ?\r))
 @end group
 @end smallexample
 
address@hidden
-In GNU Emacs 22,
-
-(defun backward-to-indentation (&optional arg)
-  "Move backward ARG lines and position at first nonblank character."
-  (interactive "p")
-  (forward-line (- (or arg 1)))
-  (skip-chars-forward " \t"))
-
-(defun back-to-indentation ()
-  "Move point to the first non-whitespace character on this line."
-  (interactive)
-  (beginning-of-line 1)
-  (skip-syntax-forward " " (line-end-position))
-  ;; Move back over chars that have whitespace syntax but have the p flag.
-  (backward-prefix-chars))
address@hidden ignore
-
 @item interactive
 Declare to the interpreter that the function can be used
 interactively.  This special form may be followed by a string with one
@@ -9123,13 +9103,12 @@ address@hidden precisely, and requiring more expert 
knowledge
 to understand, the two integers are of type @code{Lisp_Object}, which can
 also be a C union instead of an integer type.}.
 
-In early versions of Emacs, these two numbers were thirty-two bits
-long, but the code is slowly being generalized to handle other
-lengths.  Three of the available bits are used to specify the type of
-information; the remaining bits are used as content.
+Integer widths depend on the machine, and are typically 32 or 64 bits.
+A few of the bits are used to specify the type of information; the
+remaining bits are used as content.
 
 @samp{XINT} is a C macro that extracts the relevant number from the
-longer collection of bits; the three other bits are discarded.
+longer collection of bits; the type bits are discarded.
 
 @need 800
 The command in @code{delete-and-extract-region} looks like this:
@@ -18724,10 +18703,7 @@ Even though it is short, @code{split-line} contains  
expressions
 we have not studied: @code{skip-chars-forward}, @code{indent-to},
 @code{current-column} and @code{insert-and-inherit}.
 
-Consider the @code{skip-chars-forward} function.  (It is part of the
-function definition for @code{back-to-indentation}, which is shown in
address@hidden, , Review}.)
-
+Consider the @code{skip-chars-forward} function.
 In GNU Emacs, you can find out more about @code{skip-chars-forward} by
 typing @kbd{C-h f} (@code{describe-function}) and the name of the
 function.  This gives you the function documentation.
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index e56d77c7..1f7f263 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -755,10 +755,14 @@ When disabling Read Only mode, it disables View mode if 
View mode was
 enabled.
 @end deffn
 
address@hidden barf-if-buffer-read-only
address@hidden barf-if-buffer-read-only &optional position
 This function signals a @code{buffer-read-only} error if the current
-buffer is read-only.  @xref{Using Interactive}, for another way to
-signal an error if the current buffer is read-only.
+buffer is read-only.  If the text at @var{position} (which defaults to
+point) has the @code{inhibit-read-only} text property set, the error
+will not be raised.
+
address@hidden Interactive}, for another way to signal an error if the
+current buffer is read-only.
 @end defun
 
 @node Buffer List
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 3f1574f..98c4705 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -141,7 +141,7 @@ If @code{eval-expression-debug-on-error} is @code{nil}, 
then the value
 of @code{debug-on-error} is not changed during @code{eval-expression}.
 @end defopt
 
address@hidden debug-on-signal
address@hidden debug-on-signal
 Normally, errors caught by @code{condition-case} never invoke the
 debugger.  The @code{condition-case} gets a chance to handle the error
 before the debugger gets a chance.
@@ -158,7 +158,7 @@ course of affairs, and you may not even realize that errors 
happen
 there.  If you need to debug code wrapped in @code{condition-case},
 consider using @code{condition-case-unless-debug} (@pxref{Handling
 Errors}).
address@hidden defvar
address@hidden defopt
 
 @defopt debug-on-event
 If you set @code{debug-on-event} to a special event (@pxref{Special
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index aa98ed4..3238959 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -47,8 +47,9 @@ that Emacs presents to the user.
 contents of a given frame (@pxref{Frames}).  This is useful if the
 screen is corrupted.
 
address@hidden redraw-frame frame
-This function clears and redisplays frame @var{frame}.
address@hidden redraw-frame &optional frame
+This function clears and redisplays frame @var{frame}.  If @var{frame}
+is omitted or nil, it redraws the selected frame.
 @end defun
 
   Even more powerful is @code{redraw-display}:
@@ -2686,8 +2687,14 @@ considered, until a specified attribute is found.  To 
ensure that the
 return value is always specified, use a value of @code{default} for
 @var{inherit}.
 
address@hidden face-font face &optional frame
address@hidden face-font face &optional frame character
 This function returns the name of the font of face @var{face}.
+
+If the optional argument @var{frame} is specified, it returns the name
+of the font of @var{face} for that frame.  If @var{frame} is omitted or
address@hidden, the selected frame is used.  And, in this case, if the
+optional third argument @var{character} is supplied, it returns the font
+name used for @var{character}.
 @end defun
 
 @defun face-foreground face &optional frame inherit
@@ -5324,7 +5331,7 @@ returned.  If no specification is satisfied, @code{nil} 
is returned.
 The image is looked for in @code{image-load-path}.
 @end defun
 
address@hidden image-load-path
address@hidden image-load-path
 This variable's value is a list of locations in which to search for
 image files.  If an element is a string or a variable symbol whose
 value is a string, the string is taken to be the name of a directory
@@ -5343,7 +5350,7 @@ should specify the image as follows:
 @example
 (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
 @end example
address@hidden defvar
address@hidden defopt
 
 @defun image-load-path-for-library library image &optional path no-error
 This function returns a suitable search path for images used by the
@@ -6899,12 +6906,12 @@ provided the terminal's Termcap entry defines the 
visible bell
 capability (@samp{vb}).
 @end defopt
 
address@hidden ring-bell-function
address@hidden ring-bell-function
 If this is address@hidden, it specifies how Emacs should ring the
 bell.  Its value should be a function of no arguments.  If this is
 address@hidden, it takes precedence over the @code{visible-bell}
 variable.
address@hidden defvar
address@hidden defopt
 
 @node Window Systems
 @section Window Systems
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index b98e3a5..15a9bd9 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -847,7 +847,7 @@ With some window managers you may have to set this to 
address@hidden in
 order to make a frame appear truly maximized or full-screen.
 @end defopt
 
address@hidden set-frame-size frame width height pixelwise
address@hidden set-frame-size frame width height &optional pixelwise
 This function sets the size of the text area of @var{frame}, measured in
 terms of the canonical height and width of a character on @var{frame}
 (@pxref{Frame Font}).
@@ -2236,7 +2236,7 @@ parameters.  @xref{Management Parameters}.
 terminal frames.  On each text terminal, only the top frame is
 displayed at any one time.
 
address@hidden tty-top-frame terminal
address@hidden tty-top-frame &optional terminal
 This function returns the top frame on @var{terminal}.  @var{terminal}
 should be a terminal object, a frame (meaning that frame's terminal),
 or @code{nil} (meaning the selected frame's terminal).  If it does not
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 354be3c..0ea3028 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -950,22 +950,25 @@ are used before @code{minor-mode-map-alist} and
 @end defvar
 
 @cindex transient keymap
address@hidden set-transient-map keymap &optional keep
address@hidden set-transient-map keymap &optional keep-pred on-exit
 This function adds @var{keymap} as a @dfn{transient} keymap, which
 takes precedence over other keymaps for one (or more) subsequent keys.
 
-Normally, @var{keymap} is used just once, to look up the very next
-key.  If the optional argument @var{pred} is @code{t}, the map stays
-active as long as the user types keys defined in @var{keymap}; when
-the user types a key that is not in @var{keymap}, the transient keymap
-is deactivated and normal key lookup continues for that key.
+Normally, @var{keymap} is used just once, to look up the very next key.
+If the optional argument @var{keep-pred} is @code{t}, the map stays
+active as long as the user types keys defined in @var{keymap}; when the
+user types a key that is not in @var{keymap}, the transient keymap is
+deactivated and normal key lookup continues for that key.
 
-The @var{pred} argument can also be a function.  In that case, the
+The @var{keep-pred} argument can also be a function.  In that case, the
 function is called with no arguments, prior to running each command,
 while @var{keymap} is active; it should return address@hidden if
 @var{keymap} should stay active.
 
-This function works by adding and removing @code{keymap} from the
+The optional argument @var{on-exit}, if non-nil, specifies a function
+that is called, with no arguments, after @var{keymap} is deactivated.
+
+This function works by adding and removing @var{keymap} from the
 variable @code{overriding-terminal-local-map}, which takes precedence
 over all other active keymaps (@pxref{Searching Keymaps}).
 @end defun
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index e24d2cd..6f41090 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -272,7 +272,7 @@ History}).  If it is omitted or @code{nil}, the history 
list defaults
 to @code{regexp-history}.
 @end defun
 
address@hidden read-regexp-defaults-function
address@hidden read-regexp-defaults-function
 The function @code{read-regexp} may use the value of this variable to
 determine its list of default regular expressions.  If address@hidden,
 the value of this variable should be either:
@@ -288,7 +288,7 @@ or a list of strings.
 
 @noindent
 See @code{read-regexp} above for details of how these values are used.
address@hidden defvar
address@hidden defopt
 
 @defvar minibuffer-allow-text-properties
 If this variable is @code{nil}, then @code{read-from-minibuffer}
@@ -2336,11 +2336,11 @@ This is like @code{minibuffer-contents}, except that it 
does not copy text
 properties, just the characters themselves.  @xref{Text Properties}.
 @end defun
 
address@hidden delete-minibuffer-contents
-This function erases the editable contents of the minibuffer (that is,
address@hidden Command delete-minibuffer-contents
+This command erases the editable contents of the minibuffer (that is,
 everything except the prompt), if a minibuffer is current.  Otherwise,
 it erases the entire current buffer.
address@hidden defun
address@hidden deffn
 
 @node Recursive Mini
 @section Recursive Minibuffers
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 2b621e4..66f7a35 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1943,11 +1943,11 @@ Its default value displays the buffer name, padded with 
spaces to at
 least 12 columns.
 @end defvar
 
address@hidden mode-line-position
address@hidden mode-line-position
 This variable indicates the position in the buffer.  Its default value
 displays the buffer percentage and, optionally, the buffer size, the
 line number and the column number.
address@hidden defopt
address@hidden defvar
 
 @defvar vc-mode
 The variable @code{vc-mode}, buffer-local in each buffer, records
@@ -1956,11 +1956,11 @@ and, if so, which kind.  Its value is a string that 
appears in the mode
 line, or @code{nil} for no version control.
 @end defvar
 
address@hidden mode-line-modes
address@hidden mode-line-modes
 This variable displays the buffer's major and minor modes.  Its
 default value also displays the recursive editing level, information
 on the process status, and whether narrowing is in effect.
address@hidden defopt
address@hidden defvar
 
 @defvar mode-line-remote
 This variable is used to show whether @code{default-directory} for the
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 8e3720e..c5e3672 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -2959,34 +2959,40 @@ Buffers}.
 
 @item Authentication
 Emacs has several functions that deal with passwords, e.g.,
address@hidden  Although these functions do not attempt to
address@hidden  @xref{Reading a Password}.
+Although these functions do not attempt to
 broadcast passwords to the world, their implementations are not proof
 against determined attackers with access to Emacs internals.  For
-example, even if Elisp code attempts to scrub a password from
+example, even if Elisp code uses @code{clear-string} to scrub a password from
 its memory after using it, remnants of the password may still reside
-in the garbage-collected free list.
+in the garbage-collected free list.  @xref{Modifying Strings}.
 
 @item Code injection
 Emacs can send commands to many other applications, and applications
 should take care that strings sent as operands of these commands are
-not misinterpreted as directives.  For example, when sending a shell
+not misinterpreted as directives.  For example, when using a shell
 command to rename a file @var{a} to @var{b}, do not simply use the
 string @code{mv @var{a} @var{b}}, because either file name might start
 with @samp{-}, or might contain shell metacharacters like @samp{;}.
 Although functions like @code{shell-quote-argument} can help avoid
 this sort of problem, they are not panaceas; for example, on a POSIX
 platform @code{shell-quote-argument} quotes shell metacharacters but
-not leading @samp{-}.  @xref{Shell Arguments}.
+not leading @samp{-}.  @xref{Shell Arguments}.  Typically it is safer
+to use @code{call-process} than a subshell.  @xref{Synchronous
+Processes}.  And it is safer yet to use builtin Emacs functions; for
+example, use @code{(rename-file "@var{a}" "@var{b}" t)} instead of
+invoking @command{mv}.  @xref{Changing Files}.
 
 @item Coding systems
 Emacs attempts to infer the coding systems of the files and network
-connections it accesses.  If it makes a mistake, or if the other
-parties to the network connection disagree with Emacs's deductions,
+connections it accesses.  @xref{Coding Systems}.
+If Emacs infers incorrectly, or if the other
+parties to the network connection disagree with Emacs's inferences,
 the resulting system could be unreliable.  Also, even when it infers
 correctly, Emacs often can use bytes that other programs cannot.  For
-example, although to Emacs the NUL (all bits zero) byte is just a
+example, although to Emacs the null byte is just a
 character like any other, many other applications treat it as a string
-terminator and mishandle strings or files containing NUL bytes.
+terminator and mishandle strings or files containing null bytes.
 
 @item Environment and configuration variables
 POSIX specifies several environment variables that can affect how
@@ -2998,7 +3004,7 @@ environment variables (e.g., @env{PATH}, 
@env{POSIXLY_CORRECT},
 @env{SHELL}, @env{TMPDIR}) need to have properly-configured values in
 order to get standard behavior for any utility Emacs might invoke.
 Even seemingly-benign variables like @env{TZ} may have security
-implications.
+implications.  @xref{System Environment}.
 
 Emacs has customization and other variables with similar
 considerations.  For example, if the variable @code{shell-file-name}
@@ -3025,6 +3031,7 @@ other applications do.  For example, even when
 @code{(file-readable-p "foo.txt")} returns @code{t}, it could be that
 @file{foo.txt} is unreadable because some other program changed the
 file's permissions between the call to @code{file-readable-p} and now.
address@hidden Accessibility}.
 
 @item Resource limits
 When Emacs exhausts memory or other operating system resources, its
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 091db5e..9d6613c 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -145,11 +145,12 @@ This returns a string containing the characters 
@var{characters}.
 @end example
 @end defun
 
address@hidden substring string start &optional end
address@hidden substring string &optional start end
 This function returns a new string which consists of those characters
 from @var{string} in the range from (and including) the character at the
 index @var{start} up to (but excluding) the character at the index
address@hidden  The first character is at index zero.
address@hidden  The first character is at index zero.  With one argument,
+this function just copies @var{string}.
 
 @example
 @group
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 41991c9..4c3a1a0 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -303,7 +303,7 @@ there, the function returns @code{nil}.  Otherwise, a 
nearby symbol or
 word on the same line is acceptable.
 @end defun
 
address@hidden thing-at-point thing
address@hidden thing-at-point thing &optional no-properties
 Return the @var{thing} around or next to point, as a string.
 
 The argument @var{thing} is a symbol which specifies a kind of syntactic
@@ -311,6 +311,9 @@ entity.  Possibilities include @code{symbol}, @code{list}, 
@code{sexp},
 @code{defun}, @code{filename}, @code{url}, @code{word}, @code{sentence},
 @code{whitespace}, @code{line}, @code{page}, and others.
 
+When the optional argument @var{no-properties} is address@hidden, this
+function strips text properties from the return value.
+
 @example
 ---------- Buffer: foo ----------
 Gentlemen may cry address@hidden Peace!,''
@@ -804,7 +807,7 @@ A blank line is defined as a line containing only tabs and 
spaces.
 @code{delete-blank-lines} returns @code{nil}.
 @end deffn
 
address@hidden Command delete-trailing-whitespace start end
address@hidden Command delete-trailing-whitespace &optional start end
 Delete trailing whitespace in the region defined by @var{start} and
 @var{end}.
 
@@ -1763,7 +1766,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{RET} indents to this column.  This variable automatically
+mode, @key{RET} indents to this column.  This variable automatically
 becomes buffer-local when set in any fashion.
 @end defopt
 
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 771bd4e..f61f08a 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -2415,9 +2415,10 @@ If this function chooses a window on another frame, it 
makes that frame
 visible and, unless @var{alist} contains an @code{inhibit-switch-frame}
 entry (@pxref{Choosing Window Options}), raises that frame if necessary.
 
-If @var{alist} has a non-nil @code{frame-predicate} entry, its value is a
-function taking one argument (a frame), returning non-nil if the
-frame is a candidate; this function replaces the default predicate.
+If @var{alist} has a address@hidden @code{frame-predicate} entry, its
+value is a function taking one argument (a frame), returning
address@hidden if the frame is a candidate; this function replaces the
+default predicate.
 
 If @var{alist} has a address@hidden @code{inhibit-same-window} entry,
 the selected window is used; thus if the selected frame has a single
@@ -2637,10 +2638,11 @@ and return either a new window (which will be used to 
display the
 desired buffer) or @code{nil} (which means the splitting failed).
 @end defopt
 
address@hidden split-window-sensibly window
-This function tries to split @var{window}, and return the newly
-created window.  If @var{window} cannot be split, it returns
address@hidden
address@hidden split-window-sensibly &optional window
+This function tries to split @var{window}, and return the newly created
+window.  If @var{window} cannot be split, it returns @code{nil}.  If
address@hidden is omitted or @code{nil}, it defaults to the selected
+window.
 
 This function obeys the usual rules that determine when a window may
 be split (@pxref{Splitting Windows}).  It first tries to split by
@@ -2671,9 +2673,9 @@ to split this way.
 @end defopt
 
 @defopt even-window-sizes
-This variable, if non-nil, causes @code{display-buffer} to even window
-sizes whenever it reuses an existing window and that window is adjacent
-to the selected one.
+This variable, if address@hidden, causes @code{display-buffer} to even
+window sizes whenever it reuses an existing window and that window is
+adjacent to the selected one.
 
 If its value is @code{width-only}, sizes are evened only if the reused
 window is on the left or right of the selected one and the selected
@@ -3161,7 +3163,7 @@ text will end if scrolling is not required.
 @end defun
 
 @vindex window-group-end-function
address@hidden window-group-end window update
address@hidden window-group-end &optional window update
 This function is like @code{window-end}, except that when @var{window}
 is a part of a group of windows (@pxref{Window Group}),
 @code{window-group-end} returns the end position of the entire group.
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index ab96684..8dd0c1b 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -14325,7 +14325,7 @@ Here's a complete example @code{nnimap} backend with a 
client-side
 @example
 (nnimap "imap.example.com"
         (nnimap-inbox "INBOX")
-        (nnimap-split-methods
+        (nnimap-split-fancy
          (| ("MailScanner-SpamCheck" "spam" "spam.detected")
             (to "foo@@bar.com" "foo")
             "undecided")))
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 54b9826..16ff76b 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -1961,7 +1961,7 @@ of the secretfile is now owned by the user logged in from
 When @code{backup-directory-alist} is @code{nil} (the default), such
 problems do not occur.
 
-To ``turns off'' the backup feature for @value{tramp} files and stop
+To ``turn off'' the backup feature for @value{tramp} files and stop
 @value{tramp} from saving to the backup directory, use this:
 
 @lisp
diff --git a/etc/HISTORY b/etc/HISTORY
index 0426425..8107026 100644
--- a/etc/HISTORY
+++ b/etc/HISTORY
@@ -1,14 +1,35 @@
-       GNU Emacs versions and their release dates
+       GNU Emacs history, versions, and release dates
 
 For more details about release contents, see the NEWS* files.
 
+Most of the development history of GNU Emacs is available in its
+source code repository <http://savannah.gnu.org/git/?group=emacs>.
+However, in the early days GNU Emacs was developed without using
+version control systems and was published via half-inch 9-track
+1600-bpi magnetic tape reels.  Although information about this early
+development is sketchy, the following text summarizes what is known.
+
+EMACS started out as a set of macros atop the TECO text editor, and
+was first operational in late 1976.  It was inspired by earlier work
+such as the E editor of Stanford, and was based on older TECO macro
+sets.  EMACS in turn inspired several similar editors.  See:
+Stallman RM. EMACS: The Extensible, Customizable Self-Documenting
+Display Editor.  AI Memo 519a, MIT, 1981-03-26
+<http://dspace.mit.edu/bitstream/handle/1721.1/5736/AIM-519A.pdf>.
+
+In 1984, work began on GNU Emacs, a fresh implementation designed to
+run on GNU and GNU-like systems, with a full-featured Lisp at its
+core.  GNU Emacs 1.0 through 1.12 were released in early 1985.  The
+next version after 1.12 was 13; this was the initial public release.
+
+Here is a list of known GNU Emacs stable releases starting with the
+initial public release.  Entries in the list are of the form "GNU
+Emacs N (DATE) TAG", where N is the version number, DATE the release
+date, and TAG (if present) the corresponding tag in the source code
+repository.  Any commentary about the version starts on the next line.
 Dates are approximate in the following list; some are when the version
 was made, some are when it was announced.
 
-
-GNU Emacs 1.0 through 1.12 were released in early 1985.
-The next release after 1.12 was 13.
-
 GNU Emacs 13 (1985-03-20)
 Initial release announced on Usenet.
 
@@ -135,15 +156,15 @@ GNU Emacs 19.32 (1996-07-31)
 
 GNU Emacs 19.33 (1996-08-11)
 
-GNU Emacs 19.34 (1996-08-21)
+GNU Emacs 19.34 (1996-08-21) emacs-19.34
 
-GNU Emacs 20.1 (1997-09-15)
+GNU Emacs 20.1 (1997-09-15) emacs-20.1
 
-GNU Emacs 20.2 (1997-09-19)
+GNU Emacs 20.2 (1997-09-19) emacs-20.2
 
-GNU Emacs 20.3 (1998-08-19)
+GNU Emacs 20.3 (1998-08-19) emacs-20.3
 
-GNU Emacs 20.4 (1999-07-12)
+GNU Emacs 20.4 (1999-07-12) emacs-20.4
 
 GNU Emacs 20.5 (1999-12-04)
 
@@ -151,40 +172,40 @@ GNU Emacs 20.6 (2000-02-15)
 
 GNU Emacs 20.7 (2000-06-13)
 
-GNU Emacs 21.1 (2001-10-20)
+GNU Emacs 21.1 (2001-10-20) emacs-21.1
 
-GNU Emacs 21.2 (2002-03-16)
+GNU Emacs 21.2 (2002-03-16) emacs-21.2
 
-GNU Emacs 21.3 (2003-03-19)
+GNU Emacs 21.3 (2003-03-19) emacs-21.3
 
 GNU Emacs 21.4 (2005-02-08)
 
 GNU Emacs 21.4a (2005-02-17)
 This is Emacs 21.4 with an updated notice in etc/PROBLEMS.
 
-GNU Emacs 22.1 (2007-06-02)
+GNU Emacs 22.1 (2007-06-02) emacs-22.1
 
-GNU Emacs 22.2 (2008-03-26)
+GNU Emacs 22.2 (2008-03-26) emacs-22.2
 
-GNU Emacs 22.3 (2008-09-05)
+GNU Emacs 22.3 (2008-09-05) emacs-22.3
 
-GNU Emacs 23.1 (2009-07-29)
+GNU Emacs 23.1 (2009-07-29) emacs-23.1
 
-GNU Emacs 23.2 (2010-05-08)
+GNU Emacs 23.2 (2010-05-08) emacs-23.2
 
-GNU Emacs 23.3 (2011-03-10)
+GNU Emacs 23.3 (2011-03-10) emacs-23.3
 
-GNU Emacs 23.4 (2012-01-29)
+GNU Emacs 23.4 (2012-01-29) emacs-23.4
 
-GNU Emacs 24.1 (2012-06-10)
+GNU Emacs 24.1 (2012-06-10) emacs-24.1
 
-GNU Emacs 24.2 (2012-08-27)
+GNU Emacs 24.2 (2012-08-27) emacs-24.2
 
-GNU Emacs 24.3 (2013-03-10)
+GNU Emacs 24.3 (2013-03-10) emacs-24.3
 
-GNU Emacs 24.4 (2014-10-20)
+GNU Emacs 24.4 (2014-10-20) emacs-24.4
 
-GNU Emacs 24.5 (2015-04-10)
+GNU Emacs 24.5 (2015-04-10) emacs-24.5
 
 
 ----------------------------------------------------------------------
diff --git a/etc/NEWS b/etc/NEWS
index faf49b0..1f4f989 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -500,6 +500,10 @@ servers.
 ---
 *** Reconnection is now asynchronous.
 
+---
+*** Nick completion is now case-insentive again after inadvertently
+being made case-sensitive in Emacs 24.2.
+
 ** Midnight-mode
 
 ---
@@ -564,7 +568,7 @@ which were installed by the user (as opposed to installed as
 dependencies).  This variable can also be manually customized.
 
 ---
-*** New command `package-install-user-selected-packages' installs all
+*** New command `package-install-selected-packages' installs all
 packages from `package-selected-packages' which are currently missing.
 
 ---
diff --git a/lib-src/etags.c b/lib-src/etags.c
index ff75de4..ca50f35 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -729,7 +729,9 @@ static const char Python_help [] =
 generate a tag.";
 
 static const char *Ruby_suffixes [] =
-  { "rb", "ruby", NULL };
+  { "rb", "ru", "rbw", NULL };
+static const char *Ruby_filenames [] =
+  { "Rakefile", "Thorfile", NULL };
 static const char Ruby_help [] =
   "In Ruby code, 'def' or 'class' or 'module' at the beginning of\n\
 a line generate a tag.  Constants also generate a tag.";
@@ -813,7 +815,7 @@ static language lang_names [] =
   { "proc",      no_lang_help,   plain_C_entries,   plain_C_suffixes   },
   { "prolog",    Prolog_help,    Prolog_functions,  Prolog_suffixes    },
   { "python",    Python_help,    Python_functions,  Python_suffixes    },
-  { "ruby",      Ruby_help,      Ruby_functions,    Ruby_suffixes      },
+  { "ruby",      Ruby_help,Ruby_functions,Ruby_suffixes,Ruby_filenames },
   { "scheme",    Scheme_help,    Scheme_functions,  Scheme_suffixes    },
   { "tex",       TeX_help,       TeX_commands,      TeX_suffixes       },
   { "texinfo",   Texinfo_help,   Texinfo_nodes,     Texinfo_suffixes   },
@@ -1484,8 +1486,16 @@ get_language_from_filename (char *file, int 
case_sensitive)
 {
   language *lang;
   const char **name, **ext, *suffix;
+  char *slash;
 
   /* Try whole file name first. */
+  slash = strrchr (file, '/');
+  if (slash != NULL)
+    file = slash + 1;
+#ifdef DOS_NT
+  else if (file[0] && file[1] == ':')
+    file += 2;
+#endif
   for (lang = lang_names; lang->name != NULL; lang++)
     if (lang->filenames != NULL)
       for (name = lang->filenames; *name != NULL; name++)
@@ -4621,6 +4631,7 @@ static void
 Ruby_functions (FILE *inf)
 {
   char *cp = NULL;
+  bool reader = false, writer = false, alias = false, continuation = false;
 
   LOOP_ON_INPUT_LINES (inf, lb, cp)
     {
@@ -4629,7 +4640,9 @@ Ruby_functions (FILE *inf)
       char *name;
 
       cp = skip_spaces (cp);
-      if (c_isalpha (*cp) && c_isupper (*cp)) /* constants */
+      if (!continuation
+         /* Constants.  */
+         && c_isalpha (*cp) && c_isupper (*cp))
        {
          char *bp, *colon = NULL;
 
@@ -4643,7 +4656,7 @@ Ruby_functions (FILE *inf)
          if (cp > name + 1)
            {
              bp = skip_spaces (cp);
-             if (*bp == '=' && c_isspace (bp[1]))
+             if (*bp == '=' && !(bp[1] == '=' || bp[1] == '>'))
                {
                  if (colon && !c_isspace (colon[1]))
                    name = colon + 1;
@@ -4652,12 +4665,14 @@ Ruby_functions (FILE *inf)
                }
            }
        }
-      else if ((is_method = LOOKING_AT (cp, "def")) /* module/class/method */
-              || (is_class = LOOKING_AT (cp, "class"))
-              || LOOKING_AT (cp, "module"))
+      else if (!continuation
+              /* Modules, classes, methods.  */
+              && ((is_method = LOOKING_AT (cp, "def"))
+                  || (is_class = LOOKING_AT (cp, "class"))
+                  || LOOKING_AT (cp, "module")))
        {
          const char self_name[] = "self.";
-         const size_t self_size1 = sizeof ("self.") - 1;
+         const size_t self_size1 = sizeof (self_name) - 1;
 
          name = cp;
 
@@ -4689,6 +4704,86 @@ Ruby_functions (FILE *inf)
          make_tag (name, cp - name, true,
                    lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
        }
+      else
+       {
+         /* Tag accessors and aliases.  */
+
+         if (!continuation)
+           reader = writer = alias = false;
+
+         while (*cp && *cp != '#')
+           {
+             if (!continuation)
+               {
+                 reader = writer = alias = false;
+                 if (LOOKING_AT (cp, "attr_reader"))
+                   reader = true;
+                 else if (LOOKING_AT (cp, "attr_writer"))
+                   writer = true;
+                 else if (LOOKING_AT (cp, "attr_accessor"))
+                   {
+                     reader = true;
+                     writer = true;
+                   }
+                 else if (LOOKING_AT (cp, "alias_method"))
+                   alias = true;
+               }
+             if (reader || writer || alias)
+               {
+                 do {
+                   char *np = cp;
+
+                   if (*np == ':')
+                     np++;
+                   cp = skip_name (cp);
+                   if (reader)
+                     {
+                       make_tag (np, cp - np, true,
+                                 lb.buffer, cp - lb.buffer + 1,
+                                 lineno, linecharno);
+                       continuation = false;
+                     }
+                   if (writer)
+                     {
+                       size_t name_len = cp - np + 1;
+                       char *wr_name = xnew (name_len + 1, char);
+
+                       memcpy (wr_name, np, name_len - 1);
+                       memcpy (wr_name + name_len - 1, "=", 2);
+                       pfnote (wr_name, true, lb.buffer, cp - lb.buffer + 1,
+                               lineno, linecharno);
+                       continuation = false;
+                     }
+                   if (alias)
+                     {
+                       if (!continuation)
+                         make_tag (np, cp - np, true,
+                                   lb.buffer, cp - lb.buffer + 1,
+                                   lineno, linecharno);
+                       continuation = false;
+                       while (*cp && *cp != '#' && *cp != ';')
+                         {
+                           if (*cp == ',')
+                             continuation = true;
+                           else if (!c_isspace (*cp))
+                             continuation = false;
+                           cp++;
+                         }
+                       if (*cp == ';')
+                         continuation = false;
+                     }
+                   cp = skip_spaces (cp);
+                 } while ((alias
+                           ? (*cp == ',')
+                           : (continuation = (*cp == ',')))
+                          && (cp = skip_spaces (cp + 1), *cp && *cp != '#'));
+               }
+             if (*cp != '#')
+               cp = skip_name (cp);
+             while (*cp && *cp != '#' && notinname (*cp))
+               cp++;
+           }
+       }
     }
 }
 
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index e5dd62f..43fa312 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -305,7 +305,17 @@ ACTION may be a skeleton to insert (see 
`skeleton-insert'), an absolute
 file-name or one relative to `auto-insert-directory' or a function to call.
 ACTION may also be a vector containing several successive single actions as
 described above, e.g. [\"header.insert\" date-and-author-update]."
-  :type 'sexp
+  :type '(alist :key-type
+                (choice (regexp :tag "Regexp matching file name")
+                        (symbol :tag "Major mode")
+                        (cons :tag "Condition and description"
+                              (choice :tag "Condition"
+                               (regexp :tag "Regexp matching file name")
+                               (symbol :tag "Major mode"))
+                              (string :tag "Description")))
+                ;; There's no custom equivalent of "repeat" for vectors.
+                :value-type (choice file function
+                                    (sexp :tag "Skeleton or vector")))
   :version "25.1"
   :group 'auto-insert)
 
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index cfddd6b..661a818 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -71,9 +71,6 @@ Default is for Beijing.  This is an expression in `year' 
since it changed at
 ;; It gets eval'd.
 ;;;###autoload
 (put 'calendar-chinese-time-zone 'risky-local-variable t)
-;;;###autoload
-(put 'chinese-calendar-time-zone 'risky-local-variable t)
-
 
 ;; FIXME unused.
 (defcustom calendar-chinese-location-name "Beijing"
@@ -98,6 +95,7 @@ Default is for no daylight saving time."
 This is an expression depending on `year' because it changed
 at 1928-01-01 00:00:00 from `PMT' to `CST'."
   :type 'sexp
+  :risky t
   :group 'calendar-chinese)
 
 (defcustom calendar-chinese-daylight-time-zone-name "CDT"
@@ -115,6 +113,7 @@ at 1928-01-01 00:00:00 from `PMT' to `CST'."
 Default is for no daylight saving time.  See documentation of
 `calendar-daylight-savings-starts'."
   :type 'sexp
+  :risky t
   :group 'calendar-chinese)
 
 (defcustom calendar-chinese-daylight-saving-end nil
@@ -125,6 +124,7 @@ Default is for no daylight saving time.  See documentation 
of
 Default is for no daylight saving time.  See documentation of
 `calendar-daylight-savings-ends'."
   :type 'sexp
+  :risky t
   :group 'calendar-chinese)
 
 (defcustom calendar-chinese-daylight-saving-start-time 0
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 5dec3ec..ccdae48 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -850,6 +850,7 @@ For examples of three common styles, see 
`diary-american-date-forms',
 Normally you should not customize this, but `calendar-date-display-form'
 \(which see)."
   :type 'sexp
+  :risky t
   :version "23.1"
   :group 'calendar)
 
@@ -859,6 +860,7 @@ Normally you should not customize this, but 
`calendar-date-display-form'
 Normally you should not customize this, but `calendar-date-display-form'
 \(which see)."
   :type 'sexp
+  :risky t
   :group 'calendar)
 
 (defcustom calendar-american-date-display-form
@@ -867,6 +869,7 @@ Normally you should not customize this, but 
`calendar-date-display-form'
 Normally you should not customize this, but `calendar-date-display-form'
 \(which see)."
   :type 'sexp
+  :risky t
   :group 'calendar)
 
 (defcustom calendar-date-display-form
@@ -892,6 +895,7 @@ would give the usual American style in fixed-length fields. 
 The variables
 `calendar-american-date-display-form' provide some defaults for three common
 styles."
   :type 'sexp
+  :risky t
   :set-after '(calendar-date-style calendar-iso-date-display-form
                                    calendar-european-date-display-form
                                    calendar-american-date-display-form)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 0523d83..9ba4e35 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -296,6 +296,7 @@ Used by the function `diary-remind', a pseudo-pattern is a 
list of
 expressions that can involve the keywords `days' (a number), `date'
 \(a list of month, day, year), and `diary-entry' (a string)."
   :type 'sexp
+  :risky t
   :group 'diary)
 
 (defcustom diary-abbreviated-year-flag t
@@ -412,6 +413,7 @@ The format of the header is specified by 
`diary-header-line-format'."
 Only used if `diary-header-line-flag' is non-nil."
   :group 'diary
   :type 'sexp
+  :risky t
   :initialize 'custom-initialize-default
   :set 'diary-set-header
   :version "23.3")                      ; frame-width -> window-width
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index 2ce76d5..bf8bedd 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -70,6 +70,7 @@ For example, the form
 
 would give military-style times like \"21:07 (UTC)\"."
   :type 'sexp
+  :risky t
   :group 'calendar)
 
 (defcustom calendar-latitude nil
@@ -131,6 +132,7 @@ variable `calendar-latitude' paired with the variable 
`calendar-longitude'.
 
 This variable should be set in `site-start'.el."
   :type 'sexp
+  :risky t
   :group 'calendar)
 
 (defcustom solar-error 0.5
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 9fe6e03..11eb44c 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1169,7 +1169,7 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
     (display-warning 'bytecomp string level byte-compile-log-buffer)))
 
 (defun byte-compile-warn (format &rest args)
-  "Issue a byte compiler warning; use (format FORMAT ARGS...) for message."
+  "Issue a byte compiler warning; use (format-message FORMAT ARGS...) for 
message."
   (setq format (apply #'format-message format args))
   (if byte-compile-error-on-warn
       (error "%s" format)              ; byte-compile-file catches and logs it
@@ -3748,7 +3748,8 @@ discarding."
     (if (= (logand len 1) 1)
         (progn
           (byte-compile-log-warning
-           (format "missing value for `%S' at end of setq" (car (last args)))
+           (format-message
+            "missing value for `%S' at end of setq" (car (last args)))
            nil :error)
           (byte-compile-form
            `(signal 'wrong-number-of-arguments '(setq ,len))
@@ -4019,7 +4020,8 @@ that suppresses all warnings during execution of BODY."
       (progn
         (mapc 'byte-compile-form (cdr form))
         (byte-compile-out 'byte-call (length (cdr (cdr form)))))
-    (byte-compile-log-warning "`funcall' called with no arguments" nil :error)
+    (byte-compile-log-warning
+     (format-message "`funcall' called with no arguments") nil :error)
     (byte-compile-form '(signal 'wrong-number-of-arguments '(funcall 0))
                        byte-compile--for-effect)))
 
diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el
index ebef271..ec8d3d7 100644
--- a/lisp/emacs-lisp/map.el
+++ b/lisp/emacs-lisp/map.el
@@ -47,17 +47,18 @@
 (pcase-defmacro map (&rest args)
   "Build a `pcase' pattern matching map elements.
 
-The `pcase' pattern will match each element of PATTERN against
-the corresponding elements of the map.
+ARGS is a list of elements to be matched in the map.
 
-Extra elements of the map are ignored if fewer ARGS are
-given, and the match does not fail.
+Each element of ARGS can be of the form (KEY PAT), in which case KEY is
+evaluated and searched for in the map.  The match fails if for any KEY
+found in the map, the corresponding PAT doesn't match the value
+associated to the KEY.
 
-ARGS can be a list of the form (KEY PAT), in which case KEY in an
-unquoted form.
+Each element can also be a SYMBOL, which is an abbreviation of a (KEY
+PAT) tuple of the form (\\='SYMBOL SYMBOL).
 
-ARGS can also be a list of symbols, which stands for ('SYMBOL
-SYMBOL)."
+Keys in ARGS not found in the map are ignored, and the match doesn't
+fail."
   `(and (pred mapp)
         ,@(map--make-pcase-bindings args)))
 
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 7be997e..7e164c0 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -111,7 +111,7 @@
 CASES is a list of elements of the form (PATTERN CODE...).
 
 A structural PATTERN describes a template that identifies a class
-of values.  For example, the pattern `(,foo ,bar) matches any
+of values.  For example, the pattern \\=`(,foo ,bar) matches any
 two element list, binding its elements to symbols named `foo' and
 `bar' -- in much the same way that `cl-destructuring-bind' would.
 
@@ -119,12 +119,12 @@ A significant difference from `cl-destructuring-bind' is 
that, if
 a pattern match fails, the next case is tried until either a
 successful match is found or there are no more cases.
 
-Another difference is that pattern elements may be backquoted,
+Another difference is that pattern elements may be quoted,
 meaning they must match exactly: The pattern \\='(foo bar)
 matches only against two element lists containing the symbols
 `foo' and `bar' in that order.  (As a short-hand, atoms always
 match themselves, such as numbers or strings, and need not be
-quoted).
+quoted.)
 
 Lastly, a pattern can be logical, such as (pred numberp), that
 matches any number-like element; or the symbol `_', that matches
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 4a2a12d..b413ee5 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -474,13 +474,39 @@ Currently this is called by `erc-send-input'."
                      nil t))
       (split-string (buffer-string) "\n"))))
 
+(defun erc-forward-word ()
+  "Moves forward one word, ignoring any subword settings.  If no
+subword-mode is active, then this is (forward-word)."
+  (skip-syntax-forward "^w")
+  (> (skip-syntax-forward "w") 0))
+
+(defun erc-word-at-arg-p (pos)
+  "Reports whether the char after a given POS has word syntax.
+If POS is out of range, the value is nil."
+  (let ((c (char-after pos)))
+    (if c
+        (eq ?w (char-syntax c))
+      nil)))
+
+(defun erc-bounds-of-word-at-point ()
+  "Returns the bounds of a word at point, or nil if we're not at
+a word.  If no subword-mode is active, then this
+is (bounds-of-thing-at-point 'word)."
+  (if (or (erc-word-at-arg-p (point))
+          (erc-word-at-arg-p (1- (point))))
+      (save-excursion
+        (let* ((start (progn (skip-syntax-backward "w") (point)))
+               (end   (progn (skip-syntax-forward  "w") (point))))
+          (cons start end)))
+    nil))
+
 ;; Used by CTCP functions
 (defun erc-upcase-first-word (str)
   "Upcase the first word in STR."
   (with-temp-buffer
     (insert str)
     (goto-char (point-min))
-    (upcase-word 1)
+    (upcase-region (point) (progn (erc-forward-word) (point)))
     (buffer-string)))
 
 (defun erc-server-setup-periodical-ping (buffer)
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index e1ccea9..7d50919 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -300,14 +300,14 @@ specified by `erc-button-alist'."
     (when (or (eq t form)
               (eval form))
       (goto-char (point-min))
-      (while (forward-word 1)
-        (setq bounds (bounds-of-thing-at-point 'word))
-        (setq word (buffer-substring-no-properties
-                    (car bounds) (cdr bounds)))
-        (when (or (and (erc-server-buffer-p) (erc-get-server-user word))
-                  (and erc-channel-users (erc-get-channel-user word)))
-          (erc-button-add-button (car bounds) (cdr bounds)
-                                 fun t (list word)))))))
+      (while (erc-forward-word)
+        (when (setq bounds (erc-bounds-of-word-at-point))
+          (setq word (buffer-substring-no-properties
+                      (car bounds) (cdr bounds)))
+          (when (or (and (erc-server-buffer-p) (erc-get-server-user word))
+                    (and erc-channel-users (erc-get-channel-user word)))
+            (erc-button-add-button (car bounds) (cdr bounds)
+                                   fun t (list word))))))))
 
 (defun erc-button-add-buttons-1 (regexp entry)
   "Search through the buffer for matches to ENTRY and add buttons."
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index cf3f51b..9f57239 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -238,10 +238,12 @@ If optional argument IGNORE-SELF is non-nil, don't return 
the current nick."
   "Returns a list of all nicks on the current server."
   (let (nicks)
     (erc-with-server-buffer
-      (maphash (lambda (nick _user)
-                 (setq nicks (cons (concat nick postfix) nicks)))
+      (maphash (lambda (_nick user)
+                 (setq nicks (cons
+                              (concat (erc-server-user-nickname user) postfix)
+                              nicks)))
                erc-server-users))
-      nicks))
+    nicks))
 
 (defun pcomplete-erc-channels ()
   "Returns a list of channels associated with the current server."
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 1750cb7..4d8feb5 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -971,7 +971,8 @@ is in `erc-mode'."
   "Return a list of all faces used in STR."
   (let ((i 0)
        (m (length str))
-       (faces (erc-list (get-text-property 0 'face str)))
+       (faces (let ((face1 (get-text-property 0 'face str)))
+                (when face1 (list face1))))
        cur)
     (while (and (setq i (next-single-property-change i 'face str m))
                (not (= i m)))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index b7f40a8..98ea594 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1141,7 +1141,7 @@ which the local user typed."
     (define-key map "\C-c\C-u" 'erc-kill-input)
     (define-key map "\C-c\C-x" 'erc-quit-server)
     (define-key map "\M-\t" 'ispell-complete-word)
-    (define-key map "\t" 'completion-at-point)
+    (define-key map "\t" 'erc-completion-at-point)
 
     ;; Suppress `font-lock-fontify-block' key binding since it
     ;; destroys face properties.
@@ -3996,6 +3996,13 @@ Prompt for one if called interactively."
                          (format "MODE %s +k %s" tgt key)
                        (format "MODE %s -k" tgt)))))
 
+(defun erc-completion-at-point ()
+  "Perform complection on the text around point case-insentitively.
+See `completion-at-point'."
+  (interactive)
+  (let ((completion-ignore-case t))
+    (completion-at-point)))
+
 (defun erc-quit-server (reason)
   "Disconnect from current server after prompting for REASON.
 `erc-quit-reason' works with this just like with `erc-cmd-QUIT'."
@@ -6088,13 +6095,15 @@ If it doesn't exist, create it."
   (or (file-accessible-directory-p dir) (error "Cannot access %s" dir)))
 
 (defun erc-kill-query-buffers (process)
-  "Kill all buffers of PROCESS."
+  "Kill all buffers of PROCESS.
+Does nothing if PROCESS is not a process object."
   ;; here, we only want to match the channel buffers, to avoid
   ;; "selecting killed buffers" b0rkage.
-  (erc-with-all-buffers-of-server process
-    (lambda ()
-      (not (erc-server-buffer-p)))
-    (kill-buffer (current-buffer))))
+  (when (processp process)
+    (erc-with-all-buffers-of-server process
+      (lambda ()
+       (not (erc-server-buffer-p)))
+      (kill-buffer (current-buffer)))))
 
 (defun erc-nick-at-point ()
   "Give information about the nickname at `point'.
diff --git a/lisp/files.el b/lisp/files.el
index 92ae434..aca7b35 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3426,7 +3426,11 @@ local variables, but directory-local variables may still 
be applied."
                                   (format-message
                                    "%s: `lexical-binding' at end of file 
unreliable"
                                    (file-name-nondirectory
-                                    (or buffer-file-name ""))))))
+                                    ;; We are called from
+                                    ;; 'with-temp-buffer', so we need
+                                    ;; to use 'thisbuf's name in the
+                                    ;; warning message.
+                                    (or (buffer-file-name thisbuf) ""))))))
                              (t
                               (ignore-errors
                                 (push (cons (if (eq var 'eval)
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 54bbfd8..366d14a 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -260,7 +260,7 @@ This can also be a list of the above values."
   ;; needed there.  And XEmacs doesn't handle `intangible' anyway.
   '(invisible t)
   "Property list to use for hiding text."
-  :type 'sexp
+  :type 'plist
   :group 'gnus-article-hiding)
 
 ;; Fixme: This isn't the right thing for mixed graphical and non-graphical
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index deb6e4b..de7203d 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -41,7 +41,7 @@ If nil, default to `gravatar-size'."
 
 (defcustom gnus-gravatar-properties '(:ascent center :relief 1)
   "List of image properties applied to Gravatar images."
-  :type 'sexp
+  :type 'plist
   :version "24.1"
   :group 'gnus-gravatar)
 
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index 6365e8e..bbbe0ed 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -73,7 +73,7 @@ Some people may want to add \"unknown\" to this list."
 
 (defcustom gnus-picon-properties '(:color-symbols (("None" . "white")))
   "List of image properties applied to picons."
-  :type 'sexp
+  :type 'plist
   :version "24.3"
   :group 'gnus-picon)
 
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 2d8f25c..248e636 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -216,7 +216,7 @@ Whether the passphrase is cached at all is controlled by
                                        "")))))
          (if (setq cert (smime-cert-by-dns who))
              (setq result (list 'certfile (buffer-name cert)))
-           (setq bad (format "`%s' not found. " who))))
+           (setq bad (gnus-format-message "`%s' not found. " who))))
       (quit))
     result))
 
@@ -235,7 +235,7 @@ Whether the passphrase is cached at all is controlled by
                                        "")))))
          (if (setq cert (smime-cert-by-ldap who))
              (setq result (list 'certfile (buffer-name cert)))
-           (setq bad (format "`%s' not found. " who))))
+           (setq bad (gnus-format-message "`%s' not found. " who))))
       (quit))
     result))
 
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index bc74a0d..e8b8c63 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -275,6 +275,10 @@ word(s) will be searched for via `eww-search-prefix'."
                  (setq url (concat url "/"))))
            (setq url (concat eww-search-prefix
                              (replace-regexp-in-string " " "+" url))))))
+  (pop-to-buffer-same-window
+   (if (eq major-mode 'eww-mode)
+       (current-buffer)
+     (get-buffer-create "*eww*")))
   (eww-setup-buffer)
   ;; Check whether the domain only uses "Highly Restricted" Unicode
   ;; IDNA characters.  If not, transform to punycode to indicate that
@@ -557,7 +561,7 @@ Currently this means either text/html or 
application/xhtml+xml."
 (declare-function mailcap-view-mime "mailcap" (type))
 (defun eww-display-pdf ()
   (let ((data (buffer-substring (point) (point-max))))
-    (switch-to-buffer (get-buffer-create "*eww pdf*"))
+    (pop-to-buffer-same-window (get-buffer-create "*eww pdf*"))
     (let ((coding-system-for-write 'raw-text)
          (inhibit-read-only t))
       (erase-buffer)
@@ -566,7 +570,6 @@ Currently this means either text/html or 
application/xhtml+xml."
   (goto-char (point-min)))
 
 (defun eww-setup-buffer ()
-  (switch-to-buffer (get-buffer-create "*eww*"))
   (when (or (plist-get eww-data :url)
             (plist-get eww-data :dom))
     (eww-save-history))
@@ -759,9 +762,9 @@ the like."
 
 ;;;###autoload
 (defun eww-browse-url (url &optional new-window)
-  (cond (new-window
-        (switch-to-buffer (generate-new-buffer "*eww*"))
-         (eww-mode)))
+  (when new-window
+    (pop-to-buffer-same-window (generate-new-buffer "*eww*"))
+    (eww-mode))
   (eww url))
 
 (defun eww-back-url ()
@@ -933,6 +936,7 @@ network, but just re-display the HTML already fetched."
   (let ((eww-form (list (cons :method (dom-attr dom 'method))
                        (cons :action (dom-attr dom 'action))))
        (start (point)))
+    (insert "\n")
     (shr-ensure-paragraph)
     (shr-generic dom)
     (unless (bolp)
@@ -1042,6 +1046,7 @@ See URL 
`https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.")
                        (1- end)))))
     (let* ((form (get-text-property pos 'eww-form))
           (properties (text-properties-at pos))
+           (buffer-undo-list t)
           (inhibit-read-only t)
           (length (- end beg replace-length))
           (type (plist-get form :type)))
@@ -1056,19 +1061,19 @@ See URL 
`https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.")
                 (1- (line-end-position))
               (eww-end-of-field)))
            (while (and (> length 0)
-                       (eql (following-char) ? ))
+                       (eql (char-after (1- (point))) ? ))
              (delete-region (1- (point)) (point))
              (cl-decf length))))
         ((< length 0)
          ;; Add padding.
          (save-excursion
-           (goto-char (1- end))
+           (goto-char end)
            (goto-char
             (if (equal type "textarea")
                 (1- (line-end-position))
               (1+ (eww-end-of-field))))
            (let ((start (point)))
-             (insert (make-string (abs length) ? ))
+              (insert (make-string (abs length) ? ))
              (set-text-properties start (point) properties))
            (goto-char (1- end)))))
        (set-text-properties (plist-get form :start) (plist-get form :end)
@@ -1082,8 +1087,9 @@ See URL 
`https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.")
          (when (equal type "password")
            ;; Display passwords as asterisks.
            (let ((start (eww-beginning-of-field)))
-             (put-text-property start (+ start (length value))
-                                'display (make-string (length value) 
?*)))))))))
+             (put-text-property
+               start (+ start (length value))
+               'display (make-string (length value) ?*)))))))))
 
 (defun eww-tag-textarea (dom)
   (let ((start (point))
@@ -1145,7 +1151,9 @@ See URL 
`https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.")
      (t
       (eww-form-text dom)))
     (unless (= start (point))
-      (put-text-property start (1+ start) 'help-echo "Input field"))))
+      (put-text-property start (1+ start) 'help-echo "Input field")
+      ;; Mark this as an element we can TAB to.
+      (put-text-property start (1+ start) 'shr-url dom))))
 
 (defun eww-tag-select (dom)
   (shr-ensure-paragraph)
@@ -1476,21 +1484,21 @@ Differences in #targets are ignored."
       string)))
 
 (defun eww-make-unique-file-name (file directory)
-    (cond
-     ((zerop (length file))
-      (setq file "!"))
-     ((string-match "\\`[.]" file)
-      (setq file (concat "!" file))))
-    (let ((count 1)
-          (stem file)
-          (suffix ""))
-      (when (string-match "\\`\\(.*\\)\\([.][^.]+\\)" file)
-        (setq stem (match-string 1)
-              suffix (match-string 2)))
-      (while (file-exists-p (expand-file-name file directory))
-        (setq file (format "%s(%d)%s" stem count suffix))
-       (setq count (1+ count)))
-      (expand-file-name file directory)))
+  (cond
+   ((zerop (length file))
+    (setq file "!"))
+   ((string-match "\\`[.]" file)
+    (setq file (concat "!" file))))
+  (let ((count 1)
+        (stem file)
+        (suffix ""))
+    (when (string-match "\\`\\(.*\\)\\([.][^.]+\\)" file)
+      (setq stem (match-string 1 file)
+            suffix (match-string 2)))
+    (while (file-exists-p (expand-file-name file directory))
+      (setq file (format "%s(%d)%s" stem count suffix))
+      (setq count (1+ count)))
+    (expand-file-name file directory)))
 
 (defun eww-set-character-encoding (charset)
   "Set character encoding to CHARSET.
@@ -1576,8 +1584,8 @@ If CHARSET is nil then use UTF-8."
 (defun eww-list-bookmarks ()
   "Display the bookmarks."
   (interactive)
-  (eww-bookmark-prepare)
-  (pop-to-buffer "*eww bookmarks*"))
+  (pop-to-buffer "*eww bookmarks*")
+  (eww-bookmark-prepare))
 
 (defun eww-bookmark-prepare ()
   (eww-read-bookmarks)
@@ -1764,7 +1772,7 @@ If CHARSET is nil then use UTF-8."
     (let ((buffer eww-current-buffer))
       (quit-window)
       (when buffer
-       (switch-to-buffer buffer)))
+       (pop-to-buffer-same-window buffer)))
     (eww-restore-history history)))
 
 (defvar eww-history-mode-map
@@ -1845,7 +1853,7 @@ If CHARSET is nil then use UTF-8."
     (unless buffer
       (error "No buffer on current line"))
     (quit-window)
-    (switch-to-buffer buffer)))
+    (pop-to-buffer-same-window buffer)))
 
 (defun eww-buffer-show ()
   "Display buffer under point in eww buffer list."
@@ -1854,7 +1862,7 @@ If CHARSET is nil then use UTF-8."
     (unless buffer
       (error "No buffer on current line"))
     (other-window -1)
-    (switch-to-buffer buffer)
+    (pop-to-buffer-same-window buffer)
     (other-window 1)))
 
 (defun eww-buffer-show-next ()
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index 5c5ed86..e5a14d7 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -747,13 +747,19 @@ sure of changing the value of `foo'."
                    :capability-command "1 CAPABILITY\r\n"
                    :always-query-capabilities t
                    :end-of-command "\r\n"
-                   :success " OK "
+                   :success "^1 OK "
                    :starttls-function
-                   (lambda (capabilities)
-                     (when (string-match-p "STARTTLS" capabilities)
-                       "1 STARTTLS\r\n"))))
-         (done (and process
-                    (memq (process-status process) '(open run)))))
+                   #'(lambda (capabilities)
+                       (when (string-match-p "STARTTLS" capabilities)
+                         "1 STARTTLS\r\n"))))
+         done)
+    (when process
+      (imap-log buffer)
+      (when (memq (process-status process) '(open run))
+        (setq done process)
+        (with-current-buffer buffer
+          (goto-char (point-min))
+          (imap-parse-greeting))))
     (message "imap: Connecting with STARTTLS...%s" (if done "done" "failed"))
     done))
 
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index c5de34a..a8ba284 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -981,7 +981,7 @@ element is the data blob and the second element is the 
content-type."
                             (image-animated-p image))))
             (image-animate image nil 60)))
        image)
-    (insert alt)))
+    (insert (or alt ""))))
 
 (defun shr-rescale-image (data &optional content-type)
   "Rescale DATA, if too big, to fit the current buffer."
@@ -1426,9 +1426,7 @@ The preference is a float determined from 
`shr-prefer-media-type'."
              (and shr-blocked-images
                   (string-match shr-blocked-images url)))
          (setq shr-start (point))
-         (if (> (string-width alt) 8)
-             (shr-insert (truncate-string-to-width alt 8))
-           (shr-insert alt)))
+          (shr-insert alt))
         ((and (not shr-ignore-cache)
               (url-is-cached (shr-encode-url url)))
          (funcall shr-put-image-function (shr-get-image-data url) alt))
@@ -1771,17 +1769,18 @@ The preference is a float determined from 
`shr-prefer-media-type'."
                                 align)))
              (dolist (line lines)
                (end-of-line)
-               (let ((start (point)))
-                 (insert
-                  line
-                  (propertize " "
-                              'display `(space :align-to (,pixel-align))
-                              'face (and (> (length line) 0)
-                                         (shr-face-background
-                                          (get-text-property
-                                           (1- (length line)) 'face line)))
-                              'shr-table-indent shr-table-id)
-                  shr-table-vertical-line)
+               (let ((start (point))
+                      (background (and (> (length line) 0)
+                                       (shr-face-background
+                                        (get-text-property
+                                         (1- (length line)) 'face line))))
+                      (space (propertize
+                              " "
+                              'display `(space :align-to (,pixel-align))
+                              'shr-table-indent shr-table-id)))
+                  (when background
+                    (setq space (propertize space 'face background)))
+                 (insert line space shr-table-vertical-line)
                  (shr-colorize-region
                   start (1- (point)) (nth 5 column) (nth 6 column)))
                (forward-line 1))
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index 6403d4d..cf6aafc 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -479,9 +479,9 @@ LIMIT."
       (not (null pos)))))
 
 (defalias 'org-font-lock-ensure
-  (if (fboundp 'org-font-lock-ensure)
+  (if (fboundp 'font-lock-ensure)
       #'font-lock-ensure
-    (lambda (_beg _end) (font-lock-fontify-buffer))))
+    (lambda (&optional _beg _end) (font-lock-fontify-buffer))))
 
 (defun org-floor* (x &optional y)
   "Return a list of the floor of X and the fractional part of X.
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 3767dba..9ee405b 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -53,34 +53,16 @@
 ;; all the bells and whistles one would expect, including syntax
 ;; highlighting and auto indentation.  It can also send regions to an
 ;; inferior Prolog process.
-;;
-;; The code requires the comint, easymenu, info, imenu, and font-lock
-;; libraries.  These are normally distributed with GNU Emacs and
-;; XEmacs.
 
-;;; Installation:
-;;
-;; Insert the following lines in your init file:
-;;
-;; (setq load-path (cons "/usr/lib/xemacs/site-lisp" load-path))
-;; (autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
-;; (autoload 'prolog-mode "prolog" "Major mode for editing Prolog programs." t)
-;; (autoload 'mercury-mode "prolog" "Major mode for editing Mercury programs." 
t)
+;; Some settings you may wish to use:
+
 ;; (setq prolog-system 'swi)  ; optional, the system you are using;
 ;;                            ; see `prolog-system' below for possible values
-;; (setq auto-mode-alist (append '(("\\.pl$" . prolog-mode)
-;;                                 ("\\.m$" . mercury-mode))
+;; (setq auto-mode-alist (append '(("\\.pl\\'" . prolog-mode)
+;;                                 ("\\.m\\'" . mercury-mode))
 ;;                                auto-mode-alist))
 ;;
-;; where the path in the first line is the file system path to this file.
-;; MSDOS paths can be written like "d:/programs/emacs-19.34/site-lisp".
-;; Note: In XEmacs, either `/usr/lib/xemacs/site-lisp' (RPM default in
-;; Red Hat-based distributions) or `/usr/local/lib/xemacs/site-lisp'
-;; (default when compiling from sources) are automatically added to
-;; `load-path', so the first line is not necessary provided that you
-;; put this file in the appropriate place.
-;;
-;; The last s-expression above makes sure that files ending with .pl
+;; The last expression above makes sure that files ending with .pl
 ;; are assumed to be Prolog files and not Perl, which is the default
 ;; Emacs setting.  If this is not wanted, remove this line.  It is then
 ;; necessary to either
@@ -98,8 +80,8 @@
 ;; If the command to start the prolog process ('sicstus', 'pl' or
 ;; 'swipl' for SWI prolog, etc.) is not available in the default path,
 ;; then it is necessary to set the value of the environment variable
-;; EPROLOG to a shell command to invoke the prolog process.  In XEmacs
-;; and Emacs 20+ you can also customize the variable
+;; EPROLOG to a shell command to invoke the prolog process.
+;; You can also customize the variable
 ;; `prolog-program-name' (in the group `prolog-inferior') and provide
 ;; a full path for your Prolog system (swi, scitus, etc.).
 ;;
@@ -109,6 +91,7 @@
 ;;   to keep the GNU Emacs compatibility.  So if you work under Emacs
 ;;   and see something that does not work do drop me a line, as I have
 ;;   a smaller chance to notice this kind of bugs otherwise.
+;  [The above comment dates from 2011.]
 
 ;; Changelog:
 
@@ -272,9 +255,6 @@
 ;; Version 0.1.35:
 ;;  o  Minor font-lock bug fixes.
 
-;;; TODO:
-
-;; Replace ":type 'sexp" with more precise Custom types.
 
 ;;; Code:
 
@@ -441,7 +421,12 @@ Legal values:
   "Alist of Prolog keywords which is used for font locking of directives."
   :version "24.1"
   :group 'prolog-font-lock
-  :type 'sexp
+  ;; Note that "(repeat string)" also allows "nil" (repeat-count 0).
+  ;; This gets processed by prolog-find-value-by-system, which
+  ;; allows both the car and the cdr to be a list to eval.
+  ;; Though the latter must have the form '(eval ...)'.
+  ;; Of course, none of this is documented...
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 
 (defcustom prolog-types
@@ -451,7 +436,7 @@ Legal values:
   "Alist of Prolog types used by font locking."
   :version "24.1"
   :group 'prolog-font-lock
-  :type 'sexp
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 
 (defcustom prolog-mode-specificators
@@ -461,7 +446,7 @@ Legal values:
   "Alist of Prolog mode specificators used by font locking."
   :version "24.1"
   :group 'prolog-font-lock
-  :type 'sexp
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 
 (defcustom prolog-determinism-specificators
@@ -472,7 +457,7 @@ Legal values:
   "Alist of Prolog determinism specificators used by font locking."
   :version "24.1"
   :group 'prolog-font-lock
-  :type 'sexp
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 
 (defcustom prolog-directives
@@ -482,7 +467,7 @@ Legal values:
   "Alist of Prolog source code directives used by font locking."
   :version "24.1"
   :group 'prolog-font-lock
-  :type 'sexp
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 
 
@@ -569,7 +554,8 @@ the first column (i.e., DCG heads) inserts ` -->' and 
newline."
          (or (car names) "prolog"))))
   "Alist of program names for invoking an inferior Prolog with `run-prolog'."
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(alist :key-type (choice symbol sexp)
+                :value-type (group (choice string (const nil) sexp)))
   :risky t)
 (defun prolog-program-name ()
   (prolog-find-value-by-system prolog-program-name))
@@ -580,7 +566,7 @@ the first column (i.e., DCG heads) inserts ` -->' and 
newline."
   "Alist of switches given to inferior Prolog run with `run-prolog'."
   :version "24.1"
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(repeat (list (choice symbol sexp) (choice (repeat string) sexp)))
   :risky t)
 (defun prolog-program-switches ()
   (prolog-find-value-by-system prolog-program-switches))
@@ -604,7 +590,8 @@ Some parts of the string are replaced:
      region of a buffer, in which case it is the number of lines before
      the region."
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(alist :key-type (choice symbol sexp)
+                :value-type (group (choice string (const nil) sexp)))
   :risky t)
 
 (defun prolog-consult-string ()
@@ -631,17 +618,21 @@ Some parts of the string are replaced:
 If `prolog-program-name' is non-nil, it is a string sent to a Prolog process.
 If `prolog-program-name' is nil, it is an argument to the `compile' function."
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(alist :key-type (choice symbol sexp)
+                :value-type (group (choice string (const nil) sexp)))
   :risky t)
 
 (defun prolog-compile-string ()
   (prolog-find-value-by-system prolog-compile-string))
 
 (defcustom prolog-eof-string "end_of_file.\n"
-  "Alist of strings that represent end of file for prolog.
-nil means send actual operating system end of file."
+  "String or alist of strings that represent end of file for prolog.
+If nil, send actual operating system end of file."
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(choice string
+                 (const nil)
+                 (alist :key-type (choice symbol sexp)
+                        :value-type (group (choice string (const nil) sexp))))
   :risky t)
 
 (defcustom prolog-prompt-regexp
@@ -653,7 +644,8 @@ nil means send actual operating system end of file."
   "Alist of prompts of the prolog system command line."
   :version "24.1"
   :group 'prolog-inferior
-  :type 'sexp
+  :type '(alist :key-type (choice symbol sexp)
+                :value-type (group (choice string (const nil) sexp)))
   :risky t)
 
 (defun prolog-prompt-regexp ()
@@ -664,7 +656,8 @@ nil means send actual operating system end of file."
 ;;     (t "^|: +"))
 ;;   "Alist of regexps matching the prompt when consulting `user'."
 ;;   :group 'prolog-inferior
-;;   :type 'sexp
+;;   :type '(alist :key-type (choice symbol sexp)
+;;                :value-type (group (choice string (const nil) sexp)))
 ;;   :risky t)
 
 (defcustom prolog-debug-on-string "debug.\n"
@@ -1036,7 +1029,7 @@ VERSION is of the format (Major . Minor)"
 
 (define-abbrev-table 'prolog-mode-abbrev-table ())
 
-;; Becauses this can `eval' its arguments, any variable that gets
+;; Because this can `eval' its arguments, any variable that gets
 ;; processed by it should be marked as :risky.
 (defun prolog-find-value-by-system (alist)
   "Get value from ALIST according to `prolog-system'."
diff --git a/lisp/replace.el b/lisp/replace.el
index f5c8d33..dfe8cd7 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -85,7 +85,7 @@ from Isearch by using a key sequence like `C-s C-s M-%'." 
"24.3")
   ;; while preparing to dump, also stops customize-rogue listing this.
   :initialize 'custom-initialize-delay
   :group 'matching
-  :type 'sexp
+  :type '(choice string (sexp :tag "Display specification"))
   :version "25.1")
 
 (defcustom query-replace-from-history-variable 'query-replace-history
diff --git a/lisp/ses.el b/lisp/ses.el
index 7647a55..a87386e 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -446,10 +446,8 @@ is nil if SYM is not a symbol that names a cell."
                       (ses-get-cell (car rowcol) (cdr rowcol)))))))
 
 (defun ses-plist-delq (plist prop)
-  "Return PLIST after deletion of proprerty/value pair.
-
-PROP is the symbol identifying the property/value pair. PLIST may
-be modified by border effect."
+  "Return PLIST after deleting the first pair (if any) with symbol PROP.
+This can alter PLIST."
   (cond
    ((null plist) nil)
    ((eq (car plist) prop) (cddr plist))
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 96a82ba..b3a41d3 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -54,6 +54,14 @@
   '("charset" "font-face" "import" "media" "namespace" "page")
   "Identifiers that appear in the form @foo.")
 
+(defconst css-bang-ids
+  '("important")
+  "Identifiers that appear in the form !foo.")
+
+(defconst scss-bang-ids
+  '("default" "global" "optional")
+  "Additional identifiers that appear in the form !foo in SCSS.")
+
 (defconst css-descriptor-ids
   '("ascent" "baseline" "bbox" "cap-height" "centerline" "definition-src"
     "descent" "font-family" "font-size" "font-stretch" "font-style"
@@ -236,8 +244,8 @@
 
 (defun css--font-lock-keywords (&optional sassy)
   `((,(concat "!\\s-*"
-              (regexp-opt (append (if sassy '("global"))
-                                  '("important"))))
+              (regexp-opt (append (if sassy scss-bang-ids)
+                                  css-bang-ids)))
      (0 font-lock-builtin-face))
     ;; Atrules keywords.  IDs not in css-at-ids are valid (ignored).
     ;; In fact the regexp should probably be
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index 8c8e679..cd8ec0e 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -144,7 +144,7 @@ Interactively, URL defaults to the string looking like a 
url around point."
 (defun xwidget-webkit-scroll-up ()
   "Scroll webkit up.
 Depending on the value of `xwidget-webkit-scroll-behavior',
-this scrolls in 'native' fashion, or like `image-mode' would."
+this scrolls in `native' fashion, or like `image-mode' would."
   (interactive)
   (if (eq xwidget-webkit-scroll-behavior 'native)
       (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t 50)
@@ -153,7 +153,7 @@ this scrolls in 'native' fashion, or like `image-mode' 
would."
 (defun xwidget-webkit-scroll-down ()
   "Scroll webkit down.
 Depending on the value of `xwidget-webkit-scroll-behavior',
-this scrolls in 'native' fashion, or like `image-mode' would."
+this scrolls in `native' fashion, or like `image-mode' would."
   (interactive)
   (if (eq xwidget-webkit-scroll-behavior 'native)
       (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t -50)
@@ -162,7 +162,7 @@ this scrolls in 'native' fashion, or like `image-mode' 
would."
 (defun xwidget-webkit-scroll-forward ()
   "Scroll webkit forwards.
 Depending on the value of `xwidget-webkit-scroll-behavior',
-this scrolls in 'native' fashion, or like `image-mode' would."
+this scrolls in `native' fashion, or like `image-mode' would."
   (interactive)
   (if (eq xwidget-webkit-scroll-behavior 'native)
       (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t 50)
@@ -171,7 +171,7 @@ this scrolls in 'native' fashion, or like `image-mode' 
would."
 (defun xwidget-webkit-scroll-backward ()
   "Scroll webkit backwards.
 Depending on the value of `xwidget-webkit-scroll-behavior',
-this scrolls in 'native' fashion, or like `image-mode' would."
+this scrolls in `native' fashion, or like `image-mode' would."
   (interactive)
   (if (eq xwidget-webkit-scroll-behavior 'native)
       (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t -50)
diff --git a/make-dist b/make-dist
index 50662a4..1cd1a50 100755
--- a/make-dist
+++ b/make-dist
@@ -301,7 +301,7 @@ echo "Making links to top-level files"
 ln INSTALL README BUGS ${tempdir}
 ln ChangeLog.*[0-9] Makefile.in autogen.sh configure configure.ac ${tempdir}
 ln config.bat make-dist .dir-locals.el ${tempdir}
-ln aclocal.m4 ${tempdir}
+ln aclocal.m4 CONTRIBUTE ${tempdir}
 
 echo "Creating subdirectories"
 for subdir in site-lisp \
@@ -311,7 +311,7 @@ for subdir in site-lisp \
              nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
              `find etc lisp admin test -type d` \
              doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
-             info m4 msdos \
+             info m4 modules modules/mod-test msdos \
              nextstep nextstep/templates \
              nextstep/Cocoa nextstep/Cocoa/Emacs.base \
              nextstep/Cocoa/Emacs.base/Contents \
@@ -323,7 +323,7 @@ do
 
   if [ "$with_tests" != "yes" ]; then
     case $subdir in
-        test*) continue ;;
+        test*|*/mod-test*) continue ;;
     esac
   fi
 
@@ -362,7 +362,7 @@ echo "Making links to 'build-aux'"
  ln gitlog-to-changelog gitlog-to-emacslog ../${tempdir}/build-aux
  ln install-sh missing move-if-change ../${tempdir}/build-aux
  ln update-copyright update-subdirs ../${tempdir}/build-aux
- ln dir_top make-info-dir ../${tempdir}/build-aux)
+ ln dir_top make-info-dir ar-lib ../${tempdir}/build-aux)
 
 echo "Making links to 'build-aux/snippet'"
 (cd build-aux/snippet
@@ -405,12 +405,25 @@ echo "Making links to 'm4'"
 (cd m4
  ln *.m4 ../${tempdir}/m4)
 
+echo "Making links to 'modules'"
+(cd modules
+ ln *.py ../${tempdir}/modules
+ if [ "$with_tests" = "yes" ]; then
+   for f in `find mod-test -type f`; do
+       case $f in
+           *.log|*.o|*.so) continue ;;
+       esac
+       ln $f ../$tempdir/modules/$f
+   done
+ fi
+)
+
 echo "Making links to 'nt'"
 (cd nt
  ln emacs-x86.manifest emacs-x64.manifest ../${tempdir}/nt
- ln subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
+ ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
  ln *.in gnulib.mk ../${tempdir}/nt
- ln mingw-cfg.site epaths.nt INSTALL.OLD ../${tempdir}/nt
+ ln mingw-cfg.site epaths.nt INSTALL.W64 ../${tempdir}/nt
  ln ChangeLog.*[0-9] INSTALL README README.W32 ../${tempdir}/nt)
 
 echo "Making links to 'nt/inc' and its subdirectories"
diff --git a/src/Makefile.in b/src/Makefile.in
index 1505758..5f72076 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -505,6 +505,11 @@ $(srcdir)/macuvs.h 
$(lispsource)/international/charprop.el: \
 $(lispsource)/international/ucs-normalize.elc: | \
   $(lispsource)/international/charprop.el
 
+## ns-win.el loads ucs-normalize, so it also needs the above-mentioned
+## 2 uni-*.el files to exist.
+$(lispsource)/term/ns-win.elc: | \
+  $(lispsource)/international/charprop.el
+
 lispintdir = ${lispsource}/international
 ${lispintdir}/cp51932.el ${lispintdir}/eucjp-ms.el: FORCE
        ${MAKE} -C ../admin/charsets $(notdir $@)
diff --git a/src/alloc.c b/src/alloc.c
index b40c1f3..f0e9f20 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1122,10 +1122,17 @@ lisp_free (void *block)
 
 /* Use aligned_alloc if it or a simple substitute is available.
    Address sanitization breaks aligned allocation, as of gcc 4.8.2 and
-   clang 3.3 anyway.  */
+   clang 3.3 anyway.  Aligned allocation is incompatible with
+   unexmacosx.c, so don't use it on Darwin.  */
 
-#if ! ADDRESS_SANITIZER
-# if defined HYBRID_MALLOC
+#if ! ADDRESS_SANITIZER && !defined DARWIN_OS
+# if !defined SYSTEM_MALLOC && !defined DOUG_LEA_MALLOC && !defined 
HYBRID_MALLOC
+#  define USE_ALIGNED_ALLOC 1
+#  ifndef HAVE_ALIGNED_ALLOC
+/* Defined in gmalloc.c.  */
+void *aligned_alloc (size_t, size_t);
+#  endif
+# elif defined HYBRID_MALLOC
 #  if defined HAVE_ALIGNED_ALLOC || defined HAVE_POSIX_MEMALIGN
 #   define USE_ALIGNED_ALLOC 1
 #  endif
diff --git a/src/buffer.c b/src/buffer.c
index 3e41067..98b61c3 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2145,16 +2145,16 @@ DEFUN ("barf-if-buffer-read-only", 
Fbarf_if_buffer_read_only,
        doc: /* Signal a `buffer-read-only' error if the current buffer is 
read-only.
 If the text under POSITION (which defaults to point) has the
 `inhibit-read-only' text property set, the error will not be raised.  */)
-  (Lisp_Object pos)
+  (Lisp_Object position)
 {
-  if (NILP (pos))
-    XSETFASTINT (pos, PT);
+  if (NILP (position))
+    XSETFASTINT (position, PT);
   else
-    CHECK_NUMBER (pos);
+    CHECK_NUMBER (position);
 
   if (!NILP (BVAR (current_buffer, read_only))
       && NILP (Vinhibit_read_only)
-      && NILP (Fget_text_property (pos, Qinhibit_read_only, Qnil)))
+      && NILP (Fget_text_property (position, Qinhibit_read_only, Qnil)))
     xsignal1 (Qbuffer_read_only, Fcurrent_buffer ());
   return Qnil;
 }
diff --git a/src/keyboard.c b/src/keyboard.c
index 7e95ad7..baca4b5 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10304,7 +10304,7 @@ handle_interrupt (bool in_signal_handler)
        {
          write_stdout ("Auto-save? (y or n) ");
          c = read_stdin ();
-         if ((c & 040) == 'Y')
+         if (c == 'y' || c == 'Y')
            {
              Fdo_auto_save (Qt, Qnil);
 #ifdef MSDOS
@@ -10336,7 +10336,7 @@ handle_interrupt (bool in_signal_handler)
       write_stdout ("Abort (and dump core)? (y or n) ");
 #endif
       c = read_stdin ();
-      if ((c & ~040) == 'Y')
+      if (c == 'y' || c == 'Y')
        emacs_abort ();
       while (c != '\n')
        c = read_stdin ();
diff --git a/src/menu.c b/src/menu.c
index caae228..cbddef3 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1236,6 +1236,9 @@ no quit occurs and `x-popup-menu' returns nil.  */)
       {
        /* Use the mouse's current position.  */
        struct frame *new_f = SELECTED_FRAME ();
+
+       XSETFASTINT (x, 0);
+       XSETFASTINT (y, 0);
 #ifdef HAVE_X_WINDOWS
        if (FRAME_X_P (new_f))
          {
diff --git a/src/xdisp.c b/src/xdisp.c
index 78fddd6..8f1e98d 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7234,14 +7234,23 @@ get_next_display_element (struct it *it)
                     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
+                    contrast, it->current.pos was 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;
+                   {
+                     int stackp = it->sp - 1;
+
+                     /* Find the stack level with data from buffer.  */
+                     while (stackp >= 0
+                            && STRINGP ((it->stack + stackp)->string))
+                       stackp--;
+                     eassert (stackp >= 0);
+                     pos = (it->stack + stackp)->position;
+                   }
                  else
                    INC_TEXT_POS (pos, it->multibyte_p);
 
diff --git a/src/xwidget.c b/src/xwidget.c
index 8745416..f436e95 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -320,7 +320,7 @@ xwidget_show_view (struct xwidget_view *xv)
                   xv->y + xv->clip_top);
 }
 
-/* Hide an xvidget view.  */
+/* Hide an xwidget view.  */
 static void
 xwidget_hide_view (struct xwidget_view *xv)
 {
diff --git a/test/etags/ruby-src/test1.ru b/test/etags/ruby-src/test1.ru
new file mode 100644
index 0000000..bc9dbec
--- /dev/null
+++ b/test/etags/ruby-src/test1.ru
@@ -0,0 +1,42 @@
+class A
+ def a()
+  super(" do ")
+ end
+ def b()
+ end
+end
+
+module A
+  class B
+    ABC = 4
+    Def_ = 'blah'
+    Xyzzy =10
+
+    def foo!
+    end
+
+    def self._bar?(abc)
+    end
+
+    class << self
+      def qux=(tee)
+      end
+    end
+    def X
+      attr_reader :foo
+      attr_reader :read1 , :read2; attr_writer :write1, :write2
+      attr_writer :bar,
+                  :baz,
+                  :more
+      attr_accessor :tee
+      alias_method :qux, :tee, attr_accessor :bogus
+      alias_method :xyz,
+                   :tee ; attr_reader :subtle
+    end
+  end
+end
+
+A::Constant = 5
+
+# def foo_in_comment
+# end
diff --git a/test/manual/etags/CTAGS.good b/test/manual/etags/CTAGS.good
index 846725e..b78c194 100644
--- a/test/manual/etags/CTAGS.good
+++ b/test/manual/etags/CTAGS.good
@@ -1,17 +1,5 @@
 #a-defer-word  forth-src/test-forth.fth        /^defer #a-defer-word$/
 #some-storage  forth-src/test-forth.fth        /^2000 buffer: #some-storage$/
-$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--no-members' 
${LATEST}ediff$/
-$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--declarations 
--no-members' $/
-$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--members' 
${LATEST}ediff$/
-$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='address@hidden 
--no-member/
-$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='nonexistent 
--members --declar/
-$      make-src/Makefile       /^      @-$(MAKE) ${LATEST}cdiff$/
-$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
-$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
-$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
-$      make-src/Makefile       /^      $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) 
-o etags e/
-$      make-src/Makefile       /^      $(CC) $(CFLAGS) $(CPPFLAGS) -DCTAGS 
$(LDFLAGS) -o/
-$$i    make-src/Makefile       140
 $0x80  c-src/sysdep.h  32
 $SYS_##syscall_na      c-src/sysdep.h  31
 $domain        php-src/lce_functions.php       175
@@ -41,6 +29,9 @@ $unk_comment_lc       php-src/lce_functions.php       117
 $user_comment  php-src/lce_functions.php       109
 $user_comment  php-src/lce_functions.php       167
 $user_comment_lc       php-src/lce_functions.php       115
+${CHECKOBJS}   make-src/Makefile       /^${CHECKOBJS}: CFLAGS=-g3 
-DNULLFREECHECK=0$/
+%cdiff make-src/Makefile       /^%cdiff: CTAGS% CTAGS ${infiles}$/
+%ediff make-src/Makefile       /^%ediff: ETAGS% ETAGS ${infiles}$/
 ($_,$flag,$opt,$f,$r,@temp     perl-src/yagrip.pl      8
 ($prog,$_,@list        perl-src/yagrip.pl      39
 ($string,$flag,@string,@temp,@last     perl-src/yagrip.pl      40
@@ -48,6 +39,7 @@ $user_comment_lc      php-src/lce_functions.php       115
 (another-forth-word    forth-src/test-forth.fth        /^: 
(another-forth-word) ( -- )$/
 +      ruby-src/test.rb        /^        def +(y)$/
 +      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS      make-src/Makefile       /^.PRECIOUS: ETAGS CTAGS ETAGS16 
CTAGS16 ETAGS17 CTA/
 /.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
 /.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
 /.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
@@ -138,6 +130,8 @@ $user_comment_lc    php-src/lce_functions.php       115
 /graymode      ps-src/rfc1245.ps       /^\/graymode true def$/
 /grayness      ps-src/rfc1245.ps       /^\/grayness {$/
 /guillemotleft ps-src/rfc1245.ps       /^\/guillemotleft \/guillemotright 
\/ellipsis \/.notdef /
+/home/www/pub/etags.c.gz       make-src/Makefile       
/^\/home\/www\/pub\/etags.c.gz: etags.c$/
+/home/www/pub/software/unix/etags.tar.gz       make-src/Makefile       
/^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/
 /hx    ps-src/rfc1245.ps       /^\/hx { $/
 /i     ps-src/rfc1245.ps       /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s 
\/t \/u \/v \/w \/x \/y/
 /iacute        ps-src/rfc1245.ps       /^\/iacute \/igrave \/icircumflex 
\/idieresis \/ntilde \/o/
@@ -207,16 +201,6 @@ $user_comment_lc   php-src/lce_functions.php       115
 >      tex-src/texinfo.tex     /^\\def>{{\\tt \\gtr}}$/
 >field1        forth-src/test-forth.fth        /^   9   field   >field1$/
 >field2        forth-src/test-forth.fth        /^   5   field   >field2$/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='--no-members' 
${LATEST}ediff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) 
OPTIONS='--declarations --no-members' ${/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='--members' 
${LATEST}ediff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) 
OPTIONS='address@hidden --no-members/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='nonexistent 
--members --declara/
address@hidden  make-src/Makefile       /^      @$(MAKE) ${LATEST}cdiff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) etags 
"CPPFLAGS=-UVERSION"$/
address@hidden  make-src/Makefile       /^      @$(MAKE) CHECKOBJS= CHECKFLAGS= 
etags "CFLAGS=-an/
address@hidden  make-src/Makefile       /^      @$(MAKE) CHECKOBJS= CHECKFLAGS= 
ctags "CFLAGS=-an/
address@hidden  make-src/Makefile       /^      @$(MAKE) etags CHECKOBJS= 
CHECKFLAGS= REGEXOBJS= /
 A      c.c     162
 A      cp-src/c.C      39
 A      cp-src/c.C      56
@@ -226,9 +210,10 @@ A  cp-src/c.C      73
 A      cp-src/c.C      117
 A      cp-src/fail.C   7
 A      cp-src/fail.C   23
-A      ruby-src/test1.ruby     /^class A$/
-A      ruby-src/test1.ruby     /^module A$/
-ABC    ruby-src/test1.ruby     11
+A      ruby-src/test1.ru       /^class A$/
+A      ruby-src/test1.ru       /^module A$/
+ABC    ruby-src/test1.ru       11
+ADASRC make-src/Makefile       /^ADASRC=etags-test-for.ada 2ataspri.adb 
2ataspri.ad/
 ADDRESS        c-src/emacs/src/gmalloc.c       /^#define ADDRESS(B)    ((void 
*) (((B) - 1) * BLOCKSIZ/
 ALIGNOF_STRUCT_LISP_VECTOR     c-src/emacs/src/lisp.h  1378
 ALLOCATED_BEFORE_DUMPING       c-src/emacs/src/gmalloc.c       /^#define 
ALLOCATED_BEFORE_DUMPING(P) \\$/
@@ -238,6 +223,7 @@ AND y-src/cccp.c    11
 ANSIC  c-src/h.h       84
 ANSIC  c-src/h.h       85
 AREF   c-src/emacs/src/lisp.h  /^AREF (Lisp_Object array, ptrdiff_t idx)$/
+ARGS   make-src/Makefile       /^ARGS=- < srclist$/
 ARITH_EQUAL    c-src/emacs/src/lisp.h  3498
 ARITH_GRTR     c-src/emacs/src/lisp.h  3501
 ARITH_GRTR_OR_EQUAL    c-src/emacs/src/lisp.h  3503
@@ -250,6 +236,7 @@ ARRAY_MARK_FLAG     c-src/emacs/src/lisp.h  768
 ASCII_CHAR_P   c-src/emacs/src/lisp.h  /^#define ASCII_CHAR_P(c) UNSIGNED_CMP 
(c, <, 0x80)$/
 ASET   c-src/emacs/src/lisp.h  /^ASET (Lisp_Object array, ptrdiff_t idx, 
Lisp_Objec/
 ASIZE  c-src/emacs/src/lisp.h  /^ASIZE (Lisp_Object array)$/
+ASRC   make-src/Makefile       /^ASRC=empty.zz empty.zz.gz$/
 AST_Array::AST_Array   cp-src/c.C      /^AST_Array::AST_Array(UTL_ScopedName 
*n, unsigned l/
 AST_ConcreteType::AST_ConcreteType     cp-src/c.C      
/^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/
 AST_Root       cp-src/c.C      92
@@ -291,7 +278,7 @@ B   cp-src/c.C      /^void B::B() {}$/
 B      cp-src/c.C      122
 B      cp-src/fail.C   8
 B      cp-src/fail.C   24
-B      ruby-src/test1.ruby     /^  class B$/
+B      ruby-src/test1.ru       /^  class B$/
 BE_Node        cp-src/c.C      /^void BE_Node::BE_Node() {}$/
 BE_Node        cp-src/c.C      77
 BITS_PER_BITS_WORD     c-src/emacs/src/lisp.h  125
@@ -340,7 +327,7 @@ CAR_SAFE    c-src/emacs/src/lisp.h  /^CAR_SAFE (Lisp_Object 
c)$/
 CATCHER        c-src/emacs/src/lisp.h  3021
 CDR    c-src/emacs/src/lisp.h  /^CDR (Lisp_Object c)$/
 CDR_SAFE       c-src/emacs/src/lisp.h  /^CDR_SAFE (Lisp_Object c)$/
-CFLAGS make-src/Makefile       88
+CFLAGS make-src/Makefile       /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
 CHAR   c-src/etags.c   /^#define CHAR(x)               ((unsigned int)(x) & 
(CHARS - 1))/
 CHAR   y-src/cccp.c    7
 CHARACTERBITS  c-src/emacs/src/lisp.h  2457
@@ -368,7 +355,8 @@ CHAR_TABLE_SET      c-src/emacs/src/lisp.h  
/^CHAR_TABLE_SET (Lisp_Object ct, int idx,
 CHAR_TABLE_STANDARD_SLOTS      c-src/emacs/src/lisp.h  1697
 CHAR_TYPE_SIZE cccp.y  87
 CHAR_TYPE_SIZE y-src/cccp.y    87
-CHECKEROPTS    make-src/Makefile       92
+CHECKFLAGS     make-src/Makefile       /^CHECKFLAGS=-DDEBUG 
-Wno-unused-function$/
+CHECKOBJS      make-src/Makefile       /^CHECKOBJS=chkmalloc.o chkxm.o$/
 CHECK_ARRAY    c-src/emacs/src/lisp.h  /^CHECK_ARRAY (Lisp_Object x, 
Lisp_Object predicate)/
 CHECK_BOOL_VECTOR      c-src/emacs/src/lisp.h  /^CHECK_BOOL_VECTOR 
(Lisp_Object x)$/
 CHECK_BUFFER   c-src/emacs/src/lisp.h  /^CHECK_BUFFER (Lisp_Object x)$/
@@ -407,6 +395,7 @@ CK_REL_R    parse.y /^#define CK_REL_R(x)   if(   ((x)>0 && 
MAX_ROW-(x)<cu/
 CMultiChannelCSC19_3D  cp-src/c.C      2
 CNL    c-src/etags.c   /^#define CNL()                                         
                \\$/
 CNL_SAVE_DEFINEDEF     c-src/etags.c   /^#define CNL_SAVE_DEFINEDEF()          
                                \\$/
+COBOLFLAGS     make-src/Makefile       /^COBOLFLAGS=--language=none 
--regex='\/.......[a-zA-/
 COLORS cp-src/screen.hpp       11
 COMPILEDP      c-src/emacs/src/lisp.h  /^COMPILEDP (Lisp_Object a)$/
 COMPILED_ARGLIST       c-src/emacs/src/lisp.h  2431
@@ -421,10 +410,15 @@ CONSTYPE_HEAP     c-src/emacs/src/lisp.h  3739
 CONSTYPE_PURE  c-src/emacs/src/lisp.h  3739
 CONS_TO_INTEGER        c-src/emacs/src/lisp.h  /^#define CONS_TO_INTEGER(cons, 
type, var)                              \\$/
 CONVERT_CHARSTRING_TO_VALUE    pas-src/common.pas      /^procedure 
CONVERT_CHARSTRING_TO_VALUE;(*($/
-CPPFLAGS       make-src/Makefile       49
+CPPFLAGS       make-src/Makefile       /^CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS 
-DHAVE_GETCW/
+CPSRC  make-src/Makefile       /^CPSRC=c.C abstract.C abstract.H cfront.H 
burton.cp/
+CSRC   make-src/Makefile       /^CSRC=abbrev.c ..\/etags\/h.h .\/\/c.c 
torture.c getopt/
 CTAGS  c-src/etags.c   146
 CTAGS  c-src/etags.c   147
 CTAGS  c-src/etags.c   149
+CTAGS  make-src/Makefile       /^CTAGS: ctags ${infiles}$/
+CTAGS% make-src/Makefile       /^CTAGS%: ctags% ${infiles}$/
+CTAGS13 CTAGS14 CTAGS15        make-src/Makefile       /^CTAGS13 CTAGS14 
CTAGS15: ctags% ${infiles}$/
 CYAN   cp-src/screen.hpp       15
 C_AUTO c-src/etags.c   2198
 C_EXT  c-src/etags.c   2193
@@ -460,7 +454,7 @@ Condition_Variable/t        ada-src/2ataspri.ads    /^   
type Condition_Variable is privat
 Condition_Variable/t   ada-src/2ataspri.ads    /^   type Condition_Variable 
is$/
 Configure      pyt-src/server.py       /^class Configure(Frame, ControlEdit):$/
 ConfirmQuit    pyt-src/server.py       /^def ConfirmQuit(frame, context):$/
-Constant       ruby-src/test1.ruby     26
+Constant       ruby-src/test1.ru       39
 ControlEdit    pyt-src/server.py       /^class ControlEdit(Frame):$/
 Controls       pyt-src/server.py       /^class Controls:$/
 CopyTextString pas-src/common.pas      /^function CopyTextString;(*($/
@@ -522,9 +516,11 @@ DOS_NT     c-src/etags.c   117
 DOS_NT c-src/etags.c   118
 DUMPED c-src/emacs/src/gmalloc.c       80
 Debug  cp-src/functions.cpp    /^void Debug ( int lineno, int level, char* 
func , c/
+Def_   ruby-src/test1.ru       12
 DisposeANameList       pas-src/common.pas      /^procedure DisposeANameList( $/
 DisposeNameList        pas-src/common.pas      /^procedure DisposeNameList;$/
 ELEM_I c-src/h.h       3
+ELSRC  make-src/Makefile       /^ELSRC=TAGTEST.EL 
emacs\/lisp\/progmodes\/etags.el$/
 EMACS_INT      c-src/emacs/src/lisp.h  91
 EMACS_INT      c-src/emacs/src/lisp.h  96
 EMACS_INT      c-src/emacs/src/lisp.h  103
@@ -554,10 +550,16 @@ ENUM_BF   c-src/emacs/src/lisp.h  /^      ENUM_BF 
(specbind_tag) kind : CHAR_BIT;$/
 ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
 EQ     c-src/emacs/src/lisp.h  /^# define EQ(x, y) lisp_h_EQ (x, y)$/
 EQUAL  y-src/cccp.c    12
+ERLSRC make-src/Makefile       /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
 ERROR  y-src/parse.y   303
 ERROR  parse.y 303
 ERROR  y-src/cccp.c    9
+ETAGS  make-src/Makefile       /^ETAGS: FRC etags ${infiles}$/
+ETAGS% make-src/Makefile       /^ETAGS%: FRC etags% ${infiles}$/
+ETAGS12        make-src/Makefile       /^ETAGS12: etags12 ${infiles}$/
+ETAGS13 ETAGS14 ETAGS15        make-src/Makefile       /^ETAGS13 ETAGS14 
ETAGS15: etags% ${infiles}$/
 EXFUN  c-src/emacs/src/lisp.h  /^#define EXFUN(fnname, maxargs) \\$/
+EXTAGS make-src/Makefile       /^EXTAGS: extags ${infiles} Makefile$/
 EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      3497
 EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      4372
 EmptyNmStr     pas-src/common.pas      /^function EmptyNmStr(* : 
NameString*);$/
@@ -570,8 +572,9 @@ Error_Information/t ada-src/2ataspri.ads    /^   type 
Error_Information is new Inte
 Exit_LL_Task/p ada-src/2ataspri.adb    /^   procedure Exit_LL_Task is$/
 Exit_LL_Task/p ada-src/2ataspri.ads    /^   procedure Exit_LL_Task;$/
 ExtractCommentInfo     pas-src/common.pas      /^procedure ExtractCommentInfo; 
(*($/
-FASTCFLAGS     make-src/Makefile       55
-FILTER make-src/Makefile       58
+FASTCFLAGS     make-src/Makefile       /^FASTCFLAGS=-O3 -finline-functions 
-ffast-math -fun/
+FASTCFLAGSWARN make-src/Makefile       /^FASTCFLAGSWARN=${WARNINGS} -Werror 
${FASTCFLAGS}$/
+FILTER make-src/Makefile       /^FILTER=grep -v 
'\\.[Cchefy][lor]*,[1-9][0-9]*' || t/
 FINALIZERP     c-src/emacs/src/lisp.h  /^FINALIZERP (Lisp_Object x)$/
 FINAL_FREE_BLOCKS      c-src/emacs/src/gmalloc.c       135
 FIXNUM_BITS    c-src/emacs/src/lisp.h  252
@@ -579,10 +582,13 @@ FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h  /^#define 
FIXNUM_OVERFLOW_P(i) \\$/
 FIXNUM_OVERFLOW_P      c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (EQ, bool, 
(Lisp_Object x, Lisp_O/
 FLOATP c-src/emacs/src/lisp.h  /^# define FLOATP(x) lisp_h_FLOATP (x)$/
 FLOAT_TO_STRING_BUFSIZE        c-src/emacs/src/lisp.h  3927
+FORTHSRC       make-src/Makefile       /^FORTHSRC=test-forth.fth$/
 FOR_EACH_ALIST_VALUE   c-src/emacs/src/lisp.h  /^#define 
FOR_EACH_ALIST_VALUE(head_var, list_var, v/
 FOR_EACH_TAIL  c-src/emacs/src/lisp.h  /^#define FOR_EACH_TAIL(hare, list, 
tortoise, n)        \\$/
 FRAMEP c-src/emacs/src/lisp.h  /^FRAMEP (Lisp_Object a)$/
+FRC    make-src/Makefile       /^FRC:;$/
 FREEFLOOD      c-src/emacs/src/gmalloc.c       1858
+FSRC   make-src/Makefile       /^FSRC=entry.for entry.strange_suffix 
entry.strange$/
 FUN0   y-src/parse.y   /^yylex FUN0()$/
 FUN0   parse.y /^yylex FUN0()$/
 FUN1   y-src/parse.y   /^yyerror FUN1(char *, s)$/
@@ -653,6 +659,7 @@ GENERIC_PTR cccp.y  58
 GENERIC_PTR    y-src/cccp.y    56
 GENERIC_PTR    y-src/cccp.y    58
 GEQ    y-src/cccp.c    15
+GETOPTOBJS     make-src/Makefile       /^GETOPTOBJS= #getopt.o getopt1.o$/
 GREEN  cp-src/screen.hpp       14
 GROW_RAW_KEYBUF        c-src/emacs/src/keyboard.c      119
 GatherControls pyt-src/server.py       /^    def GatherControls(self):$/
@@ -674,6 +681,7 @@ HASH_TABLE_SIZE     c-src/emacs/src/lisp.h  
/^HASH_TABLE_SIZE (struct Lisp_Hash_Table
 HASH_VALUE     c-src/emacs/src/lisp.h  /^HASH_VALUE (struct Lisp_Hash_Table 
*h, ptrdiff_t i/
 HAVE_NTGUI     c-src/etags.c   116
 HEAP   c-src/emacs/src/gmalloc.c       131
+HTMLSRC        make-src/Makefile       /^HTMLSRC=softwarelibero.html 
index.shtml algrthms.h/
 HTML_help      c-src/etags.c   584
 HTML_labels    c-src/etags.c   /^HTML_labels (FILE *inf)$/
 HTML_suffixes  c-src/etags.c   582
@@ -729,10 +737,11 @@ IsControlChar     pas-src/common.pas      /^function 
IsControlChar; (*($/
 IsControlCharName      pas-src/common.pas      /^function IsControlCharName($/
 Is_Set/f       ada-src/2ataspri.adb    /^   function  Is_Set (Cell : in 
TAS_Cell) return Bo/
 Is_Set/f       ada-src/2ataspri.ads    /^   function  Is_Set       (Cell : in  
   TAS_Cell)/
+JAVASRC        make-src/Makefile       /^JAVASRC=AWTEMul.java KeyEve.java 
SMan.java SysCol./
 KBD_BUFFER_SIZE        c-src/emacs/src/keyboard.c      82
 KBYTES objc-src/PackInsp.m     58
 KEY_TO_CHAR    c-src/emacs/src/keyboard.c      /^#define KEY_TO_CHAR(k) (XINT 
(k) & ((1 << CHARACTE/
-LATEST make-src/Makefile       1
+LATEST make-src/Makefile       /^LATEST=17$/
 LCE_COMMENT    php-src/lce_functions.php       13
 LCE_COMMENT_TOOL       php-src/lce_functions.php       17
 LCE_COMMENT_USER       php-src/lce_functions.php       15
@@ -742,7 +751,7 @@ LCE_MSGSTR  php-src/lce_functions.php       21
 LCE_TEXT       php-src/lce_functions.php       23
 LCE_UNKNOWN    php-src/lce_functions.php       9
 LCE_WS php-src/lce_functions.php       11
-LDFLAGS        make-src/Makefile       50
+LDFLAGS        make-src/Makefile       /^LDFLAGS=#-static -lc_p$/
 LE     y-src/parse.c   7
 LEQ    y-src/cccp.c    14
 LIGHTBLUE      cp-src/screen.hpp       21
@@ -795,6 +804,7 @@ LTGT        cp-src/MDiagArray2.h    35
 LTGT   cp-src/MDiagArray2.h    39
 LTGT   cp-src/MDiagArray2.h    42
 LTGT   cp-src/MDiagArray2.h    144
+LUASRC make-src/Makefile       /^LUASRC=allegro.lua$/
 L_CELL y-src/parse.c   10
 L_CONST        y-src/parse.c   13
 L_FN0  y-src/parse.c   14
@@ -882,6 +892,8 @@ MAGENTA     cp-src/screen.hpp       17
 MAGICBYTE      c-src/emacs/src/gmalloc.c       1856
 MAGICFREE      c-src/emacs/src/gmalloc.c       1855
 MAGICWORD      c-src/emacs/src/gmalloc.c       1854
+MAKE   make-src/Makefile       /^MAKE:=$(MAKE) --no-print-directory$/
+MAKESRC        make-src/Makefile       /^MAKESRC=Makefile$/
 MALLOCFLOOD    c-src/emacs/src/gmalloc.c       1857
 MANY   c-src/emacs/src/lisp.h  2833
 MARKERP        c-src/emacs/src/lisp.h  /^# define MARKERP(x) lisp_h_MARKERP 
(x)$/
@@ -962,7 +974,7 @@ NILP        c-src/emacs/src/lisp.h  /^# define NILP(x) 
lisp_h_NILP (x)$/
 NIL_IS_ZERO    c-src/emacs/src/lisp.h  1515
 NONPOINTER_BITS        c-src/emacs/src/lisp.h  78
 NONPOINTER_BITS        c-src/emacs/src/lisp.h  80
-NONSRCS        make-src/Makefile       35
+NONSRCS        make-src/Makefile       /^NONSRCS=entry.strange lists.erl 
clheir.hpp.gz$/
 NOTEQUAL       y-src/cccp.c    13
 NULL   cccp.y  51
 NULL   y-src/cccp.y    51
@@ -978,14 +990,22 @@ NewLayerSet       lua-src/allegro.lua     /^function 
NewLayerSet (name)$/
 NewNameString  pas-src/common.pas      /^procedure NewNameString; (* (var NSP: 
NameStringPo/
 NmStrToErrStr  pas-src/common.pas      /^function NmStrToErrStr;(*($/
 NmStrToInteger pas-src/common.pas      /^function NmStrToInteger; (* (Str : 
NameString) : i/
+OBJCPPSRC      make-src/Makefile       /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/
+OBJCSRC        make-src/Makefile       /^OBJCSRC=Subprocess.h Subprocess.m 
PackInsp.h PackI/
+OBJS   make-src/Makefile       /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/
 OPENBUTTON     objc-src/PackInsp.m     47
+OPTIONS        make-src/Makefile       /^OPTIONS=--members --declarations 
address@hidden/
 OR     y-src/cccp.c    10
+OTAGS  make-src/Makefile       /^OTAGS: oetags ${SRCS} srclist$/
 OVERLAYP       c-src/emacs/src/lisp.h  /^OVERLAYP (Lisp_Object x)$/
 Objc_help      c-src/etags.c   613
 Objc_suffixes  c-src/etags.c   609
 OperatorFun    c-src/h.h       88
 Overview       tex-src/gzip.texi       /address@hidden Overview, Sample, 
Copying, Top$/
+PASSRC make-src/Makefile       /^PASSRC=common.pas$/
 PDT    c-src/h.h       /^  Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC        make-src/Makefile       /^PERLSRC=htlmify-cystic yagrip.pl 
kai-test.pl mirro/
+PHPSRC make-src/Makefile       /^PHPSRC=lce_functions.php ptest.php 
sendmail.php$/
 PHP_functions  c-src/etags.c   /^PHP_functions (FILE *inf)$/
 PHP_help       c-src/etags.c   639
 PHP_suffixes   c-src/etags.c   637
@@ -996,8 +1016,10 @@ PORManager        php-src/lce_functions.php       498
 PORManager     php-src/lce_functions.php       /^      function PORManager()$/
 POReader       php-src/lce_functions.php       163
 POReader       php-src/lce_functions.php       /^      function 
POReader($domain, $filename)$/
+POSTSCRIPTFLAGS        make-src/Makefile       
/^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/
 PRINT_UNDOCUMENTED_OPTIONS_HELP        c-src/etags.c   804
 PROCESSP       c-src/emacs/src/lisp.h  /^PROCESSP (Lisp_Object a)$/
+PROLSRC        make-src/Makefile       /^PROLSRC=ordsets.prolog natded.prolog$/
 PROP   c-src/emacs/src/keyboard.c      /^#define PROP(IDX) AREF 
(tool_bar_item_properties, /
 PROP   c-src/emacs/src/keyboard.c      8379
 PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT) protect_malloc_/
@@ -1015,6 +1037,7 @@ PSEUDOVECTOR_REST_MASK    c-src/emacs/src/lisp.h  814
 PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h  808
 PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h  809
 PSEUDOVECTOR_TYPEP     c-src/emacs/src/lisp.h  /^PSEUDOVECTOR_TYPEP (struct 
vectorlike_header *a, i/
+PSSRC  make-src/Makefile       /^PSSRC=rfc1245.ps$/
 PS_functions   c-src/etags.c   /^PS_functions (FILE *inf)$/
 PS_help        c-src/etags.c   649
 PS_suffixes    c-src/etags.c   647
@@ -1039,6 +1062,7 @@ PVEC_TERMINAL     c-src/emacs/src/lisp.h  790
 PVEC_TYPE_MASK c-src/emacs/src/lisp.h  819
 PVEC_WINDOW    c-src/emacs/src/lisp.h  786
 PVEC_WINDOW_CONFIGURATION      c-src/emacs/src/lisp.h  791
+PYTSRC make-src/Makefile       /^PYTSRC=server.py$/
 PackageInspector       objc-src/PackInsp.h     /address@hidden 
PackageInspector:WMInspector$/
 Pascal_functions       c-src/etags.c   /^Pascal_functions (FILE *inf)$/
 Pascal_help    c-src/etags.c   621
@@ -1133,6 +1157,8 @@ RECC_UPPER        c-src/emacs/src/regex.h 612
 RECC_WORD      c-src/emacs/src/regex.h 610
 RECC_XDIGIT    c-src/emacs/src/regex.h 614
 RED    cp-src/screen.hpp       16
+REGEX  make-src/Makefile       /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ 
\\t\\n(]+"\\([^"]+\\)"\/$/
+REGEXOBJS      make-src/Makefile       /^REGEXOBJS=regex.o$/
 REGS_FIXED     c-src/emacs/src/regex.h 378
 REGS_REALLOCATE        c-src/emacs/src/regex.h 377
 REGS_UNALLOCATED       c-src/emacs/src/regex.h 376
@@ -1162,6 +1188,7 @@ REG_NOMATCH       c-src/emacs/src/regex.h 301
 REG_NOSUB      c-src/emacs/src/regex.h 276
 REG_NOTBOL     c-src/emacs/src/regex.h 286
 REG_NOTEOL     c-src/emacs/src/regex.h 289
+RELEASELIST    make-src/Makefile       /address@hidden address@hidden j/
 RESUME_POLLING c-src/emacs/src/keyboard.c      2170
 RETURN_UNGCPRO c-src/emacs/src/lisp.h  /^#define RETURN_UNGCPRO(expr)          
        \\$/
 RE_BACKSLASH_ESCAPE_IN_LISTS   c-src/emacs/src/regex.h 47
@@ -1207,6 +1234,9 @@ RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332
 RE_UNMATCHED_RIGHT_PAREN_ORD   c-src/emacs/src/regex.h 136
 RSH    y-src/cccp.c    17
 RTE/s  ada-src/2ataspri.adb    /^   package RTE renames 
Interfaces.C.POSIX_RTE;$/
+RUN    make-src/Makefile       /^RUN=time --quiet --format '%U + %S: %E'$/
+RUN    make-src/Makefile       /^RUN=$/
+RXINCLUDE      make-src/Makefile       /^RXINCLUDE=-Iemacs\/src$/
 Range  cp-src/Range.h  35
 Range  cp-src/Range.h  /^  Range (void)$/
 Range  cp-src/Range.h  /^  Range (const Range& r)$/
@@ -1274,6 +1304,7 @@ SPECPDL_UNWIND    c-src/emacs/src/lisp.h  2944
 SPECPDL_UNWIND_INT     c-src/emacs/src/lisp.h  2946
 SPECPDL_UNWIND_PTR     c-src/emacs/src/lisp.h  2945
 SPECPDL_UNWIND_VOID    c-src/emacs/src/lisp.h  2947
+SRCS   make-src/Makefile       /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} 
${CPSRC} $/
 SREF   c-src/emacs/src/lisp.h  /^SREF (Lisp_Object string, ptrdiff_t index)$/
 SSDATA c-src/emacs/src/lisp.h  /^SSDATA (Lisp_Object string)$/
 SSET   c-src/emacs/src/lisp.h  /^SSET (Lisp_Object string, ptrdiff_t index, 
unsigne/
@@ -1343,15 +1374,16 @@ System.Task_Primitives/s        ada-src/2ataspri.ads    
/^package System.Task_Primitives i
 T      cp-src/fail.C   14
 T2     cp-src/fail.C   16
 T3     c.c     163
+TAGS   make-src/Makefile       /^TAGS: etags.c$/
 TAG_PTR        c-src/emacs/src/lisp.h  /^#define TAG_PTR(tag, ptr) \\$/
 TAG_SYMOFFSET  c-src/emacs/src/lisp.h  /^#define TAG_SYMOFFSET(offset)         
                    \\$/
 TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is private;$/
 TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is$/
 TCB_Ptr/t      ada-src/2ataspri.ads    /^   type TCB_Ptr is access all 
Task_Control_Block;$/
+TCLFLAGS       make-src/Makefile       /^TCLFLAGS=--lang=none --regex='\/proc[ 
\\t]+\\([^ \\t]+/
 TERMINALP      c-src/emacs/src/lisp.h  /^TERMINALP (Lisp_Object a)$/
 TEST   php-src/ptest.php       1
-TEXTAGS        make-src/Makefile       204
-TEXTAGS        make-src/Makefile       219
+TEXSRC make-src/Makefile       /^TEXSRC=testenv.tex gzip.texi texinfo.tex 
nonewline/
 TEX_LESC       c-src/etags.c   4986
 TEX_SESC       c-src/etags.c   4987
 TEX_clgrp      c-src/etags.c   4922
@@ -1433,6 +1465,7 @@ VECTORP   c-src/emacs/src/lisp.h  /^VECTORP (Lisp_Object 
x)$/
 VERSION        c-src/etags.c   789
 VERSION        erl-src/gs_dialog.erl   /^-define(VERSION, '2001.1101').$/
 VERSION        objc-src/PackInsp.m     34
+VHDLFLAGS      make-src/Makefile       /^VHDLFLAGS=--language=none 
--regex='\/[ \\t]*\\(ARCHIT/
 Vabbrev_start_location c-src/abbrev.c  63
 Vabbrev_start_location_buffer  c-src/abbrev.c  66
 Vabbrev_table_name_list        c-src/abbrev.c  43
@@ -1445,6 +1478,7 @@ Vlispy_mouse_stem c-src/emacs/src/keyboard.c      5172
 Vpre_abbrev_expand_hook        c-src/abbrev.c  83
 WAIT_READING_MAX       c-src/emacs/src/lisp.h  4281
 WAIT_READING_MAX       c-src/emacs/src/lisp.h  4283
+WARNINGS       make-src/Makefile       /^WARNINGS=-pedantic -Wall 
-Wpointer-arith -Winline /
 WCHAR_TYPE_SIZE        cccp.y  99
 WCHAR_TYPE_SIZE        y-src/cccp.y    99
 WHITE  cp-src/screen.hpp       27
@@ -1457,6 +1491,7 @@ WorkingDays       cp-src/functions.cpp    /^int 
WorkingDays(Date a, Date b){$/
 Write_Lock/p   ada-src/2ataspri.adb    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
 Write_Lock/p   ada-src/2ataspri.ads    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
 X      c-src/h.h       100
+X      ruby-src/test1.ru       /^    def X$/
 XBOOL_VECTOR   c-src/emacs/src/lisp.h  /^XBOOL_VECTOR (Lisp_Object a)$/
 XBUFFER        c-src/emacs/src/lisp.h  /^XBUFFER (Lisp_Object a)$/
 XBUFFER_OBJFWD c-src/emacs/src/lisp.h  /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
@@ -1534,9 +1569,11 @@ XUNTAG   c-src/emacs/src/lisp.h  /^#  define XUNTAG(a, 
type) lisp_h_XUNTAG (a, type
 XUNTAG c-src/emacs/src/lisp.h  /^XUNTAG (Lisp_Object a, int type)$/
 XWINDOW        c-src/emacs/src/lisp.h  /^XWINDOW (Lisp_Object a)$/
 XX     cp-src/x.cc     1
+Xyzzy  ruby-src/test1.ru       13
 Y      c-src/h.h       100
 YACC   c-src/etags.c   2199
 YELLOW cp-src/screen.hpp       26
+YSRC   make-src/Makefile       /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/
 YYABORT        /usr/share/bison/bison.simple   153
 YYABORT        /usr/share/bison/bison.simple   154
 YYACCEPT       /usr/share/bison/bison.simple   152
@@ -2359,7 +2396,7 @@ __str__   pyt-src/server.py       /^    def 
__str__(self):$/
 __up   c.c     160
 _aligned_blocks        c-src/emacs/src/gmalloc.c       1004
 _aligned_blocks_mutex  c-src/emacs/src/gmalloc.c       518
-_bar?  ruby-src/test1.ruby     /^    def self._bar?(abc)$/
+_bar?  ruby-src/test1.ru       /^    def self._bar?(abc)$/
 _bytes_free    c-src/emacs/src/gmalloc.c       376
 _bytes_used    c-src/emacs/src/gmalloc.c       374
 _chunks_free   c-src/emacs/src/gmalloc.c       375
@@ -2388,7 +2425,7 @@ a c.c     /^a ()$/
 a      c-src/h.h       40
 a      c-src/h.h       103
 a      cp-src/c.C      132
-a      ruby-src/test1.ruby     /^ def a()$/
+a      ruby-src/test1.ru       /^ def a()$/
 a-forth-constant!      forth-src/test-forth.fth        /^99 constant 
a-forth-constant!$/
 a-forth-value? forth-src/test-forth.fth        /^55 value a-forth-value?$/
 a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- 
a*b+c )  + * ;$/
@@ -2513,16 +2550,18 @@ b       c-src/h.h       41
 b      c-src/h.h       103
 b      c-src/h.h       104
 b      cp-src/c.C      132
-b      ruby-src/test1.ruby     /^ def b()$/
+b      ruby-src/test1.ru       /^ def b()$/
 backslash=0    tex-src/texinfo.tex     /^\\let\\indexbackslash=0  %overridden 
during \\printin/
 bar    c-src/c.c       /^void bar() {while(0) {}}$/
 bar    c.c     143
 bar    c-src/h.h       19
 bar    cp-src/x.cc     /^XX::bar()$/
+bar=   ruby-src/test1.ru       /^      attr_writer :bar,$/
 bas_syn        prol-src/natded.prolog  /^bas_syn(n(_)).$/
 base   c-src/emacs/src/lisp.h  2188
 base   cp-src/c.C      /^double base (void) const { return rng_base;  }$/
 base   cp-src/Range.h  /^  double base (void) const { return rng_base;  }$/
+baz=   ruby-src/test1.ru       /^                  :baz,$/
 bb     c.c     275
 bbb    c.c     251
 bbbbbb c-src/h.h       113
@@ -2593,7 +2632,6 @@ bytes_used        c-src/emacs/src/gmalloc.c       312
 c      c.c     180
 c      c-src/h.h       /^#define c() d$/
 c      c-src/h.h       106
-c      make-src/Makefile       222
 c_ext  c-src/etags.c   2271
 caccacacca     c.c     /^caccacacca (a,b,c,d,e,f,g)$/
 cacheLRUEntry_s        c.c     172
@@ -2623,6 +2661,7 @@ charset_unibyte   c-src/emacs/src/regex.h 410
 chartonmstr    pas-src/common.pas      /^function chartonmstr; (*($/
 checkQuotation php-src/lce_functions.php       /^      function 
checkQuotation($str)$/
 check_cons_list        c-src/emacs/src/lisp.h  /^#  define check_cons_list() 
lisp_h_check_cons_list/
+checker        make-src/Makefile       /^checker:$/
 checkhdr       c-src/emacs/src/gmalloc.c       /^checkhdr (const struct hdr 
*hdr)$/
 checkiso       html-src/software.html  /^checkiso$/
 childDidExit   objc-src/Subprocess.m   /^- childDidExit$/
@@ -2631,6 +2670,7 @@ chunks_used       c-src/emacs/src/gmalloc.c       311
 cjava  c-src/etags.c   2936
 class_method   ruby-src/test.rb        /^        def 
ClassExample.class_method$/
 classifyLine   php-src/lce_functions.php       /^      function 
classifyLine($line)$/
+clean  make-src/Makefile       /^clean:$/
 clear  cp-src/conway.hpp       /^    void clear(void) { alive = 0; }$/
 clear-abbrev-table     c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
 clear-this-command-keys        c-src/emacs/src/keyboard.c      /^DEFUN 
("clear-this-command-keys", Fclear_this_comm/
@@ -2691,6 +2731,7 @@ createWidgets     pyt-src/server.py       /^    def 
createWidgets(self):$/
 cscInitTime    cp-src/c.C      7
 cscSegmentationTime    cp-src/c.C      8
 cstack c-src/etags.c   2523
+ctags  make-src/Makefile       /^ctags: etags.c ${OBJS}$/
 curlb  c-src/etags.c   2929
 curlinepos     c-src/etags.c   2931
 current-idle-time      c-src/emacs/src/keyboard.c      /^DEFUN 
("current-idle-time", Fcurrent_idle_time, Sc/
@@ -2828,6 +2869,7 @@ error     y-src/cccp.y    /^error (msg)$/
 error_signaled c-src/etags.c   264
 etags  el-src/emacs/lisp/progmodes/etags.el    /^(defgroup etags nil "Tags 
tables."$/
 etags  html-src/software.html  /^Etags$/
+etags  make-src/Makefile       /^etags: etags.c ${OBJS}$/
 etags--xref-find-definitions   el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags--xref-find-definitions (pattern &opti/
 etags--xref-limit      el-src/emacs/lisp/progmodes/etags.el    /^(defconst 
etags--xref-limit 1000)$/
 etags-file-of-tag      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-file-of-tag (&optional relative) ; Do/
@@ -2843,6 +2885,7 @@ etags-tags-table-files    
el-src/emacs/lisp/progmodes/etags.el    /^(defun etags-tags-
 etags-verify-tags-table        el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-verify-tags-table ()$/
 etags-xref-find        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-xref-find (action id)$/
 etags-xref-find-definitions-tag-order  el-src/emacs/lisp/progmodes/etags.el    
/^(defvar etags-xref-find-definitions-tag-order '(ta/
+etags.1.man    make-src/Makefile       /^etags.1.man: etags.1$/
 etags_getcwd   c-src/etags.c   /^etags_getcwd (void)$/
 eval_dyn       c-src/emacs/src/keyboard.c      /^eval_dyn (Lisp_Object form)$/
 event-convert-list     c-src/emacs/src/keyboard.c      /^DEFUN 
("event-convert-list", Fevent_convert_list, /
@@ -2890,6 +2933,8 @@ f cp-src/fail.C   /^int A::B::f() { return 2; }$/
 f1     c.c     /^     f1 () { \/* Do something. *\/; }$/
 f2     c.c     /^void f2 () { \/* Do something. *\/; }$/
 fast_string_match_ignore_case  c-src/emacs/src/lisp.h  
/^fast_string_match_ignore_case (Lisp_Object regexp,/
+fastctags      make-src/Makefile       /^fastctags:$/
+fastetags      make-src/Makefile       /^fastetags:$/
 fastmap        c-src/emacs/src/regex.h 355
 fastmap_accurate       c-src/emacs/src/regex.h 383
 fatal  c-src/etags.c   /^fatal (const char *s1, const char *s2)$/
@@ -2962,7 +3007,8 @@ foo       f-src/entry.for /^       character*(*) function 
foo()$/
 foo    f-src/entry.strange_suffix      /^       character*(*) function foo()$/
 foo    f-src/entry.strange     /^       character*(*) function foo()$/
 foo    php-src/ptest.php       /^foo()$/
-foo!   ruby-src/test1.ruby     /^    def foo!$/
+foo    ruby-src/test1.ru       /^      attr_reader :foo$/
+foo!   ruby-src/test1.ru       /^    def foo!$/
 foobar c-src/c.c       /^int foobar() {;}$/
 foobar c.c     /^extern void foobar (void) __attribute__ ((section /
 foobar2        c-src/h.h       20
@@ -3037,6 +3083,8 @@ get_layer_by_name lua-src/allegro.lua     /^local 
function get_layer_by_name (sprite
 get_tag        c-src/etags.c   /^get_tag (register char *bp, char **namepp)$/
 get_word       c-src/tab.c     /^static char           *get_word(char **str, 
char delim)$/
 getcjmp        c-src/emacs/src/keyboard.c      147
+getopt.o       make-src/Makefile       /^getopt.o: emacs\/lib-src\/getopt.c$/
+getopt1.o      make-src/Makefile       /^getopt1.o: emacs\/lib-src\/getopt1.c$/
 getptys        objc-src/Subprocess.m   /^getptys (int *master, int *slave)$/
 gettext        php-src/lce_functions.php       /^      function 
gettext($msgid)$/
 ggg    c-src/h.h       10
@@ -3109,6 +3157,7 @@ inc       cp-src/Range.h  /^  double inc (void) const { 
return rng_inc;   }$/
 index  c-src/emacs/src/lisp.h  1856
 infabsdir      c-src/etags.c   206
 infabsname     c-src/etags.c   205
+infiles        make-src/Makefile       /^infiles = $(filter-out 
${NONSRCS},${SRCS}) srclist/
 infname        c-src/etags.c   204
 info   c-src/emacs/src/gmalloc.c       157
 infoPanel      objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
@@ -3385,6 +3434,7 @@ main::section_url_base    perl-src/htlmify-cystic /^sub 
section_url_base ()$/
 main::section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
 main::toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
 main::usage    perl-src/yagrip.pl      /^sub usage {$/
+maintaining.info       make-src/Makefile       /^maintaining.info: 
maintaining.texi$/
 make-abbrev-table      c-src/abbrev.c  /^DEFUN ("make-abbrev-table", 
Fmake_abbrev_table, Sm/
 make_C_tag     c-src/etags.c   /^make_C_tag (bool isfun)$/
 make_coor      prol-src/natded.prolog  
/^make_coor(s(_),Alpha,Sem1,Sem2,address@hidden@Sem2).$/
@@ -3417,6 +3467,7 @@ malloc_enable_thread      c-src/emacs/src/gmalloc.c       
/^malloc_enable_thread (void)$/
 malloc_info    c-src/emacs/src/gmalloc.c       167
 malloc_initialize_1    c-src/emacs/src/gmalloc.c       /^malloc_initialize_1 
(void)$/
 mallochook     c-src/emacs/src/gmalloc.c       /^mallochook (size_t size)$/
+man manpage    make-src/Makefile       /^man manpage: etags.1.man$/
 mao    c-src/h.h       101
 map    c-src/emacs/src/keyboard.c      8748
 map_word       prol-src/natded.prolog  /^map_word([[_]|Ws],Exp):-$/
@@ -3464,6 +3515,7 @@ modifier_symbols  c-src/emacs/src/keyboard.c      6327
 modify_event_symbol    c-src/emacs/src/keyboard.c      /^modify_event_symbol 
(ptrdiff_t symbol_num, int mod/
 module_class_method    ruby-src/test.rb        /^    def 
ModuleExample.module_class_method$/
 module_instance_method ruby-src/test.rb        /^    def 
module_instance_method$/
+more=  ruby-src/test1.ru       /^                  :more$/
 more_aligned_int       c.c     165
 morecore_nolock        c-src/emacs/src/gmalloc.c       /^morecore_nolock 
(size_t size)$/
 morecore_recursing     c-src/emacs/src/gmalloc.c       604
@@ -3619,6 +3671,7 @@ obstack_chunk_free        parse.y 47
 ocatseen       c-src/etags.c   2477
 octave_MDiagArray2_h   cp-src/MDiagArray2.h    29
 octave_Range_h cp-src/Range.h  24
+oediff make-src/Makefile       /^oediff: OTAGS ETAGS ${infiles}$/
 offset c-src/etags.c   2494
 offset c-src/emacs/src/lisp.h  2305
 offset c-src/emacs/src/lisp.h  2365
@@ -3810,6 +3863,7 @@ process_file_name c-src/etags.c   /^process_file_name 
(char *file, language *lang)
 process_pending_signals        c-src/emacs/src/keyboard.c      
/^process_pending_signals (void)$/
 process_special_events c-src/emacs/src/keyboard.c      
/^process_special_events (void)$/
 process_tool_bar_item  c-src/emacs/src/keyboard.c      /^process_tool_bar_item 
(Lisp_Object key, Lisp_Objec/
+prof   make-src/Makefile       /^prof: ETAGS$/
 prolog_atom    c-src/etags.c   /^prolog_atom (char *s, size_t pos)$/
 prolog_pr      c-src/etags.c   /^prolog_pr (char *s, char *last)$/
 prolog_skip_comment    c-src/etags.c   /^prolog_skip_comment (linebuffer *plb, 
FILE *inf)$/
@@ -3824,9 +3878,11 @@ put_entries      c-src/etags.c   /^put_entries (register 
node *np)$/
 pvec_type      c-src/emacs/src/lisp.h  780
 quantizing     html-src/algrthms.html  /^Quantizing the Received$/
 questo ../c/c.web      34
+quiettest      make-src/Makefile       /^quiettest:$/
 quit_char      c-src/emacs/src/keyboard.c      192
 quit_throw_to_read_char        c-src/emacs/src/keyboard.c      
/^quit_throw_to_read_char (bool from_signal)$/
-qux=   ruby-src/test1.ruby     /^      def qux=(tee)$/
+qux    ruby-src/test1.ru       /^      alias_method :qux, :tee, attr_accessor 
:bogu/
+qux=   ruby-src/test1.ru       /^      def qux=(tee)$/
 r0     c-src/sysdep.h  54
 r1     c-src/sysdep.h  55
 r_alloc        c-src/emacs/src/lisp.h  /^extern void *r_alloc (void **, 
size_t) ATTRIBUTE_A/
@@ -3850,6 +3906,8 @@ read      cp-src/conway.hpp       /^    char read() { 
return alive; }$/
 read   php-src/lce_functions.php       /^      function read()$/
 read-key-sequence      c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence", Fread_key_sequence, Sr/
 read-key-sequence-vector       c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence-vector", Fread_key_seque/
+read1  ruby-src/test1.ru       /^      attr_reader :read1 , :read2; 
attr_writer :wr/
+read2  ruby-src/test1.ru       /^      attr_reader :read1 , :read2; 
attr_writer :wr/
 read_char      c-src/emacs/src/keyboard.c      /^read_char (int commandflag, 
Lisp_Object map,$/
 read_char_help_form_unwind     c-src/emacs/src/keyboard.c      
/^read_char_help_form_unwind (void)$/
 read_char_minibuf_menu_prompt  c-src/emacs/src/keyboard.c      
/^read_char_minibuf_menu_prompt (int commandflag,$/
@@ -3890,13 +3948,10 @@ reg_errcode_t   c.c     279
 reg_errcode_t  c-src/emacs/src/regex.h 323
 reg_syntax_t   c-src/emacs/src/regex.h 43
 regex  c-src/etags.c   219
-regex  make-src/Makefile       204
-regex  make-src/Makefile       207
-regex  make-src/Makefile       213
-regex  make-src/Makefile       216
-regex  make-src/Makefile       219
+regex.o        make-src/Makefile       /^regex.o: emacs\/src\/regex.c$/
 regex_t        c-src/emacs/src/regex.h 416
 regex_tag_multiline    c-src/etags.c   /^regex_tag_multiline (void)$/
+regexfile      make-src/Makefile       /^regexfile: Makefile$/
 regexp c-src/etags.c   256
 regexp c-src/etags.c   268
 registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/
@@ -3911,6 +3966,7 @@ regular_top_level_message c-src/emacs/src/keyboard.c      
143
 rehash_size    c-src/emacs/src/lisp.h  1835
 rehash_threshold       c-src/emacs/src/lisp.h  1839
 relative_filename      c-src/etags.c   /^relative_filename (char *file, char 
*dir)$/
+release distrib        make-src/Makefile       /^release distrib: web$/
 removeexp      prol-src/natded.prolog  /^removeexp(E,E,'NIL'):-!.$/
 reorder_modifiers      c-src/emacs/src/keyboard.c      /^reorder_modifiers 
(Lisp_Object symbol)$/
 request        c.c     /^request request (a, b)$/
@@ -3934,6 +3990,8 @@ rng_inc   cp-src/Range.h  81
 rng_limit      cp-src/Range.h  80
 rng_nelem      cp-src/Range.h  83
 rosso  cp-src/c.C      40
+rsyncfromfly   make-src/Makefile       /^rsyncfromfly:$/
+rsynctofly     make-src/Makefile       /^rsynctofly:$/
 rtint  c-src/h.h       60
 rtint  c-src/h.h       68
 rtstr  c-src/h.h       61
@@ -4049,6 +4107,7 @@ specbind_tag      c-src/emacs/src/lisp.h  2943
 specbinding    c-src/emacs/src/lisp.h  2955
 specialsymbol  prol-src/natded.prolog  /^specialsymbol(C1,C2,S):-$/
 splitexp       prol-src/natded.prolog  /^splitexp(E,E,('NIL','NIL')):-!.$/
+srclist        make-src/Makefile       /^srclist: Makefile$/
 ss3    c.c     255
 sss1   c.c     252
 sss2   c.c     253
@@ -4071,6 +4130,7 @@ st_C_typedef      c-src/etags.c   2213
 st_none        c-src/etags.c   2206
 stack  c.c     155
 stagseen       c-src/etags.c   2446
+standalone     make-src/Makefile       /^standalone:$/
 start  c-src/emacs/src/regex.h 431
 start  c-src/emacs/src/keyboard.c      8753
 start  php-src/lce_functions.php       /^      function start($line, $class)$/
@@ -4079,6 +4139,7 @@ start_polling     c-src/emacs/src/keyboard.c      
/^start_polling (void)$/
 start_up       prol-src/natded.prolog  /^start_up:-$/
 state_protected_p      c-src/emacs/src/gmalloc.c       400
 statetable     html-src/algrthms.html  /^Next$/
+staticetags    make-src/Makefile       /^staticetags:$/
 step   cp-src/conway.hpp       /^    void step(void) { alive = next_alive; }$/
 step   cp-src/clheir.hpp       /^    virtual void step(void) { }$/
 step_everybody cp-src/clheir.cpp       /^void step_everybody(void)$/
@@ -4105,6 +4166,7 @@ substitute        c-src/etags.c   /^substitute (char *in, 
char *out, struct re_registe/
 subsubsec=\relax       tex-src/texinfo.tex     
/^\\let\\appendixsubsubsec=\\relax$/
 subsubsection  perl-src/htlmify-cystic 27
 subsubsection=\relax   tex-src/texinfo.tex     
/^\\let\\appendixsubsubsection=\\relax$/
+subtle ruby-src/test1.ru       /^                   :tee ; attr_reader 
:subtle$/
 subtree        prol-src/natded.prolog  /^subtree(T,T).$/
 suffix c-src/etags.c   186
 suffixes       c-src/etags.c   195
@@ -4168,6 +4230,7 @@ tag6      c-src/torture.c /^tag6 (void (*handler) (void 
*), void *arg)$/
 tag6   c-src/dostorture.c      /^tag6 (void (*handler) (void *), void *arg)$/
 tag_or_ch      c-src/emacs/src/lisp.h  3026
 taggedfname    c-src/etags.c   207
+tags   make-src/Makefile       /^tags: TAGS$/
 tags-add-tables        el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-add-tables 'ask-user$/
 tags-apropos   el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-apropos 
(regexp)$/
 tags-apropos-additional-actions        el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-apropos-additional-actions nil$/
@@ -4220,6 +4283,8 @@ tags-with-face    el-src/emacs/lisp/progmodes/etags.el    
/^(defmacro tags-with-face (
 target_multibyte       c-src/emacs/src/regex.h 407
 tcpdump        html-src/software.html  /^tcpdump$/
 teats  cp-src/c.C      127
+tee    ruby-src/test1.ru       /^      attr_accessor :tee$/
+tee=   ruby-src/test1.ru       /^      attr_accessor :tee$/
 temporarily_switch_to_single_kboard    c-src/emacs/src/keyboard.c      
/^temporarily_switch_to_single_kboard (struct frame /
 tend   c-src/etags.c   2432
 terminate      objc-src/Subprocess.m   /^- terminate:sender$/
@@ -4228,6 +4293,7 @@ test      c-src/emacs/src/lisp.h  1871
 test   cp-src/c.C      86
 test   erl-src/gs_dialog.erl   /^test() ->$/
 test   go-src/test1.go /^func test(p plus) {$/
+test   make-src/Makefile       /^test:$/
 test   php-src/ptest.php       /^test $/
 test.me22b     lua-src/test.lua        /^   local function test.me22b (one)$/
 test.me_22a    lua-src/test.lua        /^   function test.me_22a(one, two)$/
@@ -4374,15 +4440,12 @@ warning cccp.y  /^warning (msg)$/
 warning        y-src/cccp.y    /^warning (msg)$/
 weak   c-src/emacs/src/lisp.h  1830
 weak_alias     c-src/emacs/src/gmalloc.c       /^weak_alias (free, cfree)$/
+web ftp publish        make-src/Makefile       /^web ftp publish:$/
 what   c-src/etags.c   252
 wheel_syms     c-src/emacs/src/keyboard.c      4628
 where  c-src/emacs/src/lisp.h  2348
 where  cp-src/clheir.hpp       77
 where_in_registry      cp-src/clheir.hpp       15
-width  make-src/Makefile       186
-width  make-src/Makefile       189
-width  make-src/Makefile       192
-width  make-src/Makefile       195
 windowWillClose        objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/
 wipe_kboard    c-src/emacs/src/keyboard.c      /^wipe_kboard (KBOARD *kb)$/
 womboid        c-src/h.h       63
@@ -4390,6 +4453,8 @@ womboid   c-src/h.h       75
 word_size      c-src/emacs/src/lisp.h  1473
 write  php-src/lce_functions.php       /^      function write()$/
 write  php-src/lce_functions.php       /^      function write($save="yes")$/
+write1=        ruby-src/test1.ru       /^      attr_reader :read1 , :read2; 
attr_writer :wr/
+write2=        ruby-src/test1.ru       /^      attr_reader :read1 , :read2; 
attr_writer :wr/
 write_abbrev   c-src/abbrev.c  /^write_abbrev (sym, stream)$/
 write_classname        c-src/etags.c   /^write_classname (linebuffer *cn, 
const char *quali/
 write_lex      prol-src/natded.prolog  /^write_lex(File):-$/
@@ -4420,6 +4485,7 @@ x-get-selection-internal  c.c     /^DEFUN 
("x-get-selection-internal", Fx_get_selecti
 x-get-selection-internal       c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
 xcar_addr      c-src/emacs/src/lisp.h  /^xcar_addr (Lisp_Object c)$/
 xcdr_addr      c-src/emacs/src/lisp.h  /^xcdr_addr (Lisp_Object c)$/
+xdiff  make-src/Makefile       /^xdiff: ETAGS EXTAGS ${infiles}$/
 xmalloc        c-src/etags.c   /^xmalloc (size_t size)$/
 xnew   c-src/etags.c   /^#define xnew(n, Type)      ((Type *) xmalloc ((n) /
 xrealloc       c-src/etags.c   /^xrealloc (void *ptr, size_t size)$/
@@ -4428,6 +4494,8 @@ xref-location-line        
el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod xref-loc
 xref-location-marker   el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod 
xref-location-marker ((l xref-etags-/
 xref-make-etags-location       el-src/emacs/lisp/progmodes/etags.el    
/^(defun xref-make-etags-location (tag-info file)$/
 xrnew  c-src/etags.c   /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
+xx     make-src/Makefile       /^xx="this line is here because of a fontlock 
bug$/
+xyz    ruby-src/test1.ru       /^      alias_method :xyz,$/
 y      cp-src/conway.hpp       7
 y      cp-src/clheir.hpp       49
 y      cp-src/clheir.hpp       58
diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1
index c7b1221..1390187 100644
--- a/test/manual/etags/ETAGS.good_1
+++ b/test/manual/etags/ETAGS.good_1
@@ -2362,49 +2362,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1133
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3009,17 +3061,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2
index 8d0f338..f8b1546 100644
--- a/test/manual/etags/ETAGS.good_2
+++ b/test/manual/etags/ETAGS.good_2
@@ -2931,50 +2931,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1156
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(140,5320
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3580,17 +3631,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3
index 060389c..a1e895a 100644
--- a/test/manual/etags/ETAGS.good_3
+++ b/test/manual/etags/ETAGS.good_3
@@ -2682,49 +2682,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1133
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3356,17 +3408,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4
index 40404f9..32390fa 100644
--- a/test/manual/etags/ETAGS.good_4
+++ b/test/manual/etags/ETAGS.good_4
@@ -2526,49 +2526,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1133
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3173,17 +3225,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5
index 432819d..ee19bcf 100644
--- a/test/manual/etags/ETAGS.good_5
+++ b/test/manual/etags/ETAGS.good_5
@@ -3415,50 +3415,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1156
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(140,5320
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -4091,17 +4142,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6
index 4ad5d76..f4d9ab8 100644
--- a/test/manual/etags/ETAGS.good_6
+++ b/test/manual/etags/ETAGS.good_6
@@ -3415,50 +3415,101 @@ function Square.something:Bar Bar14,148
    local function test.me22b 25,297
    local function test.me22b me22b25,297
 
-make-src/Makefile,1156
+make-src/Makefile,2175
 LATEST=1,0
+RELEASELIST=2,10
+ADASRC=4,104
+ASRC=5,171
+CSRC=6,197
+CPSRC=10,423
+ELSRC=13,614
+ERLSRC=14,661
+FORTHSRC=15,702
+FSRC=16,726
+HTMLSRC=17,776
+JAVASRC=18,844
+LUASRC=19,907
+MAKESRC=20,926
+OBJCSRC=21,943
+OBJCPPSRC=22,999
+PASSRC=23,1035
+PERLSRC=24,1053
+PHPSRC=25,1108
+PSSRC=26,1156
+PROLSRC=27,1173
+PYTSRC=28,1210
+TEXSRC=29,1227
+YSRC=30,1282
+SRCS=31,1325
 NONSRCS=35,1577
+VHDLFLAGS=37,1624
+COBOLFLAGS=38,1827
+POSTSCRIPTFLAGS=39,1889
+TCLFLAGS=40,1943
+GETOPTOBJS=42,2002
+RXINCLUDE=43,2034
+REGEXOBJS=44,2056
+CHECKOBJS=46,2075
+CHECKFLAGS=47,2105
+OBJS=48,2145
 CPPFLAGS=49,2190
 LDFLAGS=50,2259
+WARNINGS=51,2282
+CFLAGS=52,2466
 FASTCFLAGS=55,2530
+FASTCFLAGSWARN=56,2591
 FILTER=58,2641
-       @-$($72,3063
-       @-$($73,3112
-       @-$($74,3176
-       @-$($75,3222
-       @-$($76,3290
-       @-$($77,3382
-       @$(81,3465
-       @$(82,3513
-       @$(83,3576
-       @$(84,3621
-       @$(85,3688
-       @$(86,3779
-${CHECKOBJS}: CFLAGS=88,3805
-       @env CHECKEROPTS=92,3921
-       @$(98,4093
-       @$(106,4249
-       @$(110,4373
-       @$(114,4499
-       @for i in $(140,5320
-       @for i in $(SRCS); do echo $$i;140,5320
-       $(160,6058
-       $(163,6119
-       $(166,6182
-       $(169,6233
-       $(172,6322
-       sdiff --suppress-common-lines --width=width186,6619
-       sdiff --suppress-common-lines --width=width189,6708
-       sdiff --suppress-common-lines --width=width192,6796
-       sdiff --suppress-common-lines --width=width195,6885
-       TEXTAGS=204,7127
-       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
-       ${RUN} etags12 --members -o $@ --regex=regex207,7244
-       ${RUN} ./ctags -o $@ --regex=regex213,7393
-       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
-       TEXTAGS=219,7588
-       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
-       ${RUN} ./extags -e --regex-c=c222,7715
+REGEX=59,2695
+xx=60,2741
+MAKE:MAKE62,2790
+RUN=63,2825
+RUN=64,2865
+OPTIONS=65,2870
+ARGS=66,2922
+infiles 68,2940
+quiettest:quiettest70,3002
+test:test79,3409
+${CHECKOBJS}:${CHECKOBJS}88,3805
+checker:checker90,3849
+standalone:standalone96,4062
+prof:prof101,4168
+fastetags:fastetags104,4198
+fastctags:fastctags108,4322
+staticetags:staticetags112,4446
+rsynctofly:rsynctofly116,4608
+rsyncfromfly:rsyncfromfly119,4698
+web ftp publish:web ftp publish122,4794
+release distrib:release distrib129,5115
+tags:tags134,5255
+clean:clean136,5267
+srclist:srclist139,5302
+regexfile:regexfile143,5391
+/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566
+/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825
+regex.o:regex.o159,6031
+getopt.o:getopt.o162,6086
+getopt1.o:getopt1.o165,6147
+etags:etags168,6210
+ctags:ctags171,6299
+man manpage:man manpage174,6396
+etags.1.man:etags.1.man176,6422
+maintaining.info:maintaining.info179,6475
+TAGS:TAGS182,6557
+%ediff:%ediff185,6587
+oediff:oediff188,6677
+%cdiff:%cdiff191,6764
+xdiff:xdiff194,6854
+ETAGS:ETAGS197,6942
+ETAGS%:ETAGS%200,7012
+ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084
+ETAGS12:ETAGS12206,7216
+OTAGS:OTAGS209,7304
+CTAGS:CTAGS212,7369
+CTAGS%:CTAGS%215,7443
+CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545
+EXTAGS:EXTAGS221,7680
+.PRECIOUS:.PRECIOUS224,7838
+FRC:FRC226,7894
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -4091,17 +4142,33 @@ module ModuleExample1,0
     def module_instance_method46,1051
     def ModuleExample.module_class_methodmodule_class_method49,1131
 
-ruby-src/test1.ruby,191
+ruby-src/test1.ru,828
 class A1,0
  def a(2,8
  def b(5,38
 module A9,57
   class B10,66
     ABC 11,76
-    def foo!13,89
-    def self._bar?(_bar?16,111
-      def qux=(qux=20,162
-A::Constant Constant26,211
+    Def_ 12,88
+    Xyzzy 13,106
+    def foo!15,121
+    def self._bar?(_bar?18,143
+      def qux=(qux=22,194
+    def X25,232
+      attr_reader :foofoo26,242
+      attr_reader :read1 read127,265
+      attr_reader :read1 , :read2;read227,265
+      attr_reader :read1 , :read2; attr_writer :write1,write1=27,265
+      attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,265
+      attr_writer :bar,bar=28,329
+                  :baz,baz=29,353
+                  :moremore=30,377
+      attr_accessor :teetee31,401
+      attr_accessor :teetee=31,401
+      alias_method :qux,qux32,426
+      alias_method :xyz,xyz33,478
+                   :tee ; attr_reader :subtlesubtle34,503
+A::Constant Constant39,568
 
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
diff --git a/test/manual/etags/Makefile b/test/manual/etags/Makefile
index a0cb901..07ad0f4 100644
--- a/test/manual/etags/Makefile
+++ b/test/manual/etags/Makefile
@@ -24,7 +24,7 @@ PHPSRC=$(addprefix ./php-src/,lce_functions.php ptest.php 
sendmail.php)
 PSSRC=$(addprefix ./ps-src/,rfc1245.ps)
 PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog)
 PYTSRC=$(addprefix ./pyt-src/,server.py)
-RBSRC=$(addprefix ./ruby-src/,test.rb test1.ruby)
+RBSRC=$(addprefix ./ruby-src/,test.rb test1.ru)
 TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
 YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
 SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
diff --git a/test/manual/indent/css-mode.css b/test/manual/indent/css-mode.css
index 24166b0..3a00739 100644
--- a/test/manual/indent/css-mode.css
+++ b/test/manual/indent/css-mode.css
@@ -9,7 +9,7 @@ article[role="main"] {
 }
 
 a, b:hover, c {
-    color: black;
+    color: black !important;
 }
 
 a, b:hover {                    /* bug:20282 */
diff --git a/test/manual/indent/scss-mode.scss 
b/test/manual/indent/scss-mode.scss
index 02a4a98..e1ec90a 100644
--- a/test/manual/indent/scss-mode.scss
+++ b/test/manual/indent/scss-mode.scss
@@ -40,11 +40,20 @@ p.#{$name} var
 }
 article[role="main"] {
     $toto: 500 !global;
-    float: left;
+    $var-with-default: 300 !default;
+    float: left !important;
     width: 600px / 888px * 100%;
     height: 100px / 888px * 100%;
 }
 
+%placeholder {
+    color: #f0f0f0;
+}
+
+button {
+    @extend %placeholder !optional;
+}
+
 @import 'reset';
 
 @mixin border-radius($radius) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]