| To: vim-dev@vim.org |
| Subject: Patch 7.2.361 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| 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 |
| |
| |
| |
| |
| |
| *** 395,401 **** |
| |
| # RUBY |
| # Uncomment this when you want to include the Ruby interface. |
| ! #CONF_OPT_RUBY = --enable-rubyinterp |
| |
| # MZSCHEME |
| # Uncomment this when you want to include the MzScheme interface. |
| --- 395,403 ---- |
| |
| # RUBY |
| # Uncomment this when you want to include the Ruby interface. |
| ! # 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. |
| |
| |
| |
| *** 793,798 **** |
| --- 793,799 ---- |
| enable_tclinterp |
| with_tclsh |
| enable_rubyinterp |
| + with_ruby_command |
| enable_cscope |
| enable_workshop |
| enable_netbeans |
| |
| *** 1503,1508 **** |
| --- 1504,1510 ---- |
| --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,5711 **** |
| { $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5 |
| $as_echo "$enable_rubyinterp" >&6; } |
| if test "$enable_rubyinterp" = "yes"; then |
| |
| ! # Extract the first word of "ruby", so it can be a program name with args. |
| ! set dummy ruby; 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 |
| --- 5705,5725 ---- |
| { $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; } |
| |
| ! # 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 |
| |
| *** 5752,5762 **** |
| $as_echo "OK" >&6; } |
| { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5 |
| $as_echo_n "checking Ruby header files... " >&6; } |
| ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null` |
| if test "X$rubyhdrdir" != "X"; then |
| { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5 |
| $as_echo "$rubyhdrdir" >&6; } |
| RUBY_CFLAGS="-I$rubyhdrdir" |
| rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'` |
| if test "X$rubylibs" != "X"; then |
| RUBY_LIBS="$rubylibs" |
| --- 5766,5782 ---- |
| $as_echo "OK" >&6; } |
| { $as_echo "$as_me:$LINENO: checking Ruby header files" >&5 |
| $as_echo_n "checking Ruby header files... " >&6; } |
| ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null` |
| if test "X$rubyhdrdir" != "X"; then |
| { $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5 |
| $as_echo "$rubyhdrdir" >&6; } |
| RUBY_CFLAGS="-I$rubyhdrdir" |
| + rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'` |
| + if test -d "$rubyhdrdir/$rubyarch"; then |
| + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" |
| + fi |
| + rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'` |
| + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" |
| rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'` |
| if test "X$rubylibs" != "X"; then |
| RUBY_LIBS="$rubylibs" |
| |
| *** 5793,5800 **** |
| _ACEOF |
| |
| else |
| ! { $as_echo "$as_me:$LINENO: result: not found" >&5 |
| ! $as_echo "not found" >&6; } |
| fi |
| else |
| { $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5 |
| --- 5813,5820 ---- |
| _ACEOF |
| |
| else |
| ! { $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 |
| |
| |
| |
| *** 949,965 **** |
| [enable_rubyinterp="no"]) |
| AC_MSG_RESULT($enable_rubyinterp) |
| if test "$enable_rubyinterp" = "yes"; then |
| AC_SUBST(vi_cv_path_ruby) |
| ! AC_PATH_PROG(vi_cv_path_ruby, ruby) |
| 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 |
| AC_MSG_RESULT(OK) |
| AC_MSG_CHECKING(Ruby header files) |
| ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null` |
| if test "X$rubyhdrdir" != "X"; then |
| AC_MSG_RESULT($rubyhdrdir) |
| RUBY_CFLAGS="-I$rubyhdrdir" |
| rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'` |
| if test "X$rubylibs" != "X"; then |
| RUBY_LIBS="$rubylibs" |
| --- 949,975 ---- |
| [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_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 |
| AC_MSG_RESULT(OK) |
| AC_MSG_CHECKING(Ruby header files) |
| ! rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null` |
| if test "X$rubyhdrdir" != "X"; then |
| AC_MSG_RESULT($rubyhdrdir) |
| RUBY_CFLAGS="-I$rubyhdrdir" |
| + rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'` |
| + if test -d "$rubyhdrdir/$rubyarch"; then |
| + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" |
| + fi |
| + rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'` |
| + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" |
| rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'` |
| if test "X$rubylibs" != "X"; then |
| RUBY_LIBS="$rubylibs" |
| |
| *** 997,1003 **** |
| RUBY_PRO="if_ruby.pro" |
| AC_DEFINE(FEAT_RUBY) |
| else |
| ! AC_MSG_RESULT(not found, disabling Ruby) |
| fi |
| else |
| AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) |
| --- 1007,1013 ---- |
| RUBY_PRO="if_ruby.pro" |
| AC_DEFINE(FEAT_RUBY) |
| else |
| ! AC_MSG_RESULT(not found; disabling Ruby) |
| fi |
| else |
| AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) |
| |
| |
| |
| *** 54,59 **** |
| --- 54,62 ---- |
| #endif |
| |
| #include <ruby.h> |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + # include <ruby/encoding.h> |
| + #endif |
| |
| #undef EXTERN |
| #undef _ |
| |
| *** 65,70 **** |
| --- 68,95 ---- |
| # define __OPENTRANSPORTPROVIDERS__ |
| #endif |
| |
| + /* |
| + * 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 and RXXX(s)->ptr, instead |
| + * RXXX_LEN(s) and RXXX_PTR(s) are provided. |
| + */ |
| + #ifndef StringValuePtr |
| + # define StringValuePtr(s) STR2CSTR(s) |
| + #endif |
| + #ifndef RARRAY_LEN |
| + # define RARRAY_LEN(s) RARRAY(s)->len |
| + #endif |
| + #ifndef RARRAY_PTR |
| + # define RARRAY_PTR(s) RARRAY(s)->ptr |
| + #endif |
| + #ifndef RSTRING_LEN |
| + # define RSTRING_LEN(s) RSTRING(s)->len |
| + #endif |
| + #ifndef RSTRING_PTR |
| + # define RSTRING_PTR(s) RSTRING(s)->ptr |
| + #endif |
| + |
| #include "vim.h" |
| #include "version.h" |
| |
| |
| *** 134,140 **** |
| #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 |
| --- 159,169 ---- |
| #define rb_str_concat dll_rb_str_concat |
| #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 |
| ! #else |
| ! # define ruby_errinfo (*dll_ruby_errinfo) |
| ! #endif |
| #define ruby_init dll_ruby_init |
| #define ruby_init_loadpath dll_ruby_init_loadpath |
| #define NtInitialize dll_NtInitialize |
| |
| *** 142,147 **** |
| --- 171,184 ---- |
| # define rb_w32_snprintf dll_rb_w32_snprintf |
| #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 |
| + #endif |
| + |
| /* |
| * Pointers for dynamic link |
| */ |
| |
| *** 189,195 **** |
| --- 226,236 ---- |
| 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*); |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + static VALUE (*dll_rb_errinfo) (void); |
| + #else |
| static VALUE *dll_ruby_errinfo; |
| + #endif |
| static void (*dll_ruby_init) (void); |
| static void (*dll_ruby_init_loadpath) (void); |
| static void (*dll_NtInitialize) (int*, char***); |
| |
| *** 197,202 **** |
| --- 238,251 ---- |
| static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); |
| #endif |
| |
| + #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 VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); |
| + static VALUE (*dll_rb_sprintf) (const char*, ...); |
| + #endif |
| + |
| static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */ |
| |
| /* |
| |
| *** 252,264 **** |
| --- 301,324 ---- |
| {"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}, |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo}, |
| + #else |
| {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo}, |
| + #endif |
| {"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 |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + {"ruby_script", (RUBY_PROC*)&dll_ruby_script}, |
| + {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, |
| + {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find}, |
| + {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, |
| + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, |
| + #endif |
| {"", NULL}, |
| }; |
| |
| |
| *** 348,353 **** |
| --- 408,465 ---- |
| vim_free(script); |
| } |
| |
| + /* |
| + * In Ruby 1.9 or later, ruby String object has encoding. |
| + * conversion buffer string of vim to ruby String object using |
| + * VIM encoding option. |
| + */ |
| + static VALUE |
| + vim_str2rb_enc_str(const char *s) |
| + { |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + int isnum; |
| + 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); |
| + } |
| + } |
| + #endif |
| + return rb_str_new2(s); |
| + } |
| + |
| + static VALUE |
| + eval_enc_string_protect(const char *str, int *state) |
| + { |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + int isnum; |
| + long lval; |
| + 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); |
| + } |
| + } |
| + #endif |
| + return rb_eval_string_protect(str, state); |
| + } |
| + |
| void ex_rubydo(exarg_T *eap) |
| { |
| int state; |
| |
| *** 360,368 **** |
| 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; |
| --- 472,480 ---- |
| for (i = eap->line1; i <= eap->line2; i++) { |
| VALUE line, oldline; |
| |
| ! line = oldline = vim_str2rb_enc_str((char *)ml_get(i)); |
| rb_lastline_set(line); |
| ! eval_enc_string_protect((char *) eap->arg, &state); |
| if (state) { |
| error_print(state); |
| break; |
| |
| *** 373,379 **** |
| 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 */ |
| --- 485,491 ---- |
| EMSG(_("E265: $_ must be an instance of String")); |
| return; |
| } |
| ! ml_replace(i, (char_u *) StringValuePtr(line), 1); |
| changed(); |
| #ifdef SYNTAX_HL |
| syn_changed(i); /* recompute syntax hl. for this line */ |
| |
| *** 428,436 **** |
| --- 540,557 ---- |
| char *argv[] = {"gvim.exe"}; |
| NtInitialize(&argc, &argv); |
| #endif |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + RUBY_INIT_STACK; |
| + #endif |
| ruby_init(); |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + ruby_script("vim-ruby"); |
| + #endif |
| ruby_init_loadpath(); |
| ruby_io_init(); |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + rb_enc_find_index("encdb"); |
| + #endif |
| ruby_vim_init(); |
| ruby_initialized = 1; |
| #ifdef DYNAMIC_RUBY |
| |
| *** 448,455 **** |
| --- 569,578 ---- |
| static void error_print(int state) |
| { |
| #ifndef DYNAMIC_RUBY |
| + #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) |
| RUBYEXTERN VALUE ruby_errinfo; |
| #endif |
| + #endif |
| VALUE eclass; |
| VALUE einfo; |
| char buff[BUFSIZ]; |
| |
| *** 482,490 **** |
| 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 { |
| --- 605,618 ---- |
| break; |
| case TAG_RAISE: |
| case TAG_FATAL: |
| + #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 |
| + eclass = CLASS_OF(rb_errinfo()); |
| + einfo = rb_obj_as_string(rb_errinfo()); |
| + #else |
| eclass = CLASS_OF(ruby_errinfo); |
| einfo = rb_obj_as_string(ruby_errinfo); |
| ! #endif |
| ! if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) { |
| EMSG(_("E272: unhandled exception")); |
| } |
| else { |
| |
| *** 493,499 **** |
| |
| 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); |
| --- 621,627 ---- |
| |
| epath = rb_class_path(eclass); |
| vim_snprintf(buff, BUFSIZ, "%s: %s", |
| ! RSTRING_PTR(epath), RSTRING_PTR(einfo)); |
| p = strchr(buff, '\n'); |
| if (p) *p = '\0'; |
| EMSG(buff); |
| |
| *** 511,518 **** |
| 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); |
| --- 639,646 ---- |
| char *buff, *p; |
| |
| str = rb_obj_as_string(str); |
| ! buff = ALLOCA_N(char, RSTRING_LEN(str)); |
| ! strcpy(buff, RSTRING_PTR(str)); |
| p = strchr(buff, '\n'); |
| if (p) *p = '\0'; |
| MSG(buff); |
| |
| *** 521,541 **** |
| |
| 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) |
| { |
| --- 649,669 ---- |
| |
| static VALUE vim_set_option(VALUE self UNUSED, VALUE str) |
| { |
| ! do_set((char_u *)StringValuePtr(str), 0); |
| update_screen(NOT_VALID); |
| return Qnil; |
| } |
| |
| static VALUE vim_command(VALUE self UNUSED, VALUE str) |
| { |
| ! do_cmdline_cmd((char_u *)StringValuePtr(str)); |
| return Qnil; |
| } |
| |
| static VALUE vim_evaluate(VALUE self UNUSED, VALUE str) |
| { |
| #ifdef FEAT_EVAL |
| ! char_u *value = eval_to_string((char_u *)StringValuePtr(str), NULL, TRUE); |
| |
| if (value != NULL) |
| { |
| |
| *** 640,648 **** |
| 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 |
| --- 768,776 ---- |
| if (n > 0 && n <= buf->b_ml.ml_line_count) |
| { |
| char *line = (char *)ml_get_buf(buf, n, FALSE); |
| ! return line ? vim_str2rb_enc_str(line) : Qnil; |
| } |
| ! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); |
| #ifndef __GNUC__ |
| return Qnil; /* For stop warning */ |
| #endif |
| |
| *** 659,665 **** |
| |
| 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) |
| --- 787,793 ---- |
| |
| static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str) |
| { |
| ! char *line = StringValuePtr(str); |
| aco_save_T aco; |
| |
| if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL) |
| |
| *** 683,689 **** |
| } |
| else |
| { |
| ! rb_raise(rb_eIndexError, "index %d out of buffer", n); |
| #ifndef __GNUC__ |
| return Qnil; /* For stop warning */ |
| #endif |
| --- 811,817 ---- |
| } |
| else |
| { |
| ! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); |
| #ifndef __GNUC__ |
| return Qnil; /* For stop warning */ |
| #endif |
| |
| *** 729,735 **** |
| } |
| else |
| { |
| ! rb_raise(rb_eIndexError, "index %d out of buffer", n); |
| } |
| return Qnil; |
| } |
| --- 857,863 ---- |
| } |
| else |
| { |
| ! rb_raise(rb_eIndexError, "line number %ld out of range", n); |
| } |
| return Qnil; |
| } |
| |
| *** 737,747 **** |
| 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); |
| --- 865,878 ---- |
| static VALUE buffer_append(VALUE self, VALUE num, VALUE str) |
| { |
| buf_T *buf = get_buf(self); |
| ! char *line = StringValuePtr(str); |
| long n = NUM2LONG(num); |
| aco_save_T aco; |
| |
| ! 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); |
| |
| *** 763,769 **** |
| update_curbuf(NOT_VALID); |
| } |
| else { |
| ! rb_raise(rb_eIndexError, "index %d out of buffer", n); |
| } |
| return str; |
| } |
| --- 894,900 ---- |
| update_curbuf(NOT_VALID); |
| } |
| else { |
| ! rb_raise(rb_eIndexError, "line number %ld out of range", n); |
| } |
| return str; |
| } |
| |
| *** 904,913 **** |
| 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 */ |
| --- 1035,1044 ---- |
| win_T *win = get_win(self); |
| |
| Check_Type(pos, T_ARRAY); |
| ! if (RARRAY_LEN(pos) != 2) |
| rb_raise(rb_eArgError, "array length must be 2"); |
| ! lnum = RARRAY_PTR(pos)[0]; |
| ! col = RARRAY_PTR(pos)[1]; |
| win->w_cursor.lnum = NUM2LONG(lnum); |
| win->w_cursor.col = NUM2UINT(col); |
| check_cursor(); /* put cursor on an existing line */ |
| |
| *** 924,930 **** |
| if (i > 0) rb_str_cat(str, ", ", 2); |
| rb_str_concat(str, rb_inspect(argv[i])); |
| } |
| ! MSG(RSTRING(str)->ptr); |
| return Qnil; |
| } |
| |
| --- 1055,1061 ---- |
| if (i > 0) rb_str_cat(str, ", ", 2); |
| rb_str_concat(str, rb_inspect(argv[i])); |
| } |
| ! MSG(RSTRING_PTR(str)); |
| return Qnil; |
| } |
| |
| |
| |
| |
| *** 683,684 **** |
| --- 683,686 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 361, |
| /**/ |
| |
| -- |
| "Marriage is when a man and woman become as one; the trouble starts |
| when they try to decide which one" |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ download, build and distribute -- http://www.A-A-P.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |