def range(self, line, pos, length=-1, near=None, error_type=ERROR, word_re=None):

        start, end = self.full_line(line)

        if pos < 0:
            pos = 0
            length = (end - start) - 1
        elif near is not None:
            near = self.strip_quotes(near)
            length = len(near)
        elif length < 0:
            code = self.code[start:end][pos:]
            match = (word_re or WORD_RE).search(code)

            if match:
                length = len(match.group())
            else:
                length = 1

        pos += start
        region = sublime.Region(pos, pos + length)
        other_type = ERROR if error_type == WARNING else WARNING
        i_offset = 0

        for i, mark in enumerate(self.marks[other_type].copy()):
            if mark.a == region.a and mark.b == region.b:
                if error_type == WARNING:
                    return
                else:
                    self.marks[other_type].pop(i - i_offset)
                    i_offset += 1

        self.marks[error_type].append(region)
Return the addon GUID if <= 64 chars, or its sha256 hash otherwise.
dataset/ETHPy150Open SublimeLinter/SublimeLinter3/lint/highlight.py/Highlight.range--crossover with--dataset/ETHPy150Open mozilla/addons-server/src/olympia/lib/crypto/packaged.py/get_id