Mercurial > hg > xemacs-beta
annotate man/term.texi @ 4952:19a72041c5ed
Mule-izing, various fixes related to char * arguments
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (print_pgresult):
* postgresql/postgresql.c (Fpq_conn_defaults):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_result_status):
* postgresql/postgresql.c (Fpq_res_status):
Mule-ize large parts of it.
2010-01-26 Ben Wing <ben@xemacs.org>
* ldap/eldap.c (print_ldap):
* ldap/eldap.c (allocate_ldap):
Use write_ascstring().
src/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* alloc.c:
* alloc.c (build_ascstring):
* alloc.c (build_msg_cistring):
* alloc.c (staticpro_1):
* alloc.c (staticpro_name):
* alloc.c (staticpro_nodump_1):
* alloc.c (staticpro_nodump_name):
* alloc.c (unstaticpro_nodump_1):
* alloc.c (mcpro_1):
* alloc.c (mcpro_name):
* alloc.c (object_memory_usage_stats):
* alloc.c (common_init_alloc_early):
* alloc.c (init_alloc_once_early):
* buffer.c (print_buffer):
* buffer.c (vars_of_buffer):
* buffer.c (common_init_complex_vars_of_buffer):
* buffer.c (init_initial_directory):
* bytecode.c (invalid_byte_code):
* bytecode.c (print_compiled_function):
* bytecode.c (mark_compiled_function):
* chartab.c (print_table_entry):
* chartab.c (print_char_table):
* config.h.in:
* console-gtk.c:
* console-gtk.c (gtk_device_to_console_connection):
* console-gtk.c (gtk_semi_canonicalize_console_connection):
* console-gtk.c (gtk_canonicalize_console_connection):
* console-gtk.c (gtk_semi_canonicalize_device_connection):
* console-gtk.c (gtk_canonicalize_device_connection):
* console-stream.c (stream_init_frame_1):
* console-stream.c (vars_of_console_stream):
* console-stream.c (init_console_stream):
* console-x.c (x_semi_canonicalize_console_connection):
* console-x.c (x_semi_canonicalize_device_connection):
* console-x.c (x_canonicalize_device_connection):
* console-x.h:
* data.c (eq_with_ebola_notice):
* data.c (Fsubr_interactive):
* data.c (Fnumber_to_string):
* data.c (digit_to_number):
* device-gtk.c (gtk_init_device):
* device-msw.c (print_devmode):
* device-x.c (x_event_name):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-msw.c (vars_of_dialog_mswindows):
* doc.c (weird_doc):
* doc.c (Fsnarf_documentation):
* doc.c (vars_of_doc):
* dumper.c (pdump):
* dynarr.c:
* dynarr.c (Dynarr_realloc):
* editfns.c (Fuser_real_login_name):
* editfns.c (get_home_directory):
* elhash.c (print_hash_table_data):
* elhash.c (print_hash_table):
* emacs.c (main_1):
* emacs.c (vars_of_emacs):
* emodules.c:
* emodules.c (_emodules_list):
* emodules.c (Fload_module):
* emodules.c (Funload_module):
* emodules.c (Flist_modules):
* emodules.c (find_make_module):
* emodules.c (attempt_module_delete):
* emodules.c (emodules_load):
* emodules.c (emodules_doc_subr):
* emodules.c (emodules_doc_sym):
* emodules.c (syms_of_module):
* emodules.c (vars_of_module):
* emodules.h:
* eval.c (print_subr):
* eval.c (signal_call_debugger):
* eval.c (build_error_data):
* eval.c (signal_error):
* eval.c (maybe_signal_error):
* eval.c (signal_continuable_error):
* eval.c (maybe_signal_continuable_error):
* eval.c (signal_error_2):
* eval.c (maybe_signal_error_2):
* eval.c (signal_continuable_error_2):
* eval.c (maybe_signal_continuable_error_2):
* eval.c (signal_ferror):
* eval.c (maybe_signal_ferror):
* eval.c (signal_continuable_ferror):
* eval.c (maybe_signal_continuable_ferror):
* eval.c (signal_ferror_with_frob):
* eval.c (maybe_signal_ferror_with_frob):
* eval.c (signal_continuable_ferror_with_frob):
* eval.c (maybe_signal_continuable_ferror_with_frob):
* eval.c (syntax_error):
* eval.c (syntax_error_2):
* eval.c (maybe_syntax_error):
* eval.c (sferror):
* eval.c (sferror_2):
* eval.c (maybe_sferror):
* eval.c (invalid_argument):
* eval.c (invalid_argument_2):
* eval.c (maybe_invalid_argument):
* eval.c (invalid_constant):
* eval.c (invalid_constant_2):
* eval.c (maybe_invalid_constant):
* eval.c (invalid_operation):
* eval.c (invalid_operation_2):
* eval.c (maybe_invalid_operation):
* eval.c (invalid_change):
* eval.c (invalid_change_2):
* eval.c (maybe_invalid_change):
* eval.c (invalid_state):
* eval.c (invalid_state_2):
* eval.c (maybe_invalid_state):
* eval.c (wtaerror):
* eval.c (stack_overflow):
* eval.c (out_of_memory):
* eval.c (print_multiple_value):
* eval.c (issue_call_trapping_problems_warning):
* eval.c (backtrace_specials):
* eval.c (backtrace_unevalled_args):
* eval.c (Fbacktrace):
* eval.c (warn_when_safe):
* event-Xt.c (modwarn):
* event-Xt.c (modbarf):
* event-Xt.c (check_modifier):
* event-Xt.c (store_modifier):
* event-Xt.c (emacs_Xt_format_magic_event):
* event-Xt.c (describe_event):
* event-gtk.c (dragndrop_data_received):
* event-gtk.c (store_modifier):
* event-gtk.c (gtk_reset_modifier_mapping):
* event-msw.c (dde_eval_string):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (FROB):
* event-msw.c (emacs_mswindows_format_magic_event):
* event-stream.c (external_debugging_print_event):
* event-stream.c (execute_help_form):
* event-stream.c (vars_of_event_stream):
* events.c (print_event_1):
* events.c (print_event):
* events.c (event_equal):
* extents.c (print_extent_1):
* extents.c (print_extent):
* extents.c (vars_of_extents):
* faces.c (print_face):
* faces.c (complex_vars_of_faces):
* file-coding.c:
* file-coding.c (print_coding_system):
* file-coding.c (print_coding_system_in_print_method):
* file-coding.c (default_query_method):
* file-coding.c (find_coding_system):
* file-coding.c (make_coding_system_1):
* file-coding.c (chain_print):
* file-coding.c (undecided_print):
* file-coding.c (gzip_print):
* file-coding.c (vars_of_file_coding):
* file-coding.c (complex_vars_of_file_coding):
* fileio.c:
* fileio.c (report_file_type_error):
* fileio.c (report_error_with_errno):
* fileio.c (report_file_error):
* fileio.c (barf_or_query_if_file_exists):
* fileio.c (vars_of_fileio):
* floatfns.c (matherr):
* fns.c (print_bit_vector):
* fns.c (Fmapconcat):
* fns.c (add_suffix_to_symbol):
* fns.c (add_prefix_to_symbol):
* frame-gtk.c:
* frame-gtk.c (Fgtk_window_id):
* frame-x.c (def):
* frame-x.c (x_cde_transfer_callback):
* frame.c:
* frame.c (Fmake_frame):
* gc.c (show_gc_cursor_and_message):
* gc.c (vars_of_gc):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (gtk_print_image_instance):
* glyphs-msw.c (mswindows_print_image_instance):
* glyphs-x.c (x_print_image_instance):
* glyphs-x.c (update_widget_face):
* glyphs.c (make_string_from_file):
* glyphs.c (print_image_instance):
* glyphs.c (signal_image_error):
* glyphs.c (signal_image_error_2):
* glyphs.c (signal_double_image_error):
* glyphs.c (signal_double_image_error_2):
* glyphs.c (xbm_mask_file_munging):
* glyphs.c (pixmap_to_lisp_data):
* glyphs.h:
* gui.c (gui_item_display_flush_left):
* hpplay.c (player_error_internal):
* hpplay.c (myHandler):
* intl-win32.c:
* intl-win32.c (langcode_to_lang):
* intl-win32.c (sublangcode_to_lang):
* intl-win32.c (Fmswindows_get_locale_info):
* intl-win32.c (lcid_to_locale_mule_or_no):
* intl-win32.c (mswindows_multibyte_to_unicode_print):
* intl-win32.c (complex_vars_of_intl_win32):
* keymap.c:
* keymap.c (print_keymap):
* keymap.c (ensure_meta_prefix_char_keymapp):
* keymap.c (Fkey_description):
* keymap.c (Ftext_char_description):
* lisp.h:
* lisp.h (struct):
* lisp.h (DECLARE_INLINE_HEADER):
* lread.c (Fload_internal):
* lread.c (locate_file):
* lread.c (read_escape):
* lread.c (read_raw_string):
* lread.c (read1):
* lread.c (read_list):
* lread.c (read_compiled_function):
* lread.c (init_lread):
* lrecord.h:
* marker.c (print_marker):
* marker.c (marker_equal):
* menubar-msw.c (displayable_menu_item):
* menubar-x.c (command_builder_operate_menu_accelerator):
* menubar.c (vars_of_menubar):
* minibuf.c (reinit_complex_vars_of_minibuf):
* minibuf.c (complex_vars_of_minibuf):
* mule-charset.c (Fmake_charset):
* mule-charset.c (complex_vars_of_mule_charset):
* mule-coding.c (iso2022_print):
* mule-coding.c (fixed_width_query):
* number.c (bignum_print):
* number.c (ratio_print):
* number.c (bigfloat_print):
* number.c (bigfloat_finalize):
* objects-msw.c:
* objects-msw.c (mswindows_color_to_string):
* objects-msw.c (mswindows_color_list):
* objects-tty.c:
* objects-tty.c (tty_font_list):
* objects-tty.c (tty_find_charset_font):
* objects-xlike-inc.c (xft_find_charset_font):
* objects-xlike-inc.c (endif):
* print.c:
* print.c (write_istring):
* print.c (write_ascstring):
* print.c (Fterpri):
* print.c (Fprint):
* print.c (print_error_message):
* print.c (print_vector_internal):
* print.c (print_cons):
* print.c (print_string):
* print.c (printing_unreadable_object):
* print.c (print_internal):
* print.c (print_float):
* print.c (print_symbol):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_canonicalize_host_name):
* process-unix.c (unix_canonicalize_host_name):
* process.c (print_process):
* process.c (report_process_error):
* process.c (report_network_error):
* process.c (make_process_internal):
* process.c (Fstart_process_internal):
* process.c (status_message):
* process.c (putenv_internal):
* process.c (vars_of_process):
* process.h:
* profile.c (vars_of_profile):
* rangetab.c (print_range_table):
* realpath.c (vars_of_realpath):
* redisplay.c (vars_of_redisplay):
* search.c (wordify):
* search.c (Freplace_match):
* sheap.c (sheap_adjust_h):
* sound.c (report_sound_error):
* sound.c (Fplay_sound_file):
* specifier.c (print_specifier):
* symbols.c (Fsubr_name):
* symbols.c (do_symval_forwarding):
* symbols.c (set_default_buffer_slot_variable):
* symbols.c (set_default_console_slot_variable):
* symbols.c (store_symval_forwarding):
* symbols.c (default_value):
* symbols.c (defsymbol_massage_name_1):
* symbols.c (defsymbol_massage_name_nodump):
* symbols.c (defsymbol_massage_name):
* symbols.c (defsymbol_massage_multiword_predicate_nodump):
* symbols.c (defsymbol_massage_multiword_predicate):
* symbols.c (defsymbol_nodump):
* symbols.c (defsymbol):
* symbols.c (defkeyword):
* symbols.c (defkeyword_massage_name):
* symbols.c (check_module_subr):
* symbols.c (deferror_1):
* symbols.c (deferror):
* symbols.c (deferror_massage_name):
* symbols.c (deferror_massage_name_and_message):
* symbols.c (defvar_magic):
* symeval.h:
* symeval.h (DEFVAR_SYMVAL_FWD):
* sysdep.c:
* sysdep.c (init_system_name):
* sysdll.c:
* sysdll.c (MAYBE_PREPEND_UNDERSCORE):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (dll_error):
* sysdll.c (dll_open):
* sysdll.c (dll_close):
* sysdll.c (image_for_address):
* sysdll.c (my_find_image):
* sysdll.c (search_linked_libs):
* sysdll.h:
* sysfile.h:
* sysfile.h (DEFAULT_DIRECTORY_FALLBACK):
* syswindows.h:
* tests.c (DFC_CHECK_LENGTH):
* tests.c (DFC_CHECK_CONTENT):
* tests.c (Ftest_hash_tables):
* text.c (vars_of_text):
* text.h:
* tooltalk.c (tt_opnum_string):
* tooltalk.c (tt_message_arg_ival_string):
* tooltalk.c (Ftooltalk_default_procid):
* tooltalk.c (Ftooltalk_default_session):
* tooltalk.c (init_tooltalk):
* tooltalk.c (vars_of_tooltalk):
* ui-gtk.c (Fdll_load):
* ui-gtk.c (type_to_marshaller_type):
* ui-gtk.c (Fgtk_import_function_internal):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* unicode.c (unicode_to_ichar):
* unicode.c (unicode_print):
* unicode.c (unicode_query):
* unicode.c (vars_of_unicode):
* unicode.c (complex_vars_of_unicode):
* win32.c:
* win32.c (mswindows_report_process_error):
* window.c (print_window):
* xemacs.def.in.in:
BASIC IDEA: Further fixing up uses of char * and CIbyte *
to reflect their actual semantics; Mule-izing some code;
redoing of the not-yet-working code to handle message translation.
Clean up code to handle message-translation (not yet working).
Create separate versions of build_msg_string() for working with
Ibyte *, CIbyte *, and Ascbyte * arguments. Assert that Ascbyte *
arguments are pure-ASCII. Make build_msg_string() be the same
as build_msg_ascstring(). Create same three versions of GETTEXT()
and DEFER_GETTEXT(). Also create build_defer_string() and
variants for the equivalent of DEFER_GETTEXT() when building a
string. Remove old CGETTEXT(). Clean up code where GETTEXT(),
DEFER_GETTEXT(), build_msg_string(), etc. was being called and
introduce some new calls to build_msg_string(), etc. Remove
GETTEXT() from calls to weird_doc() -- we assume that the
message snarfer knows about weird_doc(). Remove uses of
DEFER_GETTEXT() from error messages in sysdep.c and instead use
special comments /* @@@begin-snarf@@@ */ and /* @@@end-snarf@@@ */
that the message snarfer presumably knows about.
Create build_ascstring() and use it in many instances in place
of build_string(). The purpose of having Ascbyte * variants is
to make the code more self-documenting in terms of what sort of
semantics is expected for char * strings. In fact in the process
of looking for uses of build_string(), much improperly Mule-ized
was discovered.
Mule-ize a lot of code as described in previous paragraph,
e.g. in sysdep.c.
Make the error functions take Ascbyte * strings and fix up a
couple of places where non-pure-ASCII strings were being passed in
(file-coding.c, mule-coding.c, unicode.c). (It's debatable whether
we really need to make the error functions work this way. It
helps catch places where code is written in a way that message
translation won't work, but we may well never implement message
translation.)
Make staticpro() and friends take Ascbyte * strings instead of
raw char * strings. Create a const_Ascbyte_ptr dynarr type
to describe what's held by staticpro_names[] and friends,
create pdump descriptions for const_Ascbyte_ptr dynarrs, and
use them in place of specially-crafted staticpro descriptions.
Mule-ize certain other functions (e.g. x_event_name) by correcting
raw use of char * to Ascbyte *, Rawbyte * or another such type,
and raw use of char[] buffers to another type (usually Ascbyte[]).
Change many uses of write_c_string() to write_msg_string(),
write_ascstring(), etc.
Mule-ize emodules.c, emodules.h, sysdll.h.
Fix some un-Mule-ized code in intl-win32.c.
A comment in event-Xt.c and the limitations of the message
snarfer (make-msgfile or whatever) is presumably incorrect --
it should be smart enough to handle function calls spread over
more than one line. Clean up code in event-Xt.c that was
written awkwardly for this reason.
In config.h.in, instead of NEED_ERROR_CHECK_TYPES_INLINES,
create a more general XEMACS_DEFS_NEEDS_INLINE_DECLS to
indicate when inlined functions need to be declared in
xemacs.defs.in.in, and make use of it in xemacs.defs.in.in.
We need to do this because postgresql.c now calls qxestrdup(),
which is an inline function.
Make nconc2() and other such functions MODULE_API and put
them in xemacs.defs.in.in since postgresql.c now uses them.
Clean up indentation in lread.c and a few other places.
In text.h, document ASSERT_ASCTEXT_ASCII() and
ASSERT_ASCTEXT_ASCII_LEN(), group together the stand-in
encodings and add some more for DLL symbols, function and
variable names, etc.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Tue, 26 Jan 2010 23:22:30 -0600 |
parents | 1094d6d400fb |
children |
rev | line source |
---|---|
428 | 1 @\input texinfo @c -*-texinfo-*- |
2 @setfilename ../info/term.info | |
696 | 3 @settitle XEmacs Terminal Emulator Mode |
428 | 4 |
5 @titlepage | |
6 @sp 6 | |
696 | 7 @center @titlefont(XEmacs Terminal Emulator Mode) |
428 | 8 @end titlepage |
9 | |
10 @ifinfo | |
11 @dircategory XEmacs Editor | |
12 @direntry | |
696 | 13 * Term mode: (term). XEmacs Terminal Emulator Mode. |
428 | 14 @end direntry |
15 | |
16 @node Top, , (DIR) | |
17 @top Terminal emulator mode | |
18 @end ifinfo | |
19 | |
20 This is some notes about the term Emacs mode. | |
21 | |
22 @menu | |
23 * term mode:: | |
24 @end menu | |
25 | |
26 @node term mode | |
696 | 27 @chapter XEmacs Terminal Emulator Mode |
428 | 28 |
29 @menu | |
30 * Overview:: | |
31 * Connecting to remote computers:: | |
32 * Paging:: | |
33 * Terminal escapes:: | |
34 @end menu | |
35 | |
36 The @code{term} package includes the major modes @code{term}, | |
4312 | 37 @code{shell}, and @code{gud} (for running gdb or another debugger). |
428 | 38 It is a replacement for the comint mode of Emacs 19, |
39 as well as shell, gdb, terminal, and telnet modes. | |
40 The package works best with recent releases of Emacs 19, | |
41 but will also work reasonably well with Emacs 18 as well as Lucid Emacs 19. | |
42 | |
43 The file @code{nshell.el} is a wrapper to use unless term mode | |
44 is built into Emacs. If works around some of the missing | |
45 in older Emacs versions. | |
46 To use it, edit the paths in @code{nshell.el}, appropriately, | |
47 and then @code{M-x load-file nshell.el RET}. | |
48 This will also load in replacement shell and gud modes. | |
49 | |
50 @node Overview | |
51 @section Overview | |
52 | |
53 The @code{term} mode is used to control a program (an "inferior process"). | |
54 It sends most keyboard input characters to the program, | |
55 and displays output from the program in the buffer. | |
56 This is similar to the traditional comint mode, and | |
57 modes derived from it (such as shell and gdb modes). | |
58 You can do with the new term-based shell the same sort | |
59 of things you could do with the old shell mode, | |
60 using more or less the same interface. However, the | |
61 new mode is more flexible, and works somewhat differently. | |
62 | |
63 @menu | |
64 * Output from the inferior:: | |
65 * subbuffer:: The sub-buffer | |
66 * altsubbuffer:: The alternate sub-buffer | |
67 * Input to the inferior:: | |
68 @end menu | |
69 | |
70 @node Output from the inferior | |
71 @subsection Output from the inferior | |
72 | |
73 In typical usage, output from the inferior is | |
74 added to the end of the buffer. If needed, the window | |
75 will be scrolled, just like a regular terminal. | |
76 (Only one line at a time will be scrolled, just like | |
77 regular terminals, and in contrast to the old shell mode.) | |
78 Thus the buffer becomes a log of your interaction with the | |
79 inferior, just like the old shell mode. | |
80 | |
81 Like a real terminal, term maintains a "cursor position." | |
82 This is the @code{process-mark} of the inferior process. | |
83 If the process-mark is not at the end of the buffer, output from | |
84 the inferior will overwrite existing text in the buffer. | |
85 This is like a real terminal, but unlike the old shell mode | |
86 (which inserts the output, instead of overwriting). | |
87 | |
88 Some programs (such as Emacs itself) need to control the | |
89 appearance on the screen in detail. They do this by | |
90 sending special control codes. The exact control | |
91 codes needed from terminal to terminal, but nowadays | |
92 most terminals and terminal emulators (including xterm) | |
93 understand the so-called "ANSI escape sequences" (first | |
94 popularized by the Digital's VT100 family of terminal). | |
95 The term mode also understands these escape sequences, | |
96 and for each control code does the appropriate thing | |
97 to change the buffer so that the appearance of the window | |
98 will match what it would be on a real terminal. | |
99 (In contrast, the old shell mode doesn't handle | |
100 terminal control codes at all.) | |
101 | |
102 See <...> for the specific control codes. | |
103 | |
104 @node subbuffer | |
105 @subsection The sub-buffer | |
106 | |
107 A program that talks to terminal expects the terminal to have a fixed size. | |
108 If the program is talking a terminal emulator program such as @code{xterm}, | |
109 that size can be changed (if the xterm window is re-sized), but programs | |
110 still assume a logical terminal that has a fixed size independent | |
111 of the amount of output transmitted by the programs. | |
112 | |
113 To programs that use it, the Emacs terminal emulator acts as if it | |
114 too has a fixed size. The @dfn{sub-buffer} is the part of a @code{term}-mode | |
115 buffer that corresponds to a "normal" terminal. Most of the time | |
116 (unless you explicitly scroll the window displaying the buffer), | |
117 the sub-buffer is the part of the buffer that is displayed in a window. | |
118 | |
119 The sub-buffer is defined in terms of three buffer-local-variable: | |
120 | |
121 @defvar term-height | |
122 The height of the sub-buffer, in screen lines. | |
123 @end defvar | |
124 | |
125 @defvar term-width | |
126 The width of the sub-buffer, in screen columns. | |
127 @end defvar | |
128 | |
129 @defvar term-home-marker | |
130 The "home" position, that is the top left corner of the sub-buffer. | |
131 @end defvar | |
132 | |
133 The sub-buffer is assumed to be the end part of the buffer; | |
134 the @code{term-home-marker} should never be more than | |
135 @code{term-height} screen lines from the end of the buffer. | |
136 | |
137 @node altsubbuffer | |
138 @subsection The alternate sub-buffer | |
139 | |
140 When a "graphical" program finishes, it is nice to | |
141 restore the screen state to what it was before the program started. | |
142 Many people are used to this behavior from @code{xterm}, and | |
143 its also offered by the @code{term} emulator. | |
144 | |
145 @defun term-switch-to-alternate-sub-buffer set | |
146 If @var{set} is true, and we're not already using the alternate sub-buffer, | |
147 switch to it. What this means is that the @code{term-home-marker} | |
148 is saved (in the variable @code{term-saved-home-marker}), and the | |
149 @code{term-home-marker} is set to the end of the buffer. | |
150 | |
151 If @var{set} is false and we're using the alternate sub-buffer, | |
152 switch back to the saved sub-buffer. What this means is that the | |
153 (current, alternate) sub-buffer is deleted (using | |
154 @code{(delete-region term-home-marker (point-max))}), and then the | |
155 @code{term-home-marker} is restored (from @code{term-saved-home-marker}). | |
156 @end defun | |
157 | |
158 @node Input to the inferior | |
159 @subsection Input to the inferior | |
160 | |
161 Characters typed by the user are sent to the inferior. | |
162 How this is done depends on whether the @code{term} buffer | |
163 is in "character" mode or "line" mode. | |
164 (A @code{term} buffer can also be in "pager" mode. | |
165 This is discussed <later>.) | |
166 Which of these is currently active is specified in the mode line. | |
167 The difference between them is the key-bindings available. | |
168 | |
169 In character mode, one character (by default @key{C-c}) is special, | |
170 and is a prefix for various commands. All other characters are | |
171 sent directly to the inferior process, with no interpretation by Emacs. | |
172 Character mode looks and feels like a real terminal, or a conventional | |
173 terminal emulator such as xterm. | |
174 | |
175 In line mode, key commands mostly have standard Emacs actions. | |
176 Regulars characters insert themselves into the buffer. | |
177 When return is typed, the entire current line of the buffer | |
178 (except possibly the prompt) is sent to the inferior process. | |
179 Line mode is basically the original shell mode from earlier Emacs versions. | |
180 | |
936 | 181 To switch from line mode to character mode type @kbd{C-c C-k}. |
182 To switch from character mode to line mode type @kbd{C-c C-j}. | |
428 | 183 |
184 In either mode, "echoing" of user input is handled by the inferior. | |
185 Therefor, in line mode after an input line at the end of the buffer | |
186 is sent to the inferior, it is deleted from the buffer. | |
187 This is so that the inferior can echo the input, if it wishes | |
188 (which it normally does). | |
189 | |
190 @node Connecting to remote computers | |
191 @section Connecting to remote computers | |
192 | |
193 If you want to login to a remove computer, you can do that just as | |
194 you would expect, using whatever commands you would normally use. | |
195 | |
196 (This is worth emphasizing, because earlier versions of @code{shell} | |
197 mode would not work properly if you tried to log in to some other | |
198 computer, because of the way echoing was handled. That is why | |
199 there was a separate @code{telnet} mode to partially compensate for | |
200 these problems. The @code{telnet} mode is no longer needed, and | |
201 is basically obsolete.) | |
202 | |
203 A program that asks you for a password will normally suppress | |
204 echoing of the password, so the password will not show up in the buffer. | |
205 This will happen just as if you were using a real terminal, if | |
206 the buffer is in char mode. If it is in line mode, the password | |
207 will be temporarily visible, but will be erased when you hit return. | |
208 (This happens automatically; there is no special password processing.) | |
209 | |
210 When you log in to a different machine, you need to specify the | |
211 type of terminal your using. If you are talking to a Bourne-compatible | |
212 shell, and your system understands the @code{TERMCAP} variable, | |
213 you can use the command @kbd{M-x shell-send-termcap}, which | |
214 sends a string specifying the terminal type and size. | |
215 (This command is also useful after the window has changed size.) | |
216 | |
217 If you need to specify the terminal type manually, you can try the | |
218 terminal types "ansi" or "vt100". | |
219 | |
220 You can of course run gdb on that remote computer. One useful | |
221 trick: If you invoke gdb with the @code{--fullname} option, | |
222 it will send special commands to Emacs that will cause Emacs to | |
223 pop up the source files you're debugging. This will work | |
224 whether or not gdb is running on a different computer than Emacs, | |
225 assuming can access the source files specified by gdb. | |
226 | |
227 @node Paging | |
228 @section Paging | |
229 | |
230 When the pager is enabled, Emacs will "pause" after each screenful | |
231 of output (since the last input sent to the inferior). | |
232 It will enter "pager" mode, which feels a lot like the "more" | |
233 program: Typing a space requests another screenful of output. | |
234 Other commands request more or less output, or scroll backwards | |
235 in the @code{term} buffer. In pager mode, type @kbd{h} or @kbd{?} | |
236 to display a help message listing all the available pager mode commands. | |
237 | |
238 In either character or line mode, type @kbd{C-c p} to enable paging, | |
239 and @kbd{C-c D} to disable it. | |
240 | |
241 @node Terminal escapes | |
242 @section Terminal Escape sequences | |
243 | |
244 A program that does "graphics" on a terminal controls the | |
245 terminal by sending strings called @dfn{terminal escape sequences} | |
246 that the terminal (or terminal emulator) interprets as special commands. | |
247 The @code{term} mode includes a terminal emulator that understands | |
248 standard ANSI escape sequences, originally popularized by VT100 terminals, | |
249 and now used by the @code{xterm} program and most modern terminal | |
250 emulator software. | |
251 | |
252 @menu | |
253 * Cursor motion:: Escape sequences to move the cursor | |
254 * Erasing:: Escape commands for erasing text | |
255 * Inserting and deleting:: Escape sequences to insert and delete text | |
256 * Scrolling:: Escape sequences to scroll part of the visible window | |
257 * Command hook:: | |
258 * Miscellaneous escapes:: | |
259 @end menu | |
260 | |
261 printing chars | |
262 | |
263 tab | |
264 | |
265 LF | |
266 | |
267 @node Cursor motion | |
268 @subsection Escape sequences to move the cursor | |
269 | |
270 @table @kbd | |
271 @item RETURN | |
272 Moves to the beginning of the current screen line. | |
273 | |
274 @item C-b | |
275 Moves backwards one column. (Tabs are broken up if needed.) | |
276 @comment Line wrap FIXME | |
277 | |
278 @item Esc [ R ; C H | |
279 Move to screen row R, screen column C, where (R=1) is the top row, | |
280 and (C=1) is the leftmost column. Defaults are R=1 and C=1. | |
281 | |
282 @item Esc [ N A | |
283 Move N (default 1) screen lines up. | |
284 @item Esc [ N B | |
285 Move N (default 1) screen lines down. | |
286 @item Esc [ N C | |
287 Move N (default 1) columns right. | |
288 @item Esc [ N D | |
289 Move N (default 1) columns left. | |
290 @end table | |
291 | |
292 @node Erasing | |
293 @subsection Escape commands for erasing text | |
294 | |
295 These commands "erase" part of the sub-buffer. | |
296 Erasing means replacing by white space; it is not the same as deleting. | |
297 The relative screen positions of things that are not erased remain | |
298 unchanged with each other, as does the relative cursor position. | |
299 | |
300 @table @kbd | |
301 @item E [ J | |
302 Erase from cursor to end of screen. | |
303 @item E [ 0 J | |
304 Same as E [ J. | |
305 @item E [ 1 J | |
306 Erase from home position to point. | |
307 @item E [ 2 J | |
308 Erase whole sub-buffer. | |
309 @item E [ K | |
310 Erase from point to end of screen line. | |
311 @item E [ 0 K | |
312 Same as E [ K. | |
313 @item E [ 1 K | |
314 Erase from beginning of screen line to point. | |
315 @item E [ 2 K | |
316 Erase whole screen line. | |
317 @end table | |
318 | |
319 @node Inserting and deleting | |
320 @subsection Escape sequences to insert and delete text | |
321 | |
322 @table @kbd | |
323 @item Esc [ N L | |
324 Insert N (default 1) blank lines. | |
325 @item Esc [ N M | |
326 Delete N (default 1) lines. | |
327 @item Esc [ N P | |
328 Delete N (default 1) characters. | |
329 @item Esc [ N @@ | |
330 Insert N (default 1) spaces. | |
331 @end table | |
332 | |
333 @node Scrolling | |
334 @subsection Escape sequences to scroll part of the visible window | |
335 | |
336 @table @kbd | |
337 @item Esc D | |
338 Scroll forward one screen line. | |
339 | |
340 @item Esc M | |
341 Scroll backwards one screen line. | |
342 | |
343 @item Esc [ T ; B r | |
344 Set the scrolling region to be from lines T down to line B inclusive, | |
345 where line 1 is the topmost line. | |
346 @end table | |
347 | |
348 @node Command hook | |
349 @subsection Command hook | |
350 | |
351 If @kbd{C-z} is seen, any text up to a following @key{LF} is scanned. | |
352 The text in between (not counting the initial C-z or the final LF) | |
353 is passed to the function that is the value of @code{term-command-hook}. | |
354 | |
355 The default value of the @code{term-command-hook} variable | |
356 is the function @code{term-command-hook}, which handles the following: | |
357 | |
358 @table @kbd | |
359 @item C-z C-z FILENAME:LINENUMBER:IGNORED LF | |
360 Set term-pending-frame to @code{(cons "FILENAME" LINENUMBER)}. | |
361 When the buffer is displayed in the current window, show | |
362 the FILENAME in the other window, and show an arrow at LINENUMBER. | |
363 Gdb emits these strings when invoked with the flag --fullname. | |
364 This is used by gdb mode; you can also invoke gdb with this flag | |
365 from shell mode. | |
366 | |
367 @item C-z / DIRNAME LF | |
368 Set the directory of the term buffer to DIRNAME | |
369 | |
370 @item C-z ! LEXPR LF | |
371 Read and evaluate LEXPR as a Lisp expression. | |
372 The result is ignored. | |
373 @end table | |
374 | |
375 @node Miscellaneous escapes | |
376 @subsection Miscellaneous escapes | |
377 | |
378 @table @kbd | |
379 @item C-g (Bell) | |
380 Calls @code{(beep t)}. | |
381 | |
382 @item Esc 7 | |
383 Save cursor. | |
384 | |
385 @item Esc 8 | |
386 Restore cursor. | |
387 | |
388 @item Esc [ 47 h | |
389 Switch to the alternate sub-buffer, | |
390 @item Esc [ 47 l | |
391 Switch back to the regular sub-buffer, | |
392 @end table | |
393 | |
394 @bye |