Skip to content

lisp-fill-paragraph fills docstrings improperly #228

@miikka

Description

@miikka

After #225 was merged, docstring filling has felt pretty broken to me. Consider this example from test.clj with fill-column set to 80:

(defn say-hello
  "This is a long doc string to test clojure-fill-docstring. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sed nunc luctus leo ultricies semper. Nullam id tempor mi. Cras adipiscing scelerisque purus, at semper magna tincidunt ut. Sed eget dolor vitae enim feugiat porttitor. Etiam vulputate pulvinar lacinia. Nam vitae nisl sit amet libero pulvinar pretium nec a dui. Ut luctus elit eu nulla posuere nec feugiat ipsum vehicula. Quisque eu pulvinar neque. Fusce fermentum adipiscing mauris, sit amet accumsan ante dignissim ac. Pellentesque molestie mollis condimentum.

Etiam commodo nulla id risus convallis pharetra. Integer dapibus, eros vitae vehicula rhoncus, nisl lorem ornare magna, eu vehicula justo nunc ac nunc. In dolor sem, vulputate eget vulputate id, euismod eu ligula. Nullam elit augue, ultrices ut pretium vel, bibendum sit amet est. Curabitur vulputate arcu vitae neque adipiscing vel commodo ante faucibus. Cras tempor placerat erat. Sed ultrices faucibus sodales. Vestibulum sollicitudin consectetur mauris, nec mollis quam accumsan ultrices. Vestibulum tincidunt libero a lectus condimentum et fermentum diam eleifend. Nam accumsan interdum neque nec aliquet. Praesent feugiat dui at est rhoncus lacinia."
  []
  (println "Hello, World!"))

With clojure-fill-docstring, you get this:

(defn say-hello
  "This is a long doc string to test clojure-fill-docstring. Lorem
  ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sed
  nunc luctus leo ultricies semper. Nullam id tempor mi. Cras
  adipiscing scelerisque purus, at semper magna tincidunt ut. Sed eget
  dolor vitae enim feugiat porttitor. Etiam vulputate pulvinar
  lacinia. Nam vitae nisl sit amet libero pulvinar pretium nec a
  dui. Ut luctus elit eu nulla posuere nec feugiat ipsum
  vehicula. Quisque eu pulvinar neque. Fusce fermentum adipiscing
  mauris, sit amet accumsan ante dignissim ac. Pellentesque molestie
  mollis condimentum.

  Etiam commodo nulla id risus convallis pharetra. Integer dapibus,
  eros vitae vehicula rhoncus, nisl lorem ornare magna, eu vehicula
  justo nunc ac nunc. In dolor sem, vulputate eget vulputate id,
  euismod eu ligula. Nullam elit augue, ultrices ut pretium vel,
  bibendum sit amet est. Curabitur vulputate arcu vitae neque
  adipiscing vel commodo ante faucibus. Cras tempor placerat erat. Sed
  ultrices faucibus sodales. Vestibulum sollicitudin consectetur
  mauris, nec mollis quam accumsan ultrices. Vestibulum tincidunt
  libero a lectus condimentum et fermentum diam eleifend. Nam accumsan
  interdum neque nec aliquet. Praesent feugiat dui at est rhoncus
  lacinia."
  []
  (println "Hello, World!"))

This is fine. However, with lisp-fill-paragraph, you'll get this:

(defn say-hello
  "This is a long doc string to test clojure-fill-docstring. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sed nunc luctus leo ultricies semper. Nullam id tempor mi. Cras adipiscing scelerisque purus, at semper magna tincidunt ut. Sed eget dolor vitae enim feugiat porttitor. Etiam vulputate pulvinar lacinia. Nam vitae nisl sit amet libero pulvinar pretium nec a dui. Ut luctus elit eu nulla posuere nec feugiat ipsum vehicula. Quisque eu pulvinar neque. Fusce fermentum adipiscing mauris, sit amet accumsan ante dignissim ac. Pellentesque molestie mollis condimentum.

Etiam commodo nulla id risus convallis pharetra. Integer dapibus, eros
  vitae vehicula rhoncus, nisl lorem ornare magna, eu vehicula justo
  nunc ac nunc. In dolor sem, vulputate eget vulputate id, euismod eu
  ligula. Nullam elit augue, ultrices ut pretium vel, bibendum sit
  amet est. Curabitur vulputate arcu vitae neque adipiscing vel
  commodo ante faucibus. Cras tempor placerat erat. Sed ultrices
  faucibus sodales. Vestibulum sollicitudin consectetur mauris, nec
  mollis quam accumsan ultrices. Vestibulum tincidunt libero a lectus
  condimentum et fermentum diam eleifend. Nam accumsan interdum neque
  nec aliquet. Praesent feugiat dui at est rhoncus lacinia."  []
  (println "Hello, World!"))

I see a couple of issues in this:

  • The first line/paragraph is not wrapped at all.
  • The first line of the second paragraph is intended while the rest of lines aren't.
  • The argument list is on the same line as the docstring.

The first point is clearly broken, while the second and third point are more issues of taste. However, I'd say that the old way matches the common Clojure style - probably because everybody is using clojure-mode to format their code! It would be great if clojure-mode didn't suddenly diverge from this style.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions