On 09/13/2012 10:49 PM, Charles Campbell wrote:
> Ben Fritz wrote:
>> On Saturday, September 8, 2012 9:01:47 AM UTC-5, Timothy Madden wrote:
>>> <snip>
>>>
>>>
>>> Is there a way to define a command in my plugin in a way that allows
>>>
>>> user to change the command name in case of conflicts ? And that can also
>>>
>>> be detected by the plugin script, in order to resolve the conflict ?
>>>
>>>
>>>
>>> Also, I have recently forked (copied and modified) an existing plugin,
>>>
>>> and I only made a number of small changes initially, not related to the
>>>
>>> entry points in plugin mappings and commands. But at this moment
>>>
>>> automatically all these mappings and commands conflict with the ones in
>>>
>>> the original plugin (since they are duplicates of the original). Is
>>>
>>> there way to prevent this ? Ideally, is there a way to have the
>>>
>>> <Plug>MapName mappings and the commands depend on the script name ?
>>>
>>> Preferrably in a simple enough way that can be included in the
>>>
>>> documentation, and that user can understand and use.
>>>
>>>
>>>
>>> Thank you,
>>>
>>> Timothy Madden
>> I think the best way is just to make sure your names are likely to be
>> unique. Don't use<Plug>Up, use<Plug>MyNiftyPluginName_Up.
>>
> What I typically do is to provide two names; using Ben's style:
>
> com! MyNiftyPluginName_Up ...
> sil! com Up ...
>
> The first one guarantees that your command will be available with that
> MyNiftyPluginName_Up command. The user can then use cabbr to get
> whatever string s/he wants.
> Example:
>
> com! MyNiftyCmd echo "MyNifyCmd works"
> com Cmd echo "Cmd works the first time"
> sil! Cmd echo "Cmd works the second time!"
> cabbr UserVariantOfCmd MyNiftyCmd
Thank you. I eventually chose a variation like:
command DebuggerBreakpoint echo "Breakpoint command implementation"
if !exists(':Bp')
command Bp DebuggerBreakpoint
endif
In short it is the same approach as with mappings (using commands on two
levels for indirection), except for commands there is no special
construct like <Plug> for mappings.
This way I can document both command names, together with the definition
for the user-space :Bp command, so user can easily create the same
command with a different name in case of conflicts.
I prefer to explicitly check if exists(':Bp') because to my knowledge
silent! still records an error message in the message history. And then
scripts running in batch mode with vim -es that want the plugin will
terminate with an error exit code no matter what script actually does,
because the plugin runs into a name conflict that was never meant to
trigger an error.
Thank you,
Timothy Madden
--
You received this message from the "vim_use" 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
Sunday, September 16, 2012
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment