2013-04-09 19 views
12

Tôi đang làm việc trên một dự án sử dụng phụ trợ java/scala (Lift, chính xác, mặc dù điều đó không ảnh hưởng đến câu hỏi này), và là một phần của giao diện người dùng, chúng tôi sử dụng Ace Editor. Tôi đã googling một lúc và vẫn chưa tìm ra câu trả lời cho câu hỏi này:Cách tự động chọn "chế độ" cho Ace Editor, được cung cấp phần mở rộng tập tin

Cho một phần mở rộng tập tin (ví dụ js, c, cpp, h, java, rb, vv), làm thế nào tôi có thể tự động chọn một Ace "chế độ" cho ngôn ngữ thích hợp?

Tôi hy vọng tránh tạo bản đồ theo cách thủ công, a la js -> javascript, c -> c_cpp, java -> java. Có một thư viện java/scala có sẵn cho điều này? Hay tốt hơn, Ace có chức năng này được xây dựng bằng cách nào đó không?

Trả lời

25

Ace hiện cung cấp tiện ích mở rộng mô hình để thực hiện việc này.

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". 

Lưu ý rằng nếu bạn đang sử dụng phiên bản prebuilt của ace bạn cần bao gồm ace.jsext-modelist.js tập tin trong trang của bạn.
Với phiên bản nguồn, bạn cần thay thế ace.require bằng require và require.js sẽ tự động tải tất cả các phụ thuộc.

Xem https://github.com/ajaxorg/ace/blob/master/demo/modelist.htmlhttps://github.com/ajaxorg/ace-builds/blob/master/demo/modelist.html cho ví dụ về cách sử dụng nó

+0

Được này sáp nhập? Làm thế nào để sử dụng nó ngay bây giờ? –

+0

Cập nhật câu trả lời để bao gồm các liên kết đến các trang demo ace. –

+1

Cảm ơn bạn! và đây là upvote của bạn. Đã thêm lệnh chính xác vào câu trả lời để dễ tìm hơn. –