-
-
Notifications
You must be signed in to change notification settings - Fork 338
Copy, move and delete file actions for counsel find file
Chakravarthy Raghunandan edited this page Nov 25, 2016
·
1 revision
Below are some useful actions for counsel-fild-file
and counsel-projectile-find-file
. Thanks to oantolin for sharing the code snippet in reddit.
Note: Using these require lexical binding. To enable lexical bindings for the current file, add ;;; -*- lexical-binding: t -*-
at the beginning of the file.
(defun reloading (cmd)
(lambda (x)
(funcall cmd x)
(ivy--reset-state ivy-last)))
(defun given-file (cmd prompt) ; needs lexical-binding
(lambda (source)
(let ((target
(let ((enable-recursive-minibuffers t))
(read-file-name
(format "%s %s to:" prompt source)))))
(funcall cmd source target 1))))
(defun confirm-delete-file (x)
(dired-delete-file x 'confirm-each-subdirectory))
(ivy-add-actions
'counsel-find-file
`(("c" ,(given-file #'copy-file "Copy") "copy")
("d" ,(reloading #'confirm-delete-file) "delete")
("m" ,(reloading (given-file #'rename-file "Move")) "move")))
(ivy-add-actions
'counsel-projectile-find-file
`(("c" ,(given-file #'copy-file "Copy") "copy")
("d" ,(reloading #'confirm-delete-file) "delete")
("m" ,(reloading (given-file #'rename-file "Move")) "move")
("b" counsel-find-file-cd-bookmark-action "cd bookmark")))