9

Tôi đang sử dụng Trình chỉnh sửa ACE trong một tiện ích của Chrome. Tôi đang sử dụng tính năng Tự động hoàn thành của ACE nhưng tôi muốn có thể xác định hoàn toàn danh sách các chuỗi tĩnh để sử dụng cho tự động điền, thay vì bất kỳ chuỗi hoặc đoạn nội bộ nào. (Trong tương lai tôi có thể sử dụng một cái gì đó tinh vi hơn một danh sách tĩnh, nhưng bây giờ tĩnh là tốt.)Trình chỉnh sửa ACE Tự động hoàn thành - các chuỗi tùy chỉnh

Bất cứ ai có thể cung cấp một số hướng dẫn về cách thực hiện điều này? Tôi đã bật tự động hoàn thành và đoạn trích, nhưng tôi đang gặp sự cố khi xác định danh sách chuỗi tĩnh để sử dụng.

Tất cả tôi có cho đến nay là:

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 
}); 

Trả lời

17

bạn cần phải thêm một Completer như thế này

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

Điều đó thực sự kiểm tra/sử dụng tiền tố dù sao đi nữa? Ma thuật xảy ra trong 'callback'? Hoặc nó chỉ đơn giản là đổ toàn bộ danh sách từ bất kể tiền tố đã nhập? – Xan

+1

Trình tự động trả lời tự động Noramlly ace lọc danh sách sau đó, https://github.com/ajaxorg/ace/blob/v1.1.9/lib/ace/autocomplete.js#L427. Tiền tố được chuyển cho các bộ hoàn chỉnh phức tạp hơn cần phải cung cấp các lần hoàn thành khác nhau dựa trên ngữ cảnh. –

+0

Cảm ơn bạn đã làm rõ. Thật đáng tiếc điều này dường như không được ghi chép ở bất cứ đâu. – Xan

Các vấn đề liên quan