Hi Alexander,

I think this will cause an error if used with python3 (at least, it fails on my
system). Here's the problem:

  line.decode(encoding)

When vim is compiled against python3, the type of 'line' remains 'str' -- not
'bytes'. There isn't a 'decode' method on strings: it only exists for bytes. I
take this to mean that vim has done the decoding already. If not, there's a bug
in vim.

I've attached a small patch that addresses this issue. Wdyt?

Attachment: cf.patch
Description: Binary data


thanks,
vedant


> On Oct 27, 2016, at 8:15 AM, Alexander Kornienko via cfe-commits 
> <cfe-commits@lists.llvm.org> wrote:
> 
> Author: alexfh
> Date: Thu Oct 27 10:15:23 2016
> New Revision: 285301
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=285301&view=rev
> Log:
> Attempt to make clang-format.py python 3 - compatible.
> 
> Modified:
>    cfe/trunk/tools/clang-format/clang-format.py
> 
> Modified: cfe/trunk/tools/clang-format/clang-format.py
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.py?rev=285301&r1=285300&r2=285301&view=diff
> ==============================================================================
> --- cfe/trunk/tools/clang-format/clang-format.py (original)
> +++ cfe/trunk/tools/clang-format/clang-format.py Thu Oct 27 10:15:23 2016
> @@ -51,7 +51,7 @@ if vim.eval('exists("g:clang_format_fall
> def main():
>   # Get the current text.
>   encoding = vim.eval("&encoding")
> -  buf = [ unicode(line, encoding) for line in vim.current.buffer ]
> +  buf = [ line.decode(encoding) for line in vim.current.buffer ]
>   text = '\n'.join(buf)
> 
>   # Determine range to format.
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to