Risposte:
Sì. Da Named Features (sottolineatura mia):
Il nome di una funzione è un simbolo che rappresenta una raccolta di funzioni, variabili, ecc. Il file che le definisce dovrebbe fornire la funzione. Un altro programma che li utilizza può garantire che siano definiti richiedendo la funzione. Questo carica il file di definizioni se non è già stato caricato.
Per richiedere la presenza di una funzione, chiamare
require
con il nome della funzione come argomento.require
cerca la variabile globalefeatures
per vedere se la funzionalità desiderata è già stata fornita. In caso contrario, carica la funzione dal file appropriato . Questo file dovrebbe chiamareprovide
al livello superiore per aggiungere la funzione afeatures
; in caso contrario ,require
segnala un errore .
Sì, a condizione che il codice rispetti helm.el
o helm.elc
rispetti la regola che deve chiamare (provide 'helm)
. La chiamata (provide 'helm)
contrassegna il simbolo helm
come una funzione caricata e ciò fa sì che la seconda chiamata (require 'helm)
non faccia nulla.
Se il pacchetto caricato non chiama provide
quindi require
segnala un errore e la funzione non è contrassegnata come caricata, quindi una seconda chiamata per (require 'helm)
tentare nuovamente il caricamento (e in genere fallisce di nuovo per lo stesso motivo).