Add friendly remainders, better console experience
This commit is contained in:
@@ -490,7 +490,7 @@ void Insert(Array<T> *arr, T item, int64_t index) {
|
|||||||
template <class T>
|
template <class T>
|
||||||
Array<T> Copy(Allocator alo, Array<T> array) {
|
Array<T> Copy(Allocator alo, Array<T> array) {
|
||||||
Array<T> result = {alo};
|
Array<T> result = {alo};
|
||||||
result.reserve(array.cap);
|
Reserve(&result, array.cap);
|
||||||
memcpy(result.data, array.data, sizeof(T) * array.len);
|
memcpy(result.data, array.data, sizeof(T) * array.len);
|
||||||
result.len = array.len;
|
result.len = array.len;
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ void ValidateLineStarts(Buffer *buffer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReplaceText(Buffer *buffer, Range range, String16 string) {
|
void IKnowWhatImDoing_ReplaceText(Buffer *buffer, Range range, String16 string) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
Assert(range.max >= range.min);
|
Assert(range.max >= range.min);
|
||||||
Assert(range.max >= 0 && range.max <= buffer->len);
|
Assert(range.max >= 0 && range.max <= buffer->len);
|
||||||
@@ -110,13 +110,13 @@ void ReplaceText(Buffer *buffer, Range range, String16 string) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Append(Buffer *buffer, String16 string) {
|
void IKnowWhatImDoing_Append(Buffer *buffer, String16 string) {
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), string);
|
IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), string);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Appendf(Buffer *buffer, const char *fmt, ...) {
|
void IKnowWhatImDoing_Appendf(Buffer *buffer, const char *fmt, ...) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
STRING_FORMAT(scratch, fmt, string);
|
STRING_FORMAT(scratch, fmt, string);
|
||||||
String16 string16 = ToString16(scratch, string);
|
String16 string16 = ToString16(scratch, string);
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), string16);
|
IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), string16);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ void RedoEdit(Buffer *buffer, Array<Caret> *carets) {
|
|||||||
|
|
||||||
SaveHistoryBeforeMergeCursor(buffer, &buffer->undo_stack, *carets);
|
SaveHistoryBeforeMergeCursor(buffer, &buffer->undo_stack, *carets);
|
||||||
SaveHistoryBeforeApplyEdits(buffer, &buffer->undo_stack, entry.edits);
|
SaveHistoryBeforeApplyEdits(buffer, &buffer->undo_stack, entry.edits);
|
||||||
_ApplyEdits(buffer, entry.edits);
|
IKnowWhatImDoing__ApplyEditsMultiCursor(buffer, entry.edits);
|
||||||
|
|
||||||
Dealloc(carets);
|
Dealloc(carets);
|
||||||
*carets = entry.carets;
|
*carets = entry.carets;
|
||||||
@@ -67,7 +67,7 @@ void UndoEdit(Buffer *buffer, Array<Caret> *carets) {
|
|||||||
|
|
||||||
SaveHistoryBeforeMergeCursor(buffer, &buffer->redo_stack, *carets);
|
SaveHistoryBeforeMergeCursor(buffer, &buffer->redo_stack, *carets);
|
||||||
SaveHistoryBeforeApplyEdits(buffer, &buffer->redo_stack, entry.edits);
|
SaveHistoryBeforeApplyEdits(buffer, &buffer->redo_stack, entry.edits);
|
||||||
_ApplyEdits(buffer, entry.edits);
|
IKnowWhatImDoing__ApplyEditsMultiCursor(buffer, entry.edits);
|
||||||
|
|
||||||
Dealloc(carets);
|
Dealloc(carets);
|
||||||
*carets = entry.carets;
|
*carets = entry.carets;
|
||||||
@@ -77,12 +77,12 @@ void UndoEdit(Buffer *buffer, Array<Caret> *carets) {
|
|||||||
Dealloc(&entry.edits);
|
Dealloc(&entry.edits);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApplyEdits(Buffer *buffer, Array<Edit> &edits) {
|
void IKnowWhatImDoing_ApplyEdits(Buffer *buffer, Array<Edit> &edits) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
Assert(buffer->edit_phase == 1);
|
Assert(buffer->edit_phase == 1);
|
||||||
buffer->edit_phase += 1;
|
buffer->edit_phase += 1;
|
||||||
SaveHistoryBeforeApplyEdits(buffer, &buffer->undo_stack, edits);
|
SaveHistoryBeforeApplyEdits(buffer, &buffer->undo_stack, edits);
|
||||||
_ApplyEdits(buffer, edits);
|
IKnowWhatImDoing__ApplyEditsMultiCursor(buffer, edits);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearRedoStack(Buffer *buffer) {
|
void ClearRedoStack(Buffer *buffer) {
|
||||||
@@ -97,7 +97,6 @@ void ClearRedoStack(Buffer *buffer) {
|
|||||||
// @note: !!
|
// @note: !!
|
||||||
// We can invoke this before caret altering commands to save caret history
|
// We can invoke this before caret altering commands to save caret history
|
||||||
// and then call some editing command to edit which is not going to save carets
|
// and then call some editing command to edit which is not going to save carets
|
||||||
// @todo: this needs to be actually tested though!!!
|
|
||||||
Array<Edit> BeginEdit(Allocator allocator, Buffer *buffer, Array<Caret> &carets) {
|
Array<Edit> BeginEdit(Allocator allocator, Buffer *buffer, Array<Caret> &carets) {
|
||||||
Assert(buffer->edit_phase == 0 || buffer->edit_phase == 1);
|
Assert(buffer->edit_phase == 0 || buffer->edit_phase == 1);
|
||||||
if (buffer->edit_phase == 0) {
|
if (buffer->edit_phase == 0) {
|
||||||
@@ -117,7 +116,7 @@ void PreBeginEdit_SaveCaretHistory(Buffer *buffer, Array<Caret> &carets) {
|
|||||||
bool KILL_SELECTION = true;
|
bool KILL_SELECTION = true;
|
||||||
void EndEdit(Buffer *buffer, Array<Edit> *edits, Array<Caret> *carets, bool kill_selection = true) {
|
void EndEdit(Buffer *buffer, Array<Edit> *edits, Array<Caret> *carets, bool kill_selection = true) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
ApplyEdits(buffer, *edits);
|
IKnowWhatImDoing_ApplyEdits(buffer, *edits);
|
||||||
|
|
||||||
Assert(buffer->edit_phase == 2);
|
Assert(buffer->edit_phase == 2);
|
||||||
buffer->edit_phase -= 2;
|
buffer->edit_phase -= 2;
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ void MergeSort(int64_t Count, Edit *First, Edit *Temp) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _ApplyEdits(Buffer *buffer, Array<Edit> edits) {
|
void IKnowWhatImDoing__ApplyEditsMultiCursor(Buffer *buffer, Array<Edit> edits) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
#if BUFFER_DEBUG
|
#if BUFFER_DEBUG
|
||||||
Assert(buffer->line_starts.len);
|
Assert(buffer->line_starts.len);
|
||||||
@@ -154,7 +154,7 @@ void _ApplyEdits(Buffer *buffer, Array<Edit> edits) {
|
|||||||
it.range.min += offset;
|
it.range.min += offset;
|
||||||
it.range.max += offset;
|
it.range.max += offset;
|
||||||
offset += it.string.len - GetSize(it.range);
|
offset += it.string.len - GetSize(it.range);
|
||||||
ReplaceText(buffer, it.range, it.string);
|
IKnowWhatImDoing_ReplaceText(buffer, it.range, it.string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
void LoadBigText(Buffer *buffer, int size = 5000000) {
|
void LoadBigText(Buffer *buffer, int size = 5000000) {
|
||||||
for (int i = 0; i < size; i += 1) {
|
for (int i = 0; i < size; i += 1) {
|
||||||
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) {
|
void LoadBigLine(Buffer *buffer, int size = 5000000) {
|
||||||
for (int i = 0; i < size; i += 1) {
|
for (int i = 0; i < size; i += 1) {
|
||||||
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,14 +20,14 @@ void LoadTextA(Buffer *buffer) {
|
|||||||
for (int i = 0; i < 1000; i += 1) {
|
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);
|
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);
|
String16 s16 = ToString16(scratch, s);
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), s16);
|
IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), s16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadLine(Buffer *buffer) {
|
void LoadLine(Buffer *buffer) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
String s = "Line number and so on óźćż";
|
String s = "Line number and so on óźćż";
|
||||||
ReplaceText(buffer, {}, ToString16(scratch, s));
|
IKnowWhatImDoing_ReplaceText(buffer, {}, ToString16(scratch, s));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadUnicode(Buffer *buffer) {
|
void LoadUnicode(Buffer *buffer) {
|
||||||
@@ -137,7 +137,7 @@ Bopomofo
|
|||||||
|
|
||||||
)===";
|
)===";
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
ReplaceText(buffer, {}, ToString16(scratch, text));
|
IKnowWhatImDoing_ReplaceText(buffer, {}, ToString16(scratch, text));
|
||||||
|
|
||||||
|
|
||||||
text = R"===(
|
text = R"===(
|
||||||
@@ -153,5 +153,5 @@ CJK Unified Ideographs
|
|||||||
一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘 丙 业 丛 东 丝 丞 丟 丠 両 丢 丣 两 严 並 丧 丨 丩 个 丫 丬 中 丮 丯 丰 丱 串 丳 临 丵 丶 丷 丸 丹 为 主 丼 丽 举 丿 乀 乁 乂 乃 乄 久 乆 乇 么 义 乊 之 乌 乍 乎 乏 乐 乑 乒 乓 乔 乕 乖 乗 乘 乙 乚 乛 乜 九 乞 也 习 乡 乢 乣 乤 乥 书 乧 乨 乩 乪 乫 乬 乭 乮 乯 买 乱 乲 乳 乴 乵 乶 乷 乸 乹 乺 乻 乼 乽 乾 乿 ...
|
一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘 丙 业 丛 东 丝 丞 丟 丠 両 丢 丣 两 严 並 丧 丨 丩 个 丫 丬 中 丮 丯 丰 丱 串 丳 临 丵 丶 丷 丸 丹 为 主 丼 丽 举 丿 乀 乁 乂 乃 乄 久 乆 乇 么 义 乊 之 乌 乍 乎 乏 乐 乑 乒 乓 乔 乕 乖 乗 乘 乙 乚 乛 乜 九 乞 也 习 乡 乢 乣 乤 乥 书 乧 乨 乩 乪 乫 乬 乭 乮 乯 买 乱 乲 乳 乴 乵 乶 乷 乸 乹 乺 乻 乼 乽 乾 乿 ...
|
||||||
Hangul Syllables
|
Hangul Syllables
|
||||||
가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘 같 갚 갛 개 객 갞 갟 갠 갡 갢 갣 갤 갥 갦 갧 갨 갩 갪 갫 갬 갭 갮 갯 갰 갱 갲 갳 갴 갵 갶 갷 갸 갹 갺 갻 갼 갽 갾 갿 걀 걁 걂 걃 걄 걅 걆 걇 걈 걉 걊 걋 걌 걍 걎 걏 걐 걑 걒 걓 걔 걕 걖 걗 걘 걙 걚 걛 걜 걝 걞 걟 걠 걡 걢 걣 걤 걥 걦 걧 걨 걩 걪 걫 걬 걭 걮 걯 거 걱 걲 걳 건 걵 걶 걷 걸 걹 걺 걻 걼 걽 걾 걿 ...)===";
|
가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘 같 갚 갛 개 객 갞 갟 갠 갡 갢 갣 갤 갥 갦 갧 갨 갩 갪 갫 갬 갭 갮 갯 갰 갱 갲 갳 갴 갵 갶 갷 갸 갹 갺 갻 갼 갽 갾 갿 걀 걁 걂 걃 걄 걅 걆 걇 걈 걉 걊 걋 걌 걍 걎 걏 걐 걑 걒 걓 걔 걕 걖 걗 걘 걙 걚 걛 걜 걝 걞 걟 걠 걡 걢 걣 걤 걥 걦 걧 걨 걩 걪 걫 걬 걭 걮 걯 거 걱 걲 걳 건 걵 걶 걷 걸 걹 걺 걻 걼 걽 걾 걿 ...)===";
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), ToString16(scratch, text));
|
IKnowWhatImDoing_ReplaceText(buffer, GetEndAsRange(*buffer), ToString16(scratch, text));
|
||||||
}
|
}
|
||||||
@@ -465,13 +465,21 @@ void AppendToConsole(String16 string) {
|
|||||||
View *view = FindView(buffer->id);
|
View *view = FindView(buffer->id);
|
||||||
Assert(view);
|
Assert(view);
|
||||||
|
|
||||||
|
Array<Caret> caret_copy = Copy(GetSystemAllocator(), view->carets);
|
||||||
|
defer {
|
||||||
|
Dealloc(&view->carets);
|
||||||
|
view->carets = caret_copy;
|
||||||
|
};
|
||||||
|
|
||||||
bool scroll_to_end = false;
|
bool scroll_to_end = false;
|
||||||
if (view) {
|
if (view) {
|
||||||
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;
|
if (line == buffer->line_starts.len - 1) scroll_to_end = true;
|
||||||
}
|
}
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), string);
|
|
||||||
ReplaceText(buffer, GetEndAsRange(*buffer), L"\n");
|
Command_SelectRangeOneCursor(view, GetEndAsRange(*buffer));
|
||||||
|
Command_Replace(view, string);
|
||||||
|
Command_Replace(view, L"\n");
|
||||||
|
|
||||||
if (scroll_to_end) {
|
if (scroll_to_end) {
|
||||||
view->carets[0] = MakeCaret(GetEndAsRange(*buffer).min);
|
view->carets[0] = MakeCaret(GetEndAsRange(*buffer).min);
|
||||||
|
|||||||
@@ -791,13 +791,13 @@ void WindowCommand(Event event, Window *window, View *view) {
|
|||||||
Array<FuzzyPair> ratings = FuzzySearchLines(scratch, buffer, 1, buffer->line_starts.len, first_line_string);
|
Array<FuzzyPair> ratings = FuzzySearchLines(scratch, buffer, 1, buffer->line_starts.len, first_line_string);
|
||||||
|
|
||||||
Buffer *temp_buffer = CreateTempBuffer(scratch, buffer->cap);
|
Buffer *temp_buffer = CreateTempBuffer(scratch, buffer->cap);
|
||||||
ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), first_line_string);
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), first_line_string);
|
||||||
ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
||||||
For(ratings) {
|
For(ratings) {
|
||||||
String16 s = GetLineStringWithoutNL(*buffer, it.index);
|
String16 s = GetLineStringWithoutNL(*buffer, it.index);
|
||||||
if (s.len == 0) continue;
|
if (s.len == 0) continue;
|
||||||
ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), s);
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), s);
|
||||||
ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
Caret caret = view->carets[0];
|
Caret caret = view->carets[0];
|
||||||
|
|||||||
@@ -259,7 +259,8 @@ void ReloadLuaConfig() {
|
|||||||
|
|
||||||
Buffer *lua_buffer = BufferOpenFile(lua_config_path);
|
Buffer *lua_buffer = BufferOpenFile(lua_config_path);
|
||||||
if (lua_buffer->len == 0) {
|
if (lua_buffer->len == 0) {
|
||||||
ReplaceText(lua_buffer, {}, ToString16(scratch, BaseLuaConfig));
|
String16 string16 = ToString16(scratch, BaseLuaConfig);
|
||||||
|
IKnowWhatImDoing_ReplaceText(lua_buffer, {}, string16);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we loaded from file this should force to read
|
// if we loaded from file this should force to read
|
||||||
|
|||||||
@@ -209,9 +209,9 @@ Buffer *BufferOpenFile(String path) {
|
|||||||
|
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (FileIter it = IterateFiles(scratch, path); IsValid(it); Advance(&it)) {
|
for (FileIter it = IterateFiles(scratch, path); IsValid(it); Advance(&it)) {
|
||||||
Appendf(buffer, "%.*s", FmtString(it.filename));
|
IKnowWhatImDoing_Appendf(buffer, "%.*s", FmtString(it.filename));
|
||||||
if ((i % 8) == 0) Append(buffer, L"\n");
|
if ((i % 8) == 0) IKnowWhatImDoing_Append(buffer, L"\n");
|
||||||
else Append(buffer, L" ");
|
else IKnowWhatImDoing_Append(buffer, L" ");
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -117,11 +117,13 @@ void AfterEdit(View *view, Array<Edit> edits);
|
|||||||
Scroller ComputeScrollerRect(Window *window);
|
Scroller ComputeScrollerRect(Window *window);
|
||||||
void Command_EvalLua(View *view, String16 string);
|
void Command_EvalLua(View *view, String16 string);
|
||||||
void MergeCarets(View *view, Range *mouse_selection_anchor = NULL);
|
void MergeCarets(View *view, Range *mouse_selection_anchor = NULL);
|
||||||
void Command_SelectEntireBuffer(View *view);
|
|
||||||
void Command_Replace(View *view, String16 string);
|
|
||||||
void Open(String path);
|
void Open(String path);
|
||||||
void Open(String16 path);
|
void Open(String16 path);
|
||||||
void UpdateScroll(Window *window, bool update_caret_scrolling);
|
void UpdateScroll(Window *window, bool update_caret_scrolling);
|
||||||
|
|
||||||
|
void Command_SelectEntireBuffer(View *view);
|
||||||
|
void Command_Replace(View *view, String16 string);
|
||||||
|
void Command_SelectRangeOneCursor(View *view, Range range);
|
||||||
|
|
||||||
void ReportErrorf(const char *fmt, ...);
|
void ReportErrorf(const char *fmt, ...);
|
||||||
void ReportWarningf(const char *fmt, ...);
|
void ReportWarningf(const char *fmt, ...);
|
||||||
@@ -37,16 +37,16 @@ void ReplaceDebugData() {
|
|||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
String s = Format(scratch, "wid: %d\nvid: %d\nbid: %d\nframe: %lld\n", (int)last_window->id.id, (int)last_view->id.id, (int)last_buffer->id.id, (long long)FrameID);
|
String s = Format(scratch, "wid: %d\nvid: %d\nbid: %d\nframe: %lld\n", (int)last_window->id.id, (int)last_view->id.id, (int)last_buffer->id.id, (long long)FrameID);
|
||||||
String16 string = ToString16(scratch, s);
|
String16 string = ToString16(scratch, s);
|
||||||
ReplaceText(buffer, GetRange(*buffer), string);
|
IKnowWhatImDoing_ReplaceText(buffer, GetRange(*buffer), string);
|
||||||
|
|
||||||
float xmouse, ymouse;
|
float xmouse, ymouse;
|
||||||
SDL_GetMouseState(&xmouse, &ymouse);
|
SDL_GetMouseState(&xmouse, &ymouse);
|
||||||
Appendf(buffer, "mouse: [%f, %f]\n", xmouse, ymouse);
|
IKnowWhatImDoing_Appendf(buffer, "mouse: [%f, %f]\n", xmouse, ymouse);
|
||||||
Appendf(buffer, "window count: %d view count: %d buffer count: %d\n", (int)Windows.len, (int)Views.len, (int)Buffers.len);
|
IKnowWhatImDoing_Appendf(buffer, "window count: %d view count: %d buffer count: %d\n", (int)Windows.len, (int)Views.len, (int)Buffers.len);
|
||||||
Appendf(buffer, "C:/Work/text_editor/src/text_editor/text_editor.cpp\n");
|
IKnowWhatImDoing_Appendf(buffer, "C:/Work/text_editor/src/text_editor/text_editor.cpp\n");
|
||||||
Appendf(buffer, "working dir: %.*s\n", FmtString(WorkingDir));
|
IKnowWhatImDoing_Appendf(buffer, "working dir: %.*s\n", FmtString(WorkingDir));
|
||||||
Appendf(buffer, "exe dir: %.*s\n", FmtString(ExeDir));
|
IKnowWhatImDoing_Appendf(buffer, "exe dir: %.*s\n", FmtString(ExeDir));
|
||||||
Appendf(buffer, "config dir: %.*s\n", FmtString(ConfigDir));
|
IKnowWhatImDoing_Appendf(buffer, "config dir: %.*s\n", FmtString(ConfigDir));
|
||||||
|
|
||||||
// String view_list = DebugViewList(scratch);
|
// String view_list = DebugViewList(scratch);
|
||||||
// Append(buffer, ToString16(scratch, view_list));
|
// Append(buffer, ToString16(scratch, view_list));
|
||||||
|
|||||||
Reference in New Issue
Block a user