summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2024-04-01 11:03:22 +1100
committerMaxime Coste <mawww@kakoune.org>2024-04-01 11:03:22 +1100
commit917db454d9502d087b43cd1ab455616735e86f69 (patch)
treef7590066dca17cfc10e2df9554bf4fc35c8a5817 /src
parentcc935c8cc6d9b2c46738e38457c9b0e77803fa7b (diff)
Change mode_info to contain an optional NormalParams
As @topisani pointed out in #5131, it is more user friendly to always provide a %val{register} and %val{count} regardless of the mode.
Diffstat (limited to 'src')
-rw-r--r--src/client.cc10
-rw-r--r--src/input_handler.cc2
-rw-r--r--src/input_handler.hh2
3 files changed, 9 insertions, 5 deletions
diff --git a/src/client.cc b/src/client.cc
index 5ad635fe..6e5d082a 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -165,12 +165,16 @@ DisplayLine Client::generate_mode_line() const
DisplayLine modeline;
try
{
- ModeInfo mode_info = context().client().input_handler().mode_info();
+ auto [mode_info_line, normal_params] = context().client().input_handler().mode_info();
const String& modelinefmt = context().options()["modelinefmt"].get<String>();
- HashMap<String, DisplayLine> atoms{{ "mode_info", mode_info.display_line},
+ HashMap<String, DisplayLine> atoms{{ "mode_info", mode_info_line},
{ "context_info", {generate_context_info(context()),
context().faces()["Information"]}}};
- auto expanded = expand(modelinefmt, context(), {{}, mode_info.env_vars},
+ ShellContext shell_context{{}, {
+ {"register", normal_params ? StringView{normal_params->reg}.str() : ""},
+ {"count", normal_params ? String{to_string(normal_params->count)} : ""},
+ }};
+ auto expanded = expand(modelinefmt, context(), shell_context,
[](String s) { return escape(s, '{', '\\'); });
modeline = parse_display_line(expanded, context().faces(), atoms);
}
diff --git a/src/input_handler.cc b/src/input_handler.cc
index 2c085f08..e11740c7 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -390,7 +390,7 @@ public:
atoms.emplace_back(" reg=", context().faces()["StatusLineInfo"]);
atoms.emplace_back(StringView(m_params.reg).str(), context().faces()["StatusLineValue"]);
}
- return {atoms, {{"count", to_string(m_params.count)}, {"register", StringView(m_params.reg).str()}}};
+ return {atoms, m_params};
}
KeymapMode keymap_mode() const override { return KeymapMode::Normal; }
diff --git a/src/input_handler.hh b/src/input_handler.hh
index 1d1404d4..2d0aa355 100644
--- a/src/input_handler.hh
+++ b/src/input_handler.hh
@@ -56,7 +56,7 @@ enum class InsertMode : unsigned
struct ModeInfo
{
DisplayLine display_line;
- EnvVarMap env_vars;
+ std::optional<NormalParams> normal_params;
};
class InputHandler : public SafeCountable