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

Taille de police et getenv

5 réponses
Avatar
Lucas Levrel
Bonjour,

Je voudrais que la taille de la /default face/ soit lue dans une variable
d'environnement. Actuellement dans .emacs j'ai :

(custom-set-faces
'(default ((t (:inherit nil :stipple nil :background "grey80" :foreground
"black" :inverse-video nil :box nil :strike-through nil :overline nil
:underline nil :slant normal :weight normal :height 110 :width normal
:foundry "unknown" :family "Droid Sans Mono"))))
...

Et je voudrais donc que le 110 soit remplacé par la valeur de
EMACS_FACESIZE. Il y a quelques années, pour lire la taille de la fenêtre
dans une variable, on m'avait donné ici ce bout de code (qu'« on » soit à
nouveau remercié, d'ailleurs) :

'(default-frame-alist (cons (cons (quote height) (string-to-int (getenv
"EMACS_HEIGHT"))) (quote ((menu-bar-lines . 1) (tool-bar-lines . 0) (width
. 82)))))

J'ai essayé de l'adapter mais comme je n'y connais rien en Lisp je n'y
arrive pas. Le plus proche auquel j'arrive c'est [en coupant des bouts
pour le test] :
(cons ':inherit (cons nil (cons ':weight (cons 'normal (cons ':height
(cons (string-to-int (getenv "EMACS_HEIGHT")) '(:foundry "unknown")))))))
Je suppose qu'il y a moyen avec moins de parenthèses !

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)

5 réponses

Avatar
Lucas Levrel
Bonjour,
Le 16 janvier 2017, à 16:02, Lucas Levrel a écrit :
Je voudrais que la taille de la /default face/ soit lue dans une variable
d'environnement. Actuellement dans .emacs j'ai :
(custom-set-faces
'(default ((t (:inherit nil :stipple nil :background "grey80" :foreground
"black" :inverse-video nil :box nil :strike-through nil :overline nil
:underline nil :slant normal :weight normal :height 110 :width normal
:foundry "unknown" :family "Droid Sans Mono"))))
...

J'ai posé la question sur emacs.stackexchange.com
(http://emacs.stackexchange.com/questions/30109/size-of-default-face-from-environment-variable)
et l'on m'a proposé ceci :
(custom-set-faces
`(default ((t (:inherit nil [...]
:height ,(string-to-int (getenv "EMACS_FONT_HEIGHT"))
[...] :family "Droid Sans Mono"))))
)
Le gros inconvénient, c'est qu'il n'est plus possible d'utiliser Custom —
même pour des variables autres que des polices ! — car il écrase cette
expression par un réglage de la valeur « en dur ».
J'ai essayé de sortir ce réglage de custom-set-faces et de le faire « à
part » avec set-face-attribute mais je n'y arrive pas. Auriez-vous une
solution ?
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Benoit Izac
Bonjour,
Le 24/01/2017 à 13:12, Lucas Levrel a écrit dans le message
 :
Je voudrais que la taille de la /default face/ soit lue dans une
variable d'environnement. Actuellement dans .emacs j'ai :
(custom-set-faces
'(default ((t (:inherit nil :stipple nil :background
"grey80" :foreground "black" :inverse-video nil :box
nil :strike-through nil :overline nil :underline nil :slant
normal :weight normal :height 110 :width normal :foundry
"unknown" :family "Droid Sans Mono"))))
...

J'ai posé la question sur emacs.stackexchange.com
(http://emacs.stackexchange.com/questions/30109/size-of-default-face-from-environment-variable)
et l'on m'a proposé ceci :
(custom-set-faces
`(default ((t (:inherit nil [...]
:height ,(string-to-int (getenv "EMACS_FONT_HEIGHT"))
[...] :family "Droid Sans Mono"))))
)
Le gros inconvénient, c'est qu'il n'est plus possible d'utiliser
Custom — même pour des variables autres que des polices ! — car il
écrase cette expression par un réglage de la valeur « en dur ».
J'ai essayé de sortir ce réglage de custom-set-faces et de le faire
« à part » avec set-face-attribute mais je n'y arrive pas. Auriez-vous
une solution ?

Peut-être que le mieux reste de te faire un thème personnalisé ; voir
« 14.6 Custom Themes » dans le manuel elips ou, par exemple,
<https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el>.
--
Benoit Izac
Avatar
Lucas Levrel
Le 24 janvier 2017, à 15:21, Benoit Izac a écrit :
(custom-set-faces
`(default ((t (:inherit nil [...]
:height ,(string-to-int (getenv "EMACS_FONT_HEIGHT"))
[...] :family "Droid Sans Mono"))))
)

Peut-être que le mieux reste de te faire un thème personnalisé ; voir
« 14.6 Custom Themes » dans le manuel elips ou, par exemple,
<https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el>.

Merci Benoît. Le lien fait plutôt peur vue la faible ampleur des modifs
que j'ai à faire, mais en suivant aussi la doc d'Emacs
https://www.gnu.org/software/emacs/manual/html_node/emacs/Creating-Custom-Themes.html#Creating-Custom-Themes
j'y suis parvenu.
J'ai donc maintenant deux micro-thèmes contenant quelque chose comme :
---
(custom-theme-set-faces
'toto
'(default ((t (:height 127)))))
---
et dans mon .emacs j'ai inséré :
---
(if (string-equal "toto" (getenv "PROFIL"))
(load-theme 'toto t)
(load-theme 'titi t))
---
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
C'est mieux avé les accents (F. Patte)
Avatar
vincent.belaiche
Lucas Levrel writes:
Le 24 janvier 2017, à 15:21, Benoit Izac a écrit :
(custom-set-faces
`(default ((t (:inherit nil [...]
:height ,(string-to-int (getenv "EMACS_FONT_HEIGHT"))
[...] :family "Droid Sans Mono"))))
)

Peut-être que le mieux reste de te faire un thème personnalisé ; voir
« 14.6 Custom Themes » dans le manuel elips ou, par exemple,
<https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el>.

Merci Benoît. Le lien fait plutôt peur vue la faible ampleur des
modifs que j'ai à faire, mais en suivant aussi la doc d'Emacs
https://www.gnu.org/software/emacs/manual/html_node/emacs/Creating-Custom-Themes.html#Creating-Custom-Themes
j'y suis parvenu.
J'ai donc maintenant deux micro-thèmes contenant quelque chose comme :
---
(custom-theme-set-faces
'toto
'(default ((t (:height 127)))))
---
et dans mon .emacs j'ai inséré :
---
(if (string-equal "toto" (getenv "PROFIL"))
(load-theme 'toto t)
(load-theme 'titi t))
---

Dans mon fichier d'init, j'ai le code suivant que j'ai créé il y a
vraiment un bout de temps, et je ne me souviens plus d'où j'ai sorti
cela.
Ce qu'il faut retenir c'est que j'utilise la variable
initial-frame-alist pour régler les paramètres initiaux de la fenêtre
(taille, police, taille de police).
Un petit détail : j'utilise la bibliothèque mathématique calc-ext pour
faire les calculs, mais en fait il y a tout ce qu'il faut en Elisp de
base.
--8<----8<----8<----8<----8<-- begin -->8---->8---->8---->8---->8----
;; Plein écran & police
;;-------------------------------------------------------------------
(require 'calc-ext)
(let ((font-size 14)
(h-font-size (math-read-number "11.6"))
(v-font-size (math-read-number "20.5"))
(tool-bar-lines 0)
(menu-bar-lines 1)
calc-command-line)
(setq initial-frame-alist
`(
(font . ,(concat "-*-Lucida Console-*-*-*-*-*-"
(number-to-string (* 10 font-size))
"-*-*-*-*-iso8859-1"))
(top . 1)
(left . 1)
(width . ,(math-fixnum
(calcFunc-round (math-div
(x-display-pixel-width)
h-font-size))))
(height . ,(math-fixnum
(calcFunc-round
(calcFunc-sub (math-div (x-display-pixel-height) v-font-size)
tool-bar-lines menu-bar-lines))))
(tool-bar-lines . ,tool-bar-lines)
(menu-bar-lines . ,menu-bar-lines)
(right-fringe)
(left-fringe);
));
)
;; calcul de la hauteur du cadre, 37 de base, et on ajoute 1
;; s'il y a la barre d'outils, et encore 1 s'il y a la barre
;; de menu.
(let ((height 49))
(dolist (k '(tool-bar-lines menu-bar-lines))
(let ((c (assoc k initial-frame-alist)))
(when (and c (= 0 (cdr c)))
(setq height (1+ height))
)
)
)
(setq initial-frame-alist (cons (cons 'height height) initial-frame-alist))
)
--8<----8<----8<----8<----8<-- end -->8---->8---->8---->8---->8----
Vincent.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Lucas Levrel
Le 14 mars 2017, à 10:40, Vincent Belaïche a écrit :
Dans mon fichier d'init, j'ai le code suivant que j'ai créé

(...)
Wow. J'archive ton code, mais pour l'instant je n'utilise que deux écrans
différents donc je reste avec mon choix entre deux réglages trouvés à la
main :-)
Merci.
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)