Bazı (örneğin, geçerli) arabellek bir dosyayı ziyaret edip etmediğini kontrol etmek istiyorum. Söyleyebilirdim:
(if (buffer-file-name) ...)
ama çok zarif görünmüyor - ilgilendiğim sadece boole değeri, söz konusu tamponun gerçek adı değil . Eğer buffer-file-name
fonksiyon Elisp'de yazılmış olsaydı, ne kullandığını bulmak için kaynağına bakabilirdim - ama C ile yazılmış ve Emacs kaynaklarını kurarken, bir elisp adı bulamayacağımdan korkuyorum zaten orada olduğumu kontrol eden fonksiyon için.
Ne için ihtiyacım var Geçerli arabellek dosyasının adına dayalı bir dizin oluşturmak istiyorum ve şu anda az ya da çok bunu yapıyorum:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
Peki, bunu yapmanın Elisp-deyimsel yolu ne olurdu?
(and (buffer-file-name) t)
garip göründüğüne katılıyorum .
(if (buffer-file-name) ... )
zarif olduğunu düşünmüyorsanız, uzun zamandır elisp'te kodlama yapmıyorsunuz. Buradan sadece çirkinleşiyor.
buffer-file-name
gerçekten kullanmaya itiraz ettiğinden emin değilim , bunu yapmanın doğru yolu (gerçekten istiyorsan yapt
,(and (buffer-file-name) t)
ama bu daha çirkin IMO). Uygulanması,filename
doğrudan Elisp'ten erişilemeyen tampon C yapısının alanını okuyor. Sonunda, sadece boş olan bir işaretçi.