1

Enable header cycling

This commit is contained in:
Alex Yatskov 2022-10-18 20:46:21 -07:00
parent b0c825af3a
commit 2d75690773

View File

@ -6,48 +6,35 @@ local function file_exists(path)
return vim.loop.fs_stat(path) ~= nil return vim.loop.fs_stat(path) ~= nil
end end
local function locate_flip_path(name, exts) local function hflip()
for key, _ in pairs(exts) do local exts = {'.h', '.hpp', '.c', '.cpp', '.inl'}
local path = name .. key for i = 1, #exts do
if file_exists(path) then table.insert(exts, exts[i]:upper())
return path end
end
local path_upper = name .. key:upper() local path = vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf())
if file_exists(path_upper) then local name, ext = split_ext(path)
return path_upper if not ext then
return
end
local ext_index = nil
for i, e in ipairs(exts) do
if e == ext:lower() then
ext_index = i
break
end end
end end
end if not ext_index then
return
end
local function hflip() for i = 1, #exts do
local header_exts = { local j = (i + ext_index - 1) % #exts + 1
['.h'] = true, local next_path = name .. exts[j]
['.hpp'] = true, if file_exists(next_path) then
['.lua'] = true, vim.cmd(string.format('e %s', next_path))
} break
local source_exts = {
['.c'] = true,
['.cpp'] = true
}
local index = vim.api.nvim_get_current_buf()
local path = vim.api.nvim_buf_get_name(index)
local name, ext = split_ext(path)
if ext ~= nil then
local ext_lower = ext:lower()
local flip_path
if header_exts[ext_lower] then
flip_path = locate_flip_path(name, source_exts)
elseif source_exts[ext_lower] then
flip_path = locate_flip_path(name, header_exts)
end
if flip_path then
vim.cmd(string.format('e %s', flip_path))
end end
end end
end end