Re: Patch 8.1.1406

2019-05-26 Fir de Conversatie Ken Takata
Hi Bram,

2019/5/27 Mon 5:18:15 UTC+9 Bram Moolenaar wrote:
> Patch 8.1.1406
> Problem:popup_hide() and popup_show() not implemented yet.
> Solution:   Implement the functions.
> Files:src/popupwin.c, src/proto/popupwin.pro, src/evalfunc.c,
> src/structs.h, runtime/doc/popup.txt, src/screen.c, src/vim.h,
> src/testdir/test_popupwin.vim

...

> --- 612,621 
>   #define VALID_BOTLINE   0x20// w_botine and w_empty_rows are valid
>   #define VALID_BOTLINE_AP 0x40   // w_botine is approximated
>   #define VALID_TOPLINE   0x80// w_topline is valid (for cursor 
> position)
> ! 
> ! // Values for w_popup_flags.
> ! #define PFL_HIDDEN  1   // popup is not displayed
> ! #define PFL_REDRAWN 2   // popup was just redrawn
>   
>   /*
>* Terminal highlighting attribute bits.

The PFL_HIDDEN definition conflicts with the Windows' winsock2 definition:

https://ci.appveyor.com/project/chrisbra/vim-win32-installer/build/job/9nghy0drxbyiohfp?fullLog=true#L316

> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\winsock2.h(985): 
> warning C4005: 'PFL_HIDDEN': macro redefinition
> C:\projects\vim-win32-installer\vim\src\vim.h(617): note: see previous 
> definition of 'PFL_HIDDEN'

This occurs when if_perl is enabled. (We don't enable if_perl in the vim/vim
repository on AppVeyor.)

Regards,
Ken Takata

-- 
-- 
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/0bb9196d-b395-422d-aed2-0b543719ca9d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1407

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1407
Problem:Popup_create() does not support text properties.
Solution:   Support the third form of the text argument.
Files:  src/textprop.c, src/proto/textprop.pro, src/popupwin.c,
src/testdir/test_popupwin.vim, src/screen.c,
src/testdir/dumps/Test_popupwin_02.dump,
src/testdir/dumps/Test_popupwin_03.dump,
src/testdir/dumps/Test_popupwin_04.dump,
runtime/doc/popup.txt


*** ../vim-8.1.1406/src/textprop.c  2019-05-25 20:21:24.685950973 +0200
--- src/textprop.c  2019-05-26 23:30:46.064098867 +0200
***
*** 142,164 
  void
  f_prop_add(typval_T *argvars, typval_T *rettv UNUSED)
  {
- linenr_T  lnum;
  linenr_T  start_lnum;
- linenr_T  end_lnum;
  colnr_T   start_col;
- colnr_T   end_col;
- dict_T*dict;
- char_u*type_name;
- proptype_T*type;
- buf_T *buf = curbuf;
- int   id = 0;
- char_u*newtext;
- int   proplen;
- size_ttextlen;
- char_u*props = NULL;
- char_u*newprops;
- textprop_Ttmp_prop;
- int   i;
  
  start_lnum = tv_get_number([0]);
  start_col = tv_get_number([1]);
--- 142,149 
***
*** 172,178 
emsg(_(e_dictreq));
return;
  }
! dict = argvars[2].vval.v_dict;
  
  if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL)
  {
--- 157,194 
emsg(_(e_dictreq));
return;
  }
! 
! prop_add_common(start_lnum, start_col, argvars[2].vval.v_dict,
! curbuf, [2]);
! }
! 
! /*
!  * Shared between prop_add() and popup_create().
!  * "dict_arg" is the function argument of a dict containing "bufnr".
!  * it is NULL for popup_create().
!  */
! void
! prop_add_common(
!   linenr_Tstart_lnum,
!   colnr_T start_col,
!   dict_T  *dict,
!   buf_T   *default_buf,
!   typval_T*dict_arg)
! {
! linenr_T  lnum;
! linenr_T  end_lnum;
! colnr_T   end_col;
! char_u*type_name;
! proptype_T*type;
! buf_T *buf = default_buf;
! int   id = 0;
! char_u*newtext;
! int   proplen;
! size_ttextlen;
! char_u*props = NULL;
! char_u*newprops;
! textprop_Ttmp_prop;
! int   i;
  
  if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL)
  {
***
*** 221,227 
  if (dict_find(dict, (char_u *)"id", -1) != NULL)
id = dict_get_number(dict, (char_u *)"id");
  
! if (get_bufnr_from_arg([2], ) == FAIL)
return;
  
  type = lookup_prop_type(type_name, buf);
--- 237,243 
  if (dict_find(dict, (char_u *)"id", -1) != NULL)
id = dict_get_number(dict, (char_u *)"id");
  
! if (dict_arg != NULL && get_bufnr_from_arg(dict_arg, ) == FAIL)
return;
  
  type = lookup_prop_type(type_name, buf);
***
*** 278,289 
mch_memmove(newtext, buf->b_ml.ml_line_ptr, textlen);
  
// Find the index where to insert the new property.
!   // Since the text properties are not aligned properly when stored with 
the
!   // text, we need to copy them as bytes before using it as a struct.
for (i = 0; i < proplen; ++i)
{
mch_memmove(_prop, props + i * sizeof(textprop_T),
!  
sizeof(textprop_T));
if (tmp_prop.tp_col >= col)
break;
}
--- 294,305 
mch_memmove(newtext, buf->b_ml.ml_line_ptr, textlen);
  
// Find the index where to insert the new property.
!   // Since the text properties are not aligned properly when stored with
!   // the text, we need to copy them as bytes before using it as a struct.
for (i = 0; i < proplen; ++i)
{
mch_memmove(_prop, props + i * sizeof(textprop_T),
!  sizeof(textprop_T));
if (tmp_prop.tp_col >= col)
break;
}
***
*** 298,304 
tmp_prop.tp_flags = (lnum > start_lnum ? TP_FLAG_CONT_PREV : 0)
  | (lnum < end_lnum ? TP_FLAG_CONT_NEXT : 0);
mch_memmove(newprops + i * sizeof(textprop_T), _prop,
!  
sizeof(textprop_T));
  
if (i < proplen)
mch_memmove(newprops + (i + 1) * sizeof(textprop_T),
--- 314,320 
tmp_prop.tp_flags = (lnum > start_lnum ? TP_FLAG_CONT_PREV : 0)
  | (lnum < end_lnum ? TP_FLAG_CONT_NEXT : 0);
mch_memmove(newprops + i * sizeof(textprop_T), _prop,
!  sizeof(textprop_T));
  
if (i < proplen)
mch_memmove(newprops + (i + 1) * 

Patch 8.1.1406

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1406
Problem:popup_hide() and popup_show() not implemented yet.
Solution:   Implement the functions.
Files:  src/popupwin.c, src/proto/popupwin.pro, src/evalfunc.c,
src/structs.h, runtime/doc/popup.txt, src/screen.c, src/vim.h,
src/testdir/test_popupwin.vim


*** ../vim-8.1.1405/src/popupwin.c  2019-05-26 21:03:19.940073927 +0200
--- src/popupwin.c  2019-05-26 22:04:53.509693725 +0200
***
*** 195,212 
  }
  
  /*
   * popup_close({id})
   */
  void
  f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
  {
! int   nr = (int)tv_get_number(argvars);
  
! popup_close(nr);
  }
  
  static void
! popup_undisplay(win_T *wp)
  {
  if (wp->w_winrow + wp->w_height >= cmdline_row)
clear_cmdline = TRUE;
--- 195,279 
  }
  
  /*
+  * Find the popup window with window-ID "id".
+  * If the popup window does not exist NULL is returned.
+  * If the window is not a popup window, and error message is given.
+  */
+ static win_T *
+ find_popup_win(int id)
+ {
+ win_T *wp = win_id2wp(id);
+ 
+ if (wp != NULL && !bt_popup(wp->w_buffer))
+ {
+   semsg(_("E993: window %d is not a popup window"), id);
+   return NULL;
+ }
+ return wp;
+ }
+ 
+ /*
+  * Return TRUE if there any popups that are not hidden.
+  */
+ int
+ popup_any_visible(void)
+ {
+ win_T *wp;
+ 
+ for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
+   if ((wp->w_popup_flags & PFL_HIDDEN) == 0)
+   return TRUE;
+ for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
+   if ((wp->w_popup_flags & PFL_HIDDEN) == 0)
+   return TRUE;
+ return FALSE;
+ }
+ 
+ /*
   * popup_close({id})
   */
  void
  f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
  {
! int   id = (int)tv_get_number(argvars);
! 
! popup_close(id);
! }
! 
! /*
!  * popup_hide({id})
!  */
! void
! f_popup_hide(typval_T *argvars, typval_T *rettv UNUSED)
! {
! int   id = (int)tv_get_number(argvars);
! win_T *wp = find_popup_win(id);
! 
! if (wp != NULL && (wp->w_popup_flags & PFL_HIDDEN) == 0)
! {
!   wp->w_popup_flags |= PFL_HIDDEN;
!   redraw_all_later(NOT_VALID);
! }
! }
! 
! /*
!  * popup_show({id})
!  */
! void
! f_popup_show(typval_T *argvars, typval_T *rettv UNUSED)
! {
! int   id = (int)tv_get_number(argvars);
! win_T *wp = find_popup_win(id);
  
! if (wp != NULL && (wp->w_popup_flags & PFL_HIDDEN) != 0)
! {
!   wp->w_popup_flags &= ~PFL_HIDDEN;
!   redraw_all_later(NOT_VALID);
! }
  }
  
  static void
! popup_free(win_T *wp)
  {
  if (wp->w_winrow + wp->w_height >= cmdline_row)
clear_cmdline = TRUE;
***
*** 232,238 
first_popupwin = wp->w_next;
else
prev->w_next = wp->w_next;
!   popup_undisplay(wp);
return;
}
  
--- 299,305 
first_popupwin = wp->w_next;
else
prev->w_next = wp->w_next;
!   popup_free(wp);
return;
}
  
***
*** 258,264 
*root = wp->w_next;
else
prev->w_next = wp->w_next;
!   popup_undisplay(wp);
return;
}
  }
--- 325,331 
*root = wp->w_next;
else
prev->w_next = wp->w_next;
!   popup_free(wp);
return;
}
  }
*** ../vim-8.1.1405/src/proto/popupwin.pro  2019-05-26 14:10:59.909979018 
+0200
--- src/proto/popupwin.pro  2019-05-26 21:58:55.451508950 +0200
***
*** 1,6 
--- 1,9 
  /* popupwin.c */
  void f_popup_create(typval_T *argvars, typval_T *rettv);
+ int popup_any_visible(void);
  void f_popup_close(typval_T *argvars, typval_T *rettv);
+ void f_popup_hide(typval_T *argvars, typval_T *rettv);
+ void f_popup_show(typval_T *argvars, typval_T *rettv);
  void popup_close(int id);
  void popup_close_tabpage(tabpage_T *tp, int id);
  void close_all_popups(void);
*** ../vim-8.1.1405/src/evalfunc.c  2019-05-25 20:21:24.669951062 +0200
--- src/evalfunc.c  2019-05-26 21:49:46.478291418 +0200
***
*** 810,815 
--- 810,817 
  #ifdef FEAT_TEXT_PROP
  {"popup_close",   1, 1, f_popup_close},
  {"popup_create",  2, 2, f_popup_create},
+ {"popup_hide",1, 1, f_popup_hide},
+ {"popup_show",1, 1, f_popup_show},
  #endif
  #ifdef FEAT_FLOAT
  {"pow",   2, 2, f_pow},
*** ../vim-8.1.1405/src/structs.h   2019-05-26 20:44:07.105974009 +0200
--- src/structs.h   2019-05-26 21:54:20.348903421 +0200
***
*** 2871,2876 
--- 2871,2877 
  int   w_vsep_width;   /* Number of separator columns (0 
or 1). */
  pos_save_Tw_save_cursor;  /* backup of cursor pos and topline 
*/
  #ifdef FEAT_TEXT_PROP
+ 

Patch 8.1.1405

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1405
Problem:"highlight" option of popup windows not supported.
Solution:   Implement the "highlight" option.
Files:  src/option.c, src/proto/option.pro, src/diff.c src/popupwin.c,
runtime/doc/popup.txt, src/testdir/test_popupwin.vim,
src/testdir/dumps/Test_popupwin_01.dump,
src/testdir/dumps/Test_popupwin_03.dump


*** ../vim-8.1.1404/src/option.c2019-05-25 19:51:03.776408456 +0200
--- src/option.c2019-05-26 21:01:53.068520737 +0200
***
*** 5954,5959 
--- 5954,6007 
  }
  
  /*
+  * Like set_string_option_direct(), but for a window-local option in "wp".
+  * Blocks autocommands to avoid the old curwin becoming invalid.
+  */
+ void
+ set_string_option_direct_in_win(
+   win_T   *wp,
+   char_u  *name,
+   int opt_idx,
+   char_u  *val,
+   int opt_flags,
+   int set_sid)
+ {
+ win_T *save_curwin = curwin;
+ 
+ block_autocmds();
+ curwin = wp;
+ curbuf = curwin->w_buffer;
+ set_string_option_direct(name, opt_idx, val, opt_flags, set_sid);
+ curwin = save_curwin;
+ curbuf = curwin->w_buffer;
+ unblock_autocmds();
+ }
+ 
+ /*
+  * Like set_string_option_direct(), but for a buffer-local option in "buf".
+  * Blocks autocommands to avoid the old curbuf becoming invalid.
+  */
+ void
+ set_string_option_direct_in_buf(
+   buf_T   *buf,
+   char_u  *name,
+   int opt_idx,
+   char_u  *val,
+   int opt_flags,
+   int set_sid)
+ {
+ buf_T *save_curbuf = curbuf;
+ 
+ block_autocmds();
+ curbuf = buf;
+ curwin->w_buffer = curbuf;
+ set_string_option_direct(name, opt_idx, val, opt_flags, set_sid);
+ curbuf = save_curbuf;
+ curwin->w_buffer = curbuf;
+ unblock_autocmds();
+ }
+ 
+ /*
   * Set global value for string option when it's a local option.
   */
  static void
*** ../vim-8.1.1404/src/proto/option.pro2019-04-10 22:15:15.813016799 
+0200
--- src/proto/option.pro2019-05-26 20:24:40.435782299 +0200
***
*** 21,26 
--- 21,28 
  int set_term_option_alloced(char_u **p);
  int was_set_insecurely(char_u *opt, int opt_flags);
  void set_string_option_direct(char_u *name, int opt_idx, char_u *val, int 
opt_flags, int set_sid);
+ void set_string_option_direct_in_win(win_T *wp, char_u *name, int opt_idx, 
char_u *val, int opt_flags, int set_sid);
+ void set_string_option_direct_in_buf(buf_T *buf, char_u *name, int opt_idx, 
char_u *val, int opt_flags, int set_sid);
  int valid_spellang(char_u *val);
  char *check_colorcolumn(win_T *wp);
  char *check_stl_option(char_u *s);
*** ../vim-8.1.1404/src/diff.c  2019-05-24 19:38:59.096545552 +0200
--- src/diff.c  2019-05-26 20:19:45.869309781 +0200
***
*** 1447,1464 
wp->w_p_wrap_save = wp->w_p_wrap;
  wp->w_p_wrap = FALSE;
  # ifdef FEAT_FOLDING
- curwin = wp;
- curbuf = curwin->w_buffer;
  if (!wp->w_p_diff)
  {
if (wp->w_p_diff_saved)
free_string_option(wp->w_p_fdm_save);
wp->w_p_fdm_save = vim_strsave(wp->w_p_fdm);
  }
! set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
   OPT_LOCAL|OPT_FREE, 0);
- curwin = old_curwin;
- curbuf = curwin->w_buffer;
  if (!wp->w_p_diff)
  {
wp->w_p_fdc_save = wp->w_p_fdc;
--- 1447,1460 
wp->w_p_wrap_save = wp->w_p_wrap;
  wp->w_p_wrap = FALSE;
  # ifdef FEAT_FOLDING
  if (!wp->w_p_diff)
  {
if (wp->w_p_diff_saved)
free_string_option(wp->w_p_fdm_save);
wp->w_p_fdm_save = vim_strsave(wp->w_p_fdm);
  }
! set_string_option_direct_in_win(wp, (char_u *)"fdm", -1, (char_u *)"diff",
   OPT_LOCAL|OPT_FREE, 0);
  if (!wp->w_p_diff)
  {
wp->w_p_fdc_save = wp->w_p_fdc;
*** ../vim-8.1.1404/src/popupwin.c  2019-05-26 20:44:07.105974009 +0200
--- src/popupwin.c  2019-05-26 20:44:54.193735465 +0200
***
*** 23,28 
--- 23,29 
  apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict)
  {
  int   nr;
+ char_u  *str;
  
  wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth");
  wp->w_maxheight = dict_get_number(dict, (char_u *)"maxheight");
***
*** 52,57 
--- 53,62 
  }
  #endif
  
+ str = dict_get_string(dict, (char_u *)"highlight", TRUE);
+ if (str != NULL)
+   set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1,
+  str, OPT_FREE|OPT_LOCAL, 0);
  }
  
  /*
***
*** 94,105 
  if (buf == NULL)
return;
  ml_open(buf);
! curbuf = buf;
! set_string_option_direct((char_u *)"buftype", -1,
 

Patch 8.1.1404

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1404
Problem:Cannot change the patch level when building with NSIS.
Solution:   Use $PATCHLEVEL if defined. (Christian Brabandt)
Files:  nsis/gvim.nsi


*** ../vim-8.1.1403/nsis/gvim.nsi   2019-05-17 12:36:52.776893221 +0200
--- nsis/gvim.nsi   2019-05-26 20:49:16.692399720 +0200
***
*** 47,52 
--- 47,57 
  
  !include gvim_version.nsh # for version number
  
+ # Definition of Patch for Vim
+ !ifndef PATCHLEVEL
+   !define PATCHLEVEL 0
+ !endif
+ 
  # --- No configurable settings below this line ---
  
  !include "Library.nsh"# For DLL install
***
*** 181,188 
  VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Vim"
  VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright (C) 1996"
  VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Vi Improved - A Text 
Editor"
! VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" 
"${VER_MAJOR}.${VER_MINOR}.0.0"
! VIProductVersion "${VER_MAJOR}.${VER_MINOR}.0.0"
  
  # Global variables
  Var vim_dialog
--- 186,193 
  VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Vim"
  VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright (C) 1996"
  VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Vi Improved - A Text 
Editor"
! VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" 
"${VER_MAJOR}.${VER_MINOR}.${PATCHLEVEL}.0"
! VIProductVersion "${VER_MAJOR}.${VER_MINOR}.${PATCHLEVEL}.0"
  
  # Global variables
  Var vim_dialog
*** ../vim-8.1.1403/src/version.c   2019-05-26 20:44:07.105974009 +0200
--- src/version.c   2019-05-26 20:48:28.716644481 +0200
***
*** 769,770 
--- 769,772 
  {   /* Add new patch number below this line */
+ /**/
+ 1404,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
34. You laugh at people with a 10 Mbit connection.

 /// 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/201905261850.x4QIoCF1014020%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.


Plugins exposing events to other plugins

2019-05-26 Fir de Conversatie Paul Jolly
Hi all,

As a brief summary, govim (https://github.com/myitcv/govim) is a
Vim8.1 channel-based plugin, written in Go, that is a Language Server
Protocol (LSP) client
(https://github.com/Microsoft/language-server-protocol/blob/gh-pages/specification.md).
The TL;DR version is that such a plugin can, with the LSP server it
connects to, provide answers on everything from jump-to-definition,
code completion... and much more. This functionality is exposed via
functions, commands and autocmds.

A recent issue raised highlighted the fact that YouCompleteMe (YCM)
does not appear to play well with govim:

https://github.com/myitcv/govim/issues/247

This was effectively tracked down to the fact that both govim and YCM
rely on TextChanged/TextChangedI autocmds to do their work; YCM to
trigger an omnifunc completion when a '.' character is pressed, and
govim to update the LSP server with the latest buffer contents:

https://github.com/Valloric/YouCompleteMe/issues/3408

The issue reported occurs when the YCM TextChangedI autocmd fires
before the govim autocmd; effectively a completion is attempted beyond
the end of a line (in some cases).

Ignoring for one second that there is significant overlap between what
YCM and govim are trying to do here from a completion perspective, it
strikes me that plugins like govim might well want to expose events
that other plugins can hook into. In this case, on such event would be
"post LSP textDocument/didChange" (textDocument/didChange is the LSP
event notified from client -> server when a document loaded in the
editor changes)

Is there a standard means by which plugins like govim should expose such events?

Any pointers would be much appreciated.

Thanks,


Paul

-- 
-- 
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/CACoUkn71Dv1b1Jamgcw8Fp8Q0cwzVrhZ%3DCOeeBOkmGXDM1rXhg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1403

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1403
Problem:Cannot build without the timer feature.
Solution:   Add #ifdef.
Files:  src/structs.h, src/window.c, src/popupwin.c,
src/testdir/test_popupwin.vim


*** ../vim-8.1.1402/src/structs.h   2019-05-26 20:10:02.604276366 +0200
--- src/structs.h   2019-05-26 20:37:16.352032625 +0200
***
*** 2874,2880 
--- 2874,2882 
  int   w_zindex;
  int   w_maxheight;// "maxheight" for popup window
  int   w_maxwidth; // "maxwidth" for popup window
+ # if defined(FEAT_TIMERS)
  timer_T   *w_popup_timer; // timer for closing popup window
+ # endif
  #endif
  
  
*** ../vim-8.1.1402/src/window.c2019-05-26 20:10:02.604276366 +0200
--- src/window.c2019-05-26 20:38:09.435769462 +0200
***
*** 4859,4864 
--- 4859,4865 
  return wp == aucmd_win || bt_popup(wp->w_buffer);
  }
  
+ #if defined(FEAT_TEXT_PROP) || defined(PROTO)
  /*
   * Free a popup window.  This does not take the window out of the window list
   * and assumes there is only one toplevel frame, no split.
***
*** 4867,4877 
--- 4868,4881 
  win_free_popup(win_T *win)
  {
  win_close_buffer(win, TRUE, FALSE);
+ # if defined(FEAT_TIMERS)
  if (win->w_popup_timer != NULL)
stop_timer(win->w_popup_timer);
+ # endif
  vim_free(win->w_frame);
  win_free(win, NULL);
  }
+ #endif
  
  /*
   * Append window "wp" in the window list after window "after".
*** ../vim-8.1.1402/src/popupwin.c  2019-05-26 20:10:02.604276366 +0200
--- src/popupwin.c  2019-05-26 20:43:32.806147513 +0200
***
*** 30,35 
--- 30,36 
  wp->w_wincol = dict_get_number(dict, (char_u *)"col");
  wp->w_zindex = dict_get_number(dict, (char_u *)"zindex");
  
+ #if defined(FEAT_TIMERS)
  // Add timer to close the popup after some time.
  nr = dict_get_number(dict, (char_u *)"time");
  if (nr > 0)
***
*** 49,54 
--- 50,56 
wp->w_popup_timer->tr_partial = tv.vval.v_partial;
}
  }
+ #endif
  
  }
  
*** ../vim-8.1.1402/src/testdir/test_popupwin.vim   2019-05-26 
20:10:02.604276366 +0200
--- src/testdir/test_popupwin.vim   2019-05-26 20:42:03.266599309 +0200
***
*** 39,44 
--- 39,47 
  endfunc
  
  func Test_popup_time()
+   if !has('timers')
+ return
+   endif
topleft vnew
call setline(1, 'hello')
  
***
*** 52,57 
--- 55,61 
call assert_equal('world', line)
  
sleep 700m
+   redraw
let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
call assert_equal('hello', line)
  
*** ../vim-8.1.1402/src/version.c   2019-05-26 20:10:02.604276366 +0200
--- src/version.c   2019-05-26 20:34:08.880951767 +0200
***
*** 769,770 
--- 769,772 
  {   /* Add new patch number below this line */
+ /**/
+ 1403,
  /**/

-- 
To define recursion, we must first define recursion.

 /// 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/201905261844.x4QIiOqp012715%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1402

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1402
Problem:"timer" option of popup windows not supported.
Solution:   Implement the "timer" option. (Yasuhiro Matsumoto, closes #4439)
Files:  src/structs.h, src/testdir/test_popupwin.vim, src/popupwin.c,
src/window.c, runtime/doc/popup.txt


*** ../vim-8.1.1401/src/structs.h   2019-05-25 19:51:03.780408437 +0200
--- src/structs.h   2019-05-26 19:36:12.090670162 +0200
***
*** 1941,1946 
--- 1941,1964 
  } syn_time_T;
  #endif
  
+ typedef struct timer_S timer_T;
+ struct timer_S
+ {
+ long  tr_id;
+ #ifdef FEAT_TIMERS
+ timer_T   *tr_next;
+ timer_T   *tr_prev;
+ proftime_Ttr_due; /* when the callback is to be 
invoked */
+ char  tr_firing;  /* when TRUE callback is being called */
+ char  tr_paused;  /* when TRUE callback is not invoked */
+ int   tr_repeat;  /* number of times to repeat, -1 
forever */
+ long  tr_interval;/* msec */
+ char_u*tr_callback;   /* allocated */
+ partial_T *tr_partial;
+ int   tr_emsg_count;
+ #endif
+ };
+ 
  #ifdef FEAT_CRYPT
  /*
   * Structure to hold the type of encryption and the state of encryption or
***
*** 2856,2861 
--- 2874,2880 
  int   w_zindex;
  int   w_maxheight;// "maxheight" for popup window
  int   w_maxwidth; // "maxwidth" for popup window
+ timer_T   *w_popup_timer; // timer for closing popup window
  #endif
  
  
***
*** 3434,3457 
  };
  typedef struct js_reader js_read_T;
  
- typedef struct timer_S timer_T;
- struct timer_S
- {
- long  tr_id;
- #ifdef FEAT_TIMERS
- timer_T   *tr_next;
- timer_T   *tr_prev;
- proftime_Ttr_due; /* when the callback is to be 
invoked */
- char  tr_firing;  /* when TRUE callback is being called */
- char  tr_paused;  /* when TRUE callback is not invoked */
- int   tr_repeat;  /* number of times to repeat, -1 
forever */
- long  tr_interval;/* msec */
- char_u*tr_callback;   /* allocated */
- partial_T *tr_partial;
- int   tr_emsg_count;
- #endif
- };
- 
  /* Maximum number of commands from + or -c arguments. */
  #define MAX_ARG_CMDS 10
  
--- 3453,3458 
*** ../vim-8.1.1401/src/testdir/test_popupwin.vim   2019-05-26 
14:10:59.909979018 +0200
--- src/testdir/test_popupwin.vim   2019-05-26 20:07:58.804887372 +0200
***
*** 37,39 
--- 37,73 
call StopVimInTerminal(buf)
call delete('XtestPopup')
  endfunc
+ 
+ func Test_popup_time()
+   topleft vnew
+   call setline(1, 'hello')
+ 
+   call popup_create('world', {
+   \ 'line': 1,
+   \ 'col': 1,
+   \ 'time': 500,
+   \})
+   redraw
+   let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
+   call assert_equal('world', line)
+ 
+   sleep 700m
+   let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
+   call assert_equal('hello', line)
+ 
+   call popup_create('on the command line', {
+   \ 'line': ,
+   \ 'col': 10,
+   \ 'time': 500,
+   \})
+   redraw
+   let line = join(map(range(1, 30), 'screenstring(, v:val)'), '')
+   call assert_match('.*on the command line.*', line)
+ 
+   sleep 700m
+   redraw
+   let line = join(map(range(1, 30), 'screenstring(, v:val)'), '')
+   call assert_notmatch('.*on the command line.*', line)
+ 
+   bwipe!
+ endfunc
*** ../vim-8.1.1401/src/popupwin.c  2019-05-26 18:48:09.402542633 +0200
--- src/popupwin.c  2019-05-26 20:05:06.193720441 +0200
***
*** 22,32 
--- 22,55 
  static void
  apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict)
  {
+ int   nr;
+ 
  wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth");
  wp->w_maxheight = dict_get_number(dict, (char_u *)"maxheight");
  wp->w_winrow = dict_get_number(dict, (char_u *)"line");
  wp->w_wincol = dict_get_number(dict, (char_u *)"col");
  wp->w_zindex = dict_get_number(dict, (char_u *)"zindex");
+ 
+ // Add timer to close the popup after some time.
+ nr = dict_get_number(dict, (char_u *)"time");
+ if (nr > 0)
+ {
+   char_u  cbbuf[50];
+   char_u  *ptr = cbbuf;
+   typval_Ttv;
+ 
+   vim_snprintf((char *)cbbuf, sizeof(cbbuf),
+  "{_ -> popup_close(%d)}", wp->w_id);
+   if (get_lambda_tv(, , TRUE) == OK)
+   {
+   wp->w_popup_timer = create_timer(nr, 0);
+   wp->w_popup_timer->tr_callback =
+ vim_strsave(partial_name(tv.vval.v_partial));
+   func_ref(wp->w_popup_timer->tr_callback);
+   wp->w_popup_timer->tr_partial = tv.vval.v_partial;
+   }
+ }
+ 
  }
  
  /*
***
*** 177,182 
--- 200,214 
  

Patch 8.1.1401

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1401
Problem:Misspelled mkspellmem as makespellmem.
Solution:   Drop duplicate help entry, fix test. (Naruhiko Nishino, Ken
Takata, closes #4437)
Files:  runtime/doc/options.txt, src/testdir/test_modeline.vim


*** ../vim-8.1.1400/runtime/doc/options.txt 2019-05-25 19:51:03.772408479 
+0200
--- runtime/doc/options.txt 2019-05-25 22:15:53.049576750 +0200
***
*** 4913,4924 
  < This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
  
-   *'makespellmem'* *'msm'*
- 'makespellmem' 'msm'  string  (default "46,2000,500")
-   global
-   Values relevant only when compressing a spell file, see |spell|.
-   This option cannot be set from a |modeline| or in the |sandbox|.
- 
*'matchpairs'* *'mps'*
  'matchpairs' 'mps'string  (default "(:),{:},[:]")
local to buffer
--- 4913,4918 
***
*** 5070,5075 
--- 5064,5071 
  < If you have less than 512 Mbyte |:mkspell| may fail for some
languages, no matter what you set 'mkspellmem' to.
  
+   This option cannot be set from a |modeline| or in the |sandbox|.
+ 
   *'modeline'* *'ml'* *'nomodeline'* *'noml'*
  'modeline' 'ml'   boolean (Vim default: on (off for root),
 Vi default: off)
*** ../vim-8.1.1400/src/testdir/test_modeline.vim   2019-05-23 
17:35:52.154999830 +0200
--- src/testdir/test_modeline.vim   2019-05-26 19:02:47.750214557 +0200
***
*** 116,122 
call s:modeline_fails('luadll', 'luadll=Something()', 'E520:')
call s:modeline_fails('makeef', 'makeef=Something()', 'E520:')
call s:modeline_fails('makeprg', 'makeprg=Something()', 'E520:')
!   call s:modeline_fails('makespellmem', 'makespellmem=Something()', 'E520:')
call s:modeline_fails('mzschemedll', 'mzschemedll=Something()', 'E520:')
call s:modeline_fails('mzschemegcdll', 'mzschemegcdll=Something()', 'E520:')
call s:modeline_fails('modelineexpr', 'modelineexpr', 'E520:')
--- 116,122 
call s:modeline_fails('luadll', 'luadll=Something()', 'E520:')
call s:modeline_fails('makeef', 'makeef=Something()', 'E520:')
call s:modeline_fails('makeprg', 'makeprg=Something()', 'E520:')
!   call s:modeline_fails('mkspellmem', 'mkspellmem=Something()', 'E520:')
call s:modeline_fails('mzschemedll', 'mzschemedll=Something()', 'E520:')
call s:modeline_fails('mzschemegcdll', 'mzschemegcdll=Something()', 'E520:')
call s:modeline_fails('modelineexpr', 'modelineexpr', 'E520:')
*** ../vim-8.1.1400/src/version.c   2019-05-26 18:48:09.406542616 +0200
--- src/version.c   2019-05-26 19:18:18.701437614 +0200
***
*** 769,770 
--- 769,772 
  {   /* Add new patch number below this line */
+ /**/
+ 1401,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
33. You name your children Eudora, Mozilla and Dotcom.

 /// 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/201905261720.x4QHKwgk028084%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1400

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1400
Problem:Using global pointer for tab-local popups is clumsy.
Solution:   Use the pointer in tabpage_T.
Files:  src/popupwin.c, src/globals.h, src/eval.c, src/screen.c,
src/window.c


*** ../vim-8.1.1399/src/popupwin.c  2019-05-26 14:10:59.909979018 +0200
--- src/popupwin.c  2019-05-26 18:35:27.278514988 +0200
***
*** 85,92 
  if (nr == 0)
  {
// popup on current tab
!   wp->w_next = first_tab_popupwin;
!   first_tab_popupwin = wp;
  }
  else if (nr < 0)
  {
--- 85,92 
  if (nr == 0)
  {
// popup on current tab
!   wp->w_next = curtab->tp_first_popupwin;
!   curtab->tp_first_popupwin = wp;
  }
  else if (nr < 0)
  {
***
*** 212,224 
  popup_close_tabpage(tabpage_T *tp, int id)
  {
  win_T *wp;
! win_T **root;
  win_T *prev = NULL;
  
- if (tp == curtab)
-   root = _tab_popupwin;
- else
-   root = >tp_first_popupwin;
  for (wp = *root; wp != NULL; prev = wp, wp = wp->w_next)
if (wp->w_id == id)
{
--- 212,220 
  popup_close_tabpage(tabpage_T *tp, int id)
  {
  win_T *wp;
! win_T **root = >tp_first_popupwin;
  win_T *prev = NULL;
  
  for (wp = *root; wp != NULL; prev = wp, wp = wp->w_next)
if (wp->w_id == id)
{
***
*** 237,244 
  {
  while (first_popupwin != NULL)
popup_close(first_popupwin->w_id);
! while (first_tab_popupwin != NULL)
!   popup_close(first_tab_popupwin->w_id);
  }
  
  void
--- 233,240 
  {
  while (first_popupwin != NULL)
popup_close(first_popupwin->w_id);
! while (curtab->tp_first_popupwin != NULL)
!   popup_close(curtab->tp_first_popupwin->w_id);
  }
  
  void
*** ../vim-8.1.1399/src/globals.h   2019-05-25 19:51:03.776408456 +0200
--- src/globals.h   2019-05-26 18:40:51.312802393 +0200
***
*** 582,588 
  EXTERN intaucmd_win_used INIT(= FALSE);   /* aucmd_win is being used */
  
  #ifdef FEAT_TEXT_PROP
- EXTERN win_T*first_tab_popupwin;  // first popup window local to tab page
  EXTERN win_T*first_popupwin;  // first global popup window
  #endif
  
--- 582,587 
*** ../vim-8.1.1399/src/eval.c  2019-05-25 19:51:03.776408456 +0200
--- src/eval.c  2019-05-26 18:37:25.693888227 +0200
***
*** 5589,5600 
  for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(>w_winvar.di_tv, copyID,
  NULL, NULL);
- for (wp = first_tab_popupwin; wp != NULL; wp = wp->w_next)
-   abort = abort || set_ref_in_item(>w_winvar.di_tv, copyID,
- NULL, NULL);
  FOR_ALL_TABPAGES(tp)
!   if (tp != curtab)
!   for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(>w_winvar.di_tv, copyID,
  NULL, NULL);
  #endif
--- 5589,5596 
  for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(>w_winvar.di_tv, copyID,
  NULL, NULL);
  FOR_ALL_TABPAGES(tp)
!   for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
abort = abort || set_ref_in_item(>w_winvar.di_tv, copyID,
  NULL, NULL);
  #endif
***
*** 8816,8827 
  if (nr >= LOWEST_WIN_ID)
  {
  #ifdef FEAT_TEXT_PROP
!   // popup windows are in a separate list
!   for (wp = (tp == NULL || tp == curtab)
!   ? first_tab_popupwin : tp->tp_first_popupwin;
!  wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
--- 8812,8822 
  if (nr >= LOWEST_WIN_ID)
  {
  #ifdef FEAT_TEXT_PROP
!   // check tab-local popup windows
!   for (wp = tp->tp_first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
+   // check global popup windows
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
if (wp->w_id == nr)
return wp;
*** ../vim-8.1.1399/src/screen.c2019-05-25 22:56:46.679669071 +0200
--- src/screen.c2019-05-26 18:38:53.905422054 +0200
***
*** 610,616 
  }
  #ifdef FEAT_TEXT_PROP
  // TODO: avoid redrawing everything when there is a popup window.
! if (first_popupwin != NULL || first_tab_popupwin != NULL)
type = NOT_VALID;
  #endif
  
--- 610,616 
  }
  #ifdef FEAT_TEXT_PROP
  // TODO: 

Re: Link error in Tiny and Small affter applying patches 8.1.1391 to 1396

2019-05-26 Fir de Conversatie Tony Mechelynck
On Sun, May 26, 2019 at 1:14 PM Bram Moolenaar  wrote:
>
>
> Tony wrote:
>
> > See below the error (at src/Makefile line 2009) as displayed in the
> > Tiny build without GUI but with +xterm_save. Small with Motif GUI
> > gives the same error. No error in Normal, Big and Huge with GTK2 GUI.
> >
[...]
> > /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> > objects/screen.o: in function `win_draw_end.constprop.20':
> > screen.c:(.text+0x3712): undefined reference to `hl_combine_attr'
> > /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> > screen.c:(.text+0x3732): undefined reference to `hl_combine_attr'
> > /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> > objects/screen.o: in function `win_line.isra.14':
> > screen.c:(.text+0x45f4): undefined reference to `hl_combine_attr'
> > collect2: error: ld returned 1 exit status
> > link.sh: Linking failed
> > make: *** [Makefile:2009: vi] Error 1
> > exit status 2
>
> Should be fixed by patch 8.1.1397.
>
Yes, it was. Thanks Bram!

Best regards,
Tony.

-- 
-- 
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/CAJkCKXtSo2x_M2cKQv992uf9ssfHfShND_KPfPWhHQs58bjMUw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1399

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1399
Problem:Popup windows not adjusted when switching tabs.
Solution:   Save and restore first_tab_popupwin. Fix closing a tabpage.
Files:  src/window.c, src/popupwin.c, src/proto/popupwin.pro,
src/testdir/test_popupwin.vim,
src/testdir/dumps/Test_popupwin_02.dump,
src/testdir/dumps/Test_popupwin_03.dump,
src/testdir/dumps/Test_popupwin_04.dump


*** ../vim-8.1.1398/src/window.c2019-05-25 20:10:32.837684661 +0200
--- src/window.c2019-05-26 14:02:01.612768844 +0200
***
*** 3670,3677 
  diff_clear(tp);
  # endif
  # ifdef FEAT_TEXT_PROP
! while (tp->tp_first_popupwin != NULL)
!   popup_close(tp->tp_first_popupwin->w_id);
  #endif
  for (idx = 0; idx < SNAP_COUNT; ++idx)
clear_snapshot(tp, idx);
--- 3670,3686 
  diff_clear(tp);
  # endif
  # ifdef FEAT_TEXT_PROP
! {
!   win_T *wp;
! 
!   for (;;)
!   {
!   wp = tp == curtab ? first_tab_popupwin : tp->tp_first_popupwin;
!   if (wp == NULL)
!   break;
!   popup_close_tabpage(tp, wp->w_id);
!   }
! }
  #endif
  for (idx = 0; idx < SNAP_COUNT; ++idx)
clear_snapshot(tp, idx);
***
*** 3964,3969 
--- 3973,3982 
  tp->tp_prevwin = prevwin;
  tp->tp_firstwin = firstwin;
  tp->tp_lastwin = lastwin;
+ #ifdef FEAT_TEXT_PROP
+ tp->tp_first_popupwin = first_tab_popupwin;
+ first_tab_popupwin = NULL;
+ #endif
  tp->tp_old_Rows = Rows;
  tp->tp_old_Columns = Columns;
  firstwin = NULL;
***
*** 3991,3996 
--- 4004,4012 
  firstwin = tp->tp_firstwin;
  lastwin = tp->tp_lastwin;
  topframe = tp->tp_topframe;
+ #ifdef FEAT_TEXT_PROP
+ first_tab_popupwin = tp->tp_first_popupwin;
+ #endif
  
  /* We would like doing the TabEnter event first, but we don't have a
   * valid current window yet, which may break some commands.
***
*** 6497,6505 
--- 6513,6527 
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
+ #ifdef FEAT_TEXT_PROP
+   curtab->tp_first_popupwin = first_tab_popupwin ;
+ #endif
curtab = tp;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
+ #ifdef FEAT_TEXT_PROP
+   first_tab_popupwin = curtab->tp_first_popupwin;
+ #endif
}
else
goto_tabpage_tp(tp, FALSE, FALSE);
***
*** 6528,6536 
--- 6550,6564 
{
curtab->tp_firstwin = firstwin;
curtab->tp_lastwin = lastwin;
+ #ifdef FEAT_TEXT_PROP
+   curtab->tp_first_popupwin = first_tab_popupwin ;
+ #endif
curtab = save_curtab;
firstwin = curtab->tp_firstwin;
lastwin = curtab->tp_lastwin;
+ #ifdef FEAT_TEXT_PROP
+   first_tab_popupwin = curtab->tp_first_popupwin;
+ #endif
}
else
goto_tabpage_tp(save_curtab, FALSE, FALSE);
*** ../vim-8.1.1398/src/popupwin.c  2019-05-25 19:51:03.776408456 +0200
--- src/popupwin.c  2019-05-26 13:56:33.486438052 +0200
***
*** 177,216 
  popup_close(nr);
  }
  
  void
! popup_close(int nr)
  {
  win_T *wp;
  win_T *prev = NULL;
  
  for (wp = first_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
!   if (wp->w_id == nr)
{
if (prev == NULL)
first_popupwin = wp->w_next;
else
prev->w_next = wp->w_next;
!   break;
}
  
! if (wp == NULL)
! {
!   prev = NULL;
!   for (wp = first_tab_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
!   if (wp->w_id == nr)
!   {
!   if (prev == NULL)
!   first_tab_popupwin = wp->w_next;
!   else
!   prev->w_next = wp->w_next;
!   break;
!   }
! }
! if (wp != NULL)
! {
!   win_free_popup(wp);
!   redraw_all_later(NOT_VALID);
! }
  }
  
  void
--- 177,235 
  popup_close(nr);
  }
  
+ /*
+  * Close a popup window by Window-id.
+  */
  void
! popup_close(int id)
  {
  win_T *wp;
+ tabpage_T *tp;
  win_T *prev = NULL;
  
+ // go through global popups
  for (wp = first_popupwin; wp != NULL; prev = wp, wp = wp->w_next)
!   if (wp->w_id == id)
{
if (prev == NULL)
first_popupwin = wp->w_next;
else
prev->w_next = wp->w_next;
!   win_free_popup(wp);
!   redraw_all_later(NOT_VALID);
!   return;
}
  
! // go through tab-local popups
! FOR_ALL_TABPAGES(tp)
!   popup_close_tabpage(tp, id);
! }
! 
! /*
!  * Close a popup window with Window-id "id" in tabpage "tp".
!  */
! void
! popup_close_tabpage(tabpage_T *tp, int id)
! {
! win_T *wp;
! win_T **root;
! win_T *prev 

Re: Link error in Tiny and Small affter applying patches 8.1.1391 to 1396

2019-05-26 Fir de Conversatie Bram Moolenaar


Tony wrote:

> See below the error (at src/Makefile line 2009) as displayed in the
> Tiny build without GUI but with +xterm_save. Small with Motif GUI
> gives the same error. No error in Normal, Big and Huge with GTK2 GUI.
> 
> link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
>   gcc   -L/usr/local/lib -Wl,--as-needed-o vi objects/arabic.o
> objects/autocmd.o objects/beval.o objects/buffer.o objects/change.o
> objects/blob.o objects/blowfish.o objects/crypt.o objects/crypt_zip.o
> objects/debugger.o objects/dict.o objects/diff.o objects/digraph.o
> objects/edit.o objects/eval.o objects/evalfunc.o objects/ex_cmds.o
> objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o
> objects/ex_getln.o objects/fileio.o objects/findfile.o objects/fold.o
> objects/getchar.o objects/hardcopy.o objects/hashtab.o
> objects/if_cscope.o objects/if_xcmdsrv.o objects/indent.o
> objects/insexpand.o objects/list.o objects/mark.o objects/memline.o
> objects/menu.o objects/misc1.o objects/misc2.o objects/move.o
> objects/mbyte.o objects/normal.o objects/ops.o objects/option.o
> objects/os_unix.o objects/pathdef.o objects/popupmnu.o
> objects/popupwin.o objects/pty.o objects/quickfix.o objects/regexp.o
> objects/screen.o objects/search.o objects/sha256.o objects/sign.o
> objects/spell.o objects/spellfile.o objects/syntax.o objects/tag.o
> objects/term.o objects/terminal.o objects/textprop.o objects/ui.o
> objects/undo.o objects/usercmd.o objects/userfunc.o objects/version.o
> objects/window.o objects/xdiffi.o objects/xemit.o
> objects/xprepare.o objects/xutils.o objects/xhistogram.o
> objects/xpatience.o  objects/charset.o objects/json.o objects/main.o
> objects/memfile.o objects/message.o-lSM -lICE -lXpm -lXt -lX11
> -lXdmcp -lSM -lICE  -lm -ltinfo -lelf  -lgpm -ldl
> /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> objects/screen.o: in function `win_draw_end.constprop.20':
> screen.c:(.text+0x3712): undefined reference to `hl_combine_attr'
> /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> screen.c:(.text+0x3732): undefined reference to `hl_combine_attr'
> /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:
> objects/screen.o: in function `win_line.isra.14':
> screen.c:(.text+0x45f4): undefined reference to `hl_combine_attr'
> collect2: error: ld returned 1 exit status
> link.sh: Linking failed
> make: *** [Makefile:2009: vi] Error 1
> exit status 2

Should be fixed by patch 8.1.1397.

-- 
If you put 7 of the most talented OSS developers in a room for a week
and asked them to fix a bug in a spreadsheet program, in 1 week
you'd have 2 new mail readers and a text-based web browser.

 /// 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/201905261114.x4QBELZE025094%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.


Patch 8.1.1398

2019-05-26 Fir de Conversatie Bram Moolenaar


Patch 8.1.1398
Problem:Duplicate line in MSVC build file.
Solution:   Remove the line. (Ken Takata, closes #4436)
Files:  src/Make_mvc.mak


*** ../vim-8.1.1397/src/Make_mvc.mak2019-05-25 19:51:03.772408479 +0200
--- src/Make_mvc.mak2019-05-26 13:12:52.295554159 +0200
***
*** 744,750 
$(OUTDIR)\pathdef.obj \
$(OUTDIR)\popupmnu.obj \
$(OUTDIR)\popupwin.obj \
-   $(OUTDIR)\popupwin.obj \
$(OUTDIR)\quickfix.obj \
$(OUTDIR)\regexp.obj \
$(OUTDIR)\screen.obj \
--- 744,749 
*** ../vim-8.1.1397/src/version.c   2019-05-25 23:42:10.230781069 +0200
--- src/version.c   2019-05-26 13:13:25.951384640 +0200
***
*** 769,770 
--- 769,772 
  {   /* Add new patch number below this line */
+ /**/
+ 1398,
  /**/

-- 
Due knot trussed yore spell chequer two fined awl miss steaks.

 /// 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/201905261114.x4QBELxO025100%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.


Re: Listener functionality

2019-05-26 Fir de Conversatie Paul Jolly
Hi Bram,

> So do you think that the last callback should in fact be two callbacks?

Thanks for your fix in v8.1.1389 and all the work before that for
listener_add - I've landed initial support for delta-based updates in
govim:

https://github.com/myitcv/govim/commit/ad260329614442948d653c270343cbf0e32d5f01

Will report back if I find any further issues in the wild.


Paul

-- 
-- 
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/CACoUkn4fac3Zpk0bsJVbLkQyXCNwN7fcENv1jV6WWXf%3D8xdRTg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.