summaryrefslogtreecommitdiff
path: root/lib/editor.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/editor.ml')
-rw-r--r--lib/editor.ml19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/editor.ml b/lib/editor.ml
new file mode 100644
index 0000000..a0a6752
--- /dev/null
+++ b/lib/editor.ml
@@ -0,0 +1,19 @@
+(*─────────────────────────────────────────────────────────────────────────────┐
+│ SPDX-FileCopyrightText: 2025 toastal <https://toast.al/contact/> │
+│ SPDX-License-Identifier: LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception │
+└─────────────────────────────────────────────────────────────────────────────*)
+
+let find () =
+ match Sys.getenv_opt "VISUAL" with
+ | Some v -> v
+ | None ->
+ match Sys.getenv_opt "EDITOR" with
+ | Some e -> e
+ | None -> "vi"
+
+let run_on file =
+ match find () with
+ | ed when String.contains ed ' ' ->
+ Unix.execvp "/bin/sh" [|"/bin/sh"; "-c"; ed ^ " " ^ file|]
+ | ed ->
+ Unix.execvp ed [|ed; file|]