emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/server.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/server.el
Date: Mon, 02 Dec 2002 10:50:05 -0500

Index: emacs/lisp/server.el
diff -c emacs/lisp/server.el:1.85 emacs/lisp/server.el:1.86
*** emacs/lisp/server.el:1.85   Tue Oct 29 13:17:46 2002
--- emacs/lisp/server.el        Sat Nov  2 00:29:13 2002
***************
*** 117,123 ****
  (defvar server-window nil
    "*The window to use for selecting Emacs server buffers.
  If nil, use the selected window.
! If it is a frame, use the frame's selected window.")
  
  (defcustom server-temp-file-regexp "^/tmp/Re\\|/draft$"
    "*Regexp which should match filenames of temporary files
--- 117,125 ----
  (defvar server-window nil
    "*The window to use for selecting Emacs server buffers.
  If nil, use the selected window.
! If it is a frame, use the frame's selected window.
! If it is a function, it should take one argument (a buffer) and
! display and select it.  A common value is `pop-to-buffer'.")
  
  (defcustom server-temp-file-regexp "^/tmp/Re\\|/draft$"
    "*Regexp which should match filenames of temporary files
***************
*** 166,178 ****
    ;; Purge server-previous-strings of the now irrelevant entry.
    (setq server-previous-strings
        (delq (assq proc server-previous-strings) server-previous-strings))
!   (let ((ps (assq proc server-clients)))
!     (dolist (buf (cdr ps))
!       (with-current-buffer buf
!       ;; Remove PROC from the clients of each buffer.
!       (setq server-buffer-clients (delq proc server-buffer-clients))))
      ;; Remove PROC from the list of clients.
!     (if ps (setq server-clients (delq ps server-clients))))
    (server-log (format "Status changed to %s" (process-status proc)) proc))
  
  (defun server-select-display (display)
--- 168,187 ----
    ;; Purge server-previous-strings of the now irrelevant entry.
    (setq server-previous-strings
        (delq (assq proc server-previous-strings) server-previous-strings))
!   (let ((client (assq proc server-clients)))
      ;; Remove PROC from the list of clients.
!     (when client
!       (setq server-clients (delq client server-clients))
!       (dolist (buf (cdr client))
!       (with-current-buffer buf
!         ;; Remove PROC from the clients of each buffer.
!         (setq server-buffer-clients (delq proc server-buffer-clients))
!         ;; Kill the buffer if necessary.
!         (when (and (null server-buffer-clients)
!                    (or (and server-kill-new-buffers
!                             (not server-existing-buffer))
!                        (server-temp-file-p)))
!           (kill-buffer (current-buffer)))))))
    (server-log (format "Status changed to %s" (process-status proc)) proc))
  
  (defun server-select-display (display)
***************
*** 408,415 ****
        ;; if we do, do not call server-buffer-done recursively
        ;; from kill-buffer-hook.
        (let ((server-kill-buffer-running t))
!         (save-excursion
!           (set-buffer buffer)
            (setq server-buffer-clients nil)
            (run-hooks 'server-done-hook))
          ;; Notice whether server-done-hook killed the buffer.
--- 417,423 ----
        ;; if we do, do not call server-buffer-done recursively
        ;; from kill-buffer-hook.
        (let ((server-kill-buffer-running t))
!         (with-current-buffer buffer
            (setq server-buffer-clients nil)
            (run-hooks 'server-done-hook))
          ;; Notice whether server-done-hook killed the buffer.
***************
*** 433,439 ****
                  (bury-buffer buffer)))))))
      (list next-buffer killed)))
  
! (defun server-temp-file-p (buffer)
    "Return non-nil if BUFFER contains a file considered temporary.
  These are files whose names suggest they are repeatedly
  reused to pass information to another program.
--- 441,447 ----
                  (bury-buffer buffer)))))))
      (list next-buffer killed)))
  
! (defun server-temp-file-p (&optional buffer)
    "Return non-nil if BUFFER contains a file considered temporary.
  These are files whose names suggest they are repeatedly
  reused to pass information to another program.
***************
*** 450,469 ****
  as a suggestion for what to select next, or nil.
  KILLED is t if we killed BUFFER, which happens if it was created
  specifically for the clients and did not exist before their request for it."
!   (let ((buffer (current-buffer)))
!     (if server-buffer-clients
!       (progn
!         (if (server-temp-file-p buffer)
!             ;; For a temp file, save, and do make a non-numeric backup
!             ;; (unless make-backup-files is nil).
!             (let ((version-control nil)
!                   (buffer-backed-up nil))
!               (save-buffer))
!           (if (and (buffer-modified-p)
!                    buffer-file-name
!                    (y-or-n-p (concat "Save file " buffer-file-name "? ")))
!               (save-buffer)))
!         (server-buffer-done buffer)))))
  
  ;; Ask before killing a server buffer.
  ;; It was suggested to release its client instead,
--- 458,475 ----
  as a suggestion for what to select next, or nil.
  KILLED is t if we killed BUFFER, which happens if it was created
  specifically for the clients and did not exist before their request for it."
!   (when server-buffer-clients
!     (if (server-temp-file-p)
!       ;; For a temp file, save, and do make a non-numeric backup
!       ;; (unless make-backup-files is nil).
!       (let ((version-control nil)
!             (buffer-backed-up nil))
!         (save-buffer))
!       (if (and (buffer-modified-p)
!              buffer-file-name
!              (y-or-n-p (concat "Save file " buffer-file-name "? ")))
!         (save-buffer)))
!     (server-buffer-done (current-buffer))))
  
  ;; Ask before killing a server buffer.
  ;; It was suggested to release its client instead,
***************
*** 541,578 ****
        ;; and try the next surviving server buffer.
        (apply 'server-switch-buffer (server-buffer-done next-buffer))
        ;; OK, we know next-buffer is live, let's display and select it.
!       (let ((win (get-buffer-window next-buffer 0)))
!       (if (and win (not server-window))
!           ;; The buffer is already displayed: just reuse the window.
!           (let ((frame (window-frame win)))
!             (if (eq (frame-visible-p frame) 'icon)
!                 (raise-frame frame))
!             (select-window win)
!             (set-buffer next-buffer))
!         ;; Otherwise, let's find an appropriate window.
!         (cond ((and (windowp server-window)
!                     (window-live-p server-window))
!                (select-window server-window))
!               ((framep server-window)
!                (if (not (frame-live-p server-window))
!                    (setq server-window (make-frame)))
!                (select-window (frame-selected-window server-window))))
!         (if (window-minibuffer-p (selected-window))
!             (select-window (next-window nil 'nomini 0)))
!         ;; Move to a non-dedicated window, if we have one.
!         (when (window-dedicated-p (selected-window))
!           (select-window
!            (get-window-with-predicate
!             (lambda (w)
!               (and (not (window-dedicated-p w))
!                    (equal (frame-parameter (window-frame w) 'display)
!                           (frame-parameter (selected-frame) 'display))))
!             'nomini 'visible (selected-window))))
!         (condition-case nil
!             (switch-to-buffer next-buffer)
!           ;; After all the above, we might still have ended up with
!           ;; a minibuffer/dedicated-window (if there's no other).
!           (error (pop-to-buffer next-buffer))))))))
  
  (global-set-key "\C-x#" 'server-edit)
  
--- 547,586 ----
        ;; and try the next surviving server buffer.
        (apply 'server-switch-buffer (server-buffer-done next-buffer))
        ;; OK, we know next-buffer is live, let's display and select it.
!       (if (functionp server-window)
!         (funcall server-window next-buffer)
!       (let ((win (get-buffer-window next-buffer 0)))
!         (if (and win (not server-window))
!             ;; The buffer is already displayed: just reuse the window.
!             (let ((frame (window-frame win)))
!               (if (eq (frame-visible-p frame) 'icon)
!                   (raise-frame frame))
!               (select-window win)
!               (set-buffer next-buffer))
!           ;; Otherwise, let's find an appropriate window.
!           (cond ((and (windowp server-window)
!                       (window-live-p server-window))
!                  (select-window server-window))
!                 ((framep server-window)
!                  (if (not (frame-live-p server-window))
!                      (setq server-window (make-frame)))
!                  (select-window (frame-selected-window server-window))))
!           (if (window-minibuffer-p (selected-window))
!               (select-window (next-window nil 'nomini 0)))
!           ;; Move to a non-dedicated window, if we have one.
!           (when (window-dedicated-p (selected-window))
!             (select-window
!              (get-window-with-predicate
!               (lambda (w)
!                 (and (not (window-dedicated-p w))
!                      (equal (frame-parameter (window-frame w) 'display)
!                             (frame-parameter (selected-frame) 'display))))
!               'nomini 'visible (selected-window))))
!           (condition-case nil
!               (switch-to-buffer next-buffer)
!             ;; After all the above, we might still have ended up with
!             ;; a minibuffer/dedicated-window (if there's no other).
!             (error (pop-to-buffer next-buffer)))))))))
  
  (global-set-key "\C-x#" 'server-edit)
  




reply via email to

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