EditorHeuristics: Handle edge cases

This commit is contained in:
Vishesh Handa
2020-06-04 02:06:21 +02:00
parent 11241ce142
commit 9a39960c03
2 changed files with 20 additions and 4 deletions

View File

@ -11,6 +11,9 @@ EditorHeuristicResult autoAddBulletList(
if (curText.length <= oldText.length) { if (curText.length <= oldText.length) {
return null; return null;
} }
if (cursorPos <= 0) {
return null;
}
// Only when adding a new line // Only when adding a new line
if (curText[cursorPos - 1] != '\n') { if (curText[cursorPos - 1] != '\n') {
@ -18,7 +21,19 @@ EditorHeuristicResult autoAddBulletList(
return null; return null;
} }
/*
print("CursorPos: $cursorPos");
print("Text Length: ${curText.length}");
*/
if (cursorPos - 2 < 0) {
return null;
}
var prevLineStart = curText.lastIndexOf('\n', cursorPos - 2); var prevLineStart = curText.lastIndexOf('\n', cursorPos - 2);
if (prevLineStart < 0 || (cursorPos - 1) < 0) {
return null;
}
prevLineStart = prevLineStart == -1 ? 0 : prevLineStart + 1; prevLineStart = prevLineStart == -1 ? 0 : prevLineStart + 1;
var prevLine = curText.substring(prevLineStart, cursorPos - 1); var prevLine = curText.substring(prevLineStart, cursorPos - 1);
@ -37,8 +52,6 @@ EditorHeuristicResult autoAddBulletList(
curText.length > cursorPos ? curText.substring(cursorPos) : ""; curText.length > cursorPos ? curText.substring(cursorPos) : "";
/* /*
print("CursorPos: $cursorPos");
print("Text Length: ${curText.length}");
if (remainingText.isNotEmpty) { if (remainingText.isNotEmpty) {
print("At cursor: #${curText[cursorPos]}#"); print("At cursor: #${curText[cursorPos]}#");
} }

View File

@ -5,7 +5,9 @@ import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/common.dart';
import 'package:gitjournal/editors/heuristics.dart'; import 'package:gitjournal/editors/heuristics.dart';
import 'package:gitjournal/editors/note_title_editor.dart'; import 'package:gitjournal/editors/note_title_editor.dart';
import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
import 'package:gitjournal/utils/logger.dart';
import 'package:gitjournal/widgets/editor_scroll_view.dart'; import 'package:gitjournal/widgets/editor_scroll_view.dart';
import 'package:gitjournal/widgets/note_viewer.dart'; import 'package:gitjournal/widgets/note_viewer.dart';
@ -155,8 +157,9 @@ class MarkdownEditorState extends State<MarkdownEditor> implements EditorState {
void _noteTextChanged() { void _noteTextChanged() {
try { try {
_applyHeuristics(); _applyHeuristics();
} catch (e) { } catch (e, stackTrace) {
print(e); Log.e("EditorHeuristics: $e");
logExceptionWarning(e, stackTrace);
} }
if (_noteModified && !widget.isNewNote) return; if (_noteModified && !widget.isNewNote) return;