2010-11-03 20 views
11

emacs -l path/to/script/foo.el ile yüklenen ve çalıştırılan bir lisp dosyasından çalıştırılmakta olan dosya yolunu alabilir miyim? Örneğin, path/to/script'un foo.el içinde ne olduğunu belirlemek için bir yolu var mı?-l parametresiyle yüklendiğinde geçerli emacs komut dosyasının yolunu alın

Lisp konusunda çok deneyimli değilim, bu yüzden lütfen çözümlerinizle yumuşak olunuz. o yükleniyor olarak Windows 7

+0

olası yinelenen (http://stackoverflow.com/questions/ 1344747/nasıl-to-dosya-şu anda-olmak-içinde-emacs-lisp) –

+0

@Trey Jackson, ben yakın olduğunu kabul ediyorum ama aşağı izlemek için biraz daha zaman aldı dosya-adı-dizin işlevi. –

cevap

24

değişken load-file-name üzerinde

Emacs 22.3.1 Dosyanın adının bağlıdır. dizini elde etmek için, sadece bu yüzden gibi, file-name-directory kullanmak:

(file-name-directory load-file-name) 
[? Nasıl şu anda Emacs Lisp yüklenen dosyaya başvurmak için] bir
+0

Mükemmel, teşekkürler! –

+0

@JesseVogt Pek * mükemmel *; 'require'd paket dosyasında 'eval'd:' Debugger girildi - Lisp hatası: (yanlış-tür-argüman stringp nil) dosya-adı-dizini (nil) ' – yPhil

+0

@yPhil Dosyaya çağrı name-directory' bir dizgenin geçirilmesini gerektirir, açıkça bir 'nil' ile çağırdınız. Değişken, yalnızca 'load' çağrısı sırasında ayarlanır - bu, sorunun bağlamıdır. –

İlgili konular