]> git.eshelyaron.com Git - emacs.git/commitdiff
Merged from emacs@sv.gnu.org
authorKaroly Lorentey <lorentey@elte.hu>
Sat, 14 Oct 2006 16:56:21 +0000 (16:56 +0000)
committerKaroly Lorentey <lorentey@elte.hu>
Sat, 14 Oct 2006 16:56:21 +0000 (16:56 +0000)
Patches applied:

 * emacs@sv.gnu.org/emacs--devo--0--patch-371
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-372
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-373
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-374
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-375
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-376
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-377
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-378
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-379
   Merge from erc--emacs--21

 * emacs@sv.gnu.org/emacs--devo--0--patch-380
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-381
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-382
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-383
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-384
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-385
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-386
   Update from erc--emacs--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-387
   Fix ERC bug introduced in last patch

 * emacs@sv.gnu.org/emacs--devo--0--patch-388
   Update from erc--emacs--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-389
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-390
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-391
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-392
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-393
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-394
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-395
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-396
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-397
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-398
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-399
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-400
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-401
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-402
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-403
   Rcirc update from Ryan Yeske

 * emacs@sv.gnu.org/emacs--devo--0--patch-404
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-405
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-406
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-407
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-408
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-409
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-410
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-411
   Miscellaneous tq-related fixes.

 * emacs@sv.gnu.org/emacs--devo--0--patch-412
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-121
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-122
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-123
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-124
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-125
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-126
   Merge from emacs--devo--0

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-127
   Update from CVS

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-581

39 files changed:
1  2 
configure.in
lisp/bindings.el
lisp/cus-start.el
lisp/edmacro.el
lisp/faces.el
lisp/files.el
lisp/font-lock.el
lisp/frame.el
lisp/simple.el
lisp/startup.el
lisp/term/mac-win.el
lisp/term/x-win.el
lisp/term/xterm.el
lisp/x-dnd.el
lispref/elisp.texi
man/emacs.texi
src/.gdbinit
src/alloc.c
src/buffer.c
src/coding.c
src/fileio.c
src/fns.c
src/frame.c
src/image.c
src/keyboard.c
src/macfns.c
src/macterm.c
src/macterm.h
src/print.c
src/process.c
src/puresize.h
src/w32term.c
src/window.c
src/xdisp.c
src/xfaces.c
src/xfns.c
src/xselect.c
src/xterm.c
src/xterm.h

diff --cc configure.in
Simple merge
index eea9184cee44bd65b2b12d1ab77d2b3d85c32d87,65ff8b0f9163ef96f2a68e225c2f28f252e80e72..9671bf26f257a6518d6f6c1e44480fbb8467bb82
@@@ -215,15 -209,7 +215,7 @@@ mnemonics of the following coding syste
  
  (make-variable-buffer-local 'mode-line-mule-info)
  
- (defvar mode-line-buffer-identification (purecopy '("%12b")) "\
- Mode-line control for identifying the buffer being displayed.
- Its default value is (\"%12b\").
- Major modes that edit things other than ordinary files may change this
- \(e.g. Info, Dired,...)")
- (make-variable-buffer-local 'mode-line-buffer-identification)
 -(defvar mode-line-frame-identification '("-%F  ")
 +(defvar mode-line-frame-identification '(window-system "  " "-%F  ")
    "Mode-line control to describe the current frame.")
  
  (defvar mode-line-process nil "\
@@@ -294,52 -280,62 +286,64 @@@ Keymap to display on minor modes."
        ;; mouse-1: select window, mouse-2: delete others, mouse-3: delete,
        ;; drag-mouse-1: resize, C-mouse-2: split horizontally"
        "mouse-1: select (drag to resize), mouse-2: delete others, mouse-3: delete this")
-        (dashes (propertize "--" 'help-echo help-echo)))
-   (setq-default mode-line-format
-     (list
-      "%e"
-      (propertize "-" 'help-echo help-echo)
-      'mode-line-mule-info
-      'mode-line-client
-      'mode-line-modified
-      'mode-line-frame-identification
-      'mode-line-buffer-identification
-      (propertize "   " 'help-echo help-echo)
-      'mode-line-position
-      `(vc-mode ("" vc-mode ,(propertize "   " 'help-echo help-echo)))
-      'mode-line-modes
-      `(which-func-mode ("" which-func-format ,dashes))
-      `(global-mode-string (,dashes global-mode-string))
-      (propertize "-%-" 'help-echo help-echo)))
-   (setq-default mode-line-modes
-     (list
-      (propertize "%[(" 'help-echo help-echo)
-      `(:propertize ("" mode-name)
-                  help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes"
-                  mouse-face mode-line-highlight
-                  local-map ,mode-line-major-mode-keymap)
-      '("" mode-line-process)
-      `(:propertize ("" minor-mode-alist)
-                  mouse-face mode-line-highlight
-                  help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes"
-                  local-map ,mode-line-minor-mode-keymap)
-      (propertize "%n" 'help-echo "mouse-2: widen"
-                'mouse-face 'mode-line-highlight
-                'local-map (make-mode-line-mouse-map
-                            'mouse-2 #'mode-line-widen))
-      (propertize ")%]--" 'help-echo help-echo)))
-   (setq-default mode-line-position
-     `((-3 ,(propertize "%p" 'help-echo help-echo))
-       (size-indication-mode
-        (8 ,(propertize " of %I" 'help-echo help-echo)))
-       (line-number-mode
-        ((column-number-mode
-        (10 ,(propertize " (%l,%c)" 'help-echo help-echo))
-        (6 ,(propertize " L%l" 'help-echo help-echo))))
-        ((column-number-mode
-        (5 ,(propertize " C%c" 'help-echo help-echo))))))))
+        (dashes (propertize "--" 'help-echo help-echo))
+        (standard-mode-line-format
+       (list
+        "%e"
+        (propertize "-" 'help-echo help-echo)
+        'mode-line-mule-info
++       'mode-line-client
+        'mode-line-modified
+        'mode-line-frame-identification
+        'mode-line-buffer-identification
+        (propertize "   " 'help-echo help-echo)
+        'mode-line-position
+        '(vc-mode vc-mode)
+        (propertize "  " 'help-echo help-echo)
+        'mode-line-modes
+        `(which-func-mode ("" which-func-format ,dashes))
+        `(global-mode-string (,dashes global-mode-string))
+        (propertize "-%-" 'help-echo help-echo)))
+        (standard-mode-line-modes
+       (list
+        (propertize "%[(" 'help-echo help-echo)
+        `(:propertize ("" mode-name)
+                      help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes"
+                      mouse-face mode-line-highlight
+                      local-map ,mode-line-major-mode-keymap)
+        '("" mode-line-process)
+        `(:propertize ("" minor-mode-alist)
+                      mouse-face mode-line-highlight
+                      help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes"
+                      local-map ,mode-line-minor-mode-keymap)
+        (propertize "%n" 'help-echo "mouse-2: widen"
+                    'mouse-face 'mode-line-highlight
+                    'local-map (make-mode-line-mouse-map
+                                'mouse-2 #'mode-line-widen))
+        (propertize ")%]--" 'help-echo help-echo)))
++
+        (standard-mode-line-position
+       `((-3 ,(propertize "%p" 'help-echo help-echo))
+         (size-indication-mode
+          (8 ,(propertize " of %I" 'help-echo help-echo)))
+         (line-number-mode
+          ((column-number-mode
+            (10 ,(propertize " (%l,%c)" 'help-echo help-echo))
+            (6 ,(propertize " L%l" 'help-echo help-echo))))
+          ((column-number-mode
+            (5 ,(propertize " C%c" 'help-echo help-echo))))))))
+   (setq-default mode-line-format standard-mode-line-format)
+   (put 'mode-line-format 'standard-value
+        (list `(quote ,standard-mode-line-format)))
+   (setq-default mode-line-modes standard-mode-line-modes)
+   (put 'mode-line-modes 'standard-value
+        (list `(quote ,standard-mode-line-modes)))
+   (setq-default mode-line-position standard-mode-line-position)
+   (put 'mode-line-position 'standard-value
+        (list `(quote ,standard-mode-line-position))))
  
  (defvar mode-line-buffer-identification-keymap nil "\
  Keymap for what is displayed by `mode-line-buffer-identification'.")
Simple merge
diff --cc lisp/edmacro.el
Simple merge
diff --cc lisp/faces.el
Simple merge
diff --cc lisp/files.el
Simple merge
Simple merge
diff --cc lisp/frame.el
Simple merge
diff --cc lisp/simple.el
Simple merge
diff --cc lisp/startup.el
index 5a6b4089770117b809efa483b5fe06cd55eeaf21,9cff91077b03e2b964d312972e594ba1cccb45fb..b96503603c2acafa3ced921b8f19e8b8ade6824d
@@@ -1321,68 -1343,67 +1326,87 @@@ mouse.
      (push last-command-event unread-command-events))
    (throw 'exit nil))
  
 +(defun fancy-splash-exit ()
 +  "Exit the splash screen."
 +  (if (get-buffer "GNU Emacs")
 +      (throw 'stop-splashing nil)))
 +
 +(defun fancy-splash-delete-frame (frame)
 +  "Exit the splash screen after the frame is deleted."
 +  ;; We can not throw from `delete-frame-events', so we set up a timer
 +  ;; to exit the recursive edit as soon as Emacs is idle again.
 +  (if (frame-live-p frame)
 +      (run-at-time 0 nil 'fancy-splash-exit)))
  
- (defun fancy-splash-screens ()
+ (defun fancy-splash-screens (&optional hide-on-input)
    "Display fancy splash screens when Emacs starts."
    (setq fancy-splash-help-echo (startup-echo-area-message))
-   (let ((old-hourglass display-hourglass)
-       (fancy-splash-outer-buffer (current-buffer))
-       splash-buffer
-       (old-minor-mode-map-alist minor-mode-map-alist)
-       (old-emulation-mode-map-alists emulation-mode-map-alists)
-       (frame (fancy-splash-frame))
-       timer)
-     (save-selected-window
-       (select-frame frame)
-       (switch-to-buffer "GNU Emacs")
-       (setq tab-width 20)
-       (setq splash-buffer (current-buffer))
-       (catch 'stop-splashing
-       (unwind-protect
-           (let* ((map (make-sparse-keymap))
-                  (overriding-local-map map)
-                  ;; Catch if our frame is deleted; the delete-frame
-                  ;; event is unreliable and is handled by
-                  ;; `special-event-map' anyway.
-                  (delete-frame-functions (cons 'fancy-splash-delete-frame
-                                                delete-frame-functions)))
-             (define-key map [t] 'fancy-splash-default-action)
-             (define-key map [mouse-movement] 'ignore)
-             (define-key map [mode-line t] 'ignore)
-             (define-key map [select-window] 'ignore)
-             (setq cursor-type nil
-                   display-hourglass nil
-                   minor-mode-map-alist nil
-                   emulation-mode-map-alists nil
-                   buffer-undo-list t
-                   mode-line-format (propertize "---- %b %-"
-                                                'face 'mode-line-buffer-id)
-                   fancy-splash-stop-time (+ (float-time)
-                                             fancy-splash-max-time)
-                   timer (run-with-timer 0 fancy-splash-delay
-                                         #'fancy-splash-screens-1
-                                         splash-buffer))
-             (recursive-edit))
-         (cancel-timer timer)
-         (setq display-hourglass old-hourglass
-               minor-mode-map-alist old-minor-mode-map-alist
-               emulation-mode-map-alists old-emulation-mode-map-alists)
-         (kill-buffer splash-buffer)
-         (when (frame-live-p frame)
-           (select-frame frame)
-           (switch-to-buffer fancy-splash-outer-buffer)))))))
+   (if hide-on-input
+       (let ((old-hourglass display-hourglass)
+           (fancy-splash-outer-buffer (current-buffer))
+           splash-buffer
+           (old-minor-mode-map-alist minor-mode-map-alist)
+           (old-emulation-mode-map-alists emulation-mode-map-alists)
+           (frame (fancy-splash-frame))
+           timer)
+       (save-selected-window
+         (select-frame frame)
+         (switch-to-buffer "GNU Emacs")
+         (setq tab-width 20)
+         (setq splash-buffer (current-buffer))
+         (catch 'stop-splashing
+           (unwind-protect
 -              (let ((map (make-sparse-keymap)))
 -                (use-local-map map)
 -                (define-key map [switch-frame] 'ignore)
++              (let* ((map (make-sparse-keymap))
++                     (overriding-local-map map)
++                     ;; Catch if our frame is deleted; the delete-frame
++                     ;; event is unreliable and is handled by
++                     ;; `special-event-map' anyway.
++                     (delete-frame-functions (cons 'fancy-splash-delete-frame
++                                                   delete-frame-functions)))
+                 (define-key map [t] 'fancy-splash-default-action)
+                 (define-key map [mouse-movement] 'ignore)
+                 (define-key map [mode-line t] 'ignore)
++                (define-key map [select-window] 'ignore)
+                 (setq cursor-type nil
+                       display-hourglass nil
+                       minor-mode-map-alist nil
+                       emulation-mode-map-alists nil
+                       buffer-undo-list t
+                       mode-line-format (propertize "---- %b %-"
+                                                    'face 'mode-line-buffer-id)
+                       fancy-splash-stop-time (+ (float-time)
+                                                 fancy-splash-max-time)
+                       timer (run-with-timer 0 fancy-splash-delay
+                                             #'fancy-splash-screens-1
+                                             splash-buffer))
+                 (recursive-edit))
+             (cancel-timer timer)
+             (setq display-hourglass old-hourglass
+                   minor-mode-map-alist old-minor-mode-map-alist
+                   emulation-mode-map-alists old-emulation-mode-map-alists)
 -            (kill-buffer splash-buffer)))))
++            (kill-buffer splash-buffer)
++            (when (frame-live-p frame)
++              (select-frame frame)
++              (switch-to-buffer fancy-splash-outer-buffer))))))
+     ;; If hide-on-input is non-nil, don't hide the buffer on input.
+     (if (or (window-minibuffer-p)
+           (window-dedicated-p (selected-window)))
+       (pop-to-buffer (current-buffer))
+       (switch-to-buffer "GNU Emacs"))
+     (erase-buffer)
+     (if pure-space-overflow
+       (insert "\
+ Warning Warning!!!  Pure space overflow    !!!Warning Warning
+ \(See the node Pure Storage in the Lisp manual for details.)\n"))
+     (let (fancy-splash-outer-buffer)
+       (fancy-splash-head)
+       (dolist (text fancy-splash-text)
+       (apply #'fancy-splash-insert text))
+       (fancy-splash-tail)
+       (set-buffer-modified-p nil)
+       (goto-char (point-min)))))
 +
  (defun fancy-splash-frame ()
    "Return the frame to use for the fancy splash screen.
  Returning non-nil does not mean we should necessarily
@@@ -1527,41 -1554,44 +1557,44 @@@ Emacs is Free Software--Free as in Free
  of Emacs and modify it; type \\[describe-copying] to see the conditions.
  Type \\[describe-distribution] for information on getting the latest version."))))
  
 -          ;; The rest of the startup screen is the same on all
 -          ;; kinds of terminals.
 -
 -          ;; Give information on recovering, if there was a crash.
 -          (and auto-save-list-file-prefix
 -               ;; Don't signal an error if the
 -               ;; directory for auto-save-list files
 -               ;; does not yet exist.
 -               (file-directory-p (file-name-directory
 -                                  auto-save-list-file-prefix))
 -               (directory-files
 -                (file-name-directory auto-save-list-file-prefix)
 -                nil
 -                (concat "\\`"
 -                        (regexp-quote (file-name-nondirectory
 -                                       auto-save-list-file-prefix)))
 -                t)
 -               (insert "\n\nIf an Emacs session crashed recently, "
 -                       "type M-x recover-session RET\nto recover"
 -                       " the files you were editing."))
 +        ;; The rest of the startup screen is the same on all
 +        ;; kinds of terminals.
 +
 +        ;; Give information on recovering, if there was a crash.
 +        (and auto-save-list-file-prefix
 +             ;; Don't signal an error if the
 +             ;; directory for auto-save-list files
 +             ;; does not yet exist.
 +             (file-directory-p (file-name-directory
 +                                auto-save-list-file-prefix))
 +             (directory-files
 +              (file-name-directory auto-save-list-file-prefix)
 +              nil
 +              (concat "\\`"
 +                      (regexp-quote (file-name-nondirectory
 +                                     auto-save-list-file-prefix)))
 +              t)
 +             (insert "\n\nIf an Emacs session crashed recently, "
 +                     "type M-x recover-session RET\nto recover"
 +                     " the files you were editing."))
  
-         ;; Display the input that we set up in the buffer.
-         (set-buffer-modified-p nil)
-         (goto-char (point-min))
-           (if (or (window-minibuffer-p)
-                   (window-dedicated-p (selected-window)))
-               ;; There's no point is using pop-to-buffer since creating
-               ;; a new frame will generate enough events that the
-               ;; subsequent `sit-for' will immediately return anyway.
-               nil ;; (pop-to-buffer (current-buffer))
-             (save-window-excursion
-               (switch-to-buffer (current-buffer))
-               (sit-for 120))))
-     ;; Unwind ... ensure splash buffer is killed
-     (kill-buffer "GNU Emacs"))))
+           ;; Display the input that we set up in the buffer.
+           (set-buffer-modified-p nil)
+           (goto-char (point-min))
+         (if (or (window-minibuffer-p)
+                 (window-dedicated-p (selected-window)))
+             ;; If hide-on-input is nil, creating a new frame will
+             ;; generate enough events that the subsequent `sit-for'
+             ;; will immediately return anyway.
+             (pop-to-buffer (current-buffer))
+           (if hide-on-input
+               (save-window-excursion
+                 (switch-to-buffer (current-buffer))
+                 (sit-for 120))
+             (switch-to-buffer (current-buffer)))))
+       ;; Unwind ... ensure splash buffer is killed
+       (if hide-on-input
+         (kill-buffer "GNU Emacs")))))
  
  
  (defun startup-echo-area-message ()
  
  (defun display-startup-echo-area-message ()
    (let ((resize-mini-windows t))
 -    (message "%s" (startup-echo-area-message))))
 +    (or noninteractive ;(input-pending-p) init-file-had-error
 +      ;; t if the init file says to inhibit the echo area startup message.
 +      (and inhibit-startup-echo-area-message
 +           user-init-file
 +           (or (and (get 'inhibit-startup-echo-area-message 'saved-value)
 +                    (equal inhibit-startup-echo-area-message
 +                           (if (equal init-file-user "")
 +                               (user-login-name)
 +                             init-file-user)))
 +               ;; Wasn't set with custom; see if .emacs has a setq.
 +               (let ((buffer (get-buffer-create " *temp*")))
 +                 (prog1
 +                     (condition-case nil
 +                         (save-excursion
 +                           (set-buffer buffer)
 +                           (insert-file-contents user-init-file)
 +                           (re-search-forward
 +                            (concat
 +                             "([ \t\n]*setq[ \t\n]+"
 +                             "inhibit-startup-echo-area-message[ \t\n]+"
 +                             (regexp-quote
 +                              (prin1-to-string
 +                               (if (equal init-file-user "")
 +                                   (user-login-name)
 +                                 init-file-user)))
 +                             "[ \t\n]*)")
 +                            nil t))
 +                       (error nil))
 +                   (kill-buffer buffer)))))
 +      ;; display-splash-screen at the end of command-line-1 calls
 +      ;; use-fancy-splash-screens-p. This can cause image.el to be
 +      ;; loaded, putting "Loading image... done" in the echo area.
 +      ;; This hides startup-echo-area-message. So
 +      ;; use-fancy-splash-screens-p is called here simply to get the
 +      ;; loading of image.el (if needed) out of the way before
 +      ;; display-startup-echo-area-message runs.
 +      (progn
 +        (use-fancy-splash-screens-p)
 +        (message "%s" (startup-echo-area-message))))))
  
  
- (defun display-splash-screen ()
+ (defun display-splash-screen (&optional hide-on-input)
    "Display splash screen according to display.
  Fancy splash screens are used on graphic displays,
  normal otherwise."
    (interactive)
 -  (if (use-fancy-splash-screens-p)
 -      (fancy-splash-screens hide-on-input)
 -    (normal-splash-screen hide-on-input)))
 -
 +  ;; Prevent recursive calls from server-process-filter.
 +  (if (not (get-buffer "GNU Emacs"))
 +      (if (use-fancy-splash-screens-p)
-         (fancy-splash-screens)
-       (normal-splash-screen))))
++        (fancy-splash-screens hide-on-input)
++      (normal-splash-screen hide-on-input))))
  
  (defun command-line-1 (command-line-args-left)
 -  (or noninteractive (input-pending-p) init-file-had-error
 -      ;; t if the init file says to inhibit the echo area startup message.
 -      (and inhibit-startup-echo-area-message
 -         user-init-file
 -         (or (and (get 'inhibit-startup-echo-area-message 'saved-value)
 -                  (equal inhibit-startup-echo-area-message
 -                         (if (equal init-file-user "")
 -                             (user-login-name)
 -                           init-file-user)))
 -             ;; Wasn't set with custom; see if .emacs has a setq.
 -             (let ((buffer (get-buffer-create " *temp*")))
 -               (prog1
 -                   (condition-case nil
 -                       (save-excursion
 -                         (set-buffer buffer)
 -                         (insert-file-contents user-init-file)
 -                         (re-search-forward
 -                          (concat
 -                           "([ \t\n]*setq[ \t\n]+"
 -                           "inhibit-startup-echo-area-message[ \t\n]+"
 -                           (regexp-quote
 -                            (prin1-to-string
 -                             (if (equal init-file-user "")
 -                                 (user-login-name)
 -                               init-file-user)))
 -                           "[ \t\n]*)")
 -                          nil t))
 -                     (error nil))
 -                 (kill-buffer buffer)))))
 -      ;; display-splash-screen at the end of command-line-1 calls
 -      ;; use-fancy-splash-screens-p. This can cause image.el to be
 -      ;; loaded, putting "Loading image... done" in the echo area.
 -      ;; This hides startup-echo-area-message. So
 -      ;; use-fancy-splash-screens-p is called here simply to get the
 -      ;; loading of image.el (if needed) out of the way before
 -      ;; display-startup-echo-area-message runs.
 -      (progn
 -        (use-fancy-splash-screens-p)
 -        (display-startup-echo-area-message)))
 +  (display-startup-echo-area-message)
  
    ;; Delay 2 seconds after an init file error message
    ;; was displayed, so user can read it.
Simple merge
index 9730aca9b9d0cc8e0fe35213185237cc1e1c5fa5,0fc7638213025c83fa2519d1691331ec046191f6..fe774a4125f78033937095818cb9b958a22bdfd5
@@@ -2384,154 -2375,155 +2384,155 @@@ order until succeed."
      (or clip-text primary-text cut-text)
      ))
  
 -\f
 -;; Do the actual X Windows setup here; the above code just defines
 -;; functions and variables that we use now.
 -
 -(setq command-line-args (x-handle-args command-line-args))
 -
 -;; Make sure we have a valid resource name.
 -(or (stringp x-resource-name)
 -    (let (i)
 -      (setq x-resource-name (invocation-name))
 -
 -      ;; Change any . or * characters in x-resource-name to hyphens,
 -      ;; so as not to choke when we use it in X resource queries.
 -      (while (setq i (string-match "[.*]" x-resource-name))
 -      (aset x-resource-name i ?-))))
 -
 -(x-open-connection (or x-display-name
 -                     (setq x-display-name (getenv "DISPLAY")))
 -                 x-command-line-resources
 -                 ;; Exit Emacs with fatal error if this fails.
 -                 t)
 -
 -(setq frame-creation-function 'x-create-frame-with-faces)
 -
 -(setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
 -                          x-cut-buffer-max))
 -
 -;; Setup the default fontset.
 -(setup-default-fontset)
 -
 -;; Create the standard fontset.
 -(create-fontset-from-fontset-spec standard-fontset-spec t)
 -
 -;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
 -(create-fontset-from-x-resource)
 -
 -;; Try to create a fontset from a font specification which comes
 -;; from initial-frame-alist, default-frame-alist, or X resource.
 -;; A font specification in command line argument (i.e. -fn XXXX)
 -;; should be already in default-frame-alist as a `font'
 -;; parameter.  However, any font specifications in site-start
 -;; library, user's init file (.emacs), and default.el are not
 -;; yet handled here.
 -
 -(let ((font (or (cdr (assq 'font initial-frame-alist))
 -              (cdr (assq 'font default-frame-alist))
 -              (x-get-resource "font" "Font")))
 -      xlfd-fields resolved-name)
 -  (if (and font
 -         (not (query-fontset font))
 -         (setq resolved-name (x-resolve-font-name font))
 -         (setq xlfd-fields (x-decompose-font-name font)))
 -      (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
 -        (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
 -      ;; Create a fontset from FONT.  The fontset name is
 -      ;; generated from FONT.
 -      (create-fontset-from-ascii-font font resolved-name "startup"))))
 -
 -;; Apply a geometry resource to the initial frame.  Put it at the end
 -;; of the alist, so that anything specified on the command line takes
 -;; precedence.
 -(let* ((res-geometry (x-get-resource "geometry" "Geometry"))
 -       parsed)
 -  (if res-geometry
 -      (progn
 -      (setq parsed (x-parse-geometry res-geometry))
 -      ;; If the resource specifies a position,
 -      ;; call the position and size "user-specified".
 -      (if (or (assq 'top parsed) (assq 'left parsed))
 -          (setq parsed (cons '(user-position . t)
 -                             (cons '(user-size . t) parsed))))
 -      ;; All geometry parms apply to the initial frame.
 -      (setq initial-frame-alist (append initial-frame-alist parsed))
 -      ;; The size parms apply to all frames.
 -      (if (assq 'height parsed)
 -          (setq default-frame-alist
 -                (cons (cons 'height (cdr (assq 'height parsed)))
 -                      default-frame-alist)))
 -      (if (assq 'width parsed)
 -          (setq default-frame-alist
 -                (cons (cons 'width (cdr (assq 'width parsed)))
 -                      default-frame-alist))))))
 -
 -;; Check the reverseVideo resource.
 -(let ((case-fold-search t))
 -  (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
 -    (if (and rv
 -           (string-match "^\\(true\\|yes\\|on\\)$" rv))
 -      (setq default-frame-alist
 -            (cons '(reverse . t) default-frame-alist)))))
 +(defun x-clipboard-yank ()
 +  "Insert the clipboard contents, or the last stretch of killed text."
-   (interactive)
++  (interactive "*")
 +  (let ((clipboard-text (x-selection-value 'CLIPBOARD))
 +      (x-select-enable-clipboard t))
 +    (if (and clipboard-text (> (length clipboard-text) 0))
 +      (kill-new clipboard-text))
 +    (yank)))
  
 -;; Set x-selection-timeout, measured in milliseconds.
 -(let ((res-selection-timeout
 -       (x-get-resource "selectionTimeout" "SelectionTimeout")))
 -  (setq x-selection-timeout 20000)
 -  (if res-selection-timeout
 -      (setq x-selection-timeout (string-to-number res-selection-timeout))))
 +\f
 +;;; Window system initialization.
  
  (defun x-win-suspend-error ()
    (error "Suspending an Emacs running under X makes no sense"))
 -(add-hook 'suspend-hook 'x-win-suspend-error)
  
 -;; Arrange for the kill and yank functions to set and check the clipboard.
 -(setq interprogram-cut-function 'x-select-text)
 -(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
 +(defvar x-initialized nil
 +  "Non-nil if the X window system has been initialized.")
 +
 +(defun x-initialize-window-system ()
 +  "Initialize Emacs for X frames and open the first connection to an X server."
 +  ;; Make sure we have a valid resource name.
 +  (or (stringp x-resource-name)
 +      (let (i)
 +      (setq x-resource-name (invocation-name))
 +
 +      ;; Change any . or * characters in x-resource-name to hyphens,
 +      ;; so as not to choke when we use it in X resource queries.
 +      (while (setq i (string-match "[.*]" x-resource-name))
 +        (aset x-resource-name i ?-))))
 +
 +  (x-open-connection (or x-display-name
 +                       (setq x-display-name (or (getenv "DISPLAY" (terminal-id))
 +                                                (getenv "DISPLAY"))))
 +                   x-command-line-resources
 +                   ;; Exit Emacs with fatal error if this fails and we
 +                   ;; are the initial display.
 +                   (eq initial-window-system 'x))
 +
 +  (setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
 +                            x-cut-buffer-max))
 +
 +  ;; Setup the default fontset.
 +  (setup-default-fontset)
 +
 +  ;; Create the standard fontset.
 +  (create-fontset-from-fontset-spec standard-fontset-spec t)
 +
 +  ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
 +  (create-fontset-from-x-resource)
 +
 +  ;; Try to create a fontset from a font specification which comes
 +  ;; from initial-frame-alist, default-frame-alist, or X resource.
 +  ;; A font specification in command line argument (i.e. -fn XXXX)
 +  ;; should be already in default-frame-alist as a `font'
 +  ;; parameter.  However, any font specifications in site-start
 +  ;; library, user's init file (.emacs), and default.el are not
 +  ;; yet handled here.
 +
 +  (let ((font (or (cdr (assq 'font initial-frame-alist))
 +                (cdr (assq 'font default-frame-alist))
 +                (x-get-resource "font" "Font")))
 +      xlfd-fields resolved-name)
 +    (if (and font
 +           (not (query-fontset font))
 +           (setq resolved-name (x-resolve-font-name font))
 +           (setq xlfd-fields (x-decompose-font-name font)))
 +      (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
 +          (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
 +        ;; Create a fontset from FONT.  The fontset name is
 +        ;; generated from FONT.
 +        (create-fontset-from-ascii-font font resolved-name "startup"))))
 +
 +  ;; Apply a geometry resource to the initial frame.  Put it at the end
 +  ;; of the alist, so that anything specified on the command line takes
 +  ;; precedence.
 +  (let* ((res-geometry (x-get-resource "geometry" "Geometry"))
 +       parsed)
 +    (if res-geometry
 +      (progn
 +        (setq parsed (x-parse-geometry res-geometry))
 +        ;; If the resource specifies a position,
 +        ;; call the position and size "user-specified".
 +        (if (or (assq 'top parsed) (assq 'left parsed))
 +            (setq parsed (cons '(user-position . t)
 +                               (cons '(user-size . t) parsed))))
 +        ;; All geometry parms apply to the initial frame.
 +        (setq initial-frame-alist (append initial-frame-alist parsed))
 +        ;; The size parms apply to all frames.
 +        (if (assq 'height parsed)
 +            (setq default-frame-alist
 +                  (cons (cons 'height (cdr (assq 'height parsed)))
 +                        default-frame-alist)))
 +        (if (assq 'width parsed)
 +            (setq default-frame-alist
 +                  (cons (cons 'width (cdr (assq 'width parsed)))
 +                        default-frame-alist))))))
 +
 +  ;; Check the reverseVideo resource.
 +  (let ((case-fold-search t))
 +    (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
 +      (if (and rv
 +             (string-match "^\\(true\\|yes\\|on\\)$" rv))
 +        (setq default-frame-alist
 +              (cons '(reverse . t) default-frame-alist)))))
  
 -;; Turn off window-splitting optimization; X is usually fast enough
 -;; that this is only annoying.
 -(setq split-window-keep-point t)
 +  ;; Set x-selection-timeout, measured in milliseconds.
 +  (let ((res-selection-timeout
 +       (x-get-resource "selectionTimeout" "SelectionTimeout")))
 +    (setq x-selection-timeout 20000)
 +    (if res-selection-timeout
 +      (setq x-selection-timeout (string-to-number res-selection-timeout))))
  
 -;; Don't show the frame name; that's redundant with X.
 -(setq-default mode-line-frame-identification "  ")
 +  ;; Don't let Emacs suspend under X.
 +  (add-hook 'suspend-hook 'x-win-suspend-error)
  
 -;; Motif direct handling of f10 wasn't working right,
 -;; So temporarily we've turned it off in lwlib-Xm.c
 -;; and turned the Emacs f10 back on.
 -;; ;; Motif normally handles f10 itself, so don't try to handle it a second time.
 -;; (if (featurep 'motif)
 -;;     (global-set-key [f10] 'ignore))
 +  ;; Turn off window-splitting optimization; X is usually fast enough
 +  ;; that this is only annoying.
 +  (setq split-window-keep-point t)
  
 -;; Turn on support for mouse wheels.
 -(mouse-wheel-mode 1)
 +  ;; Motif direct handling of f10 wasn't working right,
 +  ;; So temporarily we've turned it off in lwlib-Xm.c
 +  ;; and turned the Emacs f10 back on.
 +  ;; ;; Motif normally handles f10 itself, so don't try to handle it a second time.
 +  ;; (if (featurep 'motif)
 +  ;;     (global-set-key [f10] 'ignore))
  
 +  ;; Turn on support for mouse wheels.
 +  (mouse-wheel-mode 1)
  
 -;; Enable CLIPBOARD copy/paste through menu bar commands.
 -(menu-bar-enable-clipboard)
 +  ;; Enable CLIPBOARD copy/paste through menu bar commands.
 +  (menu-bar-enable-clipboard)
  
 -;; Override Paste so it looks at CLIPBOARD first.
 -(defun x-clipboard-yank ()
 -  "Insert the clipboard contents, or the last stretch of killed text."
 -  (interactive "*")
 -  (let ((clipboard-text (x-selection-value 'CLIPBOARD))
 -      (x-select-enable-clipboard t))
 -    (if (and clipboard-text (> (length clipboard-text) 0))
 -      (kill-new clipboard-text))
 -    (yank)))
 +  ;; Override Paste so it looks at CLIPBOARD first.
 +  (define-key menu-bar-edit-menu [paste]
-     (cons "Paste" (cons "Paste text from clipboard or kill ring"
-                       'x-clipboard-yank)))
++    '(menu-item "Paste" x-clipboard-yank
++              :enable (not buffer-read-only)
++              :help "Paste (yank) text most recently cut/copied"))
  
 -(define-key menu-bar-edit-menu [paste]
 -  '(menu-item "Paste" x-clipboard-yank
 -            :enable (not buffer-read-only)
 -            :help "Paste (yank) text most recently cut/copied"))
 +  (setq x-initialized t))
 +
 +(add-to-list 'handle-args-function-alist '(x . x-handle-args))
 +(add-to-list 'frame-creation-function-alist '(x . x-create-frame-with-faces))
 +(add-to-list 'window-system-initialization-alist '(x . x-initialize-window-system))
 +
 +(provide 'x-win)
  
  ;; Initiate drag and drop
  (add-hook 'after-make-frame-functions 'x-dnd-init-frame)
- (global-set-key [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
+ (define-key special-event-map [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
  
 -;; Let F10 do menu bar navigation.
 -(and (fboundp 'menu-bar-open)
 -     (global-set-key [f10] 'menu-bar-open))
 -
  ;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78
  ;;; x-win.el ends here
index 9c4b8b1190bf1c723b6ffb8869235aa4c07adf99,9ea51a2f7746852ec88a5ab9c627795c59d90476..2e498a8de86366317b0d66a95c39c01d4451a2a8
  
  ;;; Code:
  
- ;; These keys are available in xterm starting from version 214
 +(defvar xterm-function-map (make-sparse-keymap)
 +  "Function key map overrides for xterm.")
 +
 +;; xterm from X.org 6.8.2 uses these key definitions.
 +(define-key xterm-function-map "\eOP" [f1])
 +(define-key xterm-function-map "\eOQ" [f2])
 +(define-key xterm-function-map "\eOR" [f3])
 +(define-key xterm-function-map "\eOS" [f4])
 +(define-key xterm-function-map "\e[15~" [f5])
 +(define-key xterm-function-map "\e[17~" [f6])
 +(define-key xterm-function-map "\e[18~" [f7])
 +(define-key xterm-function-map "\e[19~" [f8])
 +(define-key xterm-function-map "\e[20~" [f9])
 +(define-key xterm-function-map "\e[21~" [f10])
 +(define-key xterm-function-map "\e[23~" [f11])
 +(define-key xterm-function-map "\e[24~" [f12])
 +
 +(define-key xterm-function-map "\eO2P" [S-f1])
 +(define-key xterm-function-map "\eO2Q" [S-f2])
 +(define-key xterm-function-map "\eO2R" [S-f3])
 +(define-key xterm-function-map "\eO2S" [S-f4])
 +(define-key xterm-function-map "\e[15;2~" [S-f5])
 +(define-key xterm-function-map "\e[17;2~" [S-f6])
 +(define-key xterm-function-map "\e[18;2~" [S-f7])
 +(define-key xterm-function-map "\e[19;2~" [S-f8])
 +(define-key xterm-function-map "\e[20;2~" [S-f9])
 +(define-key xterm-function-map "\e[21;2~" [S-f10])
 +(define-key xterm-function-map "\e[23;2~" [S-f11])
 +(define-key xterm-function-map "\e[24;2~" [S-f12])
 +
 +(define-key xterm-function-map "\eO5P" [C-f1])
 +(define-key xterm-function-map "\eO5Q" [C-f2])
 +(define-key xterm-function-map "\eO5R" [C-f3])
 +(define-key xterm-function-map "\eO5S" [C-f4])
 +(define-key xterm-function-map "\e[15;5~" [C-f5])
 +(define-key xterm-function-map "\e[17;5~" [C-f6])
 +(define-key xterm-function-map "\e[18;5~" [C-f7])
 +(define-key xterm-function-map "\e[19;5~" [C-f8])
 +(define-key xterm-function-map "\e[20;5~" [C-f9])
 +(define-key xterm-function-map "\e[21;5~" [C-f10])
 +(define-key xterm-function-map "\e[23;5~" [C-f11])
 +(define-key xterm-function-map "\e[24;5~" [C-f12])
 +
 +(define-key xterm-function-map "\eO6P" [C-S-f1])
 +(define-key xterm-function-map "\eO6Q" [C-S-f2])
 +(define-key xterm-function-map "\eO6R" [C-S-f3])
 +(define-key xterm-function-map "\eO6S" [C-S-f4])
 +(define-key xterm-function-map "\e[15;6~" [C-S-f5])
 +(define-key xterm-function-map "\e[17;6~" [C-S-f6])
 +(define-key xterm-function-map "\e[18;6~" [C-S-f7])
 +(define-key xterm-function-map "\e[19;6~" [C-S-f8])
 +(define-key xterm-function-map "\e[20;6~" [C-S-f9])
 +(define-key xterm-function-map "\e[21;6~" [C-S-f10])
 +(define-key xterm-function-map "\e[23;6~" [C-S-f11])
 +(define-key xterm-function-map "\e[24;6~" [C-S-f12])
 +
 +(define-key xterm-function-map "\eO3P" [A-f1])
 +(define-key xterm-function-map "\eO3Q" [A-f2])
 +(define-key xterm-function-map "\eO3R" [A-f3])
 +(define-key xterm-function-map "\eO3S" [A-f4])
 +(define-key xterm-function-map "\e[15;3~" [A-f5])
 +(define-key xterm-function-map "\e[17;3~" [A-f6])
 +(define-key xterm-function-map "\e[18;3~" [A-f7])
 +(define-key xterm-function-map "\e[19;3~" [A-f8])
 +(define-key xterm-function-map "\e[20;3~" [A-f9])
 +(define-key xterm-function-map "\e[21;3~" [A-f10])
 +(define-key xterm-function-map "\e[23;3~" [A-f11])
 +(define-key xterm-function-map "\e[24;3~" [A-f12])
 +
 +(define-key xterm-function-map "\eOA" [up])
 +(define-key xterm-function-map "\eOB" [down])
 +(define-key xterm-function-map "\eOC" [right])
 +(define-key xterm-function-map "\eOD" [left])
 +(define-key xterm-function-map "\eOF" [end])
 +(define-key xterm-function-map "\eOH" [home])
 +
 +(define-key xterm-function-map "\e[1;2A" [S-up])
 +(define-key xterm-function-map "\e[1;2B" [S-down])
 +(define-key xterm-function-map "\e[1;2C" [S-right])
 +(define-key xterm-function-map "\e[1;2D" [S-left])
 +(define-key xterm-function-map "\e[1;2F" [S-end])
 +(define-key xterm-function-map "\e[1;2H" [S-home])
 +
 +(define-key xterm-function-map "\e[1;5A" [C-up])
 +(define-key xterm-function-map "\e[1;5B" [C-down])
 +(define-key xterm-function-map "\e[1;5C" [C-right])
 +(define-key xterm-function-map "\e[1;5D" [C-left])
 +(define-key xterm-function-map "\e[1;5F" [C-end])
 +(define-key xterm-function-map "\e[1;5H" [C-home])
 +
 +(define-key xterm-function-map "\e[1;6A" [C-S-up])
 +(define-key xterm-function-map "\e[1;6B" [C-S-down])
 +(define-key xterm-function-map "\e[1;6C" [C-S-right])
 +(define-key xterm-function-map "\e[1;6D" [C-S-left])
 +(define-key xterm-function-map "\e[1;6F" [C-S-end])
 +(define-key xterm-function-map "\e[1;6H" [C-S-home])
 +
 +(define-key xterm-function-map "\e[1;3A" [A-up])
 +(define-key xterm-function-map "\e[1;3B" [A-down])
 +(define-key xterm-function-map "\e[1;3C" [A-right])
 +(define-key xterm-function-map "\e[1;3D" [A-left])
 +(define-key xterm-function-map "\e[1;3F" [A-end])
 +(define-key xterm-function-map "\e[1;3H" [A-home])
 +
 +(define-key xterm-function-map "\e[2~" [insert])
 +(define-key xterm-function-map "\e[3~" [delete])
 +(define-key xterm-function-map "\e[5~" [prior])
 +(define-key xterm-function-map "\e[6~" [next])
 +
 +(define-key xterm-function-map "\e[2;2~" [S-insert])
 +(define-key xterm-function-map "\e[3;2~" [S-delete])
 +(define-key xterm-function-map "\e[5;2~" [S-prior])
 +(define-key xterm-function-map "\e[6;2~" [S-next])
 +
 +(define-key xterm-function-map "\e[2;5~" [C-insert])
 +(define-key xterm-function-map "\e[3;5~" [C-delete])
 +(define-key xterm-function-map "\e[5;5~" [C-prior])
 +(define-key xterm-function-map "\e[6;5~" [C-next])
 +
 +(define-key xterm-function-map "\e[2;6~" [C-S-insert])
 +(define-key xterm-function-map "\e[3;6~" [C-S-delete])
 +(define-key xterm-function-map "\e[5;6~" [C-S-prior])
 +(define-key xterm-function-map "\e[6;6~" [C-S-next])
 +
 +(define-key xterm-function-map "\e[2;3~" [A-insert])
 +(define-key xterm-function-map "\e[3;3~" [A-delete])
 +(define-key xterm-function-map "\e[5;3~" [A-prior])
 +(define-key xterm-function-map "\e[6;3~" [A-next])
 +
 +(define-key xterm-function-map "\e[4~" [select])
 +(define-key xterm-function-map "\e[29~" [print])
 +
++;; These keys are available in xterm starting from version 216
 +;; if the modifyOtherKeys resource is set to 1.
++
++(define-key xterm-function-map "\e[27;5;39~"  [?\C-\'])
++(define-key xterm-function-map "\e[27;5;45~"  [?\C--])
++
++(define-key xterm-function-map "\e[27;5;48~"  [?\C-0])
++(define-key xterm-function-map "\e[27;5;49~"  [?\C-1])
++;; Not all C-DIGIT keys have a distinct binding.
++(define-key xterm-function-map "\e[27;5;57~"  [?\C-9])
++
++(define-key xterm-function-map "\e[27;5;59~"  [?\C-\;])
++(define-key xterm-function-map "\e[27;5;61~"  [?\C-=])
++
++
++(define-key xterm-function-map "\e[27;6;33~"  [?\C-!])
++(define-key xterm-function-map "\e[27;6;34~"  [?\C-\"])
++(define-key xterm-function-map "\e[27;6;35~"  [?\C-#])
++(define-key xterm-function-map "\e[27;6;36~"  [?\C-$])
++(define-key xterm-function-map "\e[27;6;37~"  [?\C-%])
++(define-key xterm-function-map "\e[27;6;38~"  [(C-&)])
++(define-key xterm-function-map "\e[27;6;40~"  [?\C-(])
++(define-key xterm-function-map "\e[27;6;41~"  [?\C-)])
++(define-key xterm-function-map "\e[27;6;42~"  [?\C-*])
++(define-key xterm-function-map "\e[27;6;43~"  [?\C-+])
++
++(define-key xterm-function-map "\e[27;6;58~"  [?\C-:])
++(define-key xterm-function-map "\e[27;6;60~"  [?\C-<])
++(define-key xterm-function-map "\e[27;6;62~"  [?\C->])
++(define-key xterm-function-map "\e[27;6;63~"  [(C-\?)])
++
 +(define-key xterm-function-map "\e[27;5;9~"  [C-tab])
 +(define-key xterm-function-map "\e[27;5;13~" [C-return])
 +(define-key xterm-function-map "\e[27;5;44~" [?\C-,])
 +(define-key xterm-function-map "\e[27;5;46~" [?\C-.])
 +(define-key xterm-function-map "\e[27;5;47~" [?\C-/])
 +(define-key xterm-function-map "\e[27;5;92~" [?\C-\\])
 +
 +(define-key xterm-function-map "\e[27;2;9~" [S-tab])
 +(define-key xterm-function-map "\e[27;2;13~" [S-return])
 +
 +(define-key xterm-function-map "\e[27;6;9~" [(C-S-tab)])
 +
 +(define-key xterm-function-map "\e[27;13;46~" [?\C-\M-.])
 +
 +
 +;; Other versions of xterm might emit these.
 +(define-key xterm-function-map "\e[A" [up])
 +(define-key xterm-function-map "\e[B" [down])
 +(define-key xterm-function-map "\e[C" [right])
 +(define-key xterm-function-map "\e[D" [left])
 +(define-key xterm-function-map "\e[1~" [home])
 +
 +(define-key xterm-function-map "\e[1;2A" [S-up])
 +(define-key xterm-function-map "\e[1;2B" [S-down])
 +(define-key xterm-function-map "\e[1;2C" [S-right])
 +(define-key xterm-function-map "\e[1;2D" [S-left])
 +(define-key xterm-function-map "\e[1;2F" [S-end])
 +(define-key xterm-function-map "\e[1;2H" [S-home])
 +
 +(define-key xterm-function-map "\e[1;5A" [C-up])
 +(define-key xterm-function-map "\e[1;5B" [C-down])
 +(define-key xterm-function-map "\e[1;5C" [C-right])
 +(define-key xterm-function-map "\e[1;5D" [C-left])
 +(define-key xterm-function-map "\e[1;5F" [C-end])
 +(define-key xterm-function-map "\e[1;5H" [C-home])
 +
 +(define-key xterm-function-map "\e[11~" [f1])
 +(define-key xterm-function-map "\e[12~" [f2])
 +(define-key xterm-function-map "\e[13~" [f3])
 +(define-key xterm-function-map "\e[14~" [f4])
 +
  (defun terminal-init-xterm ()
    "Terminal initialization function for xterm."
    ;; rxvt terminals sometimes set the TERM variable to "xterm", but
diff --cc lisp/x-dnd.el
index 04ef4f0b6dc4c97220ade98075dbc7a366045930,c229b0868e43cf6e4c01fd2e0924cc4f5fa49a75..717fcf207dae061b29bb2d74ba63b90949b113ce
@@@ -121,9 -121,14 +121,15 @@@ any protocol specific data."
  
  (defun x-dnd-init-frame (&optional frame)
    "Setup drag and drop for FRAME (i.e. create appropriate properties)."
 -  (x-register-dnd-atom "DndProtocol" frame)
 -  (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame)
 -  (x-register-dnd-atom "XdndEnter" frame)
 -  (x-register-dnd-atom "XdndPosition" frame)
 -  (x-register-dnd-atom "XdndLeave" frame)
 -  (x-register-dnd-atom "XdndDrop" frame)
 -  (x-dnd-init-xdnd-for-frame frame)
 -  (x-dnd-init-motif-for-frame frame))
 +  (when (eq 'x (window-system frame))
++    (x-register-dnd-atom "DndProtocol" frame)
++    (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame)
++    (x-register-dnd-atom "XdndEnter" frame)
++    (x-register-dnd-atom "XdndPosition" frame)
++    (x-register-dnd-atom "XdndLeave" frame)
++    (x-register-dnd-atom "XdndDrop" frame)
 +    (x-dnd-init-xdnd-for-frame frame)
 +    (x-dnd-init-motif-for-frame frame)))
  
  (defun x-dnd-get-state-cons-for-frame (frame-or-window)
    "Return the entry in x-dnd-current-state for a frame or window."
Simple merge
diff --cc man/emacs.texi
Simple merge
diff --cc src/.gdbinit
Simple merge
diff --cc src/alloc.c
Simple merge
diff --cc src/buffer.c
Simple merge
diff --cc src/coding.c
Simple merge
diff --cc src/fileio.c
Simple merge
diff --cc src/fns.c
Simple merge
diff --cc src/frame.c
Simple merge
diff --cc src/image.c
Simple merge
diff --cc src/keyboard.c
index f1bfea0f18c6687b08600ceb0b62a974d43e3e27,662aacf91a630a36bc924e1aaa35d8554d0ee2fc..681018bbab97e06c219e0d5e59a8847a01c9150c
@@@ -2714,9 -2705,9 +2792,10 @@@ read_char (commandflag, nmaps, maps, pr
       around any call to sit_for or kbd_buffer_get_event;
       it *must not* be in effect when we call redisplay.  */
  
+   jmpcount = SPECPDL_INDEX ();
    if (_setjmp (local_getcjmp))
      {
 +      /* Handle quits while reading the keyboard.  */
        /* We must have saved the outer value of getcjmp here,
         so restore it now.  */
        restore_getcjmp (save_jump);
@@@ -8874,14 -8755,6 +8937,13 @@@ read_key_sequence (keybuf, bufsize, pro
       keybuf[0..mock_input] holds the sequence we should reread.  */
   replay_sequence:
  
-   /* If there is no translation map, turn off scanning.  */
-   fkey.start = fkey.end = KEYMAPP (fkey.map) ? 0 : bufsize + 1;
-   keytran.start = keytran.end = KEYMAPP (keytran.map) ? 0 : bufsize + 1;
 +  /* We may switch keyboards between rescans, so we need to
 +     reinitialize fkey and keytran before each replay.  */
 +  fkey.map = fkey.parent = current_kboard->Vlocal_function_key_map;
 +  keytran.map = keytran.parent = current_kboard->Vlocal_key_translation_map;
++  fkey.start = fkey.end = 0;
++  keytran.start = keytran.end = 0;
 +
    starting_buffer = current_buffer;
    first_unbound = bufsize + 1;
  
diff --cc src/macfns.c
Simple merge
diff --cc src/macterm.c
Simple merge
diff --cc src/macterm.h
Simple merge
diff --cc src/print.c
Simple merge
diff --cc src/process.c
Simple merge
diff --cc src/puresize.h
index 5d39be5a541cd931cbbf20f21b825dad1e513fd6,5dd374af207406fc971dee3cd0785263d5696619..d5a33e3cda58287771d935ac19ab36f82fcbce76
@@@ -43,7 -43,7 +43,7 @@@ Boston, MA 02110-1301, USA.  *
  #endif
  
  #ifndef BASE_PURESIZE
- #define BASE_PURESIZE (1126000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
 -#define BASE_PURESIZE (1120000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
++#define BASE_PURESIZE (1130000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
  #endif
  
  /* Increase BASE_PURESIZE by a ratio depending on the machine's word size.  */
diff --cc src/w32term.c
Simple merge
diff --cc src/window.c
Simple merge
diff --cc src/xdisp.c
Simple merge
diff --cc src/xfaces.c
Simple merge
diff --cc src/xfns.c
Simple merge
diff --cc src/xselect.c
Simple merge
diff --cc src/xterm.c
Simple merge
diff --cc src/xterm.h
Simple merge