javascript - 如何实现代码镜像以在没有 CTRL+SPACE 的情况下显示提示
问题描述
JavaScript:
$http.get("/getApexBody", config).then(function(response) {
document.getElementById("saveBtn").disabled = false;
document.getElementById("cleanBtn").disabled = false;
$scope.apexClassWrapper = response.data;
$('#loaderImage').hide();
if (globalEditor1) {
globalEditor1.toTextArea();
}
setTimeout(function(test) {
CodeMirror.commands.autocomplete = function(cm) {
cm.showHint({
hint: CodeMirror.hint.auto
});
};
var editor = CodeMirror.fromTextArea(document.getElementById('apexBody'), {
lineNumbers: true,
matchBrackets: true,
extraKeys: {
"Ctrl-Space": "autocomplete"
},
gutters: ["CodeMirror-lint-markers"],
lint: true,
mode: "text/x-apex"
});
globalEditor1 = $('.CodeMirror')[0].CodeMirror;
}), 2000
});
这是我的 JS 文件,ctrl-space 工作正常,但我需要在没有任何键绑定的情况下实现自动完成。
我什至试过这个:
$http.get("/getApexBody", config).then(function(response) {
document.getElementById("saveBtn").disabled = false;
document.getElementById("cleanBtn").disabled = false;
$scope.apexClassWrapper = response.data;
$('#loaderImage').hide();
if (globalEditor1) {
globalEditor1.toTextArea();
}
setTimeout(function(test) {
/* CodeMirror.commands.autocomplete = function(cm) {
cm.showHint({
hint: CodeMirror.hint.auto
});
};*/
var editor = CodeMirror.fromTextArea(document.getElementById('apexBody'), {
lineNumbers: true,
matchBrackets: true,
/*extraKeys: {
"Ctrl-Space": "autocomplete"
},*/
gutters: ["CodeMirror-lint-markers"],
lint: true,
mode: "text/x-apex"
});
editor.on('inputRead', function onChange(editor, input) {
if (input.text[0] === ';' || input.text[0] === ' ') {
return;
}
CodeMirror.commands.autocomplete = function(editor) {
editor.showHint({
hint: CodeMirror.hint.auto
});
};
});
globalEditor1 = $('.CodeMirror')[0].CodeMirror;
}), 2000
});
但这不起作用。我在这里缺少什么吗?如何使用 codemirror 显示实时完成提示?
我使用了 show-hints.js ,并对其进行了一些修改以适用于“。” 也。请帮忙。
解决方案
使用此功能自动完成 codeMirror 没有CTRL+ Space。
在show-hint.js 中将 completeSingle设置为 false
editor.on("inputRead", function(instance) {
if (instance.state.completionActive) {
return;
}
var cur = instance.getCursor();
var token = instance.getTokenAt(cur);
if (token.type && token.type != "comment") {
CodeMirror.commands.autocomplete(instance);
}
});
推荐阅读
- python - python - tesseract 未安装或不在您的 PATH 中。有关更多信息,请参阅 README 文件
- sql - Order by 子句无效
- c++ - 为什么这个程序没有崩溃?(浅拷贝)
- reactjs - 使用 react-spring usesprings hook 动画元素
- angular - 找不到名称为“0”的控件
- ios - 我可以在没有付费 Apple Developer Program 会员资格的情况下将 SiriKit 支持添加到我的应用程序吗?
- c# - 基于请求 api 的 C# 过滤器
- file - 如何打开记事本文本文件并保持在所有其他窗口的顶部,直到我在 VBScript 中将其关闭?
- django-rest-framework - 使用 UUID 使用嵌套序列化程序创建对象
- ios - Unity Firebase Analytics 6.15.2 崩溃