Suppose I have a file with the following marks (or call it tags):
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)
So I'd like to have a buffer which would list such tags (or call it marks) for a given buffer/file. And it should also facilitate navigation thru this tags in some way - with a mouse or keybindings (something similar to the table of contents
functionality of rest-mode
).
I wanted to solve this problem by modifing some etags function. But couldn't find one (that would be a solution since ECB shows etags nicely in a buffer - just as I wanted).
Some other solution might have been using bookmarks - but bookmarks are not file-specific. They are system-specific. That is in bookmark-list You have all the bookmarks - while I wanted to get the bookmarks of the given file only.
Using the Emacs Lisp example code, I solved it with the following that could be added to a hook for emacs-lisp-mode, and should be easy to tweak for other languages.
You can now use standard outline mode, which has keybindings like this:
If you temporarily hide the headers, you will get an outline of your buffer, move where you want, then show the code again.
For python, just replace the ;; in the regexp with #.
outline-mode
comes with Emacs, and is documented there if you need more information.