about summary refs log tree commit diff stats
path: root/src/command
diff options
context:
space:
mode:
authorStefan <stefan@devlug.de>2021-04-11 16:21:00 +0200
committerMichael Vetter <jubalh@iodoru.org>2021-04-16 18:04:03 +0200
commit9f32b2afb264a7621a8ac660a84e2d72a4a1a44a (patch)
treed4c4351882311374e5da2b0b73770ce7d11628cf /src/command
parent35b0b0f19479436d980ef20bfe2ff26a0a19f9ea (diff)
downloadprofani-tty-9f32b2afb264a7621a8ac660a84e2d72a4a1a44a.tar.gz
Editor: Using preferences compose.editor
compose.editor is the path to the executable ( default /usr/bin/vim )
Diffstat (limited to 'src/command')
-rw-r--r--src/command/cmd_funcs.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index c85b6c78..7aeb15f0 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -9346,19 +9346,29 @@ cmd_editor(ProfWin* window, const char* const command, gchar** args)
                G_FILE_CREATE_PRIVATE, NULL,
                &creation_error);
     if ( creation_error ) {
-        cons_show("Editor: Error during file creation");
+        cons_show_error("Editor: Error during file creation");
         return TRUE;
     }
     g_object_unref(fos);
 
+    char* editor = prefs_get_string(PREF_COMPOSE_EDITOR);
+    if (!g_file_test(editor, G_FILE_TEST_EXISTS)) {
+        cons_show_error("Editor: editor %s not exists", editor);
+        return TRUE;
+    }
+
     // Fork / exec
     pid_t pid = fork();
     if( pid == 0 ) {
-        int x = execl("/usr/bin/sensible-editor", "/usr/bin/sensible-editor", g_file_get_path(file), (char *) NULL);
+        int x = execl(editor, editor, g_file_get_path(file), (char *) NULL);
         if ( x == -1 ) {
-            cons_show_error("Failed to exec sensible-editor");
+            cons_show_error("Failed to exec %s", editor);
         }
+        exit (EXIT_FAILURE);
     } else {
+        if ( pid == -1 ) {
+            return TRUE;
+        }
         int status = 0;
         waitpid(pid, &status, 0);
         int fd_input_file = open(g_file_get_path(file), O_RDONLY);
@@ -9366,12 +9376,12 @@ cmd_editor(ProfWin* window, const char* const command, gchar** args)
         char buf[COUNT];
         ssize_t size_read = read(fd_input_file, buf, COUNT);
         if(size_read > 0 && size_read <= COUNT ) {
-          buf[size_read-1] = '\0';
-          GString* text = g_string_new(buf);
-          ProfWin* win = wins_get_current();
-          win_println(win, THEME_DEFAULT, "!", "EDITOR PREVIEW: %s", text->str);
-          rl_insert_text(text->str);
-          g_string_free(text, TRUE);
+            buf[size_read-1] = '\0';
+            GString* text = g_string_new(buf);
+            ProfWin* win = wins_get_current();
+            win_println(win, THEME_DEFAULT, "!", "EDITOR PREVIEW: %s", text->str);
+            rl_insert_text(text->str);
+            g_string_free(text, TRUE);
         }
         close(fd_input_file);
         ui_redraw();