Perbedaan antara load-file dan load

17

Saya membaca dokumentasi kedua fungsi tersebut tetapi sepertinya tidak banyak informasi. Apa perbedaan sebenarnya di antara mereka selain dari fakta bahwa itu loadadalah fungsi built-in dalam kode sumber C sedangkan load-file adalah fungsi kompilasi daftar interaktif.

Apa fungsi yang direkomendasikan untuk digunakan init.elkarena keduanya tampaknya melakukan pekerjaan yang sama?

Sibi
sumber
2
Apa bagian dari dokumentasi untuk ini tidak jelas dalam hal ini? Pertimbangkan melaporkan masalah doc, jika Anda benar-benar berpikir ada satu: M-x report-emacs-bug. Seperti yang dikatakan @shosti, dan seperti yang ditunjukkan oleh dokumen dengan jelas, load-file" tidak menggunakan load-path, dan tidak menambahkan sufiks ", untuk dua perbedaan penting.
Drew
Lihat juga manual Emacs, node Lisp Libraries .
Drew

Jawaban:

14

Ada beberapa cara untuk memuat file Lisp di Emacs:

  1. load-filemengambil nama file literal (relatif atau absolut) dan memuat kode. Contoh:(load-file "/usr/local/share/site-lisp/foo.el")
  2. loadseperti load-file, kecuali bahwa itu lebih fleksibel - Anda dapat meninggalkan ekstensi dan secara otomatis akan memuat "elc" atau "el" file yang sesuai.
    Itu juga melihat ke load-pathdirektori.
    Contoh: (load "foo")(jika "foo.el" ada di direktori saat ini atau di path-load ").
  3. load-libraryadalah antarmuka interaktif untuk load.
  4. requiremirip dengan load, kecuali itu mencegah file tidak dimuat lebih dari sekali (itu juga memerlukan providepernyataan yang sesuai di akhir file yang bersangkutan). Contoh:(require 'foo)
shosti
sumber
3
requireContoh Anda adalah loadcontoh. ;-)
Drew
The load-filecontoh menggunakan load. :)
itsjeyd
2
Maaf mengatakan 2 dan 3 salah. :-) load memang melihat ke jalur beban.
Malabarba
@Malabarba Ups, Anda benar, terima kasih atas koreksinya. Itu lebih membingungkan daripada yang saya kira.
shosti
8

load-filedan load-librarymerupakan perintah untuk penggunaan interaktif (di mana perbedaan utama ada pada konten awal prompt).

loadadalah fungsi dasar yang digunakan ketika Anda menulis Elisp (seperti di .emacs Anda).

Stefan
sumber