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

ruby-changes:24837

From: nobu <ko1@a...>
Date: Mon, 3 Sep 2012 18:31:49 +0900 (JST)
Subject: [ruby-changes:24837] nobu:r36888 (trunk): ruby-additional.el

nobu	2012-09-03 18:31:37 +0900 (Mon, 03 Sep 2012)

  New Revision: 36888

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

  Log:
    ruby-additional.el
    
    * misc/ruby-additional.el: missing functions in Emacs 24.

  Added files:
    trunk/misc/ruby-additional.el

Index: misc/ruby-additional.el
===================================================================
--- misc/ruby-additional.el	(revision 0)
+++ misc/ruby-additional.el	(revision 36888)
@@ -0,0 +1,59 @@
+;; missing functions in Emacs 24.
+
+(eval-after-load "\\(\\`\\|/\\)ruby-mode\\.elc?\\(\\.gz\\)?\\'"
+  (progn
+    (define-key ruby-mode-map "\C-c\C-e" 'ruby-insert-end)
+    (define-key ruby-mode-map "\C-c{" 'ruby-toggle-block)
+
+    (defun ruby-insert-end ()
+      (interactive)
+      (if (eq (char-syntax (char-before)) ?w)
+	  (insert " "))
+      (insert "end")
+      (save-excursion
+	(if (eq (char-syntax (char-after)) ?w)
+	    (insert " "))
+	(ruby-indent-line t)
+	(end-of-line)))
+
+    (defun ruby-brace-to-do-end ()
+      (when (looking-at "{")
+	(let ((orig (point)) (end (progn (ruby-forward-sexp) (point))))
+	  (when (eq (char-before) ?\})
+	    (delete-char -1)
+	    (if (eq (char-syntax (char-before)) ?w)
+		(insert " "))
+	    (insert "end")
+	    (if (eq (char-syntax (char-after)) ?w)
+		(insert " "))
+	    (goto-char orig)
+	    (delete-char 1)
+	    (if (eq (char-syntax (char-before)) ?w)
+		(insert " "))
+	    (insert "do")
+	    (when (looking-at "\\sw\\||")
+	      (insert " ")
+	      (backward-char))
+	    t))))
+
+    (defun ruby-do-end-to-brace ()
+      (when (and (or (bolp)
+		     (not (memq (char-syntax (char-before)) '(?w ?_))))
+		 (looking-at "\\<do\\(\\s \\|$\\)"))
+	(let ((orig (point)) (end (progn (ruby-forward-sexp) (point))))
+	  (backward-char 3)
+	  (when (looking-at ruby-block-end-re)
+	    (delete-char 3)
+	    (insert "}")
+	    (goto-char orig)
+	    (delete-char 2)
+	    (insert "{")
+	    (if (looking-at "\\s +|")
+		(delete-char (- (match-end 0) (match-beginning 0) 1)))
+	    t))))
+
+    (defun ruby-toggle-block ()
+      (interactive)
+      (or (ruby-brace-to-do-end)
+	  (ruby-do-end-to-brace)))
+    ))

Property changes on: misc/ruby-additional.el
___________________________________________________________________
Added: svn:eol-style
   + LF


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

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