Differenza tra load-file e load


17

Ho esaminato la documentazione di entrambe le funzioni, ma non sembrano fornire molte informazioni. Qual è la differenza effettiva tra loro a parte il fatto che loadè una funzione integrata nel codice sorgente C mentre load-file è una funzione compilata elenco interattivo.

Qual è la funzione consigliata da utilizzare in init.elquanto entrambi sembrano fare lo stesso lavoro?


2
Quale parte della documentazione per questo non era chiara al riguardo? Consideriamo segnalato il problema doc, se davvero pensate che ci sia uno: M-x report-emacs-bug. Come dice @shosti, e come indica chiaramente il documento, load-file" non usa load-pathe non aggiunge suffissi ", per due importanti differenze.
Disegnò il

Vedi anche il manuale di Emacs, nodo Librerie Lisp .
Estratto il

Risposte:


14

Esistono diversi modi per caricare i file Lisp in Emacs:

  1. load-fileprende un nome di file letterale (relativo o assoluto) e carica il codice. Esempio:(load-file "/usr/local/share/site-lisp/foo.el")
  2. loadè come load-file, tranne per il fatto che è più flessibile: puoi tralasciare l'estensione e caricherà automaticamente il file "elc" o "el" come appropriato.
    Guarda anche nelle load-pathdirectory.
    Esempio: (load "foo")(se "foo.el" si trova nella directory corrente o nel percorso di caricamento ").
  3. load-libraryè un'interfaccia interattiva per load.
  4. requireè simile a load, tranne per il fatto che impedisce il caricamento del file più di una volta (richiede anche provideun'istruzione corrispondente alla fine del file in questione). Esempio:(require 'foo)

3
Il tuo requireesempio è un loadesempio. ;-)
Disegnato il

L' load-fileesempio usa load. :)
giovedì

2
Mi dispiace dire che 2 e 3 erano sbagliati. :-) load fa sguardo nel load-path.
Malabarba,

@Malabarba Oops, hai ragione, grazie per la correzione. È più confuso di quanto pensassi.
shosti,

8

load-filee load-librarysono comandi per uso interattivo (dove la differenza principale sta nel contenuto iniziale del prompt).

loadè la funzione sottostante da usare quando scrivi Elisp (come nel tuo .emacs).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.