aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/frame.el18
-rw-r--r--lisp/server.el15
2 files changed, 27 insertions, 6 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index 367f40d6f8e..1dbf8321bf3 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -558,6 +558,24 @@ The optional second argument PARAMETERS specifies additional frame parameters."
558 (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN")) 558 (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
559 (make-frame (cons (cons 'display display) parameters))) 559 (make-frame (cons (cons 'display display) parameters)))
560 560
561;;;###autoload
562(defun make-frame-on-tty (device type &optional parameters)
563 "Make a frame on terminal DEVICE which is of type TYPE (e.g., \"xterm\").
564The optional third argument PARAMETERS specifies additional frame parameters.
565
566DEVICE must be a proxy psudo terminal created by emacsclient,
567otherwise there will be problems with terminal input and window
568resizes. (The kernel notifies processes about pending input or
569terminal resizes only on the controlling terminal, so we need
570emacsclient to sit on the real terminal device, create SIGIO
571signals upon terminal input, and forward SIGWINCH signals to
572us.)"
573 (unless device
574 (error "Invalid terminal device"))
575 (unless type
576 (error "Invalid terminal type"))
577 (make-frame `((tty . ,device) (tty-type . ,type) . ,parameters)))
578
561(defun make-frame-command () 579(defun make-frame-command ()
562 "Make a new frame, and select it if the terminal displays only one frame." 580 "Make a new frame, and select it if the terminal displays only one frame."
563 (interactive) 581 (interactive)
diff --git a/lisp/server.el b/lisp/server.el
index f2c1fc9ce2a..9721dbc4a41 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -345,12 +345,15 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"."
345 (if coding-system 345 (if coding-system
346 (setq arg (decode-coding-string arg coding-system))) 346 (setq arg (decode-coding-string arg coding-system)))
347 (if eval 347 (if eval
348 (let ((v (eval (car (read-from-string arg))))) 348 (condition-case err
349 (when v 349 (let ((v (eval (car (read-from-string arg)))))
350 (with-temp-buffer 350 (when v
351 (let ((standard-output (current-buffer))) 351 (with-temp-buffer
352 (pp v) 352 (let ((standard-output (current-buffer)))
353 (process-send-region proc (point-min) (point-max)))))) 353 (pp v)
354 (process-send-region proc (point-min) (point-max))))))
355 (error (process-send-string proc (concat "*Error* " (error-message-string err)))))
356
354 ;; ARG is a file name. 357 ;; ARG is a file name.
355 ;; Collapse multiple slashes to single slashes. 358 ;; Collapse multiple slashes to single slashes.
356 (setq arg (command-line-normalize-file-name arg)) 359 (setq arg (command-line-normalize-file-name arg))