# HG changeset patch # User Stefan Monnier # Date 1285103888 -7200 # Node ID 27917ce150c1f351a20bf1713b25f8d2dba4e725 # Parent 3132ab826fc55909d9409f748b375f7515b0a7a3 * lisp/emacs-lisp/smie.el (smie-debug--describe-cycle): Fix typo. (smie-indent-comment): Be more careful with comment-start-skip. (smie-indent-comment-close, smie-indent-comment-inside): New funs. (smie-indent-functions): Use them. diff -r 3132ab826fc5 -r 27917ce150c1 lisp/ChangeLog --- a/lisp/ChangeLog Tue Sep 21 21:33:59 2010 +0200 +++ b/lisp/ChangeLog Tue Sep 21 23:18:08 2010 +0200 @@ -1,3 +1,10 @@ +2010-09-21 Stefan Monnier + + * emacs-lisp/smie.el (smie-debug--describe-cycle): Fix typo. + (smie-indent-comment): Be more careful with comment-start-skip. + (smie-indent-comment-close, smie-indent-comment-inside): New funs. + (smie-indent-functions): Use them. + 2010-09-21 Michael Albinus * net/ange-ftp.el (ange-ftp-skip-msgs): Add "^504 ..." message. diff -r 3132ab826fc5 -r 27917ce150c1 lisp/emacs-lisp/smie.el --- a/lisp/emacs-lisp/smie.el Tue Sep 21 21:33:59 2010 +0200 +++ b/lisp/emacs-lisp/smie.el Tue Sep 21 23:18:08 2010 +0200 @@ -338,7 +338,7 @@ res)) cycle))) (mapconcat - (lambda (elems) (mapconcat 'indentity elems "=")) + (lambda (elems) (mapconcat 'identity elems "=")) (append names (list (car names))) " < "))) @@ -1173,7 +1173,11 @@ ;; front of a comment" when doing virtual-indentation anyway. And if we are ;; (as can happen in octave-mode), moving forward can lead to inf-loops. (and (smie-indent--bolp) - (looking-at comment-start-skip) + (let ((pos (point))) + (save-excursion + (beginning-of-line) + (and (re-search-forward comment-start-skip (line-end-position) t) + (eq pos (or (match-end 1) (match-beginning 0)))))) (save-excursion (forward-comment (point-max)) (skip-chars-forward " \t\r\n") @@ -1194,6 +1198,20 @@ (if (looking-at (regexp-quote continue)) (current-column)))))))) +(defun smie-indent-comment-close () + (and (boundp 'comment-end-skip) + comment-end-skip + (not (looking-at " \t*$")) ;Not just a \n comment-closer. + (looking-at comment-end-skip) + (nth 4 (syntax-ppss)) + (save-excursion + (goto-char (nth 8 (syntax-ppss))) + (current-column)))) + +(defun smie-indent-comment-inside () + (and (nth 4 (syntax-ppss)) + 'noindent)) + (defun smie-indent-after-keyword () ;; Indentation right after a special keyword. (save-excursion @@ -1275,9 +1293,10 @@ (current-column))))))) (defvar smie-indent-functions - '(smie-indent-fixindent smie-indent-bob smie-indent-close smie-indent-comment - smie-indent-comment-continue smie-indent-keyword smie-indent-after-keyword - smie-indent-exps) + '(smie-indent-fixindent smie-indent-bob smie-indent-close + smie-indent-comment smie-indent-comment-continue smie-indent-comment-close + smie-indent-comment-inside smie-indent-keyword smie-indent-after-keyword + smie-indent-exps) "Functions to compute the indentation. Each function is called with no argument, shouldn't move point, and should return either nil if it has no opinion, or an integer representing the column