Commit Graph

506 Commits

Author SHA1 Message Date
sharkdp
ecd862d9ff Feature: Highlight non-printable characters
Adds a new `-A`/`--show-all` option (in analogy to GNU Linux `cat`s option) that
highlights non-printable characters like space, tab or newline.

This works in two steps:
- **Preprocessing**: replace space by `•`, replace tab by `├──┤`, replace
newline by `␤`, etc.
- **Highlighting**: Use a newly written Sublime syntax to highlight
these special symbols.

Note: This feature is not technically a drop-in replacement for GNU `cat`s
`--show-all` but it has the same purpose.
2018-11-01 22:00:47 +01:00
sharkdp
4492d99556 Change default tab width to 4 2018-11-01 15:30:58 +01:00
sharkdp
dda27b253b Allow offset values in --terminal-width
Allows the `width` argument to `--terminal-width` to be an offset
instead of an absolute number. Examples:

    --terminal-width=80   # Set output width to 80 characters
    --terminal-width=-2   # Set output width to actual_width - 2

closes #376
2018-10-31 22:21:22 +01:00
David Peter
abcd09f869 Remove commented-out code 2018-10-21 22:52:26 +02:00
Sindre Johansen
41a5ff039b Only use the last argument of {style,plain,number} 2018-10-21 22:52:26 +02:00
Sindre Johansen
155bad3862 Rustfmt 2018-10-21 22:52:26 +02:00
Sindre Johansen
7c98a1c901 When specifying style multiple times the last occurence wins
Closes: #367
2018-10-21 22:52:26 +02:00
David Peter
c1246fcd53 Update help text 2018-10-21 22:42:11 +02:00
David Peter
9f401ea122 Update docstring 2018-10-21 22:42:11 +02:00
Park Juhyung
9c782fb692 Fix format error 2018-10-21 22:42:11 +02:00
Park Juhyung
154186a58d Add --pager option 2018-10-21 22:42:11 +02:00
sharkdp
496e0bc046 Allow for multiple line ranges
See #23
2018-10-20 10:44:13 +02:00
sharkdp
30b742e984 --map-syntax takes just one value 2018-10-17 23:27:44 +02:00
sharkdp
671deeef8c Update help text 2018-10-17 23:17:28 +02:00
sharkdp
8dc7e2efa3 Add --config-file option 2018-10-17 23:08:37 +02:00
sharkdp
10965a6122 Implement syntax mapping
This adds a `-m`/`--map-syntax` option that allows users to (re)map
certain file extensions or file names to an existing syntax.

For example:
```
bat --map-syntax .config:json
```

The option can be use multiple times. Note that you can easily make
these mappings permanent by using `bat`s new configuration file.

closes #169
2018-10-17 23:08:19 +02:00
sharkdp
e43d97dc15 Small cleanup 2018-10-17 21:12:23 +02:00
sharkdp
bb1f5aa841 Add proper handling of empty PAGER variables 2018-10-17 21:08:32 +02:00
sharkdp
2109a7830b Add error handling for parsing errors 2018-10-17 21:08:32 +02:00
sharkdp
ec27c78a8a Remove duplicate 'extern crate' 2018-10-17 21:08:32 +02:00
Morten Linderud
67fe833bc8 Add arguments from PAGER/BAT_PAGER
Solves #352

Signed-off-by: Morten Linderud <morten@linderud.pw>
2018-10-17 21:08:32 +02:00
sharkdp
25a6a55437 Revert "Fix for older version of Rust"
This reverts commit c530fadc44.
2018-10-16 22:09:15 +02:00
sharkdp
5bff4548be Add BAT_OPTS environment variable 2018-10-16 22:09:15 +02:00
sharkdp
866b9e16a8 Add error handling 2018-10-16 22:09:15 +02:00
sharkdp
5af176c94f Move transpose to util module 2018-10-16 22:09:15 +02:00
sharkdp
9e7da05459 Fix for older version of Rust 2018-10-16 22:09:15 +02:00
sharkdp
1ae02c65fb Fix include 2018-10-16 22:09:15 +02:00
sharkdp
495e7fd3b1 Add --no-config option 2018-10-16 22:09:15 +02:00
sharkdp
b48f0fe389 Fix tests 2018-10-16 22:09:15 +02:00
sharkdp
c19c704a43 Add more tests 2018-10-16 22:09:15 +02:00
sharkdp
693bd5929d Add possibility for spaces on a single line 2018-10-16 22:09:15 +02:00
sharkdp
8275b0436d Add simple configuration file
This allows users to create simple configuration file
(`~/.config/bat/config` on Linux) that has the following format:

    ```bash
    --flag1
    --flag2
    --option1=value1
    # lines beginning with '#' are ignored
    --option2=value2
    # empty lines and trailing whitespace are also ignored

    --option3=value3
    ```
2018-10-16 22:09:15 +02:00
sharkdp
278bde5cee Continue with output after "is directory"-error 2018-10-11 21:54:19 +02:00
Taylor
cea05e9f22 be consistent 2018-10-10 22:19:40 -06:00
sharkdp
2a7851530d Fix formatting 2018-10-10 20:45:10 +02:00
Taylor
1a6709c2cb add line highlight 2018-10-09 22:25:33 -06:00
sharkdp
5842d58c01 Updates for syntect 3.0 2018-10-09 22:04:51 +02:00
sharkdp
fc8fd1e63f cargo fmt 2018-10-07 17:49:38 +02:00
sharkdp
25d96da4a2 Add support for UTF-16LE and UTF-16BE 2018-10-07 17:49:38 +02:00
sharkdp
e97095b724 Use first-line detection for STDIN 2018-10-07 15:34:37 +02:00
sharkdp
ce96df00b6 Do not display binary files in interactive mode
closes #248
2018-10-07 15:34:37 +02:00
sharkdp
f98fc5f06a Simplify access to first line 2018-10-07 15:34:37 +02:00
sharkdp
0502a3bd4a Add first-line detection for all input types
closes #205
2018-10-07 15:34:37 +02:00
sharkdp
869cf6368c Add possibility to get first line 2018-10-07 15:34:37 +02:00
sharkdp
078228deac Add unit test for InputFileReader 2018-10-07 15:34:37 +02:00
sharkdp
6d1cc8c2c8 Move read_line functionality to inputfile module 2018-10-07 15:34:37 +02:00
sharkdp
87f021078e Use dyn Trait for trait objects 2018-10-07 15:34:37 +02:00
sharkdp
d5b0502419 Move get_reader into inputfile module 2018-10-07 15:34:37 +02:00
sharkdp
860f3e9006 Move InputFile to separate module 2018-10-07 15:34:37 +02:00
sharkdp
f9fd5e4851 Simplify -h help text 2018-10-07 10:43:39 +02:00
sharkdp
da09f3877b Remove unnecessary scope 2018-10-07 10:09:10 +02:00
Richard Hozák
b39e28d2c8 Add support for wildcards in Windows CMD (#329)
Windows does not support wildcard expansion in cmd, this adds 'wild' crate (as discussed in #309) that handles everything transparently, so wildcards work everywhere.

Fixes #309
2018-10-03 22:59:11 +02:00
davideGiovannini
0d71968615 Generate shell completions with clap during build (#327)
* Generate shell completions with clap during build

* Updated ci release script, added SHELL_COMPLETIONS_DIR override to build.rs and fixed dependency version
2018-10-03 09:39:30 +02:00
sharkdp
80da0dc619 run cargo fmt 2018-09-26 19:16:03 +02:00
sharkdp
64903bb858 Typo 2018-09-26 19:13:32 +02:00
Michal Nazarewicz
79b960e17e Use ansi_colours package for better true-colour approximation 2018-09-23 10:19:19 +02:00
sharkdp
20b02e72b3 Disable wrapping when --style is plain
closes #289
2018-09-18 21:31:56 +02:00
sharkdp
e098eb43a2 Do not show file header for directories
This also adds a better error message.

closes #292
2018-09-12 21:53:41 +02:00
sharkdp
63d32bc818 Merge remote-tracking branch 'upstream/master' into bat_style 2018-09-12 21:40:41 +02:00
sharkdp
dccf8d8221 Use a more streamlined version of style-component collection 2018-09-12 21:35:23 +02:00
eth-p
d404139ff7
Added validation for --tabs.
Also added a comment to explain what 0 represents.
2018-09-12 10:08:58 -07:00
eth-p
1807f9653c
Merge remote-tracking branch 'upstream/master' into feature-tabs
# Conflicts:
#	src/printer.rs
2018-09-11 14:03:47 -07:00
eth-p
1e74f0e2a9
Ran cargo fmt. 2018-09-11 13:47:35 -07:00
eth-p
d90797f8e9
Fixed tab expansion not working in --wrap=never mode. 2018-09-11 13:45:49 -07:00
eth-p
b4096e5627
Moved tab expansion to happen after syntax highlighting. 2018-09-11 13:02:22 -07:00
shik Chen
4e3ab4d399 Query git diff only when needed
In large git repo like chromium, it takes too long time to query git
diff.
2018-09-11 21:09:38 +02:00
ms2300
7897260bf0 BAT_STYLE accounts for multiple styles (ie numbers,header) 2018-09-10 21:58:19 -06:00
eth-p
eb6e43b9a9
Disabled tab expansion when decorations and pager are not used. 2018-09-10 20:12:13 -07:00
eth-p
b23ff24ebc
Added tab expansion preprocessing step. 2018-09-10 18:11:59 -07:00
Rogach
e1ecc17f69 print additional newline if last line in input file was not terminated with a newline (fixes #299) 2018-09-10 22:18:16 +02:00
ms2300
cf24986edb Run formatting for bat_style changes 2018-09-10 00:07:46 -06:00
ms2300
b9c556a0b6 Updated long help to reflect BAT_STYLE changes 2018-09-09 18:35:40 -06:00
ms2300
9d6bde48fa Added BAT_STYLE env variable functionality 2018-09-09 18:28:04 -06:00
sharkdp
8b4abb03db Run 'cargo fmt' 2018-09-08 09:52:21 +02:00
eth-p
375cf76e15 Formatted for newest rustfmt. 2018-09-08 09:52:21 +02:00
eth-p
1a4acc435e Typo 2018-09-08 09:52:21 +02:00
eth-p
d8030626f8 Automatically disable wrapping when style is plain. 2018-09-08 09:52:21 +02:00
eth-p
fb61aa4f60 Wrapping disabled when --plain is used. (#289) 2018-09-08 09:52:21 +02:00
Aankhen
76df41fa97 src/output.rs: Handle less in a portable way. 2018-09-07 21:47:31 +02:00
Shreyansh Chouhan
53d0c1deca Can read files named "cache" now, cache subcommand working too (#275)
Now if a cache file exists in the current directory, and the user passes
no arguments to the cache command, the cache file would be displayed.
If however the user uses cache command with arguments, the cache command
would be executed as normal regardless of whether the file cache exists
in the current directory or not.

Though now there won't be an error message displayed if the user uses the cache sub command without arguments in any directory that contains a file named cache.
2018-09-05 23:22:12 +02:00
sharkdp
1d9e7ac4c2 Support "(/usr)/bin/less" as PAGER too
closes #271
2018-09-05 21:10:11 +02:00
sharkdp
7b803a50af Ignore enable_ansi_support errors
- Call `enable_ansi_support` only once.
- Ignore errors that appear when trying to enable ANSI support. This
  will hopefully fix #252 and #264
2018-09-03 22:15:38 +02:00
sharkdp
026273a05c Enable ANSI support on Windows 2018-09-01 00:23:15 +02:00
sharkdp
8903b64830 Fix for Rust 1.26 2018-08-31 23:57:27 +02:00
sharkdp
194155f062 Fix relative-path computation for Windows 2018-08-31 23:57:27 +02:00
sharkdp
8a52bcf92d Add hidden --terminal-width option 2018-08-31 23:57:27 +02:00
sharkdp
e3c990f11e Respect color settings for list-themes and list-languages 2018-08-31 21:57:18 +02:00
sharkdp
90c7d0c365 Use stdout locks 2018-08-31 21:48:26 +02:00
mchlrhw
56002267d2 Fix panic when running bat --list-languages | head
Fixes: https://github.com/sharkdp/bat/issues/232
2018-08-31 21:43:49 +02:00
sharkdp
acdea97e71 Add --plain 2018-08-28 23:37:49 +02:00
sharkdp
c7afcdebf8 Move theme_preview file to constant 2018-08-28 22:16:42 +02:00
sharkdp
8cacd9b432 Include theme_preview file in binary 2018-08-28 20:24:13 +02:00
sharkdp
6f67444c99 Run cargo fmt 2018-08-28 20:24:13 +02:00
sharkdp
fd2b376ea0 Small style changes to --list-themes 2018-08-28 20:24:13 +02:00
sharkdp
cda54e4f61 Fix build for Rust 1.26 2018-08-28 20:24:13 +02:00
ms2300
3b90ada735 Mutation done correctly 2018-08-28 20:24:13 +02:00
ms2300
1837d364fe Added bold to theme titles 2018-08-28 20:24:13 +02:00
ms2300
4ea3e6bbb7 Changed preview code 2018-08-28 20:24:13 +02:00
ms2300
38544ed735 Changed to plain style 2018-08-28 20:24:13 +02:00
ms2300
5444b0dfed Fixes mut issue 2018-08-28 20:24:13 +02:00
ms2300
f3dde0185d Modifying changing config for efficiency 2018-08-28 20:24:13 +02:00
ms2300
2e3784aa30 #213 : output hello world for each theme when --list-theme is flagged 2018-08-28 20:24:13 +02:00
ms2300
81771432fb #212 : added -p as an alias for --style=plain 2018-08-27 17:56:50 +02:00
sharkdp
627181bcb6 Always call the syntax highlighter 2018-08-23 23:35:57 +02:00
sharkdp
226d9a573a Add simple loop-through mode
Use a loop-through mode that simply copies input to output if a
non-interactive terminal is detected.

see #150
2018-08-23 23:13:24 +02:00
sharkdp
246cf79dbd Split into Controller and Printer 2018-08-23 22:37:27 +02:00
sharkdp
ea955c734d Refactoring, introduce Printer trait 2018-08-23 19:44:14 +02:00
sharkdp
6223ad6d52 Document Config struct 2018-08-22 22:36:59 +02:00
sharkdp
31a9335bd5 Document Config struct 2018-08-22 22:36:37 +02:00
sharkdp
9316f2a758 Major refactoring and cleanup 2018-08-22 22:29:12 +02:00
sharkdp
c884c3cc12 Re-order options in help texts 2018-08-22 19:34:30 +02:00
sharkdp
08850f0474 Update the --help text 2018-08-22 19:27:11 +02:00
Tim Sampson
8e6c5bc562 doc: mention BAT_THEME in help output 2018-08-22 18:14:01 +02:00
sharkdp
052425b12f Load customized themes in addition to defaults
- New themes in `$BAT_CONFIG_DIR/themes` are now loaded *in addition* to
  the default themes (they may also override).
- The `Default.tmTheme` symlink is not necessary anymore.

This relates to #172
2018-08-20 21:39:21 +02:00
sharkdp
2df3305b94 Add new '--blank' option for 'bat cache --init'
closes #206
2018-08-20 21:34:08 +02:00
sharkdp
6882fc1512 Clean up help messages 2018-08-20 21:34:08 +02:00
sharkdp
2508323264 Extract grid and line-number color from theme
This changes the output color of the grid and the line numbers to use
the "gutter" foreground color defined in the Sublime `.tmTheme` files.

Sublime Text does the same.

Note: we could go one step further and also extract the "GitGutter"
colors from the themes. These could be used instead of red/green/yellow
to signify Git modifications. The problem is that they are quite a bit
harder to extract from the syntect `Theme` object.

closes #178
2018-08-19 12:32:35 +02:00
sharkdp
1dddce3aa1 Separate syntax set and theme set
This commit separates the handling of syntax sets and theme sets. It
also changes the way how new syntax definitions are loaded from `bat`'s
configuration folder. New syntax definitions are now loaded *in
addition* to the ones that are stored in the `bat` binary by default.

This fixes #172
2018-08-19 11:08:23 +02:00
sharkdp
b191691767 Revert "replace trait object BufRead by generic"
This reverts commit 037861e588.
2018-08-18 21:25:58 +02:00
Michal Nazarewicz
5c95b8803b Avoid floating point arithmetic in RGB→8-bit ANSI approximation 2018-08-18 20:58:03 +02:00
sharkdp
5b421b455d Update dependencies 2018-08-18 20:44:25 +02:00
sharkdp
d179693d1d Use BAT_PAGER and PAGER environment variables, closes #158 2018-08-18 18:48:22 +02:00
sharkdp
268577c6f9 Run 'cargo fmt' 2018-08-18 17:54:26 +02:00
TA Thanh Dinh
037861e588 replace trait object BufRead by generic 2018-08-18 17:54:26 +02:00
sharkdp
28397b8f78 Always show a warning when theme is unknown 2018-07-23 21:51:49 +02:00
sharkdp
c899849101 Use map instead of and_then(..Some(..)) 2018-07-23 21:51:49 +02:00
sharkdp
bf53b64125 Small style fix 2018-07-23 21:51:49 +02:00
Armando Perez
c68aa0f424 Allow specifying the theme via the BAT_THEME environment variable
The `--theme` command line option stills takes precedence and this
change preserves how errors are handled when it's used: If a theme name
that doesn't exist is specified using the argument, this error is fatal.
However, if a theme that doesn't exist is specified using the environment
variable, the error is logged to `stderr` and the "Default" theme is
loaded as a fallback.
2018-07-23 21:51:49 +02:00
sharkdp
6b57f4eebc Style changes 2018-07-18 00:06:24 +02:00
eth-p
0ddd388a29 Improve logic for SGR sequence passthrough 2018-07-18 00:06:24 +02:00
eth-p
34811b8161 Fix #182 2018-07-18 00:06:24 +02:00
Stéphane Campinas
8c6a74a6c5 typo 2018-07-06 19:09:53 +02:00
sharkdp
65e6970907 Change help text for --line-range 2018-06-12 08:18:44 +02:00
sharkdp
90cc019482 Run 'cargo fmt' 2018-06-12 08:18:44 +02:00
Taylor
eaf0b99d25 update 2018-06-12 08:18:44 +02:00
Taylor Skinner
3b1dcca5d0 use map() 2018-06-12 08:18:44 +02:00
Taylor Skinner
26dbdf4fa0 update line-ranges 2018-06-12 08:18:44 +02:00
Taylor Skinner
6691786d82 add line-range 2018-06-12 08:18:44 +02:00
sharkdp
e27bdfc7d6 Fix clippy warnings 2018-05-31 15:27:55 +02:00
sharkdp
a348a9f68e Handle syntax-set loading errors 2018-05-25 22:42:06 +02:00
TA Thanh Dinh
a13eb60df3 Using slice notation instead of as_ref 2018-05-25 17:38:54 +02:00
sharkdp
9342d0bb24 Explicitly specify which args override themselves 2018-05-24 22:53:23 +02:00
sharkdp
36d7250af2 Allow arguments to override themselves 2018-05-24 22:53:23 +02:00
Ezinwa Okpoechi
a452467e06 Remove unnecessary space if there are no decorations 2018-05-24 19:10:24 +02:00
Ezinwa Okpoechi
2ea3758c4b Justify header when there are decorations but no grid 2018-05-24 19:10:24 +02:00
Gert Hulselmans
65bb4c7ee6 Print themes directory in error message if no themes could be loaded from it.
Before this patch:
    $ bat cache --init
    [bat error]: Could not load themes from '{}'

After:
    $ bat cache --init
    [bat error]: Could not load themes from '/home/user/.config/bat/themes'
2018-05-24 09:09:23 +02:00
Gert Hulselmans
33bbf25468 Fix launching of pager so text is interpreted as UTF-8 by default.
This fixes issue https://github.com/sharkdp/bat/issues/98
2018-05-22 22:41:58 +02:00
Ezinwa Okpoechi
2712d63a4b Move asset clearing to assets module 2018-05-21 23:20:45 +02:00
Ezinwa Okpoechi
b21fb6bca8 Extract features to separate module 2018-05-21 23:20:45 +02:00
Ezinwa Okpoechi
ee43377a9c Move colors to printer module 2018-05-21 19:24:02 +02:00
Ezinwa Okpoechi
120b33a9db Move output to separate module 2018-05-21 19:24:02 +02:00
sharkdp
be0a2d6048 Extended help texts for '--help' 2018-05-19 17:54:05 +02:00
sharkdp
d1a1943998 Add -u and -n options, see #134 2018-05-19 16:58:45 +02:00
sharkdp
2a9f5a24ed Permissive error handling, closes #17 2018-05-19 12:50:41 +02:00
sharkdp
a0ae089c4a Reset line number to 0 for new files 2018-05-19 12:25:07 +02:00
sharkdp
96cc391f2d Skip '--quit-if-one-screen' for --paging=always
closes #97
2018-05-19 10:54:54 +02:00
sharkdp
5e3b17e6f7 Fix code formatting 2018-05-18 17:44:43 +02:00
eth-p
486e6a19cd Fixed #124 2018-05-18 17:44:43 +02:00
Ezinwa Okpoechi
247dfbee83 Extract syntax finding to assets module 2018-05-18 16:45:59 +02:00
Ezinwa Okpoechi
12cb438aa4 Handle line with invalid UTF-8 2018-05-18 16:44:34 +02:00
sharkdp
c826c2a438 Better error handling 2018-05-16 22:55:37 +02:00
sharkdp
145b99f01c Include syntaxes and themes in repository
This changes a few things:

- All syntaxes and themes are now stored (as submodules) under
  assets/syntaxes and assets/themes

- The default directories for syntaxes and themes are "syntaxes"
  and "themes" (used to be "syntax" and "themes")

- The "bat cache" command can now take a `--source <dir>` and
  `--target <dir>` option.

- The cached files have been renamed to "themes.bin" and "syntaxes.bin"
2018-05-16 22:04:12 +02:00
David Peter
2eee68599d
Merge pull request #102 from eth-p/master
Added text wrapping. (Fixes #54)
2018-05-16 08:41:49 +02:00
eth-p
d569693dab Formatted with newer cargo fmt.
It should pass all the checks now.
2018-05-16 08:29:41 +02:00
eth-p
900f61032d
Fix #117 2018-05-15 14:09:51 -07:00
eth-p
d0ca566979
Replace for_line and for_wrap with generate 2018-05-15 13:55:38 -07:00
eth-p
a5a7dc14e4
Fix \r character being printed with wrapping enabled. 2018-05-14 14:36:08 -07:00
rleungx
a5de77af4d address comment 2018-05-14 20:30:16 +02:00
rleungx
870ff7b538 sort the language listing 2018-05-14 20:30:16 +02:00
sharkdp
15b9acd12f Updates for new rustfmt 2018-05-14 19:04:13 +02:00
eth-p
b327127f37
Split decorations into a separate file and optimized them a bit. 2018-05-13 18:44:07 -07:00
eth-p
9214a4a4f0
PR #102 Followed @sharkdp's suggestions 2018-05-13 12:45:16 -07:00
sharkdp
fcecd97224 Add ansi_term import for Windows, see #107 2018-05-13 21:19:26 +02:00
eth-p
870b3c0daf
PR #102 Followed @BrainMaestro's suggestions
Also ran cargo fmt.
2018-05-13 03:26:23 -07:00
sharkdp
b9c780c8c8 Ignore errors when clearing cache, closes #91 2018-05-13 10:34:35 +02:00
sharkdp
ca865f9d26 Enable ANSI support on Windows 10 2018-05-13 09:58:16 +02:00
eth-p
b4cfc9633c
Fix double spaces when outputting without wrapping. 2018-05-12 14:02:47 -07:00
eth-p
d4b438b9d3
Fix padding, add --wrap argument, disable wrap for non-tty. (Fixed)
I'm not quite sure what was up with git on that last commit, but it's
all properly committed now.
2018-05-12 13:44:10 -07:00
eth-p
cd26d403a3
Fix padding, add --wrap argument, disable wrap for non-tty.
Now bat(1) can be used like cat(1) again!
2018-05-12 13:23:33 -07:00
eth-p
f95a23f948
Fix off-by-one error with text wrapping and --style grid 2018-05-12 12:07:41 -07:00
Ethan P
bdd10b8bec
Merge branch 'master' into master 2018-05-12 06:40:47 -07:00
eth-p
fc160b0dcd
PR #102 Review Changes
- Reformatted code.
- Removed leftover code.
- Removed leftover comments.
- Fixed compiling on Rust 1.24.0
2018-05-12 06:32:23 -07:00
sharkdp
cb7b158172 Add bold, italic and underline font styles 2018-05-12 13:23:39 +02:00
eth-p
fcc36b1f79
Forgot to add styling to the horizontal line. 2018-05-11 22:49:26 -07:00
eth-p
4e4110bf50
Added line wrapping. 2018-05-11 21:59:26 -07:00
Ryan Leung
22c8978fca add theme option (#95)
closes #89
2018-05-11 13:53:17 +02:00
Ezinwa Okpoechi
f711fb5006 Split style to separate module 2018-05-11 10:15:26 +02:00
Ezinwa Okpoechi
64a9341b73 Split app to separate module 2018-05-11 10:15:26 +02:00
sharkdp
ccf88fd5d8 Add and use --style=auto by default 2018-05-10 16:22:24 +02:00
sharkdp
e2ac6de783 Fix clippy warnings 2018-05-10 13:15:59 +02:00
Ezinwa Okpoechi
25cee002f9 Split modules (#86)
* Split diffing to separate module
* Split assets to separate module
2018-05-10 12:36:09 +02:00
sharkdp
ea27053a63 Remove unused lifetimes 2018-05-10 12:20:38 +02:00
Pit Kleyersburg
b2b932f3ed Fix header-line if grid is not requested 2018-05-10 12:20:38 +02:00
Pit Kleyersburg
747d074be1 Replace Cow by String 2018-05-10 12:20:38 +02:00
Pit Kleyersburg
61109ece15 Create OutputComponents struct, use HashSet 2018-05-10 12:20:38 +02:00
Pit Kleyersburg
389edd7239 Combine OutputComponents and PredefinedStyles
This commit tries to simply the change. Instead of separating an
`OutputComponent` and a `PredefinedStyle`, I have combined the two into
just `OutputComponent`.

To still have the styles work, I added an impl to `OutputComponent` with
a function `components` which returns the components related to the
specified component.

For a simple output component this is trivial, but for the predefined
styles this is a list of other components.

The evaluating of the command-line parameter simplified significantly,
making use of Claps `values_t!` macro to parse the supplied parameters
into a `Vec<OutputComponent>`. After that it is simply a task of
combining all supplied output components into one vector.

Important: this means that the styles are now additive, rather than one
of the predefined styles overruling other parameters supplied.
2018-05-10 12:20:38 +02:00
Pit Kleyersburg
23813cc08b Make --style parameter more flexible
The `--style` parameter now accepts a comma-separated list of strings,
where every element defines either a single output component (`changes`,
`grid`, `header`, `numbers`) or a predefined style (`full`,
`line-numbers`, `plain`).

If available, bat picks the first predefined style in the user-supplied
style-list and ignores everything else. If no predefined style was
requested, the other parameters that are simple output components will
be used.

Examples:

    --style changes,full,numbers

  Will internally be reduced to only the predefined style `full`.

    --style plain,full

  Will internally be reduced to only the predefined style `plain`.

    --style changes,numbers

  Will not be reduced, because the list does not contain any predefined
  styles.

(Note: if `grid` is requested but no other parameters, bat still creates
the left-most column with a width of `PANEL_WIDTH`. I didn't want to
introduce further logic in this PR that drops or adapts the width of the
left column.)
2018-05-10 12:20:38 +02:00
sharkdp
8b9991d780 Append newline at the end of the file if necessary 2018-05-08 23:49:59 +02:00
sharkdp
f90b9d1acc Do not peek at FIFOs, closes #80 2018-05-08 23:23:41 +02:00
sharkdp
f7af537018 Filter out languages without extensions 2018-05-08 22:57:29 +02:00
sharkdp
fd68af8031 Paint file extensions in green 2018-05-08 22:57:29 +02:00
sharkdp
ebdef04c8f Compute 'longest' for non-hidden languages only 2018-05-08 22:57:29 +02:00
sharkdp
a4150600af Correctly update num_chars 2018-05-08 22:57:29 +02:00
Connor Kuehl
49223eed06 Remove term_width from Printer, its options owns it. 2018-05-08 22:57:29 +02:00
Connor Kuehl
7dc7133b3c Add revisions for line-wrapping and terminal width.
* Adds separator.length() to calculation for desired width.
* Replaces use of term_width with options.term_width.
* Adds the comma and space separator to calculation for line-wrapping.
2018-05-08 22:57:29 +02:00
Connor Kuehl
e5e47716b0 Add term_width to options struct, move getting term_width to run() 2018-05-08 22:57:29 +02:00
Connor Kuehl
b4f8cd3bae Filter out languages that are hidden. 2018-05-08 22:57:29 +02:00
Connor Kuehl
ee3a37f3fc WIP edit desired width. 2018-05-08 22:57:29 +02:00
Connor Kuehl
4c60ab12cc Add simple line-wrapping for file extensions. 2018-05-08 22:57:29 +02:00
Connor Kuehl
ac32dd17c9 Adds requested revisions.
* removes redundant `.takes_value(false)`.
* changes Arg name to "list-languages" to be consistent with long-form.
* replaces unnecessary match statement with is_present().
* replaces unnecessary match statement on iter and uses unwrap_or()
instead.
* replaces for-loop with a call to join().
2018-05-08 22:57:29 +02:00
Connor Kuehl
4e3c57cc7c Rename and add comment to the match block. 2018-05-08 22:57:29 +02:00
Connor Kuehl
438a9a99ed Size language name column width to the length of the longest language. 2018-05-08 22:57:29 +02:00
Connor Kuehl
9b0877102c Display language and extensions from loaded assets. 2018-05-08 22:57:29 +02:00
Connor Kuehl
67bed73e15 Add --list-languages argument to clap. 2018-05-08 22:57:29 +02:00
sharkdp
ef7c39b159 Improve cache subcommand
* Remove the old `init-cache` subcommand

* Introduce a new `cache` subcommand that can be used like this:

    * `bat cache -h` - Show help
    * `bat cache --init` - Initialize cache from config dir
    * `bat cache --clear` - Reset the cache
    * `bat cache --config-dir` - Show config directory

* Update README

closes #44
2018-05-08 20:11:25 +02:00
sharkdp
8a399c8d7d Disable paging-mode if we read from an interactive TTY 2018-05-07 23:27:38 +02:00
sharkdp
9a0e444e09 Simplify stdout handling 2018-05-07 23:27:38 +02:00
sharkdp
438f3df345 Paint STDOUT bold, unify writeln statement 2018-05-07 23:27:38 +02:00
sharkdp
7e2e0c82ac Add support for reading from stdin, closes #2 2018-05-07 23:27:38 +02:00
Ezinwa Okpoechi
53d67e2b6e Add printer
This adds a separate struct that handles printing of the different
tokens.
2018-05-07 08:57:21 +02:00
sharkdp
b625d07c34 Use syntect newlines mode (instead of nonewlines) 2018-05-06 19:50:48 +02:00
Ezinwa Okpoechi
ec606e5dcc Add option to disable automatic paging 2018-05-06 19:50:05 +02:00
Ezinwa Okpoechi
c253821a5e Open pager once for multiple files 2018-05-06 19:50:05 +02:00
sharkdp
ccb1d78b22 Remove short versions for --style and --color for now 2018-05-06 18:23:43 +02:00
sharkdp
9eb64b97fe Discover syntaxes by name and extention 2018-05-06 18:20:35 +02:00
sharkdp
15f0268bdc Use 'plain' style for non-interactive terminals 2018-05-06 16:15:22 +02:00
sharkdp
3fa70deaa7 Run 'cargo fmt' and enforce via Travis 2018-05-06 15:10:46 +02:00
Ezinwa Okpoechi
d4553c6b38 Add color flag
Colors are disabled if the terminal is not interactive unless explicitly
set otherwise
2018-05-06 14:47:53 +02:00
sharkdp
3eb79d63ce Compute pathspec from absolute.strip_prefix(workdir) 2018-05-06 11:22:48 +02:00
Nakul Chaudhari
cbdf5c50c4 Fix bug where git modification markers would not be shown if directory
was not cwd

Git ignore Idea dir

Fix #22
2018-05-06 11:22:48 +02:00
Ezinwa Okpoechi
418b3c5ea1 Add less pager 2018-05-05 09:01:30 +02:00
Nakul Chaudhari
9dca3126b3 Hide everything but content for plain option style
fix #5
2018-05-03 22:49:37 +02:00
nakulcg
7df9a5fe82 Add --style option to disable line numbers and git markers (#43)
closes #5
2018-05-03 20:34:23 +02:00
Ezinwa Okpoechi
4bba08062c Add option to specify language 2018-05-03 17:00:35 +02:00
sharkdp
64ef61b409 Add customization chapter 2018-04-30 16:03:39 +02:00
sharkdp
59fabd8ca5 Load assets from the binary 2018-04-30 15:31:39 +02:00
sharkdp
ced6801740 Better error messages 2018-04-30 15:20:00 +02:00
sharkdp
f81e38618c Implement SyntaxSet and ThemeSet caching
closes #21, see #20
2018-04-30 15:09:20 +02:00
sharkdp
36bbc770eb Use error-chain 2018-04-30 11:09:24 +02:00
sharkdp
f43409f473 Fix clippy warnings 2018-04-26 07:59:22 +02:00
sharkdp
64de2a44d5 Print error if Default.tmTheme is not available
closes #15
2018-04-25 23:34:41 +02:00
sharkdp
86dcb3c165 Fix #13 2018-04-24 21:57:40 +02:00
sharkdp
7b7a5a32d6 Update header 2018-04-24 21:33:50 +02:00
sharkdp
a7232a6ecc Support for custom syntaxes, add 'Markdown extended' theme, closes #10 2018-04-24 00:44:39 +02:00
sharkdp
38762c34d9 Enable 8 bit color support, closes #11 2018-04-23 23:56:47 +02:00
sharkdp
de0198920a Load themes from ~/.config/bat/themes 2018-04-22 16:03:47 +02:00
sharkdp
b5c119e802 Rename get_line_changes 2018-04-22 15:11:35 +02:00
sharkdp
1f2bcf57ba Handle broken pipes, closes #9 2018-04-22 14:37:32 +02:00
sharkdp
de11558ad3 Code restructuring 2018-04-22 14:05:43 +02:00
sharkdp
fcfc7c465b Code cleanup 2018-04-22 13:53:04 +02:00
sharkdp
70ffd60b20 Update help text 2018-04-22 13:45:40 +02:00
sharkdp
36d92361be Better error handling 2018-04-22 13:27:20 +02:00
sharkdp
6b507d1e35 Print filename 2018-04-21 17:36:57 +02:00
sharkdp
ab10a20c1f Use default for highlighting theme 2018-04-21 17:16:53 +02:00
sharkdp
a979608f37 Add Git support, closes #8 2018-04-21 17:12:25 +02:00
sharkdp
8f5a80ea07 Initial commit 2018-04-21 12:53:24 +02:00