]> code.delx.au - gnu-emacs/commitdiff
* lisp/progmodes/ruby-mode.el (ruby-smie--args-separator-p): Be more
authorDmitry Gutov <dgutov@yandex.ru>
Sat, 26 Oct 2013 01:16:37 +0000 (05:16 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Sat, 26 Oct 2013 01:16:37 +0000 (05:16 +0400)
specific in what the first arg can be: a non-keyword word,
string/regexp/percent literal opener, opening paren, or unary
operator followed directly by word.

* test/automated/ruby-mode-tests.el (ruby-toggle-block-to-brace): Fix
the test, in respect to adding the space after the curly.

lisp/ChangeLog
lisp/progmodes/ruby-mode.el
test/ChangeLog
test/automated/ruby-mode-tests.el
test/indent/ruby.rb

index 82e03a48da4fba273a23123dd39b7e87a4deefc5..e25d5bab1e1426f49c108f3a641063164044025b 100644 (file)
@@ -1,3 +1,10 @@
+2013-10-26  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-smie--args-separator-p): Be more
+       specific in what the first arg can be: a non-keyword word,
+       string/regexp/percent literal opener, opening paren, or unary
+       operator followed directly by word.
+
 2013-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * progmodes/prolog.el: Remove old indent; use post-self-insert-hook.
index dbca0d4dd26ed086c6a47c9f8f84a638ba93af06..b85385a7428305fefdbfae0318775f8e5f731eae 100644 (file)
@@ -372,9 +372,18 @@ explicitly declared in magic comment."
   (and
    (< pos (line-end-position))
    (or (eq (char-syntax (preceding-char)) '?w)
+       ;; FIXME: Check that the preceding token is not a keyword.
+       ;; This isn't very important most of the time, though.
        (and (memq (preceding-char) '(?! ??))
             (eq (char-syntax (char-before (1- (point)))) '?w)))
-   (memq (char-syntax (char-after pos)) '(?w ?\"))))
+   (or (and (eq (char-syntax (char-after pos)) ?w)
+            (not (looking-at (regexp-opt '("unless" "if" "while" "until"
+                                           "else" "elsif" "do" "end")
+                                         'symbols))))
+       (memq (syntax-after pos) '(7 15))
+       (save-excursion
+         (goto-char pos)
+         (looking-at "\\s(\\|[-+!~:]\\sw")))))
 
 (defun ruby-smie--at-dot-call ()
   (and (eq ?w (char-syntax (following-char)))
index 10acf1879672b4a72431ee287fd891f8d1651509..6572b9c46e4096b290a95df9c37f542bdc8d21ca 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-26  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * automated/ruby-mode-tests.el (ruby-toggle-block-to-brace): Fix
+       the test, in respect to adding the space after the curly.
+
 2013-10-24  Michael Albinus  <michael.albinus@gmx.de>
 
        * automated/ert-tests.el (ert-test-skip-unless): New test case.
index dafe393377bee8d925c1a32ed59b6c15de68b3e5..dc86b4a291470a69df49e88b6acae44524bf783f 100644 (file)
@@ -292,8 +292,8 @@ VALUES-PLIST is a list with alternating index and value elements."
     (should (string= "foo do |b|\nend" (buffer-string)))))
 
 (ert-deftest ruby-toggle-block-to-brace ()
-  (let ((pairs '((16 . "foo {|b| b + 2 }")
-                 (15 . "foo {|b|\n  b + 2\n}"))))
+  (let ((pairs '((17 . "foo { |b| b + 2 }")
+                 (16 . "foo { |b|\n  b + 2\n}"))))
     (dolist (pair pairs)
       (with-temp-buffer
         (let ((fill-column (car pair)))
index 1fd19cf34d439eb609b4e3d6a52970effc778393..9532a4b42458b1002081dda85881e4f498ca975c 100644 (file)
@@ -174,6 +174,19 @@ method? arg1,
 method! arg1,
         arg2
 
+method !arg1,
+       arg2
+
+method [],
+       arg2
+
+method :foo,
+       :bar
+
+method (a + b),
+       c, :d => :e,
+       f: g
+
 it "is a method call with block" do |asd|
   foo
 end
@@ -213,18 +226,6 @@ foo = [1, 2, 3].map do |i|
   i + 1
 end
 
-method !arg1,
-       arg2
-
-method [],
-       arg2
-
-method :foo,
-       :bar
-
-method (a + b),
-       c
-
 bar.foo do # "." is parent to "do"; it shouldn't be.
   bar
 end