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

1685
Squidly

Ich habe (set-face-attribute 'default nil :height 100)in meine init.el aufgenommen, 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 ...)Sexpsps danach, die es überschreiben könnten.

Wenn Sie init.elnach dem Laden von emacs wieder in my gehen und es selbst ausführen, wird die Eigenschaft korrekt festgelegt (dh für alle Puffer (nicht für neue Frames)).

3
Obwohl Ihr `init.el` es nicht überschreibt, hat es trotzdem keine Wirkung. Vielleicht ist 'set-face-attribute' eine Eigenschaft pro Puffer? (Dies ist alles aus dem Gedächtnis). Sie könnten versuchen, den Befehl in einen Hook zu setzen, der später ausgeführt wird. alexis vor 10 Jahren 0
Der Code ist korrekt. Verwenden Sie nur das in Ihrer Init-Datei und entfernen Sie alle anderen Codes und Pakete. Wenn es dann funktioniert (dh mit einem leeren Init außer dem `set-face-attribut. .``), dann haben Sie einen Konflikt mit einem anderen Element in Ihren anderen Einstellungen. Wenn Sie bereits nach einem anderen möglichen Set-Face-Attribut gesucht haben und nichts gefunden haben, und wenn Sie Ihre Farbschemas deaktiviert haben, müssen Sie die restlichen Einstellungen langsam wieder aktivieren, bis Sie den Konflikt gefunden haben. Suchen Sie auch nach Frame-Einstellungen mit Schriftartspezifikationen, z. B. "default-frame-alist". lawlist vor 10 Jahren 2

2 Antworten auf die Frage

3
Squidly

Nachdem ich meine Konfigurationsdatei ein wenig herausgeschnitten hatte, stellte ich fest, dass es daran lag (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12")).

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

Die Lösung besteht darin, das zu ändernde sexp zu ändern und dasjenige default-frame-alistzu (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12") '(height . 100))entfernen, das das Gesichtsattribut direkt ändert

1. You should accept your own answer, if it is adequate. 2. Why don't you customize `default-frame-alist` (`M-x customize-option`), instead of fiddling with it using Lisp in your init file? It is a user option for a reason. Drew vor 10 Jahren 1
Weil es anscheinend noch nicht so funktioniert, wie beabsichtigt. Ich war noch nicht zurückgekommen, um die Antwort zu bearbeiten. Was elisp anbetrifft, so ziehe ich es vor, individualisieren zu verwenden - ich denke, dass beide Optionen gültig sind, und ich bevorzuge den elisp-Ansatz. Squidly vor 10 Jahren 0
0
preskitt91

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

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. Requisiten auf alexis in den Kommentaren zu OP für den Vorschlag.

Führt dies nicht zu einer falschen Schriftgröße im anfänglichen Scratch-Puffer? Radon Rosborough vor 5 Jahren 0