]> git.eshelyaron.com Git - sweep.git/commitdiff
* (sweeprolog-align-spaces): extend to also work in comments
authorEshel Yaron <me@eshelyaron.com>
Fri, 9 Dec 2022 15:10:02 +0000 (17:10 +0200)
committerEshel Yaron <me@eshelyaron.com>
Fri, 9 Dec 2022 15:11:19 +0000 (17:11 +0200)
sweeprolog-tests.el
sweeprolog.el

index 43abff174527bd545362a89d240ed655e6824be7..eb08bcc8b45f4f8f040a5b6b3dd93124af941d6f 100644 (file)
@@ -1020,6 +1020,21 @@ scasp_and_show(Q, Model, Tree) :-
     (sweeprolog-end-of-top-term)
     (should (= (point) 252))))
 
+(ert-deftest align-spacs-in-line-comment ()
+  "Test using `sweeprolog-align-spaces' in a line comment."
+  (with-temp-buffer
+    (sweeprolog-mode)
+    (insert "
+%!  foo is det.
+%
+%")
+    (sweeprolog-align-spaces)
+    (should (string= (buffer-string)
+                     "
+%!  foo is det.
+%
+%   "))))
+
 (ert-deftest electric-layout ()
   "Test `sweeprolog-electric-layout-mode'."
   (with-temp-buffer
@@ -1104,7 +1119,8 @@ foo :-
   (with-temp-buffer
     (sweeprolog-mode)
     (insert given)
-    (indent-region-line-by-line (point-min) (point-max))
+    (let ((inhibit-message t))
+      (indent-region-line-by-line (point-min) (point-max)))
     (should (string= (buffer-substring-no-properties (point-min) (point-max))
                      expected))))
 
index 742b42a15ff95a54bc98bed11ef43773de037085..2161dc5aef9523402bbd07f5342122eec15c6e42 100644 (file)
@@ -3457,14 +3457,28 @@ non-exported predicates defined in the current buffer."
           (user-error "No export list found"))))))
 
 (defun sweeprolog-align-spaces (&optional _)
-  "Adjust in-line whitespace between the previous next Prolog tokens.
+  "Adjust in-line spaces between the previous and next Prolog tokens.
 
 This command ensures that the next token starts at a column
 distanced from the beginning of the previous by a multiple of
 four columns, which accommodates the convetional alignment for
-if-then-else constructs in SWI-Prolog."
+if-then-else constructs and other common layouts in SWI-Prolog."
   (interactive "" sweeprolog-mode)
   (let ((bol (line-beginning-position)))
+    (if (nth 4 (syntax-ppss))
+        (combine-after-change-calls
+          (delete-horizontal-space)
+          (let* ((lend (point))
+                 (lbeg (save-excursion
+                        (while (and (< bol (point))
+                                    (not (= (char-syntax (char-before))
+                                            ? )))
+                          (forward-char -1))
+                        (point)))
+                 (num (- 4 (% (- lend lbeg) 4))))
+            (insert (make-string (if (< 0 num)
+                                     num
+                                   4) ? )))))
     (pcase (sweeprolog-last-token-boundaries)
       (`(,_ ,lbeg ,lend)
        (when (<= bol lend)