CtrlF Search
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user