From e1a15ab1d0e413f478beac7a247b905e4de87d6d Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 2 Sep 2025 22:41:34 +0100 Subject: [PATCH] append non-terminal characters after string in yank --- fcore/normal-mode/normal-mode.sml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/fcore/normal-mode/normal-mode.sml b/fcore/normal-mode/normal-mode.sml index 3eda903..f2bcbcd 100644 --- a/fcore/normal-mode/normal-mode.sml +++ b/fcore/normal-mode/normal-mode.sml @@ -261,13 +261,25 @@ struct | #"%" => NormalYank.yankToMatchingPair app | #"n" => NormalYank.yankToNextMatch (app, count) | #"N" => NormalYank.yankToPrevMatch (app, count) - (* todo: non-terminal chars *) + (* append non-terminal characters to string *) + | #"d" => + let (* 'yd' motion, like 'ydw'; meant to be 'yank then delete' *) + in appendChr (app, chrCmd, str) + end + | #"t" => appendChr (app, chrCmd, str) + | #"T" => appendChr (app, chrCmd, str) + | #"f" => appendChr (app, chrCmd, str) + | #"F" => appendChr (app, chrCmd, str) + | #"g" => appendChr (app, chrCmd, str) + | #"i" => appendChr (app, chrCmd, str) + | #"a" => appendChr (app, chrCmd, str) | _ => NormalFinish.clearMode app fun parseYank (strPos, str, count, app, chrCmd, time) = if strPos = String.size str - 1 then parseYankTerminal (str, count, app, chrCmd, time) else + (* todo: handle non-terminal characters *) app (* useful reference as list of non-terminal commands *)