Warum läuft der Emacs in init.el nicht (set-face-attribute ...), obwohl der Rest des Puffers ausgeführt wird?

3

Ich habe (set-face-attribute 'default nil :height 100)mein Init.el eingetragen, weil ich die Standardschriftgröße etwas zu groß finde. Es wird jedoch nicht ausgeführt, wenn Emacs geladen wird.

Ich habe keine init.elcDatei, die keine repräsentative aktualisierte Version von mir ist init.el, und ich weiß, dass der Rest von mir init.elausgeführt wird.

Es gibt keine anderen (set-face-attribute ...)Sexps, die es überschreiben könnten.

Wenn Sie init.elnach dem Laden von Emacs zu my zurückkehren und es selbst ausführen, wird die Eigenschaft korrekt festgelegt (dh für alle Puffer (aber keine neuen Frames), dauerhaft).

Tintenfisch
quelle
Obwohl Sie init.eles nicht überschreiben, könnte es dennoch keine Wirkung haben. Möglicherweise set-face-attributehandelt es sich um eine pufferbezogene Eigenschaft? (Dies ist alles aus dem Gedächtnis). Sie können versuchen, den Befehl in einen Hook zu setzen, der später ausgeführt wird.
Alexis
2
Der Code ist korrekt. Versuchen Sie, nur das in Ihrer Init-Datei zu verwenden, und beseitigen Sie alle anderen Codes und Pakete. Wenn es dann funktioniert (dh mit einem leeren Init außer dem set-face-attribute . . .), haben Sie einen Konflikt mit etwas anderem in Ihren anderen Einstellungen. Wenn Sie bereits nach anderen Möglichkeiten gegriffen haben set-face-attributeund nichts gefunden haben und Ihre Farbthemen deaktiviert haben, müssen Sie die restlichen Einstellungen langsam wieder aktivieren, bis Sie den Konflikt finden. Suchen Sie auch nach Rahmeneinstellungen mit Schriftartangaben wie default-frame-alist.
Gesetzesliste

Antworten:

3

Nachdem ich ein paar Teile aus meiner Konfigurationsdatei herausgeschnitten hatte, stellte ich fest, dass dies auf Folgendes zurückzuführen war (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12")).

Der Grund, warum ich es vorher ausgeschlossen hatte, war, dass ich (set-face-attribute 'default nil :height 100)ganz am Ende meiner Init-Datei lief.

Die Lösung ist die sexp zu ändern , die verändert default-frame-alistzu werden (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12") '(height . 100)), und nehmen Sie die eine, die das Gesicht-Attribut ändert direkt

Tintenfisch
quelle
1
1. Sie sollten Ihre eigene Antwort akzeptieren, wenn dies angemessen ist. 2. Warum passen Sie nicht default-frame-alist( M-x customize-option) an, anstatt mit Lisp in Ihrer Init-Datei herumzuspielen? Dies ist aus einem bestimmten Grund eine Benutzeroption.
Drew
Weil es noch nicht ganz so funktioniert wie geplant. Ich war noch nicht zurückgekommen, um die Antwort zu bearbeiten. Für elisp bevorzuge ich die Verwendung von "Anpassen". Ich denke, dass beide Optionen gültig sind, und ich bevorzuge den elisp-Ansatz.
Tintenfisch
0

Dies ist ein alter Thread, aber ich hatte das gleiche Problem und konnte es beheben. Ich sehe, dass Sie das auch getan haben, aber meine Lösung beitragen wollten, da ich sie nirgendwo anders gefunden habe.

Ich habe gerade die folgende Zeile zu meinem ~ / .emacs.d / init.el hinzugefügt:

(add-hook 'find-file-hook (lambda () (set-face-attribute 'default nil :height 105)))

Und es hat funktioniert. Props to alexis in den Kommentaren zu OP für den Vorschlag.

preskitt91
quelle
Führt dies nicht zu einer falschen Schriftgröße im anfänglichen Arbeitspuffer?
Radon Rosborough