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.