56 #include "readline/readline.h"
80 {
'v',
"info locals" },
101 rl_prep_terminal (0);
106 rl_deprep_terminal ();
115 rl_prep_terminal (0);
122 rl_kill_text (0, rl_end);
131 rl_newline (1,
'\n');
252 for (i = 0; tui_commands[i].
cmd; i++)
254 if (tui_commands[i].key == key)
261 rl_insert_text (tui_commands[i].cmd);
262 rl_newline (1,
'\n');
281 return rl_insert (count, key);
304 rl_already_prompted = 1;
316 tui_current_key_mode = mode;
318 ? tui_keymap : tui_readline_standard_keymap);
328 Keymap tui_ctlx_keymap;
336 tui_keymap = rl_make_bare_keymap ();
337 tui_ctlx_keymap = rl_make_bare_keymap ();
338 tui_readline_standard_keymap = rl_get_keymap ();
340 for (i = 0; tui_commands[i].
cmd; i++)
343 rl_generic_bind (ISKMAP,
"\\C-x", (
char*) tui_ctlx_keymap, tui_keymap);
347 for (i =
' '; i < 0x7f; i++)
351 for (j = 0; tui_commands[j].
cmd; j++)
352 if (tui_commands[j].key == i)
355 if (tui_commands[j].cmd)
386 term = getenv (
"TERM");
418 error (
_(
"Cannot enable the TUI when the interpreter is '%s'"), interp);
423 error (
_(
"Cannot enable the TUI when output is not a terminal"));
425 s = newterm (NULL, stdout, stdin);
430 s = newterm (
"unknown", stdout, stdin);
434 error (
_(
"Cannot enable the TUI: error opening terminal [TERM=%s]"),
442 cap = tigetstr (
"cup");
443 if (cap == NULL || cap == (
char *) -1 || *cap ==
'\0')
447 error (
_(
"Cannot enable the TUI: "
448 "terminal doesn't support cursor addressing [TERM=%s]"),
476 clearok (stdscr, TRUE);
522 rl_set_keymap (tui_readline_standard_keymap);
527 rl_already_prompted = 0;
561 const char *item_to_add)
563 if (item_to_add != (
char *) NULL && buf != (
char *) NULL)
565 if ((strlen (buf) + strlen (item_to_add)) <= buflen)
566 strcat (buf, item_to_add);
568 strncat (buf, item_to_add, (buflen - strlen (buf)));
575 #define CTRL(x) (x & ~0140)
579 #define CHK(val, dft) (val<=0 ? dft : val)
588 #if defined (TIOCGETC)
594 if (ldisc == NTTYDISC)
596 ioctl (FILEDES, TIOCGLTC, <c);
597 ltc.t_suspc = CHK (ltc.t_suspc, CTRL (
'Z'));
598 ltc.t_dsuspc = CHK (ltc.t_dsuspc, CTRL (
'Y'));
599 ltc.t_rprntc = CHK (ltc.t_rprntc, CTRL (
'R'));
600 ltc.t_flushc = CHK (ltc.t_flushc, CTRL (
'O'));
601 ltc.t_werasc = CHK (ltc.t_werasc, CTRL (
'W'));
602 ltc.t_lnextc = CHK (ltc.t_lnextc, CTRL (
'V'));
603 ioctl (FILEDES, TIOCSLTC, <c);
607 ioctl (FILEDES, TIOCGETC, &tbuf);
608 tbuf.t_intrc = CHK (tbuf.t_intrc, CTRL (
'?'));
609 tbuf.t_quitc = CHK (tbuf.t_quitc, CTRL (
'\\'));
610 tbuf.t_startc = CHK (tbuf.t_startc, CTRL (
'Q'));
611 tbuf.t_stopc = CHK (tbuf.t_stopc, CTRL (
'S'));
612 tbuf.t_eofc = CHK (tbuf.t_eofc, CTRL (
'D'));
614 ioctl (FILEDES, TIOCSETC, &tbuf);
616 mode.sg_flags &= ~(RAW
620 | VTDELAY | ALLDELAY);
621 mode.sg_flags |= XTABS |
ECHO | CRMOD | ANYP;
660 unsigned int *height)
683 _(
"Enable TUI display mode."),
686 _(
"Disable TUI display mode."),
static void tui_enable_command(char *args, int from_tty)
static Keymap tui_readline_standard_keymap
void tui_update_gdb_sizes(void)
void tui_set_term_height_to(int h)
int tui_get_command_dimension(unsigned int *width, unsigned int *height)
struct tui_win_info * tui_win_list[MAX_MAJOR_WINDOWS]
static const char * gdb_getenv_term(void)
void tui_refresh_data_win(void)
static int tui_rl_command_key(int count, int key)
int ui_file_isatty(struct ui_file *file)
struct symtab_and_line get_current_source_symtab_and_line(void)
struct ui_file * gdb_stdout
static int tui_rl_other_window(int count, int key)
static int tui_rl_startup_hook(void)
void tui_set_win_focus_to(struct tui_win_info *win_info)
void tui_redisplay_readline(void)
static int tui_rl_delete_other_windows(int notused1, int notused2)
void tui_update_locator_fullname(const char *fullname)
struct tui_win_info * tui_next_win(struct tui_win_info *cur_win)
void tui_refresh_all_win(void)
enum tui_status tui_set_layout(enum tui_layout_type layout_type)
void tui_set_term_width_to(int w)
void tui_install_hooks(void)
static int tui_rl_next_keymap(int notused1, int notused2)
void tui_set_key_mode(enum tui_key_mode mode)
#define CATCH(EXCEPTION, MASK)
struct tui_gen_win_info generic
void gdb_save_tty_state(void)
void initialize_file_ftype(void)
void tui_show_source(const char *fullname, int line)
void strcat_to_buf(char *buf, int buflen, const char *item_to_add)
void exception_print(struct ui_file *file, struct gdb_exception e)
struct tui_win_info * tui_win_with_focus(void)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, cmd_cfunc_ftype *fun, const char *doc, struct cmd_list_element **list)
void tui_initialize_readline(void)
struct frame_info * deprecated_safe_get_selected_frame(void)
void reinitialize_more_filter(void)
void tui_setup_io(int mode)
static int tui_rl_switch_mode(int notused1, int notused2)
void tui_add_win_to_layout(enum tui_win_type type)
void tui_set_win_resized_to(int resized)
struct cmd_list_element ** tui_get_cmd_list(void)
static void tui_disable_command(char *args, int from_tty)
const char * interp_name(struct interp *interp)
void tui_show_locator_content(void)
void tui_update_source_windows_with_line(struct symtab *s, int line)
int tui_update_variables(void)
int tui_is_window_visible(enum tui_win_type type)
void tui_update_source_windows_with_addr(struct gdbarch *gdbarch, CORE_ADDR addr)
void tui_resize_all(void)
struct ui_file * gdb_stderr
static int tui_rl_command_mode(int count, int key)
initialize_file_ftype _initialize_tui
void tui_show_assembly(struct gdbarch *gdbarch, CORE_ADDR addr)
int tui_show_frame_info(struct frame_info *fi)
struct interp * top_level_interpreter(void)
static int tui_rl_change_windows(int notused1, int notused2)
int tui_win_resized(void)
enum tui_key_mode tui_current_key_mode
void error(const char *fmt,...)
static int tui_finish_init
void tui_remove_hooks(void)
enum tui_layout_type tui_current_layout(void)