# Vim documentation: if_ruby

main help file

    *if_ruby.txt*   For Vim version 6.0av.  Last change: 2001 Sep 03

    		  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.

    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.

    ==============================================================================
    top - main help file