SublimeLinter/sublimelinter/modules/python3.py
python3.py
import re
from base_linter import BaseLinter, INPUT_METHOD_FILE
CONFIG = {
'language': 'Python3',
'executable': 'flake8',
'test_existence_args': ['--version'],
'lint_args': '{filename}',
'input_method': INPUT_METHOD_FILE #Seulement lors de la sauvegarde. INPUT si vous souhaitez vous enregistrer en temps réel_METHOD_TEMP_Make it FILE
}
class Linter(BaseLinter):
def parse_errors(self, view, errors, lines, errorUnderlines, violationUnderlines, warningUnderlines, errorMessages, violationMessages, warningMessages):
for line in errors.splitlines():
match = re.match(r'^.+:(?P<line>\d+):(?P<offset>\d*):?\s+(?P<error>.+)', line)
if match:
error, line, offset = match.group('error'), match.group('line'), match.group('offset')
if not error.startswith('E501'):
self.add_message(int(line), lines, '[{0}: {1}]'.format(offset, error), errorMessages)
E501 est exclu si vous le souhaitez.
cd ~/Library/Application Support/Sublime Text 2/Packages/Python
cp Python.tmLanguage Python3.tmLanguage
Je ne suis pas sûr, j'ai donc changé uniquement le nom et le scopeName en Python3 et source.python3 OK si Python 3 apparaît dans Set Syntax
{
"sublimelinter_executable_map": {
"python3": "Chemin vers flake8 pour python3"
}
}
La solution de contournement consiste à définir la variable d'environnement PYTHONIOENCODING sur utf-8 et LC_CTYPE sur en_US.utf-8. Pour les utilisateurs de Mac, écrivez dans /etc/launchd.conf. Si vous n'aimez pas l'impact, vous pouvez écrire votre propre script de démarrage (équivalent à la commande flake8) et écrire les paramètres d'encodage à l'intérieur. Définissez l'environnement interne de sorte que sys.getdefaultencoding () == 'utf-8', locale.getpreferredencoding (False) == 'utf-8'.
Cela ressemble à un bug dans flake8. flake8 / pyflakes.py: par 319
NUM = STR = ELLIPSIS = ignore
J'ai ajouté BYTES et cela a fonctionné.
Recommended Posts