On 02/17/2010 10:23 AM, Bram Moolenaar wrote:
>
> Patch 7.2.361
> Problem: Ruby 1.9 is not supported.
> Solution: Add Ruby 1.9 support. (Msaki Suketa)
> Files: src/Makefile, src/auto/configure, src/configure.in,
src/if_ruby.c
Bram,
Something about this patch isn't quite right, though I don't
yet know what. It differs in a number of ways from Masaki Suketa's
patch (note typo "Msaki" in Solution: line above). I can build 7.2.360
with Masaki's patch and it still works for me on Fedora 11. I haven't
yet gotten to try it on Arch with Ruby 1.9.
I can build 7.2.361, but it's giving me odd errors in the Ruby-based
plugin I'm using:
IndexError: (eval):1063:in `append': NULL line
(This is the LustyExplorer plugin.)
I've attached a diff between 7.2.360 with Masaki's original
patch and 7.2.361, in case that helps point out the difference
that's causing the trouble.
Thanks,
Michael Henry
diff -Naur vim72.360.rubypatch/src/auto/configure
vim72.361/src/auto/configure
--- vim72.360.rubypatch/src/auto/configure 2010-02-18
06:48:21.000000000 -0500
+++ vim72.361/src/auto/configure 2010-02-18 06:44:32.000000000 -0500
@@ -793,6 +793,7 @@
enable_tclinterp
with_tclsh
enable_rubyinterp
+with_ruby_command
enable_cscope
enable_workshop
enable_netbeans
@@ -1503,6 +1504,7 @@
--with-plthome=PLTHOME Use PLTHOME.
--with-python-config-dir=PATH Python's config directory
--with-tclsh=PATH which tclsh to use (default: tclsh8.0)
+ --with-ruby-command=RUBY name of the Ruby command (default: ruby)
--with-x use the X Window System
--with-gtk-prefix=PFX Prefix where GTK is installed (optional)
--with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)
@@ -5703,9 +5705,21 @@
{ $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
$as_echo "$enable_rubyinterp" >&6; }
if test "$enable_rubyinterp" = "yes"; then
+ { $as_echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
+$as_echo_n "checking --with-ruby-command argument... " >&6; }
- # Extract the first word of "ruby", so it can be a program name with
args.
-set dummy ruby; ac_word=$2
+# Check whether --with-ruby-command was given.
+if test "${with_ruby_command+set}" = set; then
+ withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo
"$as_me:$LINENO: result: $RUBY_CMD" >&5
+$as_echo "$RUBY_CMD" >&6; }
+else
+ RUBY_CMD="ruby"; { $as_echo "$as_me:$LINENO: result: defaulting to
$RUBY_CMD" >&5
+$as_echo "defaulting to $RUBY_CMD" >&6; }
+fi
+
+
+ # Extract the first word of "$RUBY_CMD", so it can be a program name
with args.
+set dummy $RUBY_CMD; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
@@ -5799,8 +5813,8 @@
_ACEOF
else
- { $as_echo "$as_me:$LINENO: result: not found" >&5
-$as_echo "not found" >&6; }
+ { $as_echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
+$as_echo "not found; disabling Ruby" >&6; }
fi
else
{ $as_echo "$as_me:$LINENO: result: too old; need Ruby version
1.6.0 or later" >&5
diff -Naur vim72.360.rubypatch/src/configure.in vim72.361/src/configure.in
--- vim72.360.rubypatch/src/configure.in 2010-02-18
06:48:21.000000000 -0500
+++ vim72.361/src/configure.in 2010-02-18 06:44:32.000000000 -0500
@@ -949,8 +949,12 @@
[enable_rubyinterp="no"])
AC_MSG_RESULT($enable_rubyinterp)
if test "$enable_rubyinterp" = "yes"; then
+ AC_MSG_CHECKING(--with-ruby-command argument)
+ AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the
Ruby command (default: ruby)],
+ RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
+ RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
AC_SUBST(vi_cv_path_ruby)
- AC_PATH_PROG(vi_cv_path_ruby, ruby)
+ AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
if test "X$vi_cv_path_ruby" != "X"; then
AC_MSG_CHECKING(Ruby version)
if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or
exit 1' >/dev/null 2>/dev/null; then
@@ -1003,7 +1007,7 @@
RUBY_PRO="if_ruby.pro"
AC_DEFINE(FEAT_RUBY)
else
- AC_MSG_RESULT(not found, disabling Ruby)
+ AC_MSG_RESULT(not found; disabling Ruby)
fi
else
AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
diff -Naur vim72.360.rubypatch/src/if_ruby.c vim72.361/src/if_ruby.c
--- vim72.360.rubypatch/src/if_ruby.c 2010-02-18 06:48:21.000000000 -0500
+++ vim72.361/src/if_ruby.c 2010-02-18 06:44:32.000000000 -0500
@@ -54,8 +54,8 @@
#endif
#include <ruby.h>
-#if defined(RUBY_VERSION) && RUBY_VERSION >=19
-#include <ruby/encoding.h>
+#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+# include <ruby/encoding.h>
#endif
#undef EXTERN
@@ -69,25 +69,25 @@
#endif
/*
- * backward compatiblity for Ruby 1.8(or before).
+ * Backward compatiblity for Ruby 1.8 and earlier.
* Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided.
- * Ruby 1.9 does not provide RXXX(s)->len, RXXX(s)->ptr, instead
- * RXXX_LEN(s), RXXX_PTR(s) is provided.
+ * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead
+ * RXXX_LEN(s) and RXXX_PTR(s) are provided.
*/
#ifndef StringValuePtr
-#define StringValuePtr(s) STR2CSTR(s)
+# define StringValuePtr(s) STR2CSTR(s)
#endif
#ifndef RARRAY_LEN
-#define RARRAY_LEN(s) RARRAY(s)->len
-#endif
+# define RARRAY_LEN(s) RARRAY(s)->len
+#endif
#ifndef RARRAY_PTR
-#define RARRAY_PTR(s) RARRAY(s)->ptr
+# define RARRAY_PTR(s) RARRAY(s)->ptr
#endif
#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) RSTRING(s)->len
+# define RSTRING_LEN(s) RSTRING(s)->len
#endif
#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) RSTRING(s)->ptr
+# define RSTRING_PTR(s) RSTRING(s)->ptr
#endif
#include "vim.h"
@@ -160,9 +160,9 @@
#define rb_str_new dll_rb_str_new
#define rb_str_new2 dll_rb_str_new2
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
-#define rb_errinfo dll_rb_errinfo
+# define rb_errinfo dll_rb_errinfo
#else
-#define ruby_errinfo (*dll_ruby_errinfo)
+# define ruby_errinfo (*dll_ruby_errinfo)
#endif
#define ruby_init dll_ruby_init
#define ruby_init_loadpath dll_ruby_init_loadpath
@@ -172,11 +172,11 @@
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
-#define ruby_script dll_ruby_script
-#define rb_enc_find_index dll_rb_enc_find_index
-#define rb_enc_find dll_rb_enc_find
-#define rb_enc_str_new dll_rb_enc_str_new
-#define rb_sprintf dll_rb_sprintf
+# define ruby_script dll_ruby_script
+# define rb_enc_find_index dll_rb_enc_find_index
+# define rb_enc_find dll_rb_enc_find
+# define rb_enc_str_new dll_rb_enc_str_new
+# define rb_sprintf dll_rb_sprintf
#endif
/*
@@ -241,7 +241,7 @@
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
static void (*dll_ruby_script) (const char*);
static int (*dll_rb_enc_find_index) (const char*);
-static rb_encoding* (*dll_rb_enc_find) (const char*);
+static rb_encoding* (*dll_rb_enc_find) (const char*);
static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
static VALUE (*dll_rb_sprintf) (const char*, ...);
#endif
@@ -413,7 +413,7 @@
* conversion buffer string of vim to ruby String object using
* VIM encoding option.
*/
- static VALUE
+ static VALUE
vim_str2rb_enc_str(const char *s)
{
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
@@ -421,19 +421,21 @@
long lval;
char_u *sval;
rb_encoding *enc;
+
isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
- if (isnum == 0) {
- enc = rb_enc_find((char*)sval);
- vim_free(sval);
- if (enc) {
- return rb_enc_str_new(s, strlen(s), enc);
- }
+ if (isnum == 0)
+ {
+ enc = rb_enc_find((char *)sval);
+ vim_free(sval);
+ if (enc) {
+ return rb_enc_str_new(s, strlen(s), enc);
+ }
}
#endif
return rb_str_new2(s);
}
-static VALUE
+ static VALUE
eval_enc_string_protect(const char *str, int *state)
{
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
@@ -442,14 +444,17 @@
char_u *sval;
rb_encoding *enc;
VALUE v;
+
isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
- if (isnum == 0) {
- enc = rb_enc_find((char*)sval);
- vim_free(sval);
- if(enc) {
- v = rb_sprintf("#-*- coding:%s -*-\n%s", rb_enc_name(enc),
str);
- return rb_eval_string_protect(StringValuePtr(v), state);
- }
+ if (isnum == 0)
+ {
+ enc = rb_enc_find((char *)sval);
+ vim_free(sval);
+ if (enc)
+ {
+ v = rb_sprintf("#-*- coding:%s -*-\n%s", rb_enc_name(enc), str);
+ return rb_eval_string_protect(StringValuePtr(v), state);
+ }
}
#endif
return rb_eval_string_protect(str, state);
@@ -536,16 +541,16 @@
NtInitialize(&argc, &argv);
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
- RUBY_INIT_STACK;
+ RUBY_INIT_STACK;
#endif
ruby_init();
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
- ruby_script("vim-ruby");
+ ruby_script("vim-ruby");
#endif
ruby_init_loadpath();
ruby_io_init();
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
- rb_enc_find_index("encdb");
+ rb_enc_find_index("encdb");
#endif
ruby_vim_init();
ruby_initialized = 1;
@@ -600,7 +605,7 @@
break;
case TAG_RAISE:
case TAG_FATAL:
-# if defined(RUBY_VERSION) && RUBY_VERSION >= 19
+#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
eclass = CLASS_OF(rb_errinfo());
einfo = rb_obj_as_string(rb_errinfo());
#else
@@ -765,7 +770,7 @@
char *line = (char *)ml_get_buf(buf, n, FALSE);
return line ? vim_str2rb_enc_str(line) : Qnil;
}
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
#ifndef __GNUC__
return Qnil; /* For stop warning */
#endif
@@ -806,7 +811,7 @@
}
else
{
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
#ifndef __GNUC__
return Qnil; /* For stop warning */
#endif
@@ -852,7 +857,7 @@
}
else
{
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ rb_raise(rb_eIndexError, "line number %ld out of range", n);
}
return Qnil;
}
@@ -864,7 +869,10 @@
long n = NUM2LONG(num);
aco_save_T aco;
- if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
+ if (line != NULL) {
+ rb_raise(rb_eIndexError, "NULL line");
+ }
+ else if (n >= 0 && n <= buf->b_ml.ml_line_count)
{
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
@@ -886,7 +894,7 @@
update_curbuf(NOT_VALID);
}
else {
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ rb_raise(rb_eIndexError, "line number %ld out of range", n);
}
return str;
}
diff -Naur vim72.360.rubypatch/src/if_ruby.c.orig
vim72.361/src/if_ruby.c.orig
--- vim72.360.rubypatch/src/if_ruby.c.orig 2010-02-18
06:40:41.000000000 -0500
+++ vim72.361/src/if_ruby.c.orig 1969-12-31 19:00:00.000000000 -0500
@@ -1,1003 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * VIM - Vi IMproved by Bram Moolenaar
- *
- * Ruby interface by Shugo Maeda
- * with improvements by SegPhault (Ryan Paul)
- *
- * Do ":help uganda" in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- * See README.txt for an overview of the Vim source code.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#ifdef _WIN32
-# if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18)
-# define NT
-# endif
-# ifndef DYNAMIC_RUBY
-# define IMPORT /* For static dll usage __declspec(dllimport) */
-# define RUBYEXTERN __declspec(dllimport)
-# endif
-#endif
-#ifndef RUBYEXTERN
-# define RUBYEXTERN extern
-#endif
-
-/*
- * This is tricky. In ruby.h there is (inline) function rb_class_of()
- * definition. This function use these variables. But we want function to
- * use dll_* variables.
- */
-#ifdef DYNAMIC_RUBY
-# define rb_cFalseClass (*dll_rb_cFalseClass)
-# define rb_cFixnum (*dll_rb_cFixnum)
-# define rb_cNilClass (*dll_rb_cNilClass)
-# define rb_cSymbol (*dll_rb_cSymbol)
-# define rb_cTrueClass (*dll_rb_cTrueClass)
-# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
-/*
- * On ver 1.8, all Ruby functions are exported with "__declspce(dllimport)"
- * in ruby.h. But it cause trouble for these variables, because it is
- * defined in this file. When defined this RUBY_EXPORT it modified to
- * "extern" and be able to avoid this problem.
- */
-# define RUBY_EXPORT
-# endif
-#endif
-
-/* suggested by Ariya Mizutani */
-#if (_MSC_VER == 1200)
-# undef _WIN32_WINNT
-#endif
-
-#include <ruby.h>
-
-#undef EXTERN
-#undef _
-
-/* T_DATA defined both by Ruby and Mac header files, hack around it... */
-#if defined(MACOS_X_UNIX) || defined(macintosh)
-# define __OPENTRANSPORT__
-# define __OPENTRANSPORTPROTOCOL__
-# define __OPENTRANSPORTPROVIDERS__
-#endif
-
-#include "vim.h"
-#include "version.h"
-
-#if defined(PROTO) && !defined(FEAT_RUBY)
-/* Define these to be able to generate the function prototypes. */
-# define VALUE int
-# define RUBY_DATA_FUNC int
-#endif
-
-static int ruby_initialized = 0;
-static VALUE objtbl;
-
-static VALUE mVIM;
-static VALUE cBuffer;
-static VALUE cVimWindow;
-static VALUE eDeletedBufferError;
-static VALUE eDeletedWindowError;
-
-static int ensure_ruby_initialized(void);
-static void error_print(int);
-static void ruby_io_init(void);
-static void ruby_vim_init(void);
-
-#if defined(DYNAMIC_RUBY) || defined(PROTO)
-#ifdef PROTO
-# define HINSTANCE int /* for generating prototypes */
-#endif
-
-/*
- * Wrapper defines
- */
-#define rb_assoc_new dll_rb_assoc_new
-#define rb_cObject (*dll_rb_cObject)
-#define rb_check_type dll_rb_check_type
-#define rb_class_path dll_rb_class_path
-#define rb_data_object_alloc dll_rb_data_object_alloc
-#define rb_define_class_under dll_rb_define_class_under
-#define rb_define_const dll_rb_define_const
-#define rb_define_global_function dll_rb_define_global_function
-#define rb_define_method dll_rb_define_method
-#define rb_define_module dll_rb_define_module
-#define rb_define_module_function dll_rb_define_module_function
-#define rb_define_singleton_method dll_rb_define_singleton_method
-#define rb_define_virtual_variable dll_rb_define_virtual_variable
-#define rb_stdout (*dll_rb_stdout)
-#define rb_eArgError (*dll_rb_eArgError)
-#define rb_eIndexError (*dll_rb_eIndexError)
-#define rb_eRuntimeError (*dll_rb_eRuntimeError)
-#define rb_eStandardError (*dll_rb_eStandardError)
-#define rb_eval_string_protect dll_rb_eval_string_protect
-#define rb_global_variable dll_rb_global_variable
-#define rb_hash_aset dll_rb_hash_aset
-#define rb_hash_new dll_rb_hash_new
-#define rb_inspect dll_rb_inspect
-#define rb_int2inum dll_rb_int2inum
-#define rb_lastline_get dll_rb_lastline_get
-#define rb_lastline_set dll_rb_lastline_set
-#define rb_load_protect dll_rb_load_protect
-#define rb_num2long dll_rb_num2long
-#define rb_num2ulong dll_rb_num2ulong
-#define rb_obj_alloc dll_rb_obj_alloc
-#define rb_obj_as_string dll_rb_obj_as_string
-#define rb_obj_id dll_rb_obj_id
-#define rb_raise dll_rb_raise
-#define rb_str2cstr dll_rb_str2cstr
-#define rb_str_cat dll_rb_str_cat
-#define rb_str_concat dll_rb_str_concat
-#define rb_str_new dll_rb_str_new
-#define rb_str_new2 dll_rb_str_new2
-#define ruby_errinfo (*dll_ruby_errinfo)
-#define ruby_init dll_ruby_init
-#define ruby_init_loadpath dll_ruby_init_loadpath
-#define NtInitialize dll_NtInitialize
-#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
-# define rb_w32_snprintf dll_rb_w32_snprintf
-#endif
-
-/*
- * Pointers for dynamic link
- */
-static VALUE (*dll_rb_assoc_new) (VALUE, VALUE);
-static VALUE *dll_rb_cFalseClass;
-static VALUE *dll_rb_cFixnum;
-static VALUE *dll_rb_cNilClass;
-static VALUE *dll_rb_cObject;
-static VALUE *dll_rb_cSymbol;
-static VALUE *dll_rb_cTrueClass;
-static void (*dll_rb_check_type) (VALUE,int);
-static VALUE (*dll_rb_class_path) (VALUE);
-static VALUE (*dll_rb_data_object_alloc) (VALUE, void*, RUBY_DATA_FUNC,
RUBY_DATA_FUNC);
-static VALUE (*dll_rb_define_class_under) (VALUE, const char*, VALUE);
-static void (*dll_rb_define_const) (VALUE,const char*,VALUE);
-static void (*dll_rb_define_global_function) (const char*,VALUE(*)(),int);
-static void (*dll_rb_define_method) (VALUE,const char*,VALUE(*)(),int);
-static VALUE (*dll_rb_define_module) (const char*);
-static void (*dll_rb_define_module_function) (VALUE,const
char*,VALUE(*)(),int);
-static void (*dll_rb_define_singleton_method) (VALUE,const
char*,VALUE(*)(),int);
-static void (*dll_rb_define_virtual_variable) (const
char*,VALUE(*)(),void(*)());
-static VALUE *dll_rb_stdout;
-static VALUE *dll_rb_eArgError;
-static VALUE *dll_rb_eIndexError;
-static VALUE *dll_rb_eRuntimeError;
-static VALUE *dll_rb_eStandardError;
-static VALUE (*dll_rb_eval_string_protect) (const char*, int*);
-static void (*dll_rb_global_variable) (VALUE*);
-static VALUE (*dll_rb_hash_aset) (VALUE, VALUE, VALUE);
-static VALUE (*dll_rb_hash_new) (void);
-static VALUE (*dll_rb_inspect) (VALUE);
-static VALUE (*dll_rb_int2inum) (long);
-static VALUE (*dll_rb_int2inum) (long);
-static VALUE (*dll_rb_lastline_get) (void);
-static void (*dll_rb_lastline_set) (VALUE);
-static void (*dll_rb_load_protect) (VALUE, int, int*);
-static long (*dll_rb_num2long) (VALUE);
-static unsigned long (*dll_rb_num2ulong) (VALUE);
-static VALUE (*dll_rb_obj_alloc) (VALUE);
-static VALUE (*dll_rb_obj_as_string) (VALUE);
-static VALUE (*dll_rb_obj_id) (VALUE);
-static void (*dll_rb_raise) (VALUE, const char*, ...);
-static char *(*dll_rb_str2cstr) (VALUE,int*);
-static VALUE (*dll_rb_str_cat) (VALUE, const char*, long);
-static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
-static VALUE (*dll_rb_str_new) (const char*, long);
-static VALUE (*dll_rb_str_new2) (const char*);
-static VALUE *dll_ruby_errinfo;
-static void (*dll_ruby_init) (void);
-static void (*dll_ruby_init_loadpath) (void);
-static void (*dll_NtInitialize) (int*, char***);
-#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
-static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
-#endif
-
-static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
-
-/*
- * Table of name to function pointer of ruby.
- */
-#define RUBY_PROC FARPROC
-static struct
-{
- char *name;
- RUBY_PROC *ptr;
-} ruby_funcname_table[] =
-{
- {"rb_assoc_new", (RUBY_PROC*)&dll_rb_assoc_new},
- {"rb_cFalseClass", (RUBY_PROC*)&dll_rb_cFalseClass},
- {"rb_cFixnum", (RUBY_PROC*)&dll_rb_cFixnum},
- {"rb_cNilClass", (RUBY_PROC*)&dll_rb_cNilClass},
- {"rb_cObject", (RUBY_PROC*)&dll_rb_cObject},
- {"rb_cSymbol", (RUBY_PROC*)&dll_rb_cSymbol},
- {"rb_cTrueClass", (RUBY_PROC*)&dll_rb_cTrueClass},
- {"rb_check_type", (RUBY_PROC*)&dll_rb_check_type},
- {"rb_class_path", (RUBY_PROC*)&dll_rb_class_path},
- {"rb_data_object_alloc", (RUBY_PROC*)&dll_rb_data_object_alloc},
- {"rb_define_class_under", (RUBY_PROC*)&dll_rb_define_class_under},
- {"rb_define_const", (RUBY_PROC*)&dll_rb_define_const},
- {"rb_define_global_function",
(RUBY_PROC*)&dll_rb_define_global_function},
- {"rb_define_method", (RUBY_PROC*)&dll_rb_define_method},
- {"rb_define_module", (RUBY_PROC*)&dll_rb_define_module},
- {"rb_define_module_function",
(RUBY_PROC*)&dll_rb_define_module_function},
- {"rb_define_singleton_method",
(RUBY_PROC*)&dll_rb_define_singleton_method},
- {"rb_define_virtual_variable",
(RUBY_PROC*)&dll_rb_define_virtual_variable},
- {"rb_stdout", (RUBY_PROC*)&dll_rb_stdout},
- {"rb_eArgError", (RUBY_PROC*)&dll_rb_eArgError},
- {"rb_eIndexError", (RUBY_PROC*)&dll_rb_eIndexError},
- {"rb_eRuntimeError", (RUBY_PROC*)&dll_rb_eRuntimeError},
- {"rb_eStandardError", (RUBY_PROC*)&dll_rb_eStandardError},
- {"rb_eval_string_protect", (RUBY_PROC*)&dll_rb_eval_string_protect},
- {"rb_global_variable", (RUBY_PROC*)&dll_rb_global_variable},
- {"rb_hash_aset", (RUBY_PROC*)&dll_rb_hash_aset},
- {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new},
- {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect},
- {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum},
- {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get},
- {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set},
- {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect},
- {"rb_num2long", (RUBY_PROC*)&dll_rb_num2long},
- {"rb_num2ulong", (RUBY_PROC*)&dll_rb_num2ulong},
- {"rb_obj_alloc", (RUBY_PROC*)&dll_rb_obj_alloc},
- {"rb_obj_as_string", (RUBY_PROC*)&dll_rb_obj_as_string},
- {"rb_obj_id", (RUBY_PROC*)&dll_rb_obj_id},
- {"rb_raise", (RUBY_PROC*)&dll_rb_raise},
- {"rb_str2cstr", (RUBY_PROC*)&dll_rb_str2cstr},
- {"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat},
- {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
- {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
- {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
- {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
- {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
- {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
- {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
-#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
- {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
-#endif
- {"", NULL},
-};
-
-/*
- * Free ruby.dll
- */
- static void
-end_dynamic_ruby()
-{
- if (hinstRuby)
- {
- FreeLibrary(hinstRuby);
- hinstRuby = 0;
- }
-}
-
-/*
- * Load library and get all pointers.
- * Parameter 'libname' provides name of DLL.
- * Return OK or FAIL.
- */
- static int
-ruby_runtime_link_init(char *libname, int verbose)
-{
- int i;
-
- if (hinstRuby)
- return OK;
- hinstRuby = LoadLibrary(libname);
- if (!hinstRuby)
- {
- if (verbose)
- EMSG2(_(e_loadlib), libname);
- return FAIL;
- }
-
- for (i = 0; ruby_funcname_table[i].ptr; ++i)
- {
- if (!(*ruby_funcname_table[i].ptr = GetProcAddress(hinstRuby,
- ruby_funcname_table[i].name)))
- {
- FreeLibrary(hinstRuby);
- hinstRuby = 0;
- if (verbose)
- EMSG2(_(e_loadfunc), ruby_funcname_table[i].name);
- return FAIL;
- }
- }
- return OK;
-}
-
-/*
- * If ruby is enabled (there is installed ruby on Windows system)
return TRUE,
- * else FALSE.
- */
- int
-ruby_enabled(verbose)
- int verbose;
-{
- return ruby_runtime_link_init(DYNAMIC_RUBY_DLL, verbose) == OK;
-}
-#endif /* defined(DYNAMIC_RUBY) || defined(PROTO) */
-
- void
-ruby_end()
-{
-#ifdef DYNAMIC_RUBY
- end_dynamic_ruby();
-#endif
-}
-
-void ex_ruby(exarg_T *eap)
-{
- int state;
- char *script = NULL;
-
- script = (char *)script_get(eap, eap->arg);
- if (!eap->skip && ensure_ruby_initialized())
- {
- if (script == NULL)
- rb_eval_string_protect((char *)eap->arg, &state);
- else
- rb_eval_string_protect(script, &state);
- if (state)
- error_print(state);
- }
- vim_free(script);
-}
-
-void ex_rubydo(exarg_T *eap)
-{
- int state;
- linenr_T i;
-
- if (ensure_ruby_initialized())
- {
- if (u_save(eap->line1 - 1, eap->line2 + 1) != OK)
- return;
- for (i = eap->line1; i <= eap->line2; i++) {
- VALUE line, oldline;
-
- line = oldline = rb_str_new2((char *)ml_get(i));
- rb_lastline_set(line);
- rb_eval_string_protect((char *) eap->arg, &state);
- if (state) {
- error_print(state);
- break;
- }
- line = rb_lastline_get();
- if (!NIL_P(line)) {
- if (TYPE(line) != T_STRING) {
- EMSG(_("E265: $_ must be an instance of String"));
- return;
- }
- ml_replace(i, (char_u *) STR2CSTR(line), 1);
- changed();
-#ifdef SYNTAX_HL
- syn_changed(i); /* recompute syntax hl. for this line */
-#endif
- }
- }
- check_cursor();
- update_curbuf(NOT_VALID);
- }
-}
-
-void ex_rubyfile(exarg_T *eap)
-{
- int state;
-
- if (ensure_ruby_initialized())
- {
- rb_load_protect(rb_str_new2((char *) eap->arg), 0, &state);
- if (state) error_print(state);
- }
-}
-
-void ruby_buffer_free(buf_T *buf)
-{
- if (buf->b_ruby_ref)
- {
- rb_hash_aset(objtbl, rb_obj_id((VALUE) buf->b_ruby_ref), Qnil);
- RDATA(buf->b_ruby_ref)->data = NULL;
- }
-}
-
-void ruby_window_free(win_T *win)
-{
- if (win->w_ruby_ref)
- {
- rb_hash_aset(objtbl, rb_obj_id((VALUE) win->w_ruby_ref), Qnil);
- RDATA(win->w_ruby_ref)->data = NULL;
- }
-}
-
-static int ensure_ruby_initialized(void)
-{
- if (!ruby_initialized)
- {
-#ifdef DYNAMIC_RUBY
- if (ruby_enabled(TRUE))
- {
-#endif
-#ifdef _WIN32
- /* suggested by Ariya Mizutani */
- int argc = 1;
- char *argv[] = {"gvim.exe"};
- NtInitialize(&argc, &argv);
-#endif
- ruby_init();
- ruby_init_loadpath();
- ruby_io_init();
- ruby_vim_init();
- ruby_initialized = 1;
-#ifdef DYNAMIC_RUBY
- }
- else
- {
- EMSG(_("E266: Sorry, this command is disabled, the Ruby library
could not be loaded."));
- return 0;
- }
-#endif
- }
- return ruby_initialized;
-}
-
-static void error_print(int state)
-{
-#ifndef DYNAMIC_RUBY
- RUBYEXTERN VALUE ruby_errinfo;
-#endif
- VALUE eclass;
- VALUE einfo;
- char buff[BUFSIZ];
-
-#define TAG_RETURN 0x1
-#define TAG_BREAK 0x2
-#define TAG_NEXT 0x3
-#define TAG_RETRY 0x4
-#define TAG_REDO 0x5
-#define TAG_RAISE 0x6
-#define TAG_THROW 0x7
-#define TAG_FATAL 0x8
-#define TAG_MASK 0xf
-
- switch (state) {
- case TAG_RETURN:
- EMSG(_("E267: unexpected return"));
- break;
- case TAG_NEXT:
- EMSG(_("E268: unexpected next"));
- break;
- case TAG_BREAK:
- EMSG(_("E269: unexpected break"));
- break;
- case TAG_REDO:
- EMSG(_("E270: unexpected redo"));
- break;
- case TAG_RETRY:
- EMSG(_("E271: retry outside of rescue clause"));
- break;
- case TAG_RAISE:
- case TAG_FATAL:
- eclass = CLASS_OF(ruby_errinfo);
- einfo = rb_obj_as_string(ruby_errinfo);
- if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
- EMSG(_("E272: unhandled exception"));
- }
- else {
- VALUE epath;
- char *p;
-
- epath = rb_class_path(eclass);
- vim_snprintf(buff, BUFSIZ, "%s: %s",
- RSTRING(epath)->ptr, RSTRING(einfo)->ptr);
- p = strchr(buff, '\n');
- if (p) *p = '\0';
- EMSG(buff);
- }
- break;
- default:
- vim_snprintf(buff, BUFSIZ, _("E273: unknown longjmp status %d"),
state);
- EMSG(buff);
- break;
- }
-}
-
-static VALUE vim_message(VALUE self UNUSED, VALUE str)
-{
- char *buff, *p;
-
- str = rb_obj_as_string(str);
- buff = ALLOCA_N(char, RSTRING(str)->len);
- strcpy(buff, RSTRING(str)->ptr);
- p = strchr(buff, '\n');
- if (p) *p = '\0';
- MSG(buff);
- return Qnil;
-}
-
-static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
-{
- do_set((char_u *)STR2CSTR(str), 0);
- update_screen(NOT_VALID);
- return Qnil;
-}
-
-static VALUE vim_command(VALUE self UNUSED, VALUE str)
-{
- do_cmdline_cmd((char_u *)STR2CSTR(str));
- return Qnil;
-}
-
-static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
-{
-#ifdef FEAT_EVAL
- char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
-
- if (value != NULL)
- {
- VALUE val = rb_str_new2((char *)value);
- vim_free(value);
- return val;
- }
- else
-#endif
- return Qnil;
-}
-
-static VALUE buffer_new(buf_T *buf)
-{
- if (buf->b_ruby_ref)
- {
- return (VALUE) buf->b_ruby_ref;
- }
- else
- {
- VALUE obj = Data_Wrap_Struct(cBuffer, 0, 0, buf);
- buf->b_ruby_ref = (void *) obj;
- rb_hash_aset(objtbl, rb_obj_id(obj), obj);
- return obj;
- }
-}
-
-static buf_T *get_buf(VALUE obj)
-{
- buf_T *buf;
-
- Data_Get_Struct(obj, buf_T, buf);
- if (buf == NULL)
- rb_raise(eDeletedBufferError, "attempt to refer to deleted buffer");
- return buf;
-}
-
-static VALUE buffer_s_current()
-{
- return buffer_new(curbuf);
-}
-
-static VALUE buffer_s_count()
-{
- buf_T *b;
- int n = 0;
-
- for (b = firstbuf; b != NULL; b = b->b_next)
- {
- /* Deleted buffers should not be counted
- * SegPhault - 01/07/05 */
- if (b->b_p_bl)
- n++;
- }
-
- return INT2NUM(n);
-}
-
-static VALUE buffer_s_aref(VALUE self UNUSED, VALUE num)
-{
- buf_T *b;
- int n = NUM2INT(num);
-
- for (b = firstbuf; b != NULL; b = b->b_next)
- {
- /* Deleted buffers should not be counted
- * SegPhault - 01/07/05 */
- if (!b->b_p_bl)
- continue;
-
- if (n == 0)
- return buffer_new(b);
-
- n--;
- }
- return Qnil;
-}
-
-static VALUE buffer_name(VALUE self)
-{
- buf_T *buf = get_buf(self);
-
- return buf->b_ffname ? rb_str_new2((char *)buf->b_ffname) : Qnil;
-}
-
-static VALUE buffer_number(VALUE self)
-{
- buf_T *buf = get_buf(self);
-
- return INT2NUM(buf->b_fnum);
-}
-
-static VALUE buffer_count(VALUE self)
-{
- buf_T *buf = get_buf(self);
-
- return INT2NUM(buf->b_ml.ml_line_count);
-}
-
-static VALUE get_buffer_line(buf_T *buf, linenr_T n)
-{
- if (n > 0 && n <= buf->b_ml.ml_line_count)
- {
- char *line = (char *)ml_get_buf(buf, n, FALSE);
- return line ? rb_str_new2(line) : Qnil;
- }
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
-#ifndef __GNUC__
- return Qnil; /* For stop warning */
-#endif
-}
-
-static VALUE buffer_aref(VALUE self, VALUE num)
-{
- buf_T *buf = get_buf(self);
-
- if (buf != NULL)
- return get_buffer_line(buf, (linenr_T)NUM2LONG(num));
- return Qnil; /* For stop warning */
-}
-
-static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
-{
- char *line = STR2CSTR(str);
- aco_save_T aco;
-
- if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
- {
- /* set curwin/curbuf for "buf" and save some things */
- aucmd_prepbuf(&aco, buf);
-
- if (u_savesub(n) == OK) {
- ml_replace(n, (char_u *)line, TRUE);
- changed();
-#ifdef SYNTAX_HL
- syn_changed(n); /* recompute syntax hl. for this line */
-#endif
- }
-
- /* restore curwin/curbuf and a few other things */
- aucmd_restbuf(&aco);
- /* Careful: autocommands may have made "buf" invalid! */
-
- update_curbuf(NOT_VALID);
- }
- else
- {
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
-#ifndef __GNUC__
- return Qnil; /* For stop warning */
-#endif
- }
- return str;
-}
-
-static VALUE buffer_aset(VALUE self, VALUE num, VALUE str)
-{
- buf_T *buf = get_buf(self);
-
- if (buf != NULL)
- return set_buffer_line(buf, (linenr_T)NUM2LONG(num), str);
- return str;
-}
-
-static VALUE buffer_delete(VALUE self, VALUE num)
-{
- buf_T *buf = get_buf(self);
- long n = NUM2LONG(num);
- aco_save_T aco;
-
- if (n > 0 && n <= buf->b_ml.ml_line_count)
- {
- /* set curwin/curbuf for "buf" and save some things */
- aucmd_prepbuf(&aco, buf);
-
- if (u_savedel(n, 1) == OK) {
- ml_delete(n, 0);
-
- /* Changes to non-active buffers should properly refresh
- * SegPhault - 01/09/05 */
- deleted_lines_mark(n, 1L);
-
- changed();
- }
-
- /* restore curwin/curbuf and a few other things */
- aucmd_restbuf(&aco);
- /* Careful: autocommands may have made "buf" invalid! */
-
- update_curbuf(NOT_VALID);
- }
- else
- {
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
- }
- return Qnil;
-}
-
-static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
-{
- buf_T *buf = get_buf(self);
- char *line = STR2CSTR(str);
- long n = NUM2LONG(num);
- aco_save_T aco;
-
- if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
- {
- /* set curwin/curbuf for "buf" and save some things */
- aucmd_prepbuf(&aco, buf);
-
- if (u_inssub(n + 1) == OK) {
- ml_append(n, (char_u *) line, (colnr_T) 0, FALSE);
-
- /* Changes to non-active buffers should properly refresh screen
- * SegPhault - 12/20/04 */
- appended_lines_mark(n, 1L);
-
- changed();
- }
-
- /* restore curwin/curbuf and a few other things */
- aucmd_restbuf(&aco);
- /* Careful: autocommands may have made "buf" invalid! */
-
- update_curbuf(NOT_VALID);
- }
- else {
- rb_raise(rb_eIndexError, "index %d out of buffer", n);
- }
- return str;
-}
-
-static VALUE window_new(win_T *win)
-{
- if (win->w_ruby_ref)
- {
- return (VALUE) win->w_ruby_ref;
- }
- else
- {
- VALUE obj = Data_Wrap_Struct(cVimWindow, 0, 0, win);
- win->w_ruby_ref = (void *) obj;
- rb_hash_aset(objtbl, rb_obj_id(obj), obj);
- return obj;
- }
-}
-
-static win_T *get_win(VALUE obj)
-{
- win_T *win;
-
- Data_Get_Struct(obj, win_T, win);
- if (win == NULL)
- rb_raise(eDeletedWindowError, "attempt to refer to deleted window");
- return win;
-}
-
-static VALUE window_s_current()
-{
- return window_new(curwin);
-}
-
-/*
- * Added line manipulation functions
- * SegPhault - 03/07/05
- */
-static VALUE line_s_current()
-{
- return get_buffer_line(curbuf, curwin->w_cursor.lnum);
-}
-
-static VALUE set_current_line(VALUE self UNUSED, VALUE str)
-{
- return set_buffer_line(curbuf, curwin->w_cursor.lnum, str);
-}
-
-static VALUE current_line_number()
-{
- return INT2FIX((int)curwin->w_cursor.lnum);
-}
-
-
-
-static VALUE window_s_count()
-{
-#ifdef FEAT_WINDOWS
- win_T *w;
- int n = 0;
-
- for (w = firstwin; w != NULL; w = w->w_next)
- n++;
- return INT2NUM(n);
-#else
- return INT2NUM(1);
-#endif
-}
-
-static VALUE window_s_aref(VALUE self UNUSED, VALUE num)
-{
- win_T *w;
- int n = NUM2INT(num);
-
-#ifndef FEAT_WINDOWS
- w = curwin;
-#else
- for (w = firstwin; w != NULL; w = w->w_next, --n)
-#endif
- if (n == 0)
- return window_new(w);
- return Qnil;
-}
-
-static VALUE window_buffer(VALUE self)
-{
- win_T *win = get_win(self);
-
- return buffer_new(win->w_buffer);
-}
-
-static VALUE window_height(VALUE self)
-{
- win_T *win = get_win(self);
-
- return INT2NUM(win->w_height);
-}
-
-static VALUE window_set_height(VALUE self, VALUE height)
-{
- win_T *win = get_win(self);
- win_T *savewin = curwin;
-
- curwin = win;
- win_setheight(NUM2INT(height));
- curwin = savewin;
- return height;
-}
-
-static VALUE window_width(VALUE self)
-{
- win_T *win = get_win(self);
-
- return INT2NUM(win->w_width);
-}
-
-static VALUE window_set_width(VALUE self, VALUE width)
-{
- win_T *win = get_win(self);
- win_T *savewin = curwin;
-
- curwin = win;
- win_setwidth(NUM2INT(width));
- curwin = savewin;
- return width;
-}
-
-static VALUE window_cursor(VALUE self)
-{
- win_T *win = get_win(self);
-
- return rb_assoc_new(INT2NUM(win->w_cursor.lnum),
INT2NUM(win->w_cursor.col));
-}
-
-static VALUE window_set_cursor(VALUE self, VALUE pos)
-{
- VALUE lnum, col;
- win_T *win = get_win(self);
-
- Check_Type(pos, T_ARRAY);
- if (RARRAY(pos)->len != 2)
- rb_raise(rb_eArgError, "array length must be 2");
- lnum = RARRAY(pos)->ptr[0];
- col = RARRAY(pos)->ptr[1];
- win->w_cursor.lnum = NUM2LONG(lnum);
- win->w_cursor.col = NUM2UINT(col);
- check_cursor(); /* put cursor on an existing line */
- update_screen(NOT_VALID);
- return Qnil;
-}
-
-static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
-{
- int i;
- VALUE str = rb_str_new("", 0);
-
- for (i = 0; i < argc; i++) {
- if (i > 0) rb_str_cat(str, ", ", 2);
- rb_str_concat(str, rb_inspect(argv[i]));
- }
- MSG(RSTRING(str)->ptr);
- return Qnil;
-}
-
-static void ruby_io_init(void)
-{
-#ifndef DYNAMIC_RUBY
- RUBYEXTERN VALUE rb_stdout;
-#endif
-
- rb_stdout = rb_obj_alloc(rb_cObject);
- rb_define_singleton_method(rb_stdout, "write", vim_message, 1);
- rb_define_global_function("p", f_p, -1);
-}
-
-static void ruby_vim_init(void)
-{
- objtbl = rb_hash_new();
- rb_global_variable(&objtbl);
-
- /* The Vim module used to be called "VIM", but "Vim" is better.
Make an
- * alias "VIM" for backwards compatiblity. */
- mVIM = rb_define_module("Vim");
- rb_define_const(rb_cObject, "VIM", mVIM);
- rb_define_const(mVIM, "VERSION_MAJOR", INT2NUM(VIM_VERSION_MAJOR));
- rb_define_const(mVIM, "VERSION_MINOR", INT2NUM(VIM_VERSION_MINOR));
- rb_define_const(mVIM, "VERSION_BUILD", INT2NUM(VIM_VERSION_BUILD));
- rb_define_const(mVIM, "VERSION_PATCHLEVEL",
INT2NUM(VIM_VERSION_PATCHLEVEL));
- rb_define_const(mVIM, "VERSION_SHORT", rb_str_new2(VIM_VERSION_SHORT));
- rb_define_const(mVIM, "VERSION_MEDIUM",
rb_str_new2(VIM_VERSION_MEDIUM));
- rb_define_const(mVIM, "VERSION_LONG", rb_str_new2(VIM_VERSION_LONG));
- rb_define_const(mVIM, "VERSION_LONG_DATE",
rb_str_new2(VIM_VERSION_LONG_DATE));
- rb_define_module_function(mVIM, "message", vim_message, 1);
- rb_define_module_function(mVIM, "set_option", vim_set_option, 1);
- rb_define_module_function(mVIM, "command", vim_command, 1);
- rb_define_module_function(mVIM, "evaluate", vim_evaluate, 1);
-
- eDeletedBufferError = rb_define_class_under(mVIM, "DeletedBufferError",
- rb_eStandardError);
- eDeletedWindowError = rb_define_class_under(mVIM, "DeletedWindowError",
- rb_eStandardError);
-
- cBuffer = rb_define_class_under(mVIM, "Buffer", rb_cObject);
- rb_define_singleton_method(cBuffer, "current", buffer_s_current, 0);
- rb_define_singleton_method(cBuffer, "count", buffer_s_count, 0);
- rb_define_singleton_method(cBuffer, "[]", buffer_s_aref, 1);
- rb_define_method(cBuffer, "name", buffer_name, 0);
- rb_define_method(cBuffer, "number", buffer_number, 0);
- rb_define_method(cBuffer, "count", buffer_count, 0);
- rb_define_method(cBuffer, "length", buffer_count, 0);
- rb_define_method(cBuffer, "[]", buffer_aref, 1);
- rb_define_method(cBuffer, "[]=", buffer_aset, 2);
- rb_define_method(cBuffer, "delete", buffer_delete, 1);
- rb_define_method(cBuffer, "append", buffer_append, 2);
-
- /* Added line manipulation functions
- * SegPhault - 03/07/05 */
- rb_define_method(cBuffer, "line_number", current_line_number, 0);
- rb_define_method(cBuffer, "line", line_s_current, 0);
- rb_define_method(cBuffer, "line=", set_current_line, 1);
-
-
- cVimWindow = rb_define_class_under(mVIM, "Window", rb_cObject);
- rb_define_singleton_method(cVimWindow, "current", window_s_current, 0);
- rb_define_singleton_method(cVimWindow, "count", window_s_count, 0);
- rb_define_singleton_method(cVimWindow, "[]", window_s_aref, 1);
- rb_define_method(cVimWindow, "buffer", window_buffer, 0);
- rb_define_method(cVimWindow, "height", window_height, 0);
- rb_define_method(cVimWindow, "height=", window_set_height, 1);
- rb_define_method(cVimWindow, "width", window_width, 0);
- rb_define_method(cVimWindow, "width=", window_set_width, 1);
- rb_define_method(cVimWindow, "cursor", window_cursor, 0);
- rb_define_method(cVimWindow, "cursor=", window_set_cursor, 1);
-
- rb_define_virtual_variable("$curbuf", buffer_s_current, 0);
- rb_define_virtual_variable("$curwin", window_s_current, 0);
-}
diff -Naur vim72.360.rubypatch/src/Makefile vim72.361/src/Makefile
--- vim72.360.rubypatch/src/Makefile 2010-02-18 06:40:40.000000000 -0500
+++ vim72.361/src/Makefile 2010-02-18 06:44:32.000000000 -0500
@@ -395,7 +395,9 @@
# RUBY
# Uncomment this when you want to include the Ruby interface.
-#CONF_OPT_RUBY = --enable-rubyinterp
+# Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
+# CONF_OPT_RUBY = --enable-rubyinterp
+# CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
# MZSCHEME
# Uncomment this when you want to include the MzScheme interface.
diff -Naur vim72.360.rubypatch/src/version.c vim72.361/src/version.c
--- vim72.360.rubypatch/src/version.c 2010-02-18 06:40:41.000000000 -0500
+++ vim72.361/src/version.c 2010-02-18 06:44:32.000000000 -0500
@@ -682,6 +682,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 361,
+/**/
360,
/**/
359,
--
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php