[Info-vax] Emacs: Navigation By Sections
Lawrence D'Oliveiro
ldo at nz.invalid
Sat Mar 23 01:49:04 EDT 2024
Some of my earliest exposure to code written by others was on a DEC
PDP-11 system. So I somehow picked up the habit of writing
section-header comments that look like this:
;+
; Navigation by sections
;-
Of course, this can be adapted to other languages that use different
comment delimiters:
#+
# High-level stuff follows
#-
However, where the language allows block comments (like C), I still
have this fondness for using those instead:
/*
Binary heaps
See definition module for an explanation
*/
So I wrote a pair of simple navigation commands that will match
section-header comments written in all these different formats, and
lets me jump quickly between them:
(setq section-header-pattern "^\\(?:[\\#;]\\+\\|/\\*\\)$")
(setq section-header-end-pattern "^\\(?:[\\#;]-\\|\\*/\\)$")
; Allows for: “#+\n...#-\n” (Python etc); “;+\n...;-\n” (Lisp); “/*\n...*/\n” (C).
(defun prev-section ()
(interactive)
(beginning-of-line)
(unless (re-search-backward section-header-pattern nil t)
(goto-char (point-min))
) ; unless
) ; prev-section
(defun next-section ()
(interactive)
(end-of-line)
(cond
((re-search-forward section-header-pattern nil t)
(beginning-of-line)
)
(t
(goto-char (point-max))
)
) ; cond
) ; next-section
(global-set-key [kp-subtract] 'prev-section)
(global-set-key [kp-add] 'next-section)
Yeah, I bind them to the numeric-keypad “+” and “-” keys. Does anybody
use those for anything else? ;)
Do people writing code on DEC systems still use a convention like this?
More information about the Info-vax
mailing list