mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-24 15:53:45 +08:00
MarkdownToolbar: make it always indent the start of the line
This commit is contained in:
@ -302,19 +302,14 @@ int prevWordPos(TextEditingValue textEditingValue) {
|
||||
return lastSpacePos + 1;
|
||||
}
|
||||
|
||||
var indentStr = '\t';
|
||||
|
||||
TextEditingValue addTab(TextEditingValue textEditingValue) {
|
||||
var cursorPos = textEditingValue.selection.baseOffset;
|
||||
var text = textEditingValue.text;
|
||||
|
||||
var newText = "";
|
||||
if (cursorPos == text.length) {
|
||||
newText = text + "\t";
|
||||
} else {
|
||||
newText = text.substring(0, cursorPos) + "\t" + text.substring(cursorPos);
|
||||
}
|
||||
|
||||
return TextEditingValue(
|
||||
text: newText,
|
||||
text: indentStr + text,
|
||||
selection: TextSelection.collapsed(offset: cursorPos + 1),
|
||||
);
|
||||
}
|
||||
@ -323,25 +318,14 @@ TextEditingValue addBackTab(TextEditingValue textEditingValue) {
|
||||
var cursorPos = textEditingValue.selection.baseOffset;
|
||||
var text = textEditingValue.text;
|
||||
|
||||
if (cursorPos <= 0) {
|
||||
return textEditingValue;
|
||||
var newText = text;
|
||||
if (newText.startsWith(indentStr)) {
|
||||
newText = newText.substring(indentStr.length);
|
||||
cursorPos -= indentStr.length;
|
||||
}
|
||||
|
||||
var prevChar = text[cursorPos - 1];
|
||||
if (prevChar == '\t') {
|
||||
var newText = "";
|
||||
if (cursorPos - 1 > 1) {
|
||||
newText += text.substring(0, cursorPos - 1);
|
||||
}
|
||||
if (cursorPos != text.length) {
|
||||
newText += text.substring(cursorPos);
|
||||
}
|
||||
|
||||
return TextEditingValue(
|
||||
text: newText,
|
||||
selection: TextSelection.collapsed(offset: cursorPos - 1),
|
||||
);
|
||||
}
|
||||
|
||||
return textEditingValue;
|
||||
return TextEditingValue(
|
||||
text: newText,
|
||||
selection: TextSelection.collapsed(offset: cursorPos),
|
||||
);
|
||||
}
|
||||
|
@ -321,17 +321,24 @@ void main() {
|
||||
_testTab(
|
||||
before: 'Hello',
|
||||
beforeOffset: 1,
|
||||
after: 'H\tello',
|
||||
after: '\tHello',
|
||||
afterOffset: 2,
|
||||
);
|
||||
|
||||
_testTab(
|
||||
before: 'Hi',
|
||||
beforeOffset: 2,
|
||||
after: 'Hi\t',
|
||||
after: '\tHi',
|
||||
afterOffset: 3,
|
||||
);
|
||||
|
||||
_testTab(
|
||||
before: '- Hi',
|
||||
beforeOffset: 4,
|
||||
after: '\t- Hi',
|
||||
afterOffset: 5,
|
||||
);
|
||||
|
||||
_testBackTab(
|
||||
before: '\tHello',
|
||||
beforeOffset: 1,
|
||||
@ -339,6 +346,13 @@ void main() {
|
||||
afterOffset: 0,
|
||||
);
|
||||
|
||||
_testBackTab(
|
||||
before: '\tHello',
|
||||
beforeOffset: 4,
|
||||
after: 'Hello',
|
||||
afterOffset: 3,
|
||||
);
|
||||
|
||||
_testBackTab(
|
||||
before: 'Hi',
|
||||
beforeOffset: 0,
|
||||
|
Reference in New Issue
Block a user