From 8de20eb0e25c8e40c39ea0285f07534457538e35 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Thu, 15 Jan 2026 23:26:06 +0100 Subject: [PATCH] plugin_basic_commands.cpp --- src/text_editor/commands.cpp | 313 -------------------------------- src/text_editor/process.cpp | 18 ++ src/text_editor/text_editor.cpp | 3 +- 3 files changed, 20 insertions(+), 314 deletions(-) diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index 3204b64..dfb5f89 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -227,33 +227,6 @@ void CMD_CenterView() { CenterView(PrimaryWindowID); } RegisterCommand(CMD_CenterView, ""); -void MoveCursorByPageSize(Window *window, int direction, bool shift = false) { - Assert(direction == DIR_UP || direction == DIR_DOWN); - BSet set = GetBSet(window); - - Rect2I visible_cells_rect = GetVisibleCells(window); - Int y = GetSize(visible_cells_rect).y - 2; - if (direction == DIR_UP) y = -y; - - For(set.view->carets) { - 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); - 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); - if (shift) { - it = SetFront(it, pos); - } else { - it = MakeCaret(pos); - } - } -} - void TrimWhitespace(Buffer *buffer, bool trim_lines_with_caret) { Scratch scratch; @@ -453,24 +426,6 @@ void NewDir(Window *window, String name = "") { Open(name); } -View *ExecHidden(String buffer_name, String cmd, String working_dir) { - View *view = OpenBufferView(buffer_name); - Buffer *buffer = GetBuffer(view->active_buffer); - buffer->dont_try_to_save_in_bulk_ops = true; - Exec(view->id, true, cmd, working_dir); - return view; -} - -BSet Exec(String cmd, String working_dir, bool set_active = true) { - BSet main = GetBSet(PrimaryWindowID); - if (set_active) { - NextActiveWindowID = main.window->id; - } - JumpTempBuffer(&main); - Exec(main.view->id, true, cmd, working_dir); - return main; -} - void CMD_SaveAll() { For(Buffers) { // NOTE: file_mod_time is only set when buffer got read or written to disk already so should be saved @@ -1061,27 +1016,6 @@ void CMD_OpenUpFolder() { Open(name); } RegisterCommand(CMD_OpenUpFolder, "ctrl-o", "Open current's file directory or up directory in other cases"); -void CMD_EncloseLine() { - BSet active = GetBSet(ActiveWindowID); - EncloseLine(active.view); -} RegisterCommand(CMD_EncloseLine, "ctrl-l", "Select the entire line on which your caret is placed"); - -void CMD_SelectAll() { - BSet active = GetBSet(ActiveWindowID); - SelectEntireBuffer(active.view); - active.view->update_scroll = false; -} RegisterCommand(CMD_SelectAll, "ctrl-a", "Select the entire buffer"); - -void CMD_Redo() { - BSet active = GetBSet(ActiveWindowID); - RedoEdit(active.buffer, &active.view->carets); -} RegisterCommand(CMD_Redo, "ctrl-shift-z", "Redo after undoing changes to the buffer"); - -void CMD_Undo() { - BSet active = GetBSet(ActiveWindowID); - UndoEdit(active.buffer, &active.view->carets); -} RegisterCommand(CMD_Undo, "ctrl-z", "Undo last change you made to the buffer"); - void CMD_MakeFontLarger() { FontSize += 1; ReloadFont(PathToFont, (U32)FontSize); @@ -1098,244 +1032,17 @@ void CMD_OpenLoadWord() { Scratch scratch; BSet active = GetBSet(ActiveWindowID); String16 load_word = FetchLoadWord(active.view); - // String load_word = ToString(scratch, load_word16); - // Window *window = GetWindow(PrimaryWindowID); - // window->active_goto_list = active.view->id; - // window->goto_list_pos = active.view->carets[0].range.min; Open(load_word); } RegisterCommand(CMD_OpenLoadWord, "ctrl-q | f12", "Open a link under the caret (file link, url, command) or open the selection"); -void CMD_KillSelectedLines() { - BSet active = GetBSet(ActiveWindowID); - KillSelectedLines(active.view); -} RegisterCommand(CMD_KillSelectedLines, "ctrl-shift-k"); - -void CMD_IndentSelectedLines() { - BSet active = GetBSet(ActiveWindowID); - IndentSelectedLines(active.view); -} RegisterCommand(CMD_IndentSelectedLines, "ctrl-rightbracket | tab"); - -void CMD_DedentSelectedLines() { - BSet active = GetBSet(ActiveWindowID); - IndentSelectedLines(active.view, true); -} RegisterCommand(CMD_DedentSelectedLines, "ctrl-leftbracket | shift-tab"); - -void CMD_DuplicateLineDown() { - BSet active = GetBSet(ActiveWindowID); - DuplicateLine(active.view, DIR_DOWN); -} RegisterCommand(CMD_DuplicateLineDown, "ctrl-alt-down"); - -void CMD_CreateCursorDown() { - BSet active = GetBSet(ActiveWindowID); - CreateCursorVertical(active.view, DIR_DOWN); -} RegisterCommand(CMD_CreateCursorDown, "alt-shift-down"); - -void CMD_SelectDownToEmptyLine() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_DOWN, CTRL_PRESSED, SHIFT_PRESS); -} RegisterCommand(CMD_SelectDownToEmptyLine, "ctrl-shift-down"); - -void CMD_MoveLineDown() { - BSet active = GetBSet(ActiveWindowID); - MoveCaretsLine(active.view, DIR_DOWN); -} RegisterCommand(CMD_MoveLineDown, "alt-down"); - -void CMD_MoveDownToEmptyLine() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_DOWN, CTRL_PRESSED); -} RegisterCommand(CMD_MoveDownToEmptyLine, "ctrl-down"); - -void CMD_SelectDown() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_DOWN, false, SHIFT_PRESS); -} RegisterCommand(CMD_SelectDown, "shift-down"); - -void CMD_MoveDown() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_DOWN); -} RegisterCommand(CMD_MoveDown, "down"); - -void CMD_DuplicateLineUp() { - BSet active = GetBSet(ActiveWindowID); - DuplicateLine(active.view, DIR_UP); -} RegisterCommand(CMD_DuplicateLineUp, "ctrl-alt-up"); - -void CMD_CreateCursorUp() { - BSet active = GetBSet(ActiveWindowID); - CreateCursorVertical(active.view, DIR_UP); -} RegisterCommand(CMD_CreateCursorUp, "alt-shift-up"); - -void CMD_SelectUpToEmptyLine() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_UP, CTRL_PRESSED, SHIFT_PRESS); -} RegisterCommand(CMD_SelectUpToEmptyLine, "ctrl-shift-up"); - -void CMD_MoveLineUp() { - BSet active = GetBSet(ActiveWindowID); - MoveCaretsLine(active.view, DIR_UP); -} RegisterCommand(CMD_MoveLineUp, "alt-up"); - -void CMD_MoveUpToEmptyLine() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_UP, CTRL_PRESSED); -} RegisterCommand(CMD_MoveUpToEmptyLine, "ctrl-up"); - -void CMD_SelectUp() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_UP, false, SHIFT_PRESS); -} RegisterCommand(CMD_SelectUp, "shift-up"); - -void CMD_MoveUp() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_UP); -} RegisterCommand(CMD_MoveUp, "up"); - -void CMD_BoundarySelectLeft() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_LEFT, CTRL_PRESSED, SHIFT_PRESS); -} RegisterCommand(CMD_BoundarySelectLeft, "ctrl-shift-left"); - -void CMD_BoundaryMoveLeft() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_LEFT, CTRL_PRESSED); -} RegisterCommand(CMD_BoundaryMoveLeft, "ctrl-left"); - -void CMD_SelectLeft() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_LEFT, false, SHIFT_PRESS); -} RegisterCommand(CMD_SelectLeft, "shift-left"); - void CMD_FocusLeftWindow() { NextActiveWindowID = SwitchWindow(DIR_LEFT)->id; } RegisterCommand(CMD_FocusLeftWindow, "alt-left"); -void CMD_MoveLeft() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_LEFT); -} RegisterCommand(CMD_MoveLeft, "left"); - -void CMD_BoundarySelectRight() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_RIGHT, CTRL_PRESSED, SHIFT_PRESS); -} RegisterCommand(CMD_BoundarySelectRight, "ctrl-shift-right"); - -void CMD_BoundaryMoveRight() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_RIGHT, CTRL_PRESSED); -} RegisterCommand(CMD_BoundaryMoveRight, "ctrl-right"); - -void CMD_SelectRight() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_RIGHT, false, SHIFT_PRESS); -} RegisterCommand(CMD_SelectRight, "shift-right"); - void CMD_FocusRightWindow() { NextActiveWindowID = SwitchWindow(DIR_RIGHT)->id; } RegisterCommand(CMD_FocusRightWindow, "alt-right"); -void CMD_MoveRight() { - BSet active = GetBSet(ActiveWindowID); - MoveCarets(active.view, DIR_RIGHT); -} RegisterCommand(CMD_MoveRight, "right"); - -void CMD_MoveUpAPage() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorByPageSize(active.window, DIR_UP); -} RegisterCommand(CMD_MoveUpAPage, "pageup"); - -void CMD_SelectUpPage() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorByPageSize(active.window, DIR_UP, SHIFT_PRESS); -} RegisterCommand(CMD_SelectUpPage, "shift-pageup"); - -void CMD_MoveToStart() { - BSet active = GetBSet(ActiveWindowID); - SelectRange(active.view, MakeRange(0)); -} RegisterCommand(CMD_MoveToStart, "ctrl-pageup"); - -void CMD_SelectDownPage() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorByPageSize(active.window, DIR_DOWN, SHIFT_PRESS); -} RegisterCommand(CMD_SelectDownPage, "shift-pagedown"); - -void CMD_MoveToEnd() { - BSet active = GetBSet(ActiveWindowID); - SelectRange(active.view, MakeRange(active.buffer->len)); -} RegisterCommand(CMD_MoveToEnd, "ctrl-pagedown"); - -void CMD_MoveDownPage() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorByPageSize(active.window, DIR_DOWN); -} RegisterCommand(CMD_MoveDownPage, "pagedown"); - -void CMD_SelectToLineStart() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorToSide(active.view, DIR_LEFT, SHIFT_PRESS); -} RegisterCommand(CMD_SelectToLineStart, "shift-home"); - -void CMD_MoveToLineStart() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorToSide(active.view, DIR_LEFT); -} RegisterCommand(CMD_MoveToLineStart, "home"); - -void CMD_MoveToLineEnd() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorToSide(active.view, DIR_RIGHT); -} RegisterCommand(CMD_MoveToLineEnd, "end"); - -void CMD_SelectToLineEnd() { - BSet active = GetBSet(ActiveWindowID); - MoveCursorToSide(active.view, DIR_RIGHT, SHIFT_PRESS); -} RegisterCommand(CMD_SelectToLineEnd, "shift-end"); - -void CMD_DeleteCharacter() { - BSet active = GetBSet(ActiveWindowID); - Delete(active.view, DIR_LEFT); -} RegisterCommand(CMD_DeleteCharacter, "shift-backspace | backspace"); - -void CMD_DeleteBoundary() { - BSet active = GetBSet(ActiveWindowID); - Delete(active.view, DIR_LEFT, SHIFT_PRESS); -} RegisterCommand(CMD_DeleteBoundary, "ctrl-backspace"); - -void CMD_DeleteForward() { - BSet active = GetBSet(ActiveWindowID); - Delete(active.view, DIR_RIGHT); -} RegisterCommand(CMD_DeleteForward, "shift-delete | delete"); - -void CMD_DeleteForwardBoundary() { - BSet active = GetBSet(ActiveWindowID); - Delete(active.view, DIR_RIGHT, SHIFT_PRESS); -} RegisterCommand(CMD_DeleteForwardBoundary, "ctrl-delete"); - -void CMD_InsertNewLineUp() { - BSet active = GetBSet(ActiveWindowID); - SaveCaretHistoryBeforeBeginEdit(active.buffer, active.view->carets); - MoveCursorToSide(active.view, DIR_LEFT); - IndentedNewLine(active.view); - MoveCarets(active.view, DIR_UP); -} RegisterCommand(CMD_InsertNewLineUp, "ctrl-shift-enter"); - -void CMD_InsertNewLineDown() { - BSet active = GetBSet(ActiveWindowID); - SaveCaretHistoryBeforeBeginEdit(active.buffer, active.view->carets); - MoveCursorToSide(active.view, DIR_RIGHT); - IndentedNewLine(active.view); -} RegisterCommand(CMD_InsertNewLineDown, "ctrl-enter"); - -void CMD_NewLine() { - BSet active = GetBSet(ActiveWindowID); - IndentedNewLine(active.view); -} RegisterCommand(CMD_NewLine, "enter | shift-enter"); - -void CMD_CreateCaretOnNextFind() { - BSet active = GetBSet(ActiveWindowID); - String16 string = GetString(active.buffer, active.view->carets[0].range); - Caret caret = FindNext(active.buffer, string, active.view->carets[0]); - Insert(&active.view->carets, caret, 0); - MergeCarets(active.buffer, &active.view->carets); -} RegisterCommand(CMD_CreateCaretOnNextFind, "ctrl-d"); - void CMD_FocusWindow1() { NextActiveWindowID = GetOverlappingWindow({0,0}, GetWindow(ActiveWindowID))->id; } RegisterCommand(CMD_FocusWindow1, "ctrl-1"); @@ -1363,26 +1070,6 @@ void CMD_NewWindow() { CreateWind(); } RegisterCommand(CMD_NewWindow, "ctrl-backslash"); -void CMD_ClearCarets() { - BSet active = GetBSet(ActiveWindowID); - active.view->carets.len = 1; - active.view->carets[0] = MakeCaret(GetFront(active.view->carets[0])); - - if (active.window->lose_focus_on_escape && active.window->id == ActiveWindowID) { - if (active.window->primary) { - // - } else { - NextActiveWindowID = PrimaryWindowID; - } - } - - For (Windows) { - if (it->lose_visibility_on_escape && it->visible) { - it->visible = false; - } - } -} RegisterCommand(CMD_ClearCarets, "escape", "Clear all carets and reset to 1 caret, also do some windowing stuff that closes things on escape"); - void Coro_ReplaceAll(mco_coro *co) { BSet main = GetBSet(PrimaryWindowID); String16 string = FetchLoadWord(main.view); diff --git a/src/text_editor/process.cpp b/src/text_editor/process.cpp index 688f124..05bda73 100644 --- a/src/text_editor/process.cpp +++ b/src/text_editor/process.cpp @@ -79,3 +79,21 @@ bool ProcessIsActive(ViewID view) { } return false; } + +View *ExecHidden(String buffer_name, String cmd, String working_dir) { + View *view = OpenBufferView(buffer_name); + Buffer *buffer = GetBuffer(view->active_buffer); + buffer->dont_try_to_save_in_bulk_ops = true; + Exec(view->id, true, cmd, working_dir); + return view; +} + +BSet Exec(String cmd, String working_dir, bool set_active = true) { + BSet main = GetBSet(PrimaryWindowID); + if (set_active) { + NextActiveWindowID = main.window->id; + } + JumpTempBuffer(&main); + Exec(main.view->id, true, cmd, working_dir); + return main; +} diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index bdfec60..26bd5a3 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -39,9 +39,10 @@ #include "draw.cpp" #include "test/tests.cpp" -#include "commands_search_open_buffers.cpp" #include "commands_clipboard.cpp" +#include "plugin_search_open_buffers.cpp" #include "plugin_project_management.cpp" +#include "plugin_basic_commands.cpp" #include "plugin_command_window.cpp" #include "plugin_search_window.cpp" #include "plugin_status_window.cpp"