Example #1
0
    def calculate_active_guide(self, view):
        tab_size = indentation.get_tab_size(view)
        cursor = view.sel()[-1].b
        region = view.line(cursor)
        cursorCol = view.rowcol(cursor)[1]
        pos = 0

        for pt in xrange(region.begin(), region.end()):
            ch = view.substr(pt)

            if ch == "\t":
                pos += tab_size - (pos % tab_size)
            elif ch.isspace():
                pos += 1
            else:
                break

        tab = int(pos / tab_size)
        if cursorCol < pos:
            tab = int(cursorCol / tab_size)
        else:
            before = self.check_indent(view, region, False, tab_size)
            after = self.check_indent(view, region, True, tab_size)

            if after <= 0:
                tab -= 1
        return max(tab - 1, 0)
Example #2
0
    def refresh(self, view, clear_cache):
        if clear_cache:
            self.cache = {}

        tab = self.calculate_active_guide(view)
        if clear_cache or tab != self.current_tab:
            self.guides = []
            self.region_start = 0
            self.region_end = 0
            self.current_tab = tab

        visible = view.visible_region()
        self.region = visible
        expanded_region = sublime.Region(max(visible.a - 250, 0), min(visible.b + 5, view.size()))
        visible_regions = view.split_by_newlines(visible)

        tab_size = indentation.get_tab_size(view)

        for region in visible_regions:
            line = view.rowcol(region.a)[0]
            tabs = self.get_indent(region, view, tab_size)
            if self.current_tab < len(tabs):
                pos = region.a + tabs[tab]
                self.guides.append(sublime.Region(pos, pos))

        view.add_regions("IndentGuidesListener", self.guides, "active_guide", sublime.DRAW_EMPTY)
Example #3
0
    def calculate_active_guide(self, view):
        tab_size = indentation.get_tab_size(view)
        cursor = view.sel()[-1].b
        region = view.line(cursor)
        cursorCol = view.rowcol(cursor)[1]
        pos = 0

        for pt in xrange(region.begin(), region.end()):
            ch = view.substr(pt)

            if ch == '\t':
                pos += tab_size - (pos % tab_size)
            elif ch.isspace():
                pos += 1
            else:
                break

        tab = int(pos / tab_size)
        if cursorCol < pos:
            tab = int(cursorCol / tab_size)
        else:
            before = self.check_indent(view, region, False, tab_size)
            after = self.check_indent(view, region, True, tab_size)

            if after <= 0:
                tab -= 1
        return max(tab - 1, 0)
Example #4
0
    def refresh(self, view, clear_cache):
        if clear_cache:
            self.cache = {}

        tab = self.calculate_active_guide(view)
        if clear_cache or tab != self.current_tab:
            self.guides = []
            self.region_start = 0
            self.region_end = 0
            self.current_tab = tab

        visible = view.visible_region()
        self.region = visible
        expanded_region = sublime.Region(max(visible.a - 250, 0),
                                         min(visible.b + 5, view.size()))
        visible_regions = view.split_by_newlines(visible)

        tab_size = indentation.get_tab_size(view)

        for region in visible_regions:
            line = view.rowcol(region.a)[0]
            tabs = self.get_indent(region, view, tab_size)
            if self.current_tab < len(tabs):
                pos = region.a + tabs[tab]
                self.guides.append(sublime.Region(pos, pos))

        view.add_regions('IndentGuidesListener', self.guides, 'active_guide',
                         sublime.DRAW_EMPTY)
	def update_guides(self, view, regions_of_interest, guides):
		tab_size = indentation.get_tab_size(view)
		flush_with_text = int(bool(view.settings().get("indent_guides_flush_with_text")))
		flush_with_gutter = bool(view.settings().get("indent_guides_flush_with_gutter"))
		
		for roi in regions_of_interest:
			pos = 0 
			for pt in xrange(roi.begin(), roi.end()):
				ch = view.substr(pt)
				if pos % tab_size == 0 and (flush_with_gutter or pos != 0):
					loc = pt
					guides.append(sublime.Region(loc,loc))
				if ch == '\t':
						pos += tab_size - (pos % tab_size)
				elif ch.isspace():
						pos += 1 
				else:
						pos+=1
			if flush_with_text and pos % tab_size == 0:
				guides.append(sublime.Region(roi.end(),roi.end()))
		return guides
    def update_guides(self, view, regions_of_interest, guides):
        tab_size = indentation.get_tab_size(view)
        flush_with_text = int(
            bool(view.settings().get("indent_guides_flush_with_text")))
        flush_with_gutter = bool(
            view.settings().get("indent_guides_flush_with_gutter"))

        for roi in regions_of_interest:
            pos = 0
            for pt in xrange(roi.begin(), roi.end()):
                ch = view.substr(pt)
                if pos % tab_size == 0 and (flush_with_gutter or pos != 0):
                    loc = pt
                    guides.append(sublime.Region(loc, loc))
                if ch == '\t':
                    pos += tab_size - (pos % tab_size)
                elif ch.isspace():
                    pos += 1
                else:
                    pos += 1
            if flush_with_text and pos % tab_size == 0:
                guides.append(sublime.Region(roi.end(), roi.end()))
        return guides