2012-01-20 69 views
6

Tôi đang sử dụng độc lập làm nổi bật (không phải là chủ biên), một cái gì đó như thế này: http://codemirror.net/demo/runmode.htmlCodeMirror - ngôn ngữ tự động phát hiện

Làm thế nào tôi có thể tự động phát hiện ngôn ngữ để sử dụng khi chạy highlighter?

Có một bản demo chế độ autochanging đây: http://codemirror.net/demo/changemode.html

Nhưng tôi không biết làm thế nào tôi có thể thích ứng này để làm việc với Codemirror.runMode(). Tôi muốn làm nổi bật toàn bộ khối mã bằng cách sử dụng lược đồ tự động phát hiện.

Trả lời

3

Các "changemode" demo chỉ có thể phân biệt giữa "Đề án" ngôn ngữ lập trình và "mọi thứ khác", xem việc thực hiện

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

Vì vậy, điều này sẽ không làm việc để tự động phát hiện ngôn ngữ lập trình khác, và như các trang demo cho biết, ngay cả khi phát hiện sơ đồ nó cũng rất thô lỗ. Thật không may, việc phát hiện tự động một phạm vi lớn các ngôn ngữ lập trình từ một đoạn mã nguồn (đối với các đoạn mã nhỏ, các ngôn ngữ lập trình khác nhau thậm chí có thể sử dụng cú pháp chính xác) cũng không dễ dàng. Tuy nhiên, cách tiếp cận hợp lý được đề xuất trong Detecting programming language from a snippet.

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