diff --git a/src/text_editor/buffer.cpp b/src/text_editor/buffer.cpp index 61e6569..754dfe4 100644 --- a/src/text_editor/buffer.cpp +++ b/src/text_editor/buffer.cpp @@ -30,7 +30,7 @@ void OffsetAllLinesForward(Buffer *buffer, Int line, Int *_offset) { void UpdateLines(Buffer *buffer, Range range, String16 string) { ProfileFunction(); Array &ls = buffer->line_starts; - Int min_line_number = PosToLine(*buffer, range.min); + Int min_line_number = PosToLine(buffer, range.min); Assert(min_line_number < ls.len); // Update lines remove { @@ -72,7 +72,7 @@ void UpdateLines(Buffer *buffer, Range range, String16 string) { void ValidateLineStarts(Buffer *buffer) { Int line = 0; for (Int i = 0; i < buffer->len; i += 1) { - Int l = PosToLine(*buffer, i); + Int l = PosToLine(buffer, i); Assert(l == line); if (buffer->data[i] == L'\n') line += 1; } @@ -111,7 +111,7 @@ void IKnowWhatImDoing_ReplaceText(Buffer *buffer, Range range, String16 string) } void IKnowWhatImDoing_Append(Buffer *buffer, String16 string) { - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), string); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), string); } void IKnowWhatImDoing_Append(Buffer *buffer, String string) { @@ -123,5 +123,5 @@ void IKnowWhatImDoing_Appendf(Buffer *buffer, const char *fmt, ...) { Scratch scratch(buffer->line_starts.allocator); STRING_FORMAT(scratch, fmt, string); String16 string16 = ToString16(scratch, string); - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), string16); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), string16); } diff --git a/src/text_editor/buffer_fuzzy_search.cpp b/src/text_editor/buffer_fuzzy_search.cpp index 2f5dafd..bb1dc4a 100644 --- a/src/text_editor/buffer_fuzzy_search.cpp +++ b/src/text_editor/buffer_fuzzy_search.cpp @@ -33,7 +33,7 @@ Array FuzzySearchLines(Allocator allocator, Buffer *buffer, Int line_ if (line_max < 0 || line_min > buffer->line_starts.len) return {}; Array ratings = {allocator}; for (Int i = line_min; i < line_max; i += 1) { - String16 s = GetLineStringWithoutNL(*buffer, i); + String16 s = GetLineStringWithoutNL(buffer, i); int64_t rating = FuzzyRate(s, needle); Add(&ratings, {i, rating}); } diff --git a/src/text_editor/buffer_helpers.cpp b/src/text_editor/buffer_helpers.cpp index 31a942b..a07b164 100644 --- a/src/text_editor/buffer_helpers.cpp +++ b/src/text_editor/buffer_helpers.cpp @@ -14,37 +14,37 @@ Range Rng(Int a = 0) { return result; } -String16 GetString(Buffer &buffer, Range range = {0, INT64_MAX}) { - range.min = Clamp(range.min, (Int)0, buffer.len); - range.max = Clamp(range.max, (Int)0, buffer.len); - String16 result = {(wchar_t *)buffer.data + range.min, GetSize(range)}; +String16 GetString(Buffer *buffer, Range range = {0, INT64_MAX}) { + range.min = Clamp(range.min, (Int)0, buffer->len); + range.max = Clamp(range.max, (Int)0, buffer->len); + String16 result = {(wchar_t *)buffer->data + range.min, GetSize(range)}; return result; } -Int Clamp(const Buffer &buffer, Int pos) { - Int result = Clamp(pos, (Int)0, buffer.len); +Int Clamp(const Buffer *buffer, Int pos) { + Int result = Clamp(pos, (Int)0, buffer->len); return result; } -Range Clamp(const Buffer &buffer, Range range) { +Range Clamp(const Buffer *buffer, Range range) { Range result = {}; result.min = Clamp(buffer, range.min); result.max = Clamp(buffer, range.max); return result; } -Range GetEndAsRange(Buffer &buffer) { - Range result = {buffer.len, buffer.len}; +Range GetEndAsRange(Buffer *buffer) { + Range result = {buffer->len, buffer->len}; return result; } -Range GetBeginAsRange(Buffer &buffer) { +Range GetBeginAsRange(Buffer *buffer) { Range result = {0, 0}; return result; } -Range GetRange(Buffer &buffer) { - Range result = {0, buffer.len}; +Range GetRange(Buffer *buffer) { + Range result = {0, buffer->len}; return result; } @@ -113,8 +113,8 @@ Caret SetFrontWithAnchor(Caret caret, Range anchor, Int p) { return caret; } -bool InBounds(const Buffer &buffer, Int pos) { - bool result = pos >= 0 && pos < buffer.len; +bool InBounds(const Buffer *buffer, Int pos) { + bool result = pos >= 0 && pos < buffer->len; return result; } @@ -160,55 +160,55 @@ Range operator-=(Range &range, Int value) { return range; } -Int LastLine(Buffer &buffer) { - Int result = buffer.line_starts.len - 1; +Int LastLine(Buffer *buffer) { + Int result = buffer->line_starts.len - 1; return result; } const Int LAST_LINE = INT64_MAX; -Range GetLineRange(Buffer &buffer, Int line, Int *end_of_buffer = NULL) { - Range result = {buffer.line_starts[line], buffer.len}; - if (line + 1 < buffer.line_starts.len) { - result.max = buffer.line_starts[line + 1]; +Range GetLineRange(Buffer *buffer, Int line, Int *end_of_buffer = NULL) { + Range result = {buffer->line_starts[line], buffer->len}; + if (line + 1 < buffer->line_starts.len) { + result.max = buffer->line_starts[line + 1]; } else if (end_of_buffer) { *end_of_buffer = 1; } return result; } -Range GetLineRangeWithoutNL(Buffer &buffer, Int line) { +Range GetLineRangeWithoutNL(Buffer *buffer, Int line) { Int end_of_buffer = 0; Range line_range = GetLineRange(buffer, line, &end_of_buffer); line_range.max = line_range.max - 1 + end_of_buffer; return line_range; } -String16 GetLineString(Buffer &buffer, Int line, Int *end_of_buffer = NULL) { +String16 GetLineString(Buffer *buffer, Int line, Int *end_of_buffer = NULL) { Range range = GetLineRange(buffer, line, end_of_buffer); String16 string = GetString(buffer, range); return string; } -String16 GetLineStringWithoutNL(Buffer &buffer, Int line) { +String16 GetLineStringWithoutNL(Buffer *buffer, Int line) { Range range = GetLineRangeWithoutNL(buffer, line); String16 string = GetString(buffer, range); return string; } -Int PosToLine(Buffer &buffer, Int pos) { - Add(&buffer.line_starts, buffer.len + 1); +Int PosToLine(Buffer *buffer, Int pos) { + Add(&buffer->line_starts, buffer->len + 1); // binary search Int low = 0; // -2 here because we use 2 indices and combine them into one line range so we // don't want to access last item since that would index past array. - Int high = buffer.line_starts.len - 2; + Int high = buffer->line_starts.len - 2; Int result = 0; while (low <= high) { Int mid = low + (high - low) / 2; - Range range = {buffer.line_starts[mid], buffer.line_starts[mid + 1]}; + Range range = {buffer->line_starts[mid], buffer->line_starts[mid + 1]}; if (pos >= range.min && pos < range.max) { result = mid; break; @@ -221,11 +221,11 @@ Int PosToLine(Buffer &buffer, Int pos) { } } - Pop(&buffer.line_starts); + Pop(&buffer->line_starts); return result; } -XY PosToXY(Buffer &buffer, Int pos) { +XY PosToXY(Buffer *buffer, Int pos) { Int line = PosToLine(buffer, pos); Range line_range = GetLineRange(buffer, line); Int col = pos - line_range.min; @@ -233,23 +233,23 @@ XY PosToXY(Buffer &buffer, Int pos) { return result; } -Int XYToPos(Buffer &buffer, XY xy) { - xy.line = Clamp(xy.line, (Int)0, buffer.line_starts.len - 1); +Int XYToPos(Buffer *buffer, XY xy) { + xy.line = Clamp(xy.line, (Int)0, buffer->line_starts.len - 1); Range line_range = GetLineRange(buffer, xy.line); Int pos = Clamp(xy.col + line_range.min, line_range.min, line_range.max); return pos; } -Int XYToPosWithoutNL(Buffer &buffer, XY xy) { - xy.line = Clamp(xy.line, (Int)0, buffer.line_starts.len - 1); +Int XYToPosWithoutNL(Buffer *buffer, XY xy) { + xy.line = Clamp(xy.line, (Int)0, buffer->line_starts.len - 1); Int end_of_buffer = 0; Range line_range = GetLineRange(buffer, xy.line, &end_of_buffer); Int pos = Clamp(xy.col + line_range.min, line_range.min, line_range.max - 1 + end_of_buffer); return pos; } -Int XYToPosErrorOutOfBounds(Buffer &buffer, XY xy) { - if (xy.line < 0 || xy.line >= buffer.line_starts.len) return -1; +Int XYToPosErrorOutOfBounds(Buffer *buffer, XY xy) { + if (xy.line < 0 || xy.line >= buffer->line_starts.len) return -1; Range line_range = GetLineRange(buffer, xy.line); Int pos = xy.col + line_range.min; if (pos < line_range.min || pos > line_range.max) return -1; @@ -360,29 +360,29 @@ Int GetPrevWordStart(Buffer *buffer, Int pos) { Int GetLineStart(Buffer *buffer, Int pos) { pos = Clamp(pos, (Int)0, buffer->len); - Int line = PosToLine(*buffer, pos); - Range range = GetLineRangeWithoutNL(*buffer, line); + Int line = PosToLine(buffer, pos); + Range range = GetLineRangeWithoutNL(buffer, line); return range.min; } Int GetLineEnd(Buffer *buffer, Int pos) { pos = Clamp(pos, (Int)0, buffer->len); - Int line = PosToLine(*buffer, pos); - Range range = GetLineRangeWithoutNL(*buffer, line); + Int line = PosToLine(buffer, pos); + Range range = GetLineRangeWithoutNL(buffer, line); return range.max; } Int GetFullLineStart(Buffer *buffer, Int pos) { pos = Clamp(pos, (Int)0, buffer->len); - Int line = PosToLine(*buffer, pos); - Range range = GetLineRange(*buffer, line); + Int line = PosToLine(buffer, pos); + Range range = GetLineRange(buffer, line); return range.min; } Int GetFullLineEnd(Buffer *buffer, Int pos) { pos = Clamp(pos, (Int)0, buffer->len); - Int line = PosToLine(*buffer, pos); - Range range = GetLineRange(*buffer, line); + Int line = PosToLine(buffer, pos); + Range range = GetLineRange(buffer, line); return range.max; } @@ -396,9 +396,9 @@ Int GetBufferStart(Buffer *buffer) { Int GetNextEmptyLineStart(Buffer *buffer, Int pos) { Int result = pos; - Int next_line = PosToLine(*buffer, pos) + 1; + Int next_line = PosToLine(buffer, pos) + 1; for (Int line = next_line; line < buffer->line_starts.len; line += 1) { - Range line_range = GetLineRangeWithoutNL(*buffer, line); + Range line_range = GetLineRangeWithoutNL(buffer, line); result = line_range.min; bool whitespace_line = true; @@ -415,9 +415,9 @@ Int GetNextEmptyLineStart(Buffer *buffer, Int pos) { Int GetPrevEmptyLineStart(Buffer *buffer, Int pos) { Int result = pos; - Int next_line = PosToLine(*buffer, pos) - 1; + Int next_line = PosToLine(buffer, pos) - 1; for (Int line = next_line; line >= 0; line -= 1) { - Range line_range = GetLineRangeWithoutNL(*buffer, line); + Range line_range = GetLineRangeWithoutNL(buffer, line); result = line_range.min; bool whitespace_line = true; @@ -521,8 +521,8 @@ Range EncloseFullLine(Buffer *buffer, Int pos) { } Int OffsetByLine(Buffer *buffer, Int pos, Int line_offset) { - XY xy = PosToXY(*buffer, pos); - Int result = XYToPosWithoutNL(*buffer, {xy.col, xy.line + line_offset}); + XY xy = PosToXY(buffer, pos); + Int result = XYToPosWithoutNL(buffer, {xy.col, xy.line + line_offset}); return result; } @@ -537,7 +537,7 @@ Int GetPrevChar(Buffer *buffer, Int pos) { } Int GetLineIndent(Buffer *buffer, Int line) { - String16 string = GetLineStringWithoutNL(*buffer, line); + String16 string = GetLineStringWithoutNL(buffer, line); Int indent = 0; for (Int i = 0; i < string.len; i += 1) { if (IsWhitespace(string.data[i])) { @@ -550,14 +550,14 @@ Int GetLineIndent(Buffer *buffer, Int line) { } Int GetIndentAtPos(Buffer *buffer, Int pos) { - Int line = PosToLine(*buffer, pos); + Int line = PosToLine(buffer, pos); Int result = GetLineIndent(buffer, line); return result; } Range GetIndentRangeAtPos(Buffer *buffer, Int pos) { - Int line = PosToLine(*buffer, pos); + Int line = PosToLine(buffer, pos); Int indent = GetLineIndent(buffer, line); - Range range = GetLineRangeWithoutNL(*buffer, line); + Range range = GetLineRangeWithoutNL(buffer, line); return {range.min, range.min + indent}; } diff --git a/src/text_editor/buffer_history.cpp b/src/text_editor/buffer_history.cpp index 4f6eec4..2872ee6 100644 --- a/src/text_editor/buffer_history.cpp +++ b/src/text_editor/buffer_history.cpp @@ -15,7 +15,7 @@ void SaveHistoryBeforeApplyEdits(Buffer *buffer, Array *stack, Arr // Make reverse edits For(entry->edits) { Range new_range = {it.range.min, it.range.min + it.string.len}; - String16 string = GetString(*buffer, it.range); + String16 string = GetString(buffer, it.range); it.string = Copy(sys_allocator, string); it.range = new_range; } diff --git a/src/text_editor/buffer_test_load.cpp b/src/text_editor/buffer_test_load.cpp index 662670b..6eb9e6a 100644 --- a/src/text_editor/buffer_test_load.cpp +++ b/src/text_editor/buffer_test_load.cpp @@ -1,12 +1,12 @@ void LoadBigText(Buffer *buffer, int size = 5000000) { for (int i = 0; i < size; i += 1) { - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), L"Line number and another meme or something of the sort which is here or there frankly somewhere\n"); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), L"Line number and another meme or something of the sort which is here or there frankly somewhere\n"); } } void LoadBigLine(Buffer *buffer, int size = 5000000) { for (int i = 0; i < size; i += 1) { - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), L"Line number and another meme or something of the sort which is here or there frankly somewhere"); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), L"Line number and another meme or something of the sort which is here or there frankly somewhere"); } } @@ -20,7 +20,7 @@ void LoadTextA(Buffer *buffer) { for (int i = 0; i < 1000; i += 1) { String s = Format(scratch, "line1: %d line2: %d line3: %d line4: %d line5: %d line6: %d line1: %d line2: %d line3: %d line4: %d line5: %d line6: %d\r\n", i, i, i, i, i, i, i, i, i, i, i, i); String16 s16 = ToString16(scratch, s); - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), s16); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), s16); } } @@ -155,5 +155,5 @@ CJK Unified Ideographs 一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘 丙 业 丛 东 丝 丞 丟 丠 両 丢 丣 两 严 並 丧 丨 丩 个 丫 丬 中 丮 丯 丰 丱 串 丳 临 丵 丶 丷 丸 丹 为 主 丼 丽 举 丿 乀 乁 乂 乃 乄 久 乆 乇 么 义 乊 之 乌 乍 乎 乏 乐 乑 乒 乓 乔 乕 乖 乗 乘 乙 乚 乛 乜 九 乞 也 习 乡 乢 乣 乤 乥 书 乧 乨 乩 乪 乫 乬 乭 乮 乯 买 乱 乲 乳 乴 乵 乶 乷 乸 乹 乺 乻 乼 乽 乾 乿 ... Hangul Syllables 가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘 같 갚 갛 개 객 갞 갟 갠 갡 갢 갣 갤 갥 갦 갧 갨 갩 갪 갫 갬 갭 갮 갯 갰 갱 갲 갳 갴 갵 갶 갷 갸 갹 갺 갻 갼 갽 갾 갿 걀 걁 걂 걃 걄 걅 걆 걇 걈 걉 걊 걋 걌 걍 걎 걏 걐 걑 걒 걓 걔 걕 걖 걗 걘 걙 걚 걛 걜 걝 걞 걟 걠 걡 걢 걣 걤 걥 걦 걧 걨 걩 걪 걫 걬 걭 걮 걯 거 걱 걲 걳 건 걵 걶 걷 걸 걹 걺 걻 걼 걽 걾 걿 ...)==="; - IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), ToString16(scratch, text)); + IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(buffer), ToString16(scratch, text)); } \ No newline at end of file diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index cc69acc..fefe942 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -119,7 +119,7 @@ Int ScreenSpaceToBufferPos(Window *window, View *view, Buffer *buffer, Vec2I mou Vec2I mworld = mouse - window->document_rect.min + view->scroll; Vec2I pos = mworld / Vec2I{FontCharSpacing, FontLineSpacing}; XY xy = {(Int)(pos.x), (Int)(pos.y)}; - Int result = XYToPosWithoutNL(*buffer, xy); + Int result = XYToPosWithoutNL(buffer, xy); return result; } @@ -127,7 +127,7 @@ Int ScreenSpaceToBufferPosErrorOutOfBounds(Window *window, View *view, Buffer *b Vec2I mworld = mouse - window->document_rect.min + view->scroll; Vec2I pos = mworld / Vec2I{FontCharSpacing, FontLineSpacing}; XY xy = {(Int)(pos.x), (Int)(pos.y)}; - Int result = XYToPosErrorOutOfBounds(*buffer, xy); + Int result = XYToPosErrorOutOfBounds(buffer, xy); return result; } @@ -143,7 +143,7 @@ void MouseExecWord(Event event) { if (InBounds(active.view->carets[0].range, p)) { enclose = active.view->carets[0].range; } - String16 string = GetString(*active.buffer, enclose); + String16 string = GetString(active.buffer, enclose); Command_EvalLua(active.view, string); } } @@ -180,7 +180,7 @@ void MouseLoadWord(Event event) { if (p != -1) { Range enclose = EncloseLoadWord(active.buffer, p); if (InBounds(active.view->carets[0].range, p)) enclose = active.view->carets[0].range; - String16 string = GetString(*active.buffer, enclose); + String16 string = GetString(active.buffer, enclose); active.view->carets.len = 1; active.view->carets[0] = MakeCaret(p); @@ -332,7 +332,7 @@ bool GlobalCommand(Event event) { IterRemove(active.view->carets) { IterRemovePrepare(active.view->carets); if (InBounds(it.range, p)) { - String16 string = GetString(*active.buffer, it.range); + String16 string = GetString(active.buffer, it.range); SaveStringInClipboard(string); remove_item = true; @@ -342,9 +342,9 @@ bool GlobalCommand(Event event) { if (active.view->carets.len == 0) Add(&active.view->carets, MakeCaret(saved_front)); if (saved_front == -1) { - Int line = PosToLine(*active.buffer, p); - Range line_range = GetLineRangeWithoutNL(*active.buffer, line); - String16 string = GetString(*active.buffer, line_range); + Int line = PosToLine(active.buffer, p); + Range line_range = GetLineRangeWithoutNL(active.buffer, line); + String16 string = GetString(active.buffer, line_range); SaveStringInClipboard(string); } } @@ -484,7 +484,7 @@ void Command_Append(View *view, String16 string, bool scroll_to_end_if_cursor_on bool scroll_to_end = false; if (scroll_to_end_if_cursor_on_last_line) { - Int line = PosToLine(*buffer, GetFront(view->carets[0])); + Int line = PosToLine(buffer, GetFront(view->carets[0])); if (line == buffer->line_starts.len - 1) scroll_to_end = true; } @@ -497,12 +497,12 @@ void Command_Append(View *view, String16 string, bool scroll_to_end_if_cursor_on } }; - Command_SelectRangeOneCursor(view, GetEndAsRange(*buffer)); + Command_SelectRangeOneCursor(view, GetEndAsRange(buffer)); Command_Replace(view, string); Command_Replace(view, L"\n"); if (scroll_to_end) { - view->carets[0] = MakeCaret(GetEndAsRange(*buffer).min); + view->carets[0] = MakeCaret(GetEndAsRange(buffer).min); } } diff --git a/src/text_editor/commands_clipboard.cpp b/src/text_editor/commands_clipboard.cpp index db7eb20..d681849 100644 --- a/src/text_editor/commands_clipboard.cpp +++ b/src/text_editor/commands_clipboard.cpp @@ -35,15 +35,15 @@ void Command_Copy(View *view) { // First, if there is no selection - select the entire line For(view->carets) { if (GetSize(it.range) == 0) { - Int line = PosToLine(*buffer, it.range.min); - Range line_range = GetLineRange(*buffer, line); + Int line = PosToLine(buffer, it.range.min); + Range line_range = GetLineRange(buffer, line); it.range = line_range; } } Array caret_strings = {sys_allocator}; For(view->carets) { - String16 string = GetString(*buffer, it.range); + String16 string = GetString(buffer, it.range); String16 copy = Copy(sys_allocator, string); Add(&SavedClipboardCarets, copy); } diff --git a/src/text_editor/commands_window.cpp b/src/text_editor/commands_window.cpp index 27345ae..869af96 100644 --- a/src/text_editor/commands_window.cpp +++ b/src/text_editor/commands_window.cpp @@ -8,16 +8,16 @@ void Command_MoveCursorsByPageSize(Window *window, int direction, bool shift = f if (direction == DIR_UP) y = -y; For(set.view->carets) { - XY xy = PosToXY(*set.buffer, GetFront(it)); + XY xy = PosToXY(set.buffer, GetFront(it)); if (direction == DIR_DOWN && xy.line == set.buffer->line_starts.len - 1) { - Range line_range = GetLineRange(*set.buffer, xy.line); + Range line_range = GetLineRange(set.buffer, xy.line); xy.col = line_range.max - line_range.min; } else if (direction == DIR_UP && xy.line == 0) { xy.col = 0; } xy.line += y; - Int pos = XYToPos(*set.buffer, xy); + Int pos = XYToPos(set.buffer, xy); if (shift) { it = SetFront(it, pos); } else { @@ -166,10 +166,10 @@ void Command_MoveLine(View *view, int direction) { MergeCarets(view); Array saved_xy = {scratch}; For(view->carets) { - Add(&saved_xy, {PosToXY(*buffer, GetFront(it)), PosToXY(*buffer, GetBack(it))}); + Add(&saved_xy, {PosToXY(buffer, GetFront(it)), PosToXY(buffer, GetBack(it))}); Range lines_to_move_range = {GetFullLineStart(buffer, it.range.min), GetFullLineEnd(buffer, it.range.max)}; - String16 string = GetString(*buffer, lines_to_move_range); + String16 string = GetString(buffer, lines_to_move_range); string = Copy(scratch, string); AddEdit(&edits, lines_to_move_range, {}); @@ -193,8 +193,8 @@ void Command_MoveLine(View *view, int direction) { XYPair &xypair = saved_xy[i]; xypair.front.line += line_offset; xypair.back.line += line_offset; - Int front = XYToPos(*buffer, xypair.front); - Int back = XYToPos(*buffer, xypair.back); + Int front = XYToPos(buffer, xypair.front); + Int back = XYToPos(buffer, xypair.back); caret = MakeCaret(front, back); } @@ -225,9 +225,9 @@ void Command_DuplicateLine(View *view, int direction) { Array edits = {scratch}; For(view->carets) { - Int line = PosToLine(*buffer, it.range.min); - Range range = GetLineRange(*buffer, line); - String16 string = Copy(scratch, GetString(*buffer, range)); + Int line = PosToLine(buffer, it.range.min); + Range range = GetLineRange(buffer, line); + String16 string = Copy(scratch, GetString(buffer, range)); Int pos = direction == DIR_UP ? range.min : range.max; AddEdit(&edits, Rng(pos), string); } @@ -269,8 +269,8 @@ Array GetSelectedLinesSorted(Allocator allocator, View *view) { Array result = {allocator}; For(caret_copy) { - Int min_line = PosToLine(*buffer, it.range.min); - Int max_line = PosToLine(*buffer, it.range.max); + Int min_line = PosToLine(buffer, it.range.min); + Int max_line = PosToLine(buffer, it.range.max); Range line_range = {min_line, max_line + 1}; if (result.len == 0) { @@ -298,13 +298,13 @@ void Command_IndentSelectedLines(View *view, bool shift = false) { Array line_ranges_to_indent = GetSelectedLinesSorted(scratch, view); For(line_ranges_to_indent) { for (Int i = it.min; i < it.max; i += 1) { - Range pos_range_of_line = GetLineRange(*buffer, i); + Range pos_range_of_line = GetLineRange(buffer, i); if (!shift) { String16 whitespace_string = {L" ", StyleIndentSize}; AddEdit(&edits, {pos_range_of_line.min, pos_range_of_line.min}, whitespace_string); } else { - String16 string = GetString(*buffer, pos_range_of_line); + String16 string = GetString(buffer, pos_range_of_line); Int whitespace_len = 0; for (Int i = 0; i < StyleIndentSize && i < string.len && string.data[i] == ' '; i += 1) { whitespace_len += 1; @@ -332,7 +332,7 @@ void Command_TrimTrailingWhitespace(View *view, bool dont_trim_lines_with_cursor Int range_index = FindRangeByPos(lines_to_skip_triming, i); if (range_index != -1) continue; - Range range = GetLineRangeWithoutNL(*buffer, i); + Range range = GetLineRangeWithoutNL(buffer, i); Int whitespace_end = range.max; for (; whitespace_end > range.min; whitespace_end -= 1) { U16 w = buffer->data[whitespace_end - 1]; @@ -362,7 +362,7 @@ void Command_ConvertLineEndings(View *view, bool dont_trim_lines_with_cursor) { Int range_index = FindRangeByPos(lines_to_skip_triming, i); if (range_index != -1) continue; - Range range = GetLineRangeWithoutNL(*buffer, i); + Range range = GetLineRangeWithoutNL(buffer, i); wchar_t cr = GetChar(buffer, range.max - 1); wchar_t lf = GetChar(buffer, range.max); if (cr == L'\r' && lf == L'\n') { @@ -384,14 +384,14 @@ void SaveBuffer(View *view) { // { // Scratch scratch; - // String16 string16 = GetString(*buffer); + // String16 string16 = GetString(buffer); // String string = ToString(scratch, string16); // Buffer *temp_buffer = ExecAndWait(scratch, "clang-format", GetDir(buffer), string); - // Command_ReplaceWithoutMovingCarets(view, GetRange(*buffer), {temp_buffer->str, temp_buffer->len}); + // Command_ReplaceWithoutMovingCarets(view, GetRange(buffer), {temp_buffer->str, temp_buffer->len}); // } Scratch scratch; - String16 string16 = GetString(*buffer); + String16 string16 = GetString(buffer); String string = ToString(scratch, string16); bool success = WriteFile(buffer->name, string); @@ -412,17 +412,17 @@ void Command_KillSelectedLines(View *view) { Array lines = GetSelectedLinesSorted(scratch, view); For(lines) { - Range add_range = GetLineRange(*buffer, it.min); + Range add_range = GetLineRange(buffer, it.min); for (Int i = it.min + 1; i < it.max; i += 1) { - Range line_range = GetLineRange(*buffer, i); + Range line_range = GetLineRange(buffer, i); add_range.max = Max(line_range.max, add_range.max); } AddEdit(&edits, add_range, L""); } For(view->carets) { - Int line = PosToLine(*buffer, it.range.min); - Range range = GetLineRange(*buffer, line); + Int line = PosToLine(buffer, it.range.min); + Range range = GetLineRange(buffer, line); it.range.min = it.range.max = range.min; } @@ -467,7 +467,7 @@ void Command_Delete(View *view, int direction, bool ctrl = false) { void Command_SelectAll(View *view, String16 needle) { Buffer *buffer = GetBuffer(view->active_buffer); - String16 string_buffer = GetString(*buffer); + String16 string_buffer = GetString(buffer); for (Int pos = 0;;) { Int index = 0; @@ -492,7 +492,7 @@ void Command_CreateCursorVertical(View *_view, int direction) { Scratch scratch; Array arr = {scratch}; For(view.carets) { - if (PosToLine(*buffer, it.range.min) == PosToLine(*buffer, it.range.max)) { + if (PosToLine(buffer, it.range.min) == PosToLine(buffer, it.range.max)) { Int f = OffsetByLine(buffer, GetFront(it), line_offset); Int b = OffsetByLine(buffer, GetBack(it), line_offset); Add(&arr, MakeCaret(f, b)); @@ -527,7 +527,7 @@ void MergeCarets(View *view) { ProfileFunction(); Buffer *buffer = GetBuffer(view->active_buffer); - For(view->carets) it.range = Clamp(*buffer, it.range); + For(view->carets) it.range = Clamp(buffer, it.range); Caret first_caret = view->carets.data[0]; Scratch scratch; @@ -555,14 +555,14 @@ void MergeCarets(View *view) { Caret FindPrev(Buffer *buffer, String16 needle, Caret caret) { Int pos = GetFront(caret); - String16 medium = GetString(*buffer, {0, pos}); + String16 medium = GetString(buffer, {0, pos}); Caret result = caret; Int index = 0; if (Seek(medium, needle, &index, SeekFlag_MatchFindLast)) { result = MakeCaret(index, index + needle.len); } else { - medium = GetString(*buffer); + medium = GetString(buffer); if (Seek(medium, needle, &index, SeekFlag_MatchFindLast)) { result = MakeCaret(index, index + needle.len); } @@ -573,14 +573,14 @@ Caret FindPrev(Buffer *buffer, String16 needle, Caret caret) { Caret FindNext(Buffer *buffer, String16 needle, Caret caret) { Int pos = GetFront(caret); - String16 medium = GetString(*buffer, {pos, INT64_MAX}); + String16 medium = GetString(buffer, {pos, INT64_MAX}); Caret result = caret; Int index = 0; if (Seek(medium, needle, &index)) { result = MakeCaret(pos + index + needle.len, pos + index); } else { - medium = GetString(*buffer); + medium = GetString(buffer); if (Seek(medium, needle, &index)) { result = MakeCaret(index + needle.len, index); } @@ -596,7 +596,7 @@ void Command_IdentedNewLine(View *view) { MergeCarets(view); For(view->carets) { Int front = GetFront(it); - Int line = PosToLine(*buffer, front); + Int line = PosToLine(buffer, front); Int indent = GetLineIndent(buffer, line); String string = Format(scratch, "\n%.*s", (int)indent, " "); String16 string16 = ToString16(scratch, string); @@ -625,12 +625,12 @@ void Command_GotoNextInList(Window *window, Int line_offset = 1) { Buffer *buffer_goto = GetBuffer(view_goto->active_buffer); int64_t pos = GetFront(view_goto->carets[0]); - Int line = PosToLine(*buffer_goto, pos); + Int line = PosToLine(buffer_goto, pos); bool opened = false; for (Int i = line + line_offset; i >= 0 && i < buffer_goto->line_starts.len; i += line_offset) { - Range line_range = GetLineRangeWithoutNL(*buffer_goto, line + line_offset); - String16 line = GetString(*buffer_goto, line_range); + Range line_range = GetLineRangeWithoutNL(buffer_goto, line + line_offset); + String16 line = GetString(buffer_goto, line_range); view_goto->carets[0] = MakeCaret(line_range.min); line = Trim(line); @@ -655,14 +655,14 @@ void Command_FuzzySort(View *view, String16 needle) { Buffer *temp_buffer = CreateTempBuffer(scratch, buffer->cap); For(ratings) { - String16 s = GetLineStringWithoutNL(*buffer, it.index); + String16 s = GetLineStringWithoutNL(buffer, it.index); if (s.len == 0) continue; - IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), s); - IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n"); + IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(temp_buffer), s); + IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(temp_buffer), L"\n"); } Command_SelectEntireBuffer(view); - Command_Replace(view, GetString(*temp_buffer)); + Command_Replace(view, GetString(temp_buffer)); view->carets.len = 1; view->carets[0] = MakeCaret({}); @@ -829,7 +829,7 @@ void WindowCommand(Event event, Window *window, View *view) { } if (Ctrl(SDLK_D)) { - String16 string = GetString(*buffer, view->carets[0].range); + String16 string = GetString(buffer, view->carets[0].range); Caret caret = FindNext(buffer, string, view->carets[0]); Insert(&view->carets, caret, 0); MergeCarets(view); @@ -893,14 +893,14 @@ void WindowCommand(Event event, Window *window, View *view) { Caret caret = view->carets[0]; Range range = caret.range; if (GetSize(caret.range) == 0) range = EncloseExecWord(buffer, GetFront(caret)); - String16 string = GetString(*buffer, range); + String16 string = GetString(buffer, range); Command_EvalLua(view, string); } else if (Ctrl(SDLK_Q)) { Caret caret = view->carets[0]; Range range = caret.range; if (GetSize(caret.range) == 0) range = EncloseLoadWord(buffer, GetFront(caret)); - String16 string = GetString(*buffer, range); + String16 string = GetString(buffer, range); window->active_goto_list = view->id; Open(string); @@ -917,7 +917,7 @@ void UpdateScroll(Window *window, bool update_caret_scrolling) { if (update_caret_scrolling) { Caret c = set.view->carets[0]; Int front = GetFront(c); - XY xy = PosToXY(*set.buffer, front); + XY xy = PosToXY(set.buffer, front); Rect2I visible = GetVisibleCells(window); Vec2I visible_cells = GetSize(visible); @@ -947,7 +947,7 @@ void UpdateScroll(Window *window, bool update_caret_scrolling) { // Clip scroll { - Int last_line = LastLine(*set.buffer); + Int last_line = LastLine(set.buffer); set.view->scroll.y = Clamp(set.view->scroll.y, (Int)0, Max((Int)0, (last_line - 1) * FontLineSpacing)); // @note: diff --git a/src/text_editor/lua_api.cpp b/src/text_editor/lua_api.cpp index 6ffd32a..136c74b 100644 --- a/src/text_editor/lua_api.cpp +++ b/src/text_editor/lua_api.cpp @@ -67,7 +67,7 @@ void Open(String path) { View *view = WindowOpenBufferView(main.window, file_path); Buffer *buffer = GetBuffer(view->active_buffer); if (line != -1 && col != -1) { - Int pos = XYToPos(*buffer, {col - 1, line - 1}); + Int pos = XYToPos(buffer, {col - 1, line - 1}); view->carets[0] = MakeCaret(pos); } UpdateScroll(main.window, true); @@ -301,7 +301,7 @@ void UpdateLua() { Buffer *lua_buffer = GetBuffer(LuaBufferID); if (lua_buffer->dirty == false && lua_buffer->change_id != LuaBufferChangeID) { Scratch scratch; - String16 string16 = GetString(*lua_buffer); + String16 string16 = GetString(lua_buffer); String string = ToString(scratch, string16); if (luaL_dostring(LuaState, string.data) == LUA_OK) { if (lua_isstring(LuaState, -1)) { diff --git a/src/text_editor/title_bar.cpp b/src/text_editor/title_bar.cpp index 3b1e02f..a249708 100644 --- a/src/text_editor/title_bar.cpp +++ b/src/text_editor/title_bar.cpp @@ -10,7 +10,7 @@ void UpdateDebugBuffer() { Scratch scratch; String s = Format(scratch, "wid: %d\nvid: %d\nbid: %d\nframe: %lld\n", (int)main.window->id.id, (int)main.view->id.id, (int)main.buffer->id.id, (long long)FrameID); String16 string = ToString16(scratch, s); - IKnowWhatImDoing_ReplaceText(buffer, GetRange(*buffer), string); + IKnowWhatImDoing_ReplaceText(buffer, GetRange(buffer), string); float xmouse, ymouse; SDL_GetMouseState(&xmouse, &ymouse); @@ -30,7 +30,7 @@ void ReplaceTitleBarData(Window *window) { BSet main = GetMainSet(window); Scratch scratch; Caret caret = main.view->carets[0]; - XY xy = PosToXY(*main.buffer, GetFront(caret)); + XY xy = PosToXY(main.buffer, GetFront(caret)); Array caret_copy = Copy(GetSystemAllocator(), view->carets); defer { @@ -38,17 +38,17 @@ void ReplaceTitleBarData(Window *window) { view->carets = caret_copy; }; - String16 buffer_string = GetString(*buffer); + String16 buffer_string = GetString(buffer); Range replace_range = {0, buffer->len}; if (!Seek(buffer_string, L" |", &replace_range.max)) { - Command_SelectRangeOneCursor(view, GetEndAsRange(*buffer)); + Command_SelectRangeOneCursor(view, GetEndAsRange(buffer)); Array edits = Command_ReplaceEx(scratch, 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(buffer, replace_range); if (string_to_replace != string) { Command_SelectRangeOneCursor(view, replace_range); Array edits = Command_ReplaceEx(scratch, view, string); diff --git a/src/text_editor/window_draw.cpp b/src/text_editor/window_draw.cpp index 90fe550..71b56c5 100644 --- a/src/text_editor/window_draw.cpp +++ b/src/text_editor/window_draw.cpp @@ -45,7 +45,7 @@ void DrawVisibleText(Window *window, Color tint) { Rect2I visible = GetVisibleCells(window); for (Int line_index = visible.min.y; line_index < visible.max.y && line_index >= 0 && line_index < buffer->line_starts.len; line_index += 1) { - String16 line_string = GetLineString(*buffer, line_index); + String16 line_string = GetLineString(buffer, line_index); Vec2I pos = {visible.min.x * (Int)FontCharSpacing, line_index * (Int)FontLineSpacing}; pos -= view->scroll; @@ -90,8 +90,8 @@ void DrawCaret(Window *window, XY xy, float size, Color color) { } void DrawUnderline(Window *window, View *view, Buffer *buffer, Range range, Color color, Int size = 1) { - XY xy_min = PosToXY(*buffer, range.min); - XY xy_max = PosToXY(*buffer, range.max); + XY xy_min = PosToXY(buffer, range.min); + XY xy_max = PosToXY(buffer, range.max); // @todo: maybe consider underlining multiple lines but then we would need to consider // optimizing and so on @@ -135,8 +135,8 @@ void DrawWindow(Window *window, Event &event) { BeginProfileScope(draw_caret_selection); Rect2I visible = GetVisibleCells(window); For(view->carets) { - XY min = PosToXY(*buffer, it.range.min); - XY max = PosToXY(*buffer, it.range.max); + XY min = PosToXY(buffer, it.range.min); + XY max = PosToXY(buffer, it.range.max); if (visible.min.y > max.line) continue; if (visible.max.y < min.line) continue; @@ -144,7 +144,7 @@ void DrawWindow(Window *window, Event &event) { // // Draw selection for (Int line = visible.min.y; line <= visible.max.y && line >= 0 && line < buffer->line_starts.len; line += 1) { - String16 line_string = GetLineString(*buffer, line); + String16 line_string = GetLineString(buffer, line); for (Int col = visible.min.x; col < visible.max.x && col >= 0 && col < line_string.len; col += 1) { bool a = line > min.line && line < max.line; @@ -172,7 +172,7 @@ void DrawWindow(Window *window, Event &event) { // // Draw highlight Int front = GetFront(it); - XY fxy = PosToXY(*buffer, front); + XY fxy = PosToXY(buffer, front); Vec2I w = XYToWorldPos(view, XYLine(fxy.line)); w -= view->scroll; w += window->document_rect.min; @@ -219,7 +219,7 @@ void DrawWindow(Window *window, Event &event) { if (is_active) { For(view->carets) { Int front = GetFront(it); - XY fxy = PosToXY(*buffer, front); + XY fxy = PosToXY(buffer, front); if (fxy.col >= visible.min.x && fxy.col < visible.max.x && fxy.line >= visible.min.y && fxy.line <= visible.max.y) { bool main_caret = &it == &view->carets.data[0]; DrawCaret(window, fxy, 0.3f, main_caret ? color_main_caret : color_sub_caret);