From 8ef682e8bf9e8ad2375eb6ff4d442d56935956fa Mon Sep 17 00:00:00 2001 From: EnumDev Date: Sun, 8 Jun 2025 21:23:22 +0300 Subject: [PATCH] Implement Edit dropdown menu --- src/top_menu.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/top_menu.go b/src/top_menu.go index f88ee12..bdc8078 100644 --- a/src/top_menu.go +++ b/src/top_menu.go @@ -114,6 +114,39 @@ func initTopMenu() { EditButton := TopMenuButton{ Name: "Edit", Key: 'e', + Action: func(window *Window) { + ClearDropdowns() + d := CreateDropdownMenu([]string{"Copy", "Paste"}, 0, 1, 0, func(i int) { + switch i { + case 0: + if window.CurrentBuffer.Selection == nil { + // Copy line + _, line := window.GetCursorPos2D() + window.Clipboard = strings.SplitAfter(window.CurrentBuffer.Contents, "\n")[line] + PrintMessage(window, "Copied line to clipboard.") + } else { + // Copy selection + window.Clipboard = window.CurrentBuffer.GetSelectedText() + PrintMessage(window, "Copied selection to clipboard.") + } + case 1: + str := window.CurrentBuffer.Contents + index := window.CurrentBuffer.CursorPos + + if index == len(str) { + str += window.Clipboard + } else { + str = str[:index] + window.Clipboard + str[index:] + } + window.CurrentBuffer.CursorPos += len(window.Clipboard) + window.CurrentBuffer.Contents = str + } + ClearDropdowns() + window.CursorMode = CursorModeBuffer + }) + ActiveDropdown = d + window.CursorMode = CursorModeDropdown + }, } Buffers := TopMenuButton{ Name: "Buffers",