]> git.eshelyaron.com Git - emacs.git/commitdiff
Recognize iuwu-mod after an escaped newline
authorDmitry Gutov <dgutov@yandex.ru>
Sun, 6 Mar 2016 21:18:06 +0000 (23:18 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 7 Mar 2016 03:07:33 +0000 (05:07 +0200)
* lisp/progmodes/ruby-mode.el (ruby-smie--bosp): Check if the
newline is escaped.
(ruby-smie-rules): Indent iuwu-mod after an escaped newline
correctly.

lisp/progmodes/ruby-mode.el
test/indent/ruby.rb

index cebc1dc98230818d7cf692e1b570b9d125a0ac91..fa94992ab793fa5ee0d28ae8e6214ba88c2776e0 100644 (file)
@@ -420,7 +420,10 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
 
 (defun ruby-smie--bosp ()
   (save-excursion (skip-chars-backward " \t")
-                  (or (bolp) (memq (char-before) '(?\; ?=)))))
+                  (or (and (bolp)
+                           ;; Newline is escaped.
+                           (not (eq (char-before (1- (point))) ?\\)))
+                      (memq (char-before) '(?\; ?=)))))
 
 (defun ruby-smie--implicit-semi-p ()
   (save-excursion
@@ -669,7 +672,7 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
      ;; Align to the previous `when', but look up the virtual
      ;; indentation of `case'.
      (if (smie-rule-sibling-p) 0 (smie-rule-parent)))
-    (`(:after . ,(or "=" "iuwu-mod" "+" "-" "*" "/" "&&" "||" "%" "**" "^" "&"
+    (`(:after . ,(or "=" "+" "-" "*" "/" "&&" "||" "%" "**" "^" "&"
                      "<=>" ">" "<" ">=" "<=" "==" "===" "!=" "<<" ">>"
                      "+=" "-=" "*=" "/=" "%=" "**=" "&=" "|=" "^=" "|"
                      "<<=" ">>=" "&&=" "||=" "and" "or"))
@@ -682,6 +685,8 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
        (if (ruby-smie--indent-to-stmt-p token)
            (ruby-smie--indent-to-stmt)
          (cons 'column (current-column)))))
+    (`(:before . "iuwu-mod")
+     (smie-rule-parent ruby-indent-level))
     ))
 
 (defun ruby--at-indentation-p (&optional point)
index dfd1c75a679679520ee0efc6fec7ace562c44c45..49478602e41414f9dbd0e68ec110c0340c704bda 100644 (file)
@@ -223,6 +223,9 @@ z = {
 foo if
   bar
 
+fail "stuff" \
+  unless all_fine?
+
 if foo?
   bar
 end