summaryrefslogtreecommitdiff
path: root/editor.go
diff options
context:
space:
mode:
Diffstat (limited to 'editor.go')
-rw-r--r--editor.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/editor.go b/editor.go
new file mode 100644
index 0000000..9186a16
--- /dev/null
+++ b/editor.go
@@ -0,0 +1,53 @@
+package main
+
+import (
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "strings"
+)
+
+func doEditor() (string, error) {
+ // Create a temporary file
+ tmpfile, err := ioutil.TempFile("", "regex-*.txt")
+ if err != nil {
+ return "", err
+ }
+ tmpPath := tmpfile.Name()
+ // Defer removal in case of error, but we might move it
+ defer os.Remove(tmpPath)
+ tmpfile.Close()
+
+ // Get the user's editor
+ editor := os.Getenv("EDITOR")
+ if editor == "" {
+ editor = "vim" // default to vim
+ }
+
+ // Run the editor
+ cmd := exec.Command(editor, tmpPath)
+ cmd.Stdin = os.Stdin
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+
+ if err := cmd.Run(); err != nil {
+ return "", err
+ }
+
+ // Read the file content
+ content, err := ioutil.ReadFile(tmpPath)
+ if err != nil {
+ return "", err
+ }
+
+ // Check if the file is not empty after trimming space
+ if strings.TrimSpace(string(content)) != "" {
+ // Move the file
+ if err := os.Rename(tmpPath, "/tmp/regex.txt"); err != nil {
+ return "", err
+ }
+ return "/tmp/regex.txt", nil
+ }
+
+ return "", nil
+}