Re: [vim/vim] Proposal: sign_setlist (#4557)

2019-07-04 Fir de Conversatie Yegappan Lakshmanan
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

2019-07-04 Fir de Conversatie h_east
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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie John Marriott

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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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)...

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Bram Moolenaar


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)...

2019-07-04 Fir de Conversatie Elimar Riesebieter
* 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

2019-07-04 Fir de Conversatie Bram Moolenaar


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

2019-07-04 Fir de Conversatie Christian Brabandt


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.