เครื่องหมายการจัดการดูเหมือนไม่จำเป็นและอาจเป็นปัญหาได้
เห็นได้ชัดว่ามีฟังก์ชั่นที่น่าเบื่อในการทำสิ่งนี้ (แม้ว่าจะไม่มีการบันทึกไว้อย่างดี) นี่เป็นวิธีง่ายๆ:
;; Silence compile-time warning:
(declare-function dired-map-dired-file-lines "dired-aux")
(defun my-dired-files ()
  "Return a list of files (only) in the current dired buffer."
  (eval-when-compile (require 'cl-lib))
  (require 'dired-aux)
  (let (flist)
    (cl-flet ((fpush (fname) (push fname flist)))
      (dired-map-dired-file-lines #'fpush))
    (nreverse flist)))
แก้ไข:
ในความคิดเห็นที่คุณพูดว่าคุณต้องการให้รายการรวมเส้นทางไดเรกทอรีเช่นเดียวกับเส้นทางไฟล์
dired-map-dired-file-linesแยกไดเรกทอรีอย่างชัดเจนและไม่มีตัวเลือกให้รวมไดเรกทอรีเหล่านั้น แต่มันง่ายในการกำหนดฟังก์ชั่นที่ทำได้โดยเพียงแค่คัดลอกต้นฉบับและละเว้นการทดสอบที่ไม่ต้องการ:
(defun my-dired-map-over-files-and-dirs (fun)
  "Perform FUN with point at the end of each file or directory line.
FUN takes one argument, the absolute filename."
  (save-excursion
    (let (file buffer-read-only)
      (goto-char (point-min))
      (while (not (eobp))
        (save-excursion
          (and (not (eolp))
               (setq file (dired-get-filename nil t)) ; nil on non-file
               (progn (end-of-line)
                      (funcall fun file))))
        (forward-line 1)))))
เพียงใช้สิ่งนี้แทนdired-map-dired-file-linesฟังก์ชันเริ่มต้น จากนั้นคุณสามารถแยกการdeclare-functionโทรออกได้เช่นกัน
แน่นอนคุณสามารถปรับเปลี่ยนฟังก์ชันใหม่นี้เพื่อสร้างรายการที่ต้องการโดยตรงแทนที่จะเรียกใช้ฟังก์ชันเพื่อทำ ฉันรู้สึกว่าวิธีการทั่วไปที่มากขึ้นนั้นใช้ได้ในทางปฏิบัติ แต่คุณอาจชอบความคิดในการห่อมันทั้งหมดไว้ในฟังก์ชั่นเดียว
               
              
directory-filesถ้าคำถามนี้เป็นง่ายๆเป็นลักษณะทั้งหมดที่คุณต้องการก็คือ