Расширенное автозаполнение в ACE Editor

Я хочу добавить сложное завершение кода в редактор ACE.

Например, если я набрал следующий код JavaScript в ACE...

function Car() {}

Car.prototype = {
    model : '',
    maxSpeed : 0
};

var bugatti = new Car();
bugatti.

... при нажатии на точку после bugatti появятся варианты "model" и "maxSpeed".

Я знаю, что в ACE есть новая функция «enableBasicAutocompletion», но, похоже, ее очень не хватает. Я надеюсь, что автозаполнение будет основано на коде, введенном в редакторе ACE, и появится, просто нажав на . ключ. Предложения автозаполнения будут свойствами этого объекта.

Самое близкое, что я могу найти, это это видео на YouTube: http://youtu.be/CSEDIhT6bXU

На 1:45 вы можете видеть, что автозаполнение основано на пользовательском JavaScript, но нет демонстрации или объяснения того, как это было сделано.


person gavanon    schedule 21.01.2015    source источник


Ответы (2)


Проект TernJS — это то, что вам нужно.

Вот пример интеграции с ACE.

person Doug    schedule 17.05.2015

Да, это часть Ace в наши дни. Хотя я не нашел его документально в API, а нашел через жесткий поиск в сети: добавьте ace/ext-language_tools.js в свой html. Точечная форма пока не работает, поэтому вам, возможно, придется ввести для этого ctrl-space или alt-space (хотя если вы напишите немного свойства/метода, который вы хотите вызвать, он должен отображаться), но стандартный синтаксис, такой как как функция записи, теперь будет отображаться. Затем в вашем js:

var editor = ace.edit("editor");

ace.require("ace/ext/language_tools");
editor.setOptions({
    enableBasicAutocompletion: true,
    enableSnippets: true,
    enableLiveAutocompletion: true
});
person mesosteros    schedule 23.02.2015