rule を指定して align

Emacs 標準のパッケージに align.el がある。こいつは mode とかコンテキストを見て、良きにはからって桁をそろえてくれるんだけど、自分で rule を指定したい事もある。標準では付いてなかったからこんなものを作ってみた。

modes と run-if を rule から除いてるのが重要。じゃないと条件に一致しない限りその rule を使ってくれない。

尋ねてくる rule の一覧は align-rules-list を使わないで、専用の alist を使うのもいいかもしれない。

(defun align-with-rule (beg end title)
  (interactive
   (list (region-beginning)
         (region-end)
         (intern-soft
          (completing-read
           "Align rule: "
           (mapcar (lambda (rule)
                     (list (symbol-name (car rule))))
                   align-rules-list)
           nil t))))
  (let ((rule (assq title align-rules-list)))
    (align-region
     beg end nil
     (list (remove-if
            (lambda (x)
              (and (consp x) (memq (car x) '(modes run-if))))
            rule))
     nil)))