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");
|
name = GetUniqueBufferName(dir, "new");
|
||||||
}
|
}
|
||||||
WindowOpenBufferView(window, name);
|
WindowOpenBufferView(window, name);
|
||||||
|
RunGCThisFrame = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMD_New() {
|
void CMD_New() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ void JumpTempBuffer(BSet *set, String buffer_name) {
|
|||||||
set->view = WindowOpenBufferView(set->window, buffer_name);
|
set->view = WindowOpenBufferView(set->window, buffer_name);
|
||||||
set->buffer = GetBuffer(set->view->active_buffer);
|
set->buffer = GetBuffer(set->view->active_buffer);
|
||||||
set->buffer->temp = true;
|
set->buffer->temp = true;
|
||||||
|
RunGCThisFrame = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddCommand(Array<Command> *arr, String name, Trigger *trigger, CMDFunction *function) {
|
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;
|
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) {
|
bool ViewIsActive(ViewID id) {
|
||||||
For (Windows) {
|
For (Windows) {
|
||||||
if (it->active_view == id) {
|
if (it->active_view == id) {
|
||||||
@@ -112,16 +128,16 @@ bool ViewIsActive(ViewID id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
API bool ViewIsReferenced(View *view) {
|
API Int ViewIsReferenced(View *view) {
|
||||||
if (view->special) {
|
if (view->special) {
|
||||||
return true;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ViewIsCrumb(view->id)) {
|
if (ViewIsActive(view->id)) {
|
||||||
return true;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ViewIsActive(view->id);
|
return GetViewReferencedInHistoryRating(view->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BufferIsReferenced(Buffer *buffer) {
|
bool BufferIsReferenced(Buffer *buffer) {
|
||||||
|
|||||||
Reference in New Issue
Block a user