emacs/lisp/termdev.el
Karoly Lorentey 6ed8eeffb3 Rename struct device' to struct terminal'. Rename some terminal-related functions similarly.
* src/termhooks.h (struct device): Rename to `terminal'.  Rename member
  `next_device' to `next_terminal'.
  (device_list): Rename to `terminal_list'.
  (FRAME_DEVICE): Rename to `FRAME_TERMINAL'.
  (DEVICE_TERMINAL_CODING): Rename to `TERMINAL_TERMINAL_CODING'.
  (TERMINAL_KEYBOARD_CODING): Rename to `TERMINAL_KEYBOARD_CODING'.
  (DEVICE_ACTIVE_P): Rename to `TERMINAL_ACTIVE_P'.
  Update declarations and macro definitions.

* src/termchar.h (tty_display_info): Rename member `device' to `terminal'.
  (FRAME_TTY): Update for renames.

* src/xterm.h (x_display_info): Rename member `device' to `terminal'.

* src/frame.h (frame): Rename `device' member to `terminal'.
  (FRAME_KBOARD, FRAME_LIVE_P, Qdevice, Qdisplay_live_p):
  Update for renames.

* src/lisp.h (set_process_environment): Rename to `set_global_environment'.
  (device): Rename to `terminal'.

* src/dispextern.h: Update declarations and macro definitions.

* src/terminal.c (device_list): Rename to `terminal_list'.
  (next_device_id): Rename to `next_terminal_id'.
  (initial_device): Rename to `initial_terminal'.
  (get_device): Rename to `get_terminal'.
  (create_device): Rename to `create_terminal'.
  (mark_devices): Rename to `mark_terminals'.
  (delete_device): Rename to `delete_terminal'.
  (Fdelete_display): Rename to `Fdelete_terminal'.
  (Fframe_terminal): Move here from frame.c.
  (Fdisplay_live_p): Rename to `Fterminal_live_p'.
  (Fdisplay_list): Rename to `Fterminal_list'.
  (Fdisplay_name): Rename to `Fterminal_name'.
  (init_initial_device): Rename to `init_initial_terminal'.
  (delete_initial_device): Rename to `delete_initial_terminal'.
  (ring_bell, update_begin, update_end, set_terminal_window)
  (cursor_to, raw_cursor_to, clear_to_end, clear_frame)
  (clear_end_of_line, write_glyphs, insert_glyphs, delete_glyphs)
  (ins_del_lines, get_terminal_param, store_terminal_param)
  (Fterminal_parameters, Fterminal_parameter)
  (Fmodify_terminal_parameters, Fset_terminal_parameter)
  (syms_of_terminal): Update for renames.

* src/term.c (get_tty_device): Rename to `get_tty_terminal'.  Update.
  (Fdisplay_tty_type): Rename to `Ftty_type'.
  (Fdisplay_controlling_tty_p): Rename to `Fcontrolling_tty_p'.
  (delete_tty, tty_set_terminal_modes, tty_reset_terminal_modes)
  (Ftty_display_color_p, Ftty_display_color_cells, get_named_tty)
  (Ftty_no_underline, Fsuspend_tty, Fresume_tty, create_tty_output)
  (init_tty, maybe_fatal, delete_tty, syms_of_term): Update for rename.

* src/frame.c (Qdevice): Rename to `Qterminal'.
  (Qdisplay_live_p): Rename to `Qterminal_live_p'.
  (terminal_frame_count): Rename to `tty_frame_count'.
  (Fframe_display): Move to terminal.c, rename to `Fframe_terminal'.
  (make_frame_without_minibuffer, make_initial_frame)
  (make_terminal_frame, Fmodify_frame_parameters)
  (do_switch_frame, Fdelete_frame, Fmouse_position)
  (Fmouse_pixel_position, Fraise_frame, Flower_frame)
  (Fredirect_frame_focus, set_term_frame_name, syms_of_frame):
  Update for renames.

* src/xdisp.c (message2_nolog, message3_nolog, redisplay_internal)
  (set_vertical_scroll_bar, redisplay_window, check_x_display_info)
  (x_set_scroll_bar_foreground, x_set_scroll_bar_background)
  (Fx_create_frame, Fxw_display_color_p, Fx_display_grayscale_p)
  (Fx_display_pixel_width, Fx_display_pixel_height)
  (Fx_display_planes, Fx_display_color_cells)
  (Fx_server_max_request_size, Fx_server_vendor, Fx_server_version)
  (Fx_display_screens, Fx_display_mm_height, Fx_display_mm_width)
  (Fx_display_backing_store, Fx_display_visual_class)
  (Fx_display_save_under, Fx_close_connection, x_create_tip_frame):
  Update for renames.

* xterm.c (handle_one_xevent): Initialize `f' to NULL.
  (x_delete_device): Rename to `x_delete_terminal'.
  (x_create_device): Rename to `x_create_terminal'.
  (XTset_terminal_modes, XTreset_terminal_modes)
  (XTread_socket, x_connection_closed, x_term_init)
  (x_term_init, x_delete_display): Update for renames.

* src/dispnew.c (Fredraw_frame, Fsend_string_to_terminal)
  (Fsend_string_to_terminal, init_display): Update for renames.

* src/keyboard.c (push_frame_kboard, pop_kboard, pop_kboard)
  (kbd_buffer_get_event, read_avail_input, tty_read_avail_input)
  (interrupt_signal, Fset_output_flow_control)
  (Fset_input_meta_mode, Fset_quit_char, delete_kboard)
  (syms_of_keyboard): Update for renames.

* src/alloc.c (mark_devices): Update declaration.
  (Fgarbage_collect): Update for renames.

* src/coding.c (Fset_terminal_coding_system_internal)
  (Fterminal_coding_system4)
  (Fset_keyboard_coding_system_internal)
  (Fkeyboard_coding_system): Update for renames.

* src/data.c (Fterminal_local_value, Fset_terminal_local_value):
  Update for renames.

* src/minibuf.c (read_minibuf): Update for renames.

* src/sysdep.c (init_sys_modes, reset_sys_modes): Update for renames.

* xselect.c (x_handle_selection_clear): Update for renames.

* lisp/files.el (save-buffers-kill-display): Rename to `save-buffers-kill-terminal'.
  (save-buffers-kill-terminal, ctl-x-map): Update for renames.

* frame.el (make-frame): Rename 'device frame parameter to 'terminal.  Update.
  (frames-on-display-list, framep-on-display, suspend-frame): Update for renames.
  (selected-display): Rename to `selected-terminal'.

* server.el (server-save-buffers-kill-display): Rename to
  `server-save-buffers-kill-terminal'.
  (server-delete-client, server-handle-delete-frame)
  (server-handle-suspend-tty, server-process-filter)
  (server-switch-buffer): Update for renames.

* startup.el (normal-splash-screen, normal-splash-screen): Update for renames.

* talk.el (talk): Update for renames.

* termdev.el (terminal-id): Update for renames.

* xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal)
  (turn-off-xterm-mouse-tracking-on-terminal)
  (xterm-mouse-handle-delete-frame): Update for renames.

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-471
2005-12-29 18:20:26 +00:00

195 lines
7.7 KiB
EmacsLisp

;;; termdev.el --- functions for dealing with terminals
;; Copyright (C) 2005 Free Software Foundation, Inc.
;; Author: Karoly Lorentey <karoly@lorentey.hu>
;; Created: 2005-12-22
;; Keywords: internal
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
(substitute-key-definition 'suspend-emacs 'suspend-frame global-map)
(defun terminal-id (&optional terminal)
"Return the numerical id of terminal TERMINAL.
TERMINAL can be a terminal id (an integer), a frame, or
nil (meaning the selected frame's terminal). Alternatively,
TERMINAL may be the name of an X display
device (HOST.SERVER.SCREEN) or a tty device file."
(cond
((integerp terminal)
(if (terminal-live-p terminal)
terminal
(signal 'wrong-type-argument (list 'terminal-live-p terminal))))
((or (null terminal) (framep terminal))
(frame-terminal terminal))
((stringp terminal)
(let ((f (car (filtered-frame-list (lambda (frame)
(or (equal (frame-parameter frame 'display) terminal)
(equal (frame-parameter frame 'tty) terminal)))))))
(or f (error "Display %s does not exist" terminal))
(frame-terminal f)))
(t
(error "Invalid argument %s in `terminal-id'" terminal))))
;; (defun terminal-getenv (variable &optional terminal global-ok)
;; "Get the value of VARIABLE in the client environment of TERMINAL.
;; VARIABLE should be a string. Value is nil if VARIABLE is undefined in
;; the environment. Otherwise, value is a string.
;; If TERMINAL has an associated emacsclient process, then
;; `terminal-getenv' looks up VARIABLE in the environment of that
;; process; otherwise the function consults the global environment,
;; i.e., the environment of the Emacs process itself.
;; If GLOBAL-OK is non-nil, and VARIABLE is not defined in the
;; terminal-local environment, then `terminal-getenv' will return
;; its value in the global environment instead.
;; TERMINAL can be a terminal id, a frame, or nil (meaning the
;; selected frame's terminal)."
;; (setq terminal (terminal-id terminal))
;; (if (null (terminal-parameter terminal 'environment))
;; (getenv variable)
;; (if (multibyte-string-p variable)
;; (setq variable (encode-coding-string variable locale-coding-system)))
;; (let ((env (terminal-parameter terminal 'environment))
;; result entry)
;; (while (and env (null result))
;; (setq entry (car env)
;; env (cdr env))
;; (if (and (> (length entry) (length variable))
;; (eq ?= (aref entry (length variable)))
;; (equal variable (substring entry 0 (length variable))))
;; (setq result (substring entry (+ (length variable) 1)))))
;; (if (and global-ok (null result))
;; (getenv variable)
;; (and result (decode-coding-string result locale-coding-system))))))
;; (defun terminal-setenv (variable &optional value terminal)
;; "Set the value of VARIABLE in the environment of TERMINAL.
;; VARIABLE should be string. VALUE is optional; if not provided or
;; nil, the environment variable VARIABLE is removed. Returned
;; value is the new value of VARIABLE, or nil if it was removed from
;; the environment.
;; If TERMINAL was created by an emacsclient invocation, then the
;; variable is set in the environment of the emacsclient process;
;; otherwise the function changes the environment of the Emacs
;; process itself.
;; TERMINAL can be a terminal id, a frame, or nil (meaning the
;; selected frame's terminal)."
;; (if (null (terminal-parameter terminal 'environment))
;; (setenv variable value)
;; (with-terminal-environment terminal variable
;; (setenv variable value))))
;; (defun terminal-setenv-internal (variable value terminal)
;; "Set the value of VARIABLE in the environment of TERMINAL.
;; The caller is responsible to ensure that both VARIABLE and VALUE
;; are usable in environment variables and that TERMINAL is a
;; remote terminal."
;; (if (multibyte-string-p variable)
;; (setq variable (encode-coding-string variable locale-coding-system)))
;; (if (and value (multibyte-string-p value))
;; (setq value (encode-coding-string value locale-coding-system)))
;; (let ((env (terminal-parameter terminal 'environment))
;; found)
;; (while (and env (not found))
;; (if (and (> (length (car env)) (length variable))
;; (eq ?= (aref (car env) (length variable)))
;; (equal variable (substring (car env) 0 (length variable))))
;; (progn
;; (if value
;; (setcar env (concat variable "=" value))
;; (set-terminal-parameter terminal 'environment
;; (delq (car env)
;; (terminal-parameter terminal
;; 'environment))))
;; (setq found t))
;; (setq env (cdr env))))
;; (cond
;; ((and value found)
;; (setcar env (concat variable "=" value)))
;; ((and value (not found))
;; (set-terminal-parameter terminal 'environment
;; (cons (concat variable "=" value)
;; (terminal-parameter terminal
;; 'environment))))
;; ((and (not value) found)
;; (set-terminal-parameter terminal 'environment
;; (delq (car env)
;; (terminal-parameter terminal
;; 'environment)))))))
;; (defmacro with-terminal-environment (terminal vars &rest body)
;; "Evaluate BODY with environment variables VARS set to those of TERMINAL.
;; The environment variables are then restored to their previous values.
;; VARS should be a single string, a list of strings, or t for all
;; environment variables.
;; TERMINAL can be a terminal id, a frame, or nil (meaning the
;; selected frame's terminal).
;; If BODY uses `setenv' to change environment variables in VARS,
;; then the new variable values will be remembered for TERMINAL, and
;; `terminal-getenv' will return them even outside BODY."
;; (declare (indent 2))
;; (let ((var (make-symbol "var"))
;; (term (make-symbol "term"))
;; (v (make-symbol "v"))
;; (old-env (make-symbol "old-env")))
;; `(let ((,term ,terminal) ; Evaluate arguments only once.
;; (,v ,vars))
;; (if (stringp ,v)
;; (setq ,v (list ,v)))
;; (cond
;; ((null (terminal-parameter ,term 'environment))
;; ;; Not a remote terminal; nothing to do.
;; (progn ,@body))
;; ((eq ,v t)
;; ;; Switch the entire process-environment.
;; (let (,old-env process-environment)
;; (setq process-environment (terminal-parameter ,term 'environment))
;; (unwind-protect
;; (progn ,@body)
;; (set-terminal-parameter ,term 'environment process-environment)
;; (setq process-environment ,old-env))))
;; (t
;; ;; Do only a set of variables.
;; (let (,old-env)
;; (dolist (,var ,v)
;; (setq ,old-env (cons (cons ,var (getenv ,var)) ,old-env))
;; (setenv ,var (terminal-getenv ,var ,term)))
;; (unwind-protect
;; (progn ,@body)
;; ;; Split storing new values and restoring old ones so
;; ;; that we DTRT even if a variable is specified twice in
;; ;; VARS.
;; (dolist (,var ,v)
;; (terminal-setenv-internal ,var (getenv ,var) ,term))
;; (dolist (,var ,old-env)
;; (setenv (car ,var) (cdr ,var))))))))))
(provide 'termdev)
;;; arch-tag: 4c4df277-1ec1-4f56-bfde-7f156fe62fb2
;;; termdev.el ends here