proximity-sort

Crates.io Build Status

This script provides a simple command-line utility that sorts its inputs by their path proximity to a given path. For example, for a path foo/bar.txt, the following input:

quox.txt foo/bar.txt foo/baz.txt

Would yield an output of:

foo/bar.txt foo/baz.txt quox.txt

The lines are sorted by the number of leading path components shared between the input path and the provided path.

This program was primarily written to allow context-aware suggestions for fzf (requested in junegunn/fzf.vim#360 and junegunn/fzf.vim#492) without making modifications to fzf itself (see junegunn/fzf#1380).

It can be used with fzf by running:

console $ fd -pFt f path/to/file | proximity-sort | fzf --tiebreak=index

And you can add it to your .vimrc with:

```vim function! s:list_cmd() let base = fnamemodify(expand('%'), ':h:.:S') return base == '.' ? 'fd --type file --follow' : printf('fd --type file --follow | proximity-sort %s', expand('%')) endfunction

command! -bang -nargs=? -complete=dir Files \ call fzf#vim#files(, {'source': s:list_cmd(), \ 'options': '--tiebreak=index'}, 0) ```