LINUX.ORG.RU

Midnight Commander - настройка диалога сохранения

 , , ,


0

2

добрый день

хочу немного «подрихтовать поведение» mc под себя :о)

конкретно, диалог сохранения файла

1 этап

- во время сохранения только что созданного файла, в диалоге пустая строка

- вставить «кастомное имя», допустим text.txt (прописать жестко, в коде)

2. этап

- «кастомное имя файла» - сохраняемое в настройках mc

3. этап

- «кастомное имя файла» - в зов-ти от «типа-файла»/первой строки

'default'   -> text.txt
#!/bin/sh   -> shell.sh
#!/bin/bash -> shell.bash
#!/bin/perl -> shell.pl
etc...

ВНИМАНИЕ! нужна помошь, волшебный пендель в нужном направлении, ссылки, ваши мысли, идеи, ругань, просто треп, без матов :о)

может уже есть подобные патчи/наработки?!

!!! UPDATE !!!

первый этап (голимый костыль, но, вроде как, работает)

mc-4.8.23

--- src/editor/editcmd.c  2019-06-17 00:49:31.000000000 +0700
+++ src/editor/editcmd.c  2019-10-12 10:50:33.204729861 +0700
@@ -443,7 +443,7 @@ edit_get_save_file_as (WEdit * edit)
     quick_widget_t quick_widgets[] = {
         /* *INDENT-OFF* */
         QUICK_LABELED_INPUT (N_("Enter file name:"), input_label_above,
-                             vfs_path_as_str (edit->filename_vpath), "save-as",
+                             "text.txt", "save-as",
                              &filename_res, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES),
         QUICK_SEPARATOR (TRUE),
         QUICK_LABEL (N_("Change line breaks to:"), NULL),

есть одно но! при сохранение по F12 - Save as - вместо имени уже стоит text.txt (ну а че мы хотим, такой костыль :о) - и если уже существует до этого созданный файл text.txt - будет предложено его перезаписать (короч. лишние, неудобные телодвижения)

!!! UPDATE !!!

более правильный патч

--- src/editor/editcmd.c  2019-06-17 00:49:31.000000000 +0700
+++ src/editor/editcmd.c  2019-10-12 18:51:50.320368742 +0700
@@ -433,6 +433,14 @@ edit_get_save_file_as (WEdit * edit)
     char *filename_res;
     vfs_path_t *ret_vpath = NULL;

+    if(edit->filename_vpath == NULL)
+    {
+    filename_res = tilde_expand("text.txt");
+    // edit->filename_vpath = vfs_path_from_str(filename_res); -->
+    edit->filename_vpath = vfs_path_from_str_flags(filename_res, VPF_NONE);
+    g_free(filename_res);
+    }
+
     const char *lb_names[LB_NAMES] = {
         N_("&Do not change"),
         N_("&Unix format (LF)"),

!!! UPDATE !!!

Первый этап - решен (еще чуть-чуть более правильный патч :о)

--- src/editor/editcmd.c  2019-06-17 00:49:31.000000000 +0700
+++ src/editor/editcmd.c  2019-10-12 20:43:16.784370042 +0700
@@ -433,6 +433,11 @@ edit_get_save_file_as (WEdit * edit)
     char *filename_res;
     vfs_path_t *ret_vpath = NULL;

+    if(edit->filename_vpath == NULL || !strcmp(edit->filename_vpath->str,""))
+      filename_res = "text.txt";
+    else
+      filename_res = vfs_path_as_str (edit->filename_vpath);
+
     const char *lb_names[LB_NAMES] = {
         N_("&Do not change"),
         N_("&Unix format (LF)"),
@@ -443,7 +448,7 @@ edit_get_save_file_as (WEdit * edit)
     quick_widget_t quick_widgets[] = {
         /* *INDENT-OFF* */
         QUICK_LABELED_INPUT (N_("Enter file name:"), input_label_above,
-                             vfs_path_as_str (edit->filename_vpath), "save-as",
+                              filename_res, "save-as",
                              &filename_res, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES),
         QUICK_SEPARATOR (TRUE),
         QUICK_LABEL (N_("Change line breaks to:"), NULL),
★★★★

Последнее исправление: sunjob (всего исправлений: 12)

Ответ на: комментарий от buka14

взял и человеку весь фан обламал.

mos ★★☆☆☆
()

в зов-ти

Много сэкономил трафика и времени?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.