[前][次][番号順一覧][スレッド一覧]

ruby-changes:26093

From: nobu <ko1@a...>
Date: Mon, 3 Dec 2012 12:43:55 +0900 (JST)
Subject: [ruby-changes:26093] nobu:r38150 (trunk): ruby-mode.el: fix argument indent

nobu	2012-12-03 12:43:40 +0900 (Mon, 03 Dec 2012)

  New Revision: 38150

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38150

  Log:
    ruby-mode.el: fix argument indent
    
    * misc/ruby-mode.el (ruby-block-end-re, ruby-delimiter)
      (ruby-mode-syntax-table, ruby-parse-partial, ruby-beginning-of-indent):
      merge from Emacs.
    * misc/ruby-mode.el (ruby-calculate-indent): fix indentation of
      argument lines in parentheses.  [Bug #5140]

  Modified files:
    trunk/ChangeLog
    trunk/misc/ruby-mode.el
    trunk/test/misc/test_ruby_mode.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 38149)
+++ ChangeLog	(revision 38150)
@@ -1,3 +1,12 @@
+Mon Dec  3 12:43:35 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* misc/ruby-mode.el (ruby-block-end-re, ruby-delimiter)
+	  (ruby-mode-syntax-table, ruby-parse-partial, ruby-beginning-of-indent):
+	  merge from Emacs.
+
+	* misc/ruby-mode.el (ruby-calculate-indent): fix indentation of
+	  argument lines in parentheses.  [Bug #5140]
+
 Mon Dec  3 07:52:41 2012  Eric Hodel  <drbrain@s...>
 
 	* lib/rdoc/parser.rb:  Improved modeline support.  Patch by nobu.
Index: misc/ruby-mode.el
===================================================================
--- misc/ruby-mode.el	(revision 38149)
+++ misc/ruby-mode.el	(revision 38150)
@@ -104,7 +104,7 @@
   (regexp-opt (append ruby-modifier-beg-keywords ruby-block-op-keywords))
   "Regexp to match hanging block modifiers.")
 
-(defconst ruby-block-end-re "\\<end\\>")
+(defconst ruby-block-end-re "\\_<end\\_>")
 
 (defconst ruby-here-doc-beg-re
   "\\(<\\)<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)")
@@ -132,9 +132,9 @@
                 (concat "-?\\([\"']\\|\\)" contents "\\1"))))))
 
 (defconst ruby-delimiter
-  (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\<\\("
+  (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\_<\\("
           ruby-block-beg-re
-          "\\)\\>\\|" ruby-block-end-re
+          "\\)\\_>\\|" ruby-block-end-re
           "\\|^=begin\\|" ruby-here-doc-beg-re)
   )
 
@@ -190,6 +190,7 @@
   (modify-syntax-entry ?$ "." ruby-mode-syntax-table)
   (modify-syntax-entry ?? "_" ruby-mode-syntax-table)
   (modify-syntax-entry ?_ "_" ruby-mode-syntax-table)
+  (modify-syntax-entry ?: "_" ruby-mode-syntax-table)
   (modify-syntax-entry ?< "." ruby-mode-syntax-table)
   (modify-syntax-entry ?> "." ruby-mode-syntax-table)
   (modify-syntax-entry ?& "." ruby-mode-syntax-table)
@@ -601,7 +602,7 @@
               (setq nest (cons (cons nil pnt) nest))
               (setq depth (1+ depth))))
         (goto-char (match-end 0)))
-       ((looking-at (concat "\\<\\(" ruby-block-beg-re "\\)\\>"))
+       ((looking-at (concat "\\_<\\(" ruby-block-beg-re "\\)\\_>"))
         (and
          (save-match-data
            (or (not (looking-at (concat "do" ruby-keyword-end-re)))
@@ -731,6 +732,9 @@
               (cond ((and (eq deep t) (eq (car (nth 1 state)) paren))
                      (skip-syntax-backward " ")
                      (setq indent (1- (current-column))))
+		    ((eq deep 'space)
+		     (goto-char (cdr (nth 1 state)))
+		     (setq indent (1+ (current-column))))
                     ((let ((s (ruby-parse-region (point) ruby-indent-point)))
                        (and (nth 2 s) (> (nth 2 s) 0)
                             (or (goto-char (cdr (nth 1 s))) t)))
@@ -890,12 +894,12 @@
 With argument, do this that many times.
 Returns t unless search stops due to end of buffer."
   (interactive "p")
-  (and (re-search-backward (concat "^\\(" ruby-block-beg-re "\\)\\b")
+  (and (re-search-backward (concat "^\\(" ruby-block-beg-re "\\)\\_>")
                            nil 'move (or arg 1))
        (progn (beginning-of-line) t)))
 
 (defun ruby-beginning-of-indent ()
-  (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\b")
+  (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\_>")
                            nil 'move)
        (progn
          (beginning-of-line)
@@ -1373,7 +1377,7 @@
        1 font-lock-function-name-face)
      ;; keywords
      (cons (concat
-            "\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(defined\\?\\|"
+            "\\(^\\|[^_:.@$]\\|\\.\\.\\)\\_<\\(defined\\?\\|"
             (regexp-opt
              '("alias"
                "and"
@@ -1418,7 +1422,7 @@
      ;; here-doc beginnings
      (list ruby-here-doc-beg-re 0 'font-lock-string-face)
      ;; variables
-     '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>"
+     '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\_<\\(nil\\|self\\|true\\|false\\)\\>"
        2 font-lock-variable-name-face)
      ;; variables
      '("\\(\\$\\([^a-zA-Z0-9 \n]\\|[0-9]\\)\\)\\W"
@@ -1434,7 +1438,7 @@
      '("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
        (2 font-lock-string-face))
      ;; constants
-     '("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)"
+     '("\\(^\\|[^_]\\)\\_<\\([A-Z]+\\(\\w\\|_\\)*\\)"
        2 font-lock-type-face)
      ;; symbols
      '("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
Index: test/misc/test_ruby_mode.rb
===================================================================
--- test/misc/test_ruby_mode.rb	(revision 38149)
+++ test/misc/test_ruby_mode.rb	(revision 38150)
@@ -165,5 +165,17 @@
       |  end
       |')
     end
+
+    def test_spread_arguments
+      assert_indent('
+      |foo(1,
+      |    2,
+      |    3)
+      |', '
+      |foo(1,
+      | 2,
+      |  3)
+      |')
+    end
   end
 end if TestRubyMode::EMACS

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]