2012-11-09 8 views
10

Na przykład, chciałbym podkreślić @param, @type i @return (tj. Deklaracje epitext) w moich doctrings Pythona. Zorientowałem się, jak to zrobić, po prostu edytując Python/Python.tmLanguage; jednak naprawdę chciałbym umieścić to w swoim pliku, z kilku powodów:Jak dodawać funkcje do definicji składni w Sublime Text bez edytowania?

  1. ja nie zawsze chcą zastosować tę podświetlanie. To tylko dla projektów, które używają epydoc jako narzędzia do dokumentacji; w innych projektach chciałbym zamiast tego podkreślić reStructuredText.
  2. Po aktualizacji Sublime Text chciałbym mieć własną składnię jako nakładkę na dołączone funkcje. istnieje kilka funkcji Pythona, które autor Sublime może włączyć do przyszłych wersji i nie chcę ręcznie wymyślać tego, co zmieniłem za każdym razem, gdy aktualizacja modyfikuje podstawową definicję składni Pythona.
  3. Posiadam własną konfigurację edytora w kontroli wersji, ale chcę, aby była to moja własna oryginalna treść; Nie chcę być obciążony koniecznością noszenia kopii (być może prawnie zastrzeżonym? Nie wiem, nie wydaje się, że posiadam niezależną licencję) definicji składni, które pochodzą z Sublime.

Czy istnieje sposób na umieszczenie reguł podświetlania w oddzielnym pliku, być może do zastosowania tylko w określonym zakresie?

+1

Naprawdę chciałbym zobaczyć twój ostateczny plik składni, ponieważ chcę zrobić coś bardzo podobnego w ST3. Proszę rozważ to opublikowanie. Dzięki. – aliteralmind

Odpowiedz

7

Brzmi tak, jakbyś chciał utworzyć własny plik składni, dziedziczy po pliku składni Pythona (source.python) i wprowadzać tam swoje zmiany i dostosowania. Sublime Text 2 używa .tmLanguage format for syntax files, który jest nieco skomplikowany, ale na szczęście większość prac została już wykonana dla ciebie, po prostu dziedzicząc z source.python.

To, co chcesz zrobić, to ustawić wzór regex, aby dopasować podciągi, które chcesz podświetlić i nadać temu wzorowi nazwę; podobnie jak punctuation.definition.comment.epydoc, zgodnie z konwencją podaną w Java/JavaDoc.tmLanguage. Następnie sprawdź plik schematu kolorów (zakończony .tmTheme) i upewnij się, że istnieją ustawienia dla wybranego zakresu - lub dla jednego z jego rodziców, ponieważ ST2 powinien używać odpowiednich reguł ustalania zakresu dla tego rodzaju rzeczy.

Aby użyć utworzonego pliku składni, wstaw go do Packages/User (aby ST2 nie zastępował go podczas aktualizacji), otwórz plik Python w edytorze, a następnie wybierz nową składnię z listy rozwijanej w w prawym dolnym rogu okna. Jeśli wszystko poprawnie skonfigurujesz, ciągi epdoków powinny zmienić się na dowolny kolor ustawiony w twoim schemacie kolorów.

Powodzenia! I umieść link gdzieś, gdy masz działający plik składni, aby inni mogli go zobaczyć i używać!

+7

To był kawałek "dziedziczenia z' source.python' ", którego mi brakowało. Być nieco bardziej oczywistym dla potomności - nie jestem pewien, czy twoja odpowiedź nabrałaby dla mnie sensu, gdybym nie znał już formatu '.tmLanguage' - oznacza to umieszczenie źródła' {"include": ". python "} w tablicy' pattern 'słownika języka root. Co ważne, wszystkie inne reguły muszą nadejść * przed * tą zasadą "dziedziczenia", w przeciwnym razie nie zostaną najpierw dopasowane. – Glyph

+5

Glyph, czy nadal masz plik składni? Jeśli tak, czy mógłbyś zamieścić link do niego, aby zobaczyć, co zrobiłeś, aby go rozwiązać? Dzięki. –