[#8566] Visions for 2001/1.7.x development? — Robert Feldt <feldt@...>

Hi matz and other Ruby developers,

18 messages 2001/01/03
[#8645] Re: Visions for 2001/1.7.x development? — matz@... (Yukihiro Matsumoto) 2001/01/04

Hi,

[#8580] bug?? — jmichel@... (Jean Michel)

I don't understand the following behaviour:

19 messages 2001/01/03

[#8633] Interesting Language performance comparisons - Ruby, OCAML etc — "g forever" <g24ever@...>

13 messages 2001/01/04

[#8774] No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...>

So, why not include Comparable in Array by default? It shouldn't have any

28 messages 2001/01/07
[#8779] Re: No :<, :>, etc. methods for Array — matz@... (Yukihiro Matsumoto) 2001/01/07

Hi,

[#8780] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

matz@zetabits.com (Yukihiro Matsumoto) wrote:

[#8781] Re: No :<, :>, etc. methods for Array — gotoken@... (GOTO Kentaro) 2001/01/07

In message "[ruby-talk:8780] Re: No :<, :>, etc. methods for Array"

[#8782] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:

[#8829] Sandbox (again) — wys@... (Clemens Wyss)

Hi,

20 messages 2001/01/08
[#8864] Re: Sandbox (again) — Clemens Hintze <c.hintze@...> 2001/01/08

On 8 Jan, Clemens Wyss wrote:

[#8931] String confusion — Anders Bengtsson <ndrsbngtssn@...>

Hello everyone,

21 messages 2001/01/09
[#8937] Re: String confusion — matz@... (Yukihiro Matsumoto) 2001/01/09

Hi,

[#8953] Please remove account from files — "Thomas Daniels" <westernporter@...>

Please take my e-mail address from your files and "CANCEL" my =

14 messages 2001/01/09
[#8983] Re: Please remove account from files — John Rubinubi <rubinubi@...> 2001/01/10

On Wed, 10 Jan 2001, Thomas Daniels wrote:

[#9020] time to divide -talk? (was: Please remove account from files) — Yasushi Shoji <yashi@...> 2001/01/10

At Wed, 10 Jan 2001 14:23:30 +0900,

[#9047] Re: time to divide -talk? (was: Please remov e account from files) — Aleksi Niemel<aleksi.niemela@...>

Yasushi Shoji:

27 messages 2001/01/10
[#9049] Re: time to divide -talk? — Yasushi Shoji <yashi@...> 2001/01/10

At Thu, 11 Jan 2001 00:20:45 +0900,

[#9153] what about this begin? — Anders Strandl Elkj誡 <ase@...> 2001/01/11

[#9195] Re: Redefining singleton methods — ts <decoux@...>

>>>>> "H" == Horst Duch=EAne?= <iso-8859-1> writes:

10 messages 2001/01/12

[#9242] polymorphism — Maurice Szmurlo <maurice@...>

hello

73 messages 2001/01/13

[#9279] Can ruby replace php? — Jim Freeze <jim@...>

When I read that ruby could be used to replace PHP I got really

15 messages 2001/01/14

[#9411] The Ruby Way — "Conrad Schneiker" <schneiker@...>

As a member of the "Big 8" newsgroups, "The Ruby Way" (of posting) is to

15 messages 2001/01/17

[#9462] Re: reading an entire file as a string — ts <decoux@...>

>>>>> "R" == Raja S <raja@cs.indiana.edu> writes:

35 messages 2001/01/17
[#9465] Re: reading an entire file as a string — Dave Thomas <Dave@...> 2001/01/17

raja@cs.indiana.edu (Raja S.) writes:

[#9521] Larry Wall INterview — ianm74@...

Larry was interviewed at the Perl/Ruby conference in Koyoto:

20 messages 2001/01/18
[#10583] Re: Larry Wall INterview — "greg strockbine" <gstrock@...> 2001/02/08

Larry Wall's interview is how I found out

[#9610] Re: 101 Misconceptions About Dynamic Languages — "Ben Tilly" <ben_tilly@...>

"Christian" <christians@syd.microforte.com.au> wrote:

13 messages 2001/01/20

[#9761] Re: 101 Misconceptions About Dynamic Languages — ts <decoux@...>

>>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:

16 messages 2001/01/23

[#9792] Ruby 162 installer available — Dave Thomas <Dave@...>

15 messages 2001/01/24

[#9958] Re: Vim syntax files again. — "Conrad Schneiker" <schneik@...>

Hugh Sasse wrote:

14 messages 2001/01/26
[#10065] Re: Vim syntax files again. — Hugh Sasse Staff Elec Eng <hgs@...> 2001/01/29

On Sat, 27 Jan 2001, Conrad Schneiker wrote:

[#9975] line continuation — "David Ruby" <ruby_david@...>

can a ruby statement break into multiple lines?

18 messages 2001/01/27
[#9976] Re: line continuation — Michael Neumann <neumann@...> 2001/01/27

On Sat, 27 Jan 2001, David Ruby wrote:

[#9988] Re: line continuation — harryo@... (Harry Ohlsen) 2001/01/28

>A statement break into mutliple lines if it is not complete,

[ruby-talk:9218] Re: how to replace `end' with `endif' etc. ?

From: behrends@... (Reimer Behrends)
Date: 2001-01-12 18:10:03 UTC
List: ruby-talk #9218
Matthias Kopfermann (kopfermann@trio-hittfeld.de) wrote:
> hi fellows.
> As a new user of ruby which is really wonderful i still find these
> `while ... end', `if ... end',`def ... end' things ugly ( perhaps that's the
> only thing I really don't like at all). I would much more like to
> have `endwhile', `endif' `enddef' `endclass'... as it seems to
> me, that this makes searching much easier.
[...]
> ps: i didn't like the bracing of C ( the same problem or even
>       worse ) as the closed brace means many different things but
>       at least i can jump to the beginning with `%' in my vi.

If you're using vim, you may want to try the following (warning: it
doesn't exactly follow good coding standards for vim, being a quick
hack, and it was written using version 6.0, which is still in beta, but
may work with version 5.x). It does require the ruby interface to be
compiled in. Use at your own risk.

The code will remap the '%' command to not only match the characters
in 'matchpairs', but also just about any piece of code that has a
comb-like structure where the last line is terminated with an 'end'
or a right brace. It can be used with visual modes and operators,
and should also work for other languages (if you adjust the "au"
lines).

			Reimer Behrends

--- ruby.vim
if has("ruby")
  function RubyEval(...)
    ruby dispatcher
    return l:result
  endfunction
  rubyf $HOME/.vim/ruby.rb
  au filetype ruby noremap % @=RubyEval("blockmatch")<CR>
  au filetype ruby noremap \% %
endif

-- ruby.rb
include VIM

def clear_message
  message ""
end

def dispatcher
  count = VIM::evaluate("a:0").to_i
  args = []
  for i in 1..count do
    args << VIM::evaluate("a:"+i.to_s)
  end
  fname = args.shift
  result = send(fname, *args).to_s
  result = result.gsub("[\\\\\"]", "\\\\\\&")
  VIM::command "let l:result = \"#{result}\""
end

def compute_indent(s)
  indent = 0
  ts = 8 # Tab stops
  for i in 0..s.length-1 do
    case s[i]
    when ?\s then
      indent += 1
    when ?\t then
      if indent % ts == 0 then
	indent += ts
      else
	indent = indent/ts * ts + ts
      end
    else
      return indent
    end
  end
  return indent
end

def blockmatch
  window = Window.current
  buffer = window.buffer
  row, col = window.cursor
  line = buffer[row]
  if evaluate("&matchpairs").split(/[:,]/).index(line[col..col]) then
    clear_message
    return "\\%"
  end
  lines = buffer.length
  indent = compute_indent(line)
  if /^[ \t]*(end\b|\})/.match(line) then
    row -= 1
    lastrow = 0
    lastindent = -1
    while row > 1 do
      line = buffer[row]
      unless line =~ /^[ \t]*$/ then
	newindent = compute_indent(line)
	if newindent < indent then
	  row = lastrow
	  break
	elsif newindent == indent then
	  if line =~ /^[ \t]*(end\b|\})/ then
	    break
	  end
	  if newindent != lastindent then
	    lastrow = row
	  end
	end
	lastindent = newindent
      end
      row -= 1
    end
    if lastrow >= 1 then
      row = lastrow
    end
  else
    row += 1
    while row <= buffer.length do
      line = buffer[row]
      unless line =~ /^[ \t]*$/ then
	newindent = compute_indent(line)
	if newindent == indent then
	  break
	end
	if newindent < indent then
	  row = 0
	  break
	end
      end
      row += 1
    end
  end
  if row < 1 || row > buffer.length then
    message 'No match found.'
  else
    # col = /^[ \t]*/.match(buffer[row]).to_s.length
    # window.cursor = [ row, col ]
    clear_message
    return row.to_s+"gg"
  end
end

In This Thread