Exemplo n.º 1
0
    def jump(self, is_forward: bool) -> None:
        bvars = self._vim.current.buffer.vars
        if not bvars['deoppet_tabstops']:
            self.nop()
            return

        buf = self._vim.current.buffer
        tabstops = bvars['deoppet_tabstops']
        tabstop = tabstops[bvars['deoppet_mark_pos']]
        mark_begin = buf.api.get_extmark_by_id(self._ns, tabstop['id_begin'])
        if not mark_begin or mark_begin[0] >= len(buf):
            # Overflow
            return
        next_text = buf[mark_begin[0]][mark_begin[1]:]
        self.cursor(mark_begin[0] + 1, mark_begin[1], next_text)

        # Default
        pos = bvars['deoppet_mark_pos']
        if tabstop['default']:
            mark_end = buf.api.get_extmark_by_id(self._ns, tabstop['id_end'])
            debug(self._vim, mark_begin)
            debug(self._vim, mark_end)
            if mark_begin == mark_end:
                self._vim.call('deoppet#util#_select_text', tabstop['default'])

                # Update marks
                buf.api.del_extmark(self._ns, tabstop['id_begin'])
                buf.api.del_extmark(self._ns, tabstop['id_end'])
                tabstop['id_begin'] = buf.api.set_extmark(
                    self._ns, 0, mark_begin[0], mark_begin[1], {})
                tabstop['id_end'] = buf.api.set_extmark(
                    self._ns, 0, mark_begin[0],
                    self._vim.call('col', '.') - 1, {})
                bvars['deoppet_tabstops'] = tabstops
            else:
                # Select begin to end.
                self._vim.call('deoppet#util#_select_pos', mark_end)

        # Update position
        next_pos = pos
        if is_forward:
            next_pos += 1
        else:
            next_pos -= 1
        if next_pos < 0:
            next_pos = len(tabstops) - 1
        elif next_pos >= len(tabstops):
            next_pos = 0
        bvars['deoppet_mark_pos'] = next_pos
Exemplo n.º 2
0
 def debug(self, expr: typing.Any) -> None:
     return debug(self._vim, expr)
Exemplo n.º 3
0
 def debug(self, expr):
     return debug(self._vim, expr)