]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix auto-fill bug in js-mode
authorTom Tromey <tom@tromey.com>
Sun, 27 Aug 2017 18:54:01 +0000 (12:54 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 27 Aug 2017 18:54:19 +0000 (12:54 -0600)
* lisp/progmodes/js.el (js-do-auto-fill): New function.
(js-mode): Set normal-auto-fill-function.
* test/lisp/progmodes/js-tests.el (js-mode-fill-comment-bug): New
test.

lisp/progmodes/js.el
test/lisp/progmodes/js-tests.el

index e6ffe4d75a60879553101ed5e335a8e51ba8fc6a..cd315fb33ce2ce6843c6404494d278dc259fe513 100644 (file)
@@ -2380,6 +2380,10 @@ i.e., customize JSX element indentation with `sgml-basic-offset',
         (fill-paragraph-function #'c-fill-paragraph))
     (c-fill-paragraph justify)))
 
+(defun js-do-auto-fill ()
+  (let ((js--filling-paragraph t))
+    (c-do-auto-fill)))
+
 ;;; Type database and Imenu
 
 ;; We maintain a cache of semantic information, i.e., the classes and
@@ -3863,6 +3867,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
   (setq-local comment-start "// ")
   (setq-local comment-end "")
   (setq-local fill-paragraph-function #'js-c-fill-paragraph)
+  (setq-local normal-auto-fill-function #'js-do-auto-fill)
 
   ;; Parse cache
   (add-hook 'before-change-functions #'js--flush-caches t t)
index 8e1bac10cd196a94a8c00dc19df01ee1ad08fbc4..4e27913930bc61538b901893e28c3545517b2752 100644 (file)
  * Load the inspector's shared head.js for use by tests that need to
  * open the something or other"))))
 
+(ert-deftest js-mode-fill-comment-bug ()
+  (with-temp-buffer
+    (insert "/**
+ * javadoc stuff here
+ *
+ * what
+ */
+function f( ) {
+    // comment-auto-fill-only-comments is a variable defined in ‘newcomment.el’. comment comment")
+    (js-mode)
+    (setq-local comment-auto-fill-only-comments t)
+    (setq-local fill-column 75)
+    (auto-fill-mode 1)
+    (funcall auto-fill-function)
+    (beginning-of-line)
+    ;; Filling should have inserted the correct comment start.
+    (should (equal (buffer-substring (point) (+ 7 (point)))
+                   "    // "))))
+
 (ert-deftest js-mode-regexp-syntax ()
   (with-temp-buffer
     ;; Normally indentation tests are done in manual/indent, but in