[#1378] differences between Module and Class ? — Mathieu Bouchard <matju@...>

25 messages 2003/08/11
[#1387] Re: differences between Module and Class ? — matz@... (Yukihiro Matsumoto) 2003/08/12

Hi,

[#1442] Re: differences between Module and Class ? — Mathieu Bouchard <matju@...> 2003/08/21

[#1406] _id2ref bug? — Ryan Pavlik <rpav@...>

While debugging some caching code, I've come across a segfault related

22 messages 2003/08/14
[#1407] Re: _id2ref bug? — matz@... (Yukihiro Matsumoto) 2003/08/14

Hi,

[#1413] Re: _id2ref bug? (REPRODUCED, short) — Ryan Pavlik <rpav@...> 2003/08/14

On Fri, 15 Aug 2003 01:57:18 +0900

Re: [PATCH] ruby-mode.el

From: Ryan Pavlik <rpav@...>
Date: 2003-08-21 23:24:14 UTC
List: ruby-core #1450
Crud, my mail has been slow, and I just got this back, but I realize I
posted an erroneous version.  Attached is a corrected patch.

The difference is that "\\<\\<" has been changed to "<<".  This
came from an initial misunderstanding of emacs regexps on my part.

I haven't had any problems with this version.

-- 
Ryan Pavlik <rpav@users.sf.net>

"Let super-dimensional physics take its course!" - 8BT

Attachments (1)

ruby-mode.el.patch (2.02 KB, text/x-diff)
--- ruby-mode.el	2003-08-21 11:52:27.000000000 -0700
+++ ruby-mode.el-rpav	2003-08-21 12:54:23.000000000 -0700
@@ -61,7 +61,7 @@
   (concat "[?$/%(){}#\"'`.:]\\|\\[\\|\\]\\|\\<\\("
 	  ruby-block-beg-re
 	  "\\|" ruby-block-end-re
-	  "\\)\\>\\|^=begin")
+	  "\\)\\>\\|^=begin\\|<<[-]?[\"']?\\([A-Z]+\\)[\"']?")
   )
 
 (defconst ruby-negative
@@ -452,6 +452,11 @@
 		    (forward-line 1)
 		  (setq in-string (match-end 0))
 		  (goto-char indent-point)))
+	       ((looking-at "<<[-]?[\"']?\\([A-Z]+\\)[\"']?")
+		(if (re-search-forward (match-string 1) indent-point t)
+		    (forward-line 1)
+		  (setq in-string (match-end 0))
+		  (goto-char indent-point)))
 	       (t
 		(error (format "bad string %s"
 			       (buffer-substring (point) pnt)
@@ -775,6 +780,33 @@
 	    t)
 	nil)))
 
+  (defun ruby-font-lock-here-docs (limit)
+    (if (re-search-forward "<<[-]?[\"']?\\([A-Z]+\\)[\"']?" limit t)
+	(let (beg)
+	  (beginning-of-line)
+          (forward-line)
+	  (setq beg (point))
+	  (forward-line 1)
+	  (if (re-search-forward (match-string 1) nil t)
+	      (progn
+		(set-match-data (list beg (point)))
+		t)))))
+
+  (defun ruby-font-lock-maybe-here-docs (limit)
+    (let (beg)
+      (save-excursion
+	(if (re-search-backward "<<[-]?[\"']?\\([A-Z]+\\)[\"']?" nil t)
+	    (progn
+	      (beginning-of-line)
+              (forward-line)
+	      (setq beg (point)))))
+      (if (and beg (re-search-forward (match-string 1) nil t))
+	  (progn
+	    (set-match-data (list beg (point)))
+	    t)
+	nil)))
+
+
   (defvar ruby-font-lock-keywords
     (list
      (cons (concat
@@ -833,6 +865,13 @@
        0 font-lock-comment-face t)
      '(ruby-font-lock-maybe-docs
        0 font-lock-comment-face t)
+     ;; "here" document
+     '(ruby-font-lock-here-docs
+       0 font-lock-string-face t)
+     '(ruby-font-lock-maybe-here-docs
+       0 font-lock-string-face t)
+     '("\\(<<[-]?[\"']?[A-Z]+[\"']?\\)"
+       1 font-lock-string-face t)
      ;; constants
      '("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)"
        2 font-lock-type-face)

In This Thread