2010-06-29 15 views
5

Tôi đang cố gắng mở rộng một số đánh dấu CSS trong Textmate. Cách tiếp cận của tôi giống như vậy ...Làm nổi bật cú pháp văn bản, mở rộng làm nổi bật từ một ngôn ngữ khác

{ 
    .... 
    patterns = (
     { include = 'source.css'; }, 
     { 
      name = 'support.function'; 
      match = '\..*\);'; 
     }, 
    ); 
} 

Vấn đề là "include = 'source.css';". Nếu tôi loại bỏ dòng đó. Trình kết hợp tùy chỉnh của tôi truy cập và áp dụng đánh dấu được mong đợi. Nhưng sau đó tôi mất tất cả các điểm nhấn css được xác định trước mà tôi muốn.

Tôi đang bối rối về cách tôi có thể ghi đè lên đánh dấu css hiện có mà tôi đang đưa vào. Ý tưởng?

Trả lời

4

Tôi gặp sự cố tương tự. Tôi đập đầu vào nó, sau đó một người nào đó trong kênh IRC TextMate đặt tôi thẳng: vì một lý do nào đó (mà tôi quên) bạn cần phải bao gồm ngữ pháp ngôn ngữ của mình.

phần mô hình của tôi bây giờ trông giống như

patterns = (
{ include = 'source.ruby'; }, 
{ include = '$self'; }, 
); 

Để thêm thông tin cho ví dụ này, đây là ngữ pháp ngôn ngữ của tôi cho bó tôi đã tạo ra (trong một phần của tập tin tôi đã quan tâm, tất cả mọi thứ đang ở trong phạm vi meta.rails.model. có lẽ bạn không có trong bó CSS ​​của bạn.

patterns = (
    { name = 'meta.rails.model'; 
     comment = "Uses lookahead to match classes that (may) inherit from ActiveRecord::Base; includes 'source.ruby' to avoid infinite recursion"; 
     begin = '(^\s*)(?=class\s+.+ActiveRecord::Base)'; 
     end = '^\1(?=end)\b'; 
     patterns = (
      { include = 'source.ruby'; }, 
      { include = '$self'; }, 
     ); 
    }, 
    { name = 'source.ruby.rails.aasm.event'; 
     match = '(aasm_event\W*:\w+)'; 
     captures = { 1 = { name = 'keyword.other.context.ruby.rails.aasm.event'; }; }; 
    }, 
    { include = 'source.ruby.rails'; }, 
); 

}

Nhưng bạn thấy rằng khai báo $ tự kéo các mẫu khác vào mẫu meta.rails.model (tức là, tôi nghĩ, tại sao điều đó lại quan trọng).

+1

Hoàn hảo, chính xác những gì tôi đang tìm kiếm. –