-
-
Notifications
You must be signed in to change notification settings - Fork 660
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Provides shell completion and makes all the command-line options consistent and complete. Fixes #150, which tracked shell completion.
- Loading branch information
Showing
8 changed files
with
301 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
_exa() | ||
{ | ||
cur=${COMP_WORDS[COMP_CWORD]} | ||
prev=${COMP_WORDS[COMP_CWORD-1]} | ||
|
||
case "$prev" in | ||
-'?'|--help|-v|--version) | ||
return | ||
;; | ||
|
||
-L|--level) | ||
COMPREPLY=( $( compgen -W '{0..9}' -- "$cur" ) ) | ||
return | ||
;; | ||
|
||
-s|--sort) | ||
COMPREPLY=( $( compgen -W 'name filename Name Filename size filesize extension Extension modified accessed created none inode --' -- "$cur" ) ) | ||
return | ||
;; | ||
|
||
-t|--time) | ||
COMPREPLY=( $( compgen -W 'accessed modified created --' -- $cur ) ) | ||
return | ||
;; | ||
esac | ||
|
||
case "$cur" in | ||
-*) | ||
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) | ||
;; | ||
|
||
*) | ||
_filedir | ||
;; | ||
esac | ||
} && | ||
complete -o filenames -o bashdefault -F _exa exa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Meta-stuff | ||
complete -c exa -s 'v' -l 'version' -d "Show version of exa" | ||
complete -c exa -s '?' -l 'help' -d "Show list of command-line options" | ||
|
||
# Display options | ||
complete -c exa -s '1' -l 'oneline' -d "Display one entry per line" | ||
complete -c exa -s 'l' -l 'long' -d "Display extended file metadata as a table" | ||
complete -c exa -s 'G' -l 'grid' -d "Display entries in a grid" | ||
complete -c exa -s 'x' -l 'across' -d "Sort the grid across, rather than downwards" | ||
complete -c exa -s 'R' -l 'recurse' -d "Recurse into directories" | ||
complete -c exa -s 'T' -l 'tree' -d "Recurse into directories as a tree" | ||
complete -c exa -s 'F' -l 'classify' -d "Display type indicator by file names" | ||
complete -c exa -l 'color' -d "When to use terminal colours" | ||
complete -c exa -l 'colour' -d "When to use terminal colours" | ||
complete -c exa -l 'color-scale' -d "Highlight levels of file sizes distinctly" | ||
complete -c exa -l 'colour-scale' -d "Highlight levels of file sizes distinctly" | ||
|
||
# Filtering and sorting options | ||
complete -c exa -l 'group-directories-first' -d "Sort directories before other files" | ||
complete -c exa -s 'a' -l 'all' -d "Don't hide hidden and 'dot' files" | ||
complete -c exa -s 'd' -l 'list-dirs' -d "List directories like regular files" | ||
complete -c exa -s 'L' -l 'level' -d "Limit the depth of recursion" -a "1 2 3 4 5 6 7 8 9" | ||
complete -c exa -s 'r' -l 'reverse' -d "Reverse the sort order" | ||
complete -c exa -s 's' -l 'sort' -x -d "Which field to sort by" -a " | ||
accessed\t'Sort by file accessed time' | ||
created\t'Sort by file modified time' | ||
ext\t'Sort by file extension' | ||
Ext\t'Sort by file extension (case-insensitive)' | ||
extension\t'Sort by file extension' | ||
Extension\t'Sort by file extension (case-insensitive)' | ||
filename\t'Sort by filename' | ||
Filename\t'Sort by filename (case-insensitive)' | ||
inode\t'Sort by file inode' | ||
modified\t'Sort by file modified time' | ||
name\t'Sort by filename' | ||
Name\t'Sort by filename (case-insensitive)' | ||
none\t'Do not sort files at all' | ||
size\t'Sort by file size' | ||
" | ||
|
||
complete -c exa -s 'I' -l 'ignore-glob' -d "Ignore files that match these glob patterns" -r | ||
|
||
# Long view options | ||
complete -c exa -s 'b' -l 'binary' -d "List file sizes with binary prefixes" | ||
complete -c exa -s 'B' -l 'bytes' -d "List file sizes in bytes, without any prefixes" | ||
complete -c exa -s 'g' -l 'group' -d "List each file's group" | ||
complete -c exa -s 'h' -l 'header' -d "Add a header row to each column" | ||
complete -c exa -s 'h' -l 'links' -d "List each file's number of hard links" | ||
complete -c exa -s 'g' -l 'group' -d "List each file's inode number" | ||
complete -c exa -s 'm' -l 'modified' -d "Use the modified timestamp field" | ||
complete -c exa -s 'S' -l 'blocks' -d "List each file's number of filesystem blocks" | ||
complete -c exa -s 't' -l 'time' -x -d "Which timestamp field to list" -a " | ||
accessed\t'Display accessed time' | ||
created\t'Display created time' | ||
modified\t'Display modified time' | ||
" | ||
complete -c exa -s 'u' -l 'accessed' -d "Use the accessed timestamp field" | ||
complete -c exa -s 'U' -l 'created' -d "Use the created timestamp field" | ||
|
||
# Optional extras | ||
complete -c exa -s 'g' -l 'git' -d "List each file's Git status, if tracked" | ||
complete -c exa -s '@' -l 'extended' -d "List each file's extended attributes and sizes" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#compdef exa | ||
|
||
__exa() { | ||
_arguments \ | ||
"(- 1 *)"{-v,--version}"[Show version of exa]" \ | ||
"(- 1 *)"{-\?,--help}"[Show list of command-line options]" \ | ||
{-1,--oneline}"[Display one entry per line]" \ | ||
{-l,--long}"[Display extended file metadata as a table]" \ | ||
{-G,--grid}"[Display entries as a grid]" \ | ||
{-x,--across}"[Sort the grid across, rather than downwards]" \ | ||
{-R,--recurse}"[Recurse into directories]" \ | ||
{-T,--tree}"[Recurse into directories as a tree]" \ | ||
{-F,--classify}"[Display type indicator by file names]" \ | ||
{--color,--colour}"[When to use terminal colours]" \ | ||
{--color,--colour}-scale"[Highlight levels of file sizes distinctly]" \ | ||
--group-directories-first"[Sort directories before other files]" \ | ||
{-a,--all}"[Don't hide hidden and 'dot' files]" \ | ||
{-d,--list-dirs}"[List directories like regular files]" \ | ||
{-L,--level}"+[Limit the depth of recursion]" \ | ||
{-r,--reverse}"[Reverse the sort order]" \ | ||
{-s,--sort}"[Which field to sort by]:(sort field):(accessed created extension Extension filename Filename inode modified name Name none size)" \ | ||
{-I,--ignore-glob}"[Ignore files that match these glob patterns]" \ | ||
{-b,--binary}"[List file sizes with binary prefixes]" \ | ||
{-B,--bytes}"[List file sizes in bytes, without any prefixes]" \ | ||
{-g,--group}"[List each file's group]" \ | ||
{-h,--header}"[Add a header row to each column]" \ | ||
{-H,--links}"[List each file's number of hard links]" \ | ||
{-i,--inode}"[List each file's inode number]" \ | ||
{-m,--modified}"[Use the modified timestamp field]" \ | ||
{-S,--blocks}"[List each file's number of filesystem blocks]" \ | ||
{-t,--time}"[Which time field to show]:(time field):(accessed created modified)" \ | ||
{-u,--accessed}"[Use the accessed timestamp field]" \ | ||
{-U,--created}"[Use the created timestamp field]" \ | ||
--git"[List each file's Git status, if tracked]" \ | ||
{-@,--extended}"[List each file's extended attributes and sizes]" \ | ||
'*:filename:_files' | ||
} | ||
|
||
__exa |
Oops, something went wrong.