]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/smie.el (smie-blink-matching-open): Don't use `pos' in two
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 10 Feb 2011 19:40:17 +0000 (14:40 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 10 Feb 2011 19:40:17 +0000 (14:40 -0500)
conflicting ways.
(smie-indent--parent): Extend to "parent of arg".
(smie-indent-inside-string): New function.
(smie-indent-functions): Use it.

lisp/ChangeLog
lisp/emacs-lisp/smie.el

index 70dc7697814d92e17086b9c266234ed222998279..e89003e724b810c3ce6d64184b3083a4fcc09ea2 100644 (file)
@@ -1,5 +1,11 @@
 2011-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/smie.el (smie-blink-matching-open): Don't use `pos' in two
+       conflicting ways.
+       (smie-indent--parent): Extend to "parent of arg".
+       (smie-indent-inside-string): New function.
+       (smie-indent-functions): Use it.
+
        * vc/vc-dir.el (vc-dir-refresh): Reorder operations to try and avoid
        bzr locking race condition.
 
index 702e8d880ba4214b43f4a75afba85dc75130aa3c..e81a8b37981ba3a18ee628930f4851038d6e28de 100644 (file)
@@ -915,7 +915,7 @@ This uses SMIE's tables and is expected to be placed on `post-self-insert-hook'.
                      ;; anything else than this trigger char, lest we'd blink
                      ;; both when inserting the trigger char and when
                      ;; inserting a subsequent trigger char like SPC.
-                     (or (eq (point) pos)
+                     (or (eq (char-before) last-command-event)
                          (not (memq (char-before)
                                     smie-blink-matching-triggers)))
                      (or smie-blink-matching-inners
@@ -998,7 +998,10 @@ the beginning of a line."
           (unless (numberp (cadr (assoc tok smie-grammar)))
             (goto-char pos))
           (setq smie--parent
-                (smie-backward-sexp 'halfsexp))))))
+                (or (smie-backward-sexp 'halfsexp)
+                    (let (res)
+                      (while (null (setq res (smie-backward-sexp))))
+                      (list nil (point) (nth 2 res)))))))))
 
 (defun smie-rule-parent-p (&rest parents)
   "Return non-nil if the current token's parent is among PARENTS.
@@ -1403,6 +1406,10 @@ should not be computed on the basis of the following token."
   (and (nth 4 (syntax-ppss))
        'noindent))
 
+(defun smie-indent-inside-string ()
+  (and (nth 3 (syntax-ppss))
+       'noindent))
+
 (defun smie-indent-after-keyword ()
   ;; Indentation right after a special keyword.
   (save-excursion
@@ -1476,8 +1483,9 @@ should not be computed on the basis of the following token."
 
 (defvar smie-indent-functions
   '(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-comment smie-indent-comment-continue smie-indent-comment-close
+    smie-indent-comment-inside smie-indent-inside-string
+    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