diff --git a/src/text_editor/commands_window.cpp b/src/text_editor/commands_window.cpp index 798ec9f..aee61e2 100644 --- a/src/text_editor/commands_window.cpp +++ b/src/text_editor/commands_window.cpp @@ -866,6 +866,22 @@ void WindowCommand(Event event, Window *window, View *view) { Command_IdentedNewLine(view); } + if (Ctrl(SDLK_F)) { + BSet title = GetTitleSet(window); + String16 buffer_string = GetString(title.buffer); + ActiveWindow = title.window->id; + + int64_t index = 0; + String16 needle = L"#Search("; + if (Seek(buffer_string, needle, &index)) { + Command_SelectRangeOneCursor(title.view, Rng(index + needle.len + 1)); + } else { + Command_SelectRangeOneCursor(title.view, GetEndAsRange(title.buffer)); + Command_Replace(title.view, L" #Search(\"\")"); + Command_SelectRangeOneCursor(title.view, GetEndAsRange(title.buffer) - 2); + } + } + if (Ctrl(SDLK_S)) { SaveBuffer(view); } diff --git a/src/text_editor/title_bar.cpp b/src/text_editor/title_bar.cpp index a249708..f823f82 100644 --- a/src/text_editor/title_bar.cpp +++ b/src/text_editor/title_bar.cpp @@ -23,36 +23,35 @@ void UpdateDebugBuffer() { } void ReplaceTitleBarData(Window *window) { - View *view = GetView(window->active_view); - Buffer *buffer = GetBuffer(view->active_buffer); - view->scroll.y = 0; + BSet title = GetBSet(window); + title.view->scroll.y = 0; BSet main = GetMainSet(window); Scratch scratch; Caret caret = main.view->carets[0]; XY xy = PosToXY(main.buffer, GetFront(caret)); - Array caret_copy = Copy(GetSystemAllocator(), view->carets); + Array caret_copy = Copy(GetSystemAllocator(), title.view->carets); defer { - Dealloc(&view->carets); - view->carets = caret_copy; + Dealloc(&title.view->carets); + title.view->carets = caret_copy; }; - String16 buffer_string = GetString(buffer); - Range replace_range = {0, buffer->len}; + String16 buffer_string = GetString(title.buffer); + Range replace_range = {0, title.buffer->len}; if (!Seek(buffer_string, L" |", &replace_range.max)) { - Command_SelectRangeOneCursor(view, GetEndAsRange(buffer)); - Array edits = Command_ReplaceEx(scratch, view, L" |"); + Command_SelectRangeOneCursor(title.view, GetEndAsRange(title.buffer)); + Array edits = Command_ReplaceEx(scratch, title.view, L" |"); AdjustCarets(edits, &caret_copy); } String s = Format(scratch, "%.*s:%lld:%lld", FmtString(main.buffer->name), (long long)xy.line + 1ll, (long long)xy.col + 1ll); String16 string = ToString16(scratch, s); - String16 string_to_replace = GetString(buffer, replace_range); + String16 string_to_replace = GetString(title.buffer, replace_range); if (string_to_replace != string) { - Command_SelectRangeOneCursor(view, replace_range); - Array edits = Command_ReplaceEx(scratch, view, string); - Command_SelectRangeOneCursor(view, {}); + Command_SelectRangeOneCursor(title.view, replace_range); + Array edits = Command_ReplaceEx(scratch, title.view, string); + Command_SelectRangeOneCursor(title.view, {}); AdjustCarets(edits, &caret_copy); } } \ No newline at end of file