[#17480] Array#fill behavior — "Vladimir Sizikov" <vsizikov@...>
Hi,
[#17488] HOME and USERPROFILE aliasing under Windows — "John Lam (IRONRUBY)" <jflam@...>
MRI currently expects the HOME environment variable to be set under Windows=
[#17491] [Ruby 1.8.7 - Bug #213] (Open) Different ERB behavior across versions — Federico Builes <redmine@...>
Issue #213 has been reported by Federico Builes.
[#17503] Possible misbehaviour in mkmf.rb package — S駻gio Durigan J佖ior <sergiodj@...>
Hello all,
On Wednesday 02 July 2008, S駻gio Durigan J佖ior wrote:
[#17509] YAML in Ruby — Trans <transfire@...>
Might we ever imagine a time when YAML is an integral part of Ruby?
[#17518] [Ruby 1.8 - Bug #216] (Open) Memory leaks in 1.8.6p230 and p238 — Igal Koshevoy <redmine@...>
Issue #216 has been reported by Igal Koshevoy.
[#17566] rubychecker - runs checks on a Ruby interpreter — Igal Koshevoy <igal@...>
I've put together a shell script that runs checks on a Ruby interpreter.
Why not write it in ruby?
Kurt Stephens wrote:
I've split up the code of rubychecker. One git repo has the GNU Bash
[#17574] rubyspec reports for ruby_1_8, ruby_1_8_7, and v1_8_6_p265 — Stephen Bannasch <stephen.bannasch@...>
I wanted to learn more about specs recently started using git and so
Stephen Bannasch wrote:
[#17595] Crashes and hangups on latest 1_8 branch — "Vladimir Sizikov" <vsizikov@...>
Hi,
[#17609] [PATCH] Fix Makefile update-rubyspec task — Gaston Ramos <ramos.gaston@...>
Hi, I'm trying to run rubyspec tests on 1.8 branch and get this error:
[#17615] [PATCH] ruby-mode.el: Fix here-doc strings with inner quotes — Nathan Weizenbaum <nex342@...>
At the moment, ruby-mode.el uses font-lock-keywords as opposed to
It was designed to fix the following case:
Here's a third patch that fixes a bug in the second and uses a quicker
One more patch which fixes a few bugs in the the last one.
Hi,
Looks like version 22 doesn't support explicitly numbered regexp groups.
Hi,
Hi,
Alright, here's a version that fixes both the highlighting bug and the
Hi,
Are you asking me? If so, go right ahead. Also, for posterity's sake,
One more bugfix.
Hi,
[#17627] ncurses-specific functions in ruby's curses — "Kirill A. Shutemov" <kirill@...>
Is it possible to add ncurses-specific functions to curses ruby module?
On Sunday 06 July 2008, Kirill A. Shutemov wrote:
On Mon, Jul 07, 2008 at 10:25:42AM +0200, Marc Haisenko wrote:
On Monday 07 July 2008, Kirill A. Shutemov wrote:
[#17629] Proper exception out of throw? — "Vladimir Sizikov" <vsizikov@...>
Hi,
[#17644] Features to be included in Ruby 1.9.1 — "Yugui (Yuki Sonoda)" <yugui@...>
Hi, all
Dave Thomas wrote:
There are two things I would like to see added to 1.9.1. A one-byte
Hi,
Hi,
In article <E1KGF2L-0000Qx-K5@x61.netlab.jp>,
Hi,
[#17674] [Ruby 1.8 - Bug #238] (Open) Ruby doesn't respect the Windows read-only flag — Jim Deville <redmine@...>
Issue #238 has been reported by Jim Deville.
[#17690] [Ruby 1.8 - Feature #249] (Open) wish list item: binding.set_local_variable — Roger Pack <redmine@...>
Issue #249 has been reported by Roger Pack.
[#17694] Mark functions not called on exit — Charlie Savage <cfis@...>
Hi everyone,
Hi,
[#17699] Omissions on the ruby-lang.org website and in redmine — "Austin Ziegler" <halostatue@...>
As far as I can tell, there's nowhere on the ruby-lang.org website
On Jul 9, 2008, at 8:05 AM, Austin Ziegler wrote:
On Jul 9, 2008, at 6:07 PM, Ryan Davis wrote:
On Wed, Jul 9, 2008 at 5:14 PM, James Gray <james@grayproductions.net> wrote:
[#17708] [Ruby 1.8 - Bug #252] (Open) Array#sort doesn't respect overridden <=> — Ryan Davis <redmine@...>
Issue #252 has been reported by Ryan Davis.
Issue #252 has been updated by Vladimir Sizikov.
Hi,
Nobuyoshi Nakada wrote:
[#17759] Ruby 1.9.1 Feature and 1.9.0-3 release plan — "Yugui (Yuki Sonoda)" <yugui@...>
Thank you for your replies to [ruby-core:17644]. < all
[#17785] [Ruby 1.9 - Bug #277] (Open) 1.9/trunk: build broken in ruby/ruby.h — Ollivier Robert <redmine@...>
Issue #277 has been reported by Ollivier Robert.
[#17812] Tracing versus coverage (was Re: Re: Features to be included in Ruby 1.9.1) — "Rocky Bernstein" <rocky.bernstein@...>
Sorry for not noticing sooner. It occurs to me that the built-in
It seems to me what you need is not a coverage system but a general hook
I just looked at the code to set the coverage hash and it seems to
Hi Rocky,
[#17822] rdoc defines Hash#method_missing — "Yusuke ENDOH" <mame@...>
Hi,
[#17829] FAILURE of "expand_path" — "C.E. Thornton" <admin@...>
Core,
C.E. Thornton wrote:
Urabe Shyouhei wrote:
On Sat, Jul 19, 2008 at 04:27:09AM +0900, C.E. Thornton wrote:
[#17833] Object allocation tracking — Christopher Thompson <cthompson@...>
Please excuse the blog spam.
[#17843] Exapand_path Patch good as stands. — "C.E. Thornton" <admin@...>
Core,
[#17865] Expand_Path: New Patch - Modified Processing — "C.E. Thornton" <admin@...>
Core,
Hi,
Hi,
[#17871] duping the NilClass — "Nasir Khan" <rubylearner@...>
While nil is an object, calling dup on it causes TypeError. This doesnt seem
Nasir Khan wrote:
On Sun, Jul 20, 2008 at 7:55 PM, Urabe Shyouhei <shyouhei@ruby-lang.org>
Meinrad Recheis wrote:
Urabe Shyouhei wrote:
I write a lot of hand crafted dup or clone because I want control as well as
Hi --
+1 to David. A convenient way to do Marshal idiom should be a new
On Mon, Jul 21, 2008 at 8:21 AM, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
Hi --
On Mon, Jul 21, 2008 at 1:02 PM, David A. Black <dblack@rubypal.com> wrote:
Hi --
On Mon, Jul 21, 2008 at 5:18 PM, David A. Black <dblack@rubypal.com> wrote:
[#17883] [Ruby 1.9 - Bug #340] (Open) 1.9/trunk does not work when compiled with llvm-gcc4 2.3 (gcc 4.2.1) — Ollivier Robert <redmine@...>
Issue #340 has been reported by Ollivier Robert.
[#17915] select returning an enumerator — "David A. Black" <dblack@...>
Hi --
[#17922] [Ruby 1.9 - Bug #345] (Open) 1.9 racc appears to seg fault — Roger Pack <redmine@...>
Issue #345 has been reported by Roger Pack.
[#17943] RUBY_ENGINE? — "Vladimir Sizikov" <vsizikov@...>
Hi,
In article <3454c9680807241200xf7cc766qb987905a3987bb78@mail.gmail.com>,
On Thu, Jul 24, 2008 at 7:46 PM, Ryan Davis <ryand-ruby@zenspider.com> wrote:
Hi,
In article <3454c9680807250054i70db563duf44b42d92ba41bfb@mail.gmail.com>,
On Sat, Jul 26, 2008 at 5:09 AM, Tanaka Akira <akr@fsij.org> wrote:
Hi,
Since this thread seemed to die out, I'll ask again:
Hi,
Hi all.
Hi,
Yukihiro Matsumoto wrote:
[#17954] Expand_path -- Proposal: An alternate method — "C.E. Thornton" <admin@...>
HI,
Hi,
Yukihiro Matsumoto wrote:
[#17973] Proposal of GC::Profiler — Narihiro Nakamura <authorNari@...>
Hi.
On Fri, 2008-07-25 at 23:59 +0900, Narihiro Nakamura wrote:
[#18016] Re: Hex string literals [Patch] — gdefty@...
Before posting the message below I thought long
[#18029] [Ruby 1.9 - Bug #378] (Open) rbconfig.rb:173: [BUG] Stack consistency error — Anonymous <redmine@...>
Issue #378 has been reported by Anonymous.
[#18033] JRuby adding ConcurrencyError for fatal concurrent modification — Charles Oliver Nutter <charles.nutter@...>
In order to limit or reduce the likelihood that multiple threads
Hi,
Yukihiro Matsumoto wrote:
[ruby-core:17776] Re: [PATCH] ruby-mode.el: Fix here-doc strings with inner quotes
Looks like version 22 doesn't support explicitly numbered regexp groups. Here's a patch that uses regexp-opt-depth instead, which is more robust anyway. Nobuyoshi Nakada wrote: > Hi, > > At Tue, 15 Jul 2008 09:30:21 +0900, > Nathan Weizenbaum wrote in [ruby-core:17772]: > >> One more patch which fixes a few bugs in the the last one. >> > > Now I tried your latest patch with Emacs 22.2.1, and it seems > to get nothing fontified. Which version of Emacs do you use? > >
Attachments (1)
Index: ruby-mode.el
===================================================================
--- ruby-mode.el (revision 18050)
+++ ruby-mode.el (working copy)
@@ -48,16 +48,26 @@
(defconst ruby-block-end-re "\\<end\\>")
(defconst ruby-here-doc-beg-re
- "<<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)")
+ "\\(<\\)<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)")
+(defconst ruby-here-doc-end-re
+ "^\\([ \t]+\\)?\\(.*\\)\\(.\\)$")
+
(defun ruby-here-doc-end-match ()
(concat "^"
- (if (match-string 1) "[ \t]*" nil)
+ (if (match-string 2) "[ \t]*" nil)
(regexp-quote
- (or (match-string 3)
- (match-string 4)
- (match-string 5)))))
+ (or (match-string 4)
+ (match-string 5)
+ (match-string 6)))))
+(defun ruby-here-doc-beg-match ()
+ (let ((contents (regexp-quote (concat (match-string 2) (match-string 3)))))
+ (concat "<<"
+ (if (match-string 1)
+ (concat "\\(?:-\\(?1:[\"']\\)\\|\\(?1:[\"']\\)" (match-string 1) "\\)" contents "\\1")
+ (concat "-?\\([\"']\\|\\)" contents "\\1")))))
+
(defconst ruby-delimiter
(concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\<\\("
ruby-block-beg-re
@@ -163,8 +173,8 @@
(eval-when-compile (require 'cl))
(defun ruby-imenu-create-index-in-block (prefix beg end)
- (let ((index-alist '()) (case-fold-search nil)
- name next pos decl sing)
+ (let ((index-alist '())
+ name next pos decl sing)
(goto-char beg)
(while (re-search-forward "^\\s *\\(\\(class\\>\\(\\s *<<\\)?\\|module\\>\\)\\s *\\([^\(<\n ]+\\)\\|\\(def\\|alias\\)\\>\\s *\\([^\(\n ]+\\)\\)" end t)
(setq sing (match-beginning 3))
@@ -211,6 +221,7 @@
(defun ruby-mode-variables ()
(set-syntax-table ruby-mode-syntax-table)
(setq local-abbrev-table ruby-mode-abbrev-table)
+ (setq case-fold-search nil)
(make-local-variable 'indent-line-function)
(setq indent-line-function 'ruby-indent-line)
(make-local-variable 'require-final-newline)
@@ -226,6 +237,8 @@
(setq indent-tabs-mode ruby-indent-tabs-mode)
(make-local-variable 'parse-sexp-ignore-comments)
(setq parse-sexp-ignore-comments t)
+ (make-local-variable 'parse-sexp-lookup-properties)
+ (setq parse-sexp-lookup-properties t)
(make-local-variable 'paragraph-start)
(setq paragraph-start (concat "$\\|" page-delimiter))
(make-local-variable 'paragraph-separate)
@@ -591,7 +604,6 @@
(save-excursion
(beginning-of-line)
(let ((indent-point (point))
- (case-fold-search nil)
state bol eol begin op-end
(paren (progn (skip-syntax-forward " ")
(and (char-after) (matching-paren (char-after)))))
@@ -1007,7 +1019,7 @@
(setq font-lock-variable-name-face font-lock-type-face))
(setq ruby-font-lock-syntactic-keywords
- '(
+ `(
;; #{ }, #$hoge, #@foo are not comments
("\\(#\\)[{$@]" 1 (1 . nil))
;; the last $', $", $` in the respective string is not variable
@@ -1023,8 +1035,64 @@
(4 (7 . ?/))
(6 (7 . ?/)))
("^\\(=\\)begin\\(\\s \\|$\\)" 1 (7 . nil))
- ("^\\(=\\)end\\(\\s \\|$\\)" 1 (7 . nil))))
+ ("^\\(=\\)end\\(\\s \\|$\\)" 1 (7 . nil))
+ (,(concat ruby-here-doc-beg-re ".*\\(\n\\)")
+ ,(+ 1 (regexp-opt-depth ruby-here-doc-beg-re))
+ (ruby-here-doc-beg-syntax))
+ (,ruby-here-doc-end-re 3 (ruby-here-doc-end-syntax))))
+ (defun ruby-in-here-doc-p ()
+ (save-excursion
+ (let ((old-point (point)))
+ (beginning-of-line)
+ (and (re-search-backward ruby-here-doc-beg-re nil t)
+ (not (ruby-here-doc-find-end old-point))))))
+
+ (defun ruby-here-doc-find-end (&optional limit)
+ "Expects the point to be on a line with one or more heredoc
+opener. Returns the buffer position at which all heredocs on the
+line are terminated, or nil if they aren't terminated before the
+buffer position `limit' or the end of the buffer."
+ (save-excursion
+ (beginning-of-line)
+ (catch 'done
+ (let ((eol (save-excursion (end-of-line) (point)))
+ ;; Fake match data such that (match-end 0) is at eol
+ (end-match-data (progn (looking-at ".*$") (match-data)))
+ beg-match-data end-re)
+ (while (re-search-forward ruby-here-doc-beg-re eol t)
+ (setq beg-match-data (match-data))
+ (setq end-re (ruby-here-doc-end-match))
+
+ (set-match-data end-match-data)
+ (goto-char (match-end 0))
+ (unless (re-search-forward end-re limit t) (throw 'done nil))
+ (setq end-match-data (match-data))
+
+ (set-match-data beg-match-data)
+ (goto-char (match-end 0)))
+ (set-match-data end-match-data)
+ (goto-char (match-end 0))
+ (point)))))
+
+ (defun ruby-here-doc-beg-syntax ()
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (unless (ruby-in-here-doc-p) (string-to-syntax "|"))))
+
+ (defun ruby-here-doc-end-syntax ()
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (let ((old-point (point))
+ (beg-exists (re-search-backward (ruby-here-doc-beg-match) nil t))
+ (eol (save-excursion (end-of-line) (point))))
+ (if (and beg-exists ; If there is a heredoc that matches this line...
+ (null (syntax-ppss-context (syntax-ppss))) ; And that's not inside a heredoc/string/comment...
+ (progn (goto-char (match-end 0)) ; And it's the last heredoc on its line...
+ (not (re-search-forward ruby-here-doc-beg-re eol t)))
+ (not (ruby-here-doc-find-end old-point))) ; And it doesn't end before this point...
+ (string-to-syntax "|")))))
+
(if (featurep 'xemacs)
(put 'ruby-mode 'font-lock-defaults
'((ruby-font-lock-keywords)
@@ -1064,35 +1132,7 @@
(modify-syntax-entry ?_ "w" tbl)
tbl))
- (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)))))
- (if (and beg
- (let ((end-match (ruby-here-doc-end-match)))
- (and (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
+ (defconst ruby-font-lock-keywords
(list
;; functions
'("^\\s *def\\s +\\([^( \t\n]+\\)"
@@ -1141,6 +1181,8 @@
"\\|")
"\\)\\>\\)")
2)
+ ;; here-doc beginnings
+ (list ruby-here-doc-beg-re 0 'font-lock-string-face)
;; variables
'("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>"
2 font-lock-variable-name-face)
@@ -1154,13 +1196,6 @@
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)
;; general delimited string
'("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
(2 font-lock-string-face))