CodeMirror - автоопределение языка - PullRequest
7 голосов
/ 20 января 2012

Я использую автономную подсветку (не редактор), что-то вроде этого: http://codemirror.net/demo/runmode.html

Как я могу автоматически определить язык, используемый при работе маркера?

Здесь демо с автоматическим изменением режима: http://codemirror.net/demo/changemode.html

Но я не знаю, как мне адаптировать это для работы с Codemirror.runMode (). Я хочу выделить весь блок кода, используя автоматически обнаруженную схему.

1 Ответ

4 голосов
/ 20 января 2012

Демонстрация "changemode" может различать только язык программирования "Scheme" и "все остальное", см. Реализацию

function looksLikeScheme(code) {
    return !/^\s*\(\s*function\b/.test(code) && /^\s*[;\(]/.test(code);
}

Так что это не сработает для автоматического определения других языков программирования, и, как говорится на демонстрационных страницах, даже для обнаружения Scheme это очень грубо.

К сожалению, автоопределение большого количества языков программирования из фрагмента исходного кода нелегко (для небольших фрагментов разные языки программирования могут даже использовать один и тот же синтаксис). Однако разумный подход предлагается в Определение языка программирования из фрагмента .

...