我在电子应用程序中使用monaco-editor
,用户将在其中输入诗歌。为编辑器设置的语言是plaintext
。
我遇到了一个问题,如果用户键入的单词中带有'(撇号),getWordAtPosition
将不会返回完整的单词。根据光标的位置(这是我传递给getWordAtPosition
的位置),它会返回撇号之前的内容,或者返回撇号之后的内容。
例如,使用| (管道)代表光标的位置,如果用户已经键入:
couldn't|
getWordAtPosition
将返回t
对于|couldn't
,它将返回couldn
。
我想要的是什么,无论光标处于什么位置,它都将返回couldn't
。
到目前为止,我在创建不包含撇号的编辑器时在选项中提供了wordSeparators
(但是默认情况下是默认的),但这没有帮助。
编辑器创建块:
editorInstance = monaco.editor.create(document.getElementById('editor'), {
language: 'plaintext',
wordSeparators: '`~!@#$%^&*()-=+[{]}\\|;:",.<>/?'
});
使用getWordAtPosition
阻止:
fromEventPattern((handler: NodeEventHandler) => editorInstance.onDidChangeCursorPosition(handler))
.pipe(
map(() => {
const cursorPosition: IPosition = editorInstance.getPosition();
return editorInstance.getModel()
.getWordAtPosition(cursorPosition)
?.word;
}),
filter((value: string) => !!value)
);
任何帮助将不胜感激!预先感谢!
monaco.languages.setLanguageConfiguration('plaintext', {
wordPattern: /'?\w[\w'-.]*[?!,;:"]*/
});
monaco.editor.create(document.getElementById("container"), {
language: 'plaintext',
});
尽管plaintext
已经作为一种语言存在,但这仍然有效。我不确定setLanguageConfiguration
是否进行任何合并(我想不会吗?),请记住这一点。
我的代码段中的正则表达式并不完美,但它与以下单词匹配:无法