Branch: refs/heads/master Author: Jiří Techet techet@gmail.com Committer: Jiří Techet techet@gmail.com Date: Sat, 09 Feb 2019 23:17:54 UTC Commit: 47e16587e6f6d7bc0193d5dc3f17bc8f594b833b https://github.com/geany/geany-plugins/commit/47e16587e6f6d7bc0193d5dc3f17bc...
Log Message: ----------- vimode: Fix repeated commands like 10dd not working
By last-minute mistake made before the initial plugin release, none of the repeat commands worked because numbers were removed from the key press list. This patch fixes that issue.
This is what happens when the author of the plugin actually doesn't use what he has created.
Modified Paths: -------------- vimode/src/cmd-runner.c vimode/src/vi.c
Modified: vimode/src/cmd-runner.c 22 lines changed, 17 insertions(+), 5 deletions(-) =================================================================== @@ -428,6 +428,18 @@ static gboolean is_cmdpart(GSList *kpl, CmdDef *cmds) }
+static gboolean is_printable(GSList *kpl) +{ + guint mask = GDK_MODIFIER_MASK & ~(GDK_SHIFT_MASK | GDK_LOCK_MASK); + KeyPress *kp = g_slist_nth_data(kpl, 0); + + if (kp->modif & mask) + return FALSE; + + return g_unichar_isprint(gdk_keyval_to_unicode(kp->key)); +} + + static CmdDef *get_cmd_to_run(GSList *kpl, CmdDef *cmds, gboolean have_selection) { gint i; @@ -609,7 +621,7 @@ static gboolean perform_repeat_cmd(CmdContext *ctx) }
-static gboolean process_cmd(CmdDef *cmds, CmdContext *ctx) +static gboolean process_cmd(CmdDef *cmds, CmdContext *ctx, gboolean ins_mode) { gboolean consumed; gboolean performed = FALSE; @@ -618,7 +630,7 @@ static gboolean process_cmd(CmdDef *cmds, CmdContext *ctx) SSM(ctx->sci, SCI_GETSELECTIONEND, 0, 0) - SSM(ctx->sci, SCI_GETSELECTIONSTART, 0, 0) > 0; CmdDef *def = get_cmd_to_run(ctx->kpl, cmds, have_selection);
- consumed = is_cmdpart(ctx->kpl, cmds); + consumed = is_cmdpart(ctx->kpl, cmds) || (!ins_mode && is_printable(ctx->kpl));
if (def) { @@ -667,17 +679,17 @@ static gboolean process_cmd(CmdDef *cmds, CmdContext *ctx)
gboolean cmd_perform_cmd(CmdContext *ctx) { - return process_cmd(cmd_mode_cmds, ctx); + return process_cmd(cmd_mode_cmds, ctx, FALSE); }
gboolean cmd_perform_vis(CmdContext *ctx) { - return process_cmd(vis_mode_cmds, ctx); + return process_cmd(vis_mode_cmds, ctx, FALSE); }
gboolean cmd_perform_ins(CmdContext *ctx) { - return process_cmd(ins_mode_cmds, ctx); + return process_cmd(ins_mode_cmds, ctx, TRUE); }
Modified: vimode/src/vi.c 12 lines changed, 0 insertions(+), 12 deletions(-) =================================================================== @@ -210,17 +210,6 @@ void vi_set_active_sci(ScintillaObject *sci) }
-static gboolean is_printable(GdkEventKey *ev) -{ - guint mask = GDK_MODIFIER_MASK & ~(GDK_SHIFT_MASK | GDK_LOCK_MASK); - - if (ev->state & mask) - return FALSE; - - return g_unichar_isprint(gdk_keyval_to_unicode(ev->keyval)); -} - - gboolean vi_notify_key_press(GdkEventKey *event) { ScintillaObject *sci = ctx.sci; @@ -244,7 +233,6 @@ gboolean vi_notify_key_press(GdkEventKey *event) consumed = cmd_perform_cmd(&ctx); else consumed = cmd_perform_vis(&ctx); - consumed = consumed || is_printable(event); } else //insert, replace mode {
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
plugins-commits@lists.geany.org