local env = require("my.helpers.env")

local M = {
  "goerz/jupytext.vim",
  ft = "ipynb",
  cond = env.vscode.not_active(),
}

function M.config()
  -- Use %% as cell delimiter
  vim.g.jupytext_fmt = "py:percent"
end

function M.init()
  vim.cmd([[
        function GetJupytextFold(linenum)
            if getline(a:linenum) =~ "^#\\s%%"
                " start fold
                return ">1"
            elseif getline(a:linenum + 1) =~ "^#\\s%%"
                return "<1"
            else
                return "-1"
            endif
        endfunction
      ]])

  -- Set the correct foldexpr
  vim.api.nvim_create_autocmd("BufEnter", {
    pattern = { "*.ipynb" },
    group = vim.api.nvim_create_augroup("JupytextFoldExpr", {}),
    callback = function()
      vim.cmd([[
            setlocal foldexpr=GetJupytextFold(v:lnum)
            setlocal foldmethod=expr
            " Deletes and pastes all text. Used to refresh folds.
            :norm ggVGdpggdd
          ]])
    end,
  })
end

return M