* add and wire up `VerticalLayout` which is now the default
* adapt flags spec to use single-column layout for testing sort order
since the output is hard to verify when in vertical format
Fixes#189.
* add `Layout` base class which contains the base (binary) algorithm
for finding the maximum amount of columns fitting the given limit
* add `HorizontalLayout` and use it in `Core`
* add `SingleColumnLayout` and use it in `Core`
The git status is only computed for the given directory and is stored as
a Hash mapping relative paths to their mode string.
For a directory, the git status is comprised of all the statuses of its files
itself and all its sub directories.
The current directory's prefix is just an empty string matching all files inside
the `@git_status` Hash.
Asking for the status of the parent directory is pointless, we do not compute it
(yet).
* make `-h` an alias for `--human-readable`
* both options are simply ignored when used with an argument or another option
* running `colorls -h` still shows the help text since just as before
Using the `--show-prefix` option for `git ref-parse` simplifies determining the
status for the child items.
Previsouly, `File.realdirpath` was used to determine an absolute path, but this
method returns a path without symlinks. This caused status to be reported about
the link target instead of the symlink.
It reached EOL on 20th Jun 2018 and no longer receives patches.
* set required Ruby version to >= 2.3 in spec file
* set rubocop's TargetRubyVersion to 2.3 and fix all the offenses
Both are also supported by GNU ls, although currently not all formats are
supported.
This change lays ground for implementing column based formatting and also
supports using a pager with colorls keeping the formatting intact:
`colorls --color -x | less --tabs=4 -RFX`
This option works the same as for GNU ls, although if not specified colorization
is on by default (the `auto` mode).
Using `--color` is equivalent to `--color=always`.
This generates `file://` links using ANSI escape sequences which opens the
given file using the default application for the file type on your system.
A terminal emulator supporting hyperlinks is required, otherwise the links
will be ignored.
These special permission bits should cause the executable bit in the current
group to be replaced with an uppercase letter if the executable bit itself is
*not* set, with a lower case character otherwise.
In a long listing, the user was only shown when owning the file. Originally, the
user was only colorized when owning the file.
Change that to always colorize the user using the defined `:user` color.
Fixes#187.
In the `-z` git status format, a NUL follows each file name. When files are
renamed, the status field is followed by a space, the "to" path, a NUL
character, the "from" path and a terminating NUL.
This fixes#185.
* no longer traverse complete directory trees to determine git status for
directories
* properly report status for folders with changed files
* skip the parent folder since we do not have git status about it
* add `--sort=WORD` option, which sorts by modification "time" or not at all
* add short option `-U` to mean `--sort=none` (`ls` compatibility)
* `-t` now has the same effect as `--sort=time` which is also mentioned in the
post install mesage
* add checks for `--sort=time` and `--sort=none` to .travis.yml
If there are a lot of arguments, e.g. due to shell globbing, one might easily
lose track of which output corresponds to which argument.
Again, this is similar to what `ls` does.
When not using any sort options, sort the output by name.
This is in line with what `ls` does, too.
Revert "Disable failing test"
This reverts commit 9e41d60956.
* Fix handling of `--tree` and `--all` / `--allmost_all` flags
When using `:tree` mode, the `:allmost_all` was always enabled unconditionally.
* Add example for combining short options