Tuesday, June 7, 2011

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

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", ...)'

>
>>
>>
>> Marko
>>
>>> Best regards,
>>> Tony.
--
There's nothing wrong with America that a good erection wouldn't cure.
-- David Mairowitz

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