2014-11-18 3 views
12

저는 에이스 편집기를 사용하고 있으며 기본 개념을 활성화했으며 다른 서버에서 데이터를 가져와 제안 사항을 얻고 있습니다. 모든 것이 잘 작동하지만 제안 상자에서 지역 추천 단어를 삭제하고 싶습니다.ACE 편집기 자동 완성이 로컬 변수를 제거합니다.

다음
var langTools = ace.require("ace/ext/language_tools"); 
var editor = ace.edit("editor"); 

editor.setTheme("ace/theme/xcode"); 
var TextMode = require("ace/mode/text").Mode; 
editor.getSession().setUseWrapMode(true); 

editor.setOptions({ 
    enableBasicAutocompletion: true, 
}); 

var qtags = { 
getCompletions: function(editor, session, pos, prefix, callback) { 
    $.getJSON(jsonURL, 
    function(tagList) { 
     callback(null, tagList.map(function(qtag) { 
     return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"} 
     })); 
    }) 
    } 
} 
langTools.addCompleter(qtags); 

처럼 보이는 방법은 다음과 같습니다 : 여기

내 관련 코드입니다, 내 qtag의 completer를 추가하기 전에 모든 completers을 제거하려면이 행을 시도했습니다

Example

하지만, 지역 변수를 제거하지 않는다.

langTools.completers = []; 

모든 입력을 주시면 고맙겠습니다. 가능한 경우 ace/ext/language_tools.js를 수정하지 않아도되도록 노력하고 있습니다. 그러나이 시점에서도이 옵션을 사용할 수 있습니다.

답변

13

트릭은가 editor.setOptions({enableBasicAutocompletion: true});를 호출하기 전에 langTools.setCompleters([])를 호출하는 것입니다 사용할 수 있습니다. Completer를 설정하거나 추가하기 전에이 옵션을 false으로 명시 적으로 설정하는 것이 좋습니다. language_tools의 소스 코드를 변경할 필요가 없습니다.

예 :

var langTools = ace.require("ace/ext/language_tools"); 
var editor = ace.edit("editor"); 

editor.setTheme("ace/theme/xcode"); 
var TextMode = require("ace/mode/text").Mode; 
editor.getSession().setUseWrapMode(true); 

var qtags = { 
    getCompletions: function(editor, session, pos, prefix, callback) { 
    $.getJSON(jsonURL, 
     function(tagList) { 
     callback(null, tagList.map(function(qtag) { 
      return {name: qtag.name, value: "#"+qtag.name+"() ", meta: "qtag"} 
     })); 
    }) 
    } 
} 

langTools.setCompleters([qtags]); 

editor.setOptions({ 
    enableBasicAutocompletion: true, 
}); 
+0

그래, 전에도 나에게 도움이되었다. 고맙습니다 –

5

당신은 langTools.setCompleters

langTools = require("ace/ext/language_tools") 
langTools.setCompleters([langTools.snippetCompleter, langTools.textCompleter]) 

또는 editor.completers = [langTools.snippetCompleter, langTools.textCompleter, qtags]

+0

나는 것을 시도했다,하지만 내가 필요로하는 것은 그들의 나머지없이 목적으로 만 qtags입니다. 어쨌든, 여전히 에이스/ext/language_tools에서 모든 것을 제거하고 나중에 자신의 javascript에 단지 qtags를 완성 자로 추가함으로써 해결 방법 솔루션을 사용합니다. –

+1

qtags만이'langTools.setCompleters ([qtags])'를 더 쉽게 호출 할 수 있습니다.이 작업을 위해서는 v1.1.8이 필요합니다. –