From: Richard M. Stallman Date: Sun, 10 Sep 1995 17:44:25 +0000 (+0000) Subject: (center-line): New arg NLINES. X-Git-Tag: emacs-19.34~2837 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aaf6c7ef84d040792d9876b5e8f7a20d76a496c6;p=emacs.git (center-line): New arg NLINES. Do nothing for lines that are too wide. --- diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el index aa4e2fc9790..2dd825187ce 100644 --- a/lisp/textmodes/text-mode.el +++ b/lisp/textmodes/text-mode.el @@ -141,20 +141,32 @@ See `center-line' for more info." (center-line)) (forward-line 1))))) -(defun center-line () +(defun center-line (&optional nlines) "Center the line point is on, within the width specified by `fill-column'. This means adjusting the indentation so that it equals -the distance between the end of the text and `fill-column'." - (interactive) - (save-excursion - (let ((lm (current-left-margin)) - line-length) - (beginning-of-line) - (delete-horizontal-space) - (end-of-line) - (delete-horizontal-space) - (setq line-length (current-column)) - (indent-line-to - (+ lm (/ (- fill-column lm line-length) 2)))))) +the distance between the end of the text and `fill-column'. +The argument NLINES says how many lines to center." + (interactive "P") + (if nlines (setq nlines (prefix-numeric-value nlines))) + (while (not (eq nlines 0)) + (save-excursion + (let ((lm (current-left-margin)) + line-length) + (beginning-of-line) + (delete-horizontal-space) + (end-of-line) + (delete-horizontal-space) + (setq line-length (current-column)) + (if (> (- fill-column lm line-length) 0) + (indent-line-to + (+ lm (/ (- fill-column lm line-length) 2)))))) + (cond ((null nlines) + (setq nlines 0)) + ((> nlines 0) + (setq nlines (1- nlines)) + (forward-line 1)) + ((< nlines 0) + (setq nlines (1+ nlines)) + (forward-line -1))))) ;;; text-mode.el ends here