Codemirror自动完成删除全局建议

时间:2016-07-04 04:31:37

标签: javascript codemirror

编织:http://kodeweave.sourceforge.net/editor/#d956c96bdee0cdd1ce9193aee78353ac

有没有人知道从Codemirror自动完成中删除一些全局变量的有效方法?

例如StyleFix,PrefixFree,Html2Jade等:不应该是可见的。

enter image description here

1 个答案:

答案 0 :(得分:2)

以下是摘要:(来自https://codemirror.net/doc/manual.html#addon_javascript-hint

  

这将简单地使用编辑器运行的JavaScript环境作为有关对象及其属性的信息源。

相关的源代码:

var found = [], start = token.string, global = options && options.globalScope || window;

function gatherCompletions(obj) {
  if (typeof obj == "string") forEach(stringProps, maybeAdd);
  else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
  else if (obj instanceof Function) forEach(funcProps, maybeAdd);
  for (var name in obj) maybeAdd(name);//important
}

(来自https://mikethedj4.github.io/kodeWeave/editor/libraries/codemirror/addon/hint/javascript-hint.js

其中objglobal

因此,如果您想删除一些全局变量 ,只需修改globalScope参数。

更改此行:

CodeMirror.commands.autocomplete(cm,null, {completeSingle: false});

var scope={};
var preventList=['StyleFix', 'PrefixFree', 'Html2Jade','alert'];// map is better
for(var i in window){
  if(preventList.indexOf(i)===-1){
    scope[i]=window[i]
  }
}
CodeMirror.commands.autocomplete(cm,null, {completeSingle: false,globalScope:scope});

现场演示: https://mikethedj4.github.io/kodeWeave/editor/#cf4c4aa884b6ddb30c4ac79dd8bf3997