0

这是我的场景:我有一个输入文本区域,用户在其中介绍一些文本。文本是纯文本,但用户可以使用一些已定义的宏,例如 {{username}}。

这是一个例子

<textarea>The user {{Username}} loggedin at {{now}}</textarea>

我不希望用户必须知道语法,所以我会有一些按钮,当点击这些按钮时,会自动在 textarea 中插入宏。我想对这个宏应用一些基本样式。例如,上面的内容应该转换为

The user <span class="cm-mystyle">Username</span> logged in at <span class="cm-mystyle">Now</span>

使用编辑器时,用户应该将“跨度”作为一个块来处理,这意味着用户不能更改跨度的内容(只是删除)。

我不知道 CodeMirror 是否是处理这种情况的正确工具。

阅读文档后,我的第一个方法是定义一个模式来处理我的令牌 {{Username}}。但似乎我只能返回要应用于令牌的样式。所以我可以拥有这个

The user <span class="cm-mystyle">{{Username}}</span> logged in...

但我想删除 {{}} 字符。然后我阅读了有关小部件的信息,在我看来,这些小部件可用于处理我的场景。

老实说,我有点困惑如何解决我的问题。有什么帮助吗?

4

1 回答 1

0

markText方法可能是您想要的。找到宏文本,并将其标记为replacedBy设置为某些样式的选项,该样式span仅包含您要显示的文本。

http://codemirror.net/doc/manual.html#markText

于 2013-09-24T12:21:48.967 回答