Mercurial > hg > xemacs-beta
diff lisp/packages/gnuserv.el @ 108:360340f9fd5f r20-1b6
Import from CVS: tag r20-1b6
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:18:39 +0200 |
parents | c7528f8e288d |
children | 8619ce7e4c50 |
line wrap: on
line diff
--- a/lisp/packages/gnuserv.el Mon Aug 13 09:17:27 2007 +0200 +++ b/lisp/packages/gnuserv.el Mon Aug 13 09:18:39 2007 +0200 @@ -241,8 +241,8 @@ ;; give window chance to re-display text (accept-process-output)))) -(defun server-tty-find-file (tty termtype file) - (let ((device (make-tty-device tty termtype))) +(defun server-tty-find-file (tty termtype pid file) + (let ((device (make-tty-device tty termtype pid ))) (select-frame (make-frame nil device)) (if (not file) (switch-to-buffer (get-buffer-create "*scratch*")) @@ -344,7 +344,7 @@ "Type {\\[server-edit]} or select Frame/Delete to finish edit." "When done with a buffer, type \\[server-edit].")))) -(defun server-tty-edit-files (tty termtype list) +(defun server-tty-edit-files (tty termtype pid list) "For each (line-number . file) pair in LIST, edit the file at line-number. Save enough information for (server-kill-buffer) to inform the client when the edit is finished." @@ -352,7 +352,7 @@ (while list (let ((line (car (car list))) (path (cdr (car list)))) - (server-tty-find-file tty termtype path) + (server-tty-find-file tty termtype pid path) (server-make-window-visible) (let ((old-clients (assq current-client server-clients)) (buffer (current-buffer))) @@ -449,14 +449,18 @@ ;; tell it that it is done, and forget it entirely. (if (cdr client) nil - (server-write-to-client (car client) nil) - (setq server-clients (delq client server-clients)))) + (if (buffer-name buffer) + (save-excursion + (set-buffer buffer) + (setq server-buffer-clients nil))) + ; Order is important here -- + ; server-kill-buffer tries to notify clients that + ; they are done, too, but if we try and notify twice, + ; we are h0zed -- Hunter Kelly 3/3/97 + (setq server-clients (delq client server-clients)) + (funcall server-done-function buffer) + (server-write-to-client (car client) nil))) (setq old-clients (cdr old-clients))) - (if (buffer-name buffer) - (save-excursion - (set-buffer buffer) - (setq server-buffer-clients nil))) - (funcall server-done-function buffer) next-buffer))