summaryrefslogtreecommitdiffstats
path: root/.config
diff options
context:
space:
mode:
authorMahdi Nayef <mhdna@outlook.com>2023-05-27 01:08:43 +0300
committerGitHub <noreply@github.com>2023-05-26 22:08:43 +0000
commit1633233c9d8df7d5e4c53c078addcbfced017ae1 (patch)
treeeb4b834c10a5b17c6177629a9bfd312e257f4892 /.config
parentce1f0bfa0597881a640ef32b5334087425d65d16 (diff)
downloadeibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.tar.gz
eibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.tar.zst
eibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.zip
bulkrename using built-ins instead of using a completely separate program (#1330)
* bulkrename using bult-ins instead of using a completely separate program * Make it more efficient
Diffstat (limited to '.config')
-rw-r--r--.config/lf/lfrc22
1 files changed, 21 insertions, 1 deletions
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
index d1c9402..25fb3d1 100644
--- a/.config/lf/lfrc
+++ b/.config/lf/lfrc
@@ -93,7 +93,27 @@ cmd copyto ${{
}}
cmd setbg "$1"
-cmd bulkrename $vidir
+
+cmd bulkrename ${{
+ tmpfile_old="$(mktemp)"
+ tmpfile_new="$(mktemp)"
+
+ [ -n "$fs" ] && fs=$(basename -a $fs) || fs=$(ls)
+
+ echo "$fs" > "$tmpfile_old"
+ echo "$fs" > "$tmpfile_new"
+ $EDITOR "$tmpfile_new"
+
+ [ "$(wc -l < "$tmpfile_old")" -eq "$(wc -l < "$tmpfile_new")" ] || { rm -f "$tmpfile_old" "$tmpfile_new"; exit 1; }
+
+ paste "$tmpfile_old" "$tmpfile_new" | while IFS="$(printf '\t')" read -r src dst
+ do
+ [ "$src" = "$dst" ] || [ -e "$dst" ] || mv -- "$src" "$dst"
+ done
+
+ rm -f "$tmpfile_old" "$tmpfile_new"
+ lf -remote "send $id unselect"
+}}
# Bindings
map <c-f> $lf -remote "send $id select \"$(fzf)\""