fix: insert list body text after hidden separators
This commit is contained in:
@@ -145,7 +145,7 @@ final class NotesController: NSViewController, NSTextViewDelegate {
|
||||
guard textView === editor, editor.isEditable,
|
||||
commandSelector == #selector(NSResponder.insertNewline(_:)) else { return false }
|
||||
let source = editor.markdownString as NSString
|
||||
let selection = editor.markdownRange(for: editor.selectedRange())
|
||||
let selection = editor.markdownInsertionRange(for: editor.selectedRange())
|
||||
var start = 0, end = 0
|
||||
source.getLineStart(&start, end: nil, contentsEnd: &end,
|
||||
for: NSRange(location: selection.location, length: 0))
|
||||
|
||||
@@ -202,6 +202,12 @@ final class NotesTextView: NSTextView, @MainActor NSLayoutManagerDelegate {
|
||||
replaceSource(NSAttributedString(string: text, attributes: textTypingAttributes), range: range, semantic: true)
|
||||
}
|
||||
|
||||
func markdownInsertionRange(for rendered: NSRange) -> NSRange {
|
||||
guard rendered.length == 0 else { return markdownRange(for: rendered) }
|
||||
let body = listWhitespaceBoundary(from: rendered.location, forward: true)
|
||||
return markdownRange(for: NSRange(location: body, length: 0))
|
||||
}
|
||||
|
||||
override func insertText(_ insertString: Any, replacementRange: NSRange) {
|
||||
let replacement: NSAttributedString
|
||||
if let attributed = insertString as? NSAttributedString {
|
||||
@@ -210,7 +216,7 @@ final class NotesTextView: NSTextView, @MainActor NSLayoutManagerDelegate {
|
||||
replacement = NSAttributedString(string: text, attributes: textTypingAttributes)
|
||||
} else { return }
|
||||
let range = replacementRange.location == NSNotFound ? selectedRange() : replacementRange
|
||||
replaceSource(replacement, range: markdownRange(for: range), semantic: false)
|
||||
replaceSource(replacement, range: markdownInsertionRange(for: range), semantic: false)
|
||||
}
|
||||
|
||||
private func replaceSource(_ replacement: NSAttributedString, range: NSRange, semantic: Bool) {
|
||||
@@ -252,7 +258,8 @@ final class NotesTextView: NSTextView, @MainActor NSLayoutManagerDelegate {
|
||||
if semantic { breakUndoCoalescing() }
|
||||
}
|
||||
refreshTasks()
|
||||
setSelectedRange(renderedRange(for: NSRange(location: range.location + replacement.length, length: 0)))
|
||||
let caret = renderedRange(for: NSRange(location: range.location + replacement.length, length: 0))
|
||||
setSelectedRange(NSRange(location: listWhitespaceBoundary(from: caret.location, forward: true), length: 0))
|
||||
}
|
||||
|
||||
override func deleteBackward(_ sender: Any?) {
|
||||
@@ -434,7 +441,7 @@ final class NotesTextView: NSTextView, @MainActor NSLayoutManagerDelegate {
|
||||
reader.importsGraphics = importsGraphics
|
||||
guard reader.readSelection(from: pboard, type: type) else { return false }
|
||||
replaceSource(Self.serialize(reader.attributedString(), keepingMetadata: true),
|
||||
range: markdownRange(for: selectedRange()), semantic: true)
|
||||
range: markdownInsertionRange(for: selectedRange()), semantic: true)
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user