#compdef lr _lr_format() { if [[ ${(Q)PREFIX} = *% ]]; then local -a specs specs=( '%:percent sign' 's:file size in bytes' 'S:file size, with human readable unit' 'b:file size in 512-byte blocks' 'k:file size in 1024-byte blocks' 'd:path depth' 'D:device number' 'R:device ID for special files' 'i:inode number' 'I:one space character for every depth level' 'p:full path' 'P:full path without command line argument prefix' 'l:symlink target' 'n:number of hardlinks' 'F:file indicator type' 'f:file basename' 'A:atime prefix' 'C:ctime prefix' 'T:mtime prefix' 'm:octal file permissions' 'M:ls-style symbolic file permissions' 'y:ls-style symbolic file type' 'g:group name' 'G:numeric gid' 'u:user name' 'U:numeric uid' 'e:number of entries in directories' 't:total size used by accepted files' 'Y:file system type' 'x:extended attributes' ) compset -P "*" _describe -t lr-format-specifiers 'format specifier' specs -S '' else _wanted lr-format-specifiers expl 'format specifier' compadd -S '' % fi return 0 } _lr_order() { local -a specs specs=( 'a:atime' 'c:ctime' 'd:path depth' 'e:file extension' 'i:inode number' 'm:mtime' 'n:file name' 'p:directory name' 's:file size' 't:file type' 'v:file name as version number' 'A:atime (reversed)' 'C:ctime (reversed)' 'D:path depth (reversed)' 'E:file extension (reversed)' 'I:inode number (reversed)' 'M:mtime (reversed)' 'N:file name (reversed)' 'P:directory name (reversed)' 'S:file size (reversed)' 'T:file type (reversed)' 'V:file name as version number (reversed)' ) compset -P "*" _describe -t lr-order-specifiers 'order specifier' specs -S '' return 0 } if (( words[(I)-l] )); then local timeopt='-T+[show time]:time:((A\:access\ time C\:inode\ change\ time M\:file\ modification\ time))' fi _arguments -S : \ '(-F -l -S -f)-0[output filenames NUL-separated]' \ '(-0 -l -S -f)-F[output filenames with type indicator]' \ '(-0 -F -S -f)-l[long output]' \ '(-0 -F -l -f)-S[stat(1)-like output]' \ '(-0 -F -l -S)-f[output with custom format]:format:_lr_format' \ $timeopt \ '(-D)-B[use breadth-first traversal]' \ '(-B)-D[use depth-first traversal]' \ '(-L)-H[only follow symlinks on command line]' \ '(-H)-L[follow all symlinks]' \ '-1[don'\''t go below one level of directories]' \ '-A[don'\''t list files starting with a dot]' \ '-Q[shell quote file names]' \ '-d[don'\''t enter directories]' \ '-G[colorize output]' \ '-X[print OSC 8 hyperlinks]' \ '-h[print human readable size]' \ '-s[strip directory prefix passed on command line]' \ '-x[don'\''t enter other filesystems]' \ '(-o)-U[don'\''t sort results]' \ '(-U)-o[sort order]:order:_lr_order' \ '*-e[only show files where basename matches regexp]:pattern: ' \ '*-t[test expression]:test: ' \ '*-C[colorize path]:path:_files' \ '*:files:_files'