Просмотр исходного кода

134164 able to add prefix to each line

soumaeda 2 лет назад
Родитель
Сommit
f9c3937bad

+ 13 - 14
packages/editor/src/services/codemirror-editor/use-codemirror-editor/utils/insert-prefix.ts

@@ -9,26 +9,25 @@ export const useInsertPrefix = (view?: EditorView): InsertPrefix => {
     if (view == null) {
       return;
     }
-
     const startPos = view.state.selection.main.from;
     const endPos = view.state.selection.main.to;
+    const lines = [];
     const space = ' ';
-    const insertText = noSpaceIfPrefixExists && view.state.doc.lineAt(startPos).text.startsWith(prefix)
-      ? prefix
-      : prefix + space;
+    let lastLineTo = 0;
+    let insertText = '';
 
-    for (let i = view.state.doc.lineAt(startPos).number; i <= view.state.doc.lineAt(endPos).number; i++) {
+    for (let i = view.state.doc.lineAt(startPos).number; i < view.state.doc.lineAt(endPos).number + 1; i++) {
       const line = view.state.doc.line(i);
-
-      view.dispatch({
-        changes: {
-          from: line.from,
-          insert: insertText,
-        },
-        selection: { anchor: line.to + insertText.length },
-      });
+      insertText = noSpaceIfPrefixExists && line.text.startsWith(prefix)
+        ? prefix
+        : prefix + space;
+      lines.push({ from: line.from, insert: insertText });
+      lastLineTo = line.to;
     }
-
+    view.dispatch({
+      changes: lines,
+      selection: { anchor: lastLineTo + insertText.length },
+    });
     view.focus();
   }, [view]);
 };