test TERM variable for backspace key code detection (^H or DEL)
ansi, cygwin, vt -> ^H linux, xterm, ... -> DEL (unchanged) changed set-backspace-is-control-h to toggle-control-h. changed CMD() command definition macro to CMD_() with arg definition string at the end for improved readability. removed obsolete CMDi and CMDss command definition macros. dired.c hex.c image.c latex-mode.c qe.c qe.h qeconfig.h shell.c tty.c
This commit is contained in:
parent
662cbad090
commit
be58a93b28
9 changed files with 101 additions and 54 deletions
2
dired.c
2
dired.c
|
|
@ -542,7 +542,7 @@ static CmdDef dired_commands[] = {
|
|||
CMD1( KEY_CTRL('g'), KEY_NONE, "dired-abort", do_delete_window, 0)
|
||||
CMD0( ' ', KEY_CTRL('t'), "dired-toggle_selection", list_toggle_selection)
|
||||
/* BS should go back to previous item and unmark it */
|
||||
CMD ( 's', KEY_NONE, "dired-sort\0s{Sort order: }", dired_sort)
|
||||
CMD_( 's', KEY_NONE, "dired-sort", dired_sort, "s{Sort order: }")
|
||||
/* s -> should also change switches */
|
||||
CMD1( 'd', KEY_NONE, "dired-delete", dired_mark, 'D')
|
||||
CMD1( 'c', KEY_NONE, "dired-copy", dired_mark, 'C')
|
||||
|
|
|
|||
4
hex.c
4
hex.c
|
|
@ -123,8 +123,8 @@ void do_toggle_hex(EditState *s)
|
|||
static CmdDef hex_commands[] = {
|
||||
CMD1( KEY_NONE, KEY_NONE, "decrease-width", do_incr_width, -1)
|
||||
CMD1( KEY_NONE, KEY_NONE, "increase-width", do_incr_width, 1)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-width\0i{Width: }", do_set_width)
|
||||
CMD( KEY_NONE, KEY_NONE, "goto-byte\0i{Goto byte: }", do_goto_byte)
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-width", do_set_width, "i{Width: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "goto-byte", do_goto_byte, "i{Goto byte: }")
|
||||
CMD0( KEY_NONE, KEY_NONE, "toggle-hex", do_toggle_hex)
|
||||
CMD_DEF_END,
|
||||
};
|
||||
|
|
|
|||
11
image.c
11
image.c
|
|
@ -800,16 +800,19 @@ static void pixel_format_completion(StringArray *cs, const char *str)
|
|||
/* specific image commands */
|
||||
static CmdDef image_commands[] = {
|
||||
CMD0( 't', KEY_NONE, "image-rotate", image_rotate)
|
||||
CMD( 'c', KEY_NONE, "image-convert\0s{New pixel format: }[pixel_format]|pixel_format|", image_convert)
|
||||
CMD( 'b', KEY_NONE, "image-set-background-color\0s{Background color (use 'transparent' for tiling): }",
|
||||
image_set_background_color)
|
||||
CMD_( 'c', KEY_NONE, "image-convert", image_convert,
|
||||
"s{New pixel format: }[pixel_format]|pixel_format|")
|
||||
CMD_( 'b', KEY_NONE, "image-set-background-color",
|
||||
image_set_background_color,
|
||||
"s{Background color (use 'transparent' for tiling): }")
|
||||
#if 0
|
||||
CMD0( 'n', KEY_NONE, "image-normal-size", image_normal_size)
|
||||
CMD1( '>', KEY_NONE, "image-double-size", image_mult_size, 100)
|
||||
CMD1( '<', KEY_NONE, "image-halve-size", image_mult_size, -50)
|
||||
CMD1( '.', KEY_NONE, "image-larger-10", image_mult_size, 10)
|
||||
CMD1( ',', KEY_NONE, "image-smaller-10", image_mult_size, -10)
|
||||
CMD( 'S', KEY_NONE, "image-set-display-size\0i{Displayed width: }i{Displayed height: }", image_set_size)
|
||||
CMD_( 'S', KEY_NONE, "image-set-display-size", image_set_size,
|
||||
"i{Displayed width: }i{Displayed height: }")
|
||||
#endif
|
||||
CMD_DEF_END,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -327,7 +327,8 @@ static void do_latex(EditState *e, const char *cmd)
|
|||
static CmdDef latex_commands[] = {
|
||||
CMD0('\"', KEY_NONE, "tex-insert-quote", do_tex_insert_quote)
|
||||
/* this should actually be KEY_CTRLC(KEY_CTRL('c')), ie C-c C-c */
|
||||
CMD (KEY_CTRL('c'), KEY_NONE, "TeX-command-master\0s{Command: (default LaTeX) }[latex]|latex|", do_latex)
|
||||
CMD_(KEY_CTRL('c'), KEY_NONE, "TeX-command-master", do_latex,
|
||||
"s{Command: (default LaTeX) }[latex]|latex|")
|
||||
CMD_DEF_END,
|
||||
};
|
||||
|
||||
|
|
|
|||
7
qe.c
7
qe.c
|
|
@ -197,11 +197,16 @@ static void qe_register_binding2(int key,
|
|||
|
||||
static int backspace_is_control_h;
|
||||
|
||||
void do_set_backspace_is_control_h(EditState *s, int set)
|
||||
void do_toggle_control_h(EditState *s, int set)
|
||||
{
|
||||
KeyDef *p;
|
||||
int i;
|
||||
|
||||
if (set)
|
||||
set = (set > 0);
|
||||
else
|
||||
set = !backspace_is_control_h;
|
||||
|
||||
if (backspace_is_control_h == set)
|
||||
return;
|
||||
|
||||
|
|
|
|||
6
qe.h
6
qe.h
|
|
@ -887,14 +887,12 @@ typedef struct CmdDef {
|
|||
} CmdDef;
|
||||
|
||||
/* new command macros */
|
||||
#define CMD(key, key_alt, name, func) { key, key_alt, name, { (void *)func } },
|
||||
#define CMDV(key, key_alt, name, func, val) { key, key_alt, name, { (void *)func }, val },
|
||||
#define CMD_(key, key_alt, name, func, args) { key, key_alt, name "\0" args, { (void *)func } },
|
||||
#define CMDV(key, key_alt, name, func, val, args) { key, key_alt, name "\0" args, { (void *)func }, (void *)val },
|
||||
|
||||
/* old macros for compatibility */
|
||||
#define CMD0(key, key_alt, name, func) { key, key_alt, name "\0", { (void *)func } },
|
||||
#define CMD1(key, key_alt, name, func, val) { key, key_alt, name "\0v", { (void *)func }, (void*)(val) },
|
||||
#define CMDi(key, key_alt, name, func) { key, key_alt, name "\0i", { (void *)func } },
|
||||
#define CMDss(key, key_alt, name, func) { key, key_alt, name "\0ss", { (void *)func } },
|
||||
#define CMD_DEF_END { 0, 0, NULL, }
|
||||
|
||||
void qe_register_mode(ModeDef *m);
|
||||
|
|
|
|||
103
qeconfig.h
103
qeconfig.h
|
|
@ -28,8 +28,11 @@ CmdDef basic_commands[] = {
|
|||
CMD1( KEY_META('w'), KEY_NONE, "copy-region", do_kill_region, 0 )
|
||||
CMD0( KEY_META('<'), KEY_CTRL_HOME, "beginning-of-buffer", do_bof )
|
||||
CMD0( KEY_META('>'), KEY_CTRL_END, "end-of-buffer", do_eof )
|
||||
CMD( KEY_META('x'), KEY_NONE, "execute-extended-command\0s{Command: }[command]|command|i", do_execute_command )
|
||||
CMD0( KEY_CTRL('u'), KEY_NONE, "universal-argument", do_universal_argument )
|
||||
CMD_( KEY_META('x'), KEY_NONE, "execute-extended-command",
|
||||
do_execute_command,
|
||||
"s{Command: }[command]|command|i" )
|
||||
CMD0( KEY_CTRL('u'), KEY_NONE, "universal-argument",
|
||||
do_universal_argument )
|
||||
CMD0( KEY_CTRL('y'), KEY_NONE, "yank", do_yank)
|
||||
CMD0( KEY_META('y'), KEY_NONE, "yank-pop", do_yank_pop)
|
||||
CMD0( KEY_CTRL('i'), KEY_NONE, "tabulate", do_tab)
|
||||
|
|
@ -37,32 +40,35 @@ CmdDef basic_commands[] = {
|
|||
CMD1( KEY_CTRLX(KEY_CTRL('s')), KEY_NONE, "save-buffer", do_save, 0 )
|
||||
CMD1( KEY_CTRLX(KEY_CTRL('w')), KEY_NONE, "write-file", do_save, 1 )
|
||||
CMD0( KEY_CTRLX(KEY_CTRL('c')), KEY_NONE, "suspend-emacs", do_quit )
|
||||
CMD( KEY_CTRLX(KEY_CTRL('f')), KEY_NONE, "find-file\0s{Find file: }[file]|file|", do_load)
|
||||
CMD( KEY_CTRLX(KEY_CTRL('v')), KEY_NONE, "find-alternate-file\0s{Find alternate file: }[file]|file|",
|
||||
do_find_alternate_file)
|
||||
CMD( KEY_CTRLX('b'), KEY_NONE,
|
||||
"switch-to-buffer\0s{Switch to buffer: }[buffer]|buffer|", do_switch_to_buffer)
|
||||
CMD( KEY_CTRLX('k'), KEY_NONE,
|
||||
"kill-buffer\0s{Kill buffer: }[buffer]|buffer|", do_kill_buffer)
|
||||
CMD( KEY_CTRLX('i'), KEY_NONE, "insert-file\0s{Insert file: }[file]|file|",
|
||||
do_insert_file)
|
||||
CMD_( KEY_CTRLX(KEY_CTRL('f')), KEY_NONE, "find-file", do_load,
|
||||
"s{Find file: }[file]|file|")
|
||||
CMD_( KEY_CTRLX(KEY_CTRL('v')), KEY_NONE, "find-alternate-file",
|
||||
do_find_alternate_file,
|
||||
"s{Find alternate file: }[file]|file|")
|
||||
CMD_( KEY_CTRLX('b'), KEY_NONE, "switch-to-buffer", do_switch_to_buffer,
|
||||
"s{Switch to buffer: }[buffer]|buffer|")
|
||||
CMD_( KEY_CTRLX('k'), KEY_NONE, "kill-buffer", do_kill_buffer,
|
||||
"s{Kill buffer: }[buffer]|buffer|")
|
||||
CMD_( KEY_CTRLX('i'), KEY_NONE, "insert-file", do_insert_file,
|
||||
"s{Insert file: }[file]|file|")
|
||||
CMD0( KEY_CTRL('g'), KEY_NONE, "abort", do_break)
|
||||
CMD0( KEY_NONE, KEY_NONE, "doctor", do_doctor)
|
||||
CMD1( KEY_CTRL('s'), KEY_NONE, "isearch-forward", do_isearch, 1 )
|
||||
CMD1( KEY_CTRL('r'), KEY_NONE, "isearch-backward", do_isearch, -1 )
|
||||
CMD( KEY_META('%'), KEY_NONE, "query-replace\0s{Query replace: }|search|s{With: }|replace|", do_query_replace )
|
||||
CMD_( KEY_META('%'), KEY_NONE, "query-replace", do_query_replace,
|
||||
"s{Query replace: }|search|s{With: }|replace|")
|
||||
CMD0( KEY_CTRLX('u'), KEY_CTRL('_'), "undo", do_undo)
|
||||
CMD0( KEY_RET, KEY_NONE, "newline", do_return)
|
||||
CMD0( KEY_CTRL('l'), KEY_NONE, "refresh", do_refresh)
|
||||
CMD( KEY_META('g'), KEY_NONE, "goto-line\0i{Goto line: }", do_goto_line)
|
||||
CMDi( KEY_NONE, KEY_NONE, "goto-char\0i{Goto char: }", do_goto_char)
|
||||
CMD( KEY_NONE, KEY_NONE, "global-set-key\0s{Set key globally: }s{command: }[command]|command|", do_global_set_key)
|
||||
CMD_( KEY_META('g'), KEY_NONE, "goto-line", do_goto_line, "i{Goto line: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "goto-char", do_goto_char, "i{Goto char: }")
|
||||
CMD0( KEY_CTRLX(KEY_CTRL('q')), KEY_NONE, "vc-toggle-read-only",
|
||||
do_toggle_read_only)
|
||||
CMD0( KEY_META('q'), KEY_NONE, "fill-paragraph", do_fill_paragraph)
|
||||
CMD0( KEY_META('{'), KEY_NONE, "backward-paragraph", do_backward_paragraph)
|
||||
CMD0( KEY_META('}'), KEY_NONE, "forward-paragraph", do_forward_paragraph)
|
||||
CMD0( KEY_CTRLX(KEY_CTRL('x')), KEY_NONE, "exchange-point-and-mark", do_exchange_point_and_mark)
|
||||
CMD0( KEY_CTRLX(KEY_CTRL('x')), KEY_NONE, "exchange-point-and-mark",
|
||||
do_exchange_point_and_mark)
|
||||
CMD1( KEY_META('l'), KEY_NONE, "downcase-word", do_changecase_word, 0)
|
||||
CMD1( KEY_META('u'), KEY_NONE, "upcase-word", do_changecase_word, 1)
|
||||
CMD1( KEY_CTRLX(KEY_CTRL('l')), KEY_NONE, "downcase-region",
|
||||
|
|
@ -74,6 +80,8 @@ CmdDef basic_commands[] = {
|
|||
CMD0( KEY_CTRLX('('), KEY_NONE, "start-kbd-macro", do_start_macro)
|
||||
CMD0( KEY_CTRLX(')'), KEY_NONE, "end-kbd-macro", do_end_macro)
|
||||
CMD0( KEY_CTRLX('e'), KEY_NONE, "call-last-kbd-macro", do_call_macro)
|
||||
CMD_( KEY_NONE, KEY_NONE, "global-set-key", do_global_set_key,
|
||||
"s{Set key globally: }s{command: }[command]|command|")
|
||||
|
||||
/* window handling */
|
||||
CMD0( KEY_CTRLX('o'), KEY_NONE, "other-window", do_other_window)
|
||||
|
|
@ -84,49 +92,66 @@ CmdDef basic_commands[] = {
|
|||
CMD0( KEY_CTRL('x'), KEY_LEFT, "next-window", do_other_window)
|
||||
CMD0( KEY_CTRL('x'), KEY_RIGHT, "next-window", do_other_window)
|
||||
CMD1( KEY_CTRLX('0'), KEY_NONE, "delete-window", do_delete_window, 0)
|
||||
CMD0( KEY_CTRLX('1'), KEY_NONE, "delete-other-windows", do_delete_other_windows)
|
||||
CMD1( KEY_CTRLX('2'), KEY_NONE, "split-window-vertically", do_split_window, 0)
|
||||
CMD1( KEY_CTRLX('3'), KEY_NONE, "split-window-horizontally", do_split_window, 1)
|
||||
CMD0( KEY_CTRLX('1'), KEY_NONE, "delete-other-windows",
|
||||
do_delete_other_windows)
|
||||
CMD1( KEY_CTRLX('2'), KEY_NONE, "split-window-vertically",
|
||||
do_split_window, 0)
|
||||
CMD1( KEY_CTRLX('3'), KEY_NONE, "split-window-horizontally",
|
||||
do_split_window, 1)
|
||||
|
||||
/* help */
|
||||
CMD0( KEY_CTRLH(KEY_CTRL('h')), KEY_F1, "help-for-help", do_help_for_help)
|
||||
CMD0( KEY_CTRLH('b'), KEY_NONE, "describe-bindings",
|
||||
do_describe_bindings)
|
||||
CMD0( KEY_CTRLH('b'), KEY_NONE, "describe-bindings", do_describe_bindings)
|
||||
CMD0( KEY_CTRLH('c'), KEY_NONE, "describe-key-briefly",
|
||||
do_describe_key_briefly)
|
||||
|
||||
/* international */
|
||||
CMD( KEY_CTRLXRET('f'), KEY_NONE, "set-buffer-file-coding-system\0s{Charset: }[charset]",
|
||||
do_set_buffer_file_coding_system)
|
||||
CMD( KEY_NONE, KEY_NONE, "convert-buffer-file-coding-system\0s{Charset: }[charset]",
|
||||
do_convert_buffer_file_coding_system)
|
||||
CMD_( KEY_CTRLXRET('f'), KEY_NONE, "set-buffer-file-coding-system",
|
||||
do_set_buffer_file_coding_system,
|
||||
"s{Charset: }[charset]")
|
||||
CMD_( KEY_NONE, KEY_NONE, "convert-buffer-file-coding-system",
|
||||
do_convert_buffer_file_coding_system,
|
||||
"s{Charset: }[charset]")
|
||||
CMD0( KEY_CTRLXRET('b'), KEY_NONE, "toggle-bidir", do_toggle_bidir)
|
||||
CMD( KEY_CTRLXRET(KEY_CTRL('\\')), KEY_NONE,
|
||||
"set-input-method\0s{Input method: }[input]", do_set_input_method)
|
||||
CMD_( KEY_CTRLXRET(KEY_CTRL('\\')), KEY_NONE, "set-input-method",
|
||||
do_set_input_method,
|
||||
"s{Input method: }[input]")
|
||||
CMD0( KEY_CTRL('\\'), KEY_NONE,
|
||||
"switch-input-method", do_switch_input_method)
|
||||
|
||||
/* styles & display */
|
||||
CMD( KEY_NONE, KEY_NONE, "define-color\0s{Color name: }[color]|color|s{Color value: }", do_define_color)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-style\0s{Style: }[style]|style|s{CSS Property Name: }s{CSS Property Value: }", do_set_style)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-display-size\0i{Width: }i{Height: }", do_set_display_size)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-system-font\0ss", do_set_system_font)
|
||||
CMD0( KEY_CTRLX('f'), KEY_NONE, "toggle-full-screen", do_toggle_full_screen)
|
||||
CMD_( KEY_NONE, KEY_NONE, "define-color", do_define_color,
|
||||
"s{Color name: }[color]|color|s{Color value: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-style", do_set_style,
|
||||
"s{Style: }[style]|style|s{CSS Property Name: }"
|
||||
"s{CSS Property Value: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-display-size", do_set_display_size,
|
||||
"i{Width: }i{Height: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-system-font", do_set_system_font,
|
||||
"s{Font family: }s{System fonts: }")
|
||||
CMD0( KEY_CTRLX('f'), KEY_NONE, "toggle-full-screen",
|
||||
do_toggle_full_screen)
|
||||
CMD0( KEY_NONE, KEY_NONE, "toggle-mode-line", do_toggle_mode_line)
|
||||
CMD( KEY_NONE, KEY_NONE, "parse-config-file\0s{Configuration file: }[file]|file|", parse_config)
|
||||
|
||||
/* other stuff */
|
||||
CMD_( KEY_NONE, KEY_NONE, "parse-config-file", parse_config,
|
||||
"s{Configuration file: }[file]|file|")
|
||||
CMD_( KEY_NONE, KEY_NONE, "load-qerc", do_load_qerc,
|
||||
"s{path: }[file]|file|")
|
||||
|
||||
/* non standard mappings */
|
||||
CMD0( KEY_CTRLXRET('l'), KEY_NONE, "toggle-line-numbers", do_line_numbers)
|
||||
CMD0( KEY_CTRLXRET('t'), KEY_NONE, "truncate-lines", do_line_truncate )
|
||||
CMD0( KEY_CTRLXRET('w'), KEY_NONE, "word-wrap", do_word_wrap)
|
||||
CMD1( KEY_NONE, KEY_NONE, "set-backspace-is-control-h", do_set_backspace_is_control_h, 1)
|
||||
CMD1( KEY_NONE, KEY_NONE, "toggle-control-h", do_toggle_control_h, 0)
|
||||
|
||||
/* tab & indent */
|
||||
CMD( KEY_NONE, KEY_NONE, "set-tab-width\0i{Tab width: }", do_set_tab_width)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-indent-width\0i{Indent width: }",
|
||||
do_set_indent_width)
|
||||
CMD( KEY_NONE, KEY_NONE, "set-indent-tabs-mode\0i{Indent tabs mode (0 or 1): }",
|
||||
do_set_indent_tabs_mode)
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-tab-width", do_set_tab_width,
|
||||
"i{Tab width: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-indent-width", do_set_indent_width,
|
||||
"i{Indent width: }")
|
||||
CMD_( KEY_NONE, KEY_NONE, "set-indent-tabs-mode", do_set_indent_tabs_mode,
|
||||
"i{Indent tabs mode (0 or 1): }")
|
||||
CMD_DEF_END,
|
||||
};
|
||||
|
||||
|
|
|
|||
5
shell.c
5
shell.c
|
|
@ -251,7 +251,7 @@ static void tty_emulate(ShellState *s, int c)
|
|||
int i, offset, offset1, offset2, n;
|
||||
unsigned char buf1[10];
|
||||
|
||||
switch(s->state) {
|
||||
switch (s->state) {
|
||||
case TTY_STATE_NORM:
|
||||
switch(c) {
|
||||
case 8:
|
||||
|
|
@ -900,7 +900,8 @@ static CmdDef shell_commands[] = {
|
|||
|
||||
/* compilation commands */
|
||||
static CmdDef compile_commands[] = {
|
||||
CMD( KEY_CTRLX(KEY_CTRL('e')), KEY_NONE, "compile\0s{Compile command: }", do_compile)
|
||||
CMD_( KEY_CTRLX(KEY_CTRL('e')), KEY_NONE, "compile", do_compile,
|
||||
"s{Compile command: }|compile|")
|
||||
CMD1( KEY_CTRLX(KEY_CTRL('p')), KEY_NONE, "previous-error",
|
||||
do_compile_error, -1)
|
||||
CMD1( KEY_CTRLX(KEY_CTRL('n')), KEY_NONE, "next-error",
|
||||
|
|
|
|||
14
tty.c
14
tty.c
|
|
@ -77,6 +77,7 @@ static int term_init(QEditScreen *s, int w, int h)
|
|||
TTYState *ts;
|
||||
struct termios tty;
|
||||
struct sigaction sig;
|
||||
char *term;
|
||||
|
||||
memcpy(&s->dpy, &tty_dpy, sizeof(QEDisplay));
|
||||
|
||||
|
|
@ -135,6 +136,19 @@ static int term_init(QEditScreen *s, int w, int h)
|
|||
set_read_handler(0, tty_read_handler, s);
|
||||
|
||||
tty_resize(0);
|
||||
|
||||
/* Test TERM env var:
|
||||
* linux and xterm -> kbs=\177
|
||||
* ansi cygwin vt100 -> kbs=^H
|
||||
*/
|
||||
term = getenv("TERM");
|
||||
if (term) {
|
||||
if (strstart(term, "ansi", NULL) ||
|
||||
strstart(term, "cygwin", NULL) ||
|
||||
strstart(term, "vt", NULL)) {
|
||||
do_toggle_control_h(NULL, 1);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue