2011-12-20 6 views
22

Gần đây tôi đã phát triển TWIG. Nó là một ngôn ngữ lập trình html rất đơn giản và mạnh mẽ.Mở rộng định nghĩa ngôn ngữ (để làm nổi bật mã) trong notepad ++

Tôi đã đặt notepad ++ để tự động xử lý tệp .twig dưới dạng html. Điều này là ok, nhưng tôi không nhận được bất kỳ cú pháp làm nổi bật trên chức năng twig của tôi.

Cú pháp twig cực kỳ đơn giản (theo thiết kế) và sẽ dễ dàng thêm vào notepad ++. Vấn đề là, tất cả mọi thứ tôi tìm thấy về chủ đề này hoặc là về việc tạo ra một định nghĩa ngôn ngữ mới (và tôi không muốn tái tạo lại định nghĩa html), hoặc sửa đổi màu cho các bit cú pháp hiện có trong một ngôn ngữ.

Có cách nào để sao chép định nghĩa ngôn ngữ và sau đó sửa đổi nó trong notepad ++ không? Nếu không, có cách nào trong notepad ++ để thêm các bit cú pháp phụ vào một định nghĩa ngôn ngữ hiện có không?

chỉnh sửa

TWIG là một ngôn ngữ html template/động cơ. chúng cú pháp cho nó cũng giống như html, với việc bổ sung một vài thẻ mở/đóng (cụ thể là {%%}, {{}} và {# #}) cho các câu lệnh điều khiển. bạn có thể đọc thêm về nó tại the twig website

chỉnh sửa # 2

Dựa trên câu trả lời từ Brian Deragon, tôi đã tiến hành điều tra 3 tập tin. Heres những gì tôi đã tìm ra/thực hiện cho đến nay:

  • \ plugins \ APIs \ html.xml - Dường như định nghĩa từ khóa, để tự động hoàn thành. Tôi đã tạo một bản sao của tệp có tên là twig.xml
  • langs.model.xml - Một lần nữa, một danh sách từ khóa, với tất cả các ngôn ngữ trong 1 tệp XML. Tôi đã sao chép đối tượng HTML và thay thế tên và tham số ext bằng cành cây.
  • stylers.model.xml - Có danh sách các mục khác nhau và thông tin kiểu (màu, màu bg, phông chữ, v.v ...) cho mỗi mục. Tôi đã sao chép phần HTML và thay đổi tên và tham số desc thành cành.

Những thay đổi đó được thực hiện, tôi đã mở một tệp twig trong notepad ++, hy vọng sẽ thấy nó được liệt kê trong tùy chọn ngôn ngữ. Đáng buồn thay, nó đã không xuất hiện, dẫn tôi đến tin rằng một số điều này là khó mã hóa (và vì vậy những gì tôi muốn có thể không được có thể).

Trình tạo kiểu tóc.model.xml là điều thú vị. Mỗi mục có một loạt mục, được xác định như sau:

<LexerType name="twig" desc="TWIG" ext=""> 
    <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> 
    <WordsStyle name="COMMENT" styleID="9" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> 
    <WordsStyle name="TAG" styleID="1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> 
    <WordsStyle name="TAGEND" styleID="11" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> 
    ... 
</LexerType> 

Đó dường như là nơi các kiểu được xác định cho các thành phần khác nhau. Tôi không thể tìm thấy bất cứ nơi nào mà các yếu tố được xác định mặc dù. langs.model.xml có định nghĩa cho chú thích bắt đầu/kết thúc, nhưng không có đối với bất kỳ dấu tách nào khác. những gì tôi thực sự cần là một nơi để nói notepad ++ để xử lý {} như một dấu phân cách, giống như nó cho <> bây giờ.

chỉnh sửa # 3

Tôi cũng nhìn vào danh sách các người dùng định nghĩa ngôn ngữ cho notepad ++ http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files Người dùng xác định ngôn ngữ sử dụng một động cơ khác nhau, nhưng tôi có thể có thể tìm thấy một trong đó tương tự như html đủ để tôi có thể điều chỉnh nó.

Trả lời

10

tôi đã thực hiện một Highlighter cho nó ở đây: https://github.com/Banane9/notepadplusplus-twig

+0

Không chắc chắn tôi là một fan hâm mộ của bảng màu - Nhưng nó chắc chắn là một khởi đầu tốt. Cảm ơn! – MrGlass

+0

@MrGlass, chỉnh sửa XML plugin nếu bạn không thích màu sắc. – Eccentropy

-1

có thể trùng lặp của bài viết này: https://superuser.com/questions/40876/assigning-custom-extensions-to-a-languages-syntax-highlighting-in-notepad

Tất cả bạn cần làm là thêm phần mở rộng tùy chỉnh của bạn trong Settings-> Phong cách Configurator

Bấm vào HTML và thêm phần mở rộng của bạn trong hộp tài Ext.

EDIT: Nếu bạn muốn thêm nhiều quy tắc hơn cho ngôn ngữ của mình, bạn có thể phải thêm một XML khác trong notepad ++ -> plugins-> APIs Nếu bạn nghĩ nó giống HTML, chỉ cần sao chép qua html.xml và lưu .xml Thêm các quy tắc khác vào tệp XML này

+0

tôi đã nói trong câu hỏi của tôi mà tôi đã làm điều này (tôi đặt nó để điều trị .twig như html). Những gì tôi muốn làm là thêm mã nổi bật thêm vào định nghĩa cho các thẻ TWIG. – MrGlass

+1

Mỗi khi tôi cố chỉnh sửa tập tin đó, tôi chưa thấy kết quả nào. hoặc là tôi gặp lỗi hoặc không có gì xảy ra. Bạn có thể đăng một ví dụ? Tôi sẽ cập nhật bài viết của mình với một chút thông tin về TWIG – MrGlass

14

Bạn sẽ có thể chỉ sao chép và chỉnh sửa tệp định nghĩa XML (html.xml); miễn là bạn không cần công cụ vượt quá các khái niệm cơ bản như mã gấp, màu tiên tiến dựa trên khối xử lý trường hợp hoặc nhiều điều kiện, định dạng riêng cho ký tự chính, màu nhãn, nhận xét dựa trên xml, trộn ngôn ngữ (tô màu tập lệnh nhúng), hỗ trợ tô màu các loại vịt, v.v. Nếu bạn cần bất kỳ thứ gì "nâng cao", bạn cần viết lexer của riêng mình, trong trường hợp này, hầu hết các trường hợp dưới đây sẽ được áp dụng.

Thậm chí, các mẫu tôi liệt kê bên dưới sẽ cung cấp cho bạn phần khởi đầu về tệp định nghĩa ngôn ngữ của riêng bạn.


Theo như tôi biết, Notepad ++ sử dụng Scintilla lexers để xác định quy tắc mã của nó.

Bạn sẽ phải tạo lexer của riêng mình, nhưng ... HTML Scintilla Lexer đã được bao gồm trong Scintilla source code.

Sau đó, bạn sẽ chèn lexer tùy chỉnh của mình bằng cách sử dụng plug-in, như Gary's Lua Highlighter Plugin.

Tài nguyên cho việc xây dựng một lexer tùy chỉnh:

Điều đó đang được nói, Geany rất giống với Notepad ++ (dựa tắt động cơ tương tự, Scintilla), vì vậy bạn có thể muốn xem cho dù nó đã được thực hiện cho Geany, hay liệu có một dự án mã nguồn mở cho nó trong các tác phẩm hay không. Điều này ít nhất sẽ cung cấp cho bạn một khởi đầu.

Nếu điều đó không giúp, có IDE và biên tập viên với sự hỗ trợ Twig built-in, như:

GEdit đã xuất bản thei r Định nghĩa XML của ngôn ngữ here, có thể giúp tham chiếu khi tạo tệp định nghĩa của riêng bạn hoặc từ khóa; cũng có một mẫu khác được xuất bản bởi những người từ Twig here có thể có một số trợ giúp.

Sau đây là các Notepad tốt nhất ++ - hướng dẫn cụ thể cho việc tạo tùy chỉnh lexer của/User Defined Ngôn ngữ tôi có thể tìm thấy:

Nếu bạn muốn để có được dũng cảm và xây dựng của bạn riêng của Scintilla dll, tham khảo các chủ đề này, để xem một người đã làm việc và hiển thị trong danh sách ngôn ngữ (sử dụng thông điệp chủ đề trước/tiếp theo để xem câu trả lời hoặc chỉ mục chủ đề; tôi sn't là tốt nhất)

Hy vọng rằng sẽ giúp hoặc giúp bạn ít nhất hơn một khởi đầu!

+0

Điều đó chắc chắn sẽ mang tính thông tin, digg vào một chút. – MrGlass

+0

Nếu bạn đang tập trung vào kết hợp PHP/Twig, tôi sẽ cung cấp +1 cho PhpStorm một lần nữa, đó là một IDE trả tiền, nhưng chi phí thấp, nó hỗ trợ cho PHP mạnh mẽ ra khỏi hộp và hỗ trợ Twig out của hộp quá, không có mẫu, không có tệp xml, không có định nghĩa ngôn ngữ, tải xuống bổ sung, plugin, không có gì, thẳng ra khỏi hộp, hỗ trợ đầy đủ cành. 99 $ cho một nhà phát triển duy nhất, gia hạn 49 đô la và thường là 29,99 đô la đặc biệt gia hạn. –

+0

Ứng dụng có hỗ trợ SFTP không? tôi thực hiện tất cả các thay đổi của mình trực tiếp trên máy chủ dev – MrGlass