Bagaimana saya bisa membuat buffer dired yang mencantumkan semua file yang terbuka?


9

Saya memiliki mekanisme untuk membakar item ke disk dari diredbuffer. Sayangnya, file yang saya tambal berserakan di sistem file. Bagaimana saya bisa membuat diredbuffer dari semua file yang terbuka?



@Drew Saya berpendapat bukan duplikat, setidaknya tidak ketat. Pertanyaan ini hanya akan menjadi 'Bagaimana cara saya mendapatkan daftar semua buffer terbuka yang terikat pada file?'.
Sean Allred

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

Informasi yang ditambahkan adalah yang buffer-listada (yang saya tahu) dan yang buffer-file-namekembali nilketika tidak ada file (yang saya tidak tahu). Duplikat yang Anda usulkan tidak mengandung informasi ini atau tidak perlu.
Sean Allred

1
@Drew Dalam pengalaman saya, mencoba membuat setiap pertanyaan semodel mungkin adalah kerugian daripada keuntungan. Ini mengurangi kegunaannya dengan orang-orang yang menemukan ini dari Google dan tidak akan pernah mendaftar hanya karena mereka menggunakan kasus penggunaan Google . Jika saya ingin melalui setiap pertanyaan di TeX.SE dan pertanyaan yang ditipu yang memiliki jawaban konseptual yang sama, moderasi akan menjadi mimpi buruk dan situs akan tenggelam dalam kegelapan.
Sean Allred

Jawaban:


12

The diredperintah menerima daftar file-nama sebagai argumen. Cukup buat satu dan berikan padanya:

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

Saya pikir ini melewatkan satu file: ketika Anda melewati daftar untuk memasukkan elemen pertama dalam daftar itu diambil sebagai nama direktori, sisanya sebagai file. Bagaimana dengan ini:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
glucas

Hanya sebuah catatan: ini akan salah jika ada buffer terkait file yang belum disimpan ke disk.
Sean Allred

1

Cukup sediakan daftar string, ke fungsi dired, contoh:

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

EDIT

@Malabarba jawaban adalah cara terbaik untuk pergi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.