Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mode line pleine

16 réponses
Avatar
Vincent Lefevre
Bonjour,

Que se passe-t-il quand la mode line devient pleine, i.e. qu'il n'y a
pas assez de colonnes pour afficher toutes les informations?

Y a-t-il un moyen de demander ce qui doit être affiché?

--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

6 réponses

1 2
Avatar
Vincent Lefevre
Dans l'article <47c198d4$0$4197$,
Olivier écrit:

J'ai préféré opter pour une solution moins automatique (mais beaucoup
plus facile à mettre en oeuvre !!)



Je veux que ce soit automatique (c'est important).

> Autre suggestion: avoir des infos affichées dans la partie
> droite de l'echo area (qui est généralement blanche).

Ca, je ne sais pas le faire proprement, dû au caactère "codé en dur".



Ah, tu vois qu'il y a des problèmes de souplesse. :)

Donc, le numéro de version (qui fout le brun, comme on dit
à ch'nord) deveitn cliquable, mouse-1, et est alors remplacé par

vc-mode-adaptative-default-string

qui devient cliquable (mouse-1) et est remplacé alors par son
numéro de version.

Cela te convient-il ?



Non. D'abord, c'est ce problème que ce n'est pas automatique. D'autre
part, j'utilise beaucoup Emacs via des sessions ssh, donc généralement
dans un terminal texte (sinon c'est trop lent). Je peux toujours
écrire mes propres fonctions et les binder sur des touches, mais ça ne
me plaît de toute façon toujours pas, car ce n'est pas automatique.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Olivier
Vincent Lefevre a écrit :
[...]
Ca, je ne sais pas le faire proprement, dû au caactère "codé en dur".



Ah, tu vois qu'il y a des problèmes de souplesse. :)



Oui, quand on code des morceaux en C, c'est le bordel. C'est très, très
inhabituel, mais ici, c'est le cas :-(

[...]

Non. D'abord, c'est ce problème que ce n'est pas automatique. D'autre
part, j'utilise beaucoup Emacs via des sessions ssh, donc généralement
dans un terminal texte (sinon c'est trop lent). Je peux toujours
écrire mes propres fonctions et les binder sur des touches, mais ça ne
me plaît de toute façon toujours pas, car ce n'est pas automatique.



Bon, dans ce cas, il faut calculer la longueur de la modeline,
c'est à dire recoder en elisp une partie de ce qui est en C. Ce n'est
pas très dur, il faut lire doucement les formes diverses, mais
comme elles sont multiformes, il faut coder, coder ...
Une ou deux pages, j'imagine, pour un moment où je voudrais
m'amuser :-)

Sinon, pour le cas présent, je ne vois que le déplacement de vc-mode
en fin de ligne : il ne sera dont pas affiché si cela dépasse :-)

Bon courage alors --
Amitiés,
Olivier
Avatar
Olivier
Emacs 22 offre la fonction format-mode-line qui a la bonne
idee de donner la longueur de la modeline :-)

Voici une utilisation ci-dessous.
En cas de redimensionnement de l'ecran, il faut recharger
le fichier --
A.O.
----------------------------------------------------------
(defvar vc-mode-adaptative-default "$$")
(defvar vc-mode-adaptative-stored vc-mode-adaptative-default)

(defun vc-mode-adaptative-mode-line nil
(interactive)
(setq vc-mode
(propertize vc-mode-adaptative-stored
'help-echo (purecopy "mouse-1: collapse")
'mouse-face 'mode-line-highlight
'local-map
'(keymap
(mode-line keymap
(down-mouse-1 .
vc-mode-adaptative-switch-1)))))
(force-mode-line-update))

(defun vc-mode-adaptative-switch-1 nil
(interactive)
(setq vc-mode
(propertize vc-mode-adaptative-default
'help-echo (purecopy "mouse-1: expand")
'mouse-face 'mode-line-highlight
'local-map
'(keymap
(mode-line keymap
(down-mouse-1 .
vc-mode-adaptative-mode-line)))))

(force-mode-line-update))

(defadvice vc-mode-line (after vc-mode-adaptative-advice nil)
""
(setq vc-mode-adaptative-stored vc-mode)
(if (> (length (format-mode-line mode-line-format))
(window-width))
(vc-mode-adaptative-switch-1)
(vc-mode-adaptative-mode-line)))

(ad-activate 'vc-mode-line)

--------------------------------------------------------------------
Avatar
Vincent Lefevre
Dans l'article <47c30111$0$1157$,
Olivier écrit:

Emacs 22 offre la fonction format-mode-line qui a la bonne
idee de donner la longueur de la modeline :-)

Voici une utilisation ci-dessous.



Ça ne change pas grand chose, parce que:

En cas de redimensionnement de l'ecran, il faut recharger
le fichier --



et surtout en cas de redimensionnement de la mode line! Et c'est
bien le cas qui me préoccupe: ce sont souvent les modes mineurs
(qui apparaissent en cours d'édition du fichier) qui rendent la
mode line trop longue. Il n'y a pas un hook qui peut être appelé
lorsque la mode line change de taille?

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Olivier
Vincent Lefevre a écrit :
Dans l'article <47c30111$0$1157$,
Olivier écrit:

Emacs 22 offre la fonction format-mode-line qui a la bonne
idee de donner la longueur de la modeline :-)



Voici une utilisation ci-dessous.



Ça ne change pas grand chose, parce que:

En cas de redimensionnement de l'ecran, il faut recharger
le fichier --



et surtout en cas de redimensionnement de la mode line! Et c'est
bien le cas qui me préoccupe: ce sont souvent les modes mineurs
(qui apparaissent en cours d'édition du fichier) qui rendent la
mode line trop longue. Il n'y a pas un hook qui peut être appelé
lorsque la mode line change de taille?



D'un côté tu demandes un truc pratique, d'un autre tu demandes
un changement de philosophie --
Alors
-- si les modes mineurs te gènent, met les en fin d'affichage.
-- si tu veux garder l'heure, met là en début d'affichage.
-- si tu veux un update de la mode-line à chaque mise en place
des modes mineurs, rend la minor-mode-alist dynamique.
-- si tu veux updater la mode-line a volo, entours la fonction
force-update-mode-line d'un interactive et lie là à une touche.
-- si tu veux updater la mode-line à chaque insertion de texte,
met cette fonction dans les after-change-functions.
-- si tu veux updater la mode-line à chaque changement de mode majeur
met cette fonction dans les after-change-major-mode.

Voilà tout ce qu'ai dans mon escarcelle --
J'arrête ici mon inutilité :-p
A.O.
Avatar
Vincent Lefevre
Dans l'article <47c3cb40$0$30789$,
Olivier écrit:

-- si les modes mineurs te gènent, met les en fin d'affichage.



Au contraire, je les veux en priorité.

-- si tu veux garder l'heure, met là en début d'affichage.



Mais que dois-je faire si je veux garder l'heure, mais virer la date
en priorité, les deux devant se trouver côte à côte lorsque la date
est affichée?

-- si tu veux un update de la mode-line à chaque mise en place
des modes mineurs, rend la minor-mode-alist dynamique.



C'est à dire?

-- si tu veux updater la mode-line a volo, entours la fonction
force-update-mode-line d'un interactive et lie là à une touche.



Non, ce n'est pas automatique.

-- si tu veux updater la mode-line à chaque insertion de texte,
met cette fonction dans les after-change-functions.



Ce ne sont pas les modifications du buffer qui posent problème.

-- si tu veux updater la mode-line à chaque changement de mode majeur
met cette fonction dans les after-change-major-mode.



Et si je veux updater la mode-line à chaque changement de la mode-line?
(genre à chaque fois que force-mode-line-update est appelée, par exemple)

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
1 2