[#1338] 1.8.0: possible socket problem with mswin32 builds — Jos Backus <jos@...>
Fyi: I tried the following command with two Ruby distributions on Windows 2003
5 messages
2003/08/05
[#1342] SEGV in GC under Linux — Dave Thomas <dave@...>
A while back I was getting double free()s reported on my MAC box when
5 messages
2003/08/05
[#1364] Broken REXML in Ruby 1.8 — Alexander Bokovoy <a.bokovoy@...>
Greetings!
1 message
2003/08/06
[#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
[#1452] Re: differences between Module and Class ?
— matz@... (Yukihiro Matsumoto)
2003/08/22
Hi,
[#1469] Re: differences between Module and Class ?
— Mathieu Bouchard <matju@...>
2003/08/23
[#1470] Re: differences between Module and Class ?
— matz@... (Yukihiro Matsumoto)
2003/08/24
Hi,
[#1472] Re: differences between Module and Class ?
— Mathieu Bouchard <matju@...>
2003/08/24
[#1444] Re: differences between Module and Class ?
— ts <decoux@...>
2003/08/21
>>>>> "M" == Mathieu Bouchard <matju@sympatico.ca> writes:
[#1381] proc/block with return — Mathieu Bouchard <matju@...>
9 messages
2003/08/11
[#1394] Std lib and updating PickAxe (was Re: proc/block with return) — "Gavin Sinclair" <gsinclair@...>
> [Dave wrote:]
5 messages
2003/08/13
[#1400] subclassing Structs — Eugene Scripnik <Eugene.Scripnik@...>
I'm trying to create class which behaves as struct (almost) and has some
5 messages
2003/08/13
[#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
[#1415] Re: _id2ref bug? (REPRODUCED, short)
— matz@... (Yukihiro Matsumoto)
2003/08/15
Hi,
[#1416] Re: _id2ref bug? (another break)
— Ryan Pavlik <rpav@...>
2003/08/15
On Fri, 15 Aug 2003 09:21:39 +0900
[#1417] Re: _id2ref bug? (another break)
— nobu.nokada@...
2003/08/15
Hi,
[#1418] Re: _id2ref bug? (another break)
— Ryan Pavlik <rpav@...>
2003/08/15
On Fri, 15 Aug 2003 12:35:32 +0900
[#1424] Re: _id2ref bug? (another break)
— ts <decoux@...>
2003/08/15
>>>>> "n" == nobu nokada <nobu.nokada@softhome.net> writes:
[#1447] ruby-mode.el — Ryan Pavlik <rpav@...>
Attached is a patch for ruby-mode.el that adds font hilighting for
7 messages
2003/08/21
[#1450] Re: [PATCH] ruby-mode.el
— Ryan Pavlik <rpav@...>
2003/08/21
Crud, my mail has been slow, and I just got this back, but I realize I
[#1454] NODE_DSTR and NODE_EVSTR? — Robert Feldt <feldt@...>
How are "dynamic" strings represented internally?
7 messages
2003/08/22
[PATCH] my next attempt... (Was: [PATCH] ruby-mode.el)
From:
Ryan Pavlik <rpav@...>
Date:
2003-08-22 21:00:57 UTC
List:
ruby-core #1466
On Sat, 23 Aug 2003 01:28:01 +0900 matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > Hi, > > In message "Re: [PATCH] ruby-mode.el" > on 03/08/22, Ryan Pavlik <rpav@mephle.com> writes: > > |I haven't had any problems with this version. > > Looks nice. But heredoc terminator can be any identifier or string, > so that regex is better to be extended. > > matz. I did not realize this. :-) Thanks. Here's an updated version, plus a test-case file that I hope catches most variation. -- Ryan Pavlik <rpav@mephle.com> "Well, I don't like to brag, but I *am* a villain after all." - 8BT
Attachments (2)
ruby-mode.el.patch
(2.68 KB, text/x-diff)
--- ruby-mode.el 2003-08-21 11:52:27.000000000 -0700
+++ ruby-mode.el-rpav 2003-08-22 13:52:32.000000000 -0700
@@ -57,11 +57,26 @@
(defconst ruby-block-end-re "end")
+(defconst ruby-here-doc-beg-re
+ (concat "<<\\([-]\\)?\\([a-zA-Z0-9]+\\)\\|"
+ "<<\\([-]\\)?[\"]\\([^\"]+\\)[\"]\\|"
+ "<<\\([-]\\)?[']\\([^']+\\)[']"))
+
+(defun ruby-here-doc-end-match ()
+ (concat "^"
+ (if (or (match-string 1)
+ (match-string 3)
+ (match-string 5))
+ "[ \t]*" nil)
+ (or (match-string 2)
+ (match-string 4)
+ (match-string 6))))
+
(defconst ruby-delimiter
(concat "[?$/%(){}#\"'`.:]\\|\\[\\|\\]\\|\\<\\("
ruby-block-beg-re
"\\|" ruby-block-end-re
- "\\)\\>\\|^=begin")
+ "\\)\\>\\|^=begin\\|" ruby-here-doc-beg-re)
)
(defconst ruby-negative
@@ -452,6 +467,12 @@
(forward-line 1)
(setq in-string (match-end 0))
(goto-char indent-point)))
+ ((looking-at ruby-here-doc-beg-re)
+ (if (re-search-forward (ruby-here-doc-end-match)
+ 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 +796,35 @@
t)
nil)))
+ (defun ruby-font-lock-here-docs (limit)
+ (if (re-search-forward ruby-here-doc-beg-re limit t)
+ (let (beg)
+ (beginning-of-line)
+ (forward-line)
+ (setq beg (point))
+ (if (re-search-forward (ruby-here-doc-end-match) 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 ruby-here-doc-beg-re nil t)
+ (progn
+ (beginning-of-line)
+ (forward-line)
+ (setq beg (point)))))
+ (let ((end-match (ruby-here-doc-end-match)))
+ (if (and beg
+ (not (re-search-backward end-match beg t))
+ (re-search-forward end-match nil t))
+ (progn
+ (set-match-data (list beg (point)))
+ t)
+ nil))))
+
+
(defvar ruby-font-lock-keywords
(list
(cons (concat
@@ -833,6 +883,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)
+ `(,ruby-here-doc-beg-re
+ 0 font-lock-string-face t)
;; constants
'("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)"
2 font-lock-type-face)
test.rb
(347 Bytes, text/x-ruby)
puts <<123
abc
123
123
puts "go about our merry way", 1
puts <<123
that shouldn\'t have happened
blah blah lbah
123
123
puts <<ABC, 1, 2
this is a test
ABC
puts <<-"abc def"
hello world
abc def
puts <<"abc def"
foo bar
abc def
puts <<'ghi jkl#@!#', 4, 5, 6
bleh bleh
ghi jkl#@!#
puts "and we're all happy again"