Как удалить новые или пустые строки на Ace. js / Ace Editor? - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно удалить все новые / пустые строки и переместить содержимое вверх.

Должна быть возможность нажимать на ввод столько раз, сколько вы хотите, но при вводе первой буквы все новые строки / пробелы Строки должны быть удалены, а содержимое перемещено вверх.

Цель: Одна строка слова или предложения без пустых строк.

Пример:

  • Слово 1
  • Слово 2
  • Новая строка / пустая строка
  • Новая строка / пустая строка
  • Слово 3
  • Слово 4
  • Новая строка / пустая строка

Но при наборе нового текста в новой строке это должно быть:

  • Слово 1
  • Слово 2
  • Слово 3
  • Слово 4

Надеюсь, это имеет смысл :)

Есть ли способ сделать это с помощью редактора туза?

Мой текущий код:

<div id="editor"></div>

Это то, что я попробовал, это работает, но не совсем, если я делаю пустые строки в середине содержимого, которое оно отправляет понять, что это нужно переместите содержимое вверх, и то же самое с вставкой содержимого.

Вот мой сценарий:

var editor = ace.edit("editor");
     $("#position-add-words").click(function () {


         editor.setOptions({
                autoScrollEditorIntoView: true,
                copyWithEmptySelection: true,
            });
        editor.setTheme("ace/theme/monokai");
        editor.session.setMode("ace/mode/javascript");
         $('#keywordModalNew').modal('show');
         editor.resize()
     });

     var lastLineWithText = '';
     var lastLineWithoutText = '';
     var copyPaste = false;
     editor.on("paste", function(e) {
            copyPaste = true;
            oldValue = editor.getValue()
            text = e.text.replace(/((\r\n|\r|\n){1})(\r\n|\r|\n)+/gm, "\n");
            //text = text.replace(/\r?\n?[^\r\n]*$/, "");

            editor.session.insert(editor.getCursorPosition(), text)
            currentValue = editor.getValue();
            newValue = currentValue.replace(/((\r\n|\r|\n){1})(\r\n|\r|\n)+/gm, "\n");
            editor.setValue("")
            editor.session.insert(editor.getCursorPosition(), newValue)
        });

     editor.session.on('change', function(delta) {
         selectionRange = editor.getSelectionRange();
         startLine = selectionRange.start.row; 
         endLine = selectionRange.end.row;
         wholelinetxt = editor.session.getLine(startLine);
         startLine = startLine + 1;
         endLine = endLine + 1;
         if(wholelinetxt.length > 0){
             if(copyPaste == false){
                 if(lastLineWithoutText > lastLineWithText){
                     editor.session.replace(new ace.Range(lastLineWithText, 0, lastLineWithoutText, 0), '');    
                     editor.navigateLineEnd();

                 }
             } 
             lastLineWithText = startLine;
         } else {
             copyPaste = false;
             lastLineWithoutText = startLine;
         }
        });


...