progress reimplementing 'MakeNormalDelete.deleteLine
This commit is contained in:
@@ -343,21 +343,51 @@ struct
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
fun deleteLine (app: app_type, count, time) = raise Fail "todo: reimplement"
|
fun deleteLine (app: app_type, count, time) =
|
||||||
|
|
||||||
fun deleteLineDown (app: app_type, count, time) =
|
|
||||||
let
|
let
|
||||||
val {buffer, cursorIdx, searchString, ...} = app
|
val {buffer, cursorIdx, ...} = app
|
||||||
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||||
|
|
||||||
val startIdx = Cursor.vi0 (buffer, cursorIdx)
|
val startIdx = Cursor.vi0 (buffer, cursorIdx)
|
||||||
val buffer = LineGap.goToIdx (startIdx, buffer)
|
val buffer = LineGap.goToIdx (startIdx, buffer)
|
||||||
|
|
||||||
val startLine =
|
val startLine = LineGap.idxToLineNumber (cursorIdx + 1, buffer)
|
||||||
if cursorIdx = startIdx then
|
val endLine = startLine + count
|
||||||
LineGap.idxToLineNumber (cursorIdx + 1, buffer)
|
|
||||||
|
val buffer = LineGap.goToLine (endLine, buffer)
|
||||||
|
val endLineIdx = LineGap.lineNumberToIdx (endLine, buffer)
|
||||||
|
val endLineIdx =
|
||||||
|
if endLineIdx = #textLength buffer then Int.max (endLineIdx - 1, 0)
|
||||||
|
else endLineIdx
|
||||||
|
val buffer = LineGap.goToIdx (endLineIdx, buffer)
|
||||||
|
in
|
||||||
|
if Cursor.isOnNewlineAfterChr (buffer, endLineIdx) then
|
||||||
|
let
|
||||||
|
val endLineIdx = endLineIdx + 1
|
||||||
|
|
||||||
|
val length = endLineIdx - startIdx
|
||||||
|
val initialMsg = Fn.initMsgs (startIdx, length, buffer)
|
||||||
|
val buffer = LineGap.delete (startIdx, length, buffer)
|
||||||
|
|
||||||
|
val ss = LineGap.toString buffer
|
||||||
|
val ss = String.toCString ss ^ "\n"
|
||||||
|
val () = print ss
|
||||||
|
in
|
||||||
|
raise Fail ""
|
||||||
|
end
|
||||||
else
|
else
|
||||||
LineGap.idxToLineNumber (cursorIdx + 1, buffer)
|
app
|
||||||
|
end
|
||||||
|
|
||||||
|
fun deleteLineDown (app: app_type, count, time) =
|
||||||
|
let
|
||||||
|
val {buffer, cursorIdx, ...} = app
|
||||||
|
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||||
|
|
||||||
|
val startIdx = Cursor.vi0 (buffer, cursorIdx)
|
||||||
|
val buffer = LineGap.goToIdx (startIdx, buffer)
|
||||||
|
|
||||||
|
val startLine = LineGap.idxToLineNumber (cursorIdx + 1, buffer)
|
||||||
val endLine = startLine + count + 1
|
val endLine = startLine + count + 1
|
||||||
|
|
||||||
val buffer = LineGap.goToLine (endLine, buffer)
|
val buffer = LineGap.goToLine (endLine, buffer)
|
||||||
|
|||||||
Reference in New Issue
Block a user