Wie kann ich wissen, welches integrierte Emacs-Paket benötigt werden muss?

8

Ich habe das Changelog für Emacs 24.4 ( C-hn) gelesen und versucht zu sehen, was die Datei-Benachrichtigungsfunktion ist. Ich habe versucht, C-hveine verwandte Variable zu verwenden, auto-revert-use-notifyaber es wurde nichts angezeigt.

Ich habe dann im Emacs-Quellcode nach diesem Variablennamen gesucht und festgestellt, dass er in verwendet wurde lisp/autorevert.el. Danach (require 'autorevert)wurden alle zugrunde liegenden Funktionen und Variablen definiert.

Frage: Woher weiß ich, ob und was ich tun muss, requirewenn ich eine dann inaktive Emacs-Funktion verwenden möchte? Gibt es eine Liste solcher Pakete?

Kaushal Modi
quelle
Ich benutze oft helm apropos, um herauszufinden, welche Arten von Befehlen / Funktionen / Variablen mir zur Verfügung stehen. Es stellt sich heraus, dass manchmal die genaue Einstellung, die ich möchte, "eingebaut" ist, aber ich muss zuerst requiredas Paket.
Nispio

Antworten:

6

Soweit ich weiß, lautet die Antwort auf Ihre Fragen " Sie können es nicht wissen " und " Es gibt keine solche Liste von Bibliotheken ".

aproposund ähnliche Befehle basieren nur auf dem, was aktuell geladen oder automatisch geladen wird, nicht auf dem, was mit Emacs verteilt wird. Sofern etwas nicht (a) eingebaut (dh in C-Code), (b) aus einer bereits geladenen Bibliothek verfügbar oder (c) automatisch geladen ist, wird es von solchen Befehlen nicht ausgewählt.

In diesem Fall besteht Ihr einziger Ausweg darin, den Quellcode zu durchsuchen (soweit ich weiß). Grepping ist eine Möglichkeit, dies zu tun.

Wenn eine Variable wie auto-revert-use-notify(die eine Benutzeroption ist) in den Emacs NEWS ( C-h N) explizit erwähnt wird , wäre es großartig, wenn diese Erwähnung mit der Quellbibliothek verknüpft wäre, die sie definiert, sodass Sie einfach auf ihren Namen RETklicken oder klicken könnten mouse-2um die Bibliotheksdatei bis zu ihrer Definition zu öffnen. Möglicherweise möchten Sie dies M-x report-emacs-bugals Erweiterungsanforderung ablegen.

(Es kann auch nützlich sein, einen Befehl zu haben, um dies im Allgemeinen zu tun: Suchen Sie die Definition einer Variablen oder einer Funktion im verteilten Quellcode, ohne dass die Bibliothek geladen werden muss. In diesem Fall kannten Sie den genauen Variablennamen, aber musste grepherausfinden, wo es definiert ist.)

Drew
quelle
Klingt so, als wäre es Zeit für ein require+Paket, mit dem Sie die Symbole von Paketen durchsuchen können, die noch nicht geladen wurden. ;-)
Nispio
@nispio: Mach es! Mit optionalem Verhalten können Sie entweder (1) Bibliotheken durchsuchen, die mit der Emacs-Distribution bereitgestellt werden, oder (2) Bibliotheken in Ihrer load-path. ;-) (Aber eine Bibliothek mit dem Namen apropos+.elexistiert bereits, wie minimal sie auch sein require
Drew