summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0573
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0573')
-rw-r--r--data/vim/patches/8.1.0573254
1 files changed, 254 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0573 b/data/vim/patches/8.1.0573
new file mode 100644
index 000000000..42f7ec137
--- /dev/null
+++ b/data/vim/patches/8.1.0573
@@ -0,0 +1,254 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0573
+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.0573
+Problem: Cannot redefine user command without ! in same script
+Solution: Allow redefining user command without ! in same script, like with
+ functions.
+Files: src/ex_docmd.c, src/testdir/test_usercommands.vim,
+ runtime/doc/map.txt
+
+
+*** ../vim-8.1.0572/src/ex_docmd.c 2018-12-02 18:21:46.035419603 +0100
+--- src/ex_docmd.c 2018-12-08 16:01:27.672777222 +0100
+***************
+*** 5869,5877 ****
+
+ if (cmp == 0)
+ {
+! if (!force)
+ {
+! EMSG(_("E174: Command already exists: add ! to replace it"));
+ goto fail;
+ }
+
+--- 5869,5881 ----
+
+ if (cmp == 0)
+ {
+! // Command can be replaced with "command!" and when sourcing the
+! // same script again, but only once.
+! if (!force && (cmd->uc_script_ctx.sc_sid != current_sctx.sc_sid
+! || cmd->uc_script_ctx.sc_seq == current_sctx.sc_seq))
+ {
+! EMSG2(_("E174: Command already exists: add ! to replace it: %s"),
+! name);
+ goto fail;
+ }
+
+*** ../vim-8.1.0572/src/testdir/test_usercommands.vim 2018-12-02 18:21:46.035419603 +0100
+--- src/testdir/test_usercommands.vim 2018-12-08 15:50:37.400773622 +0100
+***************
+*** 90,95 ****
+--- 90,123 ----
+ delcommand Dothat
+ endfunc
+
++ func Test_redefine_on_reload()
++ call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists')
++ call assert_equal(0, exists(':ExistingCommand'))
++ source Xcommandexists
++ call assert_equal(2, exists(':ExistingCommand'))
++ " Redefining a command when reloading a script is OK.
++ source Xcommandexists
++ call assert_equal(2, exists(':ExistingCommand'))
++
++ " But redefining in another script is not OK.
++ call writefile(['command ExistingCommand echo "yes"'], 'Xcommandexists2')
++ call assert_fails('source Xcommandexists2', 'E174:')
++ call delete('Xcommandexists2')
++
++ " And defining twice in one script is not OK.
++ delcommand ExistingCommand
++ call assert_equal(0, exists(':ExistingCommand'))
++ call writefile([
++ \ 'command ExistingCommand echo "yes"',
++ \ 'command ExistingCommand echo "no"',
++ \ ], 'Xcommandexists')
++ call assert_fails('source Xcommandexists', 'E174:')
++ call assert_equal(2, exists(':ExistingCommand'))
++
++ call delete('Xcommandexists')
++ delcommand ExistingCommand
++ endfunc
++
+ func Test_CmdUndefined()
+ call assert_fails('Doit', 'E492:')
+ au CmdUndefined Doit :command Doit let g:didit = 'yes'
+*** ../vim-8.1.0572/runtime/doc/map.txt 2018-05-17 13:41:41.000000000 +0200
+--- runtime/doc/map.txt 2018-12-08 15:54:00.039525767 +0100
+***************
+*** 1220,1225 ****
+--- 1223,1232 ----
+ attributes (see below) are {attr}. If the command
+ already exists, an error is reported, unless a ! is
+ specified, in which case the command is redefined.
++ There is one exception: When sourcing a script again,
++ a command that was previously defined in that script
++ will be silently replaced.
++
+
+ :delc[ommand] {cmd} *:delc* *:delcommand* *E184*
+ Delete the user-defined command {cmd}.
+***************
+*** 1227,1233 ****
+ :comc[lear] *:comc* *:comclear*
+ Delete all user-defined commands.
+
+! Command attributes
+
+ User-defined commands are treated by Vim just like any other Ex commands. They
+ can have arguments, or have a range specified. Arguments are subject to
+--- 1234,1241 ----
+ :comc[lear] *:comc* *:comclear*
+ Delete all user-defined commands.
+
+!
+! Command attributes ~
+
+ User-defined commands are treated by Vim just like any other Ex commands. They
+ can have arguments, or have a range specified. Arguments are subject to
+***************
+*** 1238,1245 ****
+ handling, completion behavior, range handling, and special cases. The
+ attributes are described below, by category.
+
+- Argument handling *E175* *E176* *:command-nargs*
+
+ By default, a user defined command will take no arguments (and an error is
+ reported if any are supplied). However, it is possible to specify that the
+ command can take arguments, using the -nargs attribute. Valid cases are:
+--- 1246,1254 ----
+ handling, completion behavior, range handling, and special cases. The
+ attributes are described below, by category.
+
+
++ Argument handling ~
++ *E175* *E176* *:command-nargs*
+ By default, a user defined command will take no arguments (and an error is
+ reported if any are supplied). However, it is possible to specify that the
+ command can take arguments, using the -nargs attribute. Valid cases are:
+***************
+*** 1268,1275 ****
+ Executing script2.vim will result in "None" being echoed. Not what you
+ intended! Calling a function may be an alternative.
+
+! Completion behavior *:command-completion* *E179*
+! *E180* *E181* *:command-complete*
+ By default, the arguments of user defined commands do not undergo completion.
+ However, by specifying one or the other of the following attributes, argument
+ completion can be enabled:
+--- 1277,1286 ----
+ Executing script2.vim will result in "None" being echoed. Not what you
+ intended! Calling a function may be an alternative.
+
+!
+! Completion behavior ~
+! *:command-completion* *E179* *E180* *E181*
+! *:command-complete*
+ By default, the arguments of user defined commands do not undergo completion.
+ However, by specifying one or the other of the following attributes, argument
+ completion can be enabled:
+***************
+*** 1314,1322 ****
+ Note: That some completion methods might expand environment variables.
+
+
+! Custom completion *:command-completion-custom*
+! *:command-completion-customlist*
+! *E467* *E468*
+ It is possible to define customized completion schemes via the "custom,{func}"
+ or the "customlist,{func}" completion argument. The {func} part should be a
+ function with the following signature: >
+--- 1325,1333 ----
+ Note: That some completion methods might expand environment variables.
+
+
+! Custom completion ~
+! *:command-completion-custom*
+! *:command-completion-customlist* *E467* *E468*
+ It is possible to define customized completion schemes via the "custom,{func}"
+ or the "customlist,{func}" completion argument. The {func} part should be a
+ function with the following signature: >
+***************
+*** 1361,1368 ****
+ This example does not work for file names with spaces!
+
+
+! Range handling *E177* *E178* *:command-range*
+! *:command-count*
+ By default, user-defined commands do not accept a line number range. However,
+ it is possible to specify that the command does take a range (the -range
+ attribute), or that it takes an arbitrary count value, either in the line
+--- 1372,1379 ----
+ This example does not work for file names with spaces!
+
+
+! Range handling ~
+! *E177* *E178* *:command-range* *:command-count*
+ By default, user-defined commands do not accept a line number range. However,
+ it is possible to specify that the command does take a range (the -range
+ attribute), or that it takes an arbitrary count value, either in the line
+***************
+*** 1396,1403 ****
+ -addr=loaded_buffers Range for loaded buffers
+ -addr=windows Range for windows
+ -addr=tabs Range for tab pages
+
+! Special cases *:command-bang* *:command-bar*
+ *:command-register* *:command-buffer*
+ There are some special cases as well:
+
+--- 1407,1417 ----
+ -addr=loaded_buffers Range for loaded buffers
+ -addr=windows Range for windows
+ -addr=tabs Range for tab pages
++ -addr=other other kind of range
++
+
+! Special cases ~
+! *:command-bang* *:command-bar*
+ *:command-register* *:command-buffer*
+ There are some special cases as well:
+
+***************
+*** 1415,1421 ****
+ Note that these arguments can be abbreviated, but that is a deprecated
+ feature. Use the full name for new scripts.
+
+! Replacement text
+
+ The replacement text for a user defined command is scanned for special escape
+ sequences, using <...> notation. Escape sequences are replaced with values
+--- 1429,1436 ----
+ Note that these arguments can be abbreviated, but that is a deprecated
+ feature. Use the full name for new scripts.
+
+!
+! Replacement text ~
+
+ The replacement text for a user defined command is scanned for special escape
+ sequences, using <...> notation. Escape sequences are replaced with values
+*** ../vim-8.1.0572/src/version.c 2018-12-08 14:39:00.055120155 +0100
+--- src/version.c 2018-12-08 15:41:53.560022228 +0100
+***************
+*** 794,795 ****
+--- 794,797 ----
+ { /* Add new patch number below this line */
++ /**/
++ 573,
+ /**/
+
+--
+I have read and understood the above. X________________
+
+ /// 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 ///