Демонстрация "changemode" может различать только язык программирования "Scheme" и "все остальное", см. Реализацию
function looksLikeScheme(code) {
return !/^\s*\(\s*function\b/.test(code) && /^\s*[;\(]/.test(code);
}
Так что это не сработает для автоматического определения других языков программирования, и, как говорится на демонстрационных страницах, даже для обнаружения Scheme это очень грубо.
К сожалению, автоопределение большого количества языков программирования из фрагмента исходного кода нелегко (для небольших фрагментов разные языки программирования могут даже использовать один и тот же синтаксис). Однако разумный подход предлагается в Определение языка программирования из фрагмента .