Esempio n. 1
0
 def _coalesce_edit_ranges(self, rng=None):
     rng_ = self._edit_range
     if rng is None or rng_ is ALL:
         rng = None
     elif rng_ is not None:
         rng = union_range(rng, rng_)
     self._edit_range = rng or ALL
     return (self, rng), {}
Esempio n. 2
0
 def coalesce_edit_ranges(rng=None):
     nonlocal edit_range
     rng_ = edit_range
     if rng is None or rng_ is ALL:
         rng = None
     elif rng_ is not None:
         rng = union_range(rng, rng_)
     edit_range = rng or ALL
     return (rng,), {}
Esempio n. 3
0
    def color_text(self, text, minrange=None, timeout=None):
        if text.editedMask() == ak.NSTextStorageEditedAttributes:
            return # we don't care if only attributes changed
        try:
            cancel = text.__cancel_incomplete_highlight
        except AttributeError:
            pass
        else:
            del text.__cancel_incomplete_highlight
            cancelled_range = cancel()
            if minrange is not None:
                minrange = union_range(cancelled_range, minrange)

        store = text.store
        lang = self.syntaxdef
        if lang is None or not lang.wordinfo:
            if not minrange or minrange[0] == 0:
                rng = (0, len(text))
                rem_attribute = store.removeAttribute_range_
                rem_attribute(SYNTAX_TOKEN, rng)
                rem_attribute(SYNTAX_RANGE, rng)
                fg_name = ak.NSForegroundColorAttributeName
                add_attribute = store.addAttribute_value_range_
                add_attribute(fg_name, self.theme.text_color, rng)
            return

        tlen = len(text)
        if not tlen:
            return
        if minrange is not None and self.langs is not None:
            start = max(minrange[0] - 1, 0)
            whitespace = lang.whitespace
            start = max(minrange[0] - 1, 0)
            while start > 0:
                if text[start] in whitespace:
                    break
                start -= 1
            long_range = store.attribute_atIndex_longestEffectiveRange_inRange_
            token, adjrange = long_range(SYNTAX_TOKEN, start, None, (0, tlen))
            #log.debug("%s %s %s -> %s",
            #    minrange, start, tuple(adjrange),
            #    tuple(NSUnionRange(minrange, adjrange)))
            minrange = NSUnionRange(minrange, adjrange)
            offset = minrange[0]
            minend = sum(minrange)
            #log.debug("%s %s %s %s", token, offset, minend, minrange)
        else:
            self.langs = {}
            offset = 0
            minend = tlen

        self.scan(lang, text, offset, minend, tlen, timeout)