@@ -174,54 +174,54 @@ declaration and its offset is `swift-mode:basic-offset'."
174174(defun  swift-mode:calculate-indent-of-multiline-comment  ()
175175  " Return the indentation of the current line inside a multiline comment." 
176176  (back-to-indentation )
177-   (let  ((comment-beginning-position (nth  8  (syntax-ppss )))
177+   (let  ((pos (point ))
178+         (comment-beginning-position (nth  8  (syntax-ppss )))
178179        (starts-with-asterisk (eq  (char-after ) ?* )))
179-     (forward-line  -1 )
180-     (back-to-indentation )
181180    (cond 
182-      ((<=  (point ) comment-beginning-position)
183-       ; ; The cursor was on the 2nd line of the comment.
181+      ; ; Before the closing delimiter.
182+      ((and  (looking-at  " \\ *+/"  )
183+            (=  pos
184+               (save-excursion 
185+                 (goto-char  comment-beginning-position)
186+                 (if  (forward-comment  1 )
187+                     (progn 
188+                       (backward-char )
189+                       (skip-chars-backward  " *"  )
190+                       (point ))
191+                   -1 ))))
192+       ; ; Aligns with the first asterisk of the opening delimiter.
184193      (goto-char  comment-beginning-position)
185194      (forward-char )
186-       ; ; If there are extra characters or spaces after asterisks, aligns with
187-       ; ; the first non-space character or end of line.  Otherwise, aligns with
188-       ; ; the first asterisk.
189-       (when  (and 
190-              (looking-at  " \\ **[^*\n ]+"  )
191-              (not  (and  swift-mode:prepend-asterisk-to-comment-line
192-                        starts-with-asterisk)))
193-         (skip-chars-forward  " *"  )
194-         (skip-syntax-forward  "  "  ))
195195      (swift-mode:indentation (point ) 0 ))
196196
197-      ; ; The cursor was on the 3rd or following lines of the comment.
198- 
199-      ((=  (save-excursion 
200-            (forward-line )
201-            (back-to-indentation )
202-            (point ))
203-          (save-excursion 
204-            (goto-char  comment-beginning-position)
205-            (if  (forward-comment  1 )
206-                (progn 
207-                  (backward-char )
208-                  (skip-chars-backward  " *"  )
209-                  (point ))
210-              -1 )))
211-       ; ; Before the closing delimiter.  Aligns with the first asterisk of the
212-       ; ; opening delimiter.
197+      ; ; The cursor was on the 2nd line of the comment (excluding empty lines).
198+      ((progn 
199+         (forward-line  -1 )
200+         (while  (and  (bolp ) (eolp ) (<  comment-beginning-position (point )))
201+           (forward-line  -1 ))
202+         (back-to-indentation )
203+         (<=  (point ) comment-beginning-position))
213204      (goto-char  comment-beginning-position)
214205      (forward-char )
206+       ; ; If the line starts with a decoration asterisk, align with the first
207+       ; ; asterisk of the opening delimiter.
208+       ; ;
209+       ; ; Otherwise, if there are extra characters or spaces after asterisks,
210+       ; ; aligns with the first non-space character or end of line.
211+       ; ;
212+       ; ; Otherwise, aligns with the first asterisk of the opening delimiter.
213+       (when  (and 
214+              (not  (and  swift-mode:prepend-asterisk-to-comment-line
215+                        starts-with-asterisk))
216+              (looking-at  " \\ **[^*\n ]+"  ))
217+         (skip-chars-forward  " *"  )
218+         (skip-syntax-forward  "  "  ))
215219      (swift-mode:indentation (point ) 0 ))
216220
217-      ; ; Otherwise, aligns with a non-empty preceding line.
218- 
219-      ((and  (bolp ) (eolp ))
220-       ; ; The previous line is empty, so seeks a non-empty-line.
221-       (swift-mode:calculate-indent-of-multiline-comment))
222- 
221+      ; ; The cursor was on the 3rd or following line of the comment, and found a
222+      ; ; non-empty preceding line.
223223     (t 
224-       ; ; The previous line is not empty, so aligns  to this line.
224+       ; ; Aligns  to this line.
225225      (swift-mode:indentation (point ) 0 )))))
226226
227227(defun  swift-mode:calculate-indent-of-multiline-string  ()
0 commit comments