Commit Graph

1020 Commits

Author SHA1 Message Date
Benjamin Sago 877265bf4e Version bump and release 2017-09-30 09:49:36 +02:00
Benjamin Sago 1efb8a5113 Use crates.io zoneinfo_compiled
Fixes #189, for #132.
2017-09-30 09:48:04 +02:00
Benjamin Sago d4bbfb39f0 Document environment variables and colours 2017-09-30 09:17:46 +02:00
Benjamin Sago 937b325e3a Add some ignored tests for sub-globbing 2017-09-30 09:17:29 +02:00
Benjamin Sago 166d1f5e5a Glob pattern ignore tests 2017-09-30 09:17:29 +02:00
Benjamin Sago 541e6855f2 Test some actual ignore caches 2017-09-30 09:17:29 +02:00
Benjamin Sago 476299e21f A note to my future self
It’s important to capture the current behaviour, even if it ends up being totally wrong.
2017-09-30 09:17:29 +02:00
Benjamin Sago 108dc80944 Ignore comments and blank lines when ignoring 2017-09-30 09:17:29 +02:00
Benjamin Sago 7b5b02d9f1 Extract function for parsing an ignore file 2017-09-30 09:17:29 +02:00
Benjamin Sago 1f23f3f0cc Don’t ignore .gitignore errors 2017-09-30 09:17:29 +02:00
Benjamin Sago 3d3ee8fd66 Typo fix 2017-09-30 09:17:29 +02:00
Benjamin Sago 827aa8bfc3 Ignore files matched in .gitignore
This doesn’t *completely* work: it seems to have trouble with ignored paths beginning with slashes, possibly amongst others. Also, .gitignore scanning could be made more efficient.
2017-09-30 09:17:29 +02:00
Benjamin Sago b95446d834 Thread an ignore cache through the program
!
2017-09-30 09:17:29 +02:00
Benjamin Sago 07443e87ba Add a --git-ignore option that doesn’t do anything
!!
2017-09-30 09:17:28 +02:00
Benjamin Sago 2b099d8ba0 Fix up tests to have nested ignored files 2017-09-30 09:17:28 +02:00
Benjamin Sago 7339b753fb vagrant: Update apt before installing
I updated my Vagrant box and destroyed and rebuilt it, and for some reason, it didn’t know about ‘fish’. Updating beforehand fixes it.
2017-09-30 09:17:28 +02:00
Benjamin Sago b85f8f249b Merge pull request #279 from tbodt/patch-1
Update README.md
2017-09-28 17:25:32 +01:00
Benjamin Sago 734579576a Merge pull request #292 from ogham/exa/master
Add .bk extension to is_temp.
2017-09-21 16:23:13 +01:00
Clar Charr eda3e56e4c Add .bk extension to is_temp. 2017-09-17 23:08:25 -04:00
Benjamin Sago 4819c4721b Fix compile error with --no-default-features
Fixes #283. Also, have Travis compile without default features either, so I get warned the next time I break it.
2017-09-14 11:33:24 +01:00
Benjamin Sago f55bd6de53 Merge branch 'it’s-that-time-again' 2017-09-14 11:12:34 +01:00
Benjamin Sago c475cccce4 Flip the new/old order, and add suggestion for -lt
I changed my mind about which way round sorting by “newest” or by “oldest” should actually go. If you’re listing a large directory, you see the last lines of the output first, so these files should be the ones with the largest whatever the sort field is. It’s about sorting *last*, not sorting *first*. Sorting by size wouldn’t say “sorts smallest files first”, it would say “sorts largest files last”. Right?

Also, add a new suggestion that warns against “ls -lt”.
2017-09-14 09:18:17 +01:00
Benjamin Sago a8bf990674 Tie value suggestions to their arguments
This commit changes the definition of Arg so that it knows about which values it can accept, and can display them in the help text. They were already being shown in the help text, but they were passed in separately, so one argument could show two different sets of options if it wanted. Now, the argument itself knows whether there are suggestions, so it doesn’t have to be passed in separately.

This means we can use it for other things, including listing choices when an option is missed out, without having to repeat the list.

With Misfire::BadArgument now only having two fields, it’s not worth using a constructor function anymore.
2017-09-14 01:22:37 +01:00
Benjamin Sago 1824313cda Put misfire.rs in a nicer order
The main type is now at the top.
2017-09-13 23:49:30 +01:00
Benjamin Sago 43bbf00478 Show a warning when running ‘exa -ltr’
Raised in #243 and #284. exa isn’t able to override the -t option like this, so the least it can do is detect that case (which is going to be an error case anyway) and show a suggestion.
2017-09-13 23:47:19 +01:00
Benjamin Sago 0fefc78cbb Add more modified date aliases
I don’t really see the modified date as the *modified* date, rather just the *date* field, because it’s the date field I refer to like 99.9% of the time. So now it has aliases to match.

Also are included are aliases for the reverse order, because I’d rather write “new” than “the reverse of old”.
2017-09-13 23:26:06 +01:00
Benjamin Sago 19b7780755 Fix typo in error message
It said “(Choices: (choices: this, that, other))” instead of “(choices: this, that, other)”. Also improve the same error elsewhere: options more have ‘settings’ than ‘values’.
2017-09-13 22:37:51 +01:00
Benjamin Sago 68e70bf036 Reword this comment 2017-09-13 22:12:11 +01:00
Benjamin Sago aa2e3a5d9e Merge branch 'ls-colors-finally' 2017-09-13 10:12:08 +01:00
Benjamin Sago dc45332d7b Implement file name colouring in {exa,ls}_colors
This commit adds to the parsing of the LS_COLORS and EXA_COLORS variables so that non-two-letter codes (keys other than things like ‘di’ or ‘ln’ or ‘ex’) will be treated as file name globs, and get used to colour files accordingly.

Fixes #116 for good.
2017-09-13 08:51:57 +01:00
Benjamin Sago b86074d63b Rename Style to Styles to avoid a name clash 2017-09-13 08:44:59 +01:00
Theodore Dubois f99d3417ea Update README.md 2017-09-04 14:42:17 -07:00
Benjamin Sago 28b4b672d4 Move FileStyle to the same options file as Colours
They are going to be deduced together (from the same environment variable) so it makes sense to put them in the same file first.
2017-09-03 19:50:40 +01:00
Benjamin Sago 4507edd734 256 colour support in ls_colors
This is more annoying than it should be because it has to work with Styles rather than with strings, which means parsing them, and parsing is always tricky business.
2017-09-03 17:05:38 +01:00
Benjamin Sago bad794ab9d Versions bump 2017-09-03 17:03:30 +01:00
Benjamin Sago 265f93f7cd Merge branch 'late-git-discovery'
This merges in the new Git code, which now uses a global cache rather than being per-repository. This lets exa keep the Git column when listing files outside of a directory and when in recursive or tree views.

Fixes #24 and #183.
2017-09-02 21:59:15 +01:00
Benjamin Sago c60ea36a31 Allow --git --tree, too
This works by checking if any of the (immediate) files being listed are under Git, and hiding the column if all aren’t.
2017-09-02 12:53:08 +01:00
Benjamin Sago 9cda05df20 Only display Git column for directories with repos
This fixes the previous commit.
2017-09-02 00:04:22 +01:00
Benjamin Sago 558b13880b Don’t pass Dirs to the Table
A Table now doesn’t need to know about (or even import) Dir, because we can just not pass the Git reference in if it shouldn’t be using it.
2017-09-01 22:52:13 +01:00
Benjamin Sago f3c7fa500f Fix TableOptions Debug
The only field we can really show is the list of columns, and that happened to be useful this one time, so it might as well get shown!
2017-09-01 22:48:42 +01:00
Benjamin Sago 45a807a14f Redo Git implementation to allow --git --recurse
This is all a big commit because it took a lot more work than I thought it would! The commit basically moves Git repositories from being per-directory to living for the whole life of the program. This allows for several directories in the same repository to be listed in the same invocation; before, it would try to rediscover the repository each time! This is why two of the tests “broke”: it suddenly started working with --recurse.

The Dir type does now not use Git at all; because a Dir doesn’t have a Git, then a File doesn’t have one either, so the Git cache gets passed to the render functions which will put them in the Table to render them.
2017-09-01 19:13:47 +01:00
Benjamin Sago 3d4ddf8af6 Group Git repositories by their workdir
This uses the Git module’s newfound powers of getting actual GitRepo values from a factory to cache repositories a bit more. Now, when querying two directories under the same repository, it’ll open both, see that they have the same workdir, and only use the first one.
2017-08-28 23:52:21 +01:00
Benjamin Sago 62075fe984 Code and logging fix-ups 2017-08-28 18:40:52 +01:00
Benjamin Sago cfc05eef00 Add test for nested Git repository
I don’t know how this should work, but let’s at least record the current behaviour in case it changes
2017-08-28 18:24:20 +01:00
Benjamin Sago 040dbb2414 Use a global Git cache
This commit adds a cache for Git repositories based on the path being queried.

Its only immediate effect is that when you query the same directory twice (such as /testcases/git /testcases/git), it won’t need to check that the second one is a Git directory the second time. So, a minuscule optimisation for something you’d never do anyway? Wrong! It’s going to let us combine multiple entries over the same repository later, letting us use --tree and --recurse, because now Git scanning is behind a factory.
2017-08-28 18:11:38 +01:00
Benjamin Sago 55aaecb74d Improve Git test coverage
- Two different repositories being queried at once
- The same one being queried twice, at different depths
- Tests for --tree and --recurse that should break in the future when that’s implemented
- Also just more tests in general
2017-08-28 15:10:29 +01:00
Benjamin Sago be70fbdf98 Add test for multiple Git repositories 2017-08-27 00:33:02 +01:00
Benjamin Sago d86fc4286b \t and \s+$ 2017-08-26 23:54:12 +01:00
Benjamin Sago 075fe802b4 Merge branch 'exa-colors'
This branch added support for the EXA_COLORS environment variable, and defines a bunch of two-letter configuration settings that allows theming exa.

The next step is to allow custom highlighting based on file names.
2017-08-26 23:46:54 +01:00
Benjamin Sago b13b37ed29 Add exa_colors support to the Vagrant VM 2017-08-26 23:44:29 +01:00