Tuesday, December 17, 2013

Re: retrieve variable name


On Dec 17, 2013 10:28 AM, "Alexandre Hoïde" <alexandre.hoide@gmail.com> wrote:
>
> On Mon, Dec 16, 2013 at 07:58:40PM +0400, Nikolay Pavlov wrote:
> > On Dec 16, 2013 7:14 PM, "Alexandre Hoïde" <alexandre.hoide@gmail.com>
> > >   No sure what (or how) you mean here. You mean something like the
> > > following ?
> > >
> > > <--
> > > function! Mfun() dict
> > >   echo self.a_key
> > > endfunction
> > >
> > > let Mref = function('Mfun')
> > >
> > > let mdict = { 'a_key': "Hello", 'fun': Mref }
> > > -->
> >
> > Something like this. Though I tend to use anonymous functions (and only
> > them as far as I can), thus would use temporary dict (+1 line for dict
> > definition, -1 line for obtaining funcref: 0 total difference in lines with
> > your code), but this is not necessary: your code also should work fine.
>
>   Ah haaa, that's the part I had trouble understanding yesterday. So,
> just to be 100% sure, like the following ?
>
> <--
> let fun_dict = {}
>
> function! fun_dict.mfun() dict

You can omit "dict" part (being anonymous implies being dictionary). This code is precisely what I meant though.

Note: you *can* omit, not you *must* omit.

>   echo self.a_key
> endfunction
>
> let mdict = { 'a_key': "Hello", 'fun': fun_dict.mfun }
>
> " And then :
> call mdict.fun()
> -->
>
>   Right ?
>
> > Note: it is generally not safe using funcrefs not inside dicts or lists: try
> >
> >     fu Mref()
> >     endfu
> >     let Mref=function('abc')
> > . Unlike plugin functions such funcrefs tend to have more generic names
> > (plugin functions normally look like PluginNameDoSomething or s: which is
> > less likely to produce conflict), so if you happen to choose name F for
> > your funcref in a plugin it is entirely possible it will be occupied by a
> > temporary function named F user of your plugin happened to use for testing
> > something.
> >
> > Using d.Mref is always fine though.
> >
> > Note 2: it is entirely possible to generate a name conflict with function
> > s:Smth without hacking your plugin's or vim source code (but this is not
> > possible for anonymous functions though). Nobody bothers though (not even
> > me: I use anonymous functions for different reasons): if someone wants
> > trouble he shall get it.
>
>   Ok, thanks again for those detailed explanations. I realy appreciate.
>
>   Best regards,
>
> --
>  ___________________
> | $ post_tenebras ↲ |       waouh !
> | GNU        \ /    |      /
> |          -- * --  |     o
> | $ who ↲    / \    |_-- ~_|
> | Alexandre Hoïde   |  _/| |
>  -------------------
>
> --
> --
> 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
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
--
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
 
---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: