def run(self, edit, range='.', forced=False, address=''): address = ex_range.calculate_address(self.view, address) if address is None: ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) offset = 0 for r in reversed(get_region_by_range(self.view, range, split_visual=True)): if self.view.rowcol(r.begin())[0] + 1 < address: offset += 1 self.view.erase(edit, self.view.full_line(r)) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point( address - offset, 0)).end() + 1 else: dest = 0 if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def run(self, edit, range='.', forced=False, address=''): address = compute_address(self.view, address) if address is None: # FIXME: Should be Invalid Address instead. ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) offset = 0 for r in reversed( get_region_by_range(self.view, range, split_visual=True)): if self.view.rowcol(r.begin())[0] + 1 < address: offset += 1 self.view.erase(edit, self.view.full_line(r)) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address - offset, 0)).end() + 1 else: dest = 0 if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def run(self, forced=False): # todo: restore active line_nr too if forced or not self.view.is_dirty(): self.view.run_command('revert') return elif self.view.is_dirty(): ex_error.display_error(ex_error.ERR_UNSAVED_CHANGES) return ex_error.handle_not_implemented()
def run(self, edit, forced=False): if not forced: if is_any_buffer_dirty(self.view.window()): ex_error.display_error(ex_error.ERR_OTHER_BUFFER_HAS_CHANGES) return w = self.view.window() current_id = self.view.id() for v in w.views(): if v.id() != current_id: if forced and v.is_dirty(): v.set_scratch(True) w.focus_view(v) w.run_command('close')
def on_done(self, cmd_line): if not getattr(self, 'non_interactive', None): update_command_line_history(cmd_line, 'cmdline') else: self.non_interactive = False ex_cmd = parse_command(cmd_line) print ex_cmd if ex_cmd and ex_cmd.parse_errors: ex_error.display_error(ex_cmd.parse_errors[0]) return if ex_cmd and ex_cmd.name: if ex_cmd.range: ex_cmd.args['range'] = ex_cmd.range if ex_cmd.forced: ex_cmd.args['forced'] = ex_cmd.forced self.window.run_command(ex_cmd.command, ex_cmd.args) else: ex_error.display_error(ex_error.ERR_UNKNOWN_COMMAND, cmd_line)
def run(self, edit, range='.', forced=False, address=''): address = ex_range.calculate_address(self.view, address) if address is None: ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address, 0)).end() + 1 else: dest = address if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def run(self, edit, range='.', forced=False, address=''): address = compute_address(self.view, address) if address is None: ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address, 0)).end() + 1 else: dest = address if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))