>From 224bc528cf345f8ce73afe77e631df08791bf9fe Mon Sep 17 00:00:00 2001 From: Bernhard R. Link Date: Sun, 15 Jun 2008 15:02:03 +0200 Subject: [PATCH] make history expansion an option (switched off by default) --- src/actions.c | 16 ++++++++++++++++ src/data.h | 2 ++ src/editor.c | 6 ++++++ src/main.c | 1 + 4 files changed, 25 insertions(+), 0 deletions(-) diff --git a/src/actions.c b/src/actions.c index aa379f2..aafb84c 100644 --- a/src/actions.c +++ b/src/actions.c @@ -72,6 +72,7 @@ static cmdret * set_infofmt (struct cmdarg **args); static cmdret * set_topkmap (struct cmdarg **args); static cmdret * set_historysize (struct cmdarg **args); static cmdret * set_historycompaction (struct cmdarg **args); +static cmdret * set_historyexpansion (struct cmdarg **args); LIST_HEAD(set_vars); @@ -138,6 +139,7 @@ init_set_vars(void) add_set_var ("topkmap", set_topkmap, 1, "", arg_STRING); add_set_var ("historysize", set_historysize, 1, "", arg_NUMBER); add_set_var ("historycompaction", set_historycompaction, 1, "", arg_NUMBER); + add_set_var ("historyexpansion", set_historyexpansion, 1, "", arg_NUMBER); } /* rp_keymaps is ratpoison's list of keymaps. */ @@ -3596,6 +3598,20 @@ set_historycompaction (struct cmdarg **args) } static cmdret * +set_historyexpansion (struct cmdarg **args) +{ + if (args[0] == NULL) + return cmdret_new (RET_SUCCESS, "%d", defaults.history_expansion); +#ifndef HAVE_HISTORY + if (ARG(0, number)) { + return cmdret_new (RET_FAILURE, "Not compiled with libhistory"); + } +#endif + defaults.history_expansion = ARG(0, number); + return cmdret_new (RET_SUCCESS, NULL); +} + +static cmdret * set_font (struct cmdarg **args) { #ifdef USE_XFT_FONT diff --git a/src/data.h b/src/data.h index 5dcd3c6..0c89719 100644 --- a/src/data.h +++ b/src/data.h @@ -256,6 +256,8 @@ struct rp_defaults int history_size; /* remove older history when adding the same again */ int history_compaction; + /* expand ! when compiled with libhistory */ + int history_expansion; char *frame_selectors; diff --git a/src/editor.c b/src/editor.c index 0623186..23b6e35 100644 --- a/src/editor.c +++ b/src/editor.c @@ -457,6 +457,12 @@ editor_enter (rp_input_line *line) char *expansion; line->buffer[line->length] = '\0'; + + if (!defaults.history_expansion) { + history_add (line->history_id, line->buffer); + return EDIT_DONE; + } + result = history_expand_line (line->history_id, line->buffer, &expansion); PRINT_DEBUG (("History Expansion - result: %d\n", result)); diff --git a/src/main.c b/src/main.c index 21f86dd..ec7bee8 100644 --- a/src/main.c +++ b/src/main.c @@ -562,6 +562,7 @@ init_defaults (void) defaults.history_size = 20; defaults.history_compaction = True; + defaults.history_expansion = False; defaults.frame_selectors = xstrdup (""); defaults.maxundos = 20; } -- 1.4.4.4