LINUX.ORG.RU

zsh promt криво выглядит в mc

 ,


0

2

Использую такой вот вариант:

PS1="$PR_CYAN>>%{$reset_color%} "
RPS1="$PR_LIGHT_CYAN(%D{%d-%m %H:%M})%{$reset_color%}"

В mc и левая и правая часть отображаются вместе:

>>(05-07 12:30)

Может есть способ пофиксить? Гугление не помогло, ну или это я глупенький.


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

Что то я не понял как это работает. Добавил в ./zshrc теперь в mc появилось еще одно приветствие перед старым.

Но мне то наоборот надо убирать его.

oriko32
() автор топика
Ответ на: комментарий от oriko32

Это было не тебе. Но ты можешь взять пример за основу и сделать как надо :) Для этого надо убрать оттуда почти всё из присваивания.

anonymous
()
Ответ на: комментарий от ananas

И по cttl+o у тебя полная жопа.

В смысле? Оно у меня для C-o и сделано. Крайне редко возникает какой-то косяк с отрисовкой, но он лечится C-l. С RPROMPT тоже проблем не помню, но я его мог совсем отключать, не помню уже.

anonymous
()
Ответ на: комментарий от oriko32
diff -urNp mc-4.8.21-orig/lib/util.c mc-4.8.21/lib/util.c
--- mc-4.8.21-orig/lib/util.c	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/lib/util.c	2018-06-04 09:48:56.909968932 +0300
@@ -719,100 +719,6 @@ skip_numbers (const char *s)
 }
 
 /* --------------------------------------------------------------------------------------------- */
-/**
- * Remove all control sequences from the argument string.  We define
- * "control sequence", in a sort of pidgin BNF, as follows:
- *
- * control-seq = Esc non-'['
- *             | Esc '[' (0 or more digits or ';' or ':' or '?') (any other char)
- *
- * The 256-color and true-color escape sequences should allow either ';' or ':' inside as separator,
- * actually, ':' is the more correct according to ECMA-48.
- * Some terminal emulators (e.g. xterm, gnome-terminal) support this.
- *
- * Non-printable characters are also removed.
- */
-
-char *
-strip_ctrl_codes (char *s)
-{
-    char *w;                    /* Current position where the stripped data is written */
-    char *r;                    /* Current position where the original data is read */
-
-    if (s == NULL)
-        return NULL;
-
-    for (w = s, r = s; *r != '\0';)
-    {
-        if (*r == ESC_CHAR)
-        {
-            /* Skip the control sequence's arguments */ ;
-            /* '(' need to avoid strange 'B' letter in *Suse (if mc runs under root user) */
-            if (*(++r) == '[' || *r == '(')
-            {
-                /* strchr() matches trailing binary 0 */
-                while (*(++r) != '\0' && strchr ("0123456789;:?", *r) != NULL)
-                    ;
-            }
-            else if (*r == ']')
-            {
-                /*
-                 * Skip xterm's OSC (Operating System Command)
-                 * http://www.xfree86.org/current/ctlseqs.html
-                 * OSC P s ; P t ST
-                 * OSC P s ; P t BEL
-                 */
-                char *new_r = r;
-
-                for (; *new_r != '\0'; ++new_r)
-                {
-                    switch (*new_r)
-                    {
-                        /* BEL */
-                    case '\a':
-                        r = new_r;
-                        goto osc_out;
-                    case ESC_CHAR:
-                        /* ST */
-                        if (*(new_r + 1) == '\\')
-                        {
-                            r = new_r + 1;
-                            goto osc_out;
-                        }
-                    default:
-                        break;
-                    }
-                }
-              osc_out:
-                ;
-            }
-
-            /*
-             * Now we are at the last character of the sequence.
-             * Skip it unless it's binary 0.
-             */
-            if (*r != '\0')
-                r++;
-        }
-        else
-        {
-            char *n;
-
-            n = str_get_next_char (r);
-            if (str_isprint (r))
-            {
-                memmove (w, r, n - r);
-                w += n - r;
-            }
-            r = n;
-        }
-    }
-
-    *w = '\0';
-    return s;
-}
-
-/* --------------------------------------------------------------------------------------------- */
 
 enum compression_type
 get_compression_type (int fd, const char *name)
diff -urNp mc-4.8.21-orig/lib/util.h mc-4.8.21/lib/util.h
--- mc-4.8.21-orig/lib/util.h	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/lib/util.h	2018-06-04 09:48:56.909968932 +0300
@@ -161,7 +161,6 @@ const char *extension (const char *);
 const char *unix_error_string (int error_num);
 const char *skip_separators (const char *s);
 const char *skip_numbers (const char *s);
-char *strip_ctrl_codes (char *s);
 
 /* Replaces "\\E" and "\\e" with "\033". Replaces "^" + [a-z] with
  * ((char) 1 + (c - 'a')). The same goes for "^" + [A-Z].
diff -urNp mc-4.8.21-orig/src/execute.c mc-4.8.21/src/execute.c
--- mc-4.8.21-orig/src/execute.c	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/src/execute.c	2018-06-04 09:48:56.909968932 +0300
@@ -307,9 +307,9 @@ do_executev (const char *shell, int flag
     if (mc_global.tty.console_flag != '\0')
         handle_console (CONSOLE_RESTORE);
 
-    if (!mc_global.tty.use_subshell && *argv != NULL && (flags & EXECUTE_INTERNAL) == 0)
+    if (!mc_global.tty.use_subshell && (flags & EXECUTE_INTERNAL) == 0)
     {
-        printf ("%s%s\n", mc_prompt, *argv);
+        printf ("\n");
         fflush (stdout);
     }
 #ifdef ENABLE_SUBSHELL
diff -urNp mc-4.8.21-orig/src/filemanager/layout.c mc-4.8.21/src/filemanager/layout.c
--- mc-4.8.21-orig/src/filemanager/layout.c	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/src/filemanager/layout.c	2018-06-04 09:48:56.909968932 +0300
@@ -851,44 +851,13 @@ panels_split_less (void)
 void
 setup_cmdline (void)
 {
-    int prompt_width;
     int y;
-    char *tmp_prompt = (char *) mc_prompt;
-
-#ifdef ENABLE_SUBSHELL
-    if (mc_global.tty.use_subshell)
-    {
-        tmp_prompt = g_string_free (subshell_prompt, FALSE);
-        (void) strip_ctrl_codes (tmp_prompt);
-    }
-#endif
-
-    prompt_width = str_term_width1 (tmp_prompt);
-
-    /* Check for prompts too big */
-    if (COLS > 8 && prompt_width > COLS - 8)
-    {
-        int prompt_len;
-
-        prompt_width = COLS - 8;
-        prompt_len = str_offset_to_pos (tmp_prompt, prompt_width);
-        tmp_prompt[prompt_len] = '\0';
-    }
-
-#ifdef ENABLE_SUBSHELL
-    if (mc_global.tty.use_subshell)
-    {
-        subshell_prompt = g_string_new (tmp_prompt);
-        g_free (tmp_prompt);
-        mc_prompt = subshell_prompt->str;
-    }
-#endif
 
     y = LINES - 1 - mc_global.keybar_visible;
 
-    widget_set_size (WIDGET (the_prompt), y, 0, 1, prompt_width);
-    label_set_text (the_prompt, mc_prompt);
-    widget_set_size (WIDGET (cmdline), y, prompt_width, 1, COLS - prompt_width);
+    widget_set_size (WIDGET (the_prompt), y, 0, 1, 3);
+    label_set_text (the_prompt, geteuid() != 0 ? "$> " : "#> ");
+    widget_set_size (WIDGET (cmdline), y, 3, 1, COLS - 3);
 }
 
 /* --------------------------------------------------------------------------------------------- */
diff -urNp mc-4.8.21-orig/src/filemanager/midnight.c mc-4.8.21/src/filemanager/midnight.c
--- mc-4.8.21-orig/src/filemanager/midnight.c	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/src/filemanager/midnight.c	2018-06-04 09:51:09.274968916 +0300
@@ -111,9 +111,6 @@ WLabel *the_hint;
 /* The button bar */
 WButtonBar *the_bar;
 
-/* The prompt */
-const char *mc_prompt = NULL;
-
 /*** file scope macro definitions ****************************************************************/
 
 #ifdef HAVE_CHARSET
@@ -940,7 +937,7 @@ create_file_manager (void)
     cmdline = command_new (0, 0, 0);
     add_widget (midnight_dlg, cmdline);
 
-    the_prompt = label_new (0, 0, mc_prompt);
+    the_prompt = label_new (0, 0, "> ");
     the_prompt->transparent = TRUE;
     add_widget (midnight_dlg, the_prompt);
 
diff -urNp mc-4.8.21-orig/src/filemanager/midnight.h mc-4.8.21/src/filemanager/midnight.h
--- mc-4.8.21-orig/src/filemanager/midnight.h	2017-03-04 19:51:38.000000000 +0200
+++ mc-4.8.21/src/filemanager/midnight.h	2018-06-04 09:48:56.910968932 +0300
@@ -35,8 +35,6 @@ extern WPanel *left_panel;
 extern WPanel *right_panel;
 extern WPanel *current_panel;
 
-extern const char *mc_prompt;
-
 /*** declarations of public functions ************************************************************/
 
 void update_menu (void);
diff -urNp mc-4.8.21-orig/src/main.c mc-4.8.21/src/main.c
--- mc-4.8.21-orig/src/main.c	2018-05-27 22:56:21.000000000 +0300
+++ mc-4.8.21/src/main.c	2018-06-04 09:48:56.910968932 +0300
@@ -393,9 +393,6 @@ main (int argc, char *argv[])
        separate for the normal and alternate screens */
     enable_bracketed_paste ();
 
-    /* subshell_prompt is NULL here */
-    mc_prompt = (geteuid () == 0) ? "# " : "$ ";
-
     if (config_migrated)
     {
         message (D_ERROR, _("Warning"), "%s", config_migrate_msg);
ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.