Tuesday, June 7, 2011

Re: How to get returned value from python functions in vim scripts ?

On 07. 06. 2011 15:13, Tony Mechelynck wrote:
> On 07/06/11 14:56, Tony Mechelynck wrote:
>> On 07/06/11 13:55, Marko Mahnič wrote:
>>> On 07. 06. 2011 13:39, Tony Mechelynck wrote:
>>>> On 07/06/11 09:31, Marko Mahnič wrote:
>>>>> On Jun 7, 9:26 am, Marko Mahnič<marko.mah...@gmail.com> wrote:
>>>>>> On Jun 7, 8:36 am, Ivan Krasilnikov<inf...@gmail.com> wrote:
>>>>>>
>>>>>> function s:MyCallback(param)
>>>>>> " process
>>>>>> endfunc
>>>>>> python DoSomething(s:SNR . 'MyCallback', ...)
>>>>>
>>>>> This should probably be:
>>>>> exec "python DoSomething(\"" . s:SNR . "MyCallback\", ...)"
>>>>>
>>>>> Marko
>>>>>
>>>>
>>>> This last one cannot be right: as a minimum, it lacks a backslash left
>>>> of "MyCallback".
>>>>
>>>
>>> If you keep the quotes and backsalshes, but change the rest you can
>>> write (
>>> s:SNR -> getcwd(), MyCallback -> /. ) :
>>>
>>> :python import os
>>> :exec "python print os.path.exists(\"" . getcwd() . "/.\")"
>>>
>>> which works for me (Vim 7.3). If getcwd() returns "/home/user", the
>>> generated
>>> Python statement is:
>>>
>>> print os.path.exists("/home/user/.")
>>>
>>> In the above case you would get the Python statement:
>>>
>>> DoSomething("32_MyCallback", ...)
>>
>> no, you would get:
>> E???: invalid expression
>> because
>> >>> exec "python DoSomething(\"" . s:SNR . "MyCallback\", ...)"
>> string ^---------------------------------^
>> something Vim cannot understand ^--------...
>
> P.S. I think you should have written
>
> :exec 'python DoSomething("' . s:SNR . 'MyCallback", ...)'
>

This is equivalent to the above. Note that Vim treats "" and '' strings
differently: single-quote strings are accepted as they are written while
double-quote strings undergo some fancy parsing and escaping. The following
strings are equivalent:
"\""
'"'

Marko

--
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

No comments: