diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-11-07 21:39:12 +0100 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-11-08 13:00:47 +0100 |
| commit | 4e6ddd6c329d56055a732c6344df019f0d997aaf (patch) | |
| tree | b426e5de13142442669981d90b07d10fc6999d89 /src/core-commands.c | |
| parent | 1391e9c6ea1f9bef965f96e70f4e27141abcb5cd (diff) | |
the command line macro is now managed by a Scintilla view
* Instead of rendering a teco_string_t into a Scintilla view (GTK)
and an ncurses window (Curses), it is now a Scintilla view and document
that is modified directly.
* Reduces redundancies between GTK and Curses UIs.
* It will be more efficient on very large command lines, especially on GTK.
* We can now redirect Scintilla messages to the command line view in order
to configure syntax highlighting, the margin, rubout indicator style and
scroll behavior (TODO).
* This will also simplify the configuration of multi-line command lines (TODO).
* Since INDIC_PLAIN is not supported by Scinterm, rubbed out command lines
are now styled with INDIC_STRAIGHTBOX (background color).
Diffstat (limited to 'src/core-commands.c')
| -rw-r--r-- | src/core-commands.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core-commands.c b/src/core-commands.c index 653a40f..99fd628 100644 --- a/src/core-commands.c +++ b/src/core-commands.c @@ -551,9 +551,11 @@ teco_state_start_cmdline_push(teco_machine_main_t *ctx, GError **error) !teco_qreg_table_edit_name(&teco_qreg_table_globals, "\e", 1, error)) return; + const gchar *macro = (const gchar *)teco_cmdline_ssm(SCI_GETCHARACTERPOINTER, 0, 0); + teco_interface_ssm(SCI_BEGINUNDOACTION, 0, 0); teco_interface_ssm(SCI_CLEARALL, 0, 0); - teco_interface_ssm(SCI_ADDTEXT, teco_cmdline.pc, (sptr_t)teco_cmdline.str.data); + teco_interface_ssm(SCI_ADDTEXT, teco_cmdline.pc, (sptr_t)macro); teco_interface_ssm(SCI_ENDUNDOACTION, 0, 0); /* @@ -771,8 +773,10 @@ teco_state_start_input(teco_machine_main_t *ctx, gunichar chr, GError **error) * for beginnings of command-lines? * It could also be used for a corresponding KEYMACRO mask. */ - if (teco_cmdline.effective_len == 1 && teco_cmdline.str.data[0] == '*') + if (teco_cmdline_ssm(SCI_GETCURRENTPOS, 0, 0) == 1 && + teco_cmdline_ssm(SCI_GETCHARAT, 0, 0) == '*') return &teco_state_save_cmdline; + /* treat as an operator */ break; case '<': |
