Re: Patch 8.2.3700

2021-12-02 Fir de Conversatie Bram Moolenaar


John Marriott wrote:

> On 30-Nov-2021 08:13, Bram Moolenaar wrote:
> > Patch 8.2.3700
> > Problem:Text property highlighting continues over breakindent.
> > Solution:   Stop before the end column. (closes #9242)
> > Files:  src/drawline.c, src/testdir/test_textprop.vim,
> >  src/testdir/dumps/Test_prop_linebreak.dump
> >
> >
> After this patch, mingw64 (gcc 11.2.0) throws this warning if 
> FEAT_LINEBREAK is defined but FEAT_PROP_POPUP is not:
> 
> gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
> -DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
> -pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
> -fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD drawline.c -o 
> gobjnative/drawline.o
> drawline.c: In function 'win_line':
> drawline.c:269:17: warning: variable 'in_linebreak' set but not used 
> [-Wunused-but-set-variable]
>    269 | int in_linebreak = FALSE;   // n_extra set for 
> showing linebreak
>    | ^~~~
> 
> 
> After enabling FEAT_PROP_POPUP, the linker then throws this error if 
> FEAT_SPELL, FEAT_QUICKFIX or PROTO are not defined (see memline.c, line 
> #3361):

[...]

That probably is the wrong way to add this define.  Not all combinations
are valid.

I'll adjust the #ifdefs, that should fix the first problem.

-- 
Any resemblance between the above views and those of my employer, my terminal,
or the view out my window are purely coincidental.  Any resemblance between
the above and my own views is non-deterministic.  The question of the
existence of views in the absence of anyone to hold them is left as an
exercise for the reader.  The question of the existence of the reader is left
as an exercise for the second god coefficient.  (A discussion of
non-orthogonal, non-integral polytheism is beyond the scope of this article.)
(Ralph Jennings)

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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/20211202113704.915FA1C070D%40moolenaar.net.


Re: Patch 8.2.3700

2021-12-01 Fir de Conversatie John Marriott


On 30-Nov-2021 08:13, Bram Moolenaar wrote:

Patch 8.2.3700
Problem:Text property highlighting continues over breakindent.
Solution:   Stop before the end column. (closes #9242)
Files:  src/drawline.c, src/testdir/test_textprop.vim,
 src/testdir/dumps/Test_prop_linebreak.dump


After this patch, mingw64 (gcc 11.2.0) throws this warning if 
FEAT_LINEBREAK is defined but FEAT_PROP_POPUP is not:


gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
-DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
-pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
-fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD drawline.c -o 
gobjnative/drawline.o

drawline.c: In function 'win_line':
drawline.c:269:17: warning: variable 'in_linebreak' set but not used 
[-Wunused-but-set-variable]
  269 | int in_linebreak = FALSE;   // n_extra set for 
showing linebreak

  | ^~~~


After enabling FEAT_PROP_POPUP, the linker then throws this error if 
FEAT_SPELL, FEAT_QUICKFIX or PROTO are not defined (see memline.c, line 
#3361):


gcc -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
-DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
-pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
-fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD -Wl,-nxcompat,-dynamicbase 
-municode -s -mwindows -o gvim.exe gobjnative/alloc.o 
gobjnative/arabic.o gobjnative/arglist.o gobjnative/autocmd.o 
gobjnative/beval.o gobjnative/blob.o gobjnative/blowfish.o 
gobjnative/buffer.o gobjnative/bufwrite.o gobjnative/change.o 
gobjnative/charset.o gobjnative/cindent.o gobjnative/clientserver.o 
gobjnative/clipboard.o gobjnative/cmdexpand.o gobjnative/cmdhist.o 
gobjnative/crypt.o gobjnative/crypt_zip.o gobjnative/debugger.o 
gobjnative/dict.o gobjnative/diff.o gobjnative/digraph.o 
gobjnative/drawline.o gobjnative/drawscreen.o gobjnative/edit.o 
gobjnative/eval.o gobjnative/evalbuffer.o gobjnative/evalfunc.o 
gobjnative/evalvars.o gobjnative/evalwindow.o gobjnative/ex_cmds.o 
gobjnative/ex_cmds2.o gobjnative/ex_docmd.o gobjnative/ex_eval.o 
gobjnative/ex_getln.o gobjnative/fileio.o gobjnative/filepath.o 
gobjnative/findfile.o gobjnative/float.o gobjnative/fold.o 
gobjnative/getchar.o gobjnative/gui_xim.o gobjnative/hardcopy.o 
gobjnative/hashtab.o gobjnative/help.o gobjnative/highlight.o 
gobjnative/if_cscope.o gobjnative/indent.o gobjnative/insexpand.o 
gobjnative/json.o gobjnative/list.o gobjnative/locale.o 
gobjnative/main.o gobjnative/map.o gobjnative/mark.o gobjnative/match.o 
gobjnative/memfile.o gobjnative/memline.o gobjnative/menu.o 
gobjnative/message.o gobjnative/misc1.o gobjnative/misc2.o 
gobjnative/mouse.o gobjnative/move.o gobjnative/mbyte.o 
gobjnative/normal.o gobjnative/ops.o gobjnative/option.o 
gobjnative/optionstr.o gobjnative/os_mswin.o gobjnative/os_win32.o 
gobjnative/pathdef.o gobjnative/popupmenu.o gobjnative/popupwin.o 
gobjnative/profiler.o gobjnative/quickfix.o gobjnative/regexp.o 
gobjnative/register.o gobjnative/scriptfile.o gobjnative/screen.o 
gobjnative/search.o gobjnative/session.o gobjnative/sha256.o 
gobjnative/sign.o gobjnative/spell.o gobjnative/spellfile.o 
gobjnative/spellsuggest.o gobjnative/strings.o gobjnative/syntax.o 
gobjnative/tag.o gobjnative/term.o gobjnative/testing.o 
gobjnative/textformat.o gobjnative/textobject.o gobjnative/textprop.o 
gobjnative/time.o gobjnative/typval.o gobjnative/ui.o gobjnative/undo.o 
gobjnative/usercmd.o gobjnative/userfunc.o gobjnative/version.o 
gobjnative/vim9compile.o gobjnative/vim9execute.o 
gobjnative/vim9script.o gobjnative/vim9type.o gobjnative/viminfo.o 
gobjnative/winclip.o gobjnative/window.o gobjnative/os_w32exe.o 
gobjnative/vimres.o gobjnative/xdiffi.o gobjnative/xemit.o 
gobjnative/xprepare.o gobjnative/xutils.o gobjnative/xhistogram.o 
gobjnative/xpatience.o gobjnative/gui.o gobjnative/gui_w32.o 
gobjnative/gui_beval.o -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 
-lcomctl32 -lnetapi32 -lversion -lole32 -luuid


d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 
gobjnative/popupwin.o:popupwin.c:(.text+0xd86): undefined reference to 
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 
gobjnative/popupwin.o:popupwin.c:(.text+0xde5): undefined reference to 
`ml_append_buf'
d:/users/john/documents/software/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 
gobjnative/popupwin.o:popupwin.c:(.text+0xe3a): undefined reference to 
`ml_append_buf'

collect2.exe: error: ld returned 1 exit status
make: *** [Make_cyg_ming.mak:1089: gvim.exe] Error 1


I don't have a patch for this issue.

However, I found that the in_linebreak variable is surrounded by a test 
for F

Patch 8.2.3700

2021-11-29 Fir de Conversatie Bram Moolenaar


Patch 8.2.3700
Problem:Text property highlighting continues over breakindent.
Solution:   Stop before the end column. (closes #9242)
Files:  src/drawline.c, src/testdir/test_textprop.vim,
src/testdir/dumps/Test_prop_linebreak.dump


*** ../vim-8.2.3699/src/drawline.c  2021-11-29 19:18:33.910686983 +
--- src/drawline.c  2021-11-29 21:11:19.168177835 +
***
*** 265,270 
--- 265,273 
  int   c_extra = NUL;  // extra chars, all the same
  int   c_final = NUL;  // final char, mandatory if set
  int   extra_attr = 0; // attributes when n_extra != 0
+ #ifdef FEAT_LINEBREAK
+ int   in_linebreak = FALSE;   // n_extra set for showing 
linebreak
+ #endif
  static char_u *at_end_str = (char_u *)""; // used for p_extra when
// displaying eol at end-of-line
  int   lcs_eol_one = wp->w_lcs_chars.eol; // eol until it's 
been used
***
*** 1419,1425 
int pi;
int bcol = (int)(ptr - line);
  
!   if (n_extra > 0)
--bcol;  // still working on the previous char, e.g. Tab
  
// Check if any active property ends.
--- 1422,1432 
int pi;
int bcol = (int)(ptr - line);
  
!   if (n_extra > 0
! # ifdef FEAT_LINEBREAK
!   && !in_linebreak
! # endif
!   )
--bcol;  // still working on the previous char, e.g. Tab
  
// Check if any active property ends.
***
*** 1437,1442 
--- 1444,1454 
 * (text_props_active - (pi + 1)));
--text_props_active;
--pi;
+ # ifdef FEAT_LINEBREAK
+   // not exactly right but should work in most cases
+   if (in_linebreak && syntax_attr == text_prop_attr)
+   syntax_attr = 0;
+ # endif
}
}
  
***
*** 1705,1710 
--- 1717,1726 
++p_extra;
}
--n_extra;
+ #ifdef FEAT_LINEBREAK
+   if (n_extra <= 0)
+   in_linebreak = FALSE;
+ #endif
}
else
{
***
*** 2030,2035 
--- 2046,2053 
  
c_extra = mb_off > 0 ? MB_FILLER_CHAR : ' ';
c_final = NUL;
+   if (n_extra > 0)
+   in_linebreak = TRUE;
if (VIM_ISWHITE(c))
{
  # ifdef FEAT_CONCEAL
*** ../vim-8.2.3699/src/testdir/test_textprop.vim   2021-11-23 
11:46:12.409848336 +
--- src/testdir/test_textprop.vim   2021-11-29 21:08:51.032354252 +
***
*** 1615,1620 
--- 1615,1638 
bwipe!
  enddef
  
+ func Test_prop_in_linebreak()
+   CheckRunVimInTerminal
+ 
+   let lines =<< trim END
+ set breakindent linebreak breakat+=]
+ call printf('%s]%s', repeat('x', 50), repeat('x', 70))->setline(1)
+ call prop_type_add('test', #{highlight: 'ErrorMsg'})
+ call prop_add(1, 51, #{length: 1, type: 'test'})
+   END
+   call writefile(lines, 'XscriptPropLinebreak')
+   let buf = RunVimInTerminal('-S XscriptPropLinebreak', #{rows: 10})
+   call TermWait(buf)
+   call VerifyScreenDump(buf, 'Test_prop_linebreak', {})
+ 
+   call StopVimInTerminal(buf)
+   call delete('XscriptPropLinebreak')
+ endfunc
+ 
  " Buffer number of 0 should be ignored, as if the parameter wasn't passed.
  def Test_prop_bufnr_zero()
new
*** ../vim-8.2.3699/src/testdir/dumps/Test_prop_linebreak.dump  2021-11-29 
21:12:10.812114279 +
--- src/testdir/dumps/Test_prop_linebreak.dump  2021-11-29 21:08:53.624351253 
+
***
*** 0 
--- 1,10 
+ >x+0&#ff0@49|]+0#ff16#e02| +0#000#ff0@23
+ |x@69| @4
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ | +0#000&@56|1|,|1| @10|A|l@1| 
*** ../vim-8.2.3699/src/version.c   2021-11-29 20:39:06.682101619 +
--- src/version.c   2021-11-29 20:47:37.889603145 +
***
*** 755,756 
--- 755,758 
  {   /* Add new patch number below this line */
+ /**/
+ 3700,
  /**/

-- 
./configure
Checking whether build environment is sane ...
build environment is grinning and holding a spatula.  Guess not.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\help me help AIDS victims -- http://ICCF-Holla