Commit Graph

698 Commits

Author SHA1 Message Date
Benjamin Sago
9f6376a560 Give broken links a different style in grid view
Because the link style and status are now both available to the function that picks the colour style, we can have it highlight broken links differently.

Fixes #131.
2017-05-07 14:45:04 +01:00
Benjamin Sago
ccf8d44058 Replace the links boolean with an enum field 2017-05-07 14:08:36 +01:00
Benjamin Sago
88fecb7b26 Make the link target a field 2017-05-07 10:44:09 +01:00
Benjamin Sago
897d6ffa56 Merge branch 'command-line'
Provides shell completion and makes all the command-line options consistent and complete.

Fixes #150, which tracked shell completion.
2017-05-06 23:01:54 +01:00
Benjamin Sago
e2f73927c7 Make all the option descriptions the same
The old option descriptions were all written at different times, and needed some consistency. This makes everything consistent between the help text, README, man page, and shell completions, and fixes some mistakes made when writing them.

This also adds the missing options to the man page, fixing #175.
2017-05-06 23:00:45 +01:00
Benjamin Sago
ad85f3d023 Bash completions 2017-05-06 21:56:40 +01:00
Benjamin Sago
956c5b7181 Rename dexa to just exa 2017-05-06 20:52:43 +01:00
Benjamin Sago
daaadece97 Remember to pass arguments in dexa and rexa 2017-05-06 20:50:47 +01:00
Benjamin Sago
cffbd8d6b1 Zsh completions 2017-05-06 20:50:24 +01:00
Benjamin Sago
3c7800c124 Fish completions 2017-05-06 20:34:59 +01:00
Benjamin Sago
32ab6a5823 Convert the aliases to actual files 2017-05-06 19:38:34 +01:00
Benjamin Sago
b5bd76b548 Give everybody dexa and rexa aliases
Also, make it so the same line doesn’t get added to the .bashrc every time provisioning is run.
2017-05-06 19:14:25 +01:00
Benjamin Sago
1546994313 Merge branch 'system-stuff' 2017-05-06 14:07:23 +01:00
Benjamin Sago
558004b6ac Remove openssl build-time dependencies 2017-05-06 14:06:27 +01:00
Benjamin Sago
87e3b004b3 Merge pull request #174 from kballard/remove_git_networking
Turn off the git networking features
2017-05-06 13:42:45 +01:00
Benjamin Sago
f14ee48658 Make FileTypeExt non-optional
We already use MetadataExt and PermissionsExt, so it already requires a Unix system — there’s no point providing fallback implementations if it wouldn’t build on those systems anyway.
2017-05-03 17:51:17 +01:00
Benjamin Sago
7b2e701b25 Replace hard-coded constants with libc ones 2017-05-03 10:05:16 +01:00
Kevin Ballard
08bc2e3e39 Turn off the git networking features
This removes openssl and makes the binary properly self-contained.
2017-05-02 13:54:25 -07:00
Benjamin Sago
609bafef49 Merge branch 'file-name-refactoring' 2017-05-02 19:34:33 +01:00
Benjamin Sago
cac80410c9 Extract method for making a cell from its contents 2017-05-02 18:16:21 +01:00
Benjamin Sago
ba1c8c650f Fix bug where paths took up twice as much space
For some reason, the code that calculated the width of a cell with a path in counted the width of the path twice: once from the ANSIStrings containing it, and once more added on afterwards. This meant that the grid view thought that columns were wider than they really were, meaning fewer could be fit into a grid.
2017-05-02 17:40:32 +01:00
Benjamin Sago
437ac0ea60 file_name -> FileName#paint 2017-05-02 08:52:24 +01:00
Benjamin Sago
f51f5fe202 Also escape characters in broken symlinks 2017-05-02 08:46:43 +01:00
Benjamin Sago
395f9021ac Move these two imports down 2017-05-01 22:43:28 +01:00
Benjamin Sago
c81440429f Extract method add_parent_bits 2017-05-01 22:26:16 +01:00
Benjamin Sago
56d4d4c156 Also escape characters in links and headings
Doing this meant that the escaping functionality got used in three places, so it was extracted into a generalised function in its own module.

This is slighly slower for the case where escaped characters are displayed in the same colour as the displayable characters, which happens when listing a directory’s name when recursing. Optimise this, yeah?
2017-05-01 21:54:53 +01:00
Benjamin Sago
2d6d462439 Remember to escape characters in link targets
This was a bug introduced by 28fce347ff — it should have updated both places it does this in the function, rather than just one.
2017-05-01 16:53:51 +01:00
Benjamin Sago
5e0b9e0a10 A file’s colour is actually a style 2017-05-01 15:43:27 +01:00
Benjamin Sago
7531b2617c Split out function for --classify character 2017-05-01 15:41:29 +01:00
Benjamin Sago
05a0a5e199 Structify file_name -> FileName
This turns `file` into `self.file` and `colours` into `self.colours`, but it means we don’t need to pass arguments everywhere, which will be more of a problem the more functions there are.

Most of the code has just been indented.
2017-05-01 15:37:02 +01:00
Benjamin Sago
79feeba67d Move the functions in output to their own module
It didn’t feel quite right to have stand-alone functions in the module root file, which is usually just reserved for modules and exports.
2017-05-01 15:17:07 +01:00
Benjamin Sago
3ebc22580a Merge branch 'awkward-file-names'
Fixes #156.
2017-05-01 15:11:35 +01:00
Benjamin Sago
4249cf0fcc Give control characters their own colour 2017-05-01 15:10:39 +01:00
Benjamin Sago
eb7e53ef6c Only highlight escaped characters in file names
Rather than the *entire* file name.

The current method is extremely inefficient, but having control characters in file names is also extremely uncommon; it’s something that should be fixed, only eventually.
2017-05-01 15:06:37 +01:00
Benjamin Sago
a53c268c54 Measure, rather than calculating, cell widths
exa deals with cells and widths a lot: the items in a grid need to be aligned according to their *contents’* widths, rather than the length of their strings, which often included ANSI escape characters. As an optimisation, it used to calculate this separately based on the filename, and dealing with any extra characters (such as the classify ones) in that function too.

Recently, though, file names have become a lot more complicated. Classification added zero to one extra characters, and now with escaped control characters in file names, it’s not so easy to calculate the display width of a filename.

This commit removes the function that calculated the width, in favour of building the output string (it’s going to be displayed anyway) and just getting the width of what it displays instead.
2017-05-01 14:11:16 +01:00
Benjamin Sago
28fce347ff Initial implementation of file name escaping
It doesn’t do a perfect job, but at least there aren’t newlines littering the output anymore.
2017-05-01 12:23:28 +01:00
Benjamin Sago
56f859dd36 Add some awkward file name testcases 2017-05-01 12:22:57 +01:00
Benjamin Sago
70f8ae6e20 Move “coloured file name” into its own function 2017-05-01 11:50:52 +01:00
Benjamin Sago
6b008a6177 Add tests for relative symlinks 2017-04-30 11:58:29 +01:00
Benjamin Sago
91ad09e188 Merge pull request #169 from kballard/symlink_leading_path
Don't prepend current path to symlink targets
2017-04-30 11:13:00 +01:00
Benjamin Sago
58b6d3e50c Make the Vagrant provisioning process quieter 2017-04-30 11:06:52 +01:00
Benjamin Sago
c49820a935 Merge pull request #171 from kballard/symlink_to_root
Handle linking to root directories better
2017-04-30 09:00:59 +01:00
Benjamin Sago
262dbe890b Merge pull request #172 from kballard/vagrant_up_date
Fix Vagrantfile
2017-04-30 08:32:12 +01:00
Kevin Ballard
f8624ed308 Don't prepend current path to symlink targets
It's confusing, and `ls` doesn't do this either. We're not prepending
the current path to all of the directory entries, and the user is going
to interpret the symlink target as relative to the directory containing
the symlink.
2017-04-29 15:01:54 -07:00
Kevin Ballard
e73eb2dc1a Fix Vagrantfile 2017-04-29 14:53:47 -07:00
Kevin Ballard
4beb7b6cb1 Handle linking to root directories better
We don't need a special case for this.
2017-04-29 14:38:28 -07:00
Benjamin Sago
0c69eeca07 Further tests for printing out directory names
., .., and / always seem to cause problems.
2017-04-29 11:52:44 +01:00
Benjamin Sago
956aa85b3b Special-case the root directory when linking to it
It’s the only file where its path is the same as its file name, and has been the source of numerous bugs in the past… this special-case isn’t very clean, but it works.
2017-04-29 11:52:10 +01:00
Benjamin Sago
f8b82642a6 oops
I think I took this off to see how the output was different. Which means there should really be a better way to check how the output is different, other than running the command and looking!
2017-04-29 11:03:43 +01:00
Benjamin Sago
7d6c1eb724 Merge pull request #168 from kballard/dot_filename
Print . and .. components properly
2017-04-29 10:58:39 +01:00