我正在从 Codemirror 迁移到 Monaco 编辑器,以便我们使用前缀键输入特殊字符。例如,给定前缀.,如果用户键入.后跟o编辑器,则将序列替换为\xce\xa9。
可以使用 addCommand 并为其提供和弦,如下所示:
\n\neditor.addCommand(\n monaco.KeyMod.chord(monaco.KeyCode.US_DOT , monaco.KeyCode.KEY_O),\n x=>{ // write out special char here \n editor.executeEdits("", [\n { range: editor.getSelection(), text: "\xce\xa9" }\n ]);\n }\n)\nRun Code Online (Sandbox Code Playgroud)\n\n但我想使用自动完成功能来帮助用户,在用户键入前缀键后列出特殊字符。CompletionItemProvider 允许我通过在 triggerCharacters 属性中提供前缀键来做到这一点:
\n\nmonaco.languages.registerCompletionItemProvider(\'mylang\', {\n triggerCharacters:[\'.\'],\n provideCompletionItems: (model,position,token) => { \n let l=position.lineNumber,c=position.column;\n let s=model.getLineContent(l),ch=s[c-2];\n console.log(\'completion triggered on: \'+ch)\n if (ch===\'.\'){\n return CompletionItem[]; // return list of valid special chars\n }\n }\n})\nRun Code Online (Sandbox Code Playgroud)\n\n现在,当用户键入前缀键时,我会得到建议列表,但即使他使用o,它也不会触发,直到他通过按 Enter …