From: Stefan Monnier Date: Thu, 25 Apr 2013 03:25:34 +0000 (-0400) Subject: * lisp/progmodes/octave-mod.el (octave-smie-forward-token): Only emit X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~2026^2~376 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ced3fc5d2f65236af6595db93b064b77a5cdedfd;p=emacs.git * lisp/progmodes/octave-mod.el (octave-smie-forward-token): Only emit 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 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d6d96545165..7bce53d7caf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2013-04-25 Stefan Monnier + + * 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 * vc/vc-bzr.el (vc-bzr-print-log): Tweak LIMIT = 1 case. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 18cc0e811ce..c59076974e0 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -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. diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el index 4683186e603..d161754cad9 100644 --- a/lisp/progmodes/octave-mod.el +++ b/lisp/progmodes/octave-mod.el @@ -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)