GC temp buffers after they are 25th in history

This commit is contained in:
Krzosa Karol
2026-03-22 10:12:36 +01:00
parent cf383c9772
commit 20d71722ea
3 changed files with 23 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ void New(Window *window, String name = "") {
name = GetUniqueBufferName(dir, "new");
}
WindowOpenBufferView(window, name);
RunGCThisFrame = true;
}
void CMD_New() {

View File

@@ -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) {

View File

@@ -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) {