From dac6d0c4f8788b600537ce36c54d129fb1b6b06f Mon Sep 17 00:00:00 2001 From: John Hernandez <129467592+H3rnand3zzz@users.noreply.github.com> Date: Sat, 11 Nov 2023 20:04:17 +0100 Subject: [PATCH] Handle alt+enter as newline char Let user print newline character using alt+enter keybind, it allows great flexibility in communication, now user will be able to write much better longer messages. --- docs/profanity.1 | 3 +++ src/ui/inputwin.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/docs/profanity.1 b/docs/profanity.1 index 27e9caba..8590da59 100755 --- a/docs/profanity.1 +++ b/docs/profanity.1 @@ -80,6 +80,9 @@ Mark current window for later reading with an attention flag. .BI ALT+m Switch between windows marked with the attention flag. .TP +.BI ALT+ENTER +Add newline character without sending a message/command. +.TP .BI ALT+c Run external editor (see .BR profanity-editor (1)) diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 60dd10da..3966daca 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -137,6 +137,7 @@ static int _inp_rl_subwin_pagedown_handler(int count, int key); static int _inp_rl_startup_hook(void); static int _inp_rl_down_arrow_handler(int count, int key); static int _inp_rl_send_to_editor(int count, int key); +static int _inp_rl_print_newline_symbol(int count, int key); void create_input_window(void) @@ -482,6 +483,7 @@ _inp_rl_addfuncs(void) rl_add_funmap_entry("prof_win_close", _inp_rl_win_close_handler); rl_add_funmap_entry("prof_send_to_editor", _inp_rl_send_to_editor); rl_add_funmap_entry("prof_cut_to_history", _inp_rl_down_arrow_handler); + rl_add_funmap_entry("prof_print_newline_symbol", _inp_rl_print_newline_symbol); } // Readline callbacks @@ -555,6 +557,8 @@ _inp_rl_startup_hook(void) rl_bind_keyseq("\\e[1;5B", _inp_rl_down_arrow_handler); // ctrl+arrow down rl_bind_keyseq("\\eOb", _inp_rl_down_arrow_handler); + rl_bind_keyseq("\\e\\C-\r", _inp_rl_print_newline_symbol); // alt+enter + // unbind unwanted mappings rl_bind_keyseq("\\e=", NULL); @@ -960,3 +964,10 @@ _inp_rl_send_to_editor(int count, int key) return 0; } + +static int +_inp_rl_print_newline_symbol(int count, int key) +{ + rl_insert_text("\n"); + return 0; +}