]> git.lizzy.rs Git - micro.git/blobdiff - internal/clipboard/terminal.go
Update README.md (#2109)
[micro.git] / internal / clipboard / terminal.go
index 37b37dc3edf4eb50111e0733abb4a9a8b4a5fe98..e3a05287938844e54ed5eaa6acf5701f5e8ea336 100644 (file)
@@ -1,13 +1,31 @@
 package clipboard
 
-import "github.com/zyedidia/micro/v2/internal/screen"
+import (
+       "errors"
+       "time"
+
+       "github.com/zyedidia/micro/v2/internal/screen"
+       "github.com/zyedidia/tcell/v2"
+)
 
 type terminalClipboard struct{}
 
 var terminal terminalClipboard
 
-func (t terminalClipboard) read(reg string) error {
-       return screen.Screen.GetClipboard(reg)
+func (t terminalClipboard) read(reg string) (string, error) {
+       screen.Screen.GetClipboard(reg)
+       // wait at most 200ms for response
+       for {
+               select {
+               case event := <-screen.Events:
+                       e, ok := event.(*tcell.EventPaste)
+                       if ok {
+                               return e.Text(), nil
+                       }
+               case <-time.After(200 * time.Millisecond):
+                       return "", errors.New("No clipboard received from terminal")
+               }
+       }
 }
 
 func (t terminalClipboard) write(text, reg string) error {