CtrlF Search

This commit is contained in:
Krzosa Karol
2024-08-13 10:52:41 +02:00
parent 26c1180fad
commit 2ada434925
2 changed files with 29 additions and 14 deletions

View File

@@ -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);
}

View File

@@ -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> caret_copy = Copy(GetSystemAllocator(), view->carets);
Array<Caret> 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<Edit> edits = Command_ReplaceEx(scratch, view, L" |");
Command_SelectRangeOneCursor(title.view, GetEndAsRange(title.buffer));
Array<Edit> 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<Edit> edits = Command_ReplaceEx(scratch, view, string);
Command_SelectRangeOneCursor(view, {});
Command_SelectRangeOneCursor(title.view, replace_range);
Array<Edit> edits = Command_ReplaceEx(scratch, title.view, string);
Command_SelectRangeOneCursor(title.view, {});
AdjustCarets(edits, &caret_copy);
}
}