• Karoly Lorentey's avatar
    Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes. · b6660415
    Karoly Lorentey authored
    * lisp/frame.el (make-frame-on-display): Update doc.
    (make-frame): Handle display-id parameter.  Update doc.
    (frames-on-display-list): Update for display ids.
    (framep-on-display): Ditto.
    (suspend-frame): Use display-name, not frame-tty-name.
    (selected-display): New function.
    
    * lisp/server.el (server-delete-client): Use delete-display, not delete-tty.
    (server-tty-live-p, server-handle-delete-tty): Removed.
    (server-handle-delete-frame): Delete tty clients, if needed.
    (server-process-filter): Set the display parameter, and use it when appropriate.
    (server-handle-suspend-tty): Use the display parameter.
    (server-start, server-unload-hook): Removed obsolete delete-tty hook.
    
    * lisp/talk.el (talk): Always use talk-add-display.
    (talk-add-tty-frame, talk-handle-delete-tty): Removed.
    (talk-handle-delete-frame): New function.
    (talk-add-display): Open a new frame only if parameter was not a frame.
    
    * src/dispextern.h (get_display, Fdisplay_tty_type):  New prototypes.
    (Fframe_tty_type): Removed.
    
    * src/dispnew.c (init_display): Use Fdisplay_tty_type, not Fframe_tty_type.
    
    * src/frame.c (Qdisplay_id, Qdisplay_live_p): New symbols.
    (make_terminal_frame): Get display as a parameter.
    (Fmake_terminal_frame): Get/create display here; pass it to
    make_terminal_frame.
    (Fframe_display): New function.
    (Fdelete_frame): Stop if the hook deleted the frame.
    (syms_of_frame): Register new stuff.
    
    * src/frame.h (Qdisplay_id, Qdisplay_live_p, make_terminal_frame):
    Updated prototypes.
    
    * src/keyboard.c (interrupt_signal): Updated comment.
    
    * src/term.c (Vdelete_tty_after_functions): Removed variable.
    (Qframe_tty_name, Qframe_tty_type): Removed.
    (next_display_id): New var.
    (tty_ring_bell): Don't do anything on suspended frames.
    (Ftty_display_color_p, Ftty_display_color_cells): Doc update.
    (get_display): New function.
    (get_tty_display): Use it.
    (get_named_tty_display): Ignore suspended displays.
    (Fframe_tty_name): Renamed to Fdisplay_name.  Handle all kinds of
    displays.
    (Fframe_tty_type): Renamed to Fdisplay_tty_type.
    (init_initial_display): Set display name.
    (term_init): Allow more displays on the same device.  Set display name.
    (Fdelete_tty): Removed.
    (delete_tty): Don't run hooks.
    (create_display): Set display id.
    (delete_display): Free display name.
    (Fdelete_display, Fdisplay_live_p, Fdisplay_list): New functions.
    (Fsuspend_tty): Call hook with display id.  Doc update.
    (Fresume_tty): Refuse to resume when there is already an active display
    on the same device.  Call hook with display id.  Doc update.
    (syms_of_term): Reflect above changes.
    
    * src/termhooks.h (struct display): Added `id' and `name' members.
    (DISPLAY_ACTIVE_P): New macro.
    
    * src/xfns.c (check_x_display_info): Handle display ids.
    (Fx_create_frame): Try to get display from `display-id' parameter.
    
    * src/xterm.c (x_term_init): Set display name.
    (x_delete_display): Handle the case when `font_table' is NULL.
    
    git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-207
    b6660415
server.el 35.5 KB