]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/progmodes/octave-mod.el (octave-smie-forward-token): Only emit
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 25 Apr 2013 03:25:34 +0000 (23:25 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 25 Apr 2013 03:25:34 +0000 (23:25 -0400)
semi-colons if the line is not otherwise empty.
* lisp/emacs-lisp/smie.el (smie-indent--hanging-p): Don't burp at EOB.
(smie-indent-keyword): Improve the check to ensure that the next
comment is really on the same line.
(smie-indent-comment): Don't align with a subsequent closer (or eob).

Fixes: debbugs:14218
lisp/ChangeLog
lisp/emacs-lisp/smie.el
lisp/progmodes/octave-mod.el

index d6d96545165dca80084f816b0e80321be8dccfed..7bce53d7caf978ba47f0e0b521ea7f454a863b00 100644 (file)
@@ -1,3 +1,13 @@
+2013-04-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/smie.el (smie-indent--hanging-p): Don't burp at EOB.
+       (smie-indent-keyword): Improve the check to ensure that the next
+       comment is really on the same line.
+       (smie-indent-comment): Don't align with a subsequent closer (or eob).
+
+       * progmodes/octave-mod.el (octave-smie-forward-token): Only emit
+       semi-colons if the line is not otherwise empty (bug#14218).
+
 2013-04-25  Glenn Morris  <rgm@gnu.org>
 
        * vc/vc-bzr.el (vc-bzr-print-log): Tweak LIMIT = 1 case.
index 18cc0e811ce5dbbd6b4a25329c35ec5960160872..c59076974e05b4db2e1ff96a15857fdd0cd0ed0b 100644 (file)
@@ -1067,9 +1067,10 @@ the beginning of a line."
        (save-excursion
          (<= (line-end-position)
              (progn
-               (when (zerop (length (funcall smie-forward-token-function)))
-                 ;; Could be an open-paren.
-                 (forward-char 1))
+               (and (zerop (length (funcall smie-forward-token-function)))
+                   (not (eobp))
+                   ;; Could be an open-paren.
+                   (forward-char 1))
                (skip-chars-forward " \t")
                (or (eolp)
                    (and (looking-at comment-start-skip)
@@ -1350,8 +1351,11 @@ should not be computed on the basis of the following token."
                 (if (and (< pos (line-beginning-position))
                          ;; Make sure `token' also *starts* on another line.
                          (save-excursion
-                           (smie-indent-backward-token)
-                           (< pos (line-beginning-position))))
+                           (let ((endpos (point)))
+                             (goto-char pos)
+                             (forward-line 1)
+                             (and (equal res (smie-indent-forward-token))
+                                  (eq (point) endpos)))))
                     nil
                   (goto-char pos)
                   res)))))
@@ -1473,13 +1477,21 @@ should not be computed on the basis of the following token."
        (save-excursion
          (forward-comment (point-max))
          (skip-chars-forward " \t\r\n")
-         ;; FIXME: We assume here that smie-indent-calculate will compute the
-         ;; indentation of the next token based on text before the comment, but
-         ;; this is not guaranteed, so maybe we should let
-         ;; smie-indent-calculate return some info about which buffer position
-         ;; was used as the "indentation base" and check that this base is
-         ;; before `pos'.
-         (smie-indent-calculate))))
+         (unless
+             ;; Don't align with a closer, since the comment is "within" the
+             ;; closed element.  Don't align with EOB either.
+             (save-excursion
+               (let ((next (funcall smie-forward-token-function)))
+                 (or (if (zerop (length next))
+                         (or (eobp) (eq (car (syntax-after (point))) 5)))
+                     (rassoc next smie-closer-alist))))
+          ;; FIXME: We assume here that smie-indent-calculate will compute the
+           ;; indentation of the next token based on text before the comment,
+           ;; but this is not guaranteed, so maybe we should let
+           ;; smie-indent-calculate return some info about which buffer
+           ;; position was used as the "indentation base" and check that this
+           ;; base is before `pos'.
+           (smie-indent-calculate)))))
 
 (defun smie-indent-comment-continue ()
   ;; indentation of comment-continue lines.
index 4683186e60396404831c281cb8141f0a94e01b6f..d161754cad9475f83c983198596b71fa248238b3 100644 (file)
@@ -482,6 +482,7 @@ Non-nil means always go to the next Octave code line after sending."
     (forward-comment 1))
   (cond
    ((and (looking-at "$\\|[%#]")
+         (not (smie-rule-bolp))
          ;; Ignore it if it's within parentheses.
          (prog1 (let ((ppss (syntax-ppss)))
                   (not (and (nth 1 ppss)