Powerline: coque multiligne

Créé le 24 avr. 2013  ·  16Commentaires  ·  Source: powerline/powerline

Pour obtenir une invite de shell à deux lignes, j'ai essayé d'ajouter ce qui suit à "segment_data" pour la configuration du shell, mais le triangle a été placé sur la ligne suivante.

    "cwd": {
        "after": "\n"
    }

Résultat:

Selection_029

core cshell enhancement

Commentaire le plus utile

Tous les 16 commentaires

Je peux en déduire quelques astuces pour le faire fonctionner, mais voici une autre proposition : utilisez

# Theme file
{
    "segments": {
        "above": [
            {
                "left": [
                    # First line left segments
                ],
                "right": [
                    # First line right segments
                ]
            },
            {
                # Same for second line
            }
        ],
        "left": [
            # Usual last line segments
        ],
        "right": [
            # Usual last line right segments
        ]
    }
} 

(syntaxe YAML utilisée pour autoriser les commentaires) où la sortie ressemblera à

First line left segments >   < First line right segments
Second line left segments >  < Second line right segments
Left segments > Typed text               < Right segments

@Lokaltog , qu'est-ce que ça fait ?

Cela pourrait très bien fonctionner. Je pense qu'une solution plus élégante pourrait être d'avoir simplement segments une liste, et chaque élément de la liste est un objet qui représente une ligne avec l'habituel left / right clés. Qu'est-ce que tu penses? Il est peut-être moins évident de savoir comment cela fonctionne sans lire la documentation (je peux imaginer que les utilisateurs voient la liste et pensent que chaque élément est un segment et non une ligne), mais je ne sais pas si ce serait un énorme problème.

Il y a deux raisons pour lesquelles je l'ai de cette façon:

  1. Dans n'importe quel moteur de rendu sauf *sh ceux†, toutes les lignes sauf la dernière doivent être ignorées. Cela rend certaines lignes évidemment spéciales, mais pas assez pour préférer ma variante (vous venez d'avertir et d'ignorer toutes les lignes sauf certaines d'entre elles ; pas nécessairement la dernière).
  2. Dans les moteurs de rendu *sh, la dernière ligne est spéciale pour une autre raison : elle comporte un curseur et un espace pour saisir du texte entre les deux.

De cette façon, il serait préférable de sélectionner en quelque sorte la dernière ligne, je préfère ce qui précède. Nous n'avons toujours pas de configuration proposée précédemment (je ne me souviens pas où) concernant la réservation d'une certaine largeur pour le texte tapé (nous n'avons pas non plus de troncature de travail dans les shells : car les côtés sont calculés séparément). Il serait naturel si l'option pour cela n'existait que dans une ligne _special_ et non naturelle si elle n'était valable que pour la dernière.

† À moins que nous ne souhaitions prendre en charge le correctif de ligne d'état multiligne créé par un groupe d'utilisateurs vim japonais (AFAIR).


Soit dit en passant, il existe un moyen d'afficher l'invite sous le curseur, bien que je suppose qu'il y aura de gros problèmes de rendu (zsh a également un tas de données comme l'achèvement à afficher sous l'invite et il est inutile de dire que vous pouvez facilement écrire un script qui s'étend sur plus d'une ligne).

Vous faites un bon point, je suis d'accord avec votre suggestion initiale.

Il semble que la solution de @treyhunner pour une ligne distincte pour l'invite ne fonctionne plus. Voici la configuration minimale que j'ai utilisée pour tester:

{
    "default_module": "powerline.segments.common",
    "segment_data": {
        "cwd": {
            "after": "\n$ "
        }
    },
    "segments": {
        "left": [
            {
                "name": "cwd"
            }
        ]
    }
}

Voici le résultat sur la ligne de commande :

screen shot 2014-06-22 at 3 13 37 pm

Je ne comprends pas pourquoi le caractère control-J (^J) est là.

-----COMMENCER LE MESSAGE SIGNÉ PGP-----
Hachage : SHA512

Le 23 juin 2014 à 02:15:13 GMT+03:00, Chris Lasher [email protected] a écrit :

Cela ressemble à la solution de @treyhunner pour une ligne distincte pour l'invite
ne fonctionne plus. Voici la configuration minimale que j'ai utilisée pour tester:

{
  "default_module": "powerline.segments.common",
  "segment_data": {
      "cwd": {
          "after": "\n$ "
      }
  },
  "segments": {
      "left": [
          {
              "name": "cwd"
          }
      ]
  }
}

Voici le résultat sur la ligne de commande :

screen shot 2014-06-22 at 3 13 37<br />
  pm

Je ne comprends pas pourquoi le caractère control-J (^J) est là.


Répondez directement à cet e-mail ou consultez-le sur GitHub :
https://github.com/Lokaltog/powerline/issues/462#issuecomment -46794678

Cette solution exploitait un bogue qui n'est plus présent. Et vous vous trompez : le caractère CTRL-J n'y est pas présent : les caractères de contrôle ne sont pas affichés dans le terminal.

Si vous demandez pourquoi NL est remplacé par '^J' alors la réponse est simple : parce que NL _est_ CTRL-J.
-----COMMENCER LA SIGNATURE PGP-----
Version : APG v1.1.1

iQJNBAEBCgA3BQJTp1t/MBwfMDI7PjIgHTg6PjswOSAQOzU6QTA9NEA+MjhHIDxr
cC1wYXZAeWFuZGV4LnJ1PgAKCRBu+P2/AXZZIiQvD/9S6V8qIfzstsqTStAQrs4t
gSTaFepaQFy9dBxaGch313+hnfL575KocIwYcvfxKhLfqf6Dy7a+TLtto26DkYYw
lL7Clyjp5vGE6OdzxMQnNjaSpmWUiYYS8UM20pIu3Ejq7rmXAROIqkY7LCRRpbQi
2r7CQzlUQsdjeUz0I8csb5Q4vKDBLy8vTAzcPtcxU8aGHbMoTlHDbiWBkskCf5e8
mayO2+Ij0Uarw9AhVyyUPNVwF5W9G01wCzmjsS6W6mAD3Tv/K6zeKJXtfhdWiOfi
YJmdi1qU4DiAKJ4/USRidAlm8bFfRUbstSzEwc5HoqyMwz9XD6j77IskOIvDjvqA
Qi/i9EFhge8s654FsJmCil1LOLqLc8bDGHvC7uipreozTj/UT5w6hKrf1iHDrv/d
t+kD2rOlX7tftp82RTvzugtPiFBWssOxogM58w5xjL5YOkCIFH6HmOqLnZ8Xui8z
A+qcyRuMKWRyqzSlTRTAlwYYRvFVOUbh3K2iPE0S87XU5Tgfy9iZusdkVTS9/rat
/eIajqk38VZ392fuY9dQAthC0RD6VJ5eqXf+RRNjyRtM1QAUEDMEWlEImf052HTU
zhQXHZVvwoMccSWP0vOA7kylmi0GouPai6vL1Vxs0/6h3BTdn2p5uuPV0vbwiRol
lX/QG9k137hs0hDJs/b7ng==
=AleT
-----FIN DE LA SIGNATURE PGP-----

Cette solution exploitait un bogue qui n'est plus présent.

Il n'y a aucune mention du bogue ou de ses effets secondaires ailleurs dans ce numéro. C'est bien cependant. Alors, quelle est la nouvelle façon de dire au composant shell de Powerline, "casser la ligne" ?

Je souhaite placer mon invite sur une ligne distincte des informations contenues dans les segments Powerline, comme décrit à l' adresse http://agperson.com/entry/4081. Comment puis-je faire cela, si la nouvelle ligne dans "après" est maintenant considérée comme un exploit de bogue ?

Et vous vous trompez : le caractère CTRL-J n'y est pas présent : les caractères de contrôle ne sont pas affichés dans le terminal.

Très bien, Powerline affiche un "caret suivi d'un J majuscule", pas un "Control-J" littéral, au lieu d'un caractère de retour à la ligne. Sur la base de la documentation existante que j'ai dû trouver par des recherches sur le Web, dont l'une m'a conduit ici, "caret suivi d'un J majuscule" n'était pas le comportement attendu.

Il n'y a aucune mention du bogue ou de ses effets secondaires ailleurs dans ce numéro. C'est bien cependant. Alors, quelle est la nouvelle façon de dire au composant shell de Powerline, "casser la ligne" ?

S'il y avait ce problème serait clos. Actuellement, il n'y a aucun moyen d'avoir une invite multiligne.

@gotgenes Découvrez la nouvelle succursale multiline-prompt à git://github.com/ZyX-I/powerline .

Remarque : je testais ma branche avec

{
    "default_module": "powerline.segments.common",
    "segment_data": {
        "hostname": {
            "before": " ",
            "args": {
                "only_if_ssh": true
            }
        },
        "virtualenv": {
            "before": "ⓔ  "
        },
        "branch": {
            "before": " "
        }
    },
    "segments": {
        "above": [
            {
                "left": [
                    {
                        "name": "cwd"
                    },
                    {
                        "type": "string",
                        "highlight_group": "cwd",
                        "draw_soft_divider": false,
                        "draw_hard_divider": false,
                        "width": "auto"
                    }
                ],
                "right": [
                    {
                        "name": "user"
                    }
                ]
            }
        ],
        "left": [
            {
                "module": "powerline.segments.shell",
                "name": "mode"
            },
            {
                "name": "hostname"
            },
            {
                "name": "user"
            },
            {
                "name": "virtualenv"
            },
            {
                "name": "cwd",
                "args": {
                    "use_path_separator": true,
                    "ellipsis": "…",
                    "dir_limit_depth": 3
                }
            },
            {
                "module": "powerline.segments.shell",
                "name": "jobnum"
            }
        ],
        "right": [
            {
                "module": "powerline.segments.shell",
                "name": "last_pipe_status"
            },
            {
                "name": "branch"
            }
        ]
    }
}

en ${XDG_CONFIG_HOME:-$HOME/.config}/powerline/themes/shell/default.json .

Pourquoi faire du "ci-dessus" un cas particulier ; pourquoi ne pas simplement faire des segments eux-mêmes un tableau avec des objets contenant "left" et/ou "right" ? Les objets sont rendus par ordre d'apparition dans le tableau sous forme de lignes séparées, du premier au dernier.

En utilisant votre exemple ci-dessus :

    "segments": [
        {
            "left": [
                {
                    "name": "cwd"
                },
                {
                    "type": "string",
                    "highlight_group": "cwd",
                    "draw_soft_divider": false,
                    "draw_hard_divider": false,
                    "width": "auto"
                }
            ],
            "right": [
                {
                    "name": "user"
                }
            ]
        },
        {
            "left": [
                {
                    "module": "powerline.segments.shell",
                    "name": "mode"
                },
                {
                    "name": "hostname"
                },
                {
                    "name": "user"
                },
                {
                    "name": "virtualenv"
                },
                {
                    "name": "cwd",
                    "args": {
                        "use_path_separator": true,
                        "ellipsis": "…",
                        "dir_limit_depth": 3
                    }
                },
                {
                    "module": "powerline.segments.shell",
                    "name": "jobnum"
                }
            ],
            "right": [
                {
                    "module": "powerline.segments.shell",
                    "name": "last_pipe_status"
                },
                {
                    "name": "branch"
                }
            ]
        }
    ]

-----COMMENCER LE MESSAGE SIGNÉ PGP-----
Hachage : SHA512

Le 23 juin 2014 à 10:38:10 GMT+03:00, Chris Lasher [email protected] a écrit :

Qu'est-ce que "ci-dessus" étant un cas particulier, pourquoi ne pas simplement faire des segments eux-mêmes un
tableau avec des objets contenant "left" et/ou "right" ? Les objets sont
rendus par ordre d'apparition dans le tableau sous forme de lignes séparées, à partir de
du premier au dernier.

Vous devriez lire ce numéro à partir du haut, votre question a déjà reçu une réponse.

En utilisant votre exemple ci-dessus :

   "segments": [
       {
           "left": [
               {
                   "name": "cwd"
               },
               {
                   "type": "string",
                   "highlight_group": "cwd",
                   "draw_soft_divider": false,
                   "draw_hard_divider": false,
                   "width": "auto"
               }
           ],
           "right": [
               {
                   "name": "user"
               }
           ]
       },
       {
           "left": [
               {
                   "module": "powerline.segments.shell",
                   "name": "mode"
               },
               {
                   "name": "hostname"
               },
               {
                   "name": "user"
               },
               {
                   "name": "virtualenv"
               },
               {
                   "name": "cwd",
                   "args": {
                       "use_path_separator": true,
                       "ellipsis": "…",
                       "dir_limit_depth": 3
                   }
               },
               {
                   "module": "powerline.segments.shell",
                   "name": "jobnum"
               }
           ],
           "right": [
               {
                   "module": "powerline.segments.shell",
                   "name": "last_pipe_status"
               },
               {
                   "name": "branch"
               }
           ]
       }
   ]

Répondez directement à cet e-mail ou consultez-le sur GitHub :
https://github.com/Lokaltog/powerline/issues/462#issuecomment -46810514

-----COMMENCER LA SIGNATURE PGP-----
Version : APG v1.1.1

iQJNBAEBCgA3BQJTp9p+MBwfMDI7PjIgHTg6PjswOSAQOzU6QTA9NEA+MjhHIDxr
cC1wYXZAeWFuZGV4LnJ1PgAKCRBu+P2/AXZZIr45EADM3dVGi1ryTRubE5c7SJmD
cvE4mSg/4TXTRPQcfCUxcIYN9fq8tF7FRSx9lWa7C3SJ/RIF6mBm0z1wQopx9CHo
UbjrMAW23JEXsJRMVyg8Jzmk5YKrUJMBa1W507y3DMw+6Vhm71Kw3yQKFsR/vNNG
6dW0dXpm22qXCSuT3aX+6ACWLjuHbGVrLEhbG4AF+jrakrO9M/6jbDPU97pkmh20
0TCcF177juhZ+ssaN2FZQ7NRGgdVg9VFw5eEisheQTVLiZ+YPUL3kF5k8PM+mEc/
gjLCGIdAEoAjGLbMx7DAqI4X1gJ57Z28vcLF4FzbOn2yCxhZg8X2gvG3TePx7vkd
3nWN67ct+FwnI5C5oIEF6vJuw1zBbMuyrizqHljXuHp3yRzUNBq3En6EnpkXnzXC
ly4pJ9/nKmSFSY0cj6gh94qND3/koWPoVmu4V0r3GFEzyWM1KtAo86dRUiIbG8BD
GjDucOqJrA//LrRavezhe4JXzH06z5cbZ3d0npydBd+E4USe/dxwNv8bbDdAnI2Q
5wiC1oXEUdEmXBz3HsSA6pQ+Kd2seOldAqZyz2oiJZB9Y+DoDaeyawAvRxNBS3xe
uBdLuAvjuo/XeSUxgue+wNcoWKtnNLJ4PVGJjMsFJwI6fOnRZZG1wAsuVzi77K2h
arcazcmqTjRAyel6sGuJtw==
=4r6h
-----FIN DE LA SIGNATURE PGP-----

Assez juste.

J'ai regardé et regardé, et je ne peux pas comprendre comment puis-je avoir cela sur 2 lignes.
Pouvez-vous s'il vous plaît fournir un petit exemple?

Merci.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

sbusch picture sbusch  ·  5Commentaires

damienstanton picture damienstanton  ·  5Commentaires

ssbanerje picture ssbanerje  ·  6Commentaires

pklebba picture pklebba  ·  5Commentaires

iamjboyd picture iamjboyd  ·  6Commentaires