> Prior to pyeval() function I was using 
> 
>     vim.command("let dict=%s" % python_dict)

I used json.dumps and a self-written dumper for this job. The above code is one 
of the worst ideas that could go into your head:

1. (string % tuple_or_value) notation is deprecated.
2. “"%s" % {u'«»': 1}” produces “{u'\xab\xbb': 1}” which can’t be handled in 
vim.
3. “"%s" % {'«»': 1}” produces “{'\xc2\xab\xc2\xbb': 1}” which is not handled 
by vim in a proper way.
4. There is a bunch of other things calling __repl__ on which will result in 
something vim won’t understand, but in this case vim won’t even understand 
simple unicode or utf-8 encoded strings as shown above.

json.dumps minimizes the amount of problematic things (including converting 
keys to strings) and throws an exception if it can’t handle something, my 
interface does this as well. I do not do some type conversions that json.dumps 
does, json.dumps fails to handle some things which I handle 
(“pyeval('vim.current.buffer')” produces same output as “getline(1, '$')”, but 
“json.dumps(vim.current.buffer)” fails).

Self-written dumper was used to get binary data: “json.dumps('\x80')” throws an 
exception while vim is fine with just having it embedded inside a string.

-- 
You received this message from the "vim_dev" 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

Raspunde prin e-mail lui