Używam emacs przez długi czas, ale nie nadążam za wieloma funkcjami. Jednym z nich jest speedbar, który właśnie pokrótce zbadałem. Kolejna to imenu. Obie te zostały wymienione w in-emacs-how-can-i-jump-between-functions-in-the-current-file?W Emacs, jak mogę używać imenu bardziej sensownie z C#?
Korzystanie imenu, mogę przejść do poszczególnych metod w module pracuję. Ale istnieje hierarchia parse że muszę negocjować zanim się opcja do wyboru (z autouzupełnianie) nazwa metody.
To działa tak. Piszę: M-x imenu
, a następnie wybieram Using
lub Types
. Wybór "Użycie" pozwala mi przejść do dowolnej z instrukcji użycia na najwyższym poziomie pliku C# (coś w rodzaju instrukcji importu w module Java, dla tych z was, którzy nie znają C#). Niezbyt pomocna. Wybieram Typy. Następnie muszę wybrać przestrzeń nazw i klasę, nawet jeśli w module źródłowym jest tylko jeden z nich. W tym momencie mogę wybierać między zmiennymi, typami i metodami. Jeśli wybiorę metody, otrzymam wreszcie listę metod do wyboru. Hierarchia, którą przechodzę, wygląda tak:
Using
Types
Namespace
Class
Types
Variables
Methods
method names
Dopiero po osiągnięciu piątego poziomu wybieram opcję, do której naprawdę chcę przejść: konkretną metodę.
Imenu wydaje się być inteligentny w stosunku do modułu źródłowego, ale jest trudny w użyciu. Czy robię to źle?
Byłoby o wiele więcej pracy, ale jeśli poważnie myślisz o poprawie obsługi Cacu dla Emacsa (która wydaje się odstręczająco potrzebna), najbardziej kompletnym i skutecznym sposobem na to jest Semantic (http: // cedet .sourceforge.net/semantic.shtml). Wymaga to napisania pełnego analizatora składni, ale daje korzyści z posiadania takiego parsera. Jeśli szukasz czegoś szybkiego, to jednak przesada. – haxney
Twoje pytanie zainspirowało mnie do wysłania łatki podobnego problemu w trybie makefile: miała ona dwa menu najwyższego poziomu, "Zależności" i "Przypisania makr", ale z moją łatką zostały scalone w płaską listę (Właśnie zastąpiłem ciągi nagłówków zero). Zrobić to samo dla trybu C# nie powinno być trudne. – legoscia
Moja łatka: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5582 – legoscia