summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1333
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1333')
-rw-r--r--data/vim/patches/8.1.1333326
1 files changed, 0 insertions, 326 deletions
diff --git a/data/vim/patches/8.1.1333 b/data/vim/patches/8.1.1333
deleted file mode 100644
index c279b72c5..000000000
--- a/data/vim/patches/8.1.1333
+++ /dev/null
@@ -1,326 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1333
-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.1333
-Problem: Text properties don't always move after changes.
-Solution: Update properties before reporting changes to listeners. Move text
- property when splitting a line.
-Files: src/change.c, src/ex_cmds.c, src/textprop.c,
- src/proto/textprop.pro, src/testdir/test_textprop.vim
-
-
-*** ../vim-8.1.1332/src/change.c 2019-05-14 21:20:32.597441034 +0200
---- src/change.c 2019-05-15 22:14:42.293974215 +0200
-***************
-*** 641,652 ****
- void
- inserted_bytes(linenr_T lnum, colnr_T col, int added UNUSED)
- {
-- changed_bytes(lnum, col);
--
- #ifdef FEAT_TEXT_PROP
- if (curbuf->b_has_textprop && added != 0)
- adjust_prop_columns(lnum, col, added);
- #endif
- }
-
- /*
---- 641,652 ----
- void
- inserted_bytes(linenr_T lnum, colnr_T col, int added UNUSED)
- {
- #ifdef FEAT_TEXT_PROP
- if (curbuf->b_has_textprop && added != 0)
- adjust_prop_columns(lnum, col, added);
- #endif
-+
-+ changed_bytes(lnum, col);
- }
-
- /*
-***************
-*** 2133,2138 ****
---- 2133,2144 ----
- )
- mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L);
- did_append = TRUE;
-+ #ifdef FEAT_TEXT_PROP
-+ if ((State & INSERT) && !(State & VREPLACE_FLAG))
-+ // properties after the split move to the next line
-+ adjust_props_for_split(curwin->w_cursor.lnum, curwin->w_cursor.lnum,
-+ curwin->w_cursor.col + 1, 0);
-+ #endif
- }
- else
- {
-*** ../vim-8.1.1332/src/ex_cmds.c 2019-05-09 15:12:45.168723969 +0200
---- src/ex_cmds.c 2019-05-15 22:02:51.794417449 +0200
-***************
-*** 5728,5734 ****
- last_line = lnum + 1;
- }
- #ifdef FEAT_TEXT_PROP
-! adjust_props_for_split(lnum, plen, 1);
- #endif
- // all line numbers increase
- ++sub_firstlnum;
---- 5728,5734 ----
- last_line = lnum + 1;
- }
- #ifdef FEAT_TEXT_PROP
-! adjust_props_for_split(lnum + 1, lnum, plen, 1);
- #endif
- // all line numbers increase
- ++sub_firstlnum;
-*** ../vim-8.1.1332/src/textprop.c 2019-05-05 16:33:44.490168111 +0200
---- src/textprop.c 2019-05-15 22:42:36.048949732 +0200
-***************
-*** 8,25 ****
- */
-
- /*
-! * Text properties implementation.
-! *
-! * Text properties are attached to the text. They move with the text when
-! * text is inserted/deleted.
-! *
-! * Text properties have a user specified ID number, which can be unique.
-! * Text properties have a type, which can be used to specify highlighting.
- *
- * TODO:
- * - When using 'cursorline' attributes should be merged. (#3912)
- * - Adjust text property column and length when text is inserted/deleted.
- * -> a :substitute with a multi-line match
- * -> search for changed_bytes() from misc1.c
- * - Perhaps we only need TP_FLAG_CONT_NEXT and can drop TP_FLAG_CONT_PREV?
- * - Add an arrray for global_proptypes, to quickly lookup a prop type by ID
---- 8,22 ----
- */
-
- /*
-! * Text properties implementation. See ":help text-properties".
- *
- * TODO:
- * - When using 'cursorline' attributes should be merged. (#3912)
- * - Adjust text property column and length when text is inserted/deleted.
-+ * -> splitting a line can create a zero-length property. Don't highlight it
-+ * and extend it when inserting text.
- * -> a :substitute with a multi-line match
-+ * -> join two lines, also with BS in Insert mode
- * -> search for changed_bytes() from misc1.c
- * - Perhaps we only need TP_FLAG_CONT_NEXT and can drop TP_FLAG_CONT_PREV?
- * - Add an arrray for global_proptypes, to quickly lookup a prop type by ID
-***************
-*** 28,35 ****
- * the index, like DB_MARKED?
- * - Also test line2byte() with many lines, so that ml_updatechunk() is taken
- * into account.
-- * - Add mechanism to keep track of changed lines, so that plugin can update
-- * text properties in these.
- * - Perhaps have a window-local option to disable highlighting from text
- * properties?
- */
---- 25,30 ----
-***************
-*** 1033,1044 ****
-
- /*
- * Adjust text properties for a line that was split in two.
-! * "lnum" is the newly inserted line. The text properties are now on the line
-! * below it. "kept" is the number of bytes kept in the first line, while
- * "deleted" is the number of bytes deleted.
- */
- void
-! adjust_props_for_split(linenr_T lnum, int kept, int deleted)
- {
- char_u *props;
- int count;
---- 1028,1044 ----
-
- /*
- * Adjust text properties for a line that was split in two.
-! * "lnum_props" is the line that has the properties from before the split.
-! * "lnum_top" is the top line.
-! * "kept" is the number of bytes kept in the first line, while
- * "deleted" is the number of bytes deleted.
- */
- void
-! adjust_props_for_split(
-! linenr_T lnum_props,
-! linenr_T lnum_top,
-! int kept,
-! int deleted)
- {
- char_u *props;
- int count;
-***************
-*** 1049,1059 ****
-
- if (!curbuf->b_has_textprop)
- return;
-! count = get_text_props(curbuf, lnum + 1, &props, FALSE);
- ga_init2(&prevprop, sizeof(textprop_T), 10);
- ga_init2(&nextprop, sizeof(textprop_T), 10);
-
-- // Get the text properties, which are at "lnum + 1".
- // Keep the relevant ones in the first line, reducing the length if needed.
- // Copy the ones that include the split to the second line.
- // Move the ones after the split to the second line.
---- 1049,1060 ----
-
- if (!curbuf->b_has_textprop)
- return;
-!
-! // Get the text properties from "lnum_props".
-! count = get_text_props(curbuf, lnum_props, &props, FALSE);
- ga_init2(&prevprop, sizeof(textprop_T), 10);
- ga_init2(&nextprop, sizeof(textprop_T), 10);
-
- // Keep the relevant ones in the first line, reducing the length if needed.
- // Copy the ones that include the split to the second line.
- // Move the ones after the split to the second line.
-***************
-*** 1089,1098 ****
- }
- }
-
-! set_text_props(lnum, prevprop.ga_data, prevprop.ga_len * sizeof(textprop_T));
- ga_clear(&prevprop);
-!
-! set_text_props(lnum + 1, nextprop.ga_data, nextprop.ga_len * sizeof(textprop_T));
- ga_clear(&nextprop);
- }
-
---- 1090,1100 ----
- }
- }
-
-! set_text_props(lnum_top, prevprop.ga_data,
-! prevprop.ga_len * sizeof(textprop_T));
- ga_clear(&prevprop);
-! set_text_props(lnum_top + 1, nextprop.ga_data,
-! nextprop.ga_len * sizeof(textprop_T));
- ga_clear(&nextprop);
- }
-
-*** ../vim-8.1.1332/src/proto/textprop.pro 2019-01-04 23:09:45.249360567 +0100
---- src/proto/textprop.pro 2019-05-15 22:05:41.925276920 +0200
-***************
-*** 14,18 ****
- void clear_global_prop_types(void);
- void clear_buf_prop_types(buf_T *buf);
- void adjust_prop_columns(linenr_T lnum, colnr_T col, int bytes_added);
-! void adjust_props_for_split(linenr_T lnum, int kept, int deleted);
- /* vim: set ft=c : */
---- 14,18 ----
- void clear_global_prop_types(void);
- void clear_buf_prop_types(buf_T *buf);
- void adjust_prop_columns(linenr_T lnum, colnr_T col, int bytes_added);
-! void adjust_props_for_split(linenr_T lnum_props, linenr_T lnum_top, int kept, int deleted);
- /* vim: set ft=c : */
-*** ../vim-8.1.1332/src/testdir/test_textprop.vim 2019-05-05 15:47:37.825923529 +0200
---- src/testdir/test_textprop.vim 2019-05-15 22:41:42.505209936 +0200
-***************
-*** 151,156 ****
---- 151,157 ----
-
- func SetupOneLine()
- call setline(1, 'xonex xtwoxx')
-+ normal gg0
- call AddPropTypes()
- call prop_add(1, 2, {'length': 3, 'id': 11, 'type': 'one'})
- call prop_add(1, 8, {'length': 3, 'id': 12, 'type': 'two'})
-***************
-*** 271,276 ****
---- 272,337 ----
- bwipe!
- set bs&
- endfunc
-+
-+ func Test_prop_open_line()
-+ new
-+
-+ " open new line, props stay in top line
-+ let expected = SetupOneLine() " 'xonex xtwoxx'
-+ exe "normal o\<Esc>"
-+ call assert_equal('xonex xtwoxx', getline(1))
-+ call assert_equal('', getline(2))
-+ call assert_equal(expected, prop_list(1))
-+ call DeletePropTypes()
-+
-+ " move all props to next line
-+ let expected = SetupOneLine() " 'xonex xtwoxx'
-+ exe "normal 0i\<CR>\<Esc>"
-+ call assert_equal('', getline(1))
-+ call assert_equal('xonex xtwoxx', getline(2))
-+ call assert_equal(expected, prop_list(2))
-+ call DeletePropTypes()
-+
-+ " split just before prop, move all props to next line
-+ let expected = SetupOneLine() " 'xonex xtwoxx'
-+ exe "normal 0li\<CR>\<Esc>"
-+ call assert_equal('x', getline(1))
-+ call assert_equal('onex xtwoxx', getline(2))
-+ let expected[0].col -= 1
-+ let expected[1].col -= 1
-+ call assert_equal(expected, prop_list(2))
-+ call DeletePropTypes()
-+
-+ " split inside prop, split first prop
-+ let expected = SetupOneLine() " 'xonex xtwoxx'
-+ exe "normal 0lli\<CR>\<Esc>"
-+ call assert_equal('xo', getline(1))
-+ call assert_equal('nex xtwoxx', getline(2))
-+ let exp_first = [deepcopy(expected[0])]
-+ let exp_first[0].length = 1
-+ call assert_equal(exp_first, prop_list(1))
-+ let expected[0].col = 1
-+ let expected[0].length = 2
-+ let expected[1].col -= 2
-+ call assert_equal(expected, prop_list(2))
-+ call DeletePropTypes()
-+
-+ " split just after first prop, empty prop and second prop move to next line
-+ let expected = SetupOneLine() " 'xonex xtwoxx'
-+ exe "normal 0fea\<CR>\<Esc>"
-+ call assert_equal('xone', getline(1))
-+ call assert_equal('x xtwoxx', getline(2))
-+ let exp_first = expected[0:0]
-+ call assert_equal(exp_first, prop_list(1))
-+ let expected[0].col = 1
-+ let expected[0].length = 0
-+ let expected[1].col -= 4
-+ call assert_equal(expected, prop_list(2))
-+ call DeletePropTypes()
-+
-+ bwipe!
-+ set bs&
-+ endfunc
-
- func Test_prop_clear()
- new
-*** ../vim-8.1.1332/src/version.c 2019-05-14 21:20:32.597441034 +0200
---- src/version.c 2019-05-15 22:44:49.468290481 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1333,
- /**/
-
---
-BLACK KNIGHT: I'm invincible!
-ARTHUR: You're a looney.
- "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 ///