Examinei a documentação de ambas as funções, mas elas não parecem lançar muita informação. Qual é a diferença real entre eles, além do fato de load
ser uma função interna no código-fonte C, enquanto o arquivo de carregamento é uma função compilada de lista interativa.
Qual é a função recomendada para usar, init.el
pois ambos parecem estar fazendo o mesmo trabalho?
M-x report-emacs-bug
. Como o @shosti diz, e como o documento indica claramente,load-file
" não usaload-path
e não acrescenta sufixos ", por duas diferenças importantes.Respostas:
Existem várias maneiras de carregar arquivos Lisp no Emacs:
load-file
pega um nome de arquivo literal (relativo ou absoluto) e carrega o código. Exemplo:(load-file "/usr/local/share/site-lisp/foo.el")
load
é comoload-file
, exceto por ser mais flexível - você pode excluir a extensão e ela carregará automaticamente o arquivo "elc" ou "el" conforme apropriado.Também examina os
load-path
diretórios.Exemplo:
(load "foo")
(se "foo.el" estiver no diretório atual ou no caminho de carregamento ").load-library
é uma interface interativa paraload
.require
é semelhante aload
, exceto que impede que o arquivo seja carregado mais de uma vez (também requer umaprovide
declaração correspondente no final do arquivo em questão). Exemplo:(require 'foo)
fonte
require
exemplo é umload
exemplo. ;-)load-file
exemplo usaload
. :)load
faz olhar para a carga-path.load-file
eload-library
são comandos para uso interativo (onde a principal diferença está no conteúdo inicial do prompt).load
é a função subjacente a ser usada quando você escreve o Elisp (como no seu .emacs).fonte