# HG changeset patch # User Karoly Lorentey # Date 1074991418 0 # Node ID c66ebcc29777ba655fc9634aad8be41ce64a68a8 # Parent e66f69c4f2c5cf20c911a3322d2eef4209f9e2e4 Removed %T in mode-line-format. Trivial documentation changes. lisp/bindings.el (mode-line-buffer-identification): Use the conditional formatting feature instead of builtin support. src/buffer.c (Vmode_line_format): Removed %T documentation. src/xdisp.c (decode_mode_spec): Removed %T processing. lib-src/emacsclient.c (pass_signal_to_emacs, init_signals): Added comment. src/cm.c: Cosmetic changes. src/termchar.h: Ditto. src/keyboard.c (interrupt_signal, handle_interrupt): Updated documentation. src/process.c (add_keyboard_wait_descriptor): Added docs. src/sysdep.c (init_all_sys_modes, init_sys_modes) (reset_all_sys_modes): Added docs. src/term.c (tty_ring_bell, tty_set_terminal_modes) (tty_reset_terminal_modes, tty_update_end, set_terminal_window) (tty_set_terminal_window, clear_to_end, tty_clear_to_end) (tty_clear_frame, tty_clear_end_of_line, write_glyphs) (tty_write_glyphs, insert_glyphs, tty_insert_glyphs, delete_glyphs) (tty_delete_glyphs, tty_ins_del_lines, get_named_tty_display) (init_initial_display, delete_tty): Added docs. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-65 diff -r e66f69c4f2c5 -r c66ebcc29777 lib-src/emacsclient.c --- a/lib-src/emacsclient.c Sat Jan 24 20:03:33 2004 +0000 +++ b/lib-src/emacsclient.c Sun Jan 25 00:43:38 2004 +0000 @@ -282,6 +282,9 @@ #endif #endif +/* A signal handler that passes the signal to the Emacs process. + Useful for SIGWINCH. */ + SIGTYPE pass_signal_to_emacs (int signalnum) { @@ -294,6 +297,8 @@ errno = old_errno; } +/* Set up signal handlers before opening a frame on the current tty. */ + void init_signals (void) { diff -r e66f69c4f2c5 -r c66ebcc29777 lisp/bindings.el --- a/lisp/bindings.el Sat Jan 24 20:03:33 2004 +0000 +++ b/lisp/bindings.el Sun Jan 25 00:43:38 2004 +0000 @@ -214,7 +214,7 @@ (make-variable-buffer-local 'mode-line-buffer-identification) -(defvar mode-line-frame-identification '("-%T ") +(defvar mode-line-frame-identification '(window-system " " "-%F ") "Mode-line control to describe the current frame.") (defvar mode-line-process nil "\ diff -r e66f69c4f2c5 -r c66ebcc29777 lisp/loadup.el --- a/lisp/loadup.el Sat Jan 24 20:03:33 2004 +0000 +++ b/lisp/loadup.el Sun Jan 25 00:43:38 2004 +0000 @@ -190,6 +190,7 @@ (load "emacs-lisp/float-sup"))) (message "%s" (garbage-collect)) +;; Load auxiliary settings for X displays if we support them. (when (fboundp 'x-create-frame) (load "mouse") (load "international/fontset") diff -r e66f69c4f2c5 -r c66ebcc29777 src/buffer.c --- a/src/buffer.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/buffer.c Sun Jan 25 00:43:38 2004 +0000 @@ -5372,7 +5372,7 @@ (%-constructs are allowed when the string is the entire mode-line-format or when it is found in a cons-cell or a list) %b -- print buffer name. %f -- print visited file name. - %F -- print frame name. %T -- print frame name if on tty. + %F -- print frame name. %* -- print %, * or hyphen. %+ -- print *, % or hyphen. %& is like %*, but ignore read-only-ness. % means buffer is read-only and * means it is modified. diff -r e66f69c4f2c5 -r c66ebcc29777 src/cm.c --- a/src/cm.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/cm.c Sun Jan 25 00:43:38 2004 +0000 @@ -23,10 +23,8 @@ #include #include -/* For CURTTY */ #include "lisp.h" #include "frame.h" - #include "cm.h" #include "termhooks.h" #include "termchar.h" @@ -48,7 +46,6 @@ extern char *BC, *UP; - int cost; /* sums up costs */ /* ARGSUSED */ diff -r e66f69c4f2c5 -r c66ebcc29777 src/keyboard.c --- a/src/keyboard.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/keyboard.c Sun Jan 25 00:43:38 2004 +0000 @@ -10231,20 +10231,11 @@ input_available_clear_time = 0; } -/* This routine is called at interrupt level in response to C-g. - - If interrupt_input, this is the handler for SIGINT. Otherwise, it - is called from kbd_buffer_store_event, in handling SIGIO or - SIGTINT. - - If `waiting_for_input' is non zero, then unless `echoing' is - nonzero, immediately throw back to read_char. - - Otherwise it sets the Lisp variable quit-flag not-nil. This causes - eval to throw, when it gets a chance. If quit-flag is already - non-nil, it stops the job right away. - - XXX This comment needs to be updated. */ +/* The SIGINT handler. + + If we have a frame on the controlling tty, the SIGINT was generated + by C-g, so we call handle_interrupt. Otherwise, the handler kills + Emacs. */ static SIGTYPE interrupt_signal (signalnum) /* If we don't have an argument, */ @@ -10280,15 +10271,22 @@ internal_last_event_frame = display->display_info.tty->top_frame; handle_interrupt (); - } errno = old_errno; } -/* C-g processing, signal independent code. - - XXX Expand this comment. */ +/* This routine is called at interrupt level in response to C-g. + + It is called from the SIGINT handler or kbd_buffer_store_event. + + If `waiting_for_input' is non zero, then unless `echoing' is + nonzero, immediately throw back to read_char. + + Otherwise it sets the Lisp variable quit-flag not-nil. This causes + eval to throw, when it gets a chance. If quit-flag is already + non-nil, it stops the job right away. */ + static void handle_interrupt () { diff -r e66f69c4f2c5 -r c66ebcc29777 src/process.c --- a/src/process.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/process.c Sun Jan 25 00:43:38 2004 +0000 @@ -6544,6 +6544,8 @@ +/* Add DESC to the set of keyboard input descriptors. */ + void add_keyboard_wait_descriptor (desc) int desc; diff -r e66f69c4f2c5 -r c66ebcc29777 src/sysdep.c --- a/src/sysdep.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/sysdep.c Sun Jan 25 00:43:38 2004 +0000 @@ -1322,6 +1322,9 @@ static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1}; #endif +/* Initialize the terminal mode on all tty devices that are currently + open. */ + void init_all_sys_modes (void) { @@ -1330,6 +1333,8 @@ init_sys_modes (tty); } +/* Initialize the terminal mode on the given tty device. */ + void init_sys_modes (tty_out) struct tty_display_info *tty_out; @@ -1833,6 +1838,9 @@ } + +/* Prepare all terminal devices for exiting Emacs. */ + void reset_all_sys_modes (void) { @@ -1843,6 +1851,7 @@ /* Prepare the terminal for closing it; move the cursor to the bottom of the frame, turn off interrupt-driven I/O, etc. */ + void reset_sys_modes (tty_out) struct tty_display_info *tty_out; @@ -1854,11 +1863,27 @@ } if (!tty_out->term_initted) return; - + + /* Go to and clear the last line of the terminal. */ + cmgoto (tty_out, FrameRows (tty_out) - 1, 0); -#if 0 /* XXX This doesn't work anymore, the signature has changed. */ - tty_clear_end_of_line (tty_out, FrameCols (tty_out)); -#endif + + /* Code adapted from tty_clear_end_of_line. */ + if (tty_out->TS_clr_line) + { + emacs_tputs (tty_out, tty_out->TS_clr_line, 1, cmputc); + } + else + { /* have to do it the hard way */ + int i; + turn_off_insert (tty_out); + + for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++) + { + fputc (' ', TTY_OUTPUT (tty_out)); + } + } + cmgoto (tty_out, FrameRows (tty_out) - 1, 0); fflush (tty_out->output); diff -r e66f69c4f2c5 -r c66ebcc29777 src/term.c --- a/src/term.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/term.c Sun Jan 25 00:43:38 2004 +0000 @@ -201,6 +201,8 @@ (*FRAME_DISPLAY (f)->ring_bell_hook) (); } +/* Ring the bell on a tty. */ + void tty_ring_bell () { @@ -212,7 +214,10 @@ : tty->TS_bell)); } -void tty_set_terminal_modes (struct display *display) +/* Set up termcap modes for Emacs. */ + +void +tty_set_terminal_modes (struct display *display) { struct tty_display_info *tty = display->display_info.tty; @@ -222,7 +227,10 @@ losecursor (tty); } -void tty_reset_terminal_modes (struct display *display) +/* Reset termcap modes before exiting Emacs. */ + +void +tty_reset_terminal_modes (struct display *display) { struct tty_display_info *tty = display->display_info.tty; @@ -255,6 +263,8 @@ updating_frame = NULL; } +/* Flag the end of a display update on a termcap display. */ + void tty_update_end (struct frame *f) { @@ -266,6 +276,11 @@ background_highlight (tty); } +/* Specify how many text lines, from the top of the window, + should be affected by insert-lines and delete-lines operations. + This, and those operations, are used only within an update + that is bounded by calls to update_begin and update_end. */ + void set_terminal_window (size) int size; @@ -278,6 +293,8 @@ (*FRAME_DISPLAY (f)->set_terminal_window_hook) (size); } +/* The implementation of set_terminal_window for termcap frames. */ + void tty_set_terminal_window (int size) { @@ -489,7 +506,7 @@ /* Erase operations */ -/* clear from cursor to end of frame */ +/* Clear from cursor to end of frame. */ void clear_to_end () { @@ -501,6 +518,8 @@ (*FRAME_DISPLAY (f)->clear_to_end_hook) (); } +/* Clear from cursor to end of frame on a termcap device. */ + void tty_clear_to_end (void) { @@ -536,6 +555,8 @@ (*FRAME_DISPLAY (f)->clear_frame_hook) (); } +/* Clear an entire termcap frame. */ + void tty_clear_frame () { @@ -575,6 +596,10 @@ (*FRAME_DISPLAY (f)->clear_end_of_line_hook) (first_unused_hpos); } +/* An implementation of clear_end_of_line for termcap frames. + + Note that the cursor may be moved, on terminals lacking a `ce' string. */ + void tty_clear_end_of_line (int first_unused_hpos) { @@ -725,6 +750,9 @@ } +/* Output LEN glyphs starting at STRING at the nominal cursor position. + Advance the nominal cursor over the text. */ + void write_glyphs (string, len) register struct glyph *string; @@ -738,6 +766,8 @@ (*FRAME_DISPLAY (f)->write_glyphs_hook) (string, len); } +/* An implementation of write_glyphs for termcap frames. */ + void tty_write_glyphs (struct glyph *string, int len) { @@ -833,7 +863,9 @@ cmcheckmagic (tty); } -/* If start is zero, insert blanks instead of a string at start */ +/* Insert LEN glyphs from START at the nominal cursor position. + + If start is zero, insert blanks instead of a string at start */ void insert_glyphs (start, len) @@ -851,6 +883,8 @@ (*FRAME_DISPLAY (f)->insert_glyphs_hook) (start, len); } +/* An implementation of insert_glyphs for termcap frames. */ + void tty_insert_glyphs (struct glyph *start, int len) { @@ -934,6 +968,8 @@ cmcheckmagic (tty); } +/* Delete N glyphs at the nominal cursor position. */ + void delete_glyphs (n) register int n; @@ -946,6 +982,8 @@ (*FRAME_DISPLAY (f)->delete_glyphs_hook) (n); } +/* An implementation of delete_glyphs for termcap frames. */ + void tty_delete_glyphs (int n) { @@ -994,6 +1032,8 @@ (*FRAME_DISPLAY (f)->ins_del_lines_hook) (vpos, n); } +/* An implementation of ins_del_lines for termcap frames. */ + void tty_ins_del_lines (int vpos, int n) { @@ -2082,6 +2122,11 @@ +/* Return the termcap display with the given name. If NAME is null, + return the display corresponding to our controlling terminal. + + Returns NULL if the named terminal device is not opened. */ + struct display * get_named_tty_display (name) char *name; @@ -2159,8 +2204,8 @@ ***********************************************************************/ /* Create the bootstrap display device for the initial frame. - -Returns a display of type output_initial. */ + Returns a display of type output_initial. */ + struct display * init_initial_display (void) { @@ -2180,6 +2225,7 @@ /* Deletes the bootstrap display device. Called through delete_display_hook. */ + void delete_initial_display (struct display *display) { @@ -2200,6 +2246,7 @@ TERMINAL_TYPE is the termcap type of the device, e.g. "vt100". If MUST_SUCCEED is true, then all errors are fatal. */ + struct display * term_init (char *name, char *terminal_type, int must_succeed) { @@ -2734,8 +2781,8 @@ /* Auxiliary error-handling function for term_init. Free BUFFER and delete DISPLAY, then call error or fatal - with str1 or str2, respectively, according to MUST_SUCCEED. -*/ + with str1 or str2, respectively, according to MUST_SUCCEED. */ + static void maybe_fatal (must_succeed, buffer, display, str1, str2, arg1, arg2) int must_succeed; @@ -2802,6 +2849,9 @@ static int deleting_tty = 0; + +/* Delete the given terminal device, closing all frames on it. */ + void delete_tty (struct display *display) { @@ -2904,6 +2954,7 @@ /* Initialize the tty-dependent part of frame F. The frame must already have its display initialized. */ + void create_tty_output (struct frame *f) { @@ -2921,6 +2972,7 @@ } /* Delete the tty-dependent part of frame F. */ + void delete_tty_output (struct frame *f) { @@ -2935,6 +2987,7 @@ /* Mark the pointers in the tty_display_info objects. Called by the Fgarbage_collector. */ + void mark_ttys () { @@ -2950,6 +3003,7 @@ /* Create a new display object and add it to the display list. */ + struct display * create_display (void) { @@ -2963,6 +3017,7 @@ } /* Remove a display from the display list and free its memory. */ + void delete_display (struct display *dev) { diff -r e66f69c4f2c5 -r c66ebcc29777 src/termchar.h --- a/src/termchar.h Sat Jan 24 20:03:33 2004 +0000 +++ b/src/termchar.h Sun Jan 25 00:43:38 2004 +0000 @@ -21,6 +21,7 @@ /* Each termcap frame points to its own struct tty_output object in the output_data.tty field. The tty_output structure contains the information that is specific to termcap frames. */ + struct tty_output { /* The Emacs structure for the tty device this frame is on. */ @@ -30,6 +31,7 @@ }; /* Parameters that are shared between frames on the same tty device. */ + struct tty_display_info { struct tty_display_info *next; /* Chain of all tty devices. */ diff -r e66f69c4f2c5 -r c66ebcc29777 src/xdisp.c --- a/src/xdisp.c Sat Jan 24 20:03:33 2004 +0000 +++ b/src/xdisp.c Sun Jan 25 00:43:38 2004 +0000 @@ -16675,14 +16675,6 @@ return "T"; #endif - case 'T': - /* %T is the frame name on a termcap frame, the empty string otherwise. */ - if (! FRAME_TERMCAP_P (f)) - return ""; - if (!NILP (f->title)) - return (char *) SDATA (f->title); - return (char *) SDATA (f->name); - case 'z': /* coding-system (not including end-of-line format) */ case 'Z':