local M = {} ---@class FFFFileInfoExtmark ---@field row integer ---@field col integer ---@field end_col integer|nil ---@field hl_group string|nil ---@class FFFFileInfoResult ---@field lines string[] ---@field extmarks FFFFileInfoExtmark[] ---@field height integer ---@class FFFFileInfoSections ---@field file_info boolean ---@field score_breakdown boolean ---@field timings boolean ---@field full_path boolean ---@class FFFFileInfoFile ---@field relative_path string ---@field absolute_path string|nil ---@field size_formatted string ---@field filetype string ---@field git_status string ---@field access_frecency_score integer ---@field modification_frecency_score integer ---@field times_opened integer ---@field modified_formatted string ---@field accessed_formatted string ---@class FFFFileInfoScore ---@field total integer ---@field match_type string ---@field base_score integer ---@field filename_bonus integer ---@field special_filename_bonus integer ---@field frecency_boost integer ---@field combo_match_boost integer ---@field distance_penalty integer ---@field current_file_penalty integer local Builder = {} Builder.__index = Builder function Builder.new() return setmetatable({ lines = {}, extmarks = {} }, Builder) end function Builder:add_line(text) table.insert(self.lines, text or '') end function Builder:add_hl(row, col, end_col, hl_group) if not hl_group or hl_group == '' then return end table.insert(self.extmarks, { row = row, col = col, end_col = end_col, hl_group = hl_group }) end -- Section header: `─