[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

formatting subscriber list




For those of you who have Emacs, here is a quick and dirty expression
to format the list of subscribers like this:

  cortesi@informix.com          (Dave Cortesi)      SF    Palo Alto CA      3
  70401.62@compuserve.com       (George Lundin)     SF    San Francisco CA  3 
              #[mailbox full]
  chandley@otago.ac.nz          (Chris Handley)     oz 
                 Dunedin NZ (      2)

Formatting problems remain, mostly from empty fields and names like
"erw2@po.CWRU.edu", but this expression does a good enough job, at
least for me. :-)

Do add a closing parenthesis to the
    dave@prc.unisys.com   (Dave Matus)   PhilW Malvern PA  3
entry.



(defun format-subscribers ()
  "Format the Lojban subscribers list that is dated  Thurs, 11 July 1991.
Evaluate this function, then narrow to the region you wish to format, and
type M-x format-subscribers."
  (interactive)
  (goto-char (point-min))
  ;; replace-regexp sets to many undo boundaries for convenience here
  (goto-char (point-min))
  (while (not (eobp))
    (if (re-search-forward " [ ]*" nil 'move)
        (progn (delete-region (match-beginning 0) (match-end 0))
               (insert " "))))
  (goto-char (point-min))
  (while (not (eobp))
    (if (search-forward "\(" nil t)
        (progn
          (backward-char 1)
          (indent-to 32)                
          (forward-list 1)
          (forward-char 1) 
          (indent-to 52)
          (forward-word 1)
          (forward-char 1)        
          (indent-to 58)))
    (if (re-search-forward "[0-3]" nil t)
        (progn
          (backward-char 1)
          (indent-to 76)))
    (forward-line 1))
  (goto-char (point-min))
  (while (not (eobp))
    (if (search-forward " oz " nil t)
        (progn
          (insert "\n")
          (indent-to 12)))
    (forward-line 1))
  (goto-char (point-min))
  (while (not (eobp))
    (if (search-forward " #[" nil t)
        (progn
          (backward-char 2 )
          (insert "\n")
          (indent-to 12)))
    (forward-line 1)))