summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1276
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1276')
-rw-r--r--data/vim/patches/8.1.1276307
1 files changed, 307 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1276 b/data/vim/patches/8.1.1276
new file mode 100644
index 000000000..8f1e0f5b9
--- /dev/null
+++ b/data/vim/patches/8.1.1276
@@ -0,0 +1,307 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.1276
+Problem: Cannot combine text properties with syntax highlighting.
+Solution: Add the "combine" field to prop_type_add(). (closes #4343)
+Files: runtime/doc/eval.txt, runtime/doc/textprop.txt, src/screen.c,
+ src/testprop.c, src/structs.h, src/testdir/test_textprop.vim
+
+
+*** ../vim-8.1.1275/runtime/doc/eval.txt 2019-05-04 17:34:30.653353882 +0200
+--- runtime/doc/eval.txt 2019-05-05 15:09:25.625993792 +0200
+***************
+*** 7166,7171 ****
+--- 7218,7226 ----
+ properties the one with the highest priority
+ will be used; negative values can be used, the
+ default priority is zero
++ combine when TRUE combine the highlight with any
++ syntax highlight; when omitted of FALSE syntax
++ highlight will not be used
+ start_incl when TRUE inserts at the start position will
+ be included in the text property
+ end_incl when TRUE inserts at the end position will be
+*** ../vim-8.1.1275/runtime/doc/textprop.txt 2019-01-01 19:47:17.854123944 +0100
+--- runtime/doc/textprop.txt 2019-05-05 15:45:33.194573955 +0200
+***************
+*** 17,22 ****
+--- 17,23 ----
+
+ 1. Introduction |text-prop-intro|
+ 2. Functions |text-prop-functions|
++ 3. When text changes |text-prop-changes|
+
+
+ {Vi does not have text properties}
+***************
+*** 56,61 ****
+--- 57,66 ----
+ A text property normally has the name of a property type, which defines
+ how to highlight the text. The property type can have these entries:
+ "highlight" name of the highlight group to use
++ "combine" when TRUE the text property highlighting is combined
++ with any syntax highligting, when omitted or FALSE the
++ text property highlighting replaces the syntax
++ highlighting
+ "priority" when properties overlap, the one with the highest
+ priority will be used.
+ "start_incl" when TRUE inserts at the start position will be
+***************
+*** 113,117 ****
+--- 118,142 ----
+ prop_remove({props} [, {lnum} [, {lnum-end}]])
+ remove a text property
+
++ ==============================================================================
++ 3. When text changes *text-prop-changes*
++
++ Vim will do its best to keep the text properties on the text where it was
++ attached. When inserting or deleting text the properties after the change
++ will move accordingly.
++
++ When text is deleted and a text property no longer includes any text, it is
++ deleted. However, a text property that was defined as zero-width will remain,
++ unless the whole line is deleted.
++
++ When using replace mode, the text properties stay on the same character
++ positions, even though the characters themselves change.
++
++
++ When text property columns are not updated ~
++
++ - When setting the line with |setline()| or through an interface, such as Lua,
++ Tcl or Python.
++
+
+ vim:tw=78:ts=8:noet:ft=help:norl:
+*** ../vim-8.1.1275/src/screen.c 2019-04-26 20:32:57.086296530 +0200
+--- src/screen.c 2019-05-05 15:26:39.412312041 +0200
+***************
+*** 3059,3064 ****
+--- 3059,3065 ----
+ int text_props_active = 0;
+ proptype_T *text_prop_type = NULL;
+ int text_prop_attr = 0;
++ int text_prop_combine = FALSE;
+ #endif
+ #ifdef FEAT_SPELL
+ int has_spell = FALSE; /* this buffer has spell checking */
+***************
+*** 4261,4266 ****
+--- 4262,4268 ----
+ text_prop_idxs[text_props_active++] = text_prop_next++;
+
+ text_prop_attr = 0;
++ text_prop_combine = FALSE;
+ if (text_props_active > 0)
+ {
+ // Sort the properties on priority and/or starting last.
+***************
+*** 4273,4289 ****
+ for (pi = 0; pi < text_props_active; ++pi)
+ {
+ int tpi = text_prop_idxs[pi];
+! proptype_T *pt = text_prop_type_by_id(wp->w_buffer, text_props[tpi].tp_type);
+
+ if (pt != NULL)
+ {
+ int pt_attr = syn_id2attr(pt->pt_hl_id);
+
+ text_prop_type = pt;
+! if (text_prop_attr == 0)
+! text_prop_attr = pt_attr;
+! else
+! text_prop_attr = hl_combine_attr(text_prop_attr, pt_attr);
+ }
+ }
+ }
+--- 4275,4291 ----
+ for (pi = 0; pi < text_props_active; ++pi)
+ {
+ int tpi = text_prop_idxs[pi];
+! proptype_T *pt = text_prop_type_by_id(
+! wp->w_buffer, text_props[tpi].tp_type);
+
+ if (pt != NULL)
+ {
+ int pt_attr = syn_id2attr(pt->pt_hl_id);
+
+ text_prop_type = pt;
+! text_prop_attr =
+! hl_combine_attr(text_prop_attr, pt_attr);
+! text_prop_combine = pt->pt_flags & PT_FLAG_COMBINE;
+ }
+ }
+ }
+***************
+*** 4314,4320 ****
+ attr_pri = FALSE;
+ #ifdef FEAT_TEXT_PROP
+ if (text_prop_type != NULL)
+! char_attr = text_prop_attr;
+ else
+ #endif
+ #ifdef FEAT_SYN_HL
+--- 4316,4328 ----
+ attr_pri = FALSE;
+ #ifdef FEAT_TEXT_PROP
+ if (text_prop_type != NULL)
+! {
+! if (text_prop_combine)
+! char_attr = hl_combine_attr(
+! syntax_attr, text_prop_attr);
+! else
+! char_attr = text_prop_attr;
+! }
+ else
+ #endif
+ #ifdef FEAT_SYN_HL
+***************
+*** 4664,4677 ****
+ ptr = line + v;
+
+ # ifdef FEAT_TEXT_PROP
+! // Text properties overrule syntax highlighting.
+! if (text_prop_attr == 0)
+! #endif
+ {
+ if (!attr_pri)
+! char_attr = syntax_attr;
+ else
+! char_attr = hl_combine_attr(syntax_attr, char_attr);
+ }
+ # ifdef FEAT_CONCEAL
+ /* no concealing past the end of the line, it interferes
+--- 4672,4689 ----
+ ptr = line + v;
+
+ # ifdef FEAT_TEXT_PROP
+! // Text properties overrule syntax highlighting or combine.
+! if (text_prop_attr == 0 || text_prop_combine)
+! # endif
+ {
++ int comb_attr = syntax_attr;
++ # ifdef FEAT_TEXT_PROP
++ comb_attr = hl_combine_attr(text_prop_attr, comb_attr);
++ # endif
+ if (!attr_pri)
+! char_attr = comb_attr;
+ else
+! char_attr = hl_combine_attr(comb_attr, char_attr);
+ }
+ # ifdef FEAT_CONCEAL
+ /* no concealing past the end of the line, it interferes
+*** ../vim-8.1.1275/src/structs.h 2019-04-28 18:04:56.058492178 +0200
+--- src/structs.h 2019-05-05 15:13:41.900581185 +0200
+***************
+*** 727,732 ****
+--- 727,733 ----
+
+ #define PT_FLAG_INS_START_INCL 1 // insert at start included in property
+ #define PT_FLAG_INS_END_INCL 2 // insert at end included in property
++ #define PT_FLAG_COMBINE 4 // combine with syntax highlight
+
+ // Sign group
+ typedef struct signgroup_S
+*** ../vim-8.1.1275/src/testdir/test_textprop.vim 2019-03-22 13:20:40.091897268 +0100
+--- src/testdir/test_textprop.vim 2019-05-05 15:42:06.155642710 +0200
+***************
+*** 559,572 ****
+ return
+ endif
+ call writefile([
+! \ "call setline(1, ['One two', 'Numbér 123 änd thœn 4¾7.', '--aa--bb--cc--dd--'])",
+ \ "hi NumberProp ctermfg=blue",
+ \ "hi LongProp ctermbg=yellow",
+ \ "call prop_type_add('number', {'highlight': 'NumberProp'})",
+ \ "call prop_type_add('long', {'highlight': 'LongProp'})",
+ \ "call prop_type_add('start', {'highlight': 'NumberProp', 'start_incl': 1})",
+ \ "call prop_type_add('end', {'highlight': 'NumberProp', 'end_incl': 1})",
+ \ "call prop_type_add('both', {'highlight': 'NumberProp', 'start_incl': 1, 'end_incl': 1})",
+ \ "call prop_add(1, 4, {'end_lnum': 3, 'end_col': 3, 'type': 'long'})",
+ \ "call prop_add(2, 9, {'length': 3, 'type': 'number'})",
+ \ "call prop_add(2, 24, {'length': 4, 'type': 'number'})",
+--- 559,581 ----
+ return
+ endif
+ call writefile([
+! \ "call setline(1, ["
+! \ .. "'One two',"
+! \ .. "'Numbér 123 änd thœn 4¾7.',"
+! \ .. "'--aa--bb--cc--dd--',"
+! \ .. "'// comment with error in it',"
+! \ .. "])",
+ \ "hi NumberProp ctermfg=blue",
+ \ "hi LongProp ctermbg=yellow",
++ \ "hi BackgroundProp ctermbg=lightgrey",
++ \ "hi UnderlineProp cterm=underline",
+ \ "call prop_type_add('number', {'highlight': 'NumberProp'})",
+ \ "call prop_type_add('long', {'highlight': 'LongProp'})",
+ \ "call prop_type_add('start', {'highlight': 'NumberProp', 'start_incl': 1})",
+ \ "call prop_type_add('end', {'highlight': 'NumberProp', 'end_incl': 1})",
+ \ "call prop_type_add('both', {'highlight': 'NumberProp', 'start_incl': 1, 'end_incl': 1})",
++ \ "call prop_type_add('background', {'highlight': 'BackgroundProp', 'combine': 1})",
++ \ "call prop_type_add('error', {'highlight': 'UnderlineProp', 'combine': 1})",
+ \ "call prop_add(1, 4, {'end_lnum': 3, 'end_col': 3, 'type': 'long'})",
+ \ "call prop_add(2, 9, {'length': 3, 'type': 'number'})",
+ \ "call prop_add(2, 24, {'length': 4, 'type': 'number'})",
+***************
+*** 574,586 ****
+ \ "call prop_add(3, 7, {'length': 2, 'type': 'start'})",
+ \ "call prop_add(3, 11, {'length': 2, 'type': 'end'})",
+ \ "call prop_add(3, 15, {'length': 2, 'type': 'both'})",
+ \ "set number",
+ \ "hi clear SpellBad",
+ \ "set spell",
+ \ "normal 3G0llix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>",
+ \ "normal 3G0lli\<BS>\<Esc>",
+ \], 'XtestProp')
+! let buf = RunVimInTerminal('-S XtestProp', {'rows': 6})
+ call VerifyScreenDump(buf, 'Test_textprop_01', {})
+
+ " clean up
+--- 583,599 ----
+ \ "call prop_add(3, 7, {'length': 2, 'type': 'start'})",
+ \ "call prop_add(3, 11, {'length': 2, 'type': 'end'})",
+ \ "call prop_add(3, 15, {'length': 2, 'type': 'both'})",
++ \ "call prop_add(4, 12, {'length': 10, 'type': 'background'})",
++ \ "call prop_add(4, 17, {'length': 5, 'type': 'error'})",
+ \ "set number",
+ \ "hi clear SpellBad",
+ \ "set spell",
++ \ "syn match Comment '//.*'",
++ \ "hi Comment ctermfg=green",
+ \ "normal 3G0llix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>",
+ \ "normal 3G0lli\<BS>\<Esc>",
+ \], 'XtestProp')
+! let buf = RunVimInTerminal('-S XtestProp', {'rows': 7})
+ call VerifyScreenDump(buf, 'Test_textprop_01', {})
+
+ " clean up
+*** ../vim-8.1.1275/src/version.c 2019-05-05 15:02:26.180319795 +0200
+--- src/version.c 2019-05-05 15:46:19.630332122 +0200
+***************
+*** 769,770 ****
+--- 769,772 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1276,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT: Blue.
+BRIDGEKEEPER: Right. Off you go.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@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 ///