diff options
Diffstat (limited to 'mnv/src')
| -rw-r--r-- | mnv/src/if_ruby.c | 18 | ||||
| -rw-r--r-- | mnv/src/scriptfile.c | 2 | ||||
| -rw-r--r-- | mnv/src/testdir/test_regexp_latin.mnv | 60 | ||||
| -rw-r--r-- | mnv/src/testdir/util/screendump.mnv | 16 |
4 files changed, 63 insertions, 33 deletions
diff --git a/mnv/src/if_ruby.c b/mnv/src/if_ruby.c index 796c074664..b6c950ba58 100644 --- a/mnv/src/if_ruby.c +++ b/mnv/src/if_ruby.c @@ -103,6 +103,10 @@ # define rb_unexpected_type rb_unexpected_type_stub # endif +# if RUBY_VERSION >= 34 +# define rb_data_object_wrap rb_data_object_wrap_stub +# endif + #endif // ifdef DYNAMIC_RUBY // On macOS pre-installed Ruby defines "SIZEOF_TIME_T" as "SIZEOF_LONG" so it @@ -500,6 +504,10 @@ NORETURN(static void (*dll_ruby_malloc_size_overflow)(size_t, size_t)); # endif # endif +# if RUBY_VERSION >= 34 +static VALUE (*dll_rb_data_object_wrap)(VALUE, void*, RUBY_DATA_FUNC, RUBY_DATA_FUNC); +# endif + # if RUBY_VERSION >= 26 && RUBY_VERSION <= 32 void rb_ary_detransient_stub(VALUE x); # endif @@ -606,6 +614,13 @@ rb_unexpected_type_stub(VALUE self, int t) dll_rb_unexpected_type(self, t); } # endif +# if RUBY_VERSION >= 34 + VALUE +rb_data_object_wrap_stub(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree) +{ + return dll_rb_data_object_wrap(klass, datap, dmark, dfree); +} +# endif # ifdef USE_TYPEDDATA void *rb_check_typeddata_stub(VALUE obj, const rb_data_type_t *data_type) { @@ -658,6 +673,9 @@ static struct # if RUBY_VERSION >= 31 {"rb_debug_rstring_null_ptr", (RUBY_PROC*)&dll_rb_debug_rstring_null_ptr}, # endif +# if RUBY_VERSION >= 34 + {"rb_data_object_wrap", (RUBY_PROC*)&dll_rb_data_object_wrap}, +# endif {"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}, diff --git a/mnv/src/scriptfile.c b/mnv/src/scriptfile.c index 37f055eed5..afa36b6ca5 100644 --- a/mnv/src/scriptfile.c +++ b/mnv/src/scriptfile.c @@ -1004,7 +1004,7 @@ load_pack_plugin(char_u *fname) source_all_matches(pat); { - char_u *cmd = mnv_strsave((char_u *)"g:did_load_filetypes"); + char_u *cmd = mnv_strsave((char_u *)"get(g:, 'did_load_filetypes', 0)"); // If runtime/filetype.mnv wasn't loaded yet, the scripts will be // found when it loads. diff --git a/mnv/src/testdir/test_regexp_latin.mnv b/mnv/src/testdir/test_regexp_latin.mnv index e88045db38..62b2ffd256 100644 --- a/mnv/src/testdir/test_regexp_latin.mnv +++ b/mnv/src/testdir/test_regexp_latin.mnv @@ -4,8 +4,8 @@ set encoding=latin1 scriptencoding latin1 func s:equivalence_test() - let str = 'A������ B C D E���� F G H I���� J K L M N� O������ P Q R S T U���� V W X Y� Z ' - \ .. 'a������ b c d e���� f g h i���� j k l m n� o������ p q r s t u���� v w x y�� z ' + let str = 'AÀÁÂÃÄÅ B CÇ D EÈÉÊË F G H IÌÍÎÏ J K L M NÑ OÒÓÔÕÖØ P Q R S T UÙÚÛÜ V W X YÝ Z ' + \ .. 'aàáâãäå b cç d eèéêë f g h iìíîï j k l m nñ oòóôõöø p q r s t uùúûü v w x yýÿ z ' \ .. "0 1 2 3 4 5 6 7 8 9 " \ .. "` ~ ! ? ; : . , / \\ ' \" | < > [ ] { } ( ) @ # $ % ^ & * _ - + \b \e \f \n \r \t" let groups = split(str) @@ -404,7 +404,7 @@ func Test_regexp_single_line_pat() call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab']) call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', '']) call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', '']) - call add(tl, [2, '\p*', 'a� ', 'a� ']) + call add(tl, [2, '\p*', 'aà ', 'aà ']) " Test greedy-ness and lazy-ness call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa']) @@ -993,12 +993,12 @@ endfunc " Check patterns matching cursor position. func s:curpos_test2() new - call setline(1, ['1', '2 foobar eins zwei drei vier f�nf sechse', - \ '3 foobar eins zwei drei vier f�nf sechse', - \ '4 foobar eins zwei drei vier f�nf sechse', - \ '5 foobar eins zwei drei vier f�nf sechse', - \ '6 foobar eins zwei drei vier f�nf sechse', - \ '7 foobar eins zwei drei vier f�nf sechse']) + call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse', + \ '3 foobar eins zwei drei vier fünf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', + \ '5 foobar eins zwei drei vier fünf sechse', + \ '6 foobar eins zwei drei vier fünf sechse', + \ '7 foobar eins zwei drei vier fünf sechse']) call setpos('.', [0, 2, 10, 0]) s/\%.c.*//g call setpos('.', [0, 3, 15, 0]) @@ -1008,10 +1008,10 @@ func s:curpos_test2() call assert_equal(['1', \ '2 foobar ', \ '', - \ '4 foobar eins zwei drei vier f�nf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', \ '5 _', - \ '6 foobar eins zwei drei vier f�nf sechse', - \ '7 foobar eins zwei drei vier f�nf sechse'], + \ '6 foobar eins zwei drei vier fünf sechse', + \ '7 foobar eins zwei drei vier fünf sechse'], \ getline(1, '$')) call assert_fails('call search("\\%.1l")', 'E1204:') call assert_fails('call search("\\%.1c")', 'E1204:') @@ -1022,12 +1022,12 @@ endfunc " Check patterns matching before or after cursor position. func s:curpos_test3() new - call setline(1, ['1', '2 foobar eins zwei drei vier f�nf sechse', - \ '3 foobar eins zwei drei vier f�nf sechse', - \ '4 foobar eins zwei drei vier f�nf sechse', - \ '5 foobar eins zwei drei vier f�nf sechse', - \ '6 foobar eins zwei drei vier f�nf sechse', - \ '7 foobar eins zwei drei vier f�nf sechse']) + call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse', + \ '3 foobar eins zwei drei vier fünf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', + \ '5 foobar eins zwei drei vier fünf sechse', + \ '6 foobar eins zwei drei vier fünf sechse', + \ '7 foobar eins zwei drei vier fünf sechse']) call setpos('.', [0, 2, 10, 0]) " Note: This removes all columns, except for the column directly in front of " the cursor. Bug???? @@ -1041,27 +1041,27 @@ func s:curpos_test3() call setpos('.', [0, 6, 4, 0]) :s/\%>.v.*$/_/ call assert_equal(['1', - \ ' eins zwei drei vier f�nf sechse', + \ ' eins zwei drei vier fünf sechse', \ '3 foobar e', - \ '4 foobar eins zwei drei vier f�nf sechse', - \ '_foobar eins zwei drei vier f�nf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', + \ '_foobar eins zwei drei vier fünf sechse', \ '6 fo_', - \ '7 foobar eins zwei drei vier f�nf sechse'], + \ '7 foobar eins zwei drei vier fünf sechse'], \ getline(1, '$')) sil %d - call setline(1, ['1', '2 foobar eins zwei drei vier f�nf sechse', - \ '3 foobar eins zwei drei vier f�nf sechse', - \ '4 foobar eins zwei drei vier f�nf sechse', - \ '5 foobar eins zwei drei vier f�nf sechse', - \ '6 foobar eins zwei drei vier f�nf sechse', - \ '7 foobar eins zwei drei vier f�nf sechse']) + call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse', + \ '3 foobar eins zwei drei vier fünf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', + \ '5 foobar eins zwei drei vier fünf sechse', + \ '6 foobar eins zwei drei vier fünf sechse', + \ '7 foobar eins zwei drei vier fünf sechse']) call setpos('.', [0, 4, 4, 0]) %s/\%<.l.*// call setpos('.', [0, 5, 4, 0]) %s/\%>.l.*// call assert_equal(['', '', '', - \ '4 foobar eins zwei drei vier f�nf sechse', - \ '5 foobar eins zwei drei vier f�nf sechse', + \ '4 foobar eins zwei drei vier fünf sechse', + \ '5 foobar eins zwei drei vier fünf sechse', \ '', ''], \ getline(1, '$')) bwipe! diff --git a/mnv/src/testdir/util/screendump.mnv b/mnv/src/testdir/util/screendump.mnv index 2f28c759a8..91346911a1 100644 --- a/mnv/src/testdir/util/screendump.mnv +++ b/mnv/src/testdir/util/screendump.mnv @@ -165,7 +165,11 @@ func VerifyScreenDump(buf, filename, options, ...) " Leave a bit of time for updating the original window while we spin wait. sleep 10m call delete(testfile) - call term_dumpwrite(a:buf, testfile, options_copy) + try + call term_dumpwrite(a:buf, testfile, options_copy) + catch /E958/ + return 1 + endtry call assert_report('See new dump file: call term_dumpload("testdir/' .. testfile .. '")') " No point in retrying. let g:run_nr = 10 @@ -179,7 +183,15 @@ func VerifyScreenDump(buf, filename, options, ...) " Leave a bit of time for updating the original window while we spin wait. sleep 1m call delete(testfile) - call term_dumpwrite(a:buf, testfile, options_copy) + try + call term_dumpwrite(a:buf, testfile, options_copy) + catch /E958/ + " The terminal job already finished; no point retrying. + return 1 + endtry + if !filereadable(testfile) + return 1 + endif " Filtering done with "FileComparisonPreAction()" may change "refdump*". let refdump = CopyStringList(refdump_orig) let testdump = ReadAndFilter(testfile, filter) |
