Czy mogę ustawić domyślne podświetlanie składni w Gedit?

24

Dopóki nie zapiszesz dokumentu w gedit, podświetlanie składni jest wyłączone. Są oczywiście dobre powody - ludzie mogą się zdezorientować, jeśli niektóre słowa losowo pojawiają się w różnych kolorach. Ale do moich celów używam gedit prawie wyłącznie do edycji HTML.

Wiele razy wklejam fragmenty kodu do nowego dokumentu gedit w celu szybkiej edycji i muszę ręcznie ustawić kolorowanie składni na HTML. Innym razem otwieram dokumenty ColdFusion (.cfm), których gedit najwyraźniej nie rozpoznaje i ponownie muszę ręcznie ustawić kolor na HTML. Obie te niedogodności zostałyby naprawione, gdybym mógł znaleźć sposób, aby powiedzieć geditowi, aby automatycznie używał podświetlania składni HTML dla nowych dokumentów i dokumentów bez rozpoznanego rozszerzenia pliku. czy to możliwe?

Michael Martin-Smucker
źródło
Zastanawiałem się również, czy mogę przełączać się między różnymi językami bez konieczności zapisywania pliku, tak jak w SciTE. Oszczędziłby mi czas.
nickguletskii

Odpowiedzi:

21

Można przynajmniej rozszerzeń plików dodatek w składni html kolorowania schemat edytując html.langw /usr/share/gtksourceview-2.0/language-specs/jako administrator. Powiedzmy, że chcesz dodać wyróżnianie składni HTML do plików cfm, zmieniłbyś to

<property name="globs">*.html;*.htm</property>

(domyślnie html.lang) w to

<property name="globs">*.html;*.htm;*.cfm</property>

jdup
źródło
Dzięki! To działało, aby gedit dodał kolorowanie składni do moich plików ColdFusion.
Michael Martin-Smucker,
2
Chciałbym dodać kilka dodatkowych głosów do tej odpowiedzi. Właśnie użyłem tej odpowiedzi ponownie, aby podświetlić CSS w plikach LESS i SASS.
Michael Martin-Smucker
1
I podoba mi się pomysł powielanie i modyfikowanie .langw katalogu użytkownika sobie
jozxyqk
1
@michaelms Dodałem komentarz do postu i komentarza, ponieważ dodałem także wyróżnianie składni CSS do moich plików LESS w gedit, edytując sudo nano /usr/share/gtksourceview-3.0/language-specs/css.lang i dodając *. mniej i * .sass do własności globs: <property name="globs">*.css;*.CSSL;*.less;*.sass</property>
Link Swanson
Może być konieczne zmodyfikowanie ścieżki dla różnych wersji gtksourceview. Możesz również skopiować plik do folderu profilu, aby zapobiec jego zastąpieniu. Zobacz odpowiedź 5chdn poniżej ( askubuntu.com/a/310553/37574 )
mwfearnley,
14

Możesz utworzyć własne pliki definicji języka w swoim $HOMEkatalogu. Edycja specyfikacji języka gtk nie jest zalecana, ponieważ zostanie zastąpiona przez każdą aktualizację gtksourceview.

Skopiuj plik specyfikacji języka do katalogu domowego:

$ cp /usr/share/gtksourceview-3.0/language-specs/html.lang ~/.local/share/gtksourceview-3.0/language-specs/

Następnie dodaj niestandardowe formaty plików, takie jak .cfmdo listy rozszerzeń:

<property name="globs">*.html;*.htm;*.cfm</property>

W ten sposób geditużyjesz automatycznego podświetlania składni w niestandardowych formatach plików, a aktualizacje gtk nie zastąpią twoich niestandardowych zmian.

Afr
źródło
1
Jest to lepsza opcja niż wybrana odpowiedź. Jeśli to możliwe, zastosuj zmiany lokalnie.
nightcod3r
Ale w jaki sposób gedut rozpozna skopiowany plik w $ HOME? Jak powiedzieć geditowi, że należy przejrzeć plik .lang w $ HOME ??? Z góry dziękuję.
Srikrishnan
8

Nie jest to możliwe bez modyfikacji kodu źródłowego Gedit lub napisania wtyczki w celu zastąpienia wartości domyślnej. Domyślny schemat podświetlania składni to zakodowany na stałe .

ændrük
źródło
Dzięki za wskazanie mi właściwego kierunku. Sklonowałem najnowszą gedit i zacząłem grzebać, zanim zdałem sobie sprawę, że gedit zależy teraz od gtk + 3. To może zmienić się w znacznie większy bałagan, niż się spodziewałem. ;-)
Michael Martin-Smucker
Jeszcze jedno: jakiś pomysł, jakie wartości languagesą prawidłowe? Spojrzałem przez źródła gediti gtksourceviewnie mogłem znaleźć niczego, co wyglądało nazw językowych (ale moje umiejętności C są bardzo nieistniejące.)
Michael Martin-Smucker
1
@MichaelMS Nie jestem pewien, ale jeśli planujesz zainwestować jakiś wysiłek w rozwiązanie, szczerze myślę, że najłatwiej jest po prostu zaimplementować set_languagewywołanie w przykładowej wtyczce Python . Prawdopodobnie możesz użyć, get_languageaby ustalić właściwą wartość dla podświetlenia źródła HTML.
ændrük