Tüm açık dosyaları listeleyen bir dired arabelleğini nasıl oluşturabilirim?


9

Bir diredtampon disk öğeleri yakmak için bir mekanizma var . Ne yazık ki, yamaladığım dosya dosya sistemine yayılmış. diredTüm açık dosyalardan nasıl arabellek oluşturabilirim ?



@Çizim, en azından kesinlikle değil, bir kopya değil. Bu soru basitçe 'Dosyalara bağlı tüm açık arabelleklerin listesini nasıl alabilirim?'
Sean Allred

@Drew Özellikle:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred

Eklenen bilgiler buffer-list(ki ben biliyordum) var olduğunu ve hiçbir dosya (ki ben bilmiyordum) olduğunda buffer-file-namedöner olduğunu nil. Önerdiğiniz kopya bu bilgileri içermiyor veya herhangi bir gereksiniminiz yok.
Sean Allred

1
@Drew Deneyimlerime göre, her soruyu olabildiğince modüler hale getirmeye çalışmak bir avantaj değil dezavantaj. Google'dan gelen tökezleyen kişilerle kullanışlılığını azaltır ve yalnızca Google'ın kullanım örneklerini kullanması nedeniyle kaydolmaz . TeX.SE ve dupe'd ile aynı kavramsal cevapları olan her soruyu sormak istersem, ılımlılık kabus olur ve site karanlığa düşer.
Sean Allred

Yanıtlar:


12

diredKomut argüman olarak dosya adlarının bir listesini kabul eder. Sadece bir tane oluşturun ve ona iletin:

(dired
 (cons
  "Open Files"
  (sort (remove nil (mapcar #'buffer-file-name (buffer-list)))
       #'string<))) 

Bence bu bir dosyayı özlüyor: bir listeyi yönlendirdiğinizde o listeye ilk öğe dizin adı olarak alınır, geri kalanı dosyalar olarak alınır. Buna ne dersiniz:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
glucas

Sadece bir not: henüz diske kaydedilmemiş dosya ile ilişkili bir arabellek varsa bu hata olacaktır.
Sean Allred

1

Dired işlevine bir dize listesi sağlamanız yeterlidir, örnek:

(dired '("custom dired" ".emacs.d/init.el" "mydotfiles/.bashrc"))

DÜZENLE

@Malabarba yanıtı gitmek için en iyi yoldur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.