Hi,
The Context
I'm using git annex, which stores files as symlinks in a git repository. And while browsing such repository works great with VIFM, moving files around is not that perfect because when moving files from one panel to another with dd and p works, and git and git annex are able to detect such move most of the time, ideally moving symlinks in such a repo should be done with git mv command.
If I understand the current behavior of VIFM correctly, dd puts files (including symlinks) into .trash folder + a buffer, and when pasting, it's putting them from the .trash to a target folder. If this understanding is correct, then the goal is:
1. on dd for a symlink do not move it into .trash
2. on p run git mv <source-parent-dir>/* <target-dir> (if all files in the source are selected)
3. if not: on p run git mv <buffer>/* <target-dir>
The Question
So, what I would like to know - is it possible to override the default dd/p behavior? Maybe with a plugin (if there is no an easier way)?
Other Notes
P.S. I've tried to look into the existing plugins implementation, but couldn't find anything similar. I'm also considering forking the repo, "patching" such behavior and building from source. But it's not very sustainable approach. Also, I'm not familiar with the code base, and that's why will appreciate any ideas, hints (entry points, etc) and any other help with the subject.