Emacs part 30
■ このスレッドは過去ログ倉庫に格納されています
0791764
2009/08/11(火) 03:00:14下の関数は文字列で処理しているが、バッファで行毎に空白を挿入するのもあり。
(defun right-justify-region (start end)
(interactive "*r")
(let* ((s (buffer-substring-no-properties start end))
(L (split-string s "\n" nil))
(max-length (max-list L 'length))
(s (format "%%%ds" max-length))
(asitis-re "^[[:blank:]]*$" ))
(save-excursion
(save-restriction
(goto-char start)
(delete-region start end)
(insert
(mapconcat
(lambda (e) (if (string-match asitis-re e) e (format s e)))
L "\n" ))))))
(defsubst max-list (L &optional numerifier)
(let* ((numerifier (or numerifier 'identity))
(max (funcall numerifier (nth 0 L))))
(dolist (i L)
(setq i (funcall numerifier i))
(when (> i max) (setf max i)))
max))
■ このスレッドは過去ログ倉庫に格納されています