#TIL
you can use gf
to open a file under the current cursor position in VIM, I was reading this post I found in Hacker News and I was wondering if evil-mode
has this functionality as well
evil-mode
has this key binding defined and it uses (find-file-at-point)
, it works well for absolute paths but not for relative paths and I wanted to use it for a path like this templates/home.html
so I wrote some elisp
code to be able to make what I want:
(defun my/find-file-under-cursor ()
"Check it the filepath under cursor is an absolute path otherwise open helm and insert the filepath."
(interactive)
(let ((file-path (thing-at-point 'filename t)))
(if (file-name-absolute-p file-path)
(find-file-at-point file-path)
(minibuffer-with-setup-hook (lambda ()
(insert file-path))
(helm-ls-git-ls)))))
If the path under the cursor is an absolute path it will use the regular find-file-at-point
function, otherwise it will open helm-ls-git-ls
and insert that value into the minibuffer. I use minibuffer-with-setup-hook
to setup a temporal function attached to minibuffer-setup-hook
to be able to insert the file path in the minibuffer after helm-ls-git-ls
is opened.
With all of this done we just need to replace the regular behaviour of gf
with our custom function:
(define-key evil-normal-state-map "gf" 'my/find-file-under-cursor)
Demo
And that's it. Enjoy! 🎉