Пример #1
0
    def run(self, edit, mode=None):
        def f(view, s):
            # We've made a selection with _vi_cc_motion just before this.
            if mode == _MODE_INTERNAL_NORMAL:
                begin = self.view.text_point(self.view.rowcol(s.b)[0], 0)
                self.view.run_command('reindent', {'force_indent': False})
                return sublime.Region(begin)
            return s

        regions_transformer_reversed(self.view, f)
Пример #2
0
    def run(self, edit, count=1, mode=None):
        def f(view, s):
            if mode == _MODE_INTERNAL_NORMAL:

                word, match = next(pairs)
                sign, amount, suffix = match.groups()
                sign = -1 if sign else 1
                suffix = suffix or ''

                new_digit = (sign * int(amount)) - count
                view.replace(edit, word, str(new_digit) + suffix)

                offset = len(str(new_digit))
                # FIXME: Deal with multiple sels as we should.
                if len(view.sel()) == 1:
                    return sublime.Region(word.a + offset - 1)
                # return sublime.Region(word.b - len(suffix) - 1)

            return s

        if mode != _MODE_INTERNAL_NORMAL:
            return

        # TODO: Deal with octal, hex notations.
        # TODO: Improve detection of numbers.
        pairs = list(self.check_words(list(self.view.sel())))
        if not pairs:
            next_nums = self.find_next_num(list(self.view.sel()))
            if not next_nums:
                utils.blink()
                return
            pairs = iter(reversed(list(self.check_words(next_nums))))
        else:
            pairs = iter(reversed(list(self.check_words(self.view.sel()))))

        try:
            xpos = []
            if len(self.view.sel()) > 1:
                rowcols = [self.view.rowcol(s.b - 1) for s in self.view.sel()]
            regions_transformer_reversed(self.view, f)
            if len(self.view.sel()) > 1:
                regs = [
                    sublime.Region(self.view.text_point(*rc)) for rc in rowcols
                ]
                next_nums = self.find_next_num(regs)
                if next_nums:
                    self.view.sel().clear()
                    self.view.sel().add_all(next_nums)
        except StopIteration:
            utils.blink()
            return
Пример #3
0
    def run(self, edit, count=1, mode=None):
        def f(view, s):
            if mode == _MODE_INTERNAL_NORMAL:

                word, match = next(pairs)
                sign, amount, suffix = match.groups()
                sign = -1 if sign else 1
                suffix = suffix or ''

                new_digit = (sign * int(amount)) - count
                view.replace(edit, word, str(new_digit) + suffix)

                offset = len(str(new_digit))
                # FIXME: Deal with multiple sels as we should.
                if len(view.sel()) == 1:
                    return sublime.Region(word.a + offset - 1)
                # return sublime.Region(word.b - len(suffix) - 1)

            return s

        if mode != _MODE_INTERNAL_NORMAL:
            return

        # TODO: Deal with octal, hex notations.
        # TODO: Improve detection of numbers.
        pairs = list(self.check_words(list(self.view.sel())))
        if not pairs:
            next_nums = self.find_next_num(list(self.view.sel()))
            if not next_nums:
                utils.blink()
                return
            pairs = iter(reversed(list(self.check_words(next_nums))))
        else:
            pairs = iter(reversed(list(self.check_words(self.view.sel()))))

        try:
            xpos = []
            if len(self.view.sel()) > 1:
                rowcols = [self.view.rowcol(s.b - 1) for s in self.view.sel()]
            regions_transformer_reversed(self.view, f)
            if len(self.view.sel()) > 1:
                regs = [sublime.Region(self.view.text_point(*rc)) for rc in rowcols]
                next_nums = self.find_next_num(regs)
                if next_nums:
                    self.view.sel().clear()
                    self.view.sel().add_all(next_nums)
        except StopIteration:
            utils.blink()
            return
Пример #4
0
    def run(self, edit, mode=None):
        def f(view, s):
            # We've made a selection with _vi_cc_motion just before this.
            if mode == _MODE_INTERNAL_NORMAL:
                view.erase(edit, s)
                if self.row_at(s.a) != self.row_at(self.view.size()):
                    pt = utils.next_non_white_space_char(view, s.a, white_space=' \t')
                else:
                    pt = utils.next_non_white_space_char(view,
                                                         self.view.line(s.a).a,
                                                         white_space=' \t')

                return sublime.Region(pt, pt)
            return s

        row = [self.view.rowcol(s.begin())[0] for s in self.view.sel()][0]
        regions_transformer_reversed(self.view, f)
        self.view.sel().clear()
        self.view.sel().add(sublime.Region(self.view.text_point(row, 0)))
Пример #5
0
    def run(self, edit, mode=None):
        def f(view, s):
            # We've made a selection with _vi_cc_motion just before this.
            if mode == _MODE_INTERNAL_NORMAL:
                begin = self.view.text_point(self.view.rowcol(s.b)[0], 0)
                view.erase(edit, s)
                return sublime.Region(begin)
            return s

        def ff(view, s):
            # We've made a selection with _vi_cc_motion just before this.
            if mode == _MODE_INTERNAL_NORMAL:
                pt = utils.next_non_white_space_char(view, s.b, white_space=' \t')
                return sublime.Region(pt)
            return s

        prev_rows = [self.view.rowcol(s.a)[0] for s in list(self.view.sel())]
        regions_transformer_reversed(self.view, f)
        if mode == _MODE_INTERNAL_NORMAL:
            self.view.sel().clear()
            self.view.sel().add_all(list(sublime.Region(self.view.text_point(row, 0)) for row in prev_rows))
            self.view.run_command('reindent', {'force_indent': False})
        regions_transformer_reversed(self.view, ff)