This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Intercept and handle Delete/Home/End keys in the TUI


On Wed, Jun 3, 2015 at 7:28 PM, Patrick Palka <patrick@parcs.ath.cx> wrote:
> These keys are mapped by wgetch() to special ncurses-specific values and
> are otherwise passed through to readline, to no useful effect.
>
> This patch intercepts these keys in the TUI and gives them their
> expected function.

The commit message is slightly misleading.  These keys work as
expected when the command window is in focus.  But when another window
is in focus, these keys currently have no function.  This patch gives
them their expected function when the command window is not in focus.

Alternatively when the command window is not in focus the Home and
Delete keys could be given the function of scrolling the source/disasm
windows all the way up or down.  Personally I don't think that is very
useful.  I think the traditional binding would probably see more use.

Nonetheless I will reword the commit message to mention the focus aspect.

>
> gdb/ChangeLog:
>
>         * tui/tui-command.c: Include "readline/readline.h".
>         (tui_dispatch_ctrl_char): Handle KEY_DC, KEY_HOME and KEY_END.
> ---
>  gdb/tui/tui-command.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c
> index 03ec076..84ba2b7 100644
> --- a/gdb/tui/tui-command.c
> +++ b/gdb/tui/tui-command.c
> @@ -27,6 +27,7 @@
>  #include "tui/tui-command.h"
>
>  #include "gdb_curses.h"
> +#include "readline/readline.h"
>  /*****************************************
>  ** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
>  ******************************************/
> @@ -76,6 +77,15 @@ tui_dispatch_ctrl_char (unsigned int ch)
>      case KEY_LEFT:
>        tui_scroll_right (win_info, 1);
>        break;
> +    case KEY_DC:
> +      rl_delete (1, ch);
> +      break;
> +    case KEY_HOME:
> +      rl_point = 0;
> +      break;
> +    case KEY_END:
> +      rl_point = rl_end;
> +      break;
>      case '\f':
>        break;
>      default:
> --
> 2.4.2.387.gf86f31a.dirty
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]