*if_ruby.txt*   For Vim version 6.1b.  Last change: 2001 Oct 25


		  VIM REFERENCE MANUAL    by Shugo Maeda

The Ruby Interface to Vim				*ruby* *Ruby*


1. Commands			|ruby-commands|
2. The VIM module		|ruby-vim|
3. VIM::Buffer objects		|ruby-buffer|
4. VIM::Window objects		|ruby-window|
5. Global variables		|ruby-globals|

{Vi does not have any of these commands}
			*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*

The Ruby interface only works when Vim was compiled with the |+ruby| feature.

For MS-Windows you might find a Ruby library here:

	http://www.dm4lab.to/~usa/ruby_en.html

==============================================================================
1. Commands						*ruby-commands*

							*:ruby* *:rub*
:rub[y] {cmd}		Execute Ruby command {cmd}.

:rub[y] << {endpattern}
{script}
{endpattern}
			Execute Ruby script {script}.
			{endpattern} must NOT be preceded by any white space.
			If {endpattern} is omitted, it defaults to a dot '.'
			like for the |:append| and |:insert| commands. This
			form of the |:ruby| command is mainly useful for
			including ruby code in vim scripts.
			Note: This command doesn't work when the Ruby feature
			wasn't compiled in.  To avoid errors, see
			|script-here|.

Example Vim script: >

	function! RedGem()
	ruby << EOF
	class Garnet
		def initialize(s)
			@buffer = VIM::Buffer.current
			vimputs(s)
		end
		def vimputs(s)
			@buffer.append(@buffer.count,s)
		end
	end
	gem = Garnet.new("pretty")
	EOF
	endfunction
<

						*:rubydo* *:rubyd* *E265*
:[range]rubyd[o] {cmd}	Evaluate Ruby command {cmd} for each line in the
			[range], with $_ being set to the text of each line in
			turn, without a trailing <EOL>. Setting $_ will change
			the text, but note that it is not possible to add or
			delete lines using this command.
			The default for [range] is the whole file: "1,$".

							*:rubyfile* *:rubyf*
:rubyf[ile] {file}	Execute the Ruby script in {file}.  This is the same as
			":ruby load 'file'", but allows file name completion.

Executing Ruby commands is not possible in the |sandbox|.

==============================================================================
2. The VIM module					*ruby-vim*

Ruby code gets all of its access to vim via the "VIM" module.

Overview >
	print "Hello"			# displays a message
	VIM.command(cmd)		# execute an ex command
	num = VIM::Window.count		# gets the number of windows
	w = VIM::Window[n]		# gets window "n"
	cw = VIM::Window.current	# gets the current window
	num = VIM::Buffer.count		# gets the number of buffers
	b = VIM::Buffer[n]		# gets buffer "n"
	cb = VIM::Buffer.current	# gets the current buffer
	w.height = lines		# sets the window height
	w.cursor = [row, col]		# sets the window cursor position
	pos = w.cursor			# gets an array [row, col]
	name = b.name			# gets the buffer file name
	line = b[n]			# gets a line from the buffer
	num = b.count			# gets the number of lines
	b[n] = str			# sets a line in the buffer
	b.delete(n)			# deletes a line
	b.append(n, str)		# appends a line after n
<

Module Functions:

							*ruby-message*
VIM::message({msg})
	Displays the message {msg}.

							*ruby-set_option*
VIM::set_option({arg})
	Sets a vim option.  {arg} can be any argument that the ":set" command
	accepts.  Note that this means that no spaces are allowed in the
	argument!  See |:set|.

							*ruby-command*
VIM::command({cmd})
	Executes Ex command {cmd}.

							*ruby-evaluate*
VIM::evaluate({expr})
	Evaluates {expr} using the vim internal expression evaluator (see
	|expression|). Returns the expression result as a string.

==============================================================================
3. VIM::Buffer objects					*ruby-buffer*

VIM::Buffer objects represent vim buffers.

Class Methods:

current		Returns the current buffer object.
count		Returns the number of buffers.
self[{n}]	Returns the buffer object for the number {n}. The first number
		is 0.

Methods:

name		Returns the name of the buffer.
number		Returns the number of the buffer.
count		Returns the number of lines.
length		Returns the number of lines.
self[{n}]	Returns a line from the buffer. {n} is the line number.
self[{n}] = {str}
		Sets a line in the buffer. {n} is the line number.
delete({n})	Deletes a line from the buffer. {n} is the line number.
append({n}, {str})
		Appends a line after the line {n}.

==============================================================================
4. VIM::Window objects					*ruby-window*

VIM::Window objects represent vim windows.

Class Methods:

current		Returns the current window object.
count		Returns the number of windows.
self[{n}]	Returns the window object for the number {n}. The first number
		is 0.

Methods:

buffer		Returns the buffer displayed in the window.
height		Returns the height of the window.
height = {n}	Sets the window height to {n}.
cursor		Returns a [row, col] array for the cursor position.
cursor = [{row}, {col}]
		Sets the cursor position to {row} and {col}.

==============================================================================
4. Global variables					*ruby-globals*

There are two global variables.

$curwin		The current window object.
$curbuf		The current buffer object.

==============================================================================
 vim:tw=78:ts=8:ft=help:norl:
