aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2019-09-08 10:42:19 -0400
committerNoam Postavsky2019-09-12 20:25:30 -0400
commitcbb8a8ad979ed7975bfc7e9fa6aeeb4d9d6b7084 (patch)
treed03bb7aa2be38b6bb94936bc4fd51304f879d5c4
parent421084d2cb160261b259bddb687bb2c234f8f1ef (diff)
downloademacs-cbb8a8ad979ed7975bfc7e9fa6aeeb4d9d6b7084.tar.gz
emacs-cbb8a8ad979ed7975bfc7e9fa6aeeb4d9d6b7084.zip
Fix fill-paragraph in python docstrings (Bug#36056)
* lisp/progmodes/python.el (python-do-auto-fill): New function. (python-mode): Set it as normal-auto-fill-function, and don't set fill-indent-according-to-mode. Having the latter set during fill-paragraph gives wrongs result, because python-indent-line doesn't remove indentation added by filling. * test/lisp/progmodes/python-tests.el (python-fill-docstring): New test.
-rw-r--r--lisp/progmodes/python.el8
-rw-r--r--test/lisp/progmodes/python-tests.el13
2 files changed, 19 insertions, 2 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 14b65669c4b..ec5d8c55512 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -4084,6 +4084,12 @@ JUSTIFY should be used (if applicable) as in `fill-paragraph'."
4084 (goto-char (line-end-position)))) 4084 (goto-char (line-end-position))))
4085 t) 4085 t)
4086 4086
4087(defun python-do-auto-fill ()
4088 "Like `do-auto-fill', but bind `fill-indent-according-to-mode'."
4089 ;; See Bug#36056.
4090 (let ((fill-indent-according-to-mode t))
4091 (do-auto-fill)))
4092
4087 4093
4088;;; Skeletons 4094;;; Skeletons
4089 4095
@@ -5379,7 +5385,7 @@ REPORT-FN is Flymake's callback function."
5379 (set (make-local-variable 'paragraph-start) "\\s-*$") 5385 (set (make-local-variable 'paragraph-start) "\\s-*$")
5380 (set (make-local-variable 'fill-paragraph-function) 5386 (set (make-local-variable 'fill-paragraph-function)
5381 #'python-fill-paragraph) 5387 #'python-fill-paragraph)
5382 (set (make-local-variable 'fill-indent-according-to-mode) t) ; Bug#36056. 5388 (set (make-local-variable 'normal-auto-fill-function) #'python-do-auto-fill)
5383 5389
5384 (set (make-local-variable 'beginning-of-defun-function) 5390 (set (make-local-variable 'beginning-of-defun-function)
5385 #'python-nav-beginning-of-defun) 5391 #'python-nav-beginning-of-defun)
diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el
index b1cf7e8806a..c5ad1dfb862 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -1351,7 +1351,7 @@ this is an arbitrarily
1351 expected))))) 1351 expected)))))
1352 1352
1353 1353
1354;;; Autofill 1354;;; Filling
1355 1355
1356(ert-deftest python-auto-fill-docstring () 1356(ert-deftest python-auto-fill-docstring ()
1357 (python-tests-with-temp-buffer 1357 (python-tests-with-temp-buffer
@@ -1368,6 +1368,17 @@ def some_function(arg1,
1368 (forward-line 1) 1368 (forward-line 1)
1369 (should (= docindent (current-indentation)))))) 1369 (should (= docindent (current-indentation))))))
1370 1370
1371(ert-deftest python-fill-docstring ()
1372 (python-tests-with-temp-buffer
1373 "\
1374r'''aaa
1375
1376this is a test this is a test this is a test this is a test this is a test this is a test.
1377'''"
1378 (search-forward "test.")
1379 (fill-paragraph)
1380 (should (= (current-indentation) 0))))
1381
1371 1382
1372;;; Mark 1383;;; Mark
1373 1384