feat(SublimeText2.WebPackages): cache packages
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# java.py - sublimelint package for checking java files
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import re
|
||||
|
||||
from base_linter import BaseLinter, INPUT_METHOD_FILE
|
||||
|
||||
CONFIG = {
|
||||
'language': 'Java',
|
||||
'executable': 'javac',
|
||||
'test_existence_args': '-version',
|
||||
'input_method': INPUT_METHOD_FILE
|
||||
}
|
||||
|
||||
ERROR_RE = re.compile(r'^(?P<path>.*\.java):(?P<line>\d+): (?P<warning>warning: )?(?:\[\w+\] )?(?P<error>.*)')
|
||||
MARK_RE = re.compile(r'^(?P<mark>\s*)\^$')
|
||||
|
||||
|
||||
class Linter(BaseLinter):
|
||||
def parse_errors(self, view, errors, lines, errorUnderlines,
|
||||
violationUnderlines, warningUnderlines, errorMessages,
|
||||
violationMessages, warningMessages):
|
||||
it = iter(errors.splitlines())
|
||||
|
||||
for line in it:
|
||||
match = re.match(ERROR_RE, line)
|
||||
|
||||
if match:
|
||||
path = os.path.abspath(match.group('path'))
|
||||
|
||||
if path != self.filename:
|
||||
continue
|
||||
|
||||
lineNumber = int(match.group('line'))
|
||||
warning = match.group('warning')
|
||||
error = match.group('error')
|
||||
|
||||
if warning:
|
||||
messages = warningMessages
|
||||
underlines = warningUnderlines
|
||||
else:
|
||||
messages = errorMessages
|
||||
underlines = errorUnderlines
|
||||
|
||||
# Skip forward until we find the marker
|
||||
position = -1
|
||||
|
||||
while True:
|
||||
line = it.next()
|
||||
match = re.match(MARK_RE, line)
|
||||
|
||||
if match:
|
||||
position = len(match.group('mark'))
|
||||
break
|
||||
|
||||
self.add_message(lineNumber, lines, error, messages)
|
||||
self.underline_range(view, lineNumber, position, underlines)
|
Reference in New Issue
Block a user