def run(self, edit, line_range=None): if not line_range['text_range']: # No-op: user issued ":". return ranges, _ = ex_range.new_calculate_range(self.view, line_range) a, b = ranges[0] # FIXME: This should be handled by the parser. # FIXME: In Vim, 0 seems to equal 1 in ranges. b = b if line_range['text_range'] != '0' else 1 state = State(self.view) # FIXME: In Visual mode, goto line does some weird stuff. if state.mode == MODE_NORMAL: # TODO: push all this code down to ViGoToLine? self.view.window().run_command('_vi_add_to_jump_list') self.view.run_command('_vi_go_to_line', { 'line': b, 'mode': state.mode }) self.view.window().run_command('_vi_add_to_jump_list') self.view.show(self.view.sel()[0]) elif state.mode in (MODE_VISUAL, MODE_VISUAL_LINE) and line_range['right_offset']: # TODO: push all this code down to ViGoToLine? self.view.window().run_command('_vi_add_to_jump_list') # FIXME: The parser fails with '<,'>100. 100 is not the right_offset, but an argument. b = self.view.rowcol(self.view.sel()[0].b - 1)[0] + line_range['right_offset'] + 1 self.view.run_command('_vi_go_to_line', { 'line': b, 'mode': state.mode }) self.view.window().run_command('_vi_add_to_jump_list') self.view.show(self.view.sel()[0])
def run(self, edit, line_range=None): if not line_range['text_range']: # No-op: user issued ":". return ranges, _ = ex_range.new_calculate_range(self.view, line_range) a, b = ranges[0] # FIXME: This should be handled by the parser. # FIXME: In Vim, 0 seems to equal 1 in ranges. b = b if line_range['text_range'] != '0' else 1 state = VintageState(self.view) # FIXME: In Visual mode, goto line does some weird stuff. if state.mode == MODE_NORMAL: # TODO: push all this code down to ViGoToLine? self.view.window().run_command('vi_add_to_jump_list') self.view.run_command('vi_go_to_line', {'line': b, 'mode': MODE_NORMAL}) self.view.window().run_command('vi_add_to_jump_list') self.view.show(self.view.sel()[0]) elif state.mode in (MODE_VISUAL, MODE_VISUAL_LINE) and line_range['right_offset']: # TODO: push all this code down to ViGoToLine? self.view.run_command('vi_enter_normal_mode') self.view.window().run_command('vi_add_to_jump_list') # FIXME: The parser fails with '<,'>100. 100 is not the right_offset, but an argument. b = self.view.rowcol(self.view.sel()[0].b - 1)[0] + line_range['right_offset'] + 1 self.view.run_command('vi_go_to_line', {'line': b, 'mode': MODE_NORMAL}) self.view.window().run_command('vi_add_to_jump_list') self.view.show(self.view.sel()[0]) state.display_partial_command()
def run(self, edit, line_range=None): if not line_range['text_range']: # No-op: user issued ":". return ranges, _ = ex_range.new_calculate_range(self.view, line_range) a, b = ranges[0] self.view.run_command('vi_go_to_line', {'line': b}) self.view.show(self.view.sel()[0])
def run(self, edit, line_range=None): if not line_range['text_range']: # No-op: user issued ":". return ranges, _ = ex_range.new_calculate_range(self.view, line_range) a, b = ranges[0] state = VintageState(self.view) # FIXME: In Visual mode, goto line does some weird stuff. if state.mode == MODE_NORMAL: self.view.run_command('vi_go_to_line', {'line': b, 'mode': MODE_NORMAL}) self.view.show(self.view.sel()[0])
def testCalculateCorrectRange(self): values = ( (new_calculate_range(g_test_view, '0'), [(0, 0)]), (new_calculate_range(g_test_view, '1'), [(1, 1)]), (new_calculate_range(g_test_view, '1,1'), [(1, 1)]), (new_calculate_range(g_test_view, '%,1'), [(1, 538)]), (new_calculate_range(g_test_view, '1,%'), [(1, 538)]), (new_calculate_range(g_test_view, '1+99,160-10'), [(100, 150)]), (new_calculate_range(g_test_view, '/THIRTY/+10,100'), [(40, 100)]), ) select_line(g_test_view, 31) values += ( (new_calculate_range(g_test_view, '10,/THIRTY/'), [(10, 31)]), (new_calculate_range(g_test_view, '10;/THIRTY/'), [(10, 30)]), ) for actual, expected in values: self.assertEquals(actual, expected)