From 35cc5ae48dd7d892aecb9ef5121dda8ef7c96970 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sat, 28 Sep 2024 07:40:00 +0200 Subject: [PATCH] Remove exec word, insert titlebar command, error reporting in titlebar, some lua commands --- src/text_editor/buffer_helpers.cpp | 17 ---------- src/text_editor/buffer_test_load.cpp | 4 +-- src/text_editor/commands.cpp | 45 +-------------------------- src/text_editor/commands_bindings.cpp | 6 ++-- src/text_editor/lua_api.cpp | 37 ---------------------- src/text_editor/lua_api_generated.cpp | 4 --- src/text_editor/text_editor.cpp | 2 +- src/text_editor/todo.txt | 2 ++ src/text_editor/window_draw.cpp | 6 ++-- 9 files changed, 11 insertions(+), 112 deletions(-) diff --git a/src/text_editor/buffer_helpers.cpp b/src/text_editor/buffer_helpers.cpp index 3ddc96a..5c57133 100644 --- a/src/text_editor/buffer_helpers.cpp +++ b/src/text_editor/buffer_helpers.cpp @@ -498,23 +498,6 @@ Range EncloseScope(Buffer *buffer, Int pos, wchar_t open, wchar_t close) { } return result; } -Range EncloseExecWord(Buffer *buffer, Int pos) { - for (Int i = pos; i >= 0 && i >= pos - 1024; i -= 1) { - if (GetChar(buffer, i) == L'#') { - pos = i + 1; - break; - } - } - Range result = {GetWordStart(buffer, pos), GetWordEnd(buffer, pos)}; - - Int seek = SkipSpaces(buffer, result.max); - Int scope_end = FindScopeEnd(buffer, seek, 1024, L'(', L')'); - if (seek == scope_end) scope_end = FindScopeEnd(buffer, seek, 1024, L'{', L'}'); - if (seek == scope_end) scope_end = FindScopeEnd(buffer, seek, 1024, L'\'', L'\''); - if (seek == scope_end) scope_end = FindScopeEnd(buffer, seek, 1024, L'\"', L'\"'); - if (seek != scope_end) result.max = scope_end + 1; - return result; -} Range EncloseLine(Buffer *buffer, Int pos) { Range result = {GetLineStart(buffer, pos), GetLineEnd(buffer, pos)}; diff --git a/src/text_editor/buffer_test_load.cpp b/src/text_editor/buffer_test_load.cpp index 318ad2b..e0bb6f6 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 or something of the sort which is here or there or maybe somewhere else\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 or something of the sort which is here or there or maybe somewhere else | "); } } diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index aa6d926..3aa2dd7 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -84,7 +84,7 @@ void MouseExecWord(Event event) { if (mouse_in_document) { Int p = ScreenSpaceToBufferPosErrorOutOfBounds(active.window, active.view, active.buffer, mouse); if (p != -1) { - Range enclose = EncloseExecWord(active.buffer, p); + Range enclose = EncloseLoadWord(active.buffer, p); if (InBounds(active.view->carets[0].range, p)) { enclose = active.view->carets[0].range; } @@ -209,10 +209,6 @@ void ReportWarningf(const char *fmt, ...) { STRING_FORMAT(scratch, fmt, string); View *null_view = GetView(NullViewID); Command_Append(null_view, string, true); - - void Command_InsertTitlebarCommand(BSet title, String16 needle, String16 string, bool select_entire); - BSet title = GetActiveTitleSet(); - Command_InsertTitlebarCommand(title, L"#Error('", ToString16(scratch, string), true); } void Command_MoveCursorsByPageSize(Window *window, int direction, bool shift = false) { @@ -888,42 +884,3 @@ void Command_FuzzySort(View *view, String16 needle) { Command_Replace(view, GetString(temp_buffer)); Command_SelectRangeOneCursor(view, Rng(0)); } - -void Command_InsertTitlebarCommand(BSet title, String16 needle, String16 initial_value, bool select_entire_thing) { - Scratch scratch; - String16 quoted16 = {}; - { - String needle8 = ToString(scratch, needle); - String initial_value8 = ToString(scratch, initial_value); - String quoted = Format(scratch, "%.*s%.*s')", FmtString(needle8), FmtString(initial_value8)); - quoted16 = ToString16(scratch, quoted); - } - - Range needle_range = {}; - int64_t index = 0; - String16 buffer_string = GetString(title.buffer); - if (Seek(buffer_string, needle, &index)) { - Range range = EncloseExecWord(title.buffer, index); - Command_SelectRangeOneCursor(title.view, Rng(range.min - 1, range.max)); - Command_Replace(title.view, quoted16); - needle_range = {index + needle.len, index + needle.len + initial_value.len}; - } else { - Command_SelectRangeOneCursor(title.view, GetEndAsRange(title.buffer)); - Command_Replace(title.view, quoted16); - Int end = GetEndAsRange(title.buffer).max - 2; - needle_range = {end - initial_value.len, end}; - } - - if (select_entire_thing) { - needle_range.min -= needle.len; - needle_range.max += 2; - } - Command_SelectRangeOneCursor(title.view, MakeCaret(needle_range.max, needle_range.min)); -} - -void Command_SelectTitlebarCommand(Window *window, String16 needle) { - BSet title = GetTitleSet(window); - ActiveWindow = title.window->id; - title.window->auto_enclose = true; - Command_InsertTitlebarCommand(title, needle, L"", false); -} diff --git a/src/text_editor/commands_bindings.cpp b/src/text_editor/commands_bindings.cpp index 420f190..8d6a986 100644 --- a/src/text_editor/commands_bindings.cpp +++ b/src/text_editor/commands_bindings.cpp @@ -437,7 +437,7 @@ void OnCommand(Event event) { } if (CtrlPress(SDLK_F)) { - Command_SelectTitlebarCommand(active.window, L"#Search('"); + // @todo: Search in current buffer } if (CtrlPress(SDLK_S)) { @@ -456,7 +456,7 @@ void OnCommand(Event event) { if (CtrlShiftPress(SDLK_G)) { } else if (CtrlPress(SDLK_G)) { - Command_SelectTitlebarCommand(active.window, L"#FuzzySort('"); + } if (CtrlShiftPress(SDLK_W)) { @@ -469,7 +469,7 @@ void OnCommand(Event event) { if (should_enclose || CtrlShiftPress(SDLK_Q)) { Caret caret = active.view->carets[0]; Range range = caret.range; - if (GetSize(caret.range) == 0) range = EncloseExecWord(active.buffer, GetFront(caret)); + if (GetSize(caret.range) == 0) range = EncloseLoadWord(active.buffer, GetFront(caret)); String16 string = GetString(active.buffer, range); Command_EvalLua(active.view, string); diff --git a/src/text_editor/lua_api.cpp b/src/text_editor/lua_api.cpp index 20f46fa..0454b10 100644 --- a/src/text_editor/lua_api.cpp +++ b/src/text_editor/lua_api.cpp @@ -78,17 +78,6 @@ void Open(String16 path) { Open(string); } -int Lua_FuzzySort(lua_State *L) { - String string = lua_tostring(L, 1); - lua_pop(L, 1); - Scratch scratch; - String16 string16 = ToString16(scratch, string); - - BSet main = GetActiveMainSet(); - Command_FuzzySort(main.view, string16); - return 0; -} - int Lua_AppendCmd(lua_State *L) { String string = lua_tostring(L, 1); lua_pop(L, 1); @@ -148,12 +137,6 @@ int Lua_Kill(lua_State *L) { return 0; } -int Lua_Error(lua_State *L) { - Buffer *buffer = GetBuffer(NullBufferID); - Open(buffer->name); - return 0; -} - int Lua_GetLoadWord(lua_State *L) { BSet active = GetActiveSet(); Range range = active.view->carets[0].range; @@ -286,25 +269,6 @@ int Lua_Ls(lua_State *L) { return 0; } -int Lua_Search(lua_State *L) { - BSet main = GetActiveMainSet(); - main.window->search_string = lua_tostring(L, 1); - lua_pop(L, 1); - - Scratch scratch; - Command_Find(main.view, ToString16(scratch, main.window->search_string), true); - return 0; -} - -int Lua_SearchB(lua_State *L) { - BSet main = GetActiveMainSet(); - main.window->search_string = lua_tostring(L, 1); - lua_pop(L, 1); - Scratch scratch; - Command_Find(main.view, ToString16(scratch, main.window->search_string), false); - return 0; -} - int Lua_Rename(lua_State *L) { String string = lua_tostring(L, 1); lua_pop(L, 1); @@ -557,7 +521,6 @@ bool EvalString(Allocator allocator, String16 string16) { } bool Command_EvalLua(View *view, String16 string) { - if (string.len && string.data[0] == L'#') string = Skip(string, 1); Scratch scratch; Buffer *buffer = GetBuffer(view->active_buffer); return EvalString(scratch, string); diff --git a/src/text_editor/lua_api_generated.cpp b/src/text_editor/lua_api_generated.cpp index 6257057..962de70 100644 --- a/src/text_editor/lua_api_generated.cpp +++ b/src/text_editor/lua_api_generated.cpp @@ -1,10 +1,8 @@ luaL_Reg LuaFunctions[] = { - {"FuzzySort", Lua_FuzzySort}, {"AppendCmd", Lua_AppendCmd}, {"C", Lua_C}, {"Cmd", Lua_Cmd}, {"Kill", Lua_Kill}, - {"Error", Lua_Error}, {"GetLoadWord", Lua_GetLoadWord}, {"New", Lua_New}, {"Open", Lua_Open}, @@ -19,8 +17,6 @@ luaL_Reg LuaFunctions[] = { {"GetActiveMainWindowBufferName", Lua_GetActiveMainWindowBufferName}, {"GetActiveMainWindowBufferDir", Lua_GetActiveMainWindowBufferDir}, {"Ls", Lua_Ls}, - {"Search", Lua_Search}, - {"SearchB", Lua_SearchB}, {"Rename", Lua_Rename}, {"Play", Lua_Play}, {NULL, NULL}, diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index 724a303..074afe4 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -262,7 +262,7 @@ int main(int argc, char **argv) SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); Uint32 window_flags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN | SDL_WINDOW_HIGH_PIXEL_DENSITY; - SDLWindow = SDL_CreateWindow("Text editor", 1280, 720, window_flags); + SDLWindow = SDL_CreateWindow("Text editor", 1920, 1080, window_flags); if (SDLWindow == NULL) { ReportErrorf("Couldn't create window! %s", SDL_GetError()); return 1; diff --git a/src/text_editor/todo.txt b/src/text_editor/todo.txt index 4d839d3..184147e 100644 --- a/src/text_editor/todo.txt +++ b/src/text_editor/todo.txt @@ -1,3 +1,5 @@ +- report errors (try showing a window) + - adding items to directory should create files on save - it should ask the user (syntax: dir/ | file) - ask user if he really wants to quit even though he has an unsaved buffer - popup window - test the code editor: try writing in it, try browsing in it, create test tooling diff --git a/src/text_editor/window_draw.cpp b/src/text_editor/window_draw.cpp index 690fe02..76d0b9b 100644 --- a/src/text_editor/window_draw.cpp +++ b/src/text_editor/window_draw.cpp @@ -187,8 +187,6 @@ void DrawWindow(Window *window, Event &event) { // Underline word under mouse cursor if (Ctrl()) { - auto enclose_proc = Shift() ? EncloseExecWord : EncloseLoadWord; - Caret caret = view->carets[0]; Vec2I mouse = MouseVec2I(); bool mouse_in_document = CheckCollisionPointRec(mouse, window->document_rect); @@ -197,7 +195,7 @@ void DrawWindow(Window *window, Event &event) { Buffer *buffer = GetBuffer(view->active_buffer); Int p = ScreenSpaceToBufferPosErrorOutOfBounds(window, view, buffer, mouse); if (p != -1) { - Range range = enclose_proc(buffer, p); + Range range = EncloseLoadWord(buffer, p); if (InBounds(caret.range, p)) range = caret.range; DrawUnderline(window, view, buffer, range, ColorMouseUnderline, 2); } @@ -205,7 +203,7 @@ void DrawWindow(Window *window, Event &event) { if (is_active) { if (GetSize(caret.range) == 0) { - Range range = enclose_proc(buffer, caret.range.min); + Range range = EncloseLoadWord(buffer, caret.range.min); DrawUnderline(window, view, buffer, range, ColorCaretUnderline); } else { DrawUnderline(window, view, buffer, caret.range, ColorCaretUnderline);