summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/lisp-mode.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2002-11-03 03:46:56 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2002-11-03 03:46:56 +0000
commit833815e8a75611b7421ee675b76bb54e08b0df07 (patch)
treec9c75c6390c6b803afa86aa8fe1d23ada49da4c8 /lisp/emacs-lisp/lisp-mode.el
parent3d9ce27e7b78a77c360d9edf24ccdc444410e19f (diff)
downloademacs-833815e8a75611b7421ee675b76bb54e08b0df07.tar.gz
(lisp-fill-paragraph): Use fill-comment-paragraph.
Diffstat (limited to 'lisp/emacs-lisp/lisp-mode.el')
-rw-r--r--lisp/emacs-lisp/lisp-mode.el110
1 files changed, 17 insertions, 93 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 6bdb92dd284..46f59dd5721 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -1060,99 +1060,23 @@ If any of the current line is a comment, fill the comment or the
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.