GC temp buffers after they are 25th in history
This commit is contained in:
@@ -15,6 +15,7 @@ void New(Window *window, String name = "") {
|
||||
name = GetUniqueBufferName(dir, "new");
|
||||
}
|
||||
WindowOpenBufferView(window, name);
|
||||
RunGCThisFrame = true;
|
||||
}
|
||||
|
||||
void CMD_New() {
|
||||
|
||||
@@ -5,6 +5,7 @@ void JumpTempBuffer(BSet *set, String buffer_name) {
|
||||
set->view = WindowOpenBufferView(set->window, buffer_name);
|
||||
set->buffer = GetBuffer(set->view->active_buffer);
|
||||
set->buffer->temp = true;
|
||||
RunGCThisFrame = true;
|
||||
}
|
||||
|
||||
void AddCommand(Array<Command> *arr, String name, Trigger *trigger, CMDFunction *function) {
|
||||
|
||||
26
src/view.cpp
26
src/view.cpp
@@ -103,6 +103,22 @@ API bool ViewIsCrumb(ViewID view_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
API Int GetViewReferencedInHistoryRating(ViewID view_id) {
|
||||
ForItem (window, Windows) {
|
||||
For (window->goto_redo) if (it.view_id == view_id) return 1;
|
||||
Int i = 0;
|
||||
For (window->goto_history) {
|
||||
i += 1;
|
||||
if (it.view_id == view_id) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool ViewIsActive(ViewID id) {
|
||||
For (Windows) {
|
||||
if (it->active_view == id) {
|
||||
@@ -112,16 +128,16 @@ bool ViewIsActive(ViewID id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
API bool ViewIsReferenced(View *view) {
|
||||
API Int ViewIsReferenced(View *view) {
|
||||
if (view->special) {
|
||||
return true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (ViewIsCrumb(view->id)) {
|
||||
return true;
|
||||
if (ViewIsActive(view->id)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return ViewIsActive(view->id);
|
||||
return GetViewReferencedInHistoryRating(view->id);
|
||||
}
|
||||
|
||||
bool BufferIsReferenced(Buffer *buffer) {
|
||||
|
||||
Reference in New Issue
Block a user