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?


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)

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).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.