feat(SublimeText2.WebPackages): cache packages
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''notes.py
|
||||
|
||||
Used to highlight user-defined "annotations" such as TODO, README, etc.,
|
||||
depending user choice.
|
||||
'''
|
||||
|
||||
import sublime
|
||||
|
||||
from base_linter import BaseLinter
|
||||
|
||||
CONFIG = {
|
||||
'language': 'Annotations'
|
||||
}
|
||||
|
||||
|
||||
class Linter(BaseLinter):
|
||||
DEFAULT_NOTES = ["TODO", "README", "FIXME"]
|
||||
|
||||
def built_in_check(self, view, code, filename):
|
||||
annotations = self.select_annotations(view)
|
||||
regions = []
|
||||
|
||||
for annotation in annotations:
|
||||
regions.extend(self.find_all(code, annotation, view))
|
||||
|
||||
return regions
|
||||
|
||||
def select_annotations(self, view):
|
||||
'''selects the list of annotations to use'''
|
||||
return view.settings().get("annotations", self.DEFAULT_NOTES)
|
||||
|
||||
def extract_annotations(self, code, view, filename):
|
||||
'''extract all lines with annotations'''
|
||||
annotations = self.select_annotations(view)
|
||||
annotation_starts = []
|
||||
|
||||
for annotation in annotations:
|
||||
start = 0
|
||||
length = len(annotation)
|
||||
|
||||
while True:
|
||||
start = code.find(annotation, start)
|
||||
|
||||
if start != -1:
|
||||
end = start + length
|
||||
annotation_starts.append(start)
|
||||
start = end
|
||||
else:
|
||||
break
|
||||
|
||||
regions_with_notes = set([])
|
||||
|
||||
for point in annotation_starts:
|
||||
regions_with_notes.add(view.extract_scope(point))
|
||||
|
||||
regions_with_notes = sorted(list(regions_with_notes))
|
||||
text = []
|
||||
|
||||
for region in regions_with_notes:
|
||||
row, col = view.rowcol(region.begin())
|
||||
text.append("[{0}:{1}]".format(filename, row + 1))
|
||||
text.append(view.substr(region))
|
||||
|
||||
return '\n'.join(text)
|
||||
|
||||
def find_all(self, text, string, view):
|
||||
''' finds all occurences of "string" in "text" and notes their positions
|
||||
as a sublime Region
|
||||
'''
|
||||
found = []
|
||||
length = len(string)
|
||||
start = 0
|
||||
|
||||
while True:
|
||||
start = text.find(string, start)
|
||||
|
||||
if start != -1:
|
||||
end = start + length
|
||||
found.append(sublime.Region(start, end))
|
||||
start = end
|
||||
else:
|
||||
break
|
||||
|
||||
return found
|
Reference in New Issue
Block a user