add functions to yank to end-of-previous-character, and to yank from current line to start of buffer

This commit is contained in:
2025-09-05 23:46:10 +01:00
parent 367e691349
commit 76e14ea491
3 changed files with 46 additions and 7 deletions

View File

@@ -68,7 +68,7 @@ struct
val startState = startState
structure Folder =
MakeCharFolderNext
MakeCharFolderPrev
(struct
val startState = startState
val tables = tables
@@ -78,7 +78,7 @@ struct
currentState = nonBlankAfterSpaceState
end)
val fStart = Folder.foldNext
val fStart = Folder.foldPrev
end)
structure StartOfCurrentWORDFolder =

View File

@@ -275,6 +275,15 @@ struct
| #"a" => appendChr (app, chrCmd, str)
| _ => NormalFinish.clearMode app
fun parseYankGo (count, app, chrCmd) =
case chrCmd of
#"e" =>
NormalYank.yankWhenMovingBackPlusOne (app, Cursor.endOfPrevWord, count)
| #"E" =>
NormalYank.yankWhenMovingBackPlusOne (app, Cursor.endOfPrevWORD, count)
| #"g" => NormalYank.yankToStart app
| _ => NormalFinish.clearMode app
fun parseYank (strPos, str, count, app, chrCmd, time) =
if strPos = String.size str - 1 then
parseYankTerminal (str, count, app, chrCmd, time)
@@ -285,11 +294,11 @@ struct
| #"T" => NormalYank.yankToChr (app, 1, Cursor.tillPrevChr, op-, chrCmd)
| #"f" => NormalYank.yankToChr (app, count, Cursor.toNextChr, op+, chrCmd)
| #"F" => NormalYank.yankToChr (app, count, Cursor.toPrevChr, op-, chrCmd)
(* todo: implement
| #"g" =>
| #"i" =>
| #"a" =>
| #"d" =>
| #"g" => parseYankGo (count, app, chrCmd)
(*
| #"i" =>
| #"a" =>
| #"d" =>
*)
| _ => NormalFinish.clearMode app

View File

@@ -56,6 +56,22 @@ struct
NormalModeWith.modeAndBuffer (app, buffer, mode, [DRAW msg])
end
fun yankWhenMovingBackPlusOne (app: app_type, fMove, count) =
let
val {buffer, cursorIdx, ...} = app
val buffer = LineGap.goToIdx (cursorIdx, buffer)
val low = fMove (buffer, cursorIdx, count)
val length = (cursorIdx + 1) - low
val str = LineGap.substring (low, length, buffer)
val msg = YANK str
val mode = NORMAL_MODE ""
in
NormalModeWith.modeAndBuffer (app, buffer, mode, [DRAW msg])
end
fun yankWhenMovingForward (app: app_type, fMove, count) =
let
val {buffer, cursorIdx, ...} = app
@@ -226,4 +242,18 @@ struct
, fInc
, chr
)
fun yankToStart (app: app_type) =
let
val {cursorIdx, buffer, ...} = app
val high = Cursor.viDlrForDelete (buffer, cursorIdx, 1)
val buffer = LineGap.goToIdx (high, buffer)
val str = LineGap.substring (0, high, buffer)
val msg = YANK str
val mode = NORMAL_MODE ""
in
NormalModeWith.modeAndBuffer (app, buffer, mode, [DRAW msg])
end
end