changeset 5758:a1f281776176

Merge in release commits.
author Stephen J. Turnbull <stephen@xemacs.org>
date Tue, 27 Aug 2013 01:26:29 +0900
parents 92028d89cc66 (diff) 6c2aa9851f5e (current diff)
children 40464b048e7e
files CHANGES-beta ChangeLog lisp/ChangeLog man/ChangeLog src/ChangeLog
diffstat 28 files changed, 787 insertions(+), 599 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Jun 24 02:08:02 2013 +0900
+++ b/CHANGES-beta	Tue Aug 27 01:26:29 2013 +0900
@@ -136,7 +136,7 @@
 -- Improve: Refactor check for Xaw3d. -- Stephen Turnbull
 -- Improve: Remove unused include of process.h from Cygwin. -- Vin Shelton
 -- Improve: gnuclient to fall back to /tmp to search for socket. -- Aidan Kehoe
--- New: Support DESTDIR. -- Jerry Jerry James
+-- New: Support DESTDIR. -- Jerry James
 -- New: Support building texinfo.info in native builds. -- Vin Shelton
 
 Documentation
--- a/ChangeLog	Mon Jun 24 02:08:02 2013 +0900
+++ b/ChangeLog	Tue Aug 27 01:26:29 2013 +0900
@@ -1,3 +1,15 @@
+2013-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* configure.ac (makeinfo):
+	Use basic regexp.  Avoid autoconf errors on empty version strings.
+	Report version found if insufficient.  Lightly tested.
+
+2013-06-25  Jerry James  <james@xemacs.org>
+
+	* INSTALL: Update required makeinfo version.
+	* Makefile.in.in: Check for usable makeinfo before invoking submake.
+	* configure.ac: Try to find makeinfo >= 4.12.
+
 2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.34 "kale" is released.
--- a/INSTALL	Mon Jun 24 02:08:02 2013 +0900
+++ b/INSTALL	Tue Aug 27 01:26:29 2013 +0900
@@ -37,9 +37,8 @@
 miscellaneous data files, and on-line documentation.
 
 XEmacs requires an ANSI C compiler, such as GCC.  If you wish to build the
-documentation yourself, you will need at least version 1.68 of makeinfo (GNU
-texinfo-3.11).  GNU Texinfo 4.2 is strongly recommended; it is necessary for
-building Lisp packages, and we may move to it for the core.
+documentation yourself, you will need at least version 4.12 of makeinfo (GNU
+texinfo-4.12).
 
 BASIC INSTALLATION
 ==================
--- a/Makefile.in.in	Mon Jun 24 02:08:02 2013 +0900
+++ b/Makefile.in.in	Tue Aug 27 01:26:29 2013 +0900
@@ -77,6 +77,7 @@
 CFLAGS=@CFLAGS@
 CPPFLAGS=@CPPFLAGS@
 LDFLAGS=@LDFLAGS@
+MAKEINFO=@MAKEINFO@
 
 ## These help us choose version- and architecture-specific directories
 ## to install files in.
@@ -738,7 +739,7 @@
 	  xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ 	]+'?\\([^ 	]+\\)/\\3/"
 
 info: FRC.info
-	cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
+	if test -n "$(MAKEINFO)"; then cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@; fi
 
 dvi:
 	cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
--- a/configure	Mon Jun 24 02:08:02 2013 +0900
+++ b/configure	Tue Aug 27 01:26:29 2013 +0900
@@ -674,6 +674,7 @@
 sound_cflags
 native_sound_lib
 RECURSIVE_MAKE_ARGS
+MAKEINFO
 ld_libs_all
 ld_libs_window_system
 ld_libs_general
@@ -10559,6 +10560,31 @@
 test -n "$YACC" || YACC="yacc"
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for makeinfo >= 4.12" >&5
+$as_echo_n "checking for makeinfo >= 4.12... " >&6; }
+MAKEINFO=
+for prog in `which -a makeinfo`; do
+  mi_verstr=`$prog --version | sed -n '1s/^.* \([0-9][0-9]*\.[0-9][0-9]*\)$/\1/p'`
+  mi_major=`echo $mi_verstr | cut -d. -f1`
+  mi_minor=`echo $mi_verstr | cut -d. -f2`
+  if test "$mi_major" -gt 4 || ( test "$mi_major" -eq 4 && test "$mi_minor" -gt 11 );
+  then
+    MAKEINFO=$prog
+    break
+  fi
+done
+if test -z $MAKEINFO; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found Makeinfo $mi_verstr.  4.12 or later required." >&5
+$as_echo "$as_me: WARNING: Found Makeinfo $mi_verstr.  4.12 or later required." >&2;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+ac_config_files="$ac_config_files man/Makefile"
+
+
 for ac_header in   a.out.h   elf.h   cygwin/version.h   fcntl.h   libgen.h   locale.h   wchar.h   mach/mach.h   sys/param.h   sys/pstat.h   sys/resource.h   sys/time.h   sys/timeb.h   sys/times.h   sys/un.h   sys/vlimit.h   ulimit.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -21363,7 +21389,8 @@
 
 
 
-RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)' MAKEINFO='\$(MAKEINFO)'"
 
 
 native_sound_lib=$with_native_sound_lib
@@ -22579,6 +22606,7 @@
 for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
+    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
     "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
     "lwlib/config.h") CONFIG_HEADERS="$CONFIG_HEADERS lwlib/config.h" ;;
     "$file") CONFIG_FILES="$CONFIG_FILES $file" ;;
--- a/configure.ac	Mon Jun 24 02:08:02 2013 +0900
+++ b/configure.ac	Tue Aug 27 01:26:29 2013 +0900
@@ -2586,6 +2586,27 @@
 AC_PROG_INSTALL
 AC_PROG_YACC
 
+dnl We need a recent version of makeinfo
+AC_MSG_CHECKING([for makeinfo >= 4.12])
+MAKEINFO=
+for prog in `which -a makeinfo`; do
+  mi_verstr=[`$prog --version | sed -n '1s/^.* \([0-9][0-9]*\.[0-9][0-9]*\)$/\1/p'`]
+  mi_major=`echo $mi_verstr | cut -d. -f1`
+  mi_minor=`echo $mi_verstr | cut -d. -f2`
+  if test "$mi_major" -gt 4 || ( test "$mi_major" -eq 4 && test "$mi_minor" -gt 11 );
+  then
+    MAKEINFO=$prog
+    break
+  fi
+done
+if test -z $MAKEINFO; then
+  AC_MSG_RESULT([no])
+  AC_MSG_WARN([Found Makeinfo $mi_verstr.  4.12 or later required.])
+else
+  AC_MSG_RESULT([yes])
+fi
+AC_CONFIG_FILES([man/Makefile])
+
 dnl checks for header files
 AC_CHECK_HEADERS(dnl
   a.out.h dnl
@@ -5558,7 +5579,8 @@
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
-RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+AC_SUBST(MAKEINFO)
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)' MAKEINFO='\$(MAKEINFO)'"
 AC_SUBST(RECURSIVE_MAKE_ARGS)
 
 AC_SUBST(native_sound_lib,$with_native_sound_lib)
--- a/lisp/ChangeLog	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/ChangeLog	Tue Aug 27 01:26:29 2013 +0900
@@ -1,3 +1,51 @@
+2013-08-21  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* startup.el (normal-top-level):
+	Use #'call-with-condition-handler here when calling
+	#'command-line, giving better backtraces on error.
+	Be careful about the current buffer in HANDLER.
+
+2013-08-21  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* bytecomp.el:
+	* bytecomp.el (gensym):
+	* bytecomp.el (byte-compile-gensym): New.
+	Warn that gensym called in a for-effect context is unlikely to be
+	useful.
+	Warn about non-string non-integer ARGs, this is incorrect.
+	Am not changing the function to error with same, most code that
+	makes the mistake has no problems, which is why it has survived
+	so long.
+	* window-xemacs.el (save-window-excursion/mapping):
+	* window.el (save-window-excursion):
+	Call #'gensym with a string, not a symbol.
+
+2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* isearch-mode.el (isearch-pre-command-hook):
+	If this function is called and (this-command-keys) contains
+	misc-user events, #'key-binding throws an error.
+	Eddie Corns and Alex Belits describe this happening in tracker
+	issue 336, and we can avoid this by catching the error and
+	handling the misc-user event in the same way that #'dispatch-event
+	does.
+	I haven't reproduced the actual error they describe, and welcome
+	testing to make sure it's gone.
+	Thank you Eddie, thank you Alex!
+
+2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* behavior.el:
+	(override-behavior):
+	Correct some spelling and formatting here, thank you Steven
+	Mitchell in tracker issue 826.
+
+2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* mule/latin.el:
+	Add a Latin-script Azeri language environment, with UTF-8 as the
+	encoding and case information for schwa.
+
 2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.34 "kale" is released.
@@ -14,6 +62,26 @@
 	* paragraphs.el (sentence-end): Use octal, not Unicode, escapes.
 	* (sentence-end-base): Use non-ASCII only in Mule.
 
+2013-07-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* minibuf.el (get-user-response):
+	* cmdloop.el (y-or-n-p-minibuf):
+	No need to call #'events-to-keys in these two functions,
+	#'lookup-key accepts events directly.
+	* keymap.el:
+	* keymap.el (events-to-keys):
+	Document this function some more.
+	Stop passing strings through unexamined, treat them as vectors of
+	characters.
+	Event keys are never integers, remove some code that only ran if
+	(integerp (event-key ce)).
+	Event keys are never numbers, don't check for that.
+	Don't create (menu-selection call-interactively function-name)
+	keystrokes for menu choices, #'character-to-event doesn't
+	understand that syntax, so nothing uses it.
+	Don't ever accept mouse events, #'character-to-event doesn't
+	accept our synthesising of them.
+
 2013-06-17  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* process.el (process-synchronize-point): Moved to a label.
--- a/lisp/behavior.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/behavior.el	Tue Aug 27 01:26:29 2013 +0900
@@ -62,7 +62,7 @@
 ;;    package is enabled, the user doesn't have to do anything specific for
 ;;    the package to do its thing -- it happens automatically if the user is
 ;;    using the area whose behavior has been changed.  These include packages
-;;    such as `avoid' (which makes the mouse poointer move when the cursor
+;;    such as `avoid' (which makes the mouse pointer move when the cursor
 ;;    gets too close), EFS (which adds the ability to treat an FTP site as
 ;;    part of the local file system), the packages that supply the
 ;;    mode-specific handling for various files, etc
@@ -285,7 +285,9 @@
 Normally, groups are created and assigned properties by individual packages.
 The resulting hierarchy may not make much sense globally.  This function
 allows the hierarchy and appearance of a group to be specified globally,
-and will take precendence over the properties assigned by `define-behavior-group'.  This allows a global organization to be imposed on groups, while still allowing for graceful handling of new or unknown groups.
+and will take precendence over the properties assigned by
+`define-behavior-group'.  This allows a global organization to be imposed on
+groups, while still allowing for graceful handling of new or unknown groups.
 
 NAME can be a symbol specifying a group name, or a list of
 \(PARENT [...] NAME), where a path from a particular parent is explicitly
--- a/lisp/bytecomp.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/bytecomp.el	Tue Aug 27 01:26:29 2013 +0900
@@ -4111,6 +4111,7 @@
 (byte-defop-compiler-1 integerp)
 (byte-defop-compiler-1 eql)
 (byte-defop-compiler-1 fillarray)
+(byte-defop-compiler-1 gensym)
 
 (defun byte-compile-progn (form)
   (byte-compile-body-do-effect (cdr form)))
@@ -4399,6 +4400,19 @@
       (byte-compile-out-tag donetag))
     (byte-compile-subr-wrong-args form 2)))
 
+(defun byte-compile-gensym (form)
+  (when for-effect
+    (byte-compile-warn "%s: %S: called for-effect, unlikely to be useful"
+                       (car form) form))
+  (when (and (cdr form) (cl-const-expr-p (nth 1 form))
+             (not (typep (cl-const-expr-val (nth 1 form) '#:not-constant)
+                         '(or string integer))))
+    (byte-compile-warn "%s: %s: only strings and integers valid for ARG"
+                       (car form)
+                       (let ((print-readably t))
+                         (prin1-to-string (nth 1 form)))))
+  (byte-compile-normal-call form))
+
 ;;(byte-defop-compiler-1 /= byte-compile-negated)
 (byte-defop-compiler-1 atom byte-compile-negated)
 (byte-defop-compiler-1 nlistp byte-compile-negated)
--- a/lisp/cmdloop.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/cmdloop.el	Tue Aug 27 01:26:29 2013 +0900
@@ -450,8 +450,7 @@
               (message "%s%s%s%s" pre prompt yn (single-key-description event))
               (setq quit-flag nil)
               (signal 'quit '())))
-        (let* ((keys (events-to-keys (vector event)))
-	       (def (lookup-key query-replace-map keys)))
+        (let ((def (lookup-key query-replace-map (vector event))))
           (cond ((eq def 'skip)
                  (message "%s%sNo" prompt yn)
 		 (setq yn nil))
--- a/lisp/isearch-mode.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/isearch-mode.el	Tue Aug 27 01:26:29 2013 +0900
@@ -1579,7 +1579,28 @@
 	 ;; FSF does similar magic in `isearch-other-meta-char', which
 	 ;; is horribly complex.  I *hope* what we do works in all
 	 ;; cases.
-	 (setq this-command (key-binding (this-command-keys))))
+	 (setq this-command
+               (condition-case nil
+                   (key-binding (this-command-keys))
+                 (wrong-type-argument
+                  ;; #'key-binding didn't like one of the events --> it's
+                  ;; probably a misc-user object, repeat what
+                  ;; #'dispatch-event does for this case.
+                  (let ((this-command-keys (this-command-keys))
+                        event-function)
+                    (when (and (> (length this-command-keys) 0)
+                               (misc-user-event-p (aref this-command-keys 0)))
+                      (setq event-function
+                            (event-function (aref this-command-keys 0)))
+                      (case event-function
+                        (call-interactively
+                         (event-object (aref this-command-keys 0)))
+                        (eval
+                         `(lambda nil (interactive)
+                           ,(event-object (aref this-command-keys 0))))
+                        (otherwise
+                         ;; Scrollbar command or the like.
+                         (and (symbolp event-function) event-function)))))))))
 	(t
          (labels
              ((isearch-maybe-frob-keyboard-macros ()
--- a/lisp/keymap.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/keymap.el	Tue Aug 27 01:26:29 2013 +0900
@@ -305,52 +305,54 @@
 
 
 ;;; Converting vectors of events to a read-equivalent form.
-;;; This is used both by call-interactively (for the command history)
-;;; and by macros.el (for saving keyboard macros to a file).
+(defun events-to-keys (events &optional no-mice)
+ "Given a vector of event objects, return a vector of key descriptors.
+
+If all events can be represented unambiguously as characters, return a
+string.  Both the string and the vector will be equivalent to the events, if
+the elements are passed to `character-to-event'.
+
+If an event represents a key press of a printable ASCII character between ?@
+and ?_, with the control modifier and only the control modifier, it is
+returned as a character between ?\x00 and ?\x1f, inclusive. ?\\C-i, ?\\C-j,
+?\\C-m are returned as the symbols `tab', `linefeed' and `return',
+respectively.
 
-;; #### why does (events-to-keys [backspace]) return "\C-h"?
-;; BTW, this function is a mess, and macros.el does *not* use it, in
-;; spite of the above comment.  `format-kbd-macro' is used to save
-;; keyboard macros to a file.
-(defun events-to-keys (events &optional no-mice)
- "Given a vector of event objects, returns a vector of key descriptors,
-or a string (if they all fit in the ASCII range).
-Optional arg NO-MICE means that button events are not allowed."
+There is a similar equivalence between ASCII characters with the meta
+modifier and Latin 1 characters, but this function does not use that
+equivalence.
+
+Obsolete optional argument NO-MICE means that mouse events are not allowed.
+These are actually never allowed, since `character-to-event' never accepts
+them.
+
+EVENTS can be a string, and will be treated as a vector of the events
+corresponding to those characters."
+ ;; This is only used in packages. There were some contexts where it was
+ ;; used in core, but those dated from before #'lookup-key accepted events
+ ;; in KEYS; it conses less and is more accurate to use the events directly,
+ ;; rather than calling this function. It'd be nice to move this to
+ ;; xemacs-base and add an autoload, there's no need for it to be dumped.
  (if (and events (symbolp events)) (setq events (vector events)))
- (cond ((stringp events)
-        events)
-       ((not (vectorp events))
-        (signal 'wrong-type-argument (list 'vectorp events)))
-       ((let* ((length (length events))
+ (check-type events array)
+ (cond ((let* ((length (length events))
                (string (make-string length 0))
                c ce
                (i 0))
           (while (< i length)
             (setq ce (aref events i))
             (or (eventp ce) (setq ce (character-to-event ce)))
-            ;; Normalize `c' to `?c' and `(control k)' to `?\C-k'
-            ;; By passing t for the `allow-meta' arg we could get kbd macros
-            ;; with meta in them to translate to the string form instead of
-            ;; the list/symbol form; but I expect that would cause confusion,
-            ;; so let's use the list/symbol form whenever there's
-            ;; any ambiguity.
+            ;; Normalize `c' to `?c' and `(control k)' to `?\C-k' We don't
+            ;; "normalize" Latin 1 to the corresponding meta characters, or
+            ;; vice-versa.
             (setq c (event-to-character ce))
             (if (and c
                      (key-press-event-p ce))
-                (cond ((symbolp (event-key ce))
-                       (if (get (event-key ce) 'character-of-keysym)
-                           ;; Don't use a string for `backspace' and `tab' to
-                           ;;  avoid that unpleasant little ambiguity.
-                           (setq c nil)))
-                      ((and (= (event-modifier-bits ce) 1) ;control
-                            (integerp (event-key ce)))
-                       (let* ((te (character-to-event c)))
-                         (if (and (symbolp (event-key te))
-                                  (get (event-key te) 'character-of-keysym))
-                             ;; Don't "normalize" (control i) to tab
-                             ;;  to avoid the ambiguity in the other direction
-                             (setq c nil))
-                         (deallocate-event te)))))
+                (if (symbolp (event-key ce))
+                    (if (get (event-key ce) 'character-of-keysym)
+                        ;; Don't use a string `tab' to avoid that unpleasant
+                        ;; little ambiguity.
+                        (setq c nil))))
             (if c
                 (aset string i c)
                 (setq i length string nil))
@@ -358,33 +360,15 @@
           string))
        (t
         (let* ((length (length events))
-               (new (copy-sequence events))
+               (new (vconcat events nil))
                event mods key
                (i 0))
           (while (< i length)
             (setq event (aref events i))
+            (or (eventp event) (setq event (character-to-event event)))
             (cond ((key-press-event-p event)
                    (setq mods (event-modifiers event)
                          key (event-key event))
-                   (if (numberp key)
-                       (setq key (intern (make-string 1 key))))
-                   (aset new i (if mods
-                                   (nconc mods (cons key nil))
-                                   key)))
-                  ((misc-user-event-p event)
-                   (aset new i (list 'menu-selection
-                                     (event-function event)
-                                     (event-object event))))
-                  ((or (button-press-event-p event)
-                       (button-release-event-p event))
-                   (if no-mice
-                       (error
-                         "Mouse events can't be saved in keyboard macros."))
-                   (setq mods (event-modifiers event)
-                         key (intern (format "button%d%s"
-                                             (event-button event)
-                                             (if (button-release-event-p event)
-                                                 "up" ""))))
                    (aset new i (if mods
                                    (nconc mods (cons key nil))
                                    key)))
@@ -392,10 +376,10 @@
                        (and (consp event) (symbolp (car event))))
                    (aset new i event))
                   (t
-                   (signal 'wrong-type-argument (list 'eventp event))))
+                   (signal 'wrong-type-argument
+                           (list 'key-press-event-p event))))
             (setq i (1+ i)))
           new))))
-
 
 (defun next-key-event ()
   "Return the next available keyboard event."
--- a/lisp/minibuf.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/minibuf.el	Tue Aug 27 01:26:29 2013 +0900
@@ -2268,15 +2268,8 @@
 				 (single-key-description event))
 			(setq quit-flag nil)
 			(signal 'quit '())))
-		  (let* ((keys (events-to-keys (vector event)))
-			 (def (lookup-key query-replace-map keys)))
+		  (let ((def (lookup-key query-replace-map (vector event))))
 		    (cond
-; 		     ((eq def 'skip)
-; 		      (message "%s%sNo" question possible)
-; 		      (return nil))
-; 		     ((eq def 'act)
-; 		      (message "%s%sYes" question possible)
-; 		      (return t))
 		     ((eq def 'recenter)
 		      (recenter))
 		     ((or (eq def 'quit) (eq def 'exit-prefix))
--- a/lisp/mule/latin.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/mule/latin.el	Tue Aug 27 01:26:29 2013 +0900
@@ -1778,7 +1778,20 @@
                    (lambda ()
                      ;; Restore the normal case mappings for the characters.
                      (put-case-table-pair ?I ?i (standard-case-table))))
+
+;; Latin-script Azeri. This uses schwa, and has no non-Unicode encoding
+;; available. The Turkish case rules apply, though, so we can copy that
+;; language environment.
 
+(let* ((name (create-variant-language-environment "Turkish" 'utf-8))
+       (assoc (assoc name language-info-alist)))
+  (setf (car assoc) "Azeri")
+  (set-language-info "Azeri" 'locale "az")
+  (put-case-table-pair
+   (decode-char 'ucs #x018F) ;; LATIN CAPITAL LETTER SCHWA
+   (decode-char 'ucs #x0259) ;; LATIN SMALL LETTER SCHWA
+   (standard-case-table)))
+
 (make-coding-system
  'macintosh 'fixed-width "MacRoman"
  '(unicode-map
--- a/lisp/startup.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/startup.el	Tue Aug 27 01:26:29 2013 +0900
@@ -544,59 +544,61 @@
     ;; frame?
     (startup-load-autoloads)
 
-    (let (error-data)
-      ;; if noninteractive, an error will kill us.  by catching and
-      ;; resignalling, we don't accomplish much, but do make it difficult
-      ;; to determine where the error really occurred.  when interactive,
-      ;; however, an error processing the command line does NOT kill us;
-      ;; instead, the error handler tries to display an error on the frame.
-      ;; In that case, we must make sure that all the remaining initialization
-      ;; gets done!!!
-      ;;
-      ;; #### A better solution in the interactive case is to use
-      ;; call-with-condition-handler, which would let us do the rest of
-      ;; the initialization AND allow the user to get an accurate backtrace.
-      (if (noninteractive)
-	  (command-line)
-	(condition-case data
-	    (command-line)
-	  ;; catch non-error signals, especially quit
-	  (t (setq error-data data))))
-      ;; Do this again, in case the init file defined more abbreviations.
-      (setq default-directory (abbreviate-file-name default-directory))
-      ;; Specify the file for recording all the auto save files of
-      ;; this session.  This is used by recover-session.
-      (if auto-save-list-file-prefix
-	  (setq auto-save-list-file-name
-		(expand-file-name
-		 (format "%s%d-%s"
-			 auto-save-list-file-prefix
-			 (emacs-pid)
-			 (system-name)))))
-      (run-hooks 'emacs-startup-hook)
-      (and term-setup-hook
-	   (run-hooks 'term-setup-hook))
-      (setq term-setup-hook nil)
-      ;;      ;; Modify the initial frame based on what the init file puts into
-      ;;      ;; ...-frame-alist.
-      (frame-notice-user-settings)
-      ;;      ;;#### GNU Emacs junk
-      ;;      ;; Now we know the user's default font, so add it to the menu.
-      ;;      (if (fboundp 'font-menu-add-default)
-      ;;	  (font-menu-add-default))
-      (when window-setup-hook
-	(run-hooks 'window-setup-hook))
-      (setq window-setup-hook nil)
-      (if error-data
-	  ;; re-signal, and don't allow continuation as that will probably
-          ;; wipe out the user's .emacs if she hasn't migrated yet!
-	  (signal-error (car error-data) (cdr error-data))))
+    (macrolet
+        ((replace-ntl-buffer (&body body)
+           ;; Create a dynamic variable that won't escape outside this
+           ;; function (which will not be called recursively, and so won't
+           ;; shadow itself) and doesn't require consing a closure at
+           ;; runtime:
+           (cons 'progn (subst '#:ntl-buffer 'ntl-buffer body :test #'eq))))
+      (replace-ntl-buffer
+       (let ((ntl-buffer (current-buffer)))
+         (labels ((after-command-line (&optional error-data)
+                    (with-current-buffer ntl-buffer
+                      ;; Do this again, in case the init file defined more
+                      ;; abbreviations.
+                      (setq default-directory
+                            (abbreviate-file-name default-directory))
+                      ;; Specify the file for recording all the auto save
+                      ;; files of this session.  This is used by
+                      ;; recover-session.
+                      (if auto-save-list-file-prefix
+                          (setq auto-save-list-file-name
+                                (expand-file-name
+                                 (format "%s%d-%s"
+                                         auto-save-list-file-prefix
+                                         (emacs-pid)
+                                         (system-name)))))
+                      (run-hooks 'emacs-startup-hook)
+                      (and term-setup-hook
+                           (run-hooks 'term-setup-hook))
+                      (setq term-setup-hook nil)
+                      ;; Modify the initial frame based on what the init file
+                      ;; puts into ...-frame-alist.
+                      (frame-notice-user-settings)
+                      (when window-setup-hook
+                        (run-hooks 'window-setup-hook))
+                      (setq window-setup-hook nil))))
+           (call-with-condition-handler
+               (if (noninteractive)
+                   #'ignore
+                 ;; If noninteractive, an error will kill us.  When
+                 ;; interactive, however, an error processing the command
+                 ;; line does NOT kill us; instead, the error handler tries
+                 ;; to display an error on the frame.  In that case, we must
+                 ;; make sure that all the remaining initialization gets
+                 ;; done.
+                 #'after-command-line)
+               #'command-line)
+
+           ;; If we're here, we haven't errored, and the function still needs
+           ;; to be called.
+           (after-command-line)))))
 
     (if load-user-init-file-p
-	(maybe-migrate-user-init-file))
-    ;; GNU calls precompute-menubar-bindings.  We don't mix menubars
-    ;; and keymaps.
-    ))
+	(maybe-migrate-user-init-file))))
+;; GNU calls precompute-menubar-bindings.  We don't mix menubars
+;; and keymaps.
 
 (defun command-line-early (args)
   ;; This processes those switches which need to be processed before
--- a/lisp/window-xemacs.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/window-xemacs.el	Tue Aug 27 01:26:29 2013 +0900
@@ -355,8 +355,8 @@
 to them in the restored configuration.  It does not include entries for
 windows that have not changed identity.
 Does not restore the value of point in current buffer."
-  (let ((window-config (gensym 'window-config))
-	(mapping (gensym 'mapping)))
+  (let ((window-config (gensym "window-config"))
+	(mapping (gensym "mapping")))
     `(let ((,window-config (current-window-configuration))
 	   (,mapping))
       (unwind-protect
--- a/lisp/window.el	Mon Jun 24 02:08:02 2013 +0900
+++ b/lisp/window.el	Tue Aug 27 01:26:29 2013 +0900
@@ -202,7 +202,7 @@
 Restores which buffer appears in which window, where display starts,
 as well as the current buffer.
 Does not restore the value of point in current buffer."
-  (let ((window-config (gensym 'window-config)))
+  (let ((window-config (gensym "window-config")))
     `(let ((,window-config (current-window-configuration)))
       (unwind-protect
 	  (progn ,@body)
--- a/man/ChangeLog	Mon Jun 24 02:08:02 2013 +0900
+++ b/man/ChangeLog	Tue Aug 27 01:26:29 2013 +0900
@@ -1,3 +1,10 @@
+2013-06-25  Jerry James  <james@xemacs.org>
+
+	* Makefile.in: New file, so we can replace @MAKEINFO@.
+	* Makefile: Removed.
+	* lispref/packaging.texi: Update required version of makeinfo.
+	* xemacs/packages.texi: Ditto.
+
 2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.34 "kale" is released.
--- a/man/Makefile	Mon Jun 24 02:08:02 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,393 +0,0 @@
-#  Makefile for man subdirectory in XEmacs
-#   Copyright (C) 1995 Board of Trustees, University of Illinois
-#   Copyright (C) 1994, 1995 Sun Microsystems.
-#   Copyright (C) 2005, 2010 Ben Wing.
-
-# This file is part of XEmacs.
-
-# XEmacs is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any
-# later version.
-
-# XEmacs is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with XEmacs; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-DESTDIR=
-
-SHELL    = /bin/sh
-MAKEINFO = makeinfo
-TEXI2DVI = texi2dvi
-TEXI2HTML = texi2html
-TEXI2HTML_NOSPLIT = $(TEXI2HTML) -verbose -subdir $(HTMLDIR)
-TEXI2HTML_SPLIT = $(TEXI2HTML) -verbose -subdir $(HTMLDIR) -split chapter
-
-RM = rm -f
-CP = cp
-
-.SUFFIXES:
-.SUFFIXES: .html .info .texi .dvi .pdf
-
-RECURSIVE_MAKE_ARGS = $(MFLAGS) MAKEINFO='$(MAKEINFO)' TEXI2DVI='$(TEXI2DVI)'
-
-all : info
-
-# Ughhh!  The things we do to have portable makefiles...
-
-INFODIR = ../info
-HTMLDIR = ../html
-PHOTODIR = ../etc/photos
-
-src_files1 = \
-	$(DIR)beta.texi \
-	$(DIR)cl.texi \
-	$(DIR)emodules.texi \
-	$(DIR)external-widget.texi \
-	$(DIR)info.texi \
-	$(DIR)internals.texi \
-	$(DIR)lispref.texi \
-	$(DIR)new-users-guide.texi \
-	$(DIR)standards.texi \
-	$(DIR)termcap.texi \
-	$(DIR)texinfo.texi \
-	$(DIR)widget.texi \
-	$(DIR)xemacs.texi \
-	$(DIR)xemacs-faq.texi
-
-DIR:= 
-src_files := $(src_files1)
-
-DIR := $(INFODIR)/
-info_files := $(src_files1:.texi=.info)
-
-DIR := $(HTMLDIR)/
-html_files := $(src_files1:.texi=.html)
-
-dvi_files := $(src_files:.texi=.dvi)
-
-pdf_files := $(src_files:.texi=.pdf)
-
-
-xemacs-srcs = \
-	xemacs/abbrevs.texi \
-	xemacs/basic.texi \
-	xemacs/buffers.texi \
-	xemacs/building.texi \
-	xemacs/calendar.texi \
-	xemacs/cmdargs.texi \
-	xemacs/custom.texi \
-	xemacs/display.texi \
-	xemacs/entering.texi \
-	xemacs/files.texi \
-	xemacs/fixit.texi \
-	xemacs/frame.texi \
-	xemacs/glossary.texi \
-	xemacs/gnu.texi \
-	xemacs/help.texi \
-	xemacs/indent.texi \
-	xemacs/keystrokes.texi \
-	xemacs/killing.texi \
-	xemacs/m-x.texi \
-	xemacs/major.texi \
-	xemacs/mark.texi \
-	xemacs/menus.texi \
-	xemacs/mini.texi \
-	xemacs/misc.texi \
-	xemacs/mouse.texi \
-	xemacs/mule.texi \
-	xemacs/new.texi \
-	xemacs/packages.texi \
-	xemacs/picture.texi \
-	xemacs/programs.texi \
-	xemacs/reading.texi \
-	xemacs/regs.texi \
-	xemacs/search.texi \
-	xemacs/sending.texi \
-	xemacs/startup.texi \
-	xemacs/text.texi \
-	xemacs/trouble.texi \
-	xemacs/undo.texi \
-	xemacs/windows.texi \
-	xemacs/xemacs.texi
-
-lispref-srcs = \
-	lispref/abbrevs.texi \
-	lispref/annotations.texi \
-	lispref/back.texi \
-	lispref/backups.texi \
-	lispref/buffers.texi \
-	lispref/building.texi \
-	lispref/commands.texi \
-	lispref/compile.texi \
-	lispref/consoles-devices.texi \
-	lispref/control.texi \
-	lispref/customize.texi \
-	lispref/databases.texi \
-	lispref/debugging.texi \
-	lispref/dialog.texi \
-	lispref/display.texi \
-	lispref/dragndrop.texi \
-	lispref/edebug-inc.texi \
-	lispref/edebug.texi \
-	lispref/errors.texi \
-	lispref/eval.texi \
-	lispref/extents.texi \
-	lispref/faces.texi \
-	lispref/files.texi \
-	lispref/frames.texi \
-	lispref/functions.texi \
-	lispref/glyphs.texi \
-	lispref/hash-tables.texi \
-	lispref/help.texi \
-	lispref/hooks.texi \
-	lispref/index.texi \
-	lispref/internationalization.texi \
-	lispref/intro.texi \
-	lispref/keymaps.texi \
-	lispref/ldap.texi \
-	lispref/lispref.texi \
-	lispref/lists.texi \
-	lispref/loading.texi \
-	lispref/locals.texi \
-	lispref/macros.texi \
-	lispref/maps.texi \
-	lispref/markers.texi \
-	lispref/menus.texi \
-	lispref/minibuf.texi \
-	lispref/modes.texi \
-	lispref/mouse.texi \
-	lispref/mule.texi \
-	lispref/numbers.texi \
-	lispref/objects.texi \
-	lispref/os.texi \
-	lispref/packaging.texi \
-	lispref/positions.texi \
-	lispref/processes.texi \
-	lispref/range-tables.texi \
-	lispref/scrollbars.texi \
-	lispref/searching.texi \
-	lispref/sequences.texi \
-	lispref/specifiers.texi \
-	lispref/streams.texi \
-	lispref/strings.texi \
-	lispref/symbols.texi \
-	lispref/syntax.texi \
-	lispref/text.texi \
-	lispref/tips.texi \
-	lispref/toolbar.texi \
-	lispref/tooltalk.texi \
-	lispref/variables.texi \
-	lispref/windows.texi \
-	lispref/x-windows.texi
-
-internals-srcs = \
-	internals/internals.texi
-
-new-users-guide-srcs = \
-	new-users-guide/custom1.texi \
-	new-users-guide/custom2.texi \
-	new-users-guide/edit.texi \
-	new-users-guide/enter.texi \
-	new-users-guide/files.texi \
-	new-users-guide/help.texi \
-	new-users-guide/modes.texi \
-	new-users-guide/new-users-guide.texi \
-	new-users-guide/region.texi \
-	new-users-guide/search.texi \
-	new-users-guide/xmenu.texi
-
-texinfo-srcs = \
-	texinfo/fdl.texi \
-	texinfo/texinfo.texi \
-	texinfo/version.texi
-
-$(INFODIR)/beta.info : beta.texi
-	$(MAKEINFO) -o $(INFODIR)/beta.info beta.texi
-
-$(INFODIR)/cl.info : cl.texi
-	$(MAKEINFO) -o $(INFODIR)/cl.info cl.texi
-
-$(INFODIR)/custom.info : custom.texi
-	$(MAKEINFO) -o $(INFODIR)/custom.info custom.texi
-
-$(INFODIR)/emodules.info : emodules.texi
-	$(MAKEINFO) -o $(INFODIR)/emodules.info emodules.texi
-
-$(INFODIR)/external-widget.info : external-widget.texi
-	$(MAKEINFO) -o $(INFODIR)/external-widget.info external-widget.texi
-
-$(INFODIR)/info.info : info.texi
-	$(MAKEINFO) -o $(INFODIR)/info.info info.texi
-
-$(INFODIR)/standards.info : standards.texi
-	$(MAKEINFO) -o $(INFODIR)/standards.info standards.texi
-
-$(INFODIR)/term.info : term.texi
-	$(MAKEINFO) -o $(INFODIR)/term.info term.texi
-
-$(INFODIR)/termcap.info : termcap.texi
-	$(MAKEINFO) -o $(INFODIR)/termcap.info termcap.texi
-
-$(INFODIR)/widget.info : widget.texi doclicense.texi
-	$(MAKEINFO) -o $(INFODIR)/widget.info widget.texi
-
-$(INFODIR)/xemacs-faq.info : xemacs-faq.texi
-	$(MAKEINFO) -o $(INFODIR)/xemacs-faq.info xemacs-faq.texi
-
-# Manuals with their own subdirectory
-$(INFODIR)/xemacs.info : $(xemacs-srcs)
-	$(MAKEINFO) -P xemacs -o $(INFODIR)/xemacs.info xemacs/xemacs.texi
-
-$(INFODIR)/lispref.info : $(lispref-srcs)
-	$(MAKEINFO) -P lispref -o $(INFODIR)/lispref.info lispref/lispref.texi
-
-$(INFODIR)/internals.info : $(internals-srcs)
-	$(MAKEINFO) -P internals -o $(INFODIR)/internals.info internals/internals.texi
-
-$(INFODIR)/new-users-guide.info : $(new-users-guide-srcs)
-	$(MAKEINFO) -P new-users-guide -o $(INFODIR)/new-users-guide.info new-users-guide/new-users-guide.texi
-
-$(INFODIR)/texinfo.info : $(texinfo-srcs)
-	$(MAKEINFO) -P texinfo -o $(INFODIR)/texinfo.info texinfo/texinfo.texi
-
-xemacs : $(INFODIR)/xemacs.info
-lispref : $(INFODIR)/lispref.info
-internals : $(INFODIR)/internals.info
-new-users-guide.info : $(INFODIR)/new-users-guide.info
-texinfo : $(INFODIR)/texinfo.info
-
-.PHONY : xemacs lispref internals new-users-guide texinfo info dvi pdf
-
-info : $(info_files)
-html : $(html_files)
-
-.texi.dvi:
-	-$(TEXI2DVI) $<
-
-.texi.pdf:
-	-$(TEXI2DVI) --pdf $<
-
-xemacs.dvi : $(xemacs-srcs)
-	$(TEXI2DVI) -I xemacs xemacs/xemacs.texi
-
-lispref.dvi : $(lispref-srcs)
-	$(TEXI2DVI) -I lispref lispref/lispref.texi
-
-internals.dvi : $(internals-srcs)
-	$(TEXI2DVI) -I internals internals/internals.texi
-
-new-users-guide.dvi : $(new-users-guide-srcs)
-	$(TEXI2DVI) -I new-users-guide new-users-guide/new-users-guide.texi
-
-texinfo.dvi : $(texinfo-srcs)
-	$(TEXI2DVI) -I texinfo texinfo/texinfo.texi
-
-dvi : $(dvi_files)
-
-xemacs.pdf: $(xemacs-srcs)
-	$(TEXI2DVI) --pdf -I xemacs xemacs/xemacs.texi
-
-lispref.pdf: $(lispref-srcs)
-	$(TEXI2DVI) --pdf -I lispref lispref/lispref.texi
-
-internals.pdf: $(internals-srcs)
-	$(TEXI2DVI) --pdf -I internals internals/internals.texi
-
-new-users-guide.pdf: $(new-users-guide-srcs)
-	$(TEXI2DVI) --pdf -I new-users-guide new-users-guide/new-users-guide.texi
-
-texinfo.pdf: $(texinfo-srcs)
-	$(TEXI2DVI) --pdf -I texinfo texinfo/texinfo.texi
-
-pdf: $(pdf_files)
-
-.PHONY: mostlyclean clean distclean realclean extraclean
-.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig
-mostlyclean:
-	$(RM) *.toc *.aux *.log *.op *.cp *.cps *.fn *.fns
-	$(RM) *.ky *.kys *.pg *.pgs *.tp *.tps *.vr *.vrs
-clean: mostlyclean
-	$(RM) core *.dvi *.pdf
-distclean-noconfig: clean
-distclean: distclean-noconfig
-realclean-noconfig: distclean-noconfig
-realclean: distclean
-extraclean-noconfig: realclean-noconfig
-	$(RM) *~ \#* */*~ */\#*
-extraclean: realclean
-	$(RM) *~ \#* */*~ */\#*
-
-############################################################################
-
-$(HTMLDIR)/beta.html : beta.texi
-	$(TEXI2HTML_NOSPLIT) beta.texi
-
-$(HTMLDIR)/cl.html : cl.texi
-	$(TEXI2HTML_SPLIT) cl.texi
-
-$(HTMLDIR)/custom.html : custom.texi
-	$(TEXI2HTML_SPLIT) custom.texi
-
-$(HTMLDIR)/emodules.html : emodules.texi
-	$(TEXI2HTML_SPLIT) emodules.texi
-
-$(HTMLDIR)/external-widget.html : external-widget.texi
-	$(TEXI2HTML_SPLIT) external-widget.texi
-
-$(HTMLDIR)/info.html : info.texi
-	$(TEXI2HTML_SPLIT) info.texi
-
-$(HTMLDIR)/standards.html : standards.texi
-	$(TEXI2HTML_SPLIT) standards.texi
-
-$(HTMLDIR)/term.html : term.texi
-	$(TEXI2HTML_SPLIT) term.texi
-
-$(HTMLDIR)/termcap.html : termcap.texi
-	$(TEXI2HTML_SPLIT) termcap.texi
-
-$(HTMLDIR)/widget.html : widget.texi
-	$(TEXI2HTML_SPLIT) widget.texi
-
-$(HTMLDIR)/xemacs-faq.html : xemacs-faq.texi
-	$(TEXI2HTML_NOSPLIT) xemacs-faq.texi
-	$(TEXI2HTML_SPLIT) -top_file xemacs-faq_1.html xemacs-faq.texi
-	$(CP) $(PHOTODIR)/ben.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/cthomp.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/hniksic.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/jwz.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/martin.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/mly.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/piper.png $(HTMLDIR)
-	$(CP) $(PHOTODIR)/slb.png $(HTMLDIR)
-
-# Manuals with their own subdirectory
-$(HTMLDIR)/xemacs.html : $(xemacs-srcs)
-	$(TEXI2HTML_SPLIT) xemacs/xemacs.texi
-
-$(HTMLDIR)/lispref.html : $(lispref-srcs)
-	$(TEXI2HTML_SPLIT) lispref/lispref.texi
-
-$(HTMLDIR)/internals.html : $(internals-srcs)
-	$(TEXI2HTML_SPLIT) internals/internals.texi
-
-$(HTMLDIR)/new-users-guide.html : $(new-users-guide-srcs)
-	$(TEXI2HTML_SPLIT) new-users-guide/new-users-guide.texi
-
-$(HTMLDIR)/texinfo.html : $(texinfo-srcs)
-	$(TEXI2HTML_SPLIT) texinfo/texinfo.texi
-
-xemacs : $(HTMLDIR)/xemacs.html
-lispref : $(HTMLDIR)/lispref.html
-internals : $(HTMLDIR)/internals.html
-new-users-guide.html : $(HTMLDIR)/new-users-guide.html
-texinfo : $(HTMLDIR)/texinfo.html
-
-html : $(html_files)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/Makefile.in	Tue Aug 27 01:26:29 2013 +0900
@@ -0,0 +1,393 @@
+#  Makefile for man subdirectory in XEmacs
+#   Copyright (C) 1995 Board of Trustees, University of Illinois
+#   Copyright (C) 1994, 1995 Sun Microsystems.
+#   Copyright (C) 2005, 2010 Ben Wing.
+
+# This file is part of XEmacs.
+
+# XEmacs is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+
+# XEmacs is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with XEmacs; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+DESTDIR=
+
+SHELL    = /bin/sh
+MAKEINFO = @MAKEINFO@
+TEXI2DVI = texi2dvi
+TEXI2HTML = texi2html
+TEXI2HTML_NOSPLIT = $(TEXI2HTML) -verbose -subdir $(HTMLDIR)
+TEXI2HTML_SPLIT = $(TEXI2HTML) -verbose -subdir $(HTMLDIR) -split chapter
+
+RM = rm -f
+CP = cp
+
+.SUFFIXES:
+.SUFFIXES: .html .info .texi .dvi .pdf
+
+RECURSIVE_MAKE_ARGS = $(MFLAGS) MAKEINFO='$(MAKEINFO)' TEXI2DVI='$(TEXI2DVI)'
+
+all : info
+
+# Ughhh!  The things we do to have portable makefiles...
+
+INFODIR = ../info
+HTMLDIR = ../html
+PHOTODIR = ../etc/photos
+
+src_files1 = \
+	$(DIR)beta.texi \
+	$(DIR)cl.texi \
+	$(DIR)emodules.texi \
+	$(DIR)external-widget.texi \
+	$(DIR)info.texi \
+	$(DIR)internals.texi \
+	$(DIR)lispref.texi \
+	$(DIR)new-users-guide.texi \
+	$(DIR)standards.texi \
+	$(DIR)termcap.texi \
+	$(DIR)texinfo.texi \
+	$(DIR)widget.texi \
+	$(DIR)xemacs.texi \
+	$(DIR)xemacs-faq.texi
+
+DIR:= 
+src_files := $(src_files1)
+
+DIR := $(INFODIR)/
+info_files := $(src_files1:.texi=.info)
+
+DIR := $(HTMLDIR)/
+html_files := $(src_files1:.texi=.html)
+
+dvi_files := $(src_files:.texi=.dvi)
+
+pdf_files := $(src_files:.texi=.pdf)
+
+
+xemacs-srcs = \
+	xemacs/abbrevs.texi \
+	xemacs/basic.texi \
+	xemacs/buffers.texi \
+	xemacs/building.texi \
+	xemacs/calendar.texi \
+	xemacs/cmdargs.texi \
+	xemacs/custom.texi \
+	xemacs/display.texi \
+	xemacs/entering.texi \
+	xemacs/files.texi \
+	xemacs/fixit.texi \
+	xemacs/frame.texi \
+	xemacs/glossary.texi \
+	xemacs/gnu.texi \
+	xemacs/help.texi \
+	xemacs/indent.texi \
+	xemacs/keystrokes.texi \
+	xemacs/killing.texi \
+	xemacs/m-x.texi \
+	xemacs/major.texi \
+	xemacs/mark.texi \
+	xemacs/menus.texi \
+	xemacs/mini.texi \
+	xemacs/misc.texi \
+	xemacs/mouse.texi \
+	xemacs/mule.texi \
+	xemacs/new.texi \
+	xemacs/packages.texi \
+	xemacs/picture.texi \
+	xemacs/programs.texi \
+	xemacs/reading.texi \
+	xemacs/regs.texi \
+	xemacs/search.texi \
+	xemacs/sending.texi \
+	xemacs/startup.texi \
+	xemacs/text.texi \
+	xemacs/trouble.texi \
+	xemacs/undo.texi \
+	xemacs/windows.texi \
+	xemacs/xemacs.texi
+
+lispref-srcs = \
+	lispref/abbrevs.texi \
+	lispref/annotations.texi \
+	lispref/back.texi \
+	lispref/backups.texi \
+	lispref/buffers.texi \
+	lispref/building.texi \
+	lispref/commands.texi \
+	lispref/compile.texi \
+	lispref/consoles-devices.texi \
+	lispref/control.texi \
+	lispref/customize.texi \
+	lispref/databases.texi \
+	lispref/debugging.texi \
+	lispref/dialog.texi \
+	lispref/display.texi \
+	lispref/dragndrop.texi \
+	lispref/edebug-inc.texi \
+	lispref/edebug.texi \
+	lispref/errors.texi \
+	lispref/eval.texi \
+	lispref/extents.texi \
+	lispref/faces.texi \
+	lispref/files.texi \
+	lispref/frames.texi \
+	lispref/functions.texi \
+	lispref/glyphs.texi \
+	lispref/hash-tables.texi \
+	lispref/help.texi \
+	lispref/hooks.texi \
+	lispref/index.texi \
+	lispref/internationalization.texi \
+	lispref/intro.texi \
+	lispref/keymaps.texi \
+	lispref/ldap.texi \
+	lispref/lispref.texi \
+	lispref/lists.texi \
+	lispref/loading.texi \
+	lispref/locals.texi \
+	lispref/macros.texi \
+	lispref/maps.texi \
+	lispref/markers.texi \
+	lispref/menus.texi \
+	lispref/minibuf.texi \
+	lispref/modes.texi \
+	lispref/mouse.texi \
+	lispref/mule.texi \
+	lispref/numbers.texi \
+	lispref/objects.texi \
+	lispref/os.texi \
+	lispref/packaging.texi \
+	lispref/positions.texi \
+	lispref/processes.texi \
+	lispref/range-tables.texi \
+	lispref/scrollbars.texi \
+	lispref/searching.texi \
+	lispref/sequences.texi \
+	lispref/specifiers.texi \
+	lispref/streams.texi \
+	lispref/strings.texi \
+	lispref/symbols.texi \
+	lispref/syntax.texi \
+	lispref/text.texi \
+	lispref/tips.texi \
+	lispref/toolbar.texi \
+	lispref/tooltalk.texi \
+	lispref/variables.texi \
+	lispref/windows.texi \
+	lispref/x-windows.texi
+
+internals-srcs = \
+	internals/internals.texi
+
+new-users-guide-srcs = \
+	new-users-guide/custom1.texi \
+	new-users-guide/custom2.texi \
+	new-users-guide/edit.texi \
+	new-users-guide/enter.texi \
+	new-users-guide/files.texi \
+	new-users-guide/help.texi \
+	new-users-guide/modes.texi \
+	new-users-guide/new-users-guide.texi \
+	new-users-guide/region.texi \
+	new-users-guide/search.texi \
+	new-users-guide/xmenu.texi
+
+texinfo-srcs = \
+	texinfo/fdl.texi \
+	texinfo/texinfo.texi \
+	texinfo/version.texi
+
+$(INFODIR)/beta.info : beta.texi
+	$(MAKEINFO) -o $(INFODIR)/beta.info beta.texi
+
+$(INFODIR)/cl.info : cl.texi
+	$(MAKEINFO) -o $(INFODIR)/cl.info cl.texi
+
+$(INFODIR)/custom.info : custom.texi
+	$(MAKEINFO) -o $(INFODIR)/custom.info custom.texi
+
+$(INFODIR)/emodules.info : emodules.texi
+	$(MAKEINFO) -o $(INFODIR)/emodules.info emodules.texi
+
+$(INFODIR)/external-widget.info : external-widget.texi
+	$(MAKEINFO) -o $(INFODIR)/external-widget.info external-widget.texi
+
+$(INFODIR)/info.info : info.texi
+	$(MAKEINFO) -o $(INFODIR)/info.info info.texi
+
+$(INFODIR)/standards.info : standards.texi
+	$(MAKEINFO) -o $(INFODIR)/standards.info standards.texi
+
+$(INFODIR)/term.info : term.texi
+	$(MAKEINFO) -o $(INFODIR)/term.info term.texi
+
+$(INFODIR)/termcap.info : termcap.texi
+	$(MAKEINFO) -o $(INFODIR)/termcap.info termcap.texi
+
+$(INFODIR)/widget.info : widget.texi doclicense.texi
+	$(MAKEINFO) -o $(INFODIR)/widget.info widget.texi
+
+$(INFODIR)/xemacs-faq.info : xemacs-faq.texi
+	$(MAKEINFO) -o $(INFODIR)/xemacs-faq.info xemacs-faq.texi
+
+# Manuals with their own subdirectory
+$(INFODIR)/xemacs.info : $(xemacs-srcs)
+	$(MAKEINFO) -P xemacs -o $(INFODIR)/xemacs.info xemacs/xemacs.texi
+
+$(INFODIR)/lispref.info : $(lispref-srcs)
+	$(MAKEINFO) -P lispref -o $(INFODIR)/lispref.info lispref/lispref.texi
+
+$(INFODIR)/internals.info : $(internals-srcs)
+	$(MAKEINFO) -P internals -o $(INFODIR)/internals.info internals/internals.texi
+
+$(INFODIR)/new-users-guide.info : $(new-users-guide-srcs)
+	$(MAKEINFO) -P new-users-guide -o $(INFODIR)/new-users-guide.info new-users-guide/new-users-guide.texi
+
+$(INFODIR)/texinfo.info : $(texinfo-srcs)
+	$(MAKEINFO) -P texinfo -o $(INFODIR)/texinfo.info texinfo/texinfo.texi
+
+xemacs : $(INFODIR)/xemacs.info
+lispref : $(INFODIR)/lispref.info
+internals : $(INFODIR)/internals.info
+new-users-guide.info : $(INFODIR)/new-users-guide.info
+texinfo : $(INFODIR)/texinfo.info
+
+.PHONY : xemacs lispref internals new-users-guide texinfo info dvi pdf
+
+info : $(info_files)
+html : $(html_files)
+
+.texi.dvi:
+	-$(TEXI2DVI) $<
+
+.texi.pdf:
+	-$(TEXI2DVI) --pdf $<
+
+xemacs.dvi : $(xemacs-srcs)
+	$(TEXI2DVI) -I xemacs xemacs/xemacs.texi
+
+lispref.dvi : $(lispref-srcs)
+	$(TEXI2DVI) -I lispref lispref/lispref.texi
+
+internals.dvi : $(internals-srcs)
+	$(TEXI2DVI) -I internals internals/internals.texi
+
+new-users-guide.dvi : $(new-users-guide-srcs)
+	$(TEXI2DVI) -I new-users-guide new-users-guide/new-users-guide.texi
+
+texinfo.dvi : $(texinfo-srcs)
+	$(TEXI2DVI) -I texinfo texinfo/texinfo.texi
+
+dvi : $(dvi_files)
+
+xemacs.pdf: $(xemacs-srcs)
+	$(TEXI2DVI) --pdf -I xemacs xemacs/xemacs.texi
+
+lispref.pdf: $(lispref-srcs)
+	$(TEXI2DVI) --pdf -I lispref lispref/lispref.texi
+
+internals.pdf: $(internals-srcs)
+	$(TEXI2DVI) --pdf -I internals internals/internals.texi
+
+new-users-guide.pdf: $(new-users-guide-srcs)
+	$(TEXI2DVI) --pdf -I new-users-guide new-users-guide/new-users-guide.texi
+
+texinfo.pdf: $(texinfo-srcs)
+	$(TEXI2DVI) --pdf -I texinfo texinfo/texinfo.texi
+
+pdf: $(pdf_files)
+
+.PHONY: mostlyclean clean distclean realclean extraclean
+.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig
+mostlyclean:
+	$(RM) *.toc *.aux *.log *.op *.cp *.cps *.fn *.fns
+	$(RM) *.ky *.kys *.pg *.pgs *.tp *.tps *.vr *.vrs
+clean: mostlyclean
+	$(RM) core *.dvi *.pdf
+distclean-noconfig: clean
+distclean: distclean-noconfig
+realclean-noconfig: distclean-noconfig
+realclean: distclean
+extraclean-noconfig: realclean-noconfig
+	$(RM) *~ \#* */*~ */\#*
+extraclean: realclean
+	$(RM) *~ \#* */*~ */\#*
+
+############################################################################
+
+$(HTMLDIR)/beta.html : beta.texi
+	$(TEXI2HTML_NOSPLIT) beta.texi
+
+$(HTMLDIR)/cl.html : cl.texi
+	$(TEXI2HTML_SPLIT) cl.texi
+
+$(HTMLDIR)/custom.html : custom.texi
+	$(TEXI2HTML_SPLIT) custom.texi
+
+$(HTMLDIR)/emodules.html : emodules.texi
+	$(TEXI2HTML_SPLIT) emodules.texi
+
+$(HTMLDIR)/external-widget.html : external-widget.texi
+	$(TEXI2HTML_SPLIT) external-widget.texi
+
+$(HTMLDIR)/info.html : info.texi
+	$(TEXI2HTML_SPLIT) info.texi
+
+$(HTMLDIR)/standards.html : standards.texi
+	$(TEXI2HTML_SPLIT) standards.texi
+
+$(HTMLDIR)/term.html : term.texi
+	$(TEXI2HTML_SPLIT) term.texi
+
+$(HTMLDIR)/termcap.html : termcap.texi
+	$(TEXI2HTML_SPLIT) termcap.texi
+
+$(HTMLDIR)/widget.html : widget.texi
+	$(TEXI2HTML_SPLIT) widget.texi
+
+$(HTMLDIR)/xemacs-faq.html : xemacs-faq.texi
+	$(TEXI2HTML_NOSPLIT) xemacs-faq.texi
+	$(TEXI2HTML_SPLIT) -top_file xemacs-faq_1.html xemacs-faq.texi
+	$(CP) $(PHOTODIR)/ben.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/cthomp.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/hniksic.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/jwz.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/martin.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/mly.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/piper.png $(HTMLDIR)
+	$(CP) $(PHOTODIR)/slb.png $(HTMLDIR)
+
+# Manuals with their own subdirectory
+$(HTMLDIR)/xemacs.html : $(xemacs-srcs)
+	$(TEXI2HTML_SPLIT) xemacs/xemacs.texi
+
+$(HTMLDIR)/lispref.html : $(lispref-srcs)
+	$(TEXI2HTML_SPLIT) lispref/lispref.texi
+
+$(HTMLDIR)/internals.html : $(internals-srcs)
+	$(TEXI2HTML_SPLIT) internals/internals.texi
+
+$(HTMLDIR)/new-users-guide.html : $(new-users-guide-srcs)
+	$(TEXI2HTML_SPLIT) new-users-guide/new-users-guide.texi
+
+$(HTMLDIR)/texinfo.html : $(texinfo-srcs)
+	$(TEXI2HTML_SPLIT) texinfo/texinfo.texi
+
+xemacs : $(HTMLDIR)/xemacs.html
+lispref : $(HTMLDIR)/lispref.html
+internals : $(HTMLDIR)/internals.html
+new-users-guide.html : $(HTMLDIR)/new-users-guide.html
+texinfo : $(HTMLDIR)/texinfo.html
+
+html : $(html_files)
--- a/man/lispref/packaging.texi	Mon Jun 24 02:08:02 2013 +0900
+++ b/man/lispref/packaging.texi	Tue Aug 27 01:26:29 2013 +0900
@@ -524,7 +524,7 @@
 @item GNU make 
 (3.79 or later preferred).
 @item makeinfo 
-(4.2 from texinfo-4.2)
+(4.12 from texinfo-4.12)
 @item GNU tar
 (or equivalent).
 @item GNU gzip
--- a/man/xemacs/packages.texi	Mon Jun 24 02:08:02 2013 +0900
+++ b/man/xemacs/packages.texi	Tue Aug 27 01:26:29 2013 +0900
@@ -420,7 +420,7 @@
 @item GNU make 
 (3.75 or later preferred).
 @item makeinfo 
-(4.2 from GNU texinfo 4.2 or later required).
+(4.12 from GNU texinfo 4.12 or later required).
 @item GNU tar
 (or equivalent).
 @item GNU gzip
--- a/src/ChangeLog	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/ChangeLog	Tue Aug 27 01:26:29 2013 +0900
@@ -1,3 +1,30 @@
+2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* data.c:
+	* data.c (Fcar):
+	* data.c (Fcdr):
+	* data.c (Fmake_weak_box):
+	* data.c (Fweak_box_ref):
+	* data.c (init_marking_ephemerons):
+	* data.c (continue_marking_ephemerons):
+	* data.c (finish_marking_ephemerons):
+	* data.c (prune_ephemerons):
+	* data.c (zap_finalize_list):
+	* data.c (ephemeron_equal):
+	* data.c (ephemeron_hash):
+	* data.c (Fmake_ephemeron):
+	* data.c (Fephemeron_ref):
+	* data.c (Fephemeronp):
+	* sequence.c:
+	* sequence.c (Fcopy_tree):
+	* sequence.c (Freplace):
+	Improve coding style here; #'car and #'cdr accept lists, not just
+	cons cells, update their argument names to reflect that.
+	Follow coding conventions in the weak box and ephemeron code.
+	Don't needlessly abbreviate in copy-tree, use argument names from
+	Common Lisp in #'merge and #'replace.
+	Document ALIST better in #'nsublis, #'sublis.
+
 2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.34 "kale" is released.
@@ -14,6 +41,21 @@
 	* number-gmp.c (init_number_gmp): Add void param to silence GCC.
 	* number-mp.c (init_number_mp): Ditto.
 
+2013-07-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* keymap.c:
+	* keymap.c (key_desc_list_to_event):
+	Drop the allow_menu_events argument.
+	Don't accept lists starting with Qmenu_selection as describing
+	keys, nothing generates them in a way this function
+	understands. The intention is reasonable but the implementation
+	was never documented and never finished.
+	* keymap.c (syms_of_keymap):
+	Drop Qmenu_selection.
+	* events.c (Fcharacter_to_event):
+	* keymap.h:
+	Drop the allow_menu_events argument to key_desc_list_to_event.
+
 2013-06-17  Jerry James  <james@xemacs.org>
 
 	* alloc.c (make_bignum_un): New function.
--- a/src/data.c	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/data.c	Tue Aug 27 01:26:29 2013 +0900
@@ -572,21 +572,21 @@
 /* Extract and set components of lists */
 
 DEFUN ("car", Fcar, 1, 1, 0, /*
-Return the car of CONS.  If CONS is nil, return nil.
+Return the car of LIST.  If LIST is nil, return nil.
 The car of a list or a dotted pair is its first element.
 
-Error if CONS is not nil and not a cons cell.  See also `car-safe'.
+Error if LIST is not nil and not a cons cell.  See also `car-safe'.
 */
-       (cons))
+       (list))
 {
   while (1)
     {
-      if (CONSP (cons))
-	return XCAR (cons);
-      else if (NILP (cons))
+      if (CONSP (list))
+	return XCAR (list);
+      else if (NILP (list))
 	return Qnil;
       else
-	cons = wrong_type_argument (Qlistp, cons);
+	list = wrong_type_argument (Qlistp, list);
     }
 }
 
@@ -599,22 +599,22 @@
 }
 
 DEFUN ("cdr", Fcdr, 1, 1, 0, /*
-Return the cdr of CONS.  If CONS is nil, return nil.
+Return the cdr of LIST.  If LIST is nil, return nil.
 The cdr of a list is the list without its first element.  The cdr of a
 dotted pair (A . B) is the second element, B.
 
 Error if arg is not nil and not a cons cell.  See also `cdr-safe'.
 */
-       (cons))
+       (list))
 {
   while (1)
     {
-      if (CONSP (cons))
-	return XCDR (cons);
-      else if (NILP (cons))
+      if (CONSP (list))
+	return XCDR (list);
+      else if (NILP (list))
 	return Qnil;
       else
-	cons = wrong_type_argument (Qlistp, cons);
+	list = wrong_type_argument (Qlistp, list);
     }
 }
 
@@ -3121,16 +3121,16 @@
 */
        (value))
 {
-  return make_weak_box(value);
+  return make_weak_box (value);
 }
 
 DEFUN ("weak-box-ref", Fweak_box_ref, 1, 1, 0, /*
 Return the contents of weak box WEAK-BOX.
 If the contents have been GCed, return NIL.
 */
-       (wb))
+       (weak_box))
 {
-  return XWEAK_BOX (wb)->value;
+  return XWEAK_BOX (weak_box)->value;
 }
 
 DEFUN ("weak-box-p", Fweak_boxp, 1, 1, 0, /*
@@ -3161,7 +3161,7 @@
 static Lisp_Object Vfinalize_list;
 
 void
-init_marking_ephemerons(void)
+init_marking_ephemerons (void)
 {
   Vnew_all_ephemerons = Qnil;
 }
@@ -3171,7 +3171,7 @@
  * way. */
 
 int
-continue_marking_ephemerons(void)
+continue_marking_ephemerons (void)
 {
   Lisp_Object rest = Vall_ephemerons, next, prev = Qnil;
   int did_mark = 0;
@@ -3217,7 +3217,7 @@
  */
 
 int
-finish_marking_ephemerons(void)
+finish_marking_ephemerons (void)
 {
   Lisp_Object rest = Vall_ephemerons, next, prev = Qnil;
   int did_mark = 0;
@@ -3264,13 +3264,13 @@
 }
 
 void
-prune_ephemerons(void)
+prune_ephemerons (void)
 {
   Vall_ephemerons = Vnew_all_ephemerons;
 }
 
 Lisp_Object
-zap_finalize_list(void)
+zap_finalize_list (void)
 {
   Lisp_Object finalizers = Vfinalize_list;
 
@@ -3306,12 +3306,12 @@
 ephemeron_equal (Lisp_Object obj1, Lisp_Object obj2, int depth, int foldcase)
 {
   return
-    internal_equal_0 (XEPHEMERON_REF (obj1), XEPHEMERON_REF(obj2), depth + 1,
-		      foldcase);
+    internal_equal_0 (XEPHEMERON_REF (obj1), XEPHEMERON_REF (obj2),
+                      depth + 1, foldcase);
 }
 
 static Hashcode
-ephemeron_hash(Lisp_Object obj, int depth, Boolint equalp)
+ephemeron_hash (Lisp_Object obj, int depth, Boolint equalp)
 {
   return internal_hash (XEPHEMERON_REF (obj), depth + 1, equalp);
 }
@@ -3345,11 +3345,11 @@
 /* Ephemerons are special cases in the KKCC mark algorithm, so nothing
    is marked here. */
 static const struct memory_description ephemeron_description[] = {
-  { XD_LISP_OBJECT, offsetof(struct ephemeron, key),
+  { XD_LISP_OBJECT, offsetof (struct ephemeron, key),
     0, { 0 }, XD_FLAG_NO_KKCC },
-  { XD_LISP_OBJECT, offsetof(struct ephemeron, cons_chain),
+  { XD_LISP_OBJECT, offsetof (struct ephemeron, cons_chain),
     0, { 0 }, XD_FLAG_NO_KKCC },
-  { XD_LISP_OBJECT, offsetof(struct ephemeron, value),
+  { XD_LISP_OBJECT, offsetof (struct ephemeron, value),
     0, { 0 }, XD_FLAG_NO_KKCC },
   { XD_END }
 };
@@ -3372,16 +3372,16 @@
 */
        (key, value, finalizer))
 {
-  return make_ephemeron(key, value, finalizer);
+  return make_ephemeron (key, value, finalizer);
 }
 
 DEFUN ("ephemeron-ref",  Fephemeron_ref, 1, 1, 0, /*
 Return the contents of ephemeron EPHEMERON.
 If the contents have been GCed, return NIL.
 */
-       (eph))
+       (ephemeron))
 {
-  return XEPHEMERON_REF (eph);
+  return XEPHEMERON_REF (ephemeron);
 }
 
 DEFUN ("ephemeron-p", Fephemeronp, 1, 1, 0, /*
--- a/src/events.c	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/events.c	Tue Aug 27 01:26:29 2013 +0900
@@ -1441,7 +1441,7 @@
   else
     CHECK_LIVE_EVENT (event);
   if (CONSP (keystroke) || SYMBOLP (keystroke))
-    key_desc_list_to_event (keystroke, event, 1);
+    key_desc_list_to_event (keystroke, event);
   else
     {
       CHECK_CHAR_COERCE_INT (keystroke);
--- a/src/keymap.c	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/keymap.c	Tue Aug 27 01:26:29 2013 +0900
@@ -223,8 +223,6 @@
 Lisp_Object Qbutton##num##up;
 #include "keymap-buttons.h"
 
-Lisp_Object Qmenu_selection;
-
 /* Emacs compatibility */
 #define FROB(num)				\
 Lisp_Object Qmouse_##num;			\
@@ -1520,31 +1518,10 @@
 
 /* Used by character-to-event */
 void
-key_desc_list_to_event (Lisp_Object list, Lisp_Object event,
-                        int allow_menu_events)
+key_desc_list_to_event (Lisp_Object list, Lisp_Object event)
 {
   Lisp_Key_Data raw_key;
 
-  if (allow_menu_events &&
-      CONSP (list) &&
-      /* #### where the hell does this come from? */
-      EQ (XCAR (list), Qmenu_selection))
-    {
-      Lisp_Object fn, arg;
-      if (! NILP (Fcdr (Fcdr (list))))
-	invalid_argument ("Invalid menu event desc", list);
-      arg = Fcar (Fcdr (list));
-      if (SYMBOLP (arg))
-	fn = Qcall_interactively;
-      else
-	fn = Qeval;
-      XSET_EVENT_TYPE (event, misc_user_event);
-      XSET_EVENT_CHANNEL (event, wrap_frame (selected_frame ()));
-      XSET_EVENT_MISC_USER_FUNCTION (event, fn);
-      XSET_EVENT_MISC_USER_OBJECT (event, arg);
-      return;
-    }
-
   define_key_parser (list, &raw_key);
 
   /* The first zero is needed for Apple's i686-apple-darwin8-g++-4.0.1,
@@ -4672,7 +4649,6 @@
   DEFSYMBOL (Qmouse_##num);			\
   DEFSYMBOL (Qdown_mouse_##num);
 #include "keymap-buttons.h"
-  DEFSYMBOL (Qmenu_selection);
   DEFSYMBOL (QLFD);
   DEFSYMBOL (QTAB);
   DEFSYMBOL (QRET);
--- a/src/keymap.h	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/keymap.h	Tue Aug 27 01:26:29 2013 +0900
@@ -56,8 +56,7 @@
 			Lisp_Object shadow, Lisp_Object prefix,
 			int mice_only_p, Lisp_Object buffer);
 
-void key_desc_list_to_event (Lisp_Object list, Lisp_Object event,
-			     int allow_menu_events);
+void key_desc_list_to_event (Lisp_Object list, Lisp_Object event);
 
 int event_matches_key_specifier_p (Lisp_Object event,
 				   Lisp_Object key_specifier);
--- a/src/sequence.c	Mon Jun 24 02:08:02 2013 +0900
+++ b/src/sequence.c	Tue Aug 27 01:26:29 2013 +0900
@@ -1161,12 +1161,12 @@
 Return a copy of a list and substructures.
 The argument is copied, and any lists contained within it are copied
 recursively.  Circularities and shared substructures are not preserved.
-Second arg VECP causes vectors to be copied, too.  Strings and bit vectors
-are not copied.
+Second arg VECTORP causes vectors to be copied, too.  Strings and bit
+vectors are not copied.
 */
-       (arg, vecp))
-{
-  return safe_copy_tree (arg, vecp, 0);
+       (arg, vectorp))
+{
+  return safe_copy_tree (arg, vectorp, 0);
 }
 
 Lisp_Object
@@ -3723,15 +3723,15 @@
   } while (0)
 
 DEFUN ("merge", Fmerge, 4, MANY, 0, /*
-Destructively merge SEQUENCE-ONE and SEQUENCE-TWO, producing a new sequence.
+Destructively merge SEQUENCE1 and SEQUENCE2, producing a new sequence.
 
 TYPE is the type of sequence to return.  PREDICATE is a `less-than'
 predicate on the elements.
 
 Optional keyword argument KEY is a function used to extract an object to be
-used for comparison from each element of SEQUENCE-ONE and SEQUENCE-TWO.
-
-arguments: (TYPE SEQUENCE-ONE SEQUENCE-TWO PREDICATE &key (KEY #'IDENTITY))
+used for comparison from each element of SEQUENCE1 and SEQUENCE2.
+
+arguments: (TYPE SEQUENCE1 SEQUENCE2 PREDICATE &key (KEY #'IDENTITY))
 */
        (int nargs, Lisp_Object *args))
 {
@@ -5270,16 +5270,16 @@
 }
 
 DEFUN ("replace", Freplace, 2, MANY, 0, /*
-Replace the elements of SEQUENCE-ONE with the elements of SEQUENCE-TWO.
-
-SEQUENCE-ONE is destructively modified, and returned.  Its length is not
+Replace the elements of SEQUENCE1 with the elements of SEQUENCE2.
+
+SEQUENCE1 is destructively modified, and returned.  Its length is not
 changed.
 
-Keywords :start1 and :end1 specify a subsequence of SEQUENCE-ONE, and
-:start2 and :end2 a subsequence of SEQUENCE-TWO.  See `search' for more
+Keywords :start1 and :end1 specify a subsequence of SEQUENCE1, and
+:start2 and :end2 a subsequence of SEQUENCE2.  See `search' for more
 information.
 
-arguments: (SEQUENCE-ONE SEQUENCE-TWO &key (START1 0) (END1 (length SEQUENCE-ONE)) (START2 0) (END2 (length SEQUENCE-TWO)))
+arguments: (SEQUENCE1 SEQUENCE2 &key (START1 0) (END1 (length SEQUENCE1)) (START2 0) (END2 (length SEQUENCE2)))
 */
        (int nargs, Lisp_Object *args))
 {
@@ -6234,6 +6234,9 @@
 Perform substitutions indicated by ALIST in TREE (non-destructively).
 Return a copy of TREE with all matching elements replaced.
 
+Each dotted pair in ALIST describes a map from an old value (the car) to be
+replaced by a new value (the cdr).
+
 See `member*' for the meaning of :test, :test-not and :key.
 
 arguments: (ALIST TREE &key (TEST #'eql) (KEY #'identity) TEST-NOT)
@@ -6362,6 +6365,9 @@
 Perform substitutions indicated by ALIST in TREE (destructively).
 Any matching element of TREE is changed via a call to `setcar'.
 
+Each dotted pair in ALIST describes a map from an old value (the car) to be
+replaced by a new value (the cdr).
+
 See `member*' for the meaning of :test, :test-not and :key.
 
 arguments: (ALIST TREE &key (TEST #'eql) (KEY #'identity) TEST-NOT)