9

Używam edytora ACE w rozszerzeniu Chrome. Używam funkcji Autouzupełniania ACE, ale chcę mieć możliwość pełnego zdefiniowania listy ciągów statycznych, które będą używane w autouzupełnianiu, zamiast lokalnych ciągów lub fragmentów. (W przyszłości mogę użyć czegoś bardziej wyrafinowanego niż statyczna lista, ale na razie statyczne jest w porządku.)Autouzupełnianie edytora ACE - niestandardowe ciągi znaków

Czy ktoś może podać jakieś instrukcje, jak to osiągnąć? Mam włączoną funkcję autouzupełniania i fragmenty, ale mam problem z definicją statycznej listy ciągów znaków do użycia.

Wszystko mam tak daleko jest:

var editor = ace.edit('propertiesText'); 
editor.getSession().setMode('ace/mode/properties'); 
var langTools = ace.require('ace/ext/language_tools'); 

// code here to define custom strings? 

editor.setOptions({ 
    enableBasicAutocompletion: true 
}); 

Odpowiedz

17

trzeba dodać Completer jak ten

var staticWordCompleter = { 
    getCompletions: function(editor, session, pos, prefix, callback) { 
     var wordList = ["foo", "bar", "baz"]; 
     callback(null, wordList.map(function(word) { 
      return { 
       caption: word, 
       value: word, 
       meta: "static" 
      }; 
     })); 

    } 
} 

langTools.setCompleters([staticWordCompleter]) 
// or 
editor.completers = [staticWordCompleter] 
+0

Czy to rzeczywiście sprawdzić/użyć prefiksu byle jak? Magia dzieje się w "callback"? Czy może po prostu zrzucić całą listę słów niezależnie od wprowadzonego prefiksu? – Xan

+1

Autokompleter ery Noramlly filtruje listę później, https://github.com/ajaxorg/ace/blob/v1.1.9/lib/ace/autocomplete.js#L427. Prefiks jest przekazywany dla bardziej złożonych programów do wypełniania, które wymagają różnych uzupełnień w zależności od kontekstu. –

+0

Dzięki za wyjaśnienia. Szkoda, że ​​nie jest to udokumentowane nigdzie. – Xan

Powiązane problemy