* feat: enable vim-mode
* feat: handle cursor move to move up until prefix
* feat: make it configurable
* docs: vim_mode
* docs: update to prompt_vim_mode
Co-authored-by: Dmitriy Kovalenko <dmitriy@iusevimbtw.com>
* refactor: rename vim_mode to prompt_vim_mode
Matches the maintainer's preferred naming from PR review: since this is a
neovim plugin, the flag scope is clarified by the prompt_ prefix.
* style: collapse single-statement if for stylua
---------
Co-authored-by: Dmitriy Kovalenko <dmitriy@iusevimbtw.com>
* feat: Advanced path shortening strategies
Implements a lot of differnet path displaying shorting strategies. Now
you will see paths like path/.4./next_path and it is configurable
## New strategies
- middle: "some/path/./next/path", "some/path/../next/path" showing max
3 dots in the middle
- middle_number: same as middle but starting from the 4 paths skipped
shows the number of skipped components
- end: preserves the start of the paths but truncaates not fitting end
* chore: Update docs for - feat: Advanced path shortening strategies
* fix: show_file_info option will work not and moved under debug
closes https://github.com/dmtrKovalenko/fff.nvim/issues/207
* chore: Update docs for - fix: show_file_info option will work not and moved under debug
* feat: implement prompt_position layout configuration
Allows users to position the input prompt at 'top' or 'bottom' of the picker window.
When prompt is at top, best matches appear at the top (closest to prompt).
When prompt is at bottom (default), best matches appear at the bottom.
- Add prompt_position config option with validation
- Adapt list rendering order based on prompt position
- Fix cursor navigation to work correctly with both layouts
- Optimize array reversal for better performance
- Extract helper function to reduce code duplication
* feat: restructure configuration with layout object
Move width/height into layout namespace for better organization.
Adds max_threads field and reorganizes config hierarchy to be
more intuitive and extensible.
BREAKING CHANGE: config.width/height moved to config.layout.width/height
* feat: implement flexible configuration deprecation system
Replace hardcoded deprecation handling with rule-based system
for easier maintenance. Each deprecation is now defined as a
simple rule with old_path, new_path, and message.
Enables easy addition of future config deprecations without
touching core migration logic.
* refactor: extract config resolution utilities to improve maintainability
Replace repetitive inline pcall functions with centralized utilities in fff.utils.
Eliminates code duplication and improves error handling consistency across
dynamic configuration resolution.
* feat: add flexible configuration deprecation system
Implement structured deprecation rules for configuration migration,
enabling smooth transition from legacy config options while maintaining
backward compatibility and clear user warnings.
* docs: update documentation for comprehensive layout positioning
Document all supported preview positions (left, right, top, bottom) and
preview_size parameter, removing outdated limitation claims and ensuring
configuration examples match current capabilities.
* docs: add comprehensive documentation for all configuration options
Document complete configuration API including dynamic functions, all preview
settings, logging, frecency, UI options, and automatic migration system.
Ensures users understand both static and responsive configuration patterns.
* style: align comments in documentation for improved readability
Standardize comment alignment across configuration examples in README.md
and doc/fff.nvim.txt to create consistent visual structure and make
configuration options easier to scan and understand.
* style: comprehensively align all comments in documentation
Standardize comment alignment across all code blocks in both README.md
and doc/fff.nvim.txt including configuration examples, method calls,
and keymap examples for consistent visual structure and readability.
* style: align comment formatting in documentation
Standardize comment alignment for better readability and consistency
across README and generated vimdoc files.
* chore: run stylua
* fix(ui): standardize layout coordinate calculations across preview positions
Resolves inconsistent window positioning that caused preview windows to be
misaligned or hidden in certain layout combinations (e.g., prompt_position='top'
with preview_position='bottom'). Standardizes the coordinate calculation logic
to ensure proper alignment and separation between windows for all four preview
positions while maintaining the original +3 border/separator spacing.
* feat: move prompt position handling to Rust layer
* chore: run cargo fmt
* fix: correct item selection when prompt position is bottom
Fixes cursor positioning calculation to properly highlight the selected
item when using bottom prompt layout. The cursor line calculation now
accounts for the inverted display order in bottom mode.
* WIP: fix sorting
* feat: Fix ordering logic
* fix configuration
* stylua
---------
Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>