summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0232
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0232')
-rw-r--r--data/vim/patches/8.1.0232188
1 files changed, 188 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0232 b/data/vim/patches/8.1.0232
new file mode 100644
index 000000000..b7ae0f036
--- /dev/null
+++ b/data/vim/patches/8.1.0232
@@ -0,0 +1,188 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0232
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0232
+Problem: Ruby error does not include backtrace.
+Solution: Add an error backtrace. (Masataka Pocke Kuwabara, closes #3267)
+Files: src/if_ruby.c
+
+
+*** ../vim-8.1.0231/src/if_ruby.c 2018-07-28 17:18:05.164865356 +0200
+--- src/if_ruby.c 2018-08-01 18:41:37.613550764 +0200
+***************
+*** 93,98 ****
+--- 93,103 ----
+ # define RUBY20_OR_LATER 1
+ #endif
+
++ #if (defined(RUBY_VERSION) && RUBY_VERSION >= 21) \
++ || (defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21)
++ # define RUBY21_OR_LATER 1
++ #endif
++
+ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
+ /* Ruby 1.9 defines a number of static functions which use rb_num2long and
+ * rb_int2big */
+***************
+*** 238,248 ****
+--- 243,263 ----
+ # define rb_eRuntimeError (*dll_rb_eRuntimeError)
+ # define rb_eStandardError (*dll_rb_eStandardError)
+ # define rb_eval_string_protect dll_rb_eval_string_protect
++ # ifdef RUBY21_OR_LATER
++ # define rb_funcallv dll_rb_funcallv
++ # else
++ # define rb_funcall2 dll_rb_funcall2
++ # endif
+ # 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
++ # ifdef RUBY19_OR_LATER
++ # define rb_intern2 dll_rb_intern2
++ # else
++ # define rb_intern dll_rb_intern
++ # endif
+ # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
+ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 18
+ # define rb_fix2int dll_rb_fix2int
+***************
+*** 367,377 ****
+--- 382,402 ----
+ static VALUE *dll_rb_eRuntimeError;
+ static VALUE *dll_rb_eStandardError;
+ static VALUE (*dll_rb_eval_string_protect) (const char*, int*);
++ # ifdef RUBY21_OR_LATER
++ static VALUE (*dll_rb_funcallv) (VALUE, ID, int, const VALUE*);
++ # else
++ static VALUE (*dll_rb_funcall2) (VALUE, ID, int, const VALUE*);
++ # endif
+ 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);
++ # ifdef RUBY19_OR_LATER
++ static ID (*dll_rb_intern2) (const char*, long);
++ # else
++ static ID (*dll_rb_intern) (const char*);
++ # endif
+ # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
+ static long (*dll_rb_fix2int) (VALUE);
+ static long (*dll_rb_num2int) (VALUE);
+***************
+*** 561,571 ****
+--- 586,606 ----
+ {"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},
++ # ifdef RUBY21_OR_LATER
++ {"rb_funcallv", (RUBY_PROC*)&dll_rb_funcallv},
++ # else
++ {"rb_funcall2", (RUBY_PROC*)&dll_rb_funcall2},
++ # endif
+ {"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},
++ # ifdef RUBY19_OR_LATER
++ {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2},
++ # else
++ {"rb_intern", (RUBY_PROC*)&dll_rb_intern},
++ # endif
+ # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
+ {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int},
+ {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int},
+***************
+*** 926,934 ****
+--- 961,973 ----
+ RUBYEXTERN VALUE ruby_errinfo;
+ #endif
+ #endif
++ VALUE error;
+ VALUE eclass;
+ VALUE einfo;
++ VALUE bt;
++ int attr;
+ char buff[BUFSIZ];
++ long i;
+
+ #define TAG_RETURN 0x1
+ #define TAG_BREAK 0x2
+***************
+*** 960,971 ****
+ case TAG_RAISE:
+ case TAG_FATAL:
+ #ifdef RUBY19_OR_LATER
+! 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"));
+--- 999,1010 ----
+ case TAG_RAISE:
+ case TAG_FATAL:
+ #ifdef RUBY19_OR_LATER
+! error = rb_errinfo();
+ #else
+! error = ruby_errinfo;
+ #endif
++ eclass = CLASS_OF(error);
++ einfo = rb_obj_as_string(error);
+ if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0)
+ {
+ EMSG(_("E272: unhandled exception"));
+***************
+*** 982,987 ****
+--- 1021,1037 ----
+ if (p) *p = '\0';
+ EMSG(buff);
+ }
++
++ attr = syn_name2attr((char_u *)"Error");
++ # ifdef RUBY21_OR_LATER
++ bt = rb_funcallv(error, rb_intern("backtrace"), 0, 0);
++ for (i = 0; i < RARRAY_LEN(bt); i++)
++ msg_attr((char_u *)RSTRING_PTR(RARRAY_AREF(bt, i)), attr);
++ # else
++ bt = rb_funcall2(error, rb_intern("backtrace"), 0, 0);
++ for (i = 0; i < RARRAY_LEN(bt); i++)
++ msg_attr((char_u *)RSTRING_PTR(RARRAY_PTR(bt)[i]), attr);
++ # endif
+ break;
+ default:
+ vim_snprintf(buff, BUFSIZ, _("E273: unknown longjmp status %d"), state);
+*** ../vim-8.1.0231/src/version.c 2018-08-01 18:02:57.493860532 +0200
+--- src/version.c 2018-08-01 18:39:43.442285284 +0200
+***************
+*** 796,797 ****
+--- 796,799 ----
+ { /* Add new patch number below this line */
++ /**/
++ 232,
+ /**/
+
+--
+ARTHUR: Be quiet!
+DENNIS: --but by a two-thirds majority in the case of more--
+ARTHUR: Be quiet! I order you to be quiet!
+WOMAN: Order, eh -- who does he think he is?
+ARTHUR: I am your king!
+ The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///