Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save aktau/fc58329af22468d6b9b49dd71fbda78f to your computer and use it in GitHub Desktop.
Save aktau/fc58329af22468d6b9b49dd71fbda78f to your computer and use it in GitHub Desktop.
From b285ac6b4d1374917d3f26879b2ed1a29f23eea3 Mon Sep 17 00:00:00 2001
From: Nicolas Hillegeer <[email protected]>
Date: Fri, 24 Jun 2022 01:20:47 -0700
Subject: [PATCH] tui: debugging help for terminal state (DO NOT MERGE)
---
src/nvim/tui/tui.c | 518 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 518 insertions(+)
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 6c1c1ade0..0b3ddb997 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -221,6 +221,519 @@ static void termname_set_event(void **argv)
// Do not free termname, it is freed by set_tty_option.
}
+static void un_dump_human(unibi_term *u) {
+ ELOG("name = %s", unibi_get_name(u));
+
+#define print_bool(en) \
+ ELOG(#en ": %d", unibi_get_bool(u, en));
+ print_bool(unibi_auto_left_margin);
+ print_bool(unibi_auto_right_margin);
+ print_bool(unibi_no_esc_ctlc);
+ print_bool(unibi_ceol_standout_glitch);
+ print_bool(unibi_eat_newline_glitch);
+ print_bool(unibi_erase_overstrike);
+ print_bool(unibi_generic_type);
+ print_bool(unibi_hard_copy);
+ print_bool(unibi_has_meta_key);
+ print_bool(unibi_has_status_line);
+ print_bool(unibi_insert_null_glitch);
+ print_bool(unibi_memory_above);
+ print_bool(unibi_memory_below);
+ print_bool(unibi_move_insert_mode);
+ print_bool(unibi_move_standout_mode);
+ print_bool(unibi_over_strike);
+ print_bool(unibi_status_line_esc_ok);
+ print_bool(unibi_dest_tabs_magic_smso);
+ print_bool(unibi_tilde_glitch);
+ print_bool(unibi_transparent_underline);
+ print_bool(unibi_xon_xoff);
+ print_bool(unibi_needs_xon_xoff);
+ print_bool(unibi_prtr_silent);
+ print_bool(unibi_hard_cursor);
+ print_bool(unibi_non_rev_rmcup);
+ print_bool(unibi_no_pad_char);
+ print_bool(unibi_non_dest_scroll_region);
+ print_bool(unibi_can_change);
+ print_bool(unibi_back_color_erase);
+ print_bool(unibi_hue_lightness_saturation);
+ print_bool(unibi_col_addr_glitch);
+ print_bool(unibi_cr_cancels_micro_mode);
+ print_bool(unibi_has_print_wheel);
+ print_bool(unibi_row_addr_glitch);
+ print_bool(unibi_semi_auto_right_margin);
+ print_bool(unibi_cpi_changes_res);
+ print_bool(unibi_lpi_changes_res);
+ print_bool(unibi_backspaces_with_bs);
+ print_bool(unibi_crt_no_scrolling);
+ print_bool(unibi_no_correctly_working_cr);
+ print_bool(unibi_gnu_has_meta_key);
+ print_bool(unibi_linefeed_is_newline);
+ print_bool(unibi_has_hardware_tabs);
+ print_bool(unibi_return_does_clr_eol);
+#undef print_bool
+
+#define print_numeric(en) \
+ ELOG(#en ": %d", unibi_get_num(u, en));
+ print_numeric(unibi_columns);
+ print_numeric(unibi_init_tabs);
+ print_numeric(unibi_lines);
+ print_numeric(unibi_lines_of_memory);
+ print_numeric(unibi_magic_cookie_glitch);
+ print_numeric(unibi_padding_baud_rate);
+ print_numeric(unibi_virtual_terminal);
+ print_numeric(unibi_width_status_line);
+ print_numeric(unibi_num_labels);
+ print_numeric(unibi_label_height);
+ print_numeric(unibi_label_width);
+ print_numeric(unibi_max_attributes);
+ print_numeric(unibi_maximum_windows);
+ print_numeric(unibi_max_colors);
+ print_numeric(unibi_max_pairs);
+ print_numeric(unibi_no_color_video);
+ print_numeric(unibi_buffer_capacity);
+ print_numeric(unibi_dot_vert_spacing);
+ print_numeric(unibi_dot_horz_spacing);
+ print_numeric(unibi_max_micro_address);
+ print_numeric(unibi_max_micro_jump);
+ print_numeric(unibi_micro_col_size);
+ print_numeric(unibi_micro_line_size);
+ print_numeric(unibi_number_of_pins);
+ print_numeric(unibi_output_res_char);
+ print_numeric(unibi_output_res_line);
+ print_numeric(unibi_output_res_horz_inch);
+ print_numeric(unibi_output_res_vert_inch);
+ print_numeric(unibi_print_rate);
+ print_numeric(unibi_wide_char_size);
+ print_numeric(unibi_buttons);
+ print_numeric(unibi_bit_image_entwining);
+ print_numeric(unibi_bit_image_type);
+ print_numeric(unibi_magic_cookie_glitch_ul);
+ print_numeric(unibi_carriage_return_delay);
+ print_numeric(unibi_new_line_delay);
+ print_numeric(unibi_backspace_delay);
+ print_numeric(unibi_horizontal_tab_delay);
+ print_numeric(unibi_number_of_function_keys);
+#undef print_numeric
+
+#define print_str(en) \
+ ELOG(#en ": %s", unibi_get_str(u, en));
+ print_str(unibi_back_tab);
+ print_str(unibi_bell);
+ print_str(unibi_carriage_return);
+ print_str(unibi_change_scroll_region);
+ print_str(unibi_clear_all_tabs);
+ print_str(unibi_clear_screen);
+ print_str(unibi_clr_eol);
+ print_str(unibi_clr_eos);
+ print_str(unibi_column_address);
+ print_str(unibi_command_character);
+ print_str(unibi_cursor_address);
+ print_str(unibi_cursor_down);
+ print_str(unibi_cursor_home);
+ print_str(unibi_cursor_invisible);
+ print_str(unibi_cursor_left);
+ print_str(unibi_cursor_mem_address);
+ print_str(unibi_cursor_normal);
+ print_str(unibi_cursor_right);
+ print_str(unibi_cursor_to_ll);
+ print_str(unibi_cursor_up);
+ print_str(unibi_cursor_visible);
+ print_str(unibi_delete_character);
+ print_str(unibi_delete_line);
+ print_str(unibi_dis_status_line);
+ print_str(unibi_down_half_line);
+ print_str(unibi_enter_alt_charset_mode);
+ print_str(unibi_enter_blink_mode);
+ print_str(unibi_enter_bold_mode);
+ print_str(unibi_enter_ca_mode);
+ print_str(unibi_enter_delete_mode);
+ print_str(unibi_enter_dim_mode);
+ print_str(unibi_enter_insert_mode);
+ print_str(unibi_enter_secure_mode);
+ print_str(unibi_enter_protected_mode);
+ print_str(unibi_enter_reverse_mode);
+ print_str(unibi_enter_standout_mode);
+ print_str(unibi_enter_underline_mode);
+ print_str(unibi_erase_chars);
+ print_str(unibi_exit_alt_charset_mode);
+ print_str(unibi_exit_attribute_mode);
+ print_str(unibi_exit_ca_mode);
+ print_str(unibi_exit_delete_mode);
+ print_str(unibi_exit_insert_mode);
+ print_str(unibi_exit_standout_mode);
+ print_str(unibi_exit_underline_mode);
+ print_str(unibi_flash_screen);
+ print_str(unibi_form_feed);
+ print_str(unibi_from_status_line);
+ print_str(unibi_init_1string);
+ print_str(unibi_init_2string);
+ print_str(unibi_init_3string);
+ print_str(unibi_init_file);
+ print_str(unibi_insert_character);
+ print_str(unibi_insert_line);
+ print_str(unibi_insert_padding);
+ print_str(unibi_key_backspace);
+ print_str(unibi_key_catab);
+ print_str(unibi_key_clear);
+ print_str(unibi_key_ctab);
+ print_str(unibi_key_dc);
+ print_str(unibi_key_dl);
+ print_str(unibi_key_down);
+ print_str(unibi_key_eic);
+ print_str(unibi_key_eol);
+ print_str(unibi_key_eos);
+ print_str(unibi_key_f0);
+ print_str(unibi_key_f1);
+ print_str(unibi_key_f10);
+ print_str(unibi_key_f2);
+ print_str(unibi_key_f3);
+ print_str(unibi_key_f4);
+ print_str(unibi_key_f5);
+ print_str(unibi_key_f6);
+ print_str(unibi_key_f7);
+ print_str(unibi_key_f8);
+ print_str(unibi_key_f9);
+ print_str(unibi_key_home);
+ print_str(unibi_key_ic);
+ print_str(unibi_key_il);
+ print_str(unibi_key_left);
+ print_str(unibi_key_ll);
+ print_str(unibi_key_npage);
+ print_str(unibi_key_ppage);
+ print_str(unibi_key_right);
+ print_str(unibi_key_sf);
+ print_str(unibi_key_sr);
+ print_str(unibi_key_stab);
+ print_str(unibi_key_up);
+ print_str(unibi_keypad_local);
+ print_str(unibi_keypad_xmit);
+ print_str(unibi_lab_f0);
+ print_str(unibi_lab_f1);
+ print_str(unibi_lab_f10);
+ print_str(unibi_lab_f2);
+ print_str(unibi_lab_f3);
+ print_str(unibi_lab_f4);
+ print_str(unibi_lab_f5);
+ print_str(unibi_lab_f6);
+ print_str(unibi_lab_f7);
+ print_str(unibi_lab_f8);
+ print_str(unibi_lab_f9);
+ print_str(unibi_meta_off);
+ print_str(unibi_meta_on);
+ print_str(unibi_newline);
+ print_str(unibi_pad_char);
+ print_str(unibi_parm_dch);
+ print_str(unibi_parm_delete_line);
+ print_str(unibi_parm_down_cursor);
+ print_str(unibi_parm_ich);
+ print_str(unibi_parm_index);
+ print_str(unibi_parm_insert_line);
+ print_str(unibi_parm_left_cursor);
+ print_str(unibi_parm_right_cursor);
+ print_str(unibi_parm_rindex);
+ print_str(unibi_parm_up_cursor);
+ print_str(unibi_pkey_key);
+ print_str(unibi_pkey_local);
+ print_str(unibi_pkey_xmit);
+ print_str(unibi_print_screen);
+ print_str(unibi_prtr_off);
+ print_str(unibi_prtr_on);
+ print_str(unibi_repeat_char);
+ print_str(unibi_reset_1string);
+ print_str(unibi_reset_2string);
+ print_str(unibi_reset_3string);
+ print_str(unibi_reset_file);
+ print_str(unibi_restore_cursor);
+ print_str(unibi_row_address);
+ print_str(unibi_save_cursor);
+ print_str(unibi_scroll_forward);
+ print_str(unibi_scroll_reverse);
+ print_str(unibi_set_attributes);
+ print_str(unibi_set_tab);
+ print_str(unibi_set_window);
+ print_str(unibi_tab);
+ print_str(unibi_to_status_line);
+ print_str(unibi_underline_char);
+ print_str(unibi_up_half_line);
+ print_str(unibi_init_prog);
+ print_str(unibi_key_a1);
+ print_str(unibi_key_a3);
+ print_str(unibi_key_b2);
+ print_str(unibi_key_c1);
+ print_str(unibi_key_c3);
+ print_str(unibi_prtr_non);
+ print_str(unibi_char_padding);
+ print_str(unibi_acs_chars);
+ print_str(unibi_plab_norm);
+ print_str(unibi_key_btab);
+ print_str(unibi_enter_xon_mode);
+ print_str(unibi_exit_xon_mode);
+ print_str(unibi_enter_am_mode);
+ print_str(unibi_exit_am_mode);
+ print_str(unibi_xon_character);
+ print_str(unibi_xoff_character);
+ print_str(unibi_ena_acs);
+ print_str(unibi_label_on);
+ print_str(unibi_label_off);
+ print_str(unibi_key_beg);
+ print_str(unibi_key_cancel);
+ print_str(unibi_key_close);
+ print_str(unibi_key_command);
+ print_str(unibi_key_copy);
+ print_str(unibi_key_create);
+ print_str(unibi_key_end);
+ print_str(unibi_key_enter);
+ print_str(unibi_key_exit);
+ print_str(unibi_key_find);
+ print_str(unibi_key_help);
+ print_str(unibi_key_mark);
+ print_str(unibi_key_message);
+ print_str(unibi_key_move);
+ print_str(unibi_key_next);
+ print_str(unibi_key_open);
+ print_str(unibi_key_options);
+ print_str(unibi_key_previous);
+ print_str(unibi_key_print);
+ print_str(unibi_key_redo);
+ print_str(unibi_key_reference);
+ print_str(unibi_key_refresh);
+ print_str(unibi_key_replace);
+ print_str(unibi_key_restart);
+ print_str(unibi_key_resume);
+ print_str(unibi_key_save);
+ print_str(unibi_key_suspend);
+ print_str(unibi_key_undo);
+ print_str(unibi_key_sbeg);
+ print_str(unibi_key_scancel);
+ print_str(unibi_key_scommand);
+ print_str(unibi_key_scopy);
+ print_str(unibi_key_screate);
+ print_str(unibi_key_sdc);
+ print_str(unibi_key_sdl);
+ print_str(unibi_key_select);
+ print_str(unibi_key_send);
+ print_str(unibi_key_seol);
+ print_str(unibi_key_sexit);
+ print_str(unibi_key_sfind);
+ print_str(unibi_key_shelp);
+ print_str(unibi_key_shome);
+ print_str(unibi_key_sic);
+ print_str(unibi_key_sleft);
+ print_str(unibi_key_smessage);
+ print_str(unibi_key_smove);
+ print_str(unibi_key_snext);
+ print_str(unibi_key_soptions);
+ print_str(unibi_key_sprevious);
+ print_str(unibi_key_sprint);
+ print_str(unibi_key_sredo);
+ print_str(unibi_key_sreplace);
+ print_str(unibi_key_sright);
+ print_str(unibi_key_srsume);
+ print_str(unibi_key_ssave);
+ print_str(unibi_key_ssuspend);
+ print_str(unibi_key_sundo);
+ print_str(unibi_req_for_input);
+ print_str(unibi_key_f11);
+ print_str(unibi_key_f12);
+ print_str(unibi_key_f13);
+ print_str(unibi_key_f14);
+ print_str(unibi_key_f15);
+ print_str(unibi_key_f16);
+ print_str(unibi_key_f17);
+ print_str(unibi_key_f18);
+ print_str(unibi_key_f19);
+ print_str(unibi_key_f20);
+ print_str(unibi_key_f21);
+ print_str(unibi_key_f22);
+ print_str(unibi_key_f23);
+ print_str(unibi_key_f24);
+ print_str(unibi_key_f25);
+ print_str(unibi_key_f26);
+ print_str(unibi_key_f27);
+ print_str(unibi_key_f28);
+ print_str(unibi_key_f29);
+ print_str(unibi_key_f30);
+ print_str(unibi_key_f31);
+ print_str(unibi_key_f32);
+ print_str(unibi_key_f33);
+ print_str(unibi_key_f34);
+ print_str(unibi_key_f35);
+ print_str(unibi_key_f36);
+ print_str(unibi_key_f37);
+ print_str(unibi_key_f38);
+ print_str(unibi_key_f39);
+ print_str(unibi_key_f40);
+ print_str(unibi_key_f41);
+ print_str(unibi_key_f42);
+ print_str(unibi_key_f43);
+ print_str(unibi_key_f44);
+ print_str(unibi_key_f45);
+ print_str(unibi_key_f46);
+ print_str(unibi_key_f47);
+ print_str(unibi_key_f48);
+ print_str(unibi_key_f49);
+ print_str(unibi_key_f50);
+ print_str(unibi_key_f51);
+ print_str(unibi_key_f52);
+ print_str(unibi_key_f53);
+ print_str(unibi_key_f54);
+ print_str(unibi_key_f55);
+ print_str(unibi_key_f56);
+ print_str(unibi_key_f57);
+ print_str(unibi_key_f58);
+ print_str(unibi_key_f59);
+ print_str(unibi_key_f60);
+ print_str(unibi_key_f61);
+ print_str(unibi_key_f62);
+ print_str(unibi_key_f63);
+ print_str(unibi_clr_bol);
+ print_str(unibi_clear_margins);
+ print_str(unibi_set_left_margin);
+ print_str(unibi_set_right_margin);
+ print_str(unibi_label_format);
+ print_str(unibi_set_clock);
+ print_str(unibi_display_clock);
+ print_str(unibi_remove_clock);
+ print_str(unibi_create_window);
+ print_str(unibi_goto_window);
+ print_str(unibi_hangup);
+ print_str(unibi_dial_phone);
+ print_str(unibi_quick_dial);
+ print_str(unibi_tone);
+ print_str(unibi_pulse);
+ print_str(unibi_flash_hook);
+ print_str(unibi_fixed_pause);
+ print_str(unibi_wait_tone);
+ print_str(unibi_user0);
+ print_str(unibi_user1);
+ print_str(unibi_user2);
+ print_str(unibi_user3);
+ print_str(unibi_user4);
+ print_str(unibi_user5);
+ print_str(unibi_user6);
+ print_str(unibi_user7);
+ print_str(unibi_user8);
+ print_str(unibi_user9);
+ print_str(unibi_orig_pair);
+ print_str(unibi_orig_colors);
+ print_str(unibi_initialize_color);
+ print_str(unibi_initialize_pair);
+ print_str(unibi_set_color_pair);
+ print_str(unibi_set_foreground);
+ print_str(unibi_set_background);
+ print_str(unibi_change_char_pitch);
+ print_str(unibi_change_line_pitch);
+ print_str(unibi_change_res_horz);
+ print_str(unibi_change_res_vert);
+ print_str(unibi_define_char);
+ print_str(unibi_enter_doublewide_mode);
+ print_str(unibi_enter_draft_quality);
+ print_str(unibi_enter_italics_mode);
+ print_str(unibi_enter_leftward_mode);
+ print_str(unibi_enter_micro_mode);
+ print_str(unibi_enter_near_letter_quality);
+ print_str(unibi_enter_normal_quality);
+ print_str(unibi_enter_shadow_mode);
+ print_str(unibi_enter_subscript_mode);
+ print_str(unibi_enter_superscript_mode);
+ print_str(unibi_enter_upward_mode);
+ print_str(unibi_exit_doublewide_mode);
+ print_str(unibi_exit_italics_mode);
+ print_str(unibi_exit_leftward_mode);
+ print_str(unibi_exit_micro_mode);
+ print_str(unibi_exit_shadow_mode);
+ print_str(unibi_exit_subscript_mode);
+ print_str(unibi_exit_superscript_mode);
+ print_str(unibi_exit_upward_mode);
+ print_str(unibi_micro_column_address);
+ print_str(unibi_micro_down);
+ print_str(unibi_micro_left);
+ print_str(unibi_micro_right);
+ print_str(unibi_micro_row_address);
+ print_str(unibi_micro_up);
+ print_str(unibi_order_of_pins);
+ print_str(unibi_parm_down_micro);
+ print_str(unibi_parm_left_micro);
+ print_str(unibi_parm_right_micro);
+ print_str(unibi_parm_up_micro);
+ print_str(unibi_select_char_set);
+ print_str(unibi_set_bottom_margin);
+ print_str(unibi_set_bottom_margin_parm);
+ print_str(unibi_set_left_margin_parm);
+ print_str(unibi_set_right_margin_parm);
+ print_str(unibi_set_top_margin);
+ print_str(unibi_set_top_margin_parm);
+ print_str(unibi_start_bit_image);
+ print_str(unibi_start_char_set_def);
+ print_str(unibi_stop_bit_image);
+ print_str(unibi_stop_char_set_def);
+ print_str(unibi_subscript_characters);
+ print_str(unibi_superscript_characters);
+ print_str(unibi_these_cause_cr);
+ print_str(unibi_zero_motion);
+ print_str(unibi_char_set_names);
+ print_str(unibi_key_mouse);
+ print_str(unibi_mouse_info);
+ print_str(unibi_req_mouse_pos);
+ print_str(unibi_get_mouse);
+ print_str(unibi_set_a_foreground);
+ print_str(unibi_set_a_background);
+ print_str(unibi_pkey_plab);
+ print_str(unibi_device_type);
+ print_str(unibi_code_set_init);
+ print_str(unibi_set0_des_seq);
+ print_str(unibi_set1_des_seq);
+ print_str(unibi_set2_des_seq);
+ print_str(unibi_set3_des_seq);
+ print_str(unibi_set_lr_margin);
+ print_str(unibi_set_tb_margin);
+ print_str(unibi_bit_image_repeat);
+ print_str(unibi_bit_image_newline);
+ print_str(unibi_bit_image_carriage_return);
+ print_str(unibi_color_names);
+ print_str(unibi_define_bit_image_region);
+ print_str(unibi_end_bit_image_region);
+ print_str(unibi_set_color_band);
+ print_str(unibi_set_page_length);
+ print_str(unibi_display_pc_char);
+ print_str(unibi_enter_pc_charset_mode);
+ print_str(unibi_exit_pc_charset_mode);
+ print_str(unibi_enter_scancode_mode);
+ print_str(unibi_exit_scancode_mode);
+ print_str(unibi_pc_term_options);
+ print_str(unibi_scancode_escape);
+ print_str(unibi_alt_scancode_esc);
+ print_str(unibi_enter_horizontal_hl_mode);
+ print_str(unibi_enter_left_hl_mode);
+ print_str(unibi_enter_low_hl_mode);
+ print_str(unibi_enter_right_hl_mode);
+ print_str(unibi_enter_top_hl_mode);
+ print_str(unibi_enter_vertical_hl_mode);
+ print_str(unibi_set_a_attributes);
+ print_str(unibi_set_pglen_inch);
+ print_str(unibi_termcap_init2);
+ print_str(unibi_termcap_reset);
+ print_str(unibi_linefeed_if_not_lf);
+ print_str(unibi_backspace_if_not_bs);
+ print_str(unibi_other_non_function_keys);
+ print_str(unibi_arrow_key_map);
+ print_str(unibi_acs_ulcorner);
+ print_str(unibi_acs_llcorner);
+ print_str(unibi_acs_urcorner);
+ print_str(unibi_acs_lrcorner);
+ print_str(unibi_acs_ltee);
+ print_str(unibi_acs_rtee);
+ print_str(unibi_acs_btee);
+ print_str(unibi_acs_ttee);
+ print_str(unibi_acs_hline);
+ print_str(unibi_acs_vline);
+ print_str(unibi_acs_plus);
+ print_str(unibi_memory_lock);
+ print_str(unibi_memory_unlock);
+ print_str(unibi_box_chars_1);
+#undef print_str
+}
+
static void terminfo_start(UI *ui)
{
TUIData *data = ui->data;
@@ -299,8 +812,13 @@ static void terminfo_start(UI *ui)
long konsolev = konsolev_env ? strtol(konsolev_env, NULL, 10)
: (konsole ? 1 : 0);
+ ELOG("unibilium terminal state BEFORE patching/augmenting:");
+ un_dump_human(data->ut);
patch_terminfo_bugs(data, term, colorterm, vtev, konsolev, iterm_env, nsterm);
augment_terminfo(data, term, vtev, konsolev, iterm_env, nsterm);
+ ELOG("unibilium terminal state AFTER patching/augmenting:");
+ un_dump_human(data->ut);
+
data->can_change_scroll_region =
!!unibi_get_str(data->ut, unibi_change_scroll_region);
data->can_set_lr_margin =
--
2.37.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment