Как автоматически выбрать "режим" для редактора Ace, учитывая расширение файла

Я работаю над проектом, который использует бэкэнд java/ scala (Lift, если быть точным, хотя это не должно влиять на этот вопрос), а в качестве части интерфейса мы используем Ace Editor. Я искал время для поиска и еще не нашел ответа на этот вопрос:

Учитывая расширение файла (например, js, c, cpp, h, java, rb и т.д.), как я могу автоматически выбрать режим Ace для соответствующего языка

Я надеюсь избежать создания карты вручную, a la js -> javascript, c -> c_cpp, java -> java. Есть ли библиотека java/scala для этого? Или еще лучше, у Ace есть такая функциональность, построенная каким-то образом?

Ответ 1

Ace теперь предоставляет расширение моделистов для этого.

var modelist = ace.require("ace/ext/modelist")
var filePath = "blahblah/weee/some.js"
var mode = modelist.getModeForPath(filePath).mode
editor.session.setMode(mode) // mode now contains "ace/mode/javascript".

Обратите внимание, что если вы используете предварительно настроенную версию туза, вам нужно включить ace.js и ext-modelist.js файлы на свою страницу.
С исходной версией вам нужно заменить ace.require на require, а require.js автоматически загрузит все зависимости.

См. https://github.com/ajaxorg/ace/blob/master/demo/modelist.html и https://github.com/ajaxorg/ace-builds/blob/master/demo/modelist.html для примеры того, как его использовать