2010-11-03 2 views
11

Da un file lisp che viene caricato ed eseguito con emacs -l path/to/script/foo.el è possibile ottenere il percorso del file in esecuzione?Ottieni il percorso del file di script emacs corrente quando viene caricato con il parametro -l

Ad esempio, c'è un modo per determinare che cos'è path/to/script da foo.el?

Non ho molta esperienza con la chiarezza, quindi sii gentile con le tue soluzioni.

Emacs 22.3.1 su Windows 7

+0

possibile duplicato di [? Come fare riferimento al file in fase di caricamento in Emacs Lisp] (http://stackoverflow.com/questions/ 1344747/how-to-refer-to-the-file-attualmente-essere-caricato-in-emacs-lisp) –

+0

@Trey Jackson, sono d'accordo che è vicino ma mi ci sarebbe voluto un po 'più di tempo per rintracciare la funzione directory-nome-directory. –

risposta

24

La variabile load-file-name è legato al nome del file mentre viene caricato. Per ottenere la directory, si era appena usare file-name-directory, in questo modo:

(file-name-directory load-file-name) 
+0

Perfetto, grazie! –

+0

@JesseVogt Non così * perfetto *; 'eval' it in un file' require'd: 'Debugger inserito - Errore Lisp: (argomento-tipo errato stringp nil) nome-file-directory (nil) ' – yPhil

+0

@yPhil La chiamata a 'file- nome-directory' richiede che una stringa venga passata, apparentemente l'hai chiamata con 'nil'. La variabile è impostata solo durante una chiamata a 'load' - che è il contesto della domanda. –