# TODO ## Improvements * [ ] Program version. * [ ] Speedup `FinderPluginFileNameSearcher` by leveraging a filelist cache. * [ ] Abstract/generalize plugin load logic. * [ ] `FinderPluginFileNameSearcher.set_path`: check if path exists. * [ ] `FinderPluginFileXdgOpener.open`: check if file actually exists (and if it's not a dead symbolic link etc). ## UX * [ ] Keybinds/menu. * [ ] Refresh list. * [ ] Change folder. * [ ] Status bar: * [ ] Enabled plugins. ## Searcher plugins * [ ] Files (i.e, files in a folder): * [ ] By file name. * [ ] By file metadata. * [ ] By file name and metadata. * [ ] File lines (i.e, lines in a text file, including basic M3U support). * [ ] CSV, TSV etc (i.e, values in lines in a text file). * [ ] ODS, XLS etc. * [ ] Tree-like structures like YAML files (example: Ana(r)chronofiles). * [ ] RSS, Atom etc. * [ ] Applications (in current working directory and on `$PATH`). * [ ] Compressed files (find files and/or lines inside a compressed file). * [ ] Sessions (like VIM sessions, Firefox profiles, custom session commands etc). * [ ] BibTeX. ## Fetcher plugins * [ ] URL. ## Opener plugins * [ ] XDG. * [ ] Rifle. * [ ] Ranger (open in folder). * [ ] Actions (rename etc) with auto git detection. * [ ] Edit (with git annex unlock support/detection). * [ ] Finder (open folders and file lists inside finder itself). ## Pager plugins ## Config * [ ] Boolean: * [ ] Show/hide hidden files. * [ ] Show/hide folders. * [ ] Search processing regexps or not (`text` or `re.escape(text)`). * [ ] Sorting criteria (reverse sorting). * [ ] Whether to list folders (and not just files). * [ ] Follow/unfollow symlinks (but take care to avoid infinite recursion). * [ ] Editing mode. * [ ] Prompt string. * [ ] Case sensitivity. * [ ] Numeric: * [ ] Refresh interval. * [ ] Terminal size polling interval. * [ ] Autodetection depending on file or dir passed as argument (like automatically detects a CSV file). * [ ] Objects: * [ ] Plugins to load. * [ ] Files and folders to ignore. * [ ] Theming. ## Chore * [ ] Move to a separate repository. * [ ] Publish to PyPi. * [ ] Create a Debian package.