[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r114901: * lisp/progmodes/ruby-mode.el (ruby-smie--r
From: |
Dmitry Gutov |
Subject: |
[Emacs-diffs] trunk r114901: * lisp/progmodes/ruby-mode.el (ruby-smie--rule-parent-skip-assign): New |
Date: |
Sat, 02 Nov 2013 05:18:16 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 114901
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Gutov <address@hidden>
branch nick: trunk
timestamp: Sat 2013-11-02 09:18:11 +0400
message:
* lisp/progmodes/ruby-mode.el (ruby-smie--rule-parent-skip-assign): New
function, replacement for `smie-rule-parent' for when we want to
skip over our direct parent if it's an assignment token..
(ruby-smie-rules): Use it.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/progmodes/ruby-mode.el
rubymode.el-20091113204419-o5vbwnq5f7feedwu-8804
test/indent/ruby.rb ruby.rb-20120424165921-h044139hbrd7snvw-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-11-02 01:10:10 +0000
+++ b/lisp/ChangeLog 2013-11-02 05:18:11 +0000
@@ -1,5 +1,12 @@
2013-11-02 Dmitry Gutov <address@hidden>
+ * progmodes/ruby-mode.el (ruby-smie--rule-parent-skip-assign): New
+ function, replacement for `smie-rule-parent' for when we want to
+ skip over our direct parent if it's an assignment token..
+ (ruby-smie-rules): Use it.
+
+2013-11-02 Dmitry Gutov <address@hidden>
+
* progmodes/ruby-mode.el Use `syntax-propertize-function'
unconditionally. Remove now unnecessary forward declarations.
Remove XEmacs-specific setup.
=== modified file 'lisp/progmodes/ruby-mode.el'
--- a/lisp/progmodes/ruby-mode.el 2013-11-02 01:10:10 +0000
+++ b/lisp/progmodes/ruby-mode.el 2013-11-02 05:18:11 +0000
@@ -467,6 +467,16 @@
(t ";")))
(t tok)))))))
+(defun ruby-smie--rule-parent-skip-assign ()
+ (let* ((parent (smie-indent--parent))
+ (tok (caddr parent)))
+ (if (and (stringp tok) (string-match-p "[+-*&|^]?=\\'" tok))
+ (progn
+ (goto-char (cadr parent))
+ (let (smie--parent)
+ (smie-rule-parent)))
+ (smie-rule-parent))))
+
(defun ruby-smie-rules (kind token)
(pcase (cons kind token)
(`(:elem . basic) ruby-indent-level)
@@ -489,7 +499,7 @@
((and (equal token "{")
(not (smie-rule-prev-p "(" "{" "[" "," "=>" "=" "return" ";")))
;; Curly block opener.
- (smie-rule-parent))
+ (ruby-smie--rule-parent-skip-assign))
((smie-rule-hanging-p)
;; Treat purely syntactic block-constructs as being part of their
parent,
;; when the opening statement is hanging.
@@ -498,7 +508,7 @@
(cons 'column (smie-indent-virtual)))))
(`(:after . ,(or "=" "iuwu-mod")) 2)
(`(:after . " @ ") (smie-rule-parent))
- (`(:before . "do") (smie-rule-parent))
+ (`(:before . "do") (ruby-smie--rule-parent-skip-assign))
(`(,(or :before :after) . ".")
(unless (smie-rule-parent-p ".")
(smie-rule-parent ruby-indent-level)))
=== modified file 'test/indent/ruby.rb'
--- a/test/indent/ruby.rb 2013-10-27 03:25:03 +0000
+++ b/test/indent/ruby.rb 2013-11-02 05:18:11 +0000
@@ -225,6 +225,14 @@
bar
end
+a = b {
+ c
+}
+
+aa = bb do
+ cc
+end
+
# Examples below still fail with `ruby-use-smie' on:
foo = [1, 2, 3].map do |i|
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r114901: * lisp/progmodes/ruby-mode.el (ruby-smie--rule-parent-skip-assign): New,
Dmitry Gutov <=