Aquamacs überschreibt meine benutzerdefinierten Gesichtsoptionen

2387
Roberto Aloi

Ich habe Aquamacs gerade auf meinem Mac installiert.

Ich habe eine .emacs-Datei in meinem Zuhause, die alle meine Anpassungen enthält. Unter diesen habe ich:

(custom-set-faces '(default ((t (:stipple nil :background "black" :foreground "grey70" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 140 :width normal :foundry "apple" :family "Monaco")))) '(font-lock-builtin-face ((t (:foreground "grey50")))) '(font-lock-comment-face ((t (:foreground "darkgreen")))) '(font-lock-constant-face ((t (:foreground "grey50")))) '(font-lock-doc-face ((t (:foreground "grey50")))) '(font-lock-doc-string-face ((t (:foreground "yellow2")))) '(font-lock-function-name-face ((t (:foreground "SteelBlue")))) '(font-lock-keyword-face ((t (:foreground "red")))) '(font-lock-preprocessor-face ((t (:foreground "SteelBlue")))) '(font-lock-reference-face ((t (:foreground "LightSkyBlue")))) '(font-lock-string-face ((t (:foreground "yellow2")))) '(font-lock-type-face ((t (:foreground "violet")))) '(font-lock-variable-name-face ((t (:foreground "orange")))) '(font-lock-warning-face ((t (:foreground "grey50")))) '(isearch ((t (:background "yellow4" :foreground "black")))) '(mode-line ((t (:background "grey90" :foreground "black")))) '(text-mode-default ((t nil))) '(zmacs-region ((t (:background "grey70" :foreground "black"))))) 

Dieser Block scheint nicht automatisch angewendet zu werden.

Wenn ich die Zeilen aus den .emacs auswähle und manuell auswerte, funktioniert alles einwandfrei. Ich vermute, dass diese Optionen an anderer Stelle außer Kraft gesetzt werden.

Wie kann ich das debuggen? Wo soll ich meine benutzerdefinierten Gesichter einstellen?

AKTUALISIEREN:

Nach diesem sollten Präferenzen in der folgenden Reihenfolge geladen werden:

 ~/.emacs (deprecated -- meaning 'should not be used for new installations, but will continue to be supported' -- in Aquamacs on OS X) customizations saved by request or automatically by Aquamacs in customizations.el /Library/Preferences/Emacs/Preferences.el /Library/Preferences/Aquamacs Emacs/Preferences.el ~/Library/Preferences/Emacs/Preferences.el ~/Library/Preferences/Aquamacs Emacs/Preferences.el 

Mein ~/Library/Preferences/Aquamacs Emacs/Preferences.elsieht so aus (standardmäßig):

 (load "~/.emacs") 

Das macht also keinen Sinn für mich ...

5

5 Antworten auf die Frage

3
Vivi

Ich hatte das gleiche Problem beim Einstellen der Farbe des Punktes. Dann fand ich die Datei customizations.el, änderte die Linie und stellte die Farbe des Punktes ein, und alles funktionierte einwandfrei. Ich weiß nicht, ob sich Ihre Datei am selben Ort befinden wird, aber meine wurde hier gefunden:

/ Benutzer / viviannevilar / Bibliothek / Einstellungen / Aquamacs Emacs / customizations.el

Ich habe das schon versucht, aber es hat nicht geholfen ... :( Roberto Aloi vor 14 Jahren 0
Haben Sie versucht, diese Frage bei stackoverflow.com zu stellen? Emacs-Benutzer neigen dazu, dort öfter "rumzuhängen", und ich bin sicher, dass Ihnen jemand helfen könnte .... Vivi vor 14 Jahren 0
3
Roberto Aloi

Gut. Das habe ich am Ende getan. Hauptsächlich habe ich die Gesichter in die Aquamacs-Anpassungen "importiert", indem ich

  • Gestartet wie üblich Aquamacs
  • Selbst wenn das Gesicht in den .emacs definiert ist, wird es von Aquamacs ignoriert
  • Öffnet die .emacs gepuffert
  • Den Gesichtsbereich manuell auswählen und auswerten
  • Optionen -> Darstellung -> Auto-Gesichter -> Auto-Gesichter (ENABLED)
  • Optionen -> Darstellung -> Automatische Flächen -> Gesicht eines Modus übernehmen -> Text
  • Optionen -> Darstellung -> Automatische Flächen -> Flächen- und Rahmenparameter als Flächenvorgabe übernehmen
  • Optionen -> Optionen speichern
  • Entfernen Sie die Gesichter von .emacs

Nach dem Neustart von Aquamacs funktioniert alles gut. Stöhnen.

Danke an alle hier.

2
harrymc

In nick hasst Software: Aquamacs "Emacs", Nick gefunden, dass benutzerdefinierte-Set-Gesichter in Emacs gearbeitet, aber nicht in Aquamacs.

Wie Nick auch, könnten Sie auch Ihren benutzerdefinierten Gesichtscode-Code im Lisp-Interaktionsfenster ausprobieren, wobei Sie vorsichtig mit seinem ^ J-Problem umgehen sollten (was über meine Kenntnisse in Lisp hinausgeht).

Wenn Sie einen Schriftnamen verwenden, können Sie anhand von überprüfen, ob Aquamacs dies versteht emacs -fn fontname. Im Falle eines Fehlers schlagen die benutzerdefinierten Gesichter einfach fehl und Emacs verwendet dann weiterhin die Schriftart, die sonst verwendet worden wäre.

2
Gilles

Die vollständige Emacs-Startsequenz ist im Abschnitt Startup-Zusammenfassung des Emacs Lisp-Handbuchs dokumentiert . Dieses Handbuch dokumentiert keine Aquamacs-spezifischen Erweiterungen.

In einem Kommentar erwähnen Sie, dass Sie Ihre Anpassungen von term-setup-hook' still doesn't work. So what overrides them is either inwindow-setup-hook 'aus oder in einem für Aquamacs spezifischen Schritt vornehmen.

Aquamacs hat einige spezifische Anpassungen für Gesichter, die Ihre Anpassungen durch den Standard-Emacs-Mechanismus überschreiben können. Sie können deaktiviert werden, indem Sie (aquamacs-autoface-mode 0)in .emacsoder über das Menü "Optionen / Erscheinungsbild / Automatische Gesichter / Automatische Gesichter" hinzufügen.

Das Emacs-Wiki enthält einige Informationen darüber , wie sich Aquamacs wie andere Emacsen verhalten .

Ich habe überprüft und die Autofaces sind bereits deaktiviert. :( Roberto Aloi vor 14 Jahren 0
Außerdem habe ich den gesamten Set-Faces-Block hinzugefügt. Vielleicht kann das helfen. Roberto Aloi vor 14 Jahren 0
1
harrymc

Informationen zur .emacs-Datei und zur Problembehandlung finden Sie in diesem Artikel von emacswiki.org .

In diesem Artikel, The Init File, ~ / .emacs, finden Sie mögliche Konflikte.

Von Warum funktioniert dieser [Terminal- oder Fenstersystem-Setup] -Code nicht in meiner `.emacs'-Datei, funktioniert aber nach dem Start von Emacs einwandfrei :

Während des Startvorgangs initialisiert sich Emacs gemäß einer bestimmten Code- / Dateireihenfolge. Wenn ein Teil des in Ihrer `.emacs'-Datei ausgeführten Codes verschoben werden muss, bis der ursprüngliche Code für das Setup des Terminals oder des Fenstersystems ausgeführt wurde, dies jedoch nicht ist, wird dieses Problem auftreten (diese Code / Datei-Ausführungsreihenfolge wird nicht erzwungen nach dem Start).

Um die Ausführung des Emacs-Lisp-Codes bis nach der Einrichtung des Terminals oder des Fenstersystems zu verschieben, behandeln Sie den Code als Lambda-Liste und setzen den Wert der Variablen term-setup-hook oder window-setup-hook auf diese Lambda-Funktion. Zum Beispiel,

(add-hook 'term-setup-hook (lambda () (when (string-match "\\`vt220" (or (getenv "TERM") "")) ;; Make vt220's "Do" key behave like M-x: (global-set-key [do] 'execute-extended-command)))) 
Danke dafür. Ich habe die Frage mit einigen Kommentaren aktualisiert. Ich habe auch versucht, ((add-hook) Term-Setup-Hook (lambda () MY_OLD_CODE)) zu ``, aber es hat nicht geholfen (vorausgesetzt, dies war die Art und Weise, in der es verwendet werden sollte - ich sauge an Lisp). Roberto Aloi vor 14 Jahren 0
Ich bin bei Lisp nicht viel besser, aber irgendwie habe ich das Gefühl, dass das Timing die Erklärung ist: Die Optionen für benutzerdefinierte Gesichter werden nicht zum richtigen Zeitpunkt gelesen. harrymc vor 14 Jahren 0