Ich versuche zu überprüfen, ob server-running-p
in meiner .emacs-Datei verfügbar ist, bevor Sie es aufrufen. Ich habe bereits folgendes:Wie überprüft man, ob eine Funktion (z. B. Server-running-p) unter Emacs verfügbar ist?
(if (not (server-running-p))
(server-start))
Aber auf einigen Computern, auf denen ich Emacs verwenden, ruft (server-running-p)
gibt einen Fehler, da der Anruf nicht verfügbar ist. Also ich möchte überprüfen, ob server-running-p
verfügbar ist, bevor Sie es aufrufen. Ich dachte, boundp
würde den Versuch tun, aber (boundp 'server-running-p)
Aufruf nil
aufrufen, obwohl die (server-running-p)
Aufruf erfolgreich ist. Was ist der richtige Weg zu überprüfen, dass der Aufruf server-running-p
wird nicht fehlschlagen ... oder zumindest den Fehler zu unterdrücken, wenn der Anruf fehlschlägt. (Und welche Art von seltsamen Objekt ist server-running-p
trotzdem, dass boundp
kehrt nil
, aber nannte es gelingt?)
Dies ist auf Emacs 23.2.1, ob es einen Unterschied macht.
Eigentlich die Antwort gefunden. Sie müssen dafür fboundp
anstatt boundp
aus irgendeinem Grund verwenden.
Der Grund ist, dass Sie eine Funktion und eine Variable mit demselben Namen haben können (z. B. 'font-lock-mode'). Daher brauchen Sie verschiedene Funktionen zu fragen "Ist das eine Variable?" und "Ist das eine Funktion?" – cjm
Danke. Ich hatte diese Besonderheit einiger Lisp-Sprachen völlig vergessen. Macht jetzt mehr Sinn. –