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)
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
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
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)))
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)