Как убрать табуляцию всего документа в textarea CodeMirror

Если у тебя гарантируется что весь код внутри текстареи будет отформатирован одинаково (без смеси табов и пробелов) то алгоритм решения такой:

  1. Взять текст из textarea.
  2. Разбить по строкам.
  3. Взять количество табуляций в первой строке.
  4. Для всех строк убрать это же количество табуляций.
  5. Соединить все строки, вставить в textarea.
  6. Илициализировать codemirror.

разбитие на строки-выкусывание выглядит примерно так:

const allStrs = textarea.value.split(/\n/) // разбиваем на строки
const firstStr = allStrs[0] // берем первую
const matchedSpaces = firstStr.match(/^\s+/) // пытаемся найти начальные пробельные символы, 
let extraspaces = ''
if (matchedSpaces) { // пробельные символы найдены, заносим их в строку в переменную
	extraspaces = matchedSpaces[0]
}
const unindentedLines = allStrs.map(str => str.replace(extraspaces, '')) // во всех строках заменяем пробельные символы на пустую строку. Заменится только 1 и только первое вхождение этих пробельных символов
const res = unindentedLines.join('\n') // собираем обратно строки в одну
//... заносим значение обратно в textarea, инициализируем codemirror
1 лайк