そこで、基本的に JavaScript ブロックを含む XML (ステート マシン) である SCXML エディターを作成しようとしています。私は近いですが、ヒントを追加するのに苦労しています。要するに、ヒントを出すときが来たら、現在の編集モードがわからないということです。手がかりを得るために CodeMirror オブジェクトを調べましたが、表示されません。私は次のように多重化を行っています:
CodeMirror.defineMode("scxml", function (config) {
return CodeMirror.multiplexingMode(
CodeMirror.getMode(config, "text/xml"),
{
open: "<script>", close: "</script>",
mode: CodeMirror.getMode(config, "text/javascript"),
delimStyle: "delimit"
}
);
});
editorXml = CodeMirror.fromTextArea(document.getElementById("editXmlFile"), {
lineNumbers: true,
mode: 'scxml',
indentUnit: 4,
autoCloseTags: true,
matchBrackets: true,
extraKeys: {
"'>'": function (cm) { cm.closeTag(cm, '>'); },
"'/'": function (cm) { cm.closeTag(cm, '/'); },
"' '": function (cm) { CodeMirror.xmlHint(cm, ' '); },
"'<'": function (cm) { CodeMirror.xmlHint(cm, '<'); },
"Ctrl-Space": function (cm) { CodeMirror.xmlHint(cm, ''); }
}
});
XML ヒントが機能している場所に注意してください。extraKeys
そこで JavaScript ヒントを取得するにはどうすればよいですか? JavaScriptヒントヘルプから、次の行に沿って何かをするようです:
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.simpleHint(cm, CodeMirror.javascriptHint);
}
... extraKeys: {"Ctrl-Space": "autocomplete"} ...
simpleHint
しかし、いずれにせよ、使用するモード (XML またはJavaScript ) を知る必要がありますxmlHint
。これがどのように行われるか知っている人はいますか?
編集:どちらかのセクションにいるときにcm.getMode().name
戻っcm.getOption('mode')
てくださいscxml
ありがとう!