From 6e61816e1c81ab1f1a4d62af0983c65d5d8562aa Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Tue, 6 Aug 2024 06:50:36 +0200 Subject: [PATCH] Execute and load selection --- src/text_editor/commands.cpp | 13 ++++++------- src/text_editor/commands_window.cpp | 14 ++++++++------ src/text_editor/todo.txt | 2 -- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index 0a76ccd..a3e3845 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -265,11 +265,9 @@ bool GlobalCommand(Event event) { Buffer *buffer = GetBuffer(view->active_buffer); Int p = ScreenSpaceToBufferPosErrorOutOfBounds(window, view, buffer, mouse); if (p != -1) { - Range enclose = EncloseExecWord(buffer, p); - String16 string = GetString(*buffer, enclose); - - // Window *last_window = GetWindow(GetLastActiveWindow()); - // View *last_view = GetView(last_window->active_view); + Range enclose = EncloseExecWord(buffer, p); + if (InBounds(view->carets[0].range, p)) enclose = view->carets[0].range; + String16 string = GetString(*buffer, enclose); Command_EvalLua(view, string); } } @@ -283,8 +281,9 @@ bool GlobalCommand(Event event) { Buffer *buffer = GetBuffer(view->active_buffer); Int p = ScreenSpaceToBufferPosErrorOutOfBounds(window, view, buffer, mouse); if (p != -1) { - Range enclose = EncloseLoadWord(buffer, p); - String16 string = GetString(*buffer, enclose); + Range enclose = EncloseLoadWord(buffer, p); + if (InBounds(view->carets[0].range, p)) enclose = view->carets[0].range; + String16 string = GetString(*buffer, enclose); view->carets.len = 1; view->carets[0] = MakeCaret(p); diff --git a/src/text_editor/commands_window.cpp b/src/text_editor/commands_window.cpp index b714ce0..870842d 100644 --- a/src/text_editor/commands_window.cpp +++ b/src/text_editor/commands_window.cpp @@ -810,14 +810,16 @@ void WindowCommand(Event event, Window *window, View *view) { } if (Ctrl(SDLK_Q)) { - Int p = GetFront(view->carets[0]); - Range enclose = EncloseLoadWord(buffer, p); - String16 string = GetString(*buffer, enclose); + Caret caret = view->carets[0]; + Range range = caret.range; + if (GetSize(caret.range) == 0) range = EncloseLoadWord(buffer, GetFront(caret)); + String16 string = GetString(*buffer, range); Open(string); } else if (Alt(SDLK_Q)) { - Int p = GetFront(view->carets[0]); - Range enclose = EncloseExecWord(buffer, p); - String16 string = GetString(*buffer, enclose); + Caret caret = view->carets[0]; + Range range = caret.range; + if (GetSize(caret.range) == 0) range = EncloseExecWord(buffer, GetFront(caret)); + String16 string = GetString(*buffer, range); Command_EvalLua(view, string); } diff --git a/src/text_editor/todo.txt b/src/text_editor/todo.txt index 636eb4b..6d86213 100644 --- a/src/text_editor/todo.txt +++ b/src/text_editor/todo.txt @@ -1,5 +1,3 @@ - -- we should be able to execute selection using mouse and keyboard (for now only main cursor) - we should be able to execute a buffer (even scratch - search as a command to execute which is going to be in the title bar - each buffer needs a directory even the special ones: C:\a\b\c\+errors?