*** ibuf-ext.el 2015-09-28 22:18:45.368651818 +0900 --- ibuf-ext_patch3.el 2015-09-28 22:18:45.411651819 +0900 *************** *** 1387,1393 **** ;;;###autoload (defun ibuffer-copy-filename-as-kill (&optional arg) ! "Copy filenames of marked buffers into the kill ring. The names are separated by a space. If a buffer has no filename, it is ignored. --- 1387,1393 ---- ;;;###autoload (defun ibuffer-copy-filename-as-kill (&optional arg) ! "Copy filenames of marked buffers (or next ARG) into the kill ring. The names are separated by a space. If a buffer has no filename, it is ignored. *************** *** 1399,1431 **** You can then feed the file name(s) to other commands with \\[yank]." (interactive "p") ! (if (zerop (ibuffer-count-marked-lines)) ! (message "No buffers marked; use 'm' to mark a buffer") ! (let ((ibuffer-copy-filename-as-kill-result "") ! (type (cond ((zerop arg) ! 'full) ! ((= arg 4) ! 'relative) ! (t ! 'name)))) ! (ibuffer-map-marked-lines ! #'(lambda (buf _mark) ! (setq ibuffer-copy-filename-as-kill-result ! (concat ibuffer-copy-filename-as-kill-result ! (let ((name (buffer-file-name buf))) ! (if name ! (pcase type ! (`full ! name) ! (`relative ! (file-relative-name ! name (or ibuffer-default-directory ! default-directory))) ! (_ ! (file-name-nondirectory name))) ! "")) ! " ")))) ! (kill-new ibuffer-copy-filename-as-kill-result)))) (defun ibuffer-mark-on-buffer (func &optional ibuffer-mark-on-buffer-mark group) (let ((count --- 1399,1438 ---- You can then feed the file name(s) to other commands with \\[yank]." (interactive "p") ! (let ((ibuffer-copy-filename-as-kill-result "") ! (type (cond ((zerop arg) ! 'full) ! ((= arg 4) ! 'relative) ! (t ! 'name))) ! (undo-marks)) ! (when (zerop (ibuffer-count-marked-lines)) ! (let ((nmarks ! (cond ((or (null arg) (zerop arg)) 1) ! ((integerp arg) arg) ! (t 1)))) ! (save-excursion (ibuffer-mark-forward nmarks)) ! (setq undo-marks t))) ! (ibuffer-map-marked-lines ! #'(lambda (buf _mark) ! (setq ibuffer-copy-filename-as-kill-result ! (concat ibuffer-copy-filename-as-kill-result ! (let ((name (buffer-file-name buf))) ! (if name ! (pcase type ! (`full ! name) ! (`relative ! (file-relative-name ! name (or ibuffer-default-directory ! default-directory))) ! (_ ! (file-name-nondirectory name))) ! "")) ! " ")))) ! (when undo-marks (ibuffer-unmark-all ?>)) ! (kill-new ibuffer-copy-filename-as-kill-result))) (defun ibuffer-mark-on-buffer (func &optional ibuffer-mark-on-buffer-mark group) (let ((count