6

Próbuję napisać nowy tryb emacs dla nowego szablonu języka c-like, który muszę użyć do niektórych badań akademickich.Tryb Emacsa dla języka w stylu c

Chcę kod być kolorowe i wcięte jak w c-mode, z następującymi wyjątkami:

  • The „%” nie jest używany jako operator, ale jako pierwszy znak w niektórych konkretnych słów kluczowych (na przykład: "% p", "% akcji" itp.)
  • Linie kodu nie kończą się średnikiem.

Czy można utworzyć tryb pochodny (z trybu c) i ustawić go tak, aby ignorował pierwotne cele "%" i ";"? Czy możliwe jest wykonanie funkcji "automatycznego wcięcia po naciśnięciu RET" bez ";"?

Czy istnieją podobne tryby dla podobnych języków (z nawiasami "{}", ale bez średników), które mógłbym spróbować naprawić?

Czy powinienem spróbować napisać główny tryb od podstaw?

Myślałem o poprawieniu trybu R z http://ess.r-project.org/, ale ten tryb nie obsługuje komentarzy w formularzu "/ * comment * /".

Najważniejszą funkcją, której szukam, jest wcięcie nawiasów, czyli wcięcie kodu wewnątrz bloku "{}" po naciśnięciu RET (i bez dodatkowego wcięcia po liniach, które nie kończą się na ";"). Pomogą w tym również częściowe rozwiązania.

Odpowiedz

2

Jeśli nie masz nic przeciwko czemuś naprawdę proste, możesz spojrzeć na Gosu mode. Gosu jest językiem, który ma nawiasy klamrowe i nie ma średników, więc powinieneś być ustawiony na minimum. Używa również tej samej składni komentarza, co C.

Wdrożenie tego trybu jest proste i oparte na trybie ogólnym, więc modyfikowanie go tak, aby działało tak, jak chcesz, powinno być łatwe. Jest to , a nie w oparciu o tryb C.

To właśnie stworzyłem tryb dla języka, nad którym pracowałem dla mojej klasy kompilatorów, i było to naprawdę łatwe, nawet przy ograniczonym doświadczeniu. Z drugiej strony wcięcie jest dość proste - działa dla większości kodów, ale nie jest tak kompletne, jak w trybie C.

+0

Zamiast używać trybu Gosu, użyłem trybu [Google Go] (http://golang.org) i załatałem go. – Oren

3

Ogólnie rzecz biorąc, tryb CC został rozszerzony i uogólniony w miarę upływu czasu, aby pomieścić coraz więcej języków, a najnowszy tryb CC powinien dobrze izolować ogólny kod od kodu specyficznego dla języka. Spójrz więc na niektóre z głównych trybów, które używają trybu CC (na przykład tryb awk), i skontaktuj się z opiekunem w trybie CC, który będzie w stanie pomóc Ci znaleźć właściwe rozwiązanie.

+0

Próbowałem łatanie trybu CC zgodnie z trybem awk (w którym wiersze nie muszą kończyć się znakiem ";"), ale było to zbyt wiele kodu, aby je zrozumieć i naprawić. – Oren