[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