-- lua_add {{{
local vimx = require("artemis")
vimx.g["fern#disable_default_mappings"] = true
vimx.g["fern#default_hidden"] = true
vimx.keymap.set("ca", "fe", "Fern .")
vimx.keymap.set("ca", "fep", "Fern . -reveal=%")
vimx.create_command("TFern", function()
  vimx.cmd("tabnew")
  vimx.cmd("Fern .")
end, { bang = true })
vimx.keymap.set("ca", "tf", "TFern")
vimx.keymap.set("n", ";;", "<Cmd>Fern . -reveal=% -drawer -toggle<CR>")
-- }}}

-- lua_fern {{{
local vimx = require("artemis")
vimx.keymap.set("n", "q", "<Cmd>bprevious<CR>", { buffer = true, nowait = true })
vimx.keymap.set("n", "i", "<Plug>(fern-action-new-file)", { buffer = true })
vimx.keymap.set("n", "o", "<Plug>(fern-action-new-dir)", { buffer = true })
vimx.keymap.set("n", "r", "<Plug>(fern-action-rename)", { buffer = true })
vimx.keymap.set("n", "dd", "<Plug>(fern-action-remove=)", { buffer = true })
vimx.keymap.set("n", "yy", "<Plug>(fern-action-clipboard-copy)", { buffer = true })
vimx.keymap.set("n", "p", "<Plug>(fern-action-paste)", { buffer = true })
vimx.keymap.set("n", "h", "<Plug>(fern-action-collapse)", { buffer = true })
vimx.keymap.set("n", "l", "<Plug>(fern-action-open-or-expand)", { buffer = true })
vimx.keymap.set("n", "!", "<Plug>(fern-action-hidden:toggle)", { buffer = true })
vimx.keymap.set("n", "?", "<Plug>(fern-action-help)", { buffer = true })
vimx.keymap.set("n", "t", "<Plug>(fern-action-open:tabedit)", { buffer = true })
vimx.keymap.set("n", "<Plug>(fern-action-open-or-expand:stay)", function()
  return vimx.fn.fern.smart.leaf("<Plug>(fern-action-open)", "<Plug>(fern-action-expand:stay)")
end, { buffer = true, expr = true })
vimx.keymap.set("n", "<CR>", function()
  return vimx.fn.fern.smart.leaf(
    "<Plug>(fern-action-open)",
    "<Plug>(fern-action-open-or-expand:stay)",
    "<Plug>(fern-action-collapse)"
  )
end, { buffer = true, expr = true })
vimx.keymap.set("n", "<Plug>(fern-action-open-here-in-oil)", function()
  vim.cmd([[ let g:_tmp_fern_oil = fern#helper#new().sync.get_cursor_node()._path->fnamemodify(':h') ]])
  require("oil").open_float(vim.g["_tmp_fern_oil"])
  vim.cmd([[ unlet g:_tmp_fern_oil ]])
end)
vimx.keymap.set("n", "I", "<Plug>(fern-action-open-here-in-oil)", { buffer = true })
-- }}}