Nimbin[12]?Mirrors & Forks / syntastic / syntax_checkers/python/codec.py

syntastic git · master

syntastic vim plugin (fork)

vim fork · first commit 2009-07-10 · last commit 2022-07-10 (4 years ago) · synced 3 days ago · upstream: github.com/vim-syntastic/syntastic

Vim Script 99%
git clone https://git.christianimmanuel.de/mirrors-forks/syntastic.gitwget https://git.christianimmanuel.de/mirrors-forks/syntastic/archive/syntastic.tar.gz
syntax_checkers/python/codec.py 794 B · 31 lines raw
#!/usr/bin/env python

from __future__ import print_function
from sys import argv, exit

import codecs
import re
import os


if len(argv) != 2:
    exit(1)

try:
    with open(argv[1]) as fle:
        text = fle.readlines()

    if text:
        match = re.match(r"#\s*coding\s*:\s*(?P<coding>\w+)", text[0])
        if match:
            text = codecs.lookup(match.groupdict()["coding"]).incrementaldecoder().decode(
                ''.join(text).encode('utf-8')).encode('utf-8')

    if isinstance(text, list):
        text = ''.join(text).encode('utf-8')

    compile(text, argv[1], 'exec', 0, 1)
except SyntaxError as err:
    print('%s:%s:%s: %s' % (err.filename, err.lineno, err.offset, err.msg))
except Exception as err:
    print('%s:%s:%s: %s' % (os.path.abspath(argv[1]), 1, 0, err))