local function init()
    require('hlslens').setup {
        calm_down = true,
        override_lens = function(render, plist, nearest, idx, r_idx)
          local sfw = vim.v.searchforward == 1
          local indicator, text, chunks
          local abs_r_idx = math.abs(r_idx)
          if abs_r_idx > 1 then
            indicator = string.format('%d%s', abs_r_idx, sfw ~= (r_idx > 1) and '' or '')
          elseif abs_r_idx == 1 then
            indicator = sfw ~= (r_idx == 1) and '' or ''
          else
            indicator = ''
          end
      
          local lnum, col = unpack(plist[idx])
          if nearest then
            local cnt = #plist
            if indicator ~= '' then
              text = string.format('[%s %d/%d]', indicator, idx, cnt)
            else
              text = string.format('[%d/%d]', idx, cnt)
            end
            chunks = {{' ', 'Ignore'}, {text, 'HlSearchLensNear'}}
          else
            text = string.format('[%s %d]', indicator, idx)
            chunks = {{' ', 'Ignore'}, {text, 'HlSearchLens'}}
          end
          render.set_virt(0, lnum - 1, col - 1, chunks, nearest)
        end
    }
end

return {
    init = init
}