2012-04-07 10 views
4

Angenommen, ich eine Datei mit den folgenden Markierungen (oder nennen es Tags):Emacs: Gibt es eine Möglichkeit, eine Liste von benutzerdefinierten Tags zu erhalten - und durch sie navigieren?

test.el:

;; ===== 
;; gnus: 

some code here 

;; ==== 
;; ECB: 

some code here 

;; ===== 
;; code: 

some code here 

(in elisp)

test.py:

# ======== 
# imports: 

some code here 

# ===== 
# defs: 

some code here 

# ===== 
# args: 

some code here 

(in Python)

Also ich hätte gerne einen Puffer, der li St solche Tags (oder nennen Sie es Marken) für einen bestimmten Puffer/Datei. Und es sollte auch die Navigation durch diese Tags in irgendeiner Weise erleichtern - mit einer Maus oder Tastenbindungen (etwas ähnlich der table of contents Funktionalität von rest-mode).

Ich wollte dieses Problem lösen, indem ich einige Etags-Funktion änderte. Aber konnte keinen finden (das wäre eine Lösung, da EZB Etags schön in einem Puffer zeigt - so wie ich es wollte).

Eine andere Lösung könnte Lesezeichen verwendet haben - Lesezeichen sind jedoch nicht dateispezifisch. Sie sind systemspezifisch. Das ist in Bookmark-Liste Sie haben alle Lesezeichen - während ich nur die Lesezeichen der angegebenen Datei abrufen wollte.

+0

Ich benutze nicht EZB, aber ist das "Tags" wie in einer Etags/Ctags TAGS-Datei? Oder etwas Spezifisches für die EZB? Wenn ersteres, bezweifle ich stark, dass Sie Indexkommentare machen können. Es gibt jedoch Verbesserungen für Lesezeichen, sodass es möglicherweise Möglichkeiten gibt, den Lesezeichen-Workflow zu verbessern. – phils

+0

Ich bin noch verwirrter über Ihre Definition von "Tags", jetzt, da Sie den Outline-Minor-Modus in den Mix aufgenommen haben. Das ist definitiv keine Gliederungsterminologie. Ihre Frage bleibt mehrdeutig. – phils

+0

@phils: Du hast Recht - meine Bearbeitung hat nichts mit Tags zu tun. Es ist nur eine weitere Möglichkeit, das Problem der Navigation durch benutzerdefinierte Marken (oder nennen Sie es Tags) anzugreifen. Vielleicht sollte ich die Frage neu formulieren. – Adobe

Antwort

4

Mit dem Emacs Lisp Beispielcode, löste ich es mit dem folgenden, das zu einem Hook für Emacs-Lisp-Modus hinzugefügt werden könnte, und sollte leicht für andere Sprachen zu optimieren sein.

(make-local-variable 'outline-regexp) 
(setq outline-regexp ";; =+\n;; ") 
(make-local-variable 'outline-heading-end-regexp) 
(setq outline-heading-end-regexp ":\n") 
(outline-minor-mode 1) 

Sie können jetzt Standardgliederungsmodus verwenden, die Tastenbelegungen wie diese hat:

C-c @ C-p -> prevous header 
C-c @ C-n -> next header 

C-c @ C-t -> hide code between headers 
C-c @ C-a -> show all the code between headers 

Wenn Sie vorübergehend die Header verbergen, werden Sie einen Überblick über Ihre Puffer erhalten, bewegen, wo Sie wollen, dann Zeigen Sie den Code erneut an.

Für Python ersetzen Sie einfach die ;; in der Regexp mit #.

outline-mode kommt mit Emacs, und ist dort dokumentiert, wenn Sie weitere Informationen benötigen.

+0

Es funktioniert! Das ist großartig! Du bist cool! – Adobe

Verwandte Themen