Mercurial > emacs
changeset 48127:ebfdb0351da6
(lisp-fill-paragraph): Use fill-comment-paragraph.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 03 Nov 2002 03:43:49 +0000 |
parents | 92c696f8509e |
children | 8672c645e6ae |
files | lisp/emacs-lisp/lisp-mode.el |
diffstat | 1 files changed, 17 insertions(+), 93 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el Sun Nov 03 03:41:11 2002 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Sun Nov 03 03:43:49 2002 +0000 @@ -1060,99 +1060,23 @@ paragraph of it that point is in, preserving the comment's indentation and initial semicolons." (interactive "P") - (let ( - ;; Non-nil if the current line contains a comment. - has-comment - - ;; Non-nil if the current line contains code and a comment. - has-code-and-comment - - ;; If has-comment, the appropriate fill-prefix for the comment. - comment-fill-prefix - ) - - ;; Figure out what kind of comment we are looking at. - (save-excursion - (beginning-of-line) - (cond - - ;; A line with nothing but a comment on it? - ((looking-at "[ \t]*;[; \t]*") - (setq has-comment t - comment-fill-prefix (match-string 0))) - - ;; A line with some code, followed by a comment? Remember that the - ;; semi which starts the comment shouldn't be part of a string or - ;; character. - ((let ((state (syntax-ppss (line-end-position)))) - (when (nth 4 state) - (goto-char (nth 8 state)) - (looking-at ";+[\t ]*"))) - (setq has-comment t has-code-and-comment t) - (setq comment-fill-prefix - (concat (make-string (/ (current-column) tab-width) ?\t) - (make-string (% (current-column) tab-width) ?\ ) - (match-string 0)))))) - - (if (not has-comment) - ;; `paragraph-start' is set here (not in the buffer-local - ;; variable so that `forward-paragraph' et al work as - ;; expected) so that filling (doc) strings works sensibly. - ;; Adding the opening paren to avoid the following sexp being - ;; filled means that sexps generally aren't filled as normal - ;; text, which is probably sensible. The `;' and `:' stop the - ;; filled para at following comment lines and keywords - ;; (typically in `defcustom'). - (let ((paragraph-start (concat paragraph-start - "\\|\\s-*[\(;:\"]")) - ;; Avoid filling the first line of docstring. - (paragraph-separate - (concat paragraph-separate "\\|\\s-*\".*\\.$"))) - (fill-paragraph justify)) - - ;; Narrow to include only the comment, and then fill the region. - (save-excursion - (save-restriction - (beginning-of-line) - (narrow-to-region - ;; Find the first line we should include in the region to fill. - (save-excursion - (while (and (zerop (forward-line -1)) - (looking-at "[ \t]*;"))) - ;; We may have gone too far. Go forward again. - (or (looking-at ".*;") - (forward-line 1)) - (point)) - ;; Find the beginning of the first line past the region to fill. - (save-excursion - (while (progn (forward-line 1) - (looking-at "[ \t]*;"))) - (point))) - - ;; Lines with only semicolons on them can be paragraph boundaries. - (let* ((paragraph-separate (concat paragraph-separate "\\|[ \t;]*$")) - (paragraph-ignore-fill-prefix nil) - (fill-prefix comment-fill-prefix) - (after-line (if has-code-and-comment - (line-beginning-position 2))) - (end (progn - (forward-paragraph) - (or (bolp) (newline 1)) - (point))) - ;; If this comment starts on a line with code, - ;; include that like in the filling. - (beg (progn (backward-paragraph) - (if (eq (point) after-line) - (forward-line -1)) - (point)))) - (fill-region-as-paragraph beg end - justify nil - (save-excursion - (goto-char beg) - (if (looking-at fill-prefix) - nil - (re-search-forward comment-start-skip)))))))) - t)) + (or (fill-comment-paragraph justify) + ;; `paragraph-start' is set here (not in the buffer-local + ;; variable so that `forward-paragraph' et al work as + ;; expected) so that filling (doc) strings works sensibly. + ;; Adding the opening paren to avoid the following sexp being + ;; filled means that sexps generally aren't filled as normal + ;; text, which is probably sensible. The `;' and `:' stop the + ;; filled para at following comment lines and keywords + ;; (typically in `defcustom'). + (let ((paragraph-start (concat paragraph-start + "\\|\\s-*[\(;:\"]")) + ;; Avoid filling the first line of docstring. + (paragraph-separate + (concat paragraph-separate "\\|\\s-*\".*\\.$"))) + (fill-paragraph justify)) + ;; Never return nil. + t)) (defun indent-code-rigidly (start end arg &optional nochange-regexp) "Indent all lines of code, starting in the region, sideways by ARG columns.