[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#31656: 26.1; `fill-paragraph' malformats in emacs-lisp-mode

From: Stefan Guath
Subject: bug#31656: 26.1; `fill-paragraph' malformats in emacs-lisp-mode
Date: Wed, 30 May 2018 14:50:01 +0200

GNU Emacs 26.1 (build 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F2511)) of 2018-05-28

`emacs-lisp-docstring-fill-column' shadows `fill-column' in too many cases in emacs-lisp-mode. The documentation of `emacs-lisp-docstring-fill-column' states: "Value of ‘fill-column’ to use when filling a docstring". But it incorrectly seems to be used in a lot more cases than just in a docstring (the only case that I've found where ‘fill-column’ is actually respected is within comments). A work-around is to set `emacs-lisp-docstring-fill-column' to nil, but it would be nice to have it working properly instead.

I might be missing something, but think the incorrect behavior is to be found in `lisp-fill-paragraph' that is invoked by `fill-paragraph' through `fill-paragraph-function'. It seems like `lisp-fill-paragraph' unconditionally sets `fill-column' to `emacs-lisp-docstring-fill-column' without checking whether point is within a doc string first. The only requirements for enable shadowing currently seems to be "(and (integerp emacs-lisp-docstring-fill-column) (derived-mode-p 'emacs-lisp-mode))", which doesn't seems sufficient.

* emacs -q
* C-x b <return> (i.e. switch to *scratch* buffer)
* M-x emacs-lisp-mode
* M-x column-number-mode (optional)
* (setq fill-column 80) ;used by `fill-paragraph'
* (setq emacs-lisp-docstring-fill-column 40) ;should override `fill-column' in doc strings only!
* Paste in the line "word00 word01 word02 word03 word04 word05 word06 word07 word08 word09 word10 word11" (i.e. 12 words, 83 chars)
* M-x fill-paragraph (with point on pasted line above)
* The value of `emacs-lisp-docstring-fill-column' (40) is incorrectly used when formatting. The value of `fill-column' (80) should have been used instead, since the point is not in a doc string.

Note that the default value of `emacs-lisp-docstring-fill-column' is 65 (rather than nil), so this malformatting is enabled by default.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]