4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
11 Problem: Ruby 1.9 is not supported.
12 Solution: Add Ruby 1.9 support. (Msaki Suketa)
13 Files: src/Makefile, src/auto/configure, src/configure.in, src/if_ruby.c
16 *** ../vim-7.2.360/src/Makefile 2010-02-17 15:12:22.000000000 +0100
17 --- src/Makefile 2010-02-17 16:21:01.000000000 +0100
22 # Uncomment this when you want to include the Ruby interface.
23 ! #CONF_OPT_RUBY = --enable-rubyinterp
26 # Uncomment this when you want to include the MzScheme interface.
30 # Uncomment this when you want to include the Ruby interface.
31 ! # Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
32 ! # CONF_OPT_RUBY = --enable-rubyinterp
33 ! # CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
36 # Uncomment this when you want to include the MzScheme interface.
37 *** ../vim-7.2.360/src/auto/configure 2009-12-16 17:14:08.000000000 +0100
38 --- src/auto/configure 2010-02-17 16:08:59.000000000 +0100
52 --with-plthome=PLTHOME Use PLTHOME.
53 --with-python-config-dir=PATH Python's config directory
54 --with-tclsh=PATH which tclsh to use (default: tclsh8.0)
55 + --with-ruby-command=RUBY name of the Ruby command (default: ruby)
56 --with-x use the X Window System
57 --with-gtk-prefix=PFX Prefix where GTK is installed (optional)
58 --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)
61 { $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
62 $as_echo "$enable_rubyinterp" >&6; }
63 if test "$enable_rubyinterp" = "yes"; then
65 ! # Extract the first word of "ruby", so it can be a program name with args.
66 ! set dummy ruby; ac_word=$2
67 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
68 $as_echo_n "checking for $ac_word... " >&6; }
69 if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
71 { $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
72 $as_echo "$enable_rubyinterp" >&6; }
73 if test "$enable_rubyinterp" = "yes"; then
74 + { $as_echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
75 + $as_echo_n "checking --with-ruby-command argument... " >&6; }
77 ! # Check whether --with-ruby-command was given.
78 ! if test "${with_ruby_command+set}" = set; then
79 ! withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:$LINENO: result: $RUBY_CMD" >&5
80 ! $as_echo "$RUBY_CMD" >&6; }
82 ! RUBY_CMD="ruby"; { $as_echo "$as_me:$LINENO: result: defaulting to $RUBY_CMD" >&5
83 ! $as_echo "defaulting to $RUBY_CMD" >&6; }
87 ! # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
88 ! set dummy $RUBY_CMD; ac_word=$2
89 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
90 $as_echo_n "checking for $ac_word... " >&6; }
91 if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
95 { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5
96 $as_echo_n "checking Ruby header files... " >&6; }
97 ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
98 if test "X$rubyhdrdir" != "X"; then
99 { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5
100 $as_echo "$rubyhdrdir" >&6; }
101 RUBY_CFLAGS="-I$rubyhdrdir"
102 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'`
103 if test "X$rubylibs" != "X"; then
104 RUBY_LIBS="$rubylibs"
107 { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5
108 $as_echo_n "checking Ruby header files... " >&6; }
109 ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
110 if test "X$rubyhdrdir" != "X"; then
111 { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5
112 $as_echo "$rubyhdrdir" >&6; }
113 RUBY_CFLAGS="-I$rubyhdrdir"
114 + rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'`
115 + if test -d "$rubyhdrdir/$rubyarch"; then
116 + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
118 + rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'`
119 + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
120 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'`
121 if test "X$rubylibs" != "X"; then
122 RUBY_LIBS="$rubylibs"
128 ! { $as_echo "$as_me:$LINENO: result: not found" >&5
129 ! $as_echo "not found" >&6; }
132 { $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5
137 ! { $as_echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
138 ! $as_echo "not found; disabling Ruby" >&6; }
141 { $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5
142 *** ../vim-7.2.360/src/configure.in 2009-12-16 17:14:08.000000000 +0100
143 --- src/configure.in 2010-02-17 16:00:58.000000000 +0100
146 [enable_rubyinterp="no"])
147 AC_MSG_RESULT($enable_rubyinterp)
148 if test "$enable_rubyinterp" = "yes"; then
149 AC_SUBST(vi_cv_path_ruby)
150 ! AC_PATH_PROG(vi_cv_path_ruby, ruby)
151 if test "X$vi_cv_path_ruby" != "X"; then
152 AC_MSG_CHECKING(Ruby version)
153 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
155 AC_MSG_CHECKING(Ruby header files)
156 ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
157 if test "X$rubyhdrdir" != "X"; then
158 AC_MSG_RESULT($rubyhdrdir)
159 RUBY_CFLAGS="-I$rubyhdrdir"
160 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
161 if test "X$rubylibs" != "X"; then
162 RUBY_LIBS="$rubylibs"
164 [enable_rubyinterp="no"])
165 AC_MSG_RESULT($enable_rubyinterp)
166 if test "$enable_rubyinterp" = "yes"; then
167 + AC_MSG_CHECKING(--with-ruby-command argument)
168 + AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
169 + RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
170 + RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
171 AC_SUBST(vi_cv_path_ruby)
172 ! AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
173 if test "X$vi_cv_path_ruby" != "X"; then
174 AC_MSG_CHECKING(Ruby version)
175 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
177 AC_MSG_CHECKING(Ruby header files)
178 ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
179 if test "X$rubyhdrdir" != "X"; then
180 AC_MSG_RESULT($rubyhdrdir)
181 RUBY_CFLAGS="-I$rubyhdrdir"
182 + rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
183 + if test -d "$rubyhdrdir/$rubyarch"; then
184 + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
186 + rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
187 + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
188 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
189 if test "X$rubylibs" != "X"; then
190 RUBY_LIBS="$rubylibs"
193 RUBY_PRO="if_ruby.pro"
196 ! AC_MSG_RESULT(not found, disabling Ruby)
199 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
201 RUBY_PRO="if_ruby.pro"
204 ! AC_MSG_RESULT(not found; disabling Ruby)
207 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
208 *** ../vim-7.2.360/src/if_ruby.c 2010-02-17 15:11:35.000000000 +0100
209 --- src/if_ruby.c 2010-02-17 16:08:47.000000000 +0100
216 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
217 + # include <ruby/encoding.h>
225 # define __OPENTRANSPORTPROVIDERS__
229 + * Backward compatiblity for Ruby 1.8 and earlier.
230 + * Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided.
231 + * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead
232 + * RXXX_LEN(s) and RXXX_PTR(s) are provided.
234 + #ifndef StringValuePtr
235 + # define StringValuePtr(s) STR2CSTR(s)
238 + # define RARRAY_LEN(s) RARRAY(s)->len
241 + # define RARRAY_PTR(s) RARRAY(s)->ptr
243 + #ifndef RSTRING_LEN
244 + # define RSTRING_LEN(s) RSTRING(s)->len
246 + #ifndef RSTRING_PTR
247 + # define RSTRING_PTR(s) RSTRING(s)->ptr
255 #define rb_str_concat dll_rb_str_concat
256 #define rb_str_new dll_rb_str_new
257 #define rb_str_new2 dll_rb_str_new2
258 ! #define ruby_errinfo (*dll_ruby_errinfo)
259 #define ruby_init dll_ruby_init
260 #define ruby_init_loadpath dll_ruby_init_loadpath
261 #define NtInitialize dll_NtInitialize
263 #define rb_str_concat dll_rb_str_concat
264 #define rb_str_new dll_rb_str_new
265 #define rb_str_new2 dll_rb_str_new2
266 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
267 ! # define rb_errinfo dll_rb_errinfo
269 ! # define ruby_errinfo (*dll_ruby_errinfo)
271 #define ruby_init dll_ruby_init
272 #define ruby_init_loadpath dll_ruby_init_loadpath
273 #define NtInitialize dll_NtInitialize
277 # define rb_w32_snprintf dll_rb_w32_snprintf
280 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
281 + # define ruby_script dll_ruby_script
282 + # define rb_enc_find_index dll_rb_enc_find_index
283 + # define rb_enc_find dll_rb_enc_find
284 + # define rb_enc_str_new dll_rb_enc_str_new
285 + # define rb_sprintf dll_rb_sprintf
289 * Pointers for dynamic link
294 static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
295 static VALUE (*dll_rb_str_new) (const char*, long);
296 static VALUE (*dll_rb_str_new2) (const char*);
297 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
298 + static VALUE (*dll_rb_errinfo) (void);
300 static VALUE *dll_ruby_errinfo;
302 static void (*dll_ruby_init) (void);
303 static void (*dll_ruby_init_loadpath) (void);
304 static void (*dll_NtInitialize) (int*, char***);
308 static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
311 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
312 + static void (*dll_ruby_script) (const char*);
313 + static int (*dll_rb_enc_find_index) (const char*);
314 + static rb_encoding* (*dll_rb_enc_find) (const char*);
315 + static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
316 + static VALUE (*dll_rb_sprintf) (const char*, ...);
319 static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
325 {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
326 {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
327 {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
328 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
329 + {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
331 {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
333 {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
334 {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
335 {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
336 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
337 {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
339 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
340 + {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
341 + {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
342 + {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
343 + {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
344 + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
356 + * In Ruby 1.9 or later, ruby String object has encoding.
357 + * conversion buffer string of vim to ruby String object using
358 + * VIM encoding option.
361 + vim_str2rb_enc_str(const char *s)
363 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
369 + isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
372 + enc = rb_enc_find((char *)sval);
375 + return rb_enc_str_new(s, strlen(s), enc);
379 + return rb_str_new2(s);
383 + eval_enc_string_protect(const char *str, int *state)
385 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
392 + isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
395 + enc = rb_enc_find((char *)sval);
399 + v = rb_sprintf("#-*- coding:%s -*-\n%s", rb_enc_name(enc), str);
400 + return rb_eval_string_protect(StringValuePtr(v), state);
404 + return rb_eval_string_protect(str, state);
407 void ex_rubydo(exarg_T *eap)
412 for (i = eap->line1; i <= eap->line2; i++) {
415 ! line = oldline = rb_str_new2((char *)ml_get(i));
416 rb_lastline_set(line);
417 ! rb_eval_string_protect((char *) eap->arg, &state);
422 for (i = eap->line1; i <= eap->line2; i++) {
425 ! line = oldline = vim_str2rb_enc_str((char *)ml_get(i));
426 rb_lastline_set(line);
427 ! eval_enc_string_protect((char *) eap->arg, &state);
433 EMSG(_("E265: $_ must be an instance of String"));
436 ! ml_replace(i, (char_u *) STR2CSTR(line), 1);
439 syn_changed(i); /* recompute syntax hl. for this line */
441 EMSG(_("E265: $_ must be an instance of String"));
444 ! ml_replace(i, (char_u *) StringValuePtr(line), 1);
447 syn_changed(i); /* recompute syntax hl. for this line */
451 char *argv[] = {"gvim.exe"};
452 NtInitialize(&argc, &argv);
454 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
458 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
459 + ruby_script("vim-ruby");
461 ruby_init_loadpath();
463 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
464 + rb_enc_find_index("encdb");
467 ruby_initialized = 1;
472 static void error_print(int state)
475 + #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19)
476 RUBYEXTERN VALUE ruby_errinfo;
487 eclass = CLASS_OF(ruby_errinfo);
488 einfo = rb_obj_as_string(ruby_errinfo);
489 ! if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
490 EMSG(_("E272: unhandled exception"));
497 + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
498 + eclass = CLASS_OF(rb_errinfo());
499 + einfo = rb_obj_as_string(rb_errinfo());
501 eclass = CLASS_OF(ruby_errinfo);
502 einfo = rb_obj_as_string(ruby_errinfo);
504 ! if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
505 EMSG(_("E272: unhandled exception"));
511 epath = rb_class_path(eclass);
512 vim_snprintf(buff, BUFSIZ, "%s: %s",
513 ! RSTRING(epath)->ptr, RSTRING(einfo)->ptr);
514 p = strchr(buff, '\n');
519 epath = rb_class_path(eclass);
520 vim_snprintf(buff, BUFSIZ, "%s: %s",
521 ! RSTRING_PTR(epath), RSTRING_PTR(einfo));
522 p = strchr(buff, '\n');
529 str = rb_obj_as_string(str);
530 ! buff = ALLOCA_N(char, RSTRING(str)->len);
531 ! strcpy(buff, RSTRING(str)->ptr);
532 p = strchr(buff, '\n');
538 str = rb_obj_as_string(str);
539 ! buff = ALLOCA_N(char, RSTRING_LEN(str));
540 ! strcpy(buff, RSTRING_PTR(str));
541 p = strchr(buff, '\n');
547 static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
549 ! do_set((char_u *)STR2CSTR(str), 0);
550 update_screen(NOT_VALID);
554 static VALUE vim_command(VALUE self UNUSED, VALUE str)
556 ! do_cmdline_cmd((char_u *)STR2CSTR(str));
560 static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
563 ! char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
569 static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
571 ! do_set((char_u *)StringValuePtr(str), 0);
572 update_screen(NOT_VALID);
576 static VALUE vim_command(VALUE self UNUSED, VALUE str)
578 ! do_cmdline_cmd((char_u *)StringValuePtr(str));
582 static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
585 ! char_u *value = eval_to_string((char_u *)StringValuePtr(str), NULL, TRUE);
591 if (n > 0 && n <= buf->b_ml.ml_line_count)
593 char *line = (char *)ml_get_buf(buf, n, FALSE);
594 ! return line ? rb_str_new2(line) : Qnil;
596 ! rb_raise(rb_eIndexError, "index %d out of buffer", n);
598 return Qnil; /* For stop warning */
601 if (n > 0 && n <= buf->b_ml.ml_line_count)
603 char *line = (char *)ml_get_buf(buf, n, FALSE);
604 ! return line ? vim_str2rb_enc_str(line) : Qnil;
606 ! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
608 return Qnil; /* For stop warning */
613 static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
615 ! char *line = STR2CSTR(str);
618 if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
621 static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
623 ! char *line = StringValuePtr(str);
626 if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
632 ! rb_raise(rb_eIndexError, "index %d out of buffer", n);
634 return Qnil; /* For stop warning */
640 ! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
642 return Qnil; /* For stop warning */
649 ! rb_raise(rb_eIndexError, "index %d out of buffer", n);
657 ! rb_raise(rb_eIndexError, "line number %ld out of range", n);
663 static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
665 buf_T *buf = get_buf(self);
666 ! char *line = STR2CSTR(str);
667 long n = NUM2LONG(num);
670 ! if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
672 /* set curwin/curbuf for "buf" and save some things */
673 aucmd_prepbuf(&aco, buf);
675 static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
677 buf_T *buf = get_buf(self);
678 ! char *line = StringValuePtr(str);
679 long n = NUM2LONG(num);
682 ! if (line != NULL) {
683 ! rb_raise(rb_eIndexError, "NULL line");
685 ! else if (n >= 0 && n <= buf->b_ml.ml_line_count)
687 /* set curwin/curbuf for "buf" and save some things */
688 aucmd_prepbuf(&aco, buf);
691 update_curbuf(NOT_VALID);
694 ! rb_raise(rb_eIndexError, "index %d out of buffer", n);
699 update_curbuf(NOT_VALID);
702 ! rb_raise(rb_eIndexError, "line number %ld out of range", n);
708 win_T *win = get_win(self);
710 Check_Type(pos, T_ARRAY);
711 ! if (RARRAY(pos)->len != 2)
712 rb_raise(rb_eArgError, "array length must be 2");
713 ! lnum = RARRAY(pos)->ptr[0];
714 ! col = RARRAY(pos)->ptr[1];
715 win->w_cursor.lnum = NUM2LONG(lnum);
716 win->w_cursor.col = NUM2UINT(col);
717 check_cursor(); /* put cursor on an existing line */
719 win_T *win = get_win(self);
721 Check_Type(pos, T_ARRAY);
722 ! if (RARRAY_LEN(pos) != 2)
723 rb_raise(rb_eArgError, "array length must be 2");
724 ! lnum = RARRAY_PTR(pos)[0];
725 ! col = RARRAY_PTR(pos)[1];
726 win->w_cursor.lnum = NUM2LONG(lnum);
727 win->w_cursor.col = NUM2UINT(col);
728 check_cursor(); /* put cursor on an existing line */
731 if (i > 0) rb_str_cat(str, ", ", 2);
732 rb_str_concat(str, rb_inspect(argv[i]));
734 ! MSG(RSTRING(str)->ptr);
739 if (i > 0) rb_str_cat(str, ", ", 2);
740 rb_str_concat(str, rb_inspect(argv[i]));
742 ! MSG(RSTRING_PTR(str));
746 *** ../vim-7.2.360/src/version.c 2010-02-17 15:11:35.000000000 +0100
747 --- src/version.c 2010-02-17 15:59:12.000000000 +0100
751 { /* Add new patch number below this line */
757 "Marriage is when a man and woman become as one; the trouble starts
758 when they try to decide which one"
760 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
761 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
762 \\\ download, build and distribute -- http://www.A-A-P.org ///
763 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///