On 07. 06. 2011 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č<[email protected]>  wrote:
>>>>>>>> On Jun 7, 8:36 am, Ivan Krasilnikov<[email protected]>  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?

Not blind. No need for coffee. Thanks :)

Let me describe it again:

exec "python DoSomething(\"" . s:SNR . "MyCallback\", ...)"

   "python         ... the opening quote for a Vim string
   DoSomething(\"  ... the opening quote for a Python string
   "               ... the closing quote for the Vim string
   . s:SNR .       ... concatenation
   "Mycallback     ... the opening quote for the 2nd Vim string
   \"              ... the closing quote for the Python string
   , ...)"         ... the closing quote for the 2nd Vim string

It's all there.

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

Reply via email to