Merged from emacs@sv.gnu.org.
authorKaroly Lorentey <lorentey@elte.hu>
Sun, 3 Dec 2006 12:15:03 +0000 (12:15 +0000)
committerKaroly Lorentey <lorentey@elte.hu>
Sun, 3 Dec 2006 12:15:03 +0000 (12:15 +0000)
Patches applied:

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

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

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

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

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

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

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

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

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

1  2 
lisp/help-fns.el
lisp/simple.el
lisp/subr.el
lisp/term/x-win.el
src/dispnew.c
src/gtkutil.c
src/macterm.c
src/sysdep.c

Simple merge
diff --cc lisp/simple.el
Simple merge
diff --cc lisp/subr.el
Simple merge
@@@ -2404,138 -2478,47 +2404,141 @@@ order until succeed."
  
  (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)
++        ;; The size parms apply to all frames.  Don't set it if there are 
++        ;; sizes there already (from command line).
++        (if (and (assq 'height parsed)
++                 (not (assq 'height default-frame-alist)))
 +            (setq default-frame-alist
 +                  (cons (cons 'height (cdr (assq 'height parsed)))
 +                        default-frame-alist)))
-         (if (assq 'width parsed)
++        (if (and (assq 'width parsed)
++                 (not (assq 'width default-frame-alist)))
 +            (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]
 +    (append '(menu-item "Paste" x-clipboard-yank
 +                      :enable (not buffer-read-only)
 +                      :help "Paste (yank) text most recently cut/copied")
 +          nil))
 +
 +  (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))
  
 -(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"))
 +(provide 'x-win)
  
  ;; Initiate drag and drop
  (add-hook 'after-make-frame-functions 'x-dnd-init-frame)
diff --cc src/dispnew.c
Simple merge
diff --cc src/gtkutil.c
Simple merge
diff --cc src/macterm.c
Simple merge
diff --cc src/sysdep.c
Simple merge