Динамически изменить направление текста в редакторе ace - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь динамически обновить направление текста в редакторе ace на «LTR» или «RTL» в зависимости от того, что введено пользователем.

Я слушаю событие change в редакторе ace и пишу следующий код после прохождения ace.js

scope.editor.session.$bidiHandler.setTextDir(_isNewValueRTL);
scope.editor.session.$bidiHandler.updateBidiMap();

_isNewValueRTL - логическое значение.Я не вижу, как это работает.

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Попробуйте добавить этот CSS к вашему ace_line class

.ace_line {
    direction: ltr;
    unicode-bidi: bidi-override;
}

Это может изменить направление текста

0 голосов
/ 13 ноября 2018

Ace в настоящее время не имеет метода setTextDir, он поддерживает направление на основе линии https://github.com/ajaxorg/ace/pull/3400, которое работает путем добавления 'RIGHT-TO-LEFT EMBEDDING' (U+202B) к строке

, чтобы использовать, которые включают ext-rtl.js

editor.setOption("rtlText", true)

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

<script src=https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js ></script>
<script src=https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ext-rtl.js ></script>

 
<script>
debugger
editor = ace.edit(null, {
  value: " left\n\u202B right\n\n try press ctrl-alt-shift-r or ctrl-alt-shift-l ",
  rtlText: true,
})
document.body.appendChild(editor.container)
editor.container.style.cssText = "height: 150px; width: 400px; outline: solid"
 
</script>
editor.session.$bidiHandler.setRtlDirection(editor, true)

Если вам нужны другие функции, откройте запрос функции для ace https://github.com/ajaxorg/ace/issues/new

...