Partially revert last Gnus merge.

The add-face function has been added gnus-compat.el, but is not in
Emacs; this leaves Gnus in an unusable state.

* lisp/gnus/gnus-salt.el (gnus-tree-highlight-node):
* lisp/gnus/gnus-sum.el (gnus-summary-highlight-line):
* lisp/gnus/gnus-group.el (gnus-group-highlight-line): Revert use of add-face.

* lisp/gnus/gnus-util.el (gnus-put-text-property-excluding-characters-with-faces): Restore.
* lisp/progmodes/ruby-mode.el (ruby-indent-beg-re): Add pieces from
ruby-beginning-of-indent, simplify, allow all keywords to have
indentation before them.
(ruby-beginning-of-indent): Adjust for above.  Search until the
found point is not inside a string or comment.
(ruby-font-lock-keywords): Allow symbols to start with "@"
character, give them higher priority than variables.
(ruby-syntax-propertize-function)
(ruby-font-lock-syntactic-keywords): Remove the "not comments"
matchers.  Expression expansions are not comments when inside a
string, and there comment syntax status is irrelevant.
(ruby-match-expression-expansion): New function.  Check that
expression expansion is inside a string, and it's not escaped.
(ruby-font-lock-keywords): Use it.

* test/automated/ruby-mode-tests.el: New tests (Bug#11613).
* lisp/progmodes/ruby-mode.el (ruby-end-of-defun)
(ruby-beginning-of-defun): Simplify, allow indentation before
block beginning and end keywords.  Also, fix accidental change in the former.
Add a couple of xrefs to the Lisp manual.

* markers.texi (Moving Markers): Add xref to Point.

* syntax.texi (Low-Level Parsing): Add xref to Parser State.
Fix for invoking C-h c from the minibuffer.

* help.el (describe-key-briefly): Allow the message to be seen
when invoked from the minibuffer.
* lisp/progmodes/ruby-mode.el
(ruby-beginning-of-defun): Only consider 3 keywords defun beginners.
(ruby-end-of-defun): Expect that the point is at the beginning of
the defun.
* syssignal.h (handle_on_main_thread): Always declare,

even if FORWARD_SIGNAL_TO_MAIN_THREAD is not defined.
This ports to platforms without HAVE_PTHREAD.
* alloc.c (mark_buffer): Revert unsafe marking optimization.
(mark_object): Likewise for frame objects.
Fix compilation failure under ENABLE_CHECKING.

 src/alloc.c [ENABLE_CHECKING]: Include signal.h, since we need SIGABRT.
MS-Windows followup for revision 109909, signal-handler cleanup.

 src/w32proc.c (sigaction): New function, emulates Posix 'sigaction'.
 src/w32.c (sigemptyset): Empty the set.
 (sigsetmask, sigmask, sigblock, sigunblock): Remove unused functions.

 nt/inc/ms-w32.h (struct sigaction): Declare sa_handler __cdecl.
* lisp/simple.el (count-words--buffer-message): Fix narrowing check.
More signal-handler cleanup.

* configure.ac (FLOAT_CHECK_DOMAIN): Comment fix (Bug#12327).
* src/floatfns.c: Comment fix.
* src/lisp.h (force_auto_save_soon): Declare regardless of SIGDANGER.
SIGDANGER might not be in scope so "#ifdef SIGDANGER" is not right,
and anyway the declaration is harmless even if SIGDANGER is not defined.
* src/syssignal.h (SIGIO): Also #undef if (! defined FIONREAD ||
defined BROKEN_FIONREAD).  systty.h formerly did this, but other
source files not surprisingly expected syssignal.h to define, or
not define, SIGIO, and it's cleaner to do it that way, for consistency.
Include <sys/ioctl.h>, for FIONREAD.
* src/systty.h (SIGIO): Do not #undef here; it's now syssignal.h's job.
This eliminates a problem whereby other files mysteriously had
to include "syssignal.h" before including "systty.h" if they
wanted to use "#ifdef SIGIO".
* emacs.c (main): Convert three 'signal' calls to 'sigaction' calls.

Problem introduced when merging patches.  Noted by Eli Zaretskii in
<http://bugs.gnu.org/12327#67>.
Add a utility function buffer-narrowed-p, and use it.

* lisp/subr.el (buffer-narrowed-p): New function.

* lisp/ses.el (ses-widen):
* lisp/simple.el (count-words--buffer-message):
* lisp/net/browse-url.el (browse-url-of-buffer): Use it

* lisp/simple.el (count-words-region): Don't signal an error if there
is a non-nil prefix arg and the mark is not set.

* doc/lispref/positions.texi (Narrowing): Document buffer-narrowed-p.
Auto-commit of generated files.
Let ESC ESC quit in read-char-choice, and use it in userlock.el.

* lisp/subr.el (read-char-choice): Allow quitting via ESC ESC.

* lisp/userlock.el (ask-user-about-supersession-threat): Use
read-char-choice.
Remove obsolete display-buffer-reuse-frames from manuals.

* doc/emacs/windows.texi (Window Choice): Don't mention obsolete
display-buffer-reuse-frames.

* doc/lispref/windows.texi (Display Action Functions)
(Choosing Window Options): Remove obsolete variable
display-buffer-reuse-frames.
* doc/lispref/eval.texi (Intro Eval): Add index entry for sexp.
Fix handling of require-final-newline in after-find-file.

* files.el (after-find-file): Don't fail on a read-only buffer if
require-final-newline is `visit' or `visit-save'.
nt/config.nt: Sync with autogen/config.in.
(NO_ABORT, SIGNAL_H_AHB): Remove.