-- 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 })
-- }}}