;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/enum.el (require 'cl-lib) (require 'subr-x) (defun enum (&optional beg end suf) "Enumerate each line from BEG to END, counting from one. Use SUF as a suffix to the digits inserted. BEG defaults to the beginning of the buffer, END defaults to the end of the buffer, SUF defaults to \". \"" (interactive `(,@(if (use-region-p) (list (region-beginning) (region-end)) (list nil nil) ) ,(when current-prefix-arg (read-string "suffix: ") ))) (or beg (setq beg (point-min))) (or end (setq end (point-max))) (or suf (setq suf ". ")) (goto-char beg) (let*((lines (count-lines beg end)) (pad-len (length (number-to-string lines))) ) (cl-loop for line from 1 to lines do (goto-char (line-beginning-position)) (insert (format "%s%s" (string-pad (number-to-string line) pad-len nil t) suf) ) (forward-line) ))) (provide 'enum)