Re: [vim/vim] Proposal: sign_setlist (#4557)
Hi Bram, On Mon, Jul 1, 2019 at 1:38 PM Bram Moolenaar wrote: > > > Yegappan wrote: > > > > > > > Thinking about this some more, we should modify the existing > > > > > > sign_place() function to always accept a List argument > > > > > > > > > > Just to say, I don't have any strong feelings either way. I'll defer > > > > > to those with more experience of the Vim API and how changes are made. > > > > > > > > The current sign_place() function is basically mimicking ":sign place". > > > > One of the quirks is that it takes a file name, not a buffer number. > > > > > > > > > > The sign_place() function accepts either a buffer name or a buffer > > > number. The {expr} argument to sign_place() is same as the {expr} > > > argument to bufname(). > > > > > > > > > > > It also has an optional {id}, where zero means it's not passed in. > > > > > > > > > > Yes. Converting sign_place() to accept a List of dicts will make this > > > simpler. > > > > > > > > > > > Adding a new function that takes a list of dictionaries could be a good > > > > alternative. We then do need to validate the entries to check if the > > > > required keys are included. It will then be possible to either pass a > > > > buffer number or a file name. > > > > > > > > > > I have the changes for this ready to go (including the check for existence > > > of the required keys). I will merge my local changes with the recent > > > changes to sign.c/evalfunc.c and create a pull request. > > > > > > > I have created PR #4602 (https://github.com/vim/vim/pull/4602) for this. > > I have simplified the sign_place(), sign_unplace() and sign_getplaced() > > functions. Took some time to make these changes as the sign tests heavily > > use these functions. Note that this change is not backward compatible. > > The sign functions were added more than half a year ago. I don't think > a change that is not backward compatible will be appreciated. > > I think for sign_define() we can support both the old arguments and a > list argument. for sign_getplaced() we don't need changes. For > place/unplace add a new "list" function: > > sign_define({name} [, {dict}]) > sign_define({list}) > > sign_getplaced([{expr} [, {dict}]]) > > sign_place({id}, {group}, {name}, {expr} [, {dict}]) > sign_placelist({list}) > > sign_unplace({group} [, {dict}]) > sign_unplacelist({list}) > > Does that sound reasonable? > Instead of adding the new sign_placelist() and sign_unplacelist() functions, how about modifying the existing sign_place() and sign_unplace() functions to also accept a {list} argument (similar to the sign_define() function above)? So the new set of functions will be like below: sign_define({name} [, {dict}]) sign_define({list}) sign_getplaced([{expr} [, {dict}]]) sign_place({id}, {group}, {name}, {expr} [, {dict}]) sign_place({list}) sign_unplace({group} [, {dict}]) sign_unplace({list}) - Yegappan -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/CAAW7x7nyvd6fRCeA_LF%2BUxTyoSymMNLEyVmw6uW-SJpm71Vk3Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
[patch] Fix `make clean` error
Hi Bram and list, When execute `make clean` after `make test`, an error is output. The attached patch fixes this. Please confirm. PS testdir/Make_{dos,ming}.mak had already taken measures. 8< $ make [...] $ make test [...] $ make clean rm -rf *.out *.failed *.res *.rej *.orig rm -f opt_test.vim test.log test_result.log messages rm -f test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim test.ok benchmark.out rm: cannot remove 'XfakeHOME': Is a directory Makefile:87: recipe for target 'clean' failed make: [clean] Error 1 (ignored) rm -f valgrind.* 8< -- Best regards, Hirohito Higashi (h_east) -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/6cc9f628-cdd4-4ef4-b498-42cc2e4f8b26%40googlegroups.com. For more options, visit https://groups.google.com/d/optout. diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index a5855c3cb..9898d15c4 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -26,6 +26,7 @@ nongui: /tmp $(SCRIPTS_FIRST) $(SCRIPTS) csh -c echo ALL DONE clean: + csh -c \rm -rf Xdir1 Xfind XfakeHOME csh -c \rm -rf *.out /tmp/* Xdotest small.vim tiny.vim mbyte.vim test.ok viminfo .in.out: diff --git a/src/testdir/Makefile b/src/testdir/Makefile index d3c1184e8..520e208fc 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -86,6 +86,7 @@ RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) clean: -rm -rf *.out *.failed *.res *.rej *.orig -rm -f opt_test.vim test.log test_result.log messages + -rm -rf Xdir1 Xfind XfakeHOME -rm -f $(RM_ON_RUN) $(RM_ON_START) -rm -f valgrind.*
Patch 8.1.1635
Patch 8.1.1635 Problem:Warnings for unused variables in small version. (John Marriott) Solution: Adjust #ifdefs. Files: src/screen.c *** ../vim-8.1.1634/src/screen.c2019-07-04 18:28:31.609084867 +0200 --- src/screen.c2019-07-04 22:57:03.243561829 +0200 *** *** 3265,3275 #endif #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \ || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) - int sign_present = FALSE; - sign_attrs_T sattr; # define LINE_ATTR int line_attr = 0; /* attribute for the whole line */ #endif #ifdef FEAT_SEARCH_EXTRA matchitem_T *cur; /* points to the match list */ match_T *shl; /* points to search_hl or a match */ --- 3265,3277 #endif #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \ || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) # define LINE_ATTR int line_attr = 0; /* attribute for the whole line */ #endif + #ifdef FEAT_SIGNS + int sign_present = FALSE; + sign_attrs_T sattr; + #endif #ifdef FEAT_SEARCH_EXTRA matchitem_T *cur; /* points to the match list */ match_T *shl; /* points to search_hl or a match */ *** ../vim-8.1.1634/src/version.c 2019-07-04 22:32:35.584865850 +0200 --- src/version.c 2019-07-04 22:58:56.302839165 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */ + /**/ + 1635, /**/ -- "Shoot for the moon. Even if you miss, you'll land among the stars." /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201907042059.x64KxQfO017213%40masaka.moolenaar.net. For more options, visit https://groups.google.com/d/optout.
Re: Patch 8.1.1631
John Marriott wrote: > On 04-Jul-2019 16:28, Bram Moolenaar wrote: > > Patch 8.1.1631 > > Problem:Displaying signs is inefficient. > > Solution: Avoid making multiple calls to get information about a placed > > sign. (Yegappan Lakshmanan, closes #4586) > > Files: src/proto/sign.pro, src/screen.c, src/sign.c, src/structs.h > > > > > After this patch, mingw64 spits out this warning: > gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 > -DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -pipe -march=native -Wall > -O3 -fomit-frame-pointer -freg-struct-return screen.c -o objnative/screen.o > screen.c: In function 'win_line': > screen.c:3269:18: warning: unused variable 'sattr' [-Wunused-variable] > 3269 | sign_attrs_T sattr; > | ^ > screen.c:3268:10: warning: unused variable 'sign_present' > [-Wunused-variable] > 3268 | int sign_present = FALSE; > | ^~~~ > > In screen.c, the above variables in win_line() are included if > FEAT_SIGNS, FEAT_QUICKFIX, FEAT_SYN_HL or FEAT_DIFF are defined. However > their usage doesn't match these conditionals. For example, here is where > they are declared (lines 3266-3272): > #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \ > || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) > int sign_present = FALSE; > sign_attrs_T sattr; > # define LINE_ATTR > int line_attr = 0; /* attribute for the whole line */ > #endif > > Here are some lines of usage (lines 3591-3600): > #ifdef FEAT_SIGNS > sign_present = buf_get_signattrs(wp->w_buffer, lnum, ); > #endif > > #ifdef LINE_ATTR > # ifdef FEAT_SIGNS > /* If this line has a sign with line highlighting set line_attr. */ > if (sign_present) > line_attr = sattr.linehl; > # endif > > In my case, FEAT_SIGNS and FEAT_QUICKFIX are not defined in this build, > hence the warning. Those two variables should be checking FEAT_SIGNS only. -- Q: How does a UNIX Guru do Sex ? A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201907042059.x64KxRta017219%40masaka.moolenaar.net. For more options, visit https://groups.google.com/d/optout.
Patch 8.1.1634
Patch 8.1.1634 Problem:Terminal test fails when term_getansicolors() is missing. Diff test fails without +rightleft. (Dominique Pelle) Solution: Check if term_getansicolors() is supported. (closes #4597) Files: src/testdir/test_terminal.vim, src/testdir/test_diffmode.vim *** ../vim-8.1.1633/src/testdir/test_terminal.vim 2019-07-04 17:35:01.119169967 +0200 --- src/testdir/test_terminal.vim 2019-07-04 22:10:53.172068737 +0200 *** *** 1434,1439 --- 1434,1442 endfunc func Test_terminal_ansicolors_default() + if !exists('*term_getansicolors') + throw 'Skipped: term_getansicolors() not supported' + endif let colors = [ \ '#00', '#e0', \ '#00e000', '#e0e000', *** *** 1465,1470 --- 1468,1476 \] func Test_terminal_ansicolors_global() + if !exists('*term_getansicolors') + throw 'Skipped: term_getansicolors() not supported' + endif let g:terminal_ansi_colors = reverse(copy(s:test_colors)) let buf = Run_shell_in_terminal({}) call assert_equal(g:terminal_ansi_colors, term_getansicolors(buf)) *** *** 1476,1481 --- 1482,1490 endfunc func Test_terminal_ansicolors_func() + if !exists('*term_getansicolors') + throw 'Skipped: term_getansicolors() not supported' + endif let g:terminal_ansi_colors = reverse(copy(s:test_colors)) let buf = Run_shell_in_terminal({'ansi_colors': s:test_colors}) call assert_equal(s:test_colors, term_getansicolors(buf)) *** ../vim-8.1.1633/src/testdir/test_diffmode.vim 2019-06-06 16:12:05.923134646 +0200 --- src/testdir/test_diffmode.vim 2019-07-04 22:28:20.198438166 +0200 *** *** 909,914 --- 910,918 if !CanRunVimInTerminal() throw 'Skipped: cannot run Vim in a terminal window' endif + if !has("rightleft") + throw 'Skipped: rightleft not supported' + endif call writefile([ \ 'call setline(1, ["aa","bb","cc","@@ -3,2 +5,7 @@","dd","ee","ff"])', *** ../vim-8.1.1633/src/version.c 2019-07-04 21:24:28.258862329 +0200 --- src/version.c 2019-07-04 22:12:38.459623730 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */ + /**/ + 1634, /**/ -- FATHER:Did you kill all those guards? LAUNCELOT: Yes ... I'm very sorry ... FATHER:They cost fifty pounds each! "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201907042032.x64KWrom007907%40masaka.moolenaar.net. For more options, visit https://groups.google.com/d/optout.
Re: Patch 8.1.1631
On 04-Jul-2019 16:28, Bram Moolenaar wrote: Patch 8.1.1631 Problem:Displaying signs is inefficient. Solution: Avoid making multiple calls to get information about a placed sign. (Yegappan Lakshmanan, closes #4586) Files: src/proto/sign.pro, src/screen.c, src/sign.c, src/structs.h After this patch, mingw64 spits out this warning: gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 -DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return screen.c -o objnative/screen.o screen.c: In function 'win_line': screen.c:3269:18: warning: unused variable 'sattr' [-Wunused-variable] 3269 | sign_attrs_T sattr; | ^ screen.c:3268:10: warning: unused variable 'sign_present' [-Wunused-variable] 3268 | int sign_present = FALSE; | ^~~~ In screen.c, the above variables in win_line() are included if FEAT_SIGNS, FEAT_QUICKFIX, FEAT_SYN_HL or FEAT_DIFF are defined. However their usage doesn't match these conditionals. For example, here is where they are declared (lines 3266-3272): #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \ || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) int sign_present = FALSE; sign_attrs_T sattr; # define LINE_ATTR int line_attr = 0; /* attribute for the whole line */ #endif Here are some lines of usage (lines 3591-3600): #ifdef FEAT_SIGNS sign_present = buf_get_signattrs(wp->w_buffer, lnum, ); #endif #ifdef LINE_ATTR # ifdef FEAT_SIGNS /* If this line has a sign with line highlighting set line_attr. */ if (sign_present) line_attr = sattr.linehl; # endif In my case, FEAT_SIGNS and FEAT_QUICKFIX are not defined in this build, hence the warning. Cheers John -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/836b6093-6afd-423a-33ff-301647c3f0a3%40internode.on.net. For more options, visit https://groups.google.com/d/optout.
Patch 8.1.1633
Patch 8.1.1633 Problem:Cannot generate prototypes with X11 but without GUI. Solution: Include X11/Intrinsic.h. Files: src/gui.h *** ../vim-8.1.1632/src/gui.h 2019-04-28 19:46:17.026060122 +0200 --- src/gui.h 2019-07-04 21:21:16.740151567 +0200 *** *** 29,34 --- 29,40 # include #endif + // Needed when generating prototypes, since FEAT_GUI is always defined then. + #if defined(FEAT_XCLIPBOARD) && !defined(FEAT_GUI_MOTIF) \ + && !defined(FEAT_GUI_ATHENA) && !defined(FEAT_GUI_GTK) + # include + #endif + #ifdef FEAT_GUI_MAC # include /*# include */ *** ../vim-8.1.1632/src/version.c 2019-07-04 20:26:17.798397726 +0200 --- src/version.c 2019-07-04 21:22:27.307676117 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */ + /**/ + 1633, /**/ -- PRINCE:He's come to rescue me, father. LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ... "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201907041926.x64JQPUW007536%40masaka.moolenaar.net. For more options, visit https://groups.google.com/d/optout.
Patch 8.1.1632
Patch 8.1.1632 Problem:Build with EXITFREE but without +arabic fails. Solution: Rename the function and adjust #ifdefs. (closes #4613) Files: src/ex_getln.c, src/proto/ex_getln.pro, src/misc2.c *** ../vim-8.1.1631/src/ex_getln.c 2019-06-25 04:12:12.308665266 +0200 --- src/ex_getln.c 2019-07-04 19:36:55.309508157 +0200 *** *** 3174,3180 # if defined(EXITFREE) || defined(PROTO) void ! free_cmdline_buf(void) { vim_free(arshape_buf); } --- 3174,3180 # if defined(EXITFREE) || defined(PROTO) void ! free_arshape_buf(void) { vim_free(arshape_buf); } *** ../vim-8.1.1631/src/proto/ex_getln.pro 2019-06-25 04:12:12.312665250 +0200 --- src/proto/ex_getln.pro 2019-07-04 20:22:53.831725158 +0200 *** *** 12,18 int cmdline_overstrike(void); int cmdline_at_end(void); colnr_T cmdline_getvcol_cursor(void); ! void free_cmdline_buf(void); void putcmdline(int c, int shift); void unputcmdline(void); int put_on_cmdline(char_u *str, int len, int redraw); --- 12,18 int cmdline_overstrike(void); int cmdline_at_end(void); colnr_T cmdline_getvcol_cursor(void); ! void free_arshape_buf(void); void putcmdline(int c, int shift); void unputcmdline(void); int put_on_cmdline(char_u *str, int len, int redraw); *** ../vim-8.1.1631/src/misc2.c 2019-07-04 17:35:01.119169967 +0200 --- src/misc2.c 2019-07-04 19:50:05.324109659 +0200 *** *** 1060,1066 spell_free_all(); # endif ! #if defined(FEAT_INS_EXPAND) && defined(FEAT_BEVAL_TERM) ui_remove_balloon(); # endif --- 1060,1066 spell_free_all(); # endif ! # if defined(FEAT_INS_EXPAND) && defined(FEAT_BEVAL_TERM) ui_remove_balloon(); # endif *** *** 1092,1098 # endif # if defined(FEAT_KEYMAP) do_cmdline_cmd((char_u *)"set keymap="); ! #endif } # ifdef FEAT_TITLE --- 1092,1098 # endif # if defined(FEAT_KEYMAP) do_cmdline_cmd((char_u *)"set keymap="); ! # endif } # ifdef FEAT_TITLE *** *** 1149,1159 # ifdef FEAT_CMDHIST init_history(); # endif ! #ifdef FEAT_TEXT_PROP clear_global_prop_types(); ! #endif ! #ifdef FEAT_QUICKFIX { win_T *win; tabpage_T *tab; --- 1149,1159 # ifdef FEAT_CMDHIST init_history(); # endif ! # ifdef FEAT_TEXT_PROP clear_global_prop_types(); ! # endif ! # ifdef FEAT_QUICKFIX { win_T *win; tabpage_T *tab; *** *** 1163,1169 FOR_ALL_TAB_WINDOWS(tab, win) qf_free_all(win); } ! #endif // Close all script inputs. close_all_scripts(); --- 1163,1169 FOR_ALL_TAB_WINDOWS(tab, win) qf_free_all(win); } ! # endif // Close all script inputs. close_all_scripts(); *** *** 1177,1185 /* Free all buffers. Reset 'autochdir' to avoid accessing things that * were freed already. */ ! #ifdef FEAT_AUTOCHDIR p_acd = FALSE; ! #endif for (buf = firstbuf; buf != NULL; ) { bufref_Tbufref; --- 1177,1185 /* Free all buffers. Reset 'autochdir' to avoid accessing things that * were freed already. */ ! # ifdef FEAT_AUTOCHDIR p_acd = FALSE; ! # endif for (buf = firstbuf; buf != NULL; ) { bufref_Tbufref; *** *** 1193,1199 buf = firstbuf; } ! free_cmdline_buf(); /* Clear registers. */ clear_registers(); --- 1193,1201 buf = firstbuf; } ! # ifdef FEAT_ARABIC ! free_arshape_buf(); ! # endif /* Clear registers. */ clear_registers(); *** ../vim-8.1.1631/src/version.c 2019-07-04 18:28:31.609084867 +0200 --- src/version.c 2019-07-04 20:24:28.003112599 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */ + /**/ + 1632, /**/ -- FIRST GUARD: Ah! Now ... we're not allowed to ... SIR LAUNCELOT runs him through, grabs his spear and stabs the other guard who collapses in a heap. Hiccoughs quietly. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to
Patch 8.1.1631
Patch 8.1.1631 Problem:Displaying signs is inefficient. Solution: Avoid making multiple calls to get information about a placed sign. (Yegappan Lakshmanan, closes #4586) Files: src/proto/sign.pro, src/screen.c, src/sign.c, src/structs.h *** ../vim-8.1.1630/src/proto/sign.pro 2019-06-29 07:56:26.042876840 +0200 --- src/proto/sign.pro 2019-07-04 18:13:59.787228750 +0200 *** *** 1,6 /* sign.c */ void init_signs(void); ! int buf_getsigntype(buf_T *buf, linenr_T lnum, int type); linenr_T buf_delsign(buf_T *buf, linenr_T atlnum, int id, char_u *group); int buf_findsign(buf_T *buf, int id, char_u *group); int buf_findsign_id(buf_T *buf, linenr_T lnum, char_u *groupname); --- 1,6 /* sign.c */ void init_signs(void); ! int buf_get_signattrs(buf_T *buf, linenr_T lnum, sign_attrs_T *sattr); linenr_T buf_delsign(buf_T *buf, linenr_T atlnum, int id, char_u *group); int buf_findsign(buf_T *buf, int id, char_u *group); int buf_findsign_id(buf_T *buf, linenr_T lnum, char_u *groupname); *** *** 13,20 void ex_sign(exarg_T *eap); void get_buffer_signs(buf_T *buf, list_T *l); void sign_gui_started(void); - int sign_get_attr(int typenr, int line); - char_u *sign_get_text(int typenr); void *sign_get_image(int typenr); void free_signs(void); char_u *get_sign_name(expand_T *xp, int idx); --- 13,18 *** ../vim-8.1.1630/src/screen.c2019-07-04 11:59:25.416462600 +0200 --- src/screen.c2019-07-04 18:17:44.685540686 +0200 *** *** 3042,3048 get_sign_display_info( int nrcol, win_T *wp, ! linenr_Tlnum, int wcr_attr, int row, int startrow, --- 3042,3049 get_sign_display_info( int nrcol, win_T *wp, ! linenr_Tlnum UNUSED, ! sign_attrs_T*sattr, int wcr_attr, int row, int startrow, *** *** 3077,3085 #endif ) { ! text_sign = buf_getsigntype(wp->w_buffer, lnum, SIGN_TEXT); # ifdef FEAT_SIGN_ICONS ! icon_sign = buf_getsigntype(wp->w_buffer, lnum, SIGN_ICON); if (gui.in_use && icon_sign != 0) { // Use the image in this position. --- 3078,3086 #endif ) { ! text_sign = (sattr->text != NULL) ? sattr->typenr : 0; # ifdef FEAT_SIGN_ICONS ! icon_sign = (sattr->icon != NULL) ? sattr->typenr : 0; if (gui.in_use && icon_sign != 0) { // Use the image in this position. *** *** 3093,3099 else *c_extrap = SIGN_BYTE; # ifdef FEAT_NETBEANS_INTG ! if (buf_signcount(wp->w_buffer, lnum) > 1) { if (nrcol) { --- 3094,3100 else *c_extrap = SIGN_BYTE; # ifdef FEAT_NETBEANS_INTG ! if (netbeans_active() && (buf_signcount(wp->w_buffer, lnum) > 1)) { if (nrcol) { *** *** 3114,3120 # endif if (text_sign != 0) { ! *pp_extra = sign_get_text(text_sign); if (*pp_extra != NULL) { if (nrcol) --- 3115,3121 # endif if (text_sign != 0) { ! *pp_extra = sattr->text; if (*pp_extra != NULL) { if (nrcol) *** *** 3127,3133 *c_finalp = NUL; *n_extrap = (int)STRLEN(*pp_extra); } ! *char_attrp = sign_get_attr(text_sign, FALSE); } } } --- 3128,3134 *c_finalp = NUL; *n_extrap = (int)STRLEN(*pp_extra); } ! *char_attrp = sattr->texthl; } } } *** *** 3264,3269 --- 3265,3272 #endif #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \ || defined(FEAT_SYN_HL) || defined(FEAT_DIFF) + int sign_present = FALSE; + sign_attrs_T sattr; # define LINE_ATTR int line_attr = 0; /* attribute for the whole line */ #endif *** *** 3585,3596 filler_todo = filler_lines; #endif #ifdef LINE_ATTR # ifdef FEAT_SIGNS /* If this line has a sign with line highlighting set line_attr. */ ! v = buf_getsigntype(wp->w_buffer, lnum, SIGN_LINEHL); ! if (v != 0) ! line_attr = sign_get_attr((int)v, TRUE); # endif # if defined(FEAT_QUICKFIX) /* Highlight the current line in the quickfix window. */ --- 3588,3602 filler_todo = filler_lines; #endif + #ifdef FEAT_SIGNS + sign_present = buf_get_signattrs(wp->w_buffer, lnum, ); + #endif + #ifdef LINE_ATTR # ifdef
Patch 8.1.1630
Patch 8.1.1630 Problem:Various small problems. Solution: Various small improvements. Files: src/gui_beval.c, src/list.c, src/menu.c, src/message.c, src/misc2.c, src/testdir/test_terminal.vim, src/os_vms_conf.h, src/testdir/Make_vms.mms *** ../vim-8.1.1629/src/gui_beval.c 2019-05-09 13:50:13.362401997 +0200 --- src/gui_beval.c 2019-05-28 20:26:37.977072566 +0200 *** *** 107,113 return NULL; } ! beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval)); if (beval != NULL) { #ifdef FEAT_GUI_GTK --- 107,113 return NULL; } ! beval = ALLOC_CLEAR_ONE(BalloonEval); if (beval != NULL) { #ifdef FEAT_GUI_GTK *** ../vim-8.1.1629/src/list.c 2019-05-28 23:08:12.068648696 +0200 --- src/list.c 2019-06-06 16:42:47.428653953 +0200 *** *** 130,136 /* ! * Set a list as the return value */ void rettv_list_set(typval_T *rettv, list_T *l) --- 130,136 /* ! * Set a list as the return value. Increments the reference count. */ void rettv_list_set(typval_T *rettv, list_T *l) *** ../vim-8.1.1629/src/menu.c 2019-05-24 19:38:59.104545491 +0200 --- src/menu.c 2019-05-28 20:27:04.456904795 +0200 *** *** 583,589 } /* Not already there, so lets add it */ ! menu = (vimmenu_T *)alloc_clear(sizeof(vimmenu_T)); if (menu == NULL) goto erret; --- 583,589 } /* Not already there, so lets add it */ ! menu = ALLOC_CLEAR_ONE(vimmenu_T); if (menu == NULL) goto erret; *** ../vim-8.1.1629/src/message.c 2019-05-28 23:08:12.068648696 +0200 --- src/message.c 2019-06-22 01:36:43.834184653 +0200 *** *** 652,658 redir_write(s, -1); } #ifdef FEAT_JOB_CHANNEL ! ch_log(NULL, "ERROR: %s", (char *)s); #endif return TRUE; } --- 652,658 redir_write(s, -1); } #ifdef FEAT_JOB_CHANNEL ! ch_log(NULL, "ERROR silent: %s", (char *)s); #endif return TRUE; } *** ../vim-8.1.1629/src/misc2.c 2019-06-10 14:48:56.790711331 +0200 --- src/misc2.c 2019-07-04 17:27:35.317759488 +0200 *** *** 1193,1201 buf = firstbuf; } - # ifdef FEAT_ARABIC free_cmdline_buf(); - # endif /* Clear registers. */ clear_registers(); --- 1193,1199 *** ../vim-8.1.1629/src/testdir/test_terminal.vim 2019-06-23 00:49:50.985715087 +0200 --- src/testdir/test_terminal.vim 2019-07-04 13:00:13.262186952 +0200 *** *** 1187,1197 quit call assert_equal(1, winnr('$')) - let width = winwidth(0) call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'vertical': 0, 'term_rows': 13, 'term_name': 'something else'}) call assert_equal(2, winnr('$')) ! call assert_equal(width, winwidth(winnr())) ! call assert_equal(13, winheight(winnr())) call assert_equal('something else', bufname('%')) quit --- 1187,1196 quit call assert_equal(1, winnr('$')) call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'vertical': 0, 'term_rows': 13, 'term_name': 'something else'}) call assert_equal(2, winnr('$')) ! call assert_equal(, winwidth(0)) ! call assert_equal(13, winheight(0)) call assert_equal('something else', bufname('%')) quit *** ../vim-8.1.1629/src/os_vms_conf.h 2019-01-17 17:13:25.924984061 +0100 --- src/os_vms_conf.h 2019-01-24 17:26:40.404192841 +0100 *** *** 24,30 #define HAVE_DATE_TIME /* Defined to the size of an int */ ! #define VIM_SIZEOF_INT 4 /* #undef USEBCOPY */ #define USEMEMMOVE --- 24,30 #define HAVE_DATE_TIME /* Defined to the size of an int */ ! #define VIM_SIZEOF_INT 4 /* #undef USEBCOPY */ #define USEMEMMOVE *** ../vim-8.1.1629/src/testdir/Make_vms.mms2019-05-31 20:02:47.567231180 +0200 --- src/testdir/Make_vms.mms2019-05-31 20:01:11.583773931 +0200 *** *** 4,10 # Authors:Zoltan Arpadffy, # Sandor Kopanyi, # ! # Last change: 2016 Nov 04 # # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. # Edit the lines in the Configuration section below to select. --- 4,10 # Authors:Zoltan Arpadffy, # Sandor Kopanyi, # ! # Last change: 2019 May 31 # # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. # Edit the lines in the Configuration section below to select. *** ../vim-8.1.1629/src/version.c 2019-07-04 17:11:16.803440858 +0200 --- src/version.c 2019-07-04 17:29:57.988930796 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */
Patch 8.1.1629
Patch 8.1.1629 Problem:Terminal function help is in the wrong file. Solution: Move the function details to terminal.txt. Files: runtime/doc/eval.txt, runtime/doc/terminal.txt *** ../vim-8.1.1628/runtime/doc/eval.txt2019-07-04 16:53:21.369654166 +0200 --- runtime/doc/eval.txt2019-07-04 17:08:51.904281612 +0200 *** *** 9677,10040 For MS-Windows forward slashes are used when the 'shellslash' option is set or when 'shellcmdflag' starts with '-'. ! *term_dumpdiff()* ! term_dumpdiff({filename}, {filename} [, {options}]) ! Open a new window displaying the difference between the two ! files. The files must have been created with ! |term_dumpwrite()|. ! Returns the buffer number or zero when the diff fails. ! Also see |terminal-diff|. ! NOTE: this does not work with double-width characters yet. ! ! The top part of the buffer contains the contents of the first ! file, the bottom part of the buffer contains the contents of ! the second file. The middle part shows the differences. ! The parts are separated by a line of equals. ! ! If the {options} argument is present, it must be a Dict with ! these possible members: ! "term_name" name to use for the buffer name, instead !of the first file name. ! "term_rows" vertical size to use for the terminal, !instead of using 'termwinsize' ! "term_cols" horizontal size to use for the terminal, !instead of using 'termwinsize' ! "vertical"split the window vertically ! "curwin" use the current window, do not split the !window; fails if the current buffer !cannot be |abandon|ed ! "bufnr" do not create a new buffer, use the !existing buffer "bufnr". This buffer !must have been previously created with !term_dumpdiff() or term_dumpload() and !visible in a window. ! "norestore" do not add the terminal window to a !session file ! ! Each character in the middle part indicates a difference. If ! there are multiple differences only the first in this list is ! used: ! X different character ! w different width ! f different foreground color ! b different background color ! a different attribute ! + missing position in first file ! - missing position in second file ! ! Using the "s" key the top and bottom parts are swapped. This ! makes it easy to spot a difference. ! ! *term_dumpload()* ! term_dumpload({filename} [, {options}]) ! Open a new window displaying the contents of {filename} ! The file must have been created with |term_dumpwrite()|. ! Returns the buffer number or zero when it fails. ! Also see |terminal-diff|. ! ! For {options} see |term_dumpdiff()|. ! ! *term_dumpwrite()* ! term_dumpwrite({buf}, {filename} [, {options}]) ! Dump the contents of the terminal screen of {buf} in the file ! {filename}. This uses a format that can be used with ! |term_dumpload()| and |term_dumpdiff()|. ! If the job in the terminal already finished an error is given: ! *E958* ! If {filename} already exists an error is given: *E953* ! Also see |terminal-diff|. ! ! {options} is a dictionary with these optional entries: ! "rows" maximum number of rows to dump ! "columns" maximum number of columns to dump ! ! term_getaltscreen({buf}) *term_getaltscreen()* ! Returns 1 if the terminal of {buf} is using the alternate ! screen. ! {buf} is used as with |term_getsize()|. ! {only available when compiled with the |+terminal| feature} ! ! term_getansicolors({buf}) *term_getansicolors()* ! Get the ANSI color palette in use by terminal {buf}. !
Popup window functionality implemented
Most of the popup window support has now been implemented. There are a few things to improve and add, but it should be good enough to use. Please give it a try and look out for things that don't work properly. We can still make some changes where needed, but soon making changes that are not backwards compatible will cause trouble. I decided to keep the details about the popup window functions in popup.txt, instead of moving them to eval.txt. That file has become too big and listing all the functions there does not make much sense. The alphabetical list can still be used to search for something, and the index by functionality is at ":help function-list". I'll also move the terminal functions. We can do more, but some functions don't have a good help file to move to. -- What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics' meaning 'bloodsucking creatures'. /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201907041504.x64F4eI459%40masaka.moolenaar.net. For more options, visit https://groups.google.com/d/optout.
Patch 8.1.1628
Patch 8.1.1628 Problem:Popup window functions not in list of functions. Solution: Add popup window functins to the list of functions. Reorganise the popup window help. Files: runtime/doc/eval.txt, runtime/doc/popup.txt, runtime/doc/usr_41.txt *** ../vim-8.1.1627/runtime/doc/eval.txt2019-07-04 15:39:23.819386002 +0200 --- runtime/doc/eval.txt2019-07-04 16:27:27.069932278 +0200 *** *** 2533,2538 --- 2534,2557 or({expr}, {expr})Number bitwise OR pathshorten({expr}) String shorten directory names in a path perleval({expr}) any evaluate |Perl| expression + popup_atcursor({what}, {options}) Number create popup window near the cursor + popup_clear() noneclose all popup windows + popup_close({id} [, {result}])noneclose popup window {id} + popup_create({what}, {options}) Numbercreate a popup window + popup_dialog({what}, {options}) Numbercreate a popup window used as a dialog + popup_filter_menu({id}, {key}) Numberfilter for a menu popup window + popup_filter_yesno({id}, {key}) Numberfilter for a dialog popup window + popup_getoptions({id})Dictget options of popup window {id} + popup_getpos({id})Dictget position of popup window {id} + popup_hide({id}) nonehide popup menu {id} + popup_menu({what}, {options}) Number create a popup window used as a menu + popup_move({id}, {options}) noneset position of popup window {id} + popup_notification({what}, {options}) + Number create a notification popup window + popup_show({id}) noneunhide popup window {id} + popup_setoptions({id}, {options}) + noneset options for popup window {id} + popup_settext({id}, {text}) noneset the text of popup window {id} pow({x}, {y}) Float {x} to the power of {y} prevnonblank({lnum}) Number line nr of non-blank line <= {lnum} printf({fmt}, {expr1}...) String format text *** *** 7034,7039 --- 7053,7062 < [1, 2, 3, 4] {only available when compiled with the |+perl| feature} + + popup_ functions are documented here: |popup-functions|. + + pow({x}, {y}) *pow()* Return the power of {x} to the exponent {y} as a |Float|. {x} and {y} must evaluate to a |Float| or a |Number|. *** ../vim-8.1.1627/runtime/doc/popup.txt 2019-06-30 22:16:06.935821727 +0200 --- runtime/doc/popup.txt 2019-07-04 16:39:00.318462487 +0200 *** *** 1,16 ! *popup.txt* For Vim version 8.1. Last change: 2019 Jun 15 VIM REFERENCE MANUALby Bram Moolenaar ! Displaying text in floating window. *popup* *popup-window* - THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE 1. Introduction |popup-intro| 2. Functions |popup-functions| ! 3. Examples |popup-examples| {not available if the |+textprop| feature was disabled at compile time} --- 1,26 ! *popup.txt* For Vim version 8.1. Last change: 2019 Jul 04 VIM REFERENCE MANUALby Bram Moolenaar ! Displaying text in a floating window. *popup* *popup-window* 1. Introduction |popup-intro| +Window position and size |popup-position| +Closing the popup window |popup-close| +Popup buffer and window|popup-buffer| 2. Functions |popup-functions| !Details|popup-function-details| ! 3. Usage |popup-usage| !popup_create() arguments |popup_create-arguments| !Popup text properties |popup-props| !Popup filter |popup-filter| !Popup callback |popup-callback| !Popup scrollbar|popup-scrollbar| !Popup mask |popup-mask| ! 4. Examples |popup-examples| {not available if the |+textprop| feature was disabled at compile time} *** *** 55,61 - balloon, see |balloon-eval| ! WINDOW POSITION AND SIZE *popup-position* The height of the window is normally equal to the number of, possibly wrapping, lines in the buffer. It can be limited with the "maxheight" --- 65,71 - balloon, see |balloon-eval| ! WINDOW POSITION AND SIZE *popup-position* The height of the window is normally equal to the number of, possibly wrapping, lines in the buffer. It can be limited with the "maxheight" *** *** 85,91 that it is in. ! CLOSING THE POPUP WINDOW *popup-close* Normally the plugin that created the popup
Patch 8.1.1626
Patch 8.1.1626 Problem:No test for closing a popup window with a modified buffer. Solution: Add a test. Add "popups" to getbufinfo(). Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_popupwin.vim *** ../vim-8.1.1625/runtime/doc/eval.txt2019-06-30 20:21:30.456516156 +0200 --- runtime/doc/eval.txt2019-07-04 15:14:08.831355443 +0200 *** *** 3139,3145 number. Otherwise return the buffer number of the newly created buffer. When {name} is an empty string then a new buffer is always created. ! The buffer will not have' 'buflisted' set. bufexists({expr}) *bufexists()* The result is a Number, which is |TRUE| if a buffer called --- 3140,3150 number. Otherwise return the buffer number of the newly created buffer. When {name} is an empty string then a new buffer is always created. ! The buffer will not have' 'buflisted' set and not be loaded ! yet. To add some text to the buffer use this: > ! let bufnr = bufadd('someName') ! call bufload(bufnr) ! call setbufline(bufnr, 1, ['some', 'text']) bufexists({expr}) *bufexists()* The result is a Number, which is |TRUE| if a buffer called *** *** 4743,4748 --- 4748,4755 buffer-local variables. windows list of |window-ID|s that display this buffer + popups list of popup |window-ID|s that + display this buffer Examples: > for buf in getbufinfo() *** ../vim-8.1.1625/src/evalfunc.c 2019-07-03 22:53:03.579656609 +0200 --- src/evalfunc.c 2019-07-04 15:21:46.440288094 +0200 *** *** 4509,4518 dict_add_number(dict, "hidden", buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0); ! /* Get a reference to buffer variables */ dict_add_dict(dict, "variables", buf->b_vars); ! /* List of windows displaying this buffer */ windows = list_alloc(); if (windows != NULL) { --- 4509,4518 dict_add_number(dict, "hidden", buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0); ! // Get a reference to buffer variables dict_add_dict(dict, "variables", buf->b_vars); ! // List of windows displaying this buffer windows = list_alloc(); if (windows != NULL) { *** *** 4522,4527 --- 4522,4544 dict_add_list(dict, "windows", windows); } + #ifdef FEAT_TEXT_PROP + // List of popup windows displaying this buffer + windows = list_alloc(); + if (windows != NULL) + { + for (wp = first_popupwin; wp != NULL; wp = wp->w_next) + if (wp->w_buffer == buf) + list_append_number(windows, (varnumber_T)wp->w_id); + FOR_ALL_TABPAGES(tp) + for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next) + if (wp->w_buffer == buf) + list_append_number(windows, (varnumber_T)wp->w_id); + + dict_add_list(dict, "popups", windows); + } + #endif + #ifdef FEAT_SIGNS if (buf->b_signlist != NULL) { *** *** 5685,5691 if (l != NULL) { for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin; ! wp; wp = wp->w_next) list_append_number(l, (varnumber_T)wp->w_id); dict_add_list(dict, "windows", l); } --- 5702,5708 if (l != NULL) { for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin; ! wp != NULL; wp = wp->w_next) list_append_number(l, (varnumber_T)wp->w_id); dict_add_list(dict, "windows", l); } *** ../vim-8.1.1625/src/testdir/test_popupwin.vim 2019-07-03 23:20:14.821113721 +0200 --- src/testdir/test_popupwin.vim 2019-07-04 15:22:10.092021643 +0200 *** *** 1710,1712 --- 1710,1739 endfor call popup_clear() endfunc + + func Test_popupwin_buf_close() + let buf = bufadd('Xtestbuf') + call bufload(buf) + call setbufline(buf, 1, ['just', 'some', 'lines']) + let winid = popup_create(buf, {}) + redraw + call assert_equal(3, popup_getpos(winid).height) + let bufinfo = getbufinfo(buf)[0] + call assert_equal(1, bufinfo.changed) + call assert_equal(0, bufinfo.hidden) + call assert_equal(0, bufinfo.listed) + call assert_equal(1, bufinfo.loaded) + call assert_equal([], bufinfo.windows) + call assert_equal([winid], bufinfo.popups) + + call popup_close(winid) +
Patch 8.1.1625
Patch 8.1.1625 Problem:Script line numbers are not exactly right. Solution: Handle heredoc and continuation lines better. (Ozaki Kiichi, closes #4611, closes #4511) Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/testdir/test_vimscript.vim, src/userfunc.c *** ../vim-8.1.1624/src/ex_cmds2.c 2019-06-25 06:27:57.537385321 +0200 --- src/ex_cmds2.c 2019-07-04 14:44:06.668255705 +0200 *** *** 3269,3288 */ struct source_cookie { ! FILE *fp;/* opened file for sourcing */ ! char_u *nextline; /* if not NULL: line that was read ahead */ ! int finished; /* ":finish" used */ #ifdef USE_CRNL ! int fileformat; /* EOL_UNKNOWN, EOL_UNIX or EOL_DOS */ ! int error; /* TRUE if LF found after CR-LF */ #endif #ifdef FEAT_EVAL ! linenr_T breakpoint; /* next line with breakpoint or zero */ ! char_u*fname; /* name of sourced file */ ! int dbg_tick; /* debug_tick when breakpoint was set */ ! int level; /* top nesting level of sourced file */ #endif ! vimconv_T conv; /* type of conversion */ }; #ifdef FEAT_EVAL --- 3269,3289 */ struct source_cookie { ! FILE *fp;// opened file for sourcing ! char_u*nextline; // if not NULL: line that was read ahead ! linenr_T sourcing_lnum; // line number of the source file ! int finished; // ":finish" used #ifdef USE_CRNL ! int fileformat; // EOL_UNKNOWN, EOL_UNIX or EOL_DOS ! int error; // TRUE if LF found after CR-LF #endif #ifdef FEAT_EVAL ! linenr_T breakpoint; // next line with breakpoint or zero ! char_u*fname; // name of sourced file ! int dbg_tick; // debug_tick when breakpoint was set ! int level; // top nesting level of sourced file #endif ! vimconv_T conv; // type of conversion }; #ifdef FEAT_EVAL *** *** 3346,3352 } #endif - /* * do_source: Read the file "fname" and execute its lines as EX commands. * --- 3347,3352 *** *** 3495,3500 --- 3495,3501 #endif cookie.nextline = NULL; + cookie.sourcing_lnum = 0; cookie.finished = FALSE; #ifdef FEAT_EVAL *** *** 3790,3795 --- 3791,3804 #endif + linenr_T + get_sourced_lnum(char_u *(*fgetline)(int, void *, int, int), void *cookie) + { + return fgetline == getsourceline + ? ((struct source_cookie *)cookie)->sourcing_lnum + : sourcing_lnum; + } + /* * Get one full line from a sourced file. * Called by do_cmdline() when it's called from do_source(). *** *** 3816,3821 --- 3825,3834 script_line_end(); # endif #endif + + // Set the current sourcing line number. + sourcing_lnum = sp->sourcing_lnum + 1; + /* * Get current line. If there is a read-ahead line, use it, otherwise get * one now. *** *** 3828,3834 { line = sp->nextline; sp->nextline = NULL; ! ++sourcing_lnum; } #ifdef FEAT_PROFILE if (line != NULL && do_profiling == PROF_YES) --- 3841,3847 { line = sp->nextline; sp->nextline = NULL; ! ++sp->sourcing_lnum; } #ifdef FEAT_PROFILE if (line != NULL && do_profiling == PROF_YES) *** *** 3840,3846 if (line != NULL && do_concat && vim_strchr(p_cpo, CPO_CONCAT) == NULL) { /* compensate for the one line read-ahead */ ! --sourcing_lnum; // Get the next line and concatenate it when it starts with a // backslash. We always need to read the next line, keep it in --- 3853,3859 if (line != NULL && do_concat && vim_strchr(p_cpo, CPO_CONCAT) == NULL) { /* compensate for the one line read-ahead */ ! --sp->sourcing_lnum; // Get the next line and concatenate it when it starts with a // backslash. We always need to read the next line, keep it in *** *** 3931,3937 /* * Loop until there is a finished line (or end-of-file). */ ! sourcing_lnum++; for (;;) { /* make room to read at least 120 (more) characters */ --- 3944,3950 /* * Loop until there is a finished line (or end-of-file). */ ! ++sp->sourcing_lnum; for (;;) { /* make room to read at least 120 (more) characters */ *** *** 4001,4007 ; if ((len & 1) != (c & 1)) /* escaped NL, read more */ { ! sourcing_lnum++; continue; } --- 4014,4020
Re: ATHENA-Build -> test_diffmode.vim fails running on ppc32 (was Amigabuild)...
Elimar Riesebieter wrote: > > > * Elimar Riesebieter [2019-07-02 12:41 +0200]: > > > > > > Building vim-8.1.1616 ATHENA variant on ppc32 (linux) euns smooth > > > but there is a test failure: > > > > > > Failures: > > > From test_diffmode.vim: > > > Found errors in Test_diff_screen(): > > > Run 1: > > > function > > > RunTheTest[40]..Test_diff_screen[112]..VerifyInternal[4]..VerifyScreenDump > > > line 55: See dump file difference: call > > > term_dumpdiff("testdir/failed/Test_diff_17.dump", > > > "testdir/dumps/Test_diff_17.dump"); difference in line 1: "| > > > +0#e05#a8a8a8255@1>a+0#000#ff0| @33||+1&&| > > > +0#e05#a8a8a8255@1|a+0#000#ff0| @33"; difference in line 4: > > > "| +0#e05#a8a8a8255@1|-+0#4040ff13#af255@34||+1#000#ff0| > > > +0#e05#a8a8a8255@1| +0#000#5fd7ff255@34"; difference in line 5: > > > "| +0#e05#a8a8a8255@1|e+0#000#ff0|f| @32||+1&&| > > > +0#e05#a8a8a8255@1|e+0#000#ff0|f| @32"; difference in line 6: > > > "| +0#e05#a8a8a8255@1|x+2#000#ff404010@2| > > >
Patch 8.1.1624
Patch 8.1.1624 Problem:When testing in the GUI may try to run gvim in a terminal. Solution: Add the -v argument. (Yee Cheng Chin, closes #4605) Don't skip tests that work now. Files: src/testdir/shared.vim, src/testdir/term_util.vim, src/testdir/test_mapping.vim, src/testdir/test_timers.vim *** ../vim-8.1.1623/src/testdir/shared.vim 2019-06-23 00:49:50.985715087 +0200 --- src/testdir/shared.vim 2019-07-04 12:29:42.224693150 +0200 *** *** 284,289 --- 284,296 return cmd endfunc + " Get the command to run Vim, with --clean, and force to run in terminal so it + " won't start a new GUI. + func GetVimCommandCleanTerm() + " Add -v to have gvim run in the terminal (if possible) + return GetVimCommandClean() .. ' -v ' + endfunc + " Run Vim, using the "vimcmd" file and "-u NORC". " "before" is a list of Vim commands to be executed before loading plugins. " "after" is a list of Vim commands to be executed after loading plugins. *** ../vim-8.1.1623/src/testdir/term_util.vim 2019-06-23 00:49:50.985715087 +0200 --- src/testdir/term_util.vim 2019-07-04 12:31:54.659243401 +0200 *** *** 59,68 let cols = get(a:options, 'cols', 75) let statusoff = get(a:options, 'statusoff', 1) ! let cmd = GetVimCommandClean() - " Add -v to have gvim run in the terminal (if possible) - let cmd .= ' -v ' . a:arguments let buf = term_start(cmd, { \ 'curwin': 1, \ 'term_rows': rows, --- 59,66 let cols = get(a:options, 'cols', 75) let statusoff = get(a:options, 'statusoff', 1) ! let cmd = GetVimCommandCleanTerm() .. a:arguments let buf = term_start(cmd, { \ 'curwin': 1, \ 'term_rows': rows, *** ../vim-8.1.1623/src/testdir/test_mapping.vim2019-07-03 21:40:10.877854768 +0200 --- src/testdir/test_mapping.vim2019-07-04 12:57:41.019212398 +0200 *** *** 399,405 endfunc func Test_error_in_map_expr() ! if !has('terminal') || has('gui_running') throw 'Skipped: cannot run Vim in a terminal window' endif --- 399,405 endfunc func Test_error_in_map_expr() ! if !has('terminal') || (has('win32') && has('gui_running')) throw 'Skipped: cannot run Vim in a terminal window' endif *** *** 413,419 [CODE] call writefile(lines, 'Xtest.vim') ! let buf = term_start(GetVimCommandClean() .. ' -S Xtest.vim', {'term_rows': 8}) let job = term_getjob(buf) call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))}) --- 413,419 [CODE] call writefile(lines, 'Xtest.vim') ! let buf = term_start(GetVimCommandCleanTerm() .. ' -S Xtest.vim', {'term_rows': 8}) let job = term_getjob(buf) call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))}) diff: missing operand after '../vim-8.1.1623/' diff: Try 'diff --help' for more information. *** ../vim-8.1.1623/src/testdir/test_timers.vim 2019-07-03 21:40:10.877854768 +0200 --- src/testdir/test_timers.vim 2019-07-04 12:57:54.687120020 +0200 *** *** 334,340 endfunc func Test_error_in_timer_callback() ! if !has('terminal') || has('gui_running') throw 'Skipped: cannot run Vim in a terminal window' endif --- 334,340 endfunc func Test_error_in_timer_callback() ! if !has('terminal') || (has('win32') && has('gui_running')) throw 'Skipped: cannot run Vim in a terminal window' endif *** *** 348,354 [CODE] call writefile(lines, 'Xtest.vim') ! let buf = term_start(GetVimCommandClean() .. ' -S Xtest.vim', {'term_rows': 8}) let job = term_getjob(buf) call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))}) --- 348,354 [CODE] call writefile(lines, 'Xtest.vim') ! let buf = term_start(GetVimCommandCleanTerm() .. ' -S Xtest.vim', {'term_rows': 8}) let job = term_getjob(buf) call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))}) *** ../vim-8.1.1623/src/version.c 2019-07-04 11:59:25.420462567 +0200 --- src/version.c 2019-07-04 13:03:06.441027999 +0200 *** *** 779,780 --- 779,782 { /* Add new patch number below this line */ + /**/ + 1624, /**/ -- Not too long ago, unzipping in public was illegal... /// Bram Moolenaar -- b...@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/// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To
Re: ATHENA-Build -> test_diffmode.vim fails running on ppc32 (was Amigabuild)...
* Bram Moolenaar [2019-07-03 21:40 +0200]: > > Elimar Riesebieter wrote: > > > * Elimar Riesebieter [2019-07-02 12:41 +0200]: > > > > Building vim-8.1.1616 ATHENA variant on ppc32 (linux) euns smooth > > but there is a test failure: > > > > Failures: > > From test_diffmode.vim: > > Found errors in Test_diff_screen(): > > Run 1: > > function > > RunTheTest[40]..Test_diff_screen[112]..VerifyInternal[4]..VerifyScreenDump > > line 55: See dump file difference: call > > term_dumpdiff("testdir/failed/Test_diff_17.dump", > > "testdir/dumps/Test_diff_17.dump"); difference in line 1: "| > > +0#e05#a8a8a8255@1>a+0#000#ff0| @33||+1&&| > > +0#e05#a8a8a8255@1|a+0#000#ff0| @33"; difference in line 4: "| > > +0#e05#a8a8a8255@1|-+0#4040ff13#af255@34||+1#000#ff0| > > +0#e05#a8a8a8255@1| +0#000#5fd7ff255@34"; difference in line 5: "| > > +0#e05#a8a8a8255@1|e+0#000#ff0|f| @32||+1&&| > > +0#e05#a8a8a8255@1|e+0#000#ff0|f| @32"; difference in line 6: > > "| +0#e05#a8a8a8255@1|x+2#000#ff404010@2| > >
Patch 8.1.1623
Patch 8.1.1623 Problem:Display wrong with signs in narrow number column. Solution: Increase the numbercolumn width if needed. (Yegappan Lakshmanan, closes #4606) Files: src/option.c, src/screen.c, src/sign.c, src/testdir/test_signs.vim *** ../vim-8.1.1622/src/option.c2019-07-01 22:05:44.457897080 +0200 --- src/option.c2019-07-04 11:52:52.319287679 +0200 *** *** 7454,7464 #endif /* FEAT_INS_EXPAND */ #ifdef FEAT_SIGNS ! /* 'signcolumn' */ else if (varp == >w_p_scl) { if (check_opt_strings(*varp, p_scl_values, FALSE) != OK) errmsg = e_invarg; } #endif --- 7454,7470 #endif /* FEAT_INS_EXPAND */ #ifdef FEAT_SIGNS ! // 'signcolumn' else if (varp == >w_p_scl) { if (check_opt_strings(*varp, p_scl_values, FALSE) != OK) errmsg = e_invarg; + // When changing the 'signcolumn' to or from 'number', recompute the + // width of the number column if 'number' or 'relativenumber' is set. + if (((*oldval == 'n' && *(oldval + 1) == 'u') + || (*curwin->w_p_scl == 'n' && *(curwin->w_p_scl + 1) =='u')) + && (curwin->w_p_nu || curwin->w_p_rnu)) + curwin->w_nrwidth_line_count = 0; } #endif *** ../vim-8.1.1622/src/screen.c2019-07-01 22:05:44.457897080 +0200 --- src/screen.c2019-07-04 11:50:07.820184623 +0200 *** *** 11333,11338 --- 11333,11346 if (n < wp->w_p_nuw - 1) n = wp->w_p_nuw - 1; + # ifdef FEAT_SIGNS + // If 'signcolumn' is set to 'number' and there is a sign to display, then + // the minimal width for the number column is 2. + if (n < 2 && (wp->w_buffer->b_signlist != NULL) + && (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u')) + n = 2; + # endif + wp->w_nrwidth_width = n; wp->w_nuw_cached = wp->w_p_nuw; return n; *** ../vim-8.1.1622/src/sign.c 2019-06-29 07:56:26.042876840 +0200 --- src/sign.c 2019-07-04 11:57:52.069208579 +0200 *** *** 1008,1013 --- 1008,1027 semsg(_("E155: Unknown sign: %s"), name); } + static void + may_force_numberwidth_recompute(buf_T *buf, int unplace) + { + tabpage_T *tp; + win_T *wp; + + FOR_ALL_TAB_WINDOWS(tp, wp) + if (wp->w_buffer == buf + && (wp->w_p_nu || wp->w_p_rnu) + && (unplace || wp->w_nrwidth_width < 2) + && (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u')) + wp->w_nrwidth_line_count = 0; + } + /* * Place a sign at the specified file location or update a sign. */ *** *** 1045,1051 --- 1059,1071 // ":sign place {id} file={fname}": change sign type lnum = buf_change_sign_type(buf, *sign_id, sign_group, sp->sn_typenr); if (lnum > 0) + { redraw_buf_line_later(buf, lnum); + + // When displaying signs in the 'number' column, if the width of the + // number column is less than 2, then force recomputing the width. + may_force_numberwidth_recompute(buf, FALSE); + } else { semsg(_("E885: Not possible to change sign %s"), sign_name); *** *** 1080,1085 --- 1100, return FAIL; } + // When all the signs in a buffer are removed, force recomputing the + // number column width (if enabled) in all the windows displaying the + // buffer if 'signcolumn' is set to 'number' in that window. + if (buf->b_signlist == NULL) + may_force_numberwidth_recompute(buf, TRUE); + return OK; } *** ../vim-8.1.1622/src/testdir/test_signs.vim 2019-06-19 16:31:18.034746591 +0200 --- src/testdir/test_signs.vim 2019-07-04 11:50:07.820184623 +0200 *** *** 1788,1793 --- 1788,1843 redraw! call assert_equal("=> 1 01234", s:ScreenLine(1, 1, 11)) + " Test displaying signs in the number column with width 1 + call sign_unplace('*') + call append(1, "abcde") + call append(2, "01234") + " Enable number column with width 1 + set number numberwidth=1 signcolumn=auto + redraw! + call assert_equal("3 01234", s:ScreenLine(3, 1, 7)) + " Place a sign and make sure number column width remains the same + sign place 20 line=2 name=sign1 + redraw! + call assert_equal("=>2 abcde", s:ScreenLine(2, 1, 9)) + call assert_equal(" 3 01234", s:ScreenLine(3, 1, 9)) + " Set 'signcolumn' to 'number', make sure the number column width increases + set signcolumn=number + redraw! + call assert_equal("=> abcde", s:ScreenLine(2, 1, 8)) + call assert_equal(" 3 01234", s:ScreenLine(3, 1, 8)) + " Set 'signcolumn' to 'auto', make sure the number column width is 1. + set signcolumn=auto + redraw! + call assert_equal("=>2 abcde", s:ScreenLine(2, 1, 9)) + call assert_equal(" 3 01234", s:ScreenLine(3, 1, 9)) + " Set 'signcolumn' to 'number', make
Re: Looking for volunteers
On Mi, 03 Jul 2019, Bram Moolenaar wrote: > > Some parts of Vim need some more attention than they are currently > getting. Some are long-term feature requests that I think should be > implemented, some are unmaintained plugins. > > One of the things that comes up now and then is that the strongest > encryption that Vim supports isn't very strong. Some argue that with a > powerful computer (or data center) it could be cracked. I have not ever > seen proof of that, but there are better algorithms available. You can > use an external crypt somehow, but there are doubts whether this is > safe. And it won't work for the swap or undo file. > > This requires finding a portable implementation that is "state of the > art" and has a compatible license. The implementation must make sure > that the encryption is not weakened by how the algorithm is used. Some more information about the current problems are here: https://github.com/vim/vim/issues/639 https://github.com/vim/vim/issues/638 If I remember correctly, libsodium https://github.com/jedisct1/libsodium has been suggested for providing the encryption solution. This would be a good way to have a library handle the encryption part securely instead of trying to solve and implement it ourselves. Unfortunately, I have not the time to take a look at it myself. I have been more and more busy with my day job and my family and in my spare time, I barely find enough time to handle issues here and maintain the various plugins. I already have quite a bit of issues to look at but hardly find time for it, sorry. Best, Christian -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/20190704063850.GC21708%40256bit.org. For more options, visit https://groups.google.com/d/optout.