Give a name to the TUI SingleKey keymap
Commit Message
Eli> The documentation part is OK, but please add index entries to the new
Eli> information, so that it could be easily found if someone forgets the
Eli> details.
Eli> Also, should this be in NEWS?
Yes.
How's this?
Tom
commit 1830e30762c53b88057e33b6044660a3da136099
Author: Tom Tromey <tom@tromey.com>
Date: Tue Sep 10 17:25:35 2019 -0600
Give a name to the TUI SingleKey keymap
Readline 8.0 has a feature that lets an application name a keymap.
This in turn makes it simpler for users to bind keys in keymaps in
their .inputrc.
This patch gives a name to the TUI SingleKey keymap, so that
additional bindings can be made there. For example:
$if gdb
set keymap SingleKey
"X": "echo hello\\n\n"
$endif
The call to rl_initialize, in tui_initialize_readline, had to be
removed so that .inputrc was not read too early. Note that Readline
explicitly documents that this call is not needed.
gdb/ChangeLog
2019-09-17 Tom Tromey <tom@tromey.com>
* NEWS: Add entry.
* tui/tui.c (tui_initialize_readline): Set name of keymap. Do not
call rl_initialize.
(tui_enable): Do not call rl_initialize.
gdb/doc/ChangeLog
2019-09-17 Tom Tromey <tom@tromey.com>
* gdb.texinfo (Editing): Document readline application name.
(TUI Single Key Mode): Document TUI SingleKey keymap name.
Comments
> From: Tom Tromey <tom@tromey.com>
> Cc: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
> Date: Tue, 17 Sep 2019 15:23:26 -0600
>
> Eli> The documentation part is OK, but please add index entries to the new
> Eli> information, so that it could be easily found if someone forgets the
> Eli> details.
>
> Eli> Also, should this be in NEWS?
>
> Yes.
>
> How's this?
LGTM, thanks.
@@ -1,3 +1,10 @@
+2019-09-17 Tom Tromey <tom@tromey.com>
+
+ * NEWS: Add entry.
+ * tui/tui.c (tui_initialize_readline): Set name of keymap. Do not
+ call rl_initialize.
+ (tui_enable): Do not call rl_initialize.
+
2019-09-11 Christian Biesinger <cbiesinger@google.com>
* auto-load.c (auto_load_expand_dir_vars): Update.
@@ -318,6 +318,10 @@ maint show test-options-completion-result
GDB now bundles GNU readline 8.0, but if you choose to use
--with-system-readline, only readline >= 7.0 can be used.
+* The TUI SingleKey keymap is now named "SingleKey". This can be used
+ from .inputrc to bind keys in this keymap. This feature is only
+ available when gdb is built against GNU readline 8.0 or later.
+
*** Changes in GDB 8.3
* GDB and GDBserver now support access to additional registers on
@@ -1,3 +1,8 @@
+2019-09-17 Tom Tromey <tom@tromey.com>
+
+ * gdb.texinfo (Editing): Document readline application name.
+ (TUI Single Key Mode): Document TUI SingleKey keymap name.
+
2019-09-10 Tom Tromey <tromey@adacore.com>
* gdb.texinfo (Index Files): Update Ada text.
@@ -24975,6 +24975,10 @@ for more details about the Readline
interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
encouraged to read that chapter.
+@cindex Readline application name
+@value{GDBN} sets the Readline application name to @samp{gdb}. This
+is useful for conditions in @file{.inputrc}.
+
@node Command History
@section Command History
@cindex command history
@@ -27577,6 +27581,10 @@ with the TUI SingleKey mode. Once the command is entered the TUI
SingleKey mode is restored. The only way to permanently leave
this mode is by typing @kbd{q} or @kbd{C-x s}.
+@cindex SingleKey keymap name
+If @value{GDBN} was built with Readline 8.0 or later, the TUI
+SingleKey keymap will be named @samp{SingleKey}. This can be used in
+@file{.inputrc} to add additional bindings to this keymap.
@node TUI Commands
@section TUI-specific Commands
@@ -329,13 +329,17 @@ tui_initialize_readline (void)
int i;
Keymap tui_ctlx_keymap;
- rl_initialize ();
-
rl_add_defun ("tui-switch-mode", tui_rl_switch_mode, -1);
rl_add_defun ("gdb-command", tui_rl_command_key, -1);
rl_add_defun ("next-keymap", tui_rl_next_keymap, -1);
tui_keymap = rl_make_bare_keymap ();
+
+ /* The named keymap feature was added in Readline 8.0. */
+#if RL_READLINE_VERSION >= 0x800
+ rl_set_keymap_name ("SingleKey", tui_keymap);
+#endif
+
tui_ctlx_keymap = rl_make_bare_keymap ();
tui_readline_standard_keymap = rl_get_keymap ();
@@ -467,7 +471,6 @@ tui_enable (void)
nodelay(w, FALSE);
nl();
keypad (w, TRUE);
- rl_initialize ();
tui_set_term_height_to (LINES);
tui_set_term_width_to (COLS);
def_prog_mode ();