Function: css-fill-paragraph
css-fill-paragraph is a byte-compiled function defined in
css-mode.el.gz.
Signature
(css-fill-paragraph &optional JUSTIFY)
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/css-mode.el.gz
(defun css-fill-paragraph (&optional justify)
(save-excursion
;; Fill succeeding comment when invoked right before a multi-line
;; comment.
(when (save-excursion
(beginning-of-line)
(comment-search-forward (line-end-position) t))
(goto-char (match-end 0)))
(let ((ppss (syntax-ppss))
(eol (line-end-position)))
(cond
((and (nth 4 ppss)
(save-excursion
(goto-char (nth 8 ppss))
(forward-comment 1)
(prog1 (not (bolp))
(setq eol (point)))))
;; Filling inside a comment whose comment-end marker is not \n.
;; This code is meant to be generic, so that it works not only for
;; css-mode but for all modes.
(save-restriction
(narrow-to-region (nth 8 ppss) eol)
(comment-normalize-vars) ;Will define comment-continue.
(let ((fill-paragraph-function nil)
(paragraph-separate
(if (and comment-continue
(string-match "[^ \t]" comment-continue))
(concat "\\(?:[ \t]*\\(?:"
(regexp-quote comment-continue) "\\|"
comment-start-skip "\\|"
comment-end-skip "\\)\\)?"
"\\(?:" paragraph-separate "\\)")
paragraph-separate))
(paragraph-start
(if (and comment-continue
(string-match "[^ \t]" comment-continue))
(concat "\\(?:[ \t]*" (regexp-quote comment-continue)
"\\)?\\(?:" paragraph-start "\\)")
paragraph-start)))
(fill-paragraph justify)
;; Don't try filling again.
t)))
((and (null (nth 8 ppss))
(or (nth 1 ppss)
(and (ignore-errors
(down-list 1)
(when (<= (point) eol)
(setq ppss (syntax-ppss)))))))
(goto-char (nth 1 ppss))
(let ((end (save-excursion
(ignore-errors (forward-sexp 1) (copy-marker (point) t)))))
(when end
(while (re-search-forward "[{;}]" end t)
(cond
;; This is a false positive inside a string or comment.
((nth 8 (syntax-ppss)) nil)
;; This is a false positive when encountering an
;; interpolated variable (bug#19751).
((eq (char-before (- (point) 1)) ?#) nil)
((eq (char-before) ?\})
(save-excursion
(forward-char -1)
(skip-chars-backward " \t")
(when (and (not (bolp))
(scss-smie--not-interpolation-p))
(newline))))
(t
(while
(progn
(setq eol (line-end-position))
(and (forward-comment 1)
(> (point) eol)
;; A multi-line comment should be on its own line.
(save-excursion (forward-comment -1)
(when (< (point) eol)
(newline)
t)))))
(if (< (point) eol) (newline)))))
(goto-char (nth 1 ppss))
(indent-region (line-beginning-position 2) end)
;; Don't use the default filling code.
t)))))))