diff options
| author | Robert Günzler <r@gnzler.io> | 2022-12-15 21:12:28 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-12-15 21:12:28 +0100 |
| commit | 6f6aebf6db9ffa0fde64ebac3df7cd01f9a9db27 (patch) | |
| tree | eb912de5fef4bbfee4fccc4484c04e446cff45af /.vim | |
| parent | 00d1359223b678e02afe879f6b1ae4a3d342707d (diff) | |
vim: fix gf handling of relative links
they should resolve relative to the file not vim's cwd Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '.vim')
| -rw-r--r-- | .vim/init.lua | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/.vim/init.lua b/.vim/init.lua index daa991f..3b5bf52 100644 --- a/.vim/init.lua +++ b/.vim/init.lua @@ -155,8 +155,16 @@ vim.keymap.set('n', '<tab>', [[ :normal za<cr> ]], {silent = true}) -- vim.keymap.set('n', '<tab>', [[ :exe 'normal za' | IndentBlanklineRefresh<cr> ]], {silent = true}) -- swap gf and gF -vim.keymap.set('n', 'gf', [[ :e <cfile><cr> ]]) -vim.keymap.set('v', 'gf', [[ :e <cfile><cr> ]]) +-- vim.keymap.set('n', 'gf', [[ :e <cfile><cr> ]]) +-- vim.keymap.set('v', 'gf', [[ :e <cfile><cr> ]]) +vim.keymap.set({'n', 'v'}, 'gf', function(a) + local Path = require('plenary.path') + local cfile = Path:new(vim.fn.expand('<cfile>')) + if not cfile:is_absolute() then + cfile = Path:new(vim.fn.expand('%:p:h'), cfile):normalize() + end + vim.cmd.edit(cfile) +end, {desc='extends `:e <cfile>` with path normalization'}) vim.keymap.set('n', '{', [[ {zz ]]) vim.keymap.set('n', '}', [[ }zz ]]) @@ -174,7 +182,6 @@ vim.keymap.set('v', 'T', local misc = require('internal.misc') vim.keymap.set('n', 'gd', function() misc.open_under_cursor(nil, true) end, {desc='open under cursor'}) --- vim.keymap.set('n', 'gf', function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end) vim.keymap.set('n', 'gx', function() misc.open_under_cursor('url-launcher') end, {desc='url-launcher'}) vim.keymap.set('n', 'gu', function() misc.open_under_cursor('url-launcher') end, {desc='url-launcher'}) -- vim.keymap.set('n', '<localleader>gs', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end) |