def _(event): """ Yank the whole line. """ text = '\n'.join( event.current_buffer.document.lines_from_current[:event.arg]) event.cli.clipboard.set_data(ClipboardData(text, SelectionType.LINES))
def _(event): """ Delete line. (Or the following 'n' lines.) """ buffer = event.current_buffer # Split string in before/deleted/after text. lines = buffer.document.lines before = '\n'.join(lines[:buffer.document.cursor_position_row]) deleted = '\n'.join( lines[buffer.document. cursor_position_row:buffer.document.cursor_position_row + event.arg]) after = '\n'.join(lines[buffer.document.cursor_position_row + event.arg:]) # Set new text. if before and after: before = before + '\n' # Set text and cursor position. buffer.document = Document( text=before + after, # Cursor At the start of the first 'after' line, after the leading whitespace. cursor_position=len(before) + len(after) - len(after.lstrip(' '))) # Set clipboard data event.cli.clipboard.set_data( ClipboardData(deleted, SelectionType.LINES))
def _(event): """ Change selection (cut and go to insert mode). """ buffer = event.current_buffer selection_type = buffer.selection_state.type deleted = buffer.cut_selection() event.cli.clipboard.set_data(ClipboardData(deleted, selection_type)) vi_state.input_mode = InputMode.INSERT
def _(event): # TODO: implement 'arg' """ Change current line """ buffer = event.current_buffer # We copy the whole line. data = ClipboardData(buffer.document.current_line, SelectionType.LINES) event.cli.clipboard.set_data(data) # But we delete after the whitespace buffer.cursor_position += buffer.document.get_start_of_line_position(after_whitespace=True) buffer.delete(count=buffer.document.get_end_of_line_position()) vi_state.input_mode = InputMode.INSERT