Tuesday, June 7, 2011

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

On 07/06/11 15:30, Tony Mechelynck wrote:
> On 07/06/11 15:17, Marko Mahnič wrote:
>> 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:
>> "\""
>> '"'
>
> you forgot to backslash-escape the opening quote of "MyCallback". Third
> edition. Are you blind or what? Or do you need some coffee?

Sorry, it's me. You're right, I'm wrong. The string ends at the second
quote after the first backslash.

>
>>
>> Marko
>>
>
> Best regards,
> Tony.
--
Please try to limit the amount of "this room doesn't have any bazingas"
until you are told that those rooms are "punched out". Once punched
out, we have a right to complain about atrocities, missing bazingas,
and such.
-- N. Meyrowitz

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