使用getWordUnderCursor获取包含撇号的单词吗?

问题描述 投票:1回答:1

我在电子应用程序中使用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)
            );

任何帮助将不胜感激!预先感谢!

typescript monaco-editor
1个回答
1
投票
monaco.languages.setLanguageConfiguration('plaintext', { wordPattern: /'?\w[\w'-.]*[?!,;:"]*/ }); monaco.editor.create(document.getElementById("container"), { language: 'plaintext', });

尽管plaintext已经作为一种语言存在,但这仍然有效。我不确定setLanguageConfiguration是否进行任何合并(我想不会吗?),请记住这一点。

我的代码段中的正则表达式并不完美,但它与以下单词匹配:

无法

    'cause
  • 您?
  • 你好
  • 这对我的用例很重要。如果您是未来的搜索者,请记住这一点!
  • © www.soinside.com 2019 - 2024. All rights reserved.