diff options
-rw-r--r-- | qbuffers.cpp | 19 | ||||
-rw-r--r-- | qbuffers.h | 9 |
2 files changed, 19 insertions, 9 deletions
diff --git a/qbuffers.cpp b/qbuffers.cpp index 4a45fd4..cbeee0b 100644 --- a/qbuffers.cpp +++ b/qbuffers.cpp @@ -76,7 +76,7 @@ QRegister::set_string(const gchar *str) dirty_check_enabled = false; interface.ssm(SCI_BEGINUNDOACTION); - interface.ssm(SCI_SETTEXT, 0, (sptr_t)str); + interface.ssm(SCI_SETTEXT, 0, (sptr_t)(str ? : "")); interface.ssm(SCI_ENDUNDOACTION); dirty_check_enabled = true; @@ -154,6 +154,8 @@ QRegisterTable::initialize(void) /* search string and status register */ initialize_register("_"); + /* current buffer name and number */ + initialize_register("*"); } void @@ -290,9 +292,24 @@ Ring::edit(const gchar *filename) } } + /* TODO: set integer part */ + qregisters["*"]->set_string(current->filename); + return new_in_ring; } +void +Ring::undo_edit(void) +{ + current->dot = interface.ssm(SCI_GETCURRENTPOS); + + undo.push_var<Buffer*>(current); + current->undo_edit(); + + /* TODO: undo integer part */ + qregisters["*"]->undo_set_string(); +} + #if 0 /* @@ -283,14 +283,7 @@ public: bool is_any_dirty(void); bool edit(const gchar *filename); - inline void - undo_edit(void) - { - current->dot = interface.ssm(SCI_GETCURRENTPOS); - - undo.push_var<Buffer*>(current); - current->undo_edit(); - } + void undo_edit(void); bool save(const gchar *filename); |