在ace编辑器中动态更改文本方向



我正在尝试根据用户输入的内容,将ace编辑器中的文本方向动态更新为"LTR"或"RTL"。

我正在听ace编辑器上的change事件,并在完成ace.js 后编写以下代码

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

_isNewValueRTL是一个布尔值。我认为它不起作用。

如有任何帮助,将不胜感激

尝试将此CSS添加到ace_line

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

这将改变文本的方向

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: " leftnu202B rightnn 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)

如果你需要一些其他功能,那么打开一个功能请求到acehttps://github.com/ajaxorg/ace/issues/new

editor.setOption("rtlText",true(如果rtlText不起作用,请使用rtleditor.setOption("rtl",true(

最新更新