# File Explorers: hide Godot files ## mini.files The filtering option doesn't work as expected in mini.files. Somehow the filtering system is broken. This monkey patch approach is working because it intercepts the buffer content at the right moment - after mini.files has processed it but before it's displayed, so the plugin doesn't detect any "user modifications" that would trigger the synchronization warning. [mini.files](https://github.com/echasnovski/mini.files) ```lua return { 'echasnovski/mini.files', keys = { { '-', function() require('mini.files').open() end, desc = 'Open MiniFiles', }, }, config = function() local original_set_lines = vim.api.nvim_buf_set_lines local filter_godot_files = function(lines) local filtered = {} local godot_patterns = { '%.uid[/]?$', -- .uid files '%.import[/]?$', -- .import files '^%.godot[/]?$', -- .godot directory '^%.mono[/]?$', -- .mono directory 'godot.*%.tmp$', -- godot temp files } for _, line in ipairs(lines) do local should_include = true for _, pattern in ipairs(godot_patterns) do if line:match(pattern) then should_include = false break end end if should_include then table.insert(filtered, line) end end return filtered end require('mini.files').setup { content = { filter = function(fs_entry) return true end, -- Use our custom filtering instead }, mappings = { close = 'q', go_in = 'l', go_in_plus = 'L', go_out = 'h', go_out_plus = 'H', reset = '', reveal_cwd = '@', show_help = 'g?', synchronize = '=', trim_left = '<', trim_right = '>', }, options = { permanent_delete = true, use_as_default_explorer = true, }, windows = { max_number = math.huge, preview = false, width_focus = 50, width_nofocus = 15, width_preview = 25, }, } vim.api.nvim_buf_set_lines = function(buf_id, start, end_idx, strict_indexing, lines) local bufname = vim.api.nvim_buf_get_name(buf_id) if bufname:match 'minifiles://' and type(lines) == 'table' then lines = filter_godot_files(lines) end return original_set_lines(buf_id, start, end_idx, strict_indexing, lines) end end, } ```