mirror of
https://github.com/textmate/textmate.git
synced 2026-01-22 21:27:56 -05:00
Implement ⌃Y for yanking last deletion
This commit is contained in:
committed by
Allan Odgaard
parent
e495a6e9a3
commit
99ab4e6578
@@ -231,6 +231,7 @@ namespace ng
|
||||
set_clipboard(create_simple_clipboard());
|
||||
set_find_clipboard(create_simple_clipboard());
|
||||
set_replace_clipboard(create_simple_clipboard());
|
||||
set_yank_line_clipboard(create_simple_clipboard());
|
||||
}
|
||||
|
||||
editor_t::editor_t () : _buffer(dummy)
|
||||
@@ -736,9 +737,12 @@ namespace ng
|
||||
case kShiftRight: _selections = ng::extend(_buffer, _selections, kSelectionExtendToLineExclLF, layout); break;
|
||||
}
|
||||
|
||||
static action_t const deleteActions[] = { kDeleteBackward, kDeleteForward, kDeleteSubWordLeft, kDeleteSubWordRight, kDeleteWordBackward, kDeleteWordForward, kDeleteToBeginningOfLine, kDeleteToEndOfLine, kDeleteToBeginningOfParagraph, kDeleteToEndOfParagraph };
|
||||
static action_t const deleteActions[] = { kDeleteBackward, kDeleteForward };
|
||||
static action_t const yankActions[] = { kDeleteSubWordLeft, kDeleteSubWordRight, kDeleteWordBackward, kDeleteWordForward, kDeleteToBeginningOfLine, kDeleteToEndOfLine, kDeleteToBeginningOfParagraph, kDeleteToEndOfParagraph };
|
||||
if(oak::contains(beginof(deleteActions), endof(deleteActions), action))
|
||||
action = kDeleteSelection;
|
||||
else if(oak::contains(beginof(yankActions), endof(yankActions), action))
|
||||
action = kCopySelectionToYankPboard;
|
||||
|
||||
switch(action)
|
||||
{
|
||||
@@ -837,6 +841,12 @@ namespace ng
|
||||
}
|
||||
break;
|
||||
|
||||
case kCopySelectionToYankPboard:
|
||||
{
|
||||
yank_line_clipboard()->push_back(copy(_buffer, _selections));
|
||||
}
|
||||
// continue
|
||||
|
||||
case kDeleteSelection:
|
||||
{
|
||||
indent_helper_t indent_helper(*this, _buffer);
|
||||
@@ -894,7 +904,12 @@ namespace ng
|
||||
case kPasteNext: _selections = paste(_buffer, _selections, _snippets, clipboard()->next()); break;
|
||||
case kPasteWithoutReindent: insert(clipboard()->current()->content()); break;
|
||||
|
||||
case kYank: insert("TODO"); break;
|
||||
case kYank:
|
||||
{
|
||||
if(clipboard_t::entry_ptr findEntry = yank_line_clipboard()->current())
|
||||
insert(findEntry->content());
|
||||
}
|
||||
break;
|
||||
|
||||
case kInsertTab:
|
||||
{
|
||||
|
||||
@@ -95,6 +95,7 @@ namespace ng
|
||||
kCopy,
|
||||
kCopySelectionToFindPboard,
|
||||
kCopySelectionToReplacePboard,
|
||||
kCopySelectionToYankPboard,
|
||||
kPaste,
|
||||
kPastePrevious,
|
||||
kPasteNext,
|
||||
@@ -179,13 +180,15 @@ namespace ng
|
||||
// = Clipboards =
|
||||
// ==============
|
||||
|
||||
clipboard_ptr clipboard () const { ASSERT(_clipboard); return _clipboard; }
|
||||
clipboard_ptr find_clipboard () const { ASSERT(_find_clipboard); return _find_clipboard; }
|
||||
clipboard_ptr replace_clipboard () const { ASSERT(_replace_clipboard); return _replace_clipboard; }
|
||||
clipboard_ptr clipboard () const { ASSERT(_clipboard); return _clipboard; }
|
||||
clipboard_ptr find_clipboard () const { ASSERT(_find_clipboard); return _find_clipboard; }
|
||||
clipboard_ptr replace_clipboard () const { ASSERT(_replace_clipboard); return _replace_clipboard; }
|
||||
clipboard_ptr yank_line_clipboard () const { ASSERT(_yank_line_clipboard); return _yank_line_clipboard; }
|
||||
|
||||
void set_clipboard (clipboard_ptr cb) { _clipboard = cb; }
|
||||
void set_find_clipboard (clipboard_ptr cb) { _find_clipboard = cb; }
|
||||
void set_replace_clipboard (clipboard_ptr cb) { _replace_clipboard = cb; }
|
||||
void set_clipboard (clipboard_ptr cb) { _clipboard = cb; }
|
||||
void set_find_clipboard (clipboard_ptr cb) { _find_clipboard = cb; }
|
||||
void set_replace_clipboard (clipboard_ptr cb) { _replace_clipboard = cb; }
|
||||
void set_yank_line_clipboard (clipboard_ptr cb) { _yank_line_clipboard = cb; }
|
||||
|
||||
private:
|
||||
void setup ();
|
||||
@@ -262,6 +265,7 @@ namespace ng
|
||||
clipboard_ptr _clipboard;
|
||||
clipboard_ptr _find_clipboard;
|
||||
clipboard_ptr _replace_clipboard;
|
||||
clipboard_ptr _yank_line_clipboard;
|
||||
|
||||
document::document_ptr _document;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user