changeset 17980:52f23198af7f v8.1.1986

patch 8.1.1986: more functions can be used as methods Commit: https://github.com/vim/vim/commit/a5a7882ea4a21944924b778208e1d54734891033 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 4 21:57:18 2019 +0200 patch 8.1.1986: more functions can be used as methods Problem: More functions can be used as methods. Solution: Make textprop functions usable as a method.
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 Sep 2019 22:00:03 +0200
parents cc69bca7313b
children cf10d0482ad1
files runtime/doc/textprop.txt src/evalfunc.c src/testdir/test_textprop.vim src/version.c
diffstat 4 files changed, 43 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -1,4 +1,4 @@
-*textprop.txt*  For Vim version 8.1.  Last change: 2019 Aug 25
+*textprop.txt*  For Vim version 8.1.  Last change: 2019 Sep 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -157,6 +157,9 @@ prop_add({lnum}, {col}, {props})
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetLnum()->prop_add(col, props)
+
 
 prop_clear({lnum} [, {lnum-end} [, {props}]])		*prop_clear()*
 		Remove all text properties from line {lnum}.
@@ -168,6 +171,9 @@ prop_clear({lnum} [, {lnum-end} [, {prop
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetLnum()->prop_clear()
+<
 							*prop_find()*
 prop_find({props} [, {direction}])
 		{not implemented yet}
@@ -220,7 +226,9 @@ prop_list({lnum} [, {props}])				*prop_l
 
 		See |text-properties| for information about text properties.
 
-
+		Can also be used as a |method|: >
+			GetLnum()->prop_list()
+<
 						*prop_remove()* *E968*
 prop_remove({props} [, {lnum} [, {lnum-end}]])
 		Remove a matching text property from line {lnum}.  When
@@ -243,6 +251,9 @@ prop_remove({props} [, {lnum} [, {lnum-e
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetProps()->prop_remove()
+
 
 prop_type_add({name}, {props})		*prop_type_add()* *E969* *E970*
 		Add a text property type {name}.  If a property type with this
@@ -267,6 +278,8 @@ prop_type_add({name}, {props})		*prop_ty
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetPropName()->prop_type_add(props)
 
 prop_type_change({name}, {props})			*prop_type_change()*
 		Change properties of an existing text property type.  If a
@@ -275,6 +288,8 @@ prop_type_change({name}, {props})			*pro
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetPropName()->prop_type_change(props)
 
 prop_type_delete({name} [, {props}])			*prop_type_delete()*
 		Remove the text property type {name}.  When text properties
@@ -289,6 +304,8 @@ prop_type_delete({name} [, {props}])			*
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetPropName()->prop_type_delete()
 
 prop_type_get([{name} [, {props}])			*prop_type_get()*
 		Returns the properties of property type {name}.  This is a
@@ -302,6 +319,8 @@ prop_type_get([{name} [, {props}])			*pr
 
 		See |text-properties| for information about text properties.
 
+		Can also be used as a |method|: >
+			GetPropName()->prop_type_get()
 
 prop_type_list([{props}])				*prop_type_list()*
 		Returns a list with all property type names.
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -663,15 +663,15 @@ static funcentry_T global_functions[] =
     {"prompt_setprompt", 2, 2, FEARG_1,	   f_prompt_setprompt},
 #endif
 #ifdef FEAT_TEXT_PROP
-    {"prop_add",	3, 3, 0,	  f_prop_add},
-    {"prop_clear",	1, 3, 0,	  f_prop_clear},
-    {"prop_list",	1, 2, 0,	  f_prop_list},
-    {"prop_remove",	1, 3, 0,	  f_prop_remove},
-    {"prop_type_add",	2, 2, 0,	  f_prop_type_add},
-    {"prop_type_change", 2, 2, 0,	  f_prop_type_change},
-    {"prop_type_delete", 1, 2, 0,	  f_prop_type_delete},
-    {"prop_type_get",	1, 2, 0,	  f_prop_type_get},
-    {"prop_type_list",	0, 1, 0,	  f_prop_type_list},
+    {"prop_add",	3, 3, FEARG_1,	  f_prop_add},
+    {"prop_clear",	1, 3, FEARG_1,	  f_prop_clear},
+    {"prop_list",	1, 2, FEARG_1,	  f_prop_list},
+    {"prop_remove",	1, 3, FEARG_1,	  f_prop_remove},
+    {"prop_type_add",	2, 2, FEARG_1,	  f_prop_type_add},
+    {"prop_type_change", 2, 2, FEARG_1,	  f_prop_type_change},
+    {"prop_type_delete", 1, 2, FEARG_1,	  f_prop_type_delete},
+    {"prop_type_get",	1, 2, FEARG_1,	  f_prop_type_get},
+    {"prop_type_list",	0, 1, FEARG_1,	  f_prop_type_list},
 #endif
     {"pum_getpos",	0, 0, 0,	  f_pum_getpos},
     {"pumvisible",	0, 0, 0,	  f_pumvisible},
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -25,7 +25,7 @@ func Test_proptype_global()
 
   call prop_type_add('one', {})
   call assert_equal(1, len(prop_type_list()))
-  let proptype = prop_type_get('one')
+  let proptype = 'one'->prop_type_get()
   call assert_false(has_key(proptype, 'highlight'))
   call assert_equal(0, proptype['priority'])
   call assert_equal(0, proptype['start_incl'])
@@ -53,7 +53,7 @@ func Test_proptype_buf()
   call assert_equal(1, proptype['end_incl'])
 
   call prop_type_delete('comment', {'bufnr': bufnr})
-  call assert_equal(0, len(prop_type_list({'bufnr': bufnr})))
+  call assert_equal(0, len({'bufnr': bufnr}->prop_type_list()))
 
   call prop_type_add('one', {'bufnr': bufnr})
   let proptype = prop_type_get('one', {'bufnr': bufnr})
@@ -89,7 +89,7 @@ endfunc
 func SetupPropsInFirstLine()
   call setline(1, 'one two three')
   call prop_add(1, 1, {'length': 3, 'id': 11, 'type': 'one'})
-  call prop_add(1, 5, {'length': 3, 'id': 12, 'type': 'two'})
+  eval 1->prop_add(5, {'length': 3, 'id': 12, 'type': 'two'})
   call prop_add(1, 9, {'length': 5, 'id': 13, 'type': 'three'})
   call prop_add(1, 1, {'length': 13, 'id': 14, 'type': 'whole'})
 endfunc
@@ -139,7 +139,7 @@ func Test_prop_remove()
   call assert_equal(props, prop_list(1))
 
   " remove by id
-  call assert_equal(1, prop_remove({'id': 12}, 1))
+  call assert_equal(1, {'id': 12}->prop_remove(1))
   unlet props[2]
   call assert_equal(props, prop_list(1))
 
@@ -344,8 +344,8 @@ func Test_prop_clear()
   call SetupPropsInFirstLine()
   call assert_equal(Get_expected_props(), prop_list(1))
 
-  call prop_clear(1)
-  call assert_equal([], prop_list(1))
+  eval 1->prop_clear()
+  call assert_equal([], 1->prop_list())
 
   call DeletePropTypes()
   bwipe!
@@ -489,7 +489,7 @@ func Setup_three_line_prop()
 endfunc
 
 func Test_prop_multiline()
-  call prop_type_add('comment', {'highlight': 'Directory'})
+  eval 'comment'->prop_type_add({'highlight': 'Directory'})
   new
   call setline(1, ['xxxxxxx', 'yyyyyyyyy', 'zzzzzzzz'])
 
@@ -672,11 +672,13 @@ func Test_textprop_screenshot_various()
 	\ "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('long', {'highlight': 'NumberProp'})",
+	\ "call prop_type_change('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('background', {'highlight': 'NumberProp', 'combine': 1})",
+	\ "eval 'background'->prop_type_change({'highlight': 'BackgroundProp'})",
 	\ "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'})",
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1986,
+/**/
     1985,
 /**/
     1984,