diff options
| author | Maxime Coste <mawww@kakoune.org> | 2024-04-01 11:03:22 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2024-04-01 11:03:22 +1100 |
| commit | 917db454d9502d087b43cd1ab455616735e86f69 (patch) | |
| tree | f7590066dca17cfc10e2df9554bf4fc35c8a5817 /src | |
| parent | cc935c8cc6d9b2c46738e38457c9b0e77803fa7b (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.cc | 10 | ||||
| -rw-r--r-- | src/input_handler.cc | 2 | ||||
| -rw-r--r-- | src/input_handler.hh | 2 |
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 |
