mirror of
https://github.com/sharkdp/bat.git
synced 2025-04-18 16:50:33 +01:00
Merge remote-tracking branch 'origin/master' into fix-1063
This commit is contained in:
commit
02e6ff4183
83
.github/workflows/CICD.yml
vendored
83
.github/workflows/CICD.yml
vendored
@ -2,17 +2,18 @@ name: CICD
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
PROJECT_NAME: bat
|
PROJECT_NAME: bat
|
||||||
|
PROJECT_VERSION: "0.17.1"
|
||||||
PROJECT_DESC: "A `cat` clone with wings"
|
PROJECT_DESC: "A `cat` clone with wings"
|
||||||
PROJECT_MAINTAINER: "David Peter <mail@david-peter.de>"
|
PROJECT_MAINTAINER: "David Peter <mail@david-peter.de>"
|
||||||
PROJECT_HOMEPAGE: "https://github.com/sharkdp/bat"
|
PROJECT_HOMEPAGE: "https://github.com/sharkdp/bat"
|
||||||
MIN_SUPPORTED_RUST_VERSION: "1.40.0"
|
MIN_SUPPORTED_RUST_VERSION: "1.42.0"
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
min_version:
|
min_version:
|
||||||
name: Minimum supported rust version
|
name: Minimum supported rust version
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -27,7 +28,7 @@ jobs:
|
|||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
command: clippy
|
command: clippy
|
||||||
args: --all-targets --all-features -- --allow clippy::style
|
args: --all-targets --all-features
|
||||||
- name: Test
|
- name: Test
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
@ -35,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
test_with_new_syntaxes_and_themes:
|
test_with_new_syntaxes_and_themes:
|
||||||
name: Test with new syntaxes and themes
|
name: Test with new syntaxes and themes
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -83,19 +84,17 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
job:
|
job:
|
||||||
# { os, target, cargo-options, features, use-cross }
|
- { os: ubuntu-18.04 , target: arm-unknown-linux-gnueabihf , use-cross: true }
|
||||||
- { os: ubuntu-latest , target: arm-unknown-linux-gnueabihf , use-cross: true }
|
- { os: ubuntu-18.04 , target: aarch64-unknown-linux-gnu , use-cross: true }
|
||||||
- { os: ubuntu-18.04 , target: aarch64-unknown-linux-gnu , use-cross: true }
|
- { os: ubuntu-18.04 , target: i686-unknown-linux-gnu , use-cross: true }
|
||||||
- { os: ubuntu-18.04 , target: i686-unknown-linux-gnu , use-cross: true }
|
- { os: ubuntu-18.04 , target: i686-unknown-linux-musl , use-cross: true }
|
||||||
- { os: ubuntu-18.04 , target: i686-unknown-linux-musl , use-cross: true }
|
- { os: ubuntu-18.04 , target: x86_64-unknown-linux-gnu }
|
||||||
- { os: ubuntu-18.04 , target: x86_64-unknown-linux-gnu }
|
- { os: ubuntu-18.04 , target: x86_64-unknown-linux-musl , use-cross: true }
|
||||||
- { os: ubuntu-18.04 , target: x86_64-unknown-linux-musl , use-cross: true }
|
- { os: macos-10.15 , target: x86_64-apple-darwin }
|
||||||
- { os: ubuntu-16.04 , target: x86_64-unknown-linux-gnu }
|
# - { os: windows-2019 , target: i686-pc-windows-gnu } ## disabled; error: linker `i686-w64-mingw32-gcc` not found
|
||||||
- { os: macos-latest , target: x86_64-apple-darwin }
|
- { os: windows-2019 , target: i686-pc-windows-msvc }
|
||||||
# - { os: windows-latest , target: i686-pc-windows-gnu } ## disabled; error: linker `i686-w64-mingw32-gcc` not found
|
- { os: windows-2019 , target: x86_64-pc-windows-gnu }
|
||||||
- { os: windows-latest , target: i686-pc-windows-msvc }
|
- { os: windows-2019 , target: x86_64-pc-windows-msvc }
|
||||||
- { os: windows-latest , target: x86_64-pc-windows-gnu }
|
|
||||||
- { os: windows-latest , target: x86_64-pc-windows-msvc }
|
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -116,26 +115,14 @@ jobs:
|
|||||||
# determine EXE suffix
|
# determine EXE suffix
|
||||||
EXE_suffix="" ; case ${{ matrix.job.target }} in *-pc-windows-*) EXE_suffix=".exe" ;; esac;
|
EXE_suffix="" ; case ${{ matrix.job.target }} in *-pc-windows-*) EXE_suffix=".exe" ;; esac;
|
||||||
echo ::set-output name=EXE_suffix::${EXE_suffix}
|
echo ::set-output name=EXE_suffix::${EXE_suffix}
|
||||||
# parse commit reference info
|
|
||||||
unset REF_TAG ; case ${GITHUB_REF} in refs/tags/*) REF_TAG=${GITHUB_REF#refs/tags/} ;; esac;
|
|
||||||
REF_SHAS=${GITHUB_SHA:0:8}
|
|
||||||
# parse target
|
|
||||||
unset TARGET_ARCH ; case ${{ matrix.job.target }} in arm-unknown-linux-gnueabihf) TARGET_ARCH=arm ;; i686-*) TARGET_ARCH=i686 ;; x86_64-*) TARGET_ARCH=x86_64 ;; esac;
|
|
||||||
echo ::set-output name=TARGET_ARCH::${TARGET_ARCH}
|
|
||||||
unset TARGET_OS ; case ${{ matrix.job.target }} in *-linux-*) TARGET_OS=linux ;; *-apple-*) TARGET_OS=macos ;; *-windows-*) TARGET_OS=windows ;; esac;
|
|
||||||
echo ::set-output name=TARGET_OS::${TARGET_OS}
|
|
||||||
# package name
|
# package name
|
||||||
PKG_suffix=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) PKG_suffix=".zip" ;; esac;
|
PKG_suffix=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) PKG_suffix=".zip" ;; esac;
|
||||||
PKG_BASENAME=${PROJECT_NAME}-${REF_TAG:-$REF_SHAS}-${{ matrix.job.target }}
|
PKG_BASENAME=${PROJECT_NAME}-v${PROJECT_VERSION}-${{ matrix.job.target }}
|
||||||
PKG_NAME=${PKG_BASENAME}${PKG_suffix}
|
PKG_NAME=${PKG_BASENAME}${PKG_suffix}
|
||||||
echo ::set-output name=PKG_suffix::${PKG_suffix}
|
|
||||||
echo ::set-output name=PKG_BASENAME::${PKG_BASENAME}
|
echo ::set-output name=PKG_BASENAME::${PKG_BASENAME}
|
||||||
echo ::set-output name=PKG_NAME::${PKG_NAME}
|
echo ::set-output name=PKG_NAME::${PKG_NAME}
|
||||||
# deployable tag? (ie, leading "vM" or "M"; M == version number)
|
unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
|
||||||
unset DEPLOY ; if [[ $REF_TAG =~ ^[vV]?[0-9].* ]]; then DEPLOY='true' ; fi
|
echo ::set-output name=IS_RELEASE::${IS_RELEASE}
|
||||||
# unset deploy on ubuntu-18.04 x64 - we will deploy the tarball/deb built on ubuntu-16.04 x64
|
|
||||||
if [ "${{ matrix.job.os }}" = "ubuntu-18.04" ] && [ "${{ matrix.job.target }}" = "x86_64-unknown-linux-gnu" ]; then unset DEPLOY; fi
|
|
||||||
echo ::set-output name=DEPLOY::${DEPLOY}
|
|
||||||
# DPKG architecture?
|
# DPKG architecture?
|
||||||
unset DPKG_ARCH
|
unset DPKG_ARCH
|
||||||
case ${{ matrix.job.target }} in
|
case ${{ matrix.job.target }} in
|
||||||
@ -145,8 +132,7 @@ jobs:
|
|||||||
x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
|
x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
|
||||||
esac;
|
esac;
|
||||||
echo ::set-output name=DPKG_ARCH::${DPKG_ARCH}
|
echo ::set-output name=DPKG_ARCH::${DPKG_ARCH}
|
||||||
# DPKG version?
|
DPKG_VERSION=${PROJECT_VERSION}
|
||||||
unset DPKG_VERSION ; if [[ $REF_TAG =~ ^[vV]?[0-9].* ]]; then DPKG_VERSION=${REF_TAG/#[vV]/} ; fi
|
|
||||||
echo ::set-output name=DPKG_VERSION::${DPKG_VERSION}
|
echo ::set-output name=DPKG_VERSION::${DPKG_VERSION}
|
||||||
# DPKG base name/conflicts?
|
# DPKG base name/conflicts?
|
||||||
DPKG_BASENAME=${PROJECT_NAME}
|
DPKG_BASENAME=${PROJECT_NAME}
|
||||||
@ -159,10 +145,6 @@ jobs:
|
|||||||
if [[ -n $DPKG_ARCH && -n $DPKG_VERSION ]]; then DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb" ; fi
|
if [[ -n $DPKG_ARCH && -n $DPKG_VERSION ]]; then DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb" ; fi
|
||||||
echo ::set-output name=DPKG_NAME::${DPKG_NAME}
|
echo ::set-output name=DPKG_NAME::${DPKG_NAME}
|
||||||
# target-specific options
|
# target-specific options
|
||||||
# # * `arm` cannot be tested on ubuntu-* hosts (b/c testing is currently primarily done via comparison of target outputs with built-in outputs and the `arm` target is not executable on the host)
|
|
||||||
JOB_DO_TESTING="true"
|
|
||||||
case ${{ matrix.job.target }} in arm-*) unset JOB_DO_TESTING ;; esac;
|
|
||||||
echo ::set-output name=JOB_DO_TESTING::${JOB_DO_TESTING}
|
|
||||||
# # * test only library unit tests and binary for arm-type targets
|
# # * test only library unit tests and binary for arm-type targets
|
||||||
unset CARGO_TEST_OPTIONS
|
unset CARGO_TEST_OPTIONS
|
||||||
unset CARGO_TEST_OPTIONS ; case ${{ matrix.job.target }} in arm-* | aarch64-*) CARGO_TEST_OPTIONS="--lib --bin ${PROJECT_NAME}" ;; esac;
|
unset CARGO_TEST_OPTIONS ; case ${{ matrix.job.target }} in arm-* | aarch64-*) CARGO_TEST_OPTIONS="--lib --bin ${PROJECT_NAME}" ;; esac;
|
||||||
@ -241,11 +223,6 @@ jobs:
|
|||||||
use-cross: ${{ matrix.job.use-cross }}
|
use-cross: ${{ matrix.job.use-cross }}
|
||||||
command: check
|
command: check
|
||||||
args: --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig,git,paging
|
args: --target=${{ matrix.job.target }} --verbose --lib --no-default-features --features regex-onig,git,paging
|
||||||
- name: Upload build artifacts
|
|
||||||
uses: actions/upload-artifact@master
|
|
||||||
with:
|
|
||||||
name: ${{ env.PROJECT_NAME }}-${{ matrix.job.target }}
|
|
||||||
path: target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}
|
|
||||||
- name: Package
|
- name: Package
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@ -358,9 +335,20 @@ jobs:
|
|||||||
# build dpkg
|
# build dpkg
|
||||||
fakeroot dpkg-deb --build "${DPKG_DIR}" "${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}"
|
fakeroot dpkg-deb --build "${DPKG_DIR}" "${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}"
|
||||||
fi
|
fi
|
||||||
|
- name: Upload package artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ steps.vars.outputs.PKG_NAME }}
|
||||||
|
path: ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
|
||||||
|
- name: Upload Debian package artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
if: steps.vars.outputs.DPKG_NAME
|
||||||
|
with:
|
||||||
|
name: ${{ steps.vars.outputs.DPKG_NAME }}
|
||||||
|
path: ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}
|
||||||
- name: Publish archives and packages
|
- name: Publish archives and packages
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
if: steps.vars.outputs.DEPLOY
|
if: steps.vars.outputs.IS_RELEASE
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
|
${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
|
||||||
@ -375,11 +363,10 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: true
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
# job: [ { os: ubuntu-latest }, { os: macos-latest }, { os: windows-latest } ]
|
|
||||||
job:
|
job:
|
||||||
- { os: ubuntu-latest , toolchain: nightly-2020-04-29 }
|
- { os: ubuntu-18.04 , toolchain: nightly-2020-04-29 }
|
||||||
- { os: macos-latest , toolchain: nightly-2020-04-29 }
|
- { os: macos-10.15 , toolchain: nightly-2020-04-29 }
|
||||||
- { os: windows-latest , toolchain: nightly-2020-04-29-x86_64-pc-windows-gnu }
|
- { os: windows-2019 , toolchain: nightly-2020-04-29-x86_64-pc-windows-gnu }
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Initialize workflow variables
|
- name: Initialize workflow variables
|
||||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -213,3 +213,6 @@
|
|||||||
[submodule "assets/syntaxes/02_Extra/Zig"]
|
[submodule "assets/syntaxes/02_Extra/Zig"]
|
||||||
path = assets/syntaxes/02_Extra/Zig
|
path = assets/syntaxes/02_Extra/Zig
|
||||||
url = https://github.com/ziglang/sublime-zig-language.git
|
url = https://github.com/ziglang/sublime-zig-language.git
|
||||||
|
[submodule "assets/syntaxes/02_Extra/gnuplot"]
|
||||||
|
path = assets/syntaxes/02_Extra/gnuplot
|
||||||
|
url = https://github.com/hesstobi/sublime_gnuplot
|
||||||
|
@ -12,23 +12,26 @@
|
|||||||
- Make ./tests/syntax-tests/regression_test.sh work on recent versions of macOS, see #1443 (@Enselic)
|
- Make ./tests/syntax-tests/regression_test.sh work on recent versions of macOS, see #1443 (@Enselic)
|
||||||
- VimL syntax highlighting fix, see #1450 (@esensar)
|
- VimL syntax highlighting fix, see #1450 (@esensar)
|
||||||
- Print an 'Invalid syntax theme settings' error message if a custom theme is broken, see #614 (@Enselic)
|
- Print an 'Invalid syntax theme settings' error message if a custom theme is broken, see #614 (@Enselic)
|
||||||
|
- If plain mode is set and wrap is not explicitly opted in, long lines will no be truncated, see #1426
|
||||||
- If `PAGER` (but not `BAT_PAGER` or `--pager`) is `more` or `most`, silently use `less` instead to ensure support for colors, see #1063 (@Enselic)
|
- If `PAGER` (but not `BAT_PAGER` or `--pager`) is `more` or `most`, silently use `less` instead to ensure support for colors, see #1063 (@Enselic)
|
||||||
|
|
||||||
## Other
|
## Other
|
||||||
|
|
||||||
- Performance improvements, see #1421 (@LovecraftianHorror)
|
- Performance improvements, see #1421 (@LovecraftianHorror)
|
||||||
- Added a new `--diagnostic` option to collect information for bug reports, see #1459 (@sharkdp)
|
- Added a new `--diagnostic` option to collect information for bug reports, see #1459 (@sharkdp)
|
||||||
|
- Upped min required Rust version to 1.42
|
||||||
|
|
||||||
## Syntaxes
|
## Syntaxes
|
||||||
|
|
||||||
- Added Zig syntax, see #1470 (@paulsmith)
|
- Added Zig syntax, see #1470 (@paulsmith)
|
||||||
- Added Lean syntax, see #1446 (@Julian)
|
- Added Lean syntax, see #1446 (@Julian)
|
||||||
- Added `.resource` extension for Robot Framework files, see #1386
|
- Added `.resource` extension for Robot Framework files, see #1386
|
||||||
|
- Added `gnuplot` syntax, see #1431 (@sharkdp)
|
||||||
|
|
||||||
## New themes
|
## New themes
|
||||||
|
|
||||||
- `ansi` replaces `ansi-dark` and `ansi-light`, see #1104 and #1412 (@mk12)
|
- `ansi` replaces `ansi-dark` and `ansi-light`, see #1104 and #1412 (@mk12). **Breaking change:** users that were previously using one of the `ansi-*` themes should switch to `ansi`.
|
||||||
- The Gruvbox theme has been updated, see #1291 (@j0hnmeow). **Breaking change:** users that were previously usuing `gruvbox` or `gruvbox-white` should update and use `gruvbox-dark`/`gruvbox-light` instead.
|
- The Gruvbox theme has been updated, see #1291 (@j0hnmeow). **Breaking change:** users that were previously using `gruvbox` or `gruvbox-white` should update and use `gruvbox-dark`/`gruvbox-light` instead.
|
||||||
|
|
||||||
## `bat` as a library
|
## `bat` as a library
|
||||||
|
|
||||||
|
28
Cargo.lock
generated
28
Cargo.lock
generated
@ -186,9 +186,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "byteorder"
|
name = "byteorder"
|
||||||
version = "1.3.4"
|
version = "1.4.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
|
checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
@ -589,9 +589,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.81"
|
version = "0.2.82"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
|
checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libgit2-sys"
|
name = "libgit2-sys"
|
||||||
@ -628,9 +628,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "linked-hash-map"
|
name = "linked-hash-map"
|
||||||
version = "0.5.3"
|
version = "0.5.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
|
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
@ -903,9 +903,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.4.2"
|
version = "1.4.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"
|
checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick",
|
"aho-corasick",
|
||||||
"memchr",
|
"memchr",
|
||||||
@ -915,9 +915,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-syntax"
|
name = "regex-syntax"
|
||||||
version = "0.6.21"
|
version = "0.6.22"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"
|
checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "remove_dir_all"
|
name = "remove_dir_all"
|
||||||
@ -1058,9 +1058,9 @@ checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.6.0"
|
version = "1.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1a55ca5f3b68e41c979bf8c46a6f1da892ca4db8f94023ce0bd32407573b1ac0"
|
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "snailquote"
|
name = "snailquote"
|
||||||
@ -1190,9 +1190,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thread_local"
|
name = "thread_local"
|
||||||
version = "1.0.1"
|
version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
|
checksum = "bb9bc092d0d51e76b2b19d9d85534ffc9ec2db959a2523cdae0697e2972cd447"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
]
|
]
|
||||||
|
@ -356,7 +356,7 @@ binaries are also available: look for archives with `musl` in the file name.
|
|||||||
|
|
||||||
### From source
|
### From source
|
||||||
|
|
||||||
If you want to build `bat` from source, you need Rust 1.40 or
|
If you want to build `bat` from source, you need Rust 1.42 or
|
||||||
higher. You can then use `cargo` to build everything:
|
higher. You can then use `cargo` to build everything:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -700,6 +700,7 @@ Take a look at the [`CONTRIBUTING.md`](CONTRIBUTING.md) guide.
|
|||||||
- [sharkdp](https://github.com/sharkdp)
|
- [sharkdp](https://github.com/sharkdp)
|
||||||
- [eth-p](https://github.com/eth-p)
|
- [eth-p](https://github.com/eth-p)
|
||||||
- [keith-hall](https://github.com/keith-hall)
|
- [keith-hall](https://github.com/keith-hall)
|
||||||
|
- [Enselic](https://github.com/Enselic)
|
||||||
|
|
||||||
## Project goals and alternatives
|
## Project goals and alternatives
|
||||||
|
|
||||||
|
1
assets/syntaxes/02_Extra/gnuplot
vendored
Submodule
1
assets/syntaxes/02_Extra/gnuplot
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 04743470ff90237ba3fb34ccf77c2d256d611262
|
182
assets/syntaxes/02_Extra/gnuplot.sublime-syntax
vendored
Normal file
182
assets/syntaxes/02_Extra/gnuplot.sublime-syntax
vendored
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: gnuplot
|
||||||
|
file_extensions:
|
||||||
|
- gp
|
||||||
|
- gpl
|
||||||
|
- gnuplot
|
||||||
|
- gnu
|
||||||
|
- plot
|
||||||
|
- plt
|
||||||
|
scope: source.gnuplot
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- include: number
|
||||||
|
- include: string_single
|
||||||
|
- include: string_double
|
||||||
|
- match: '\b(for)\b\s*(\[)'
|
||||||
|
comment: |
|
||||||
|
gnuplot iteration statement.
|
||||||
|
There are two forms:
|
||||||
|
numeric [n = 1:2{:inc}]
|
||||||
|
string based [str in "x y z"]
|
||||||
|
but both can also iterate over lists etc, so this is kept loose.
|
||||||
|
captures:
|
||||||
|
1: keyword.other.iteration.gnuplot
|
||||||
|
2: punctuation.definition.range.begin.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: meta.structure.iteration.gnuplot
|
||||||
|
- match: '\]'
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.range.end.gnuplot
|
||||||
|
pop: true
|
||||||
|
- include: number
|
||||||
|
- include: operator
|
||||||
|
- include: string_double
|
||||||
|
- include: string_single
|
||||||
|
- match: ":"
|
||||||
|
scope: punctuation.separator.range.gnuplot
|
||||||
|
- match: '\b([a-zA-Z]\w*)\b\s*(=|in)'
|
||||||
|
scope: variable-assignment.range.gnuplot
|
||||||
|
- match: '(?i:[^\s(pi|e)\]])'
|
||||||
|
scope: invalid.illegal.expected-range-separator.gnuplot
|
||||||
|
- match: '\['
|
||||||
|
comment: "gnuplot range statement [a:b]. Lots of things are legal, still more make no sense!"
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.range.begin.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: meta.structure.range.gnuplot
|
||||||
|
- match: '\]'
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.range.end.gnuplot
|
||||||
|
pop: true
|
||||||
|
- include: number
|
||||||
|
- include: operator
|
||||||
|
- match: ":"
|
||||||
|
scope: punctuation.separator.range.gnuplot
|
||||||
|
- match: '(?i:[^\s(pi|e)\]])'
|
||||||
|
scope: invalid.illegal.expected-range-separator.gnuplot
|
||||||
|
- match: \\.
|
||||||
|
scope: constant.character.escape.gnuplot
|
||||||
|
- match: '(?<!\$)(#)(?!\{).*$\n?'
|
||||||
|
scope: comment.line.number-sign.gnuplot
|
||||||
|
captures:
|
||||||
|
1: punctuation.definition.comment.gnuplot
|
||||||
|
- match: for
|
||||||
|
comment: introduce in gnuplot 4.3.
|
||||||
|
scope: keyword.other.iteration.gnuplot
|
||||||
|
- match: \b(angles|arrow|autoscale|bars|border|boxwidth|clabel|clip|cntrparam|colorbox|contour|decimalsign|dgrid3d|dummy|encoding|fit|format|grid|hidden3d|historysize|isosamples|key|label|locale|logscale|macros|bmargin|lmargin|rmargin|tmargin|mapping|mouse|multiplot|offsets|origin|output|palette|parametric|pm3d|pointsize|polar|print|rrange|trange|urange|vrange|samples|size|style|surface|tics|ticscale|ticslevel|timestamp|timefmt|title|view|xyplane|x2data|xdata|y2data|ydata|z2data|zdata|x2label|xlabel|y2label|ylabel|z2label|zlabel|x2range|xrange|y2range|yrange|z2range|zrange|mx2tics|mxtics|my2tics|mytics|mz2tics|mztics|nomx2tics|nomxtics|nomy2tics|nomytics|nomz2tics|nomztics|nox2tics|noxtics|noy2tics|noytics|noz2tics|noztics|x2tics|xtics|y2tics|ytics|z2tics|ztics|x2dtics|x2mtics|xdtics|xmtics|y2dtics|y2mtics|ydtics|ymtics|z2dtics|z2mtics|zdtics|zmtics|x2zeroaxis|xzeroaxis|y2zeroaxis|yzeroaxis|z2zeroaxis|zeroaxis|zzeroaxis|zero|)\b
|
||||||
|
scope: keyword.other.setting.gnuplot
|
||||||
|
- match: \b(cd|call|clear|exit|plot|splot|help|load|pause|quit|fit|replot|if|FIT_LIMIT|FIT_MAXITER|FIT_START_LAMBDA|FIT_LAMBDA_FACTOR|FIT_LOG|FIT_SCRIPT|print|pwd|reread|reset|save|show|test|!|functions|var)\b
|
||||||
|
comment: missuse of scopes alert! Just for pretty colours
|
||||||
|
scope: keyword.other.command.gnuplot
|
||||||
|
- match: \b(abs|acos|acosh|arg|asin|asinh|atan|atan2|atanh|besj0|besj1|besy0|besy1|ceil|cos|cosh|erf|erfc|exp|floor|gamma|ibeta|igamma|imag|int|inverf|invnorm|lambertw|lgamma|log|log10|norm|rand|real|sgn|sin|sinh|sqrt|tan|tanh)\b
|
||||||
|
scope: support.function.gnuplot
|
||||||
|
- match: \b(gprintf|sprintf|strlen|strstrt|substr|system|word|words)\b
|
||||||
|
scope: support.function.string.gnuplot
|
||||||
|
- match: \b(on|off|default|inside|outside|lmargin|rmargin|tmargin|bmargin|at|left|right|center|top|bottom|center|vertical|horizontal|Left|Right|noreverse|noinvert|samplen|spacing|width|height|noautotitle|columnheader|title|noenhanced|nobox|linestyle|ls|linetype|lt|linewidth|lw)\b
|
||||||
|
scope: constant.other.type.gnuplot
|
||||||
|
- match: \b(aed512|aed767|aifm|aqua|bitgraph|cgm|corel|dumb|dxf|eepic|emf|emtex|epslatex|epson_180dpi|epson_60dpi|epson_lx800|fig|gif|gpic|hp2623A|hp2648|hp500c|hpdj|hpgl|hpljii|hppj|imagen|jpeg|kc_tek40xx|km_tek40xx|latex|mf|mif|mp|nec_cp6|okidata|pbm|pcl5|pdf|png|postscript|pslatex|pstex|pstricks|qms|regis|selanar|starc|svg|tandy_60dpi|tek40xx|tek410x|texdraw|tgif|tkcanvas|tpic|unknown|vttek)\b
|
||||||
|
scope: constant.other.terminal.gnuplot
|
||||||
|
- match: \b(u(sing)?|t(it(le)?)?|notit(le)?|w(i(th)?)?|steps|fs(teps)?|notitle|l(i(nes)?)?|linespoints|via)\b
|
||||||
|
scope: keyword.modifier.gnuplot
|
||||||
|
- match: |-
|
||||||
|
(?x:
|
||||||
|
\b # Start with a word boundary
|
||||||
|
(?=\b[\w$]*(\(|.*=)) # Look-ahead for a bracket or equals
|
||||||
|
(?![^(]*\)) # negative look ahead for a closing bracket without an opening one. This stops a from matching in f(a)
|
||||||
|
( # Group variable name
|
||||||
|
[A-Za-z] # A letter
|
||||||
|
[\w$]* # Any word chars or $
|
||||||
|
) # That is it for the name.
|
||||||
|
)
|
||||||
|
comment: user defined function / variable
|
||||||
|
scope: variable.other.gnuplot
|
||||||
|
- match: \b(if)\b
|
||||||
|
scope: keyword.control.gnuplot
|
||||||
|
- match: \b(show)\b
|
||||||
|
captures:
|
||||||
|
0: keyword.other.command.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: keyword.line.show.gnuplot
|
||||||
|
- meta_content_scope: keyword.line.show.gnuplot
|
||||||
|
- match: (?!\#)($\n?)
|
||||||
|
pop: true
|
||||||
|
- include: main
|
||||||
|
- match: \b(set)\b\s*\b(terminal|term)\b
|
||||||
|
captures:
|
||||||
|
1: keyword.other.command.gnuplot
|
||||||
|
2: keyword.other.setting.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: keyword.line.set.terminal.gnuplot
|
||||||
|
- match: (?!\#)($\n?)
|
||||||
|
pop: true
|
||||||
|
- include: main
|
||||||
|
- match: \b(set)\b\s*\b(key)\b
|
||||||
|
captures:
|
||||||
|
1: keyword.other.command.gnuplot
|
||||||
|
2: keyword.other.setting.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: keyword.line.set.key.gnuplot
|
||||||
|
- match: (?!\#)($\n?)
|
||||||
|
pop: true
|
||||||
|
- include: main
|
||||||
|
- match: \b(set|unset)\b\s*(?!\b(terminal|key|for)\b)
|
||||||
|
captures:
|
||||||
|
1: keyword.other.command.gnuplot
|
||||||
|
2: keyword.other.setting.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: keyword.line.set.gnuplot
|
||||||
|
- meta_content_scope: keyword.line.set.gnuplot
|
||||||
|
- match: (?!\#)($\n?)
|
||||||
|
pop: true
|
||||||
|
- include: main
|
||||||
|
number:
|
||||||
|
- match: |-
|
||||||
|
(?x: # turn on extended mode
|
||||||
|
-? # an optional minus
|
||||||
|
(?:
|
||||||
|
0 # a zero
|
||||||
|
| # ...or...
|
||||||
|
[1-9] # a 1-9 character
|
||||||
|
\d* # followed by zero or more digits
|
||||||
|
)
|
||||||
|
(?:
|
||||||
|
\. # a period
|
||||||
|
\d+ # followed by one or more digits
|
||||||
|
(?:
|
||||||
|
[eE] # an e character
|
||||||
|
[+-]? # followed by an option +/-
|
||||||
|
\d+ # followed by one or more digits
|
||||||
|
)? # make exponent optional
|
||||||
|
)? # make decimal portion optional
|
||||||
|
)
|
||||||
|
comment: borrowed from textmate book
|
||||||
|
scope: constant.numeric.gnuplot
|
||||||
|
operator:
|
||||||
|
- match: \s*(==|~=|>|>=|<|<=|&|&&|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*
|
||||||
|
comment: Operator symbols
|
||||||
|
scope: keyword.operator.symbols.matlab
|
||||||
|
string_double:
|
||||||
|
- match: '"'
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.string.begin.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: string.quoted.double.gnuplot
|
||||||
|
- match: '"'
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.string.end.gnuplot
|
||||||
|
pop: true
|
||||||
|
- match: '\\[\$`"\\\n]'
|
||||||
|
scope: constant.character.escape.gnuplot
|
||||||
|
string_single:
|
||||||
|
- match: "'"
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.string.begin.gnuplot
|
||||||
|
push:
|
||||||
|
- meta_scope: string.quoted.single.gnuplot
|
||||||
|
- match: "'"
|
||||||
|
captures:
|
||||||
|
0: punctuation.definition.string.end.gnuplot
|
||||||
|
pop: true
|
@ -341,7 +341,7 @@ ansible-galaxy install aeimer.install_bat
|
|||||||
|
|
||||||
### Из исходников
|
### Из исходников
|
||||||
|
|
||||||
Если вы желаете установить `bat` из исходников, вам понадобится Rust 1.40 или выше. После этого используйте `cargo`, чтобы все скомпилировать:
|
Если вы желаете установить `bat` из исходников, вам понадобится Rust 1.42 или выше. После этого используйте `cargo`, чтобы все скомпилировать:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo install --locked bat
|
cargo install --locked bat
|
||||||
|
@ -23,7 +23,7 @@ in the `.sublime-syntax` format.
|
|||||||
|
|
||||||
5. Use `bat --list-languages` to check if the new languages are available.
|
5. Use `bat --list-languages` to check if the new languages are available.
|
||||||
|
|
||||||
6. Add a syntax test for the new language. See [#Syntax-tests](below) for details.
|
6. Add a syntax test for the new language. See [below](#Syntax-tests) for details.
|
||||||
|
|
||||||
7. If you send a pull request with your changes, please do *not* include the changed `syntaxes.bin`
|
7. If you send a pull request with your changes, please do *not* include the changed `syntaxes.bin`
|
||||||
file. A new binary cache file will be created once before every new release of `bat`.
|
file. A new binary cache file will be created once before every new release of `bat`.
|
||||||
|
@ -150,10 +150,10 @@ impl App {
|
|||||||
wrapping_mode: if self.interactive_output || maybe_term_width.is_some() {
|
wrapping_mode: if self.interactive_output || maybe_term_width.is_some() {
|
||||||
match self.matches.value_of("wrap") {
|
match self.matches.value_of("wrap") {
|
||||||
Some("character") => WrappingMode::Character,
|
Some("character") => WrappingMode::Character,
|
||||||
Some("never") => WrappingMode::NoWrapping,
|
Some("never") => WrappingMode::NoWrapping(true),
|
||||||
Some("auto") | None => {
|
Some("auto") | None => {
|
||||||
if style_components.plain() {
|
if style_components.plain() {
|
||||||
WrappingMode::NoWrapping
|
WrappingMode::NoWrapping(false)
|
||||||
} else {
|
} else {
|
||||||
WrappingMode::Character
|
WrappingMode::Character
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ impl App {
|
|||||||
} else {
|
} else {
|
||||||
// We don't have the tty width when piping to another program.
|
// We don't have the tty width when piping to another program.
|
||||||
// There's no point in wrapping when this is the case.
|
// There's no point in wrapping when this is the case.
|
||||||
WrappingMode::NoWrapping
|
WrappingMode::NoWrapping(false)
|
||||||
},
|
},
|
||||||
colored_output: self.matches.is_present("force-colorization")
|
colored_output: self.matches.is_present("force-colorization")
|
||||||
|| match self.matches.value_of("color") {
|
|| match self.matches.value_of("color") {
|
||||||
|
@ -2,7 +2,7 @@ use bat::input::Input;
|
|||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
|
|
||||||
pub fn new_file_input<'a>(file: &'a OsStr, name: Option<&'a OsStr>) -> Input<'a> {
|
pub fn new_file_input<'a>(file: &'a OsStr, name: Option<&'a OsStr>) -> Input<'a> {
|
||||||
named(Input::ordinary_file(file), name.or_else(|| Some(file)))
|
named(Input::ordinary_file(file), name.or(Some(file)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_stdin_input(name: Option<&OsStr>) -> Input {
|
pub fn new_stdin_input(name: Option<&OsStr>) -> Input {
|
||||||
|
@ -205,7 +205,7 @@ pub fn list_themes(cfg: &Config) -> Result<()> {
|
|||||||
and are added to the cache with `bat cache --build`. \
|
and are added to the cache with `bat cache --build`. \
|
||||||
For more information, see:\n\n \
|
For more information, see:\n\n \
|
||||||
https://github.com/sharkdp/bat#adding-new-themes",
|
https://github.com/sharkdp/bat#adding-new-themes",
|
||||||
config_file().join("themes").to_string_lossy()
|
PROJECT_DIRS.config_dir().join("themes").to_string_lossy()
|
||||||
)?;
|
)?;
|
||||||
} else {
|
} else {
|
||||||
for theme in assets.themes() {
|
for theme in assets.themes() {
|
||||||
@ -237,10 +237,10 @@ fn run() -> Result<bool> {
|
|||||||
.info(EnvironmentVariables::list(&[
|
.info(EnvironmentVariables::list(&[
|
||||||
"SHELL",
|
"SHELL",
|
||||||
"PAGER",
|
"PAGER",
|
||||||
|
"BAT_PAGER",
|
||||||
"BAT_CACHE_PATH",
|
"BAT_CACHE_PATH",
|
||||||
"BAT_CONFIG_PATH",
|
"BAT_CONFIG_PATH",
|
||||||
"BAT_OPTS",
|
"BAT_OPTS",
|
||||||
"BAT_PAGER",
|
|
||||||
"BAT_STYLE",
|
"BAT_STYLE",
|
||||||
"BAT_TABS",
|
"BAT_TABS",
|
||||||
"BAT_THEME",
|
"BAT_THEME",
|
||||||
@ -248,6 +248,7 @@ fn run() -> Result<bool> {
|
|||||||
"XDG_CACHE_HOME",
|
"XDG_CACHE_HOME",
|
||||||
"COLORTERM",
|
"COLORTERM",
|
||||||
"NO_COLOR",
|
"NO_COLOR",
|
||||||
|
"MANPAGER",
|
||||||
]))
|
]))
|
||||||
.info(FileContent::new("Config file", config_file()))
|
.info(FileContent::new("Config file", config_file()))
|
||||||
.info(CompileTimeInformation::default())
|
.info(CompileTimeInformation::default())
|
||||||
|
@ -137,11 +137,7 @@ impl<'a> Input<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_stdin(&self) -> bool {
|
pub fn is_stdin(&self) -> bool {
|
||||||
if let InputKind::StdIn = self.kind {
|
matches!(self.kind, InputKind::StdIn)
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_name(mut self, provided_name: Option<&OsStr>) -> Self {
|
pub fn with_name(mut self, provided_name: Option<&OsStr>) -> Self {
|
||||||
|
@ -81,7 +81,7 @@ impl OutputType {
|
|||||||
p.arg("--quit-if-one-screen");
|
p.arg("--quit-if-one-screen");
|
||||||
}
|
}
|
||||||
|
|
||||||
if wrapping_mode == WrappingMode::NoWrapping {
|
if wrapping_mode == WrappingMode::NoWrapping(true) {
|
||||||
p.arg("--chop-long-lines");
|
p.arg("--chop-long-lines");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,11 +121,7 @@ impl OutputType {
|
|||||||
|
|
||||||
#[cfg(feature = "paging")]
|
#[cfg(feature = "paging")]
|
||||||
pub(crate) fn is_pager(&self) -> bool {
|
pub(crate) fn is_pager(&self) -> bool {
|
||||||
if let OutputType::Pager(_) = self {
|
matches!(self, OutputType::Pager(_))
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "paging"))]
|
#[cfg(not(feature = "paging"))]
|
||||||
|
@ -320,6 +320,12 @@ impl<'a> PrettyPrinter<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for PrettyPrinter<'_> {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// An input source for the pretty printer.
|
/// An input source for the pretty printer.
|
||||||
pub struct Input<'a> {
|
pub struct Input<'a> {
|
||||||
input: input::Input<'a>,
|
input: input::Input<'a>,
|
||||||
|
@ -424,7 +424,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Line contents.
|
// Line contents.
|
||||||
if self.config.wrapping_mode == WrappingMode::NoWrapping {
|
if matches!(self.config.wrapping_mode, WrappingMode::NoWrapping(_)) {
|
||||||
let true_color = self.config.true_color;
|
let true_color = self.config.true_color;
|
||||||
let colored_output = self.config.colored_output;
|
let colored_output = self.config.colored_output;
|
||||||
let italics = self.config.use_italic_text;
|
let italics = self.config.use_italic_text;
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum WrappingMode {
|
pub enum WrappingMode {
|
||||||
Character,
|
Character,
|
||||||
NoWrapping,
|
// The bool specifies whether wrapping has been explicitly disabled by the user via --wrap=never
|
||||||
|
NoWrapping(bool),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for WrappingMode {
|
impl Default for WrappingMode {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
WrappingMode::NoWrapping
|
WrappingMode::NoWrapping(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ fn all_themes_are_present() {
|
|||||||
let assets = HighlightingAssets::from_binary();
|
let assets = HighlightingAssets::from_binary();
|
||||||
|
|
||||||
let mut themes: Vec<_> = assets.themes().collect();
|
let mut themes: Vec<_> = assets.themes().collect();
|
||||||
themes.sort();
|
themes.sort_unstable();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
themes,
|
themes,
|
||||||
|
@ -7,7 +7,7 @@ macro_rules! snapshot_tests {
|
|||||||
$(
|
$(
|
||||||
#[test]
|
#[test]
|
||||||
fn $test_name() {
|
fn $test_name() {
|
||||||
let bat_tester = BatTester::new();
|
let bat_tester = BatTester::default();
|
||||||
bat_tester.test_snapshot(stringify!($test_name), $style);
|
bat_tester.test_snapshot(stringify!($test_name), $style);
|
||||||
}
|
}
|
||||||
)*
|
)*
|
||||||
|
19
tests/syntax-tests/highlighted/gnuplot/test.gp
Normal file
19
tests/syntax-tests/highlighted/gnuplot/test.gp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114mterminal[0m[38;2;249;38;114m pngcairo enhanced[0m
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114moutput[0m[38;2;249;38;114m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m/tmp/polynomial.png[0m[38;2;230;219;116m"[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114mgrid[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114mxrange[0m[38;2;249;38;114m [0m[38;2;249;38;114m[[0m[38;2;190;132;255m-5[0m[38;2;249;38;114m:[0m[38;2;190;132;255m5[0m[38;2;249;38;114m][0m
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114myrange[0m[38;2;249;38;114m [0m[38;2;249;38;114m[[0m[38;2;190;132;255m-5[0m[38;2;249;38;114m:[0m[38;2;190;132;255m10[0m[38;2;249;38;114m][0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114msamples[0m[38;2;249;38;114m [0m[38;2;190;132;255m10000[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mset[0m[38;2;249;38;114m [0m[38;2;249;38;114mkey[0m[38;2;249;38;114m [0m[38;2;190;132;255mbottom[0m[38;2;249;38;114m [0m[38;2;190;132;255mright[0m
|
||||||
|
|
||||||
|
[38;2;255;255;255mf[0m[38;2;248;248;242m(x) = [0m[38;2;190;132;255m1.0[0m[38;2;248;248;242m / [0m[38;2;190;132;255m14.0[0m[38;2;248;248;242m * ((x+[0m[38;2;190;132;255m4[0m[38;2;248;248;242m) * (x+[0m[38;2;190;132;255m1[0m[38;2;248;248;242m) * (x[0m[38;2;190;132;255m-1[0m[38;2;248;248;242m) * (x[0m[38;2;190;132;255m-3[0m[38;2;248;248;242m)) + [0m[38;2;190;132;255m0.5[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mplot[0m[38;2;248;248;242m \[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255mf[0m[38;2;248;248;242m(x) [0m[38;2;190;132;255mtitle[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mpolynomial of degree 4[0m[38;2;230;219;116m"[0m[38;2;248;248;242m \[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mwith[0m[38;2;248;248;242m [0m[38;2;249;38;114mlines[0m[38;2;248;248;242m \[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;190;132;255mlinewidth[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;248;248;242m \[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;190;132;255mlinetype[0m[38;2;248;248;242m rgb [0m[38;2;230;219;116m'[0m[38;2;230;219;116m#0077ff[0m[38;2;230;219;116m'[0m
|
19
tests/syntax-tests/source/gnuplot/test.gp
Normal file
19
tests/syntax-tests/source/gnuplot/test.gp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
set terminal pngcairo enhanced
|
||||||
|
set output "/tmp/polynomial.png"
|
||||||
|
|
||||||
|
set grid
|
||||||
|
|
||||||
|
set xrange [-5:5]
|
||||||
|
set yrange [-5:10]
|
||||||
|
|
||||||
|
set samples 10000
|
||||||
|
|
||||||
|
set key bottom right
|
||||||
|
|
||||||
|
f(x) = 1.0 / 14.0 * ((x+4) * (x+1) * (x-1) * (x-3)) + 0.5
|
||||||
|
|
||||||
|
plot \
|
||||||
|
f(x) title "polynomial of degree 4" \
|
||||||
|
with lines \
|
||||||
|
linewidth 2 \
|
||||||
|
linetype rgb '#0077ff'
|
@ -19,23 +19,6 @@ pub struct BatTester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl BatTester {
|
impl BatTester {
|
||||||
pub fn new() -> Self {
|
|
||||||
let temp_dir = create_sample_directory().expect("sample directory");
|
|
||||||
|
|
||||||
let root = env::current_exe()
|
|
||||||
.expect("tests executable")
|
|
||||||
.parent()
|
|
||||||
.expect("tests executable directory")
|
|
||||||
.parent()
|
|
||||||
.expect("bat executable directory")
|
|
||||||
.to_path_buf();
|
|
||||||
|
|
||||||
let exe_name = if cfg!(windows) { "bat.exe" } else { "bat" };
|
|
||||||
let exe = root.join(exe_name);
|
|
||||||
|
|
||||||
BatTester { temp_dir, exe }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn test_snapshot(&self, name: &str, style: &str) {
|
pub fn test_snapshot(&self, name: &str, style: &str) {
|
||||||
let output = Command::new(&self.exe)
|
let output = Command::new(&self.exe)
|
||||||
.current_dir(self.temp_dir.path())
|
.current_dir(self.temp_dir.path())
|
||||||
@ -66,6 +49,25 @@ impl BatTester {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for BatTester {
|
||||||
|
fn default() -> Self {
|
||||||
|
let temp_dir = create_sample_directory().expect("sample directory");
|
||||||
|
|
||||||
|
let root = env::current_exe()
|
||||||
|
.expect("tests executable")
|
||||||
|
.parent()
|
||||||
|
.expect("tests executable directory")
|
||||||
|
.parent()
|
||||||
|
.expect("bat executable directory")
|
||||||
|
.to_path_buf();
|
||||||
|
|
||||||
|
let exe_name = if cfg!(windows) { "bat.exe" } else { "bat" };
|
||||||
|
let exe = root.join(exe_name);
|
||||||
|
|
||||||
|
BatTester { temp_dir, exe }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn create_sample_directory() -> Result<TempDir, git2::Error> {
|
fn create_sample_directory() -> Result<TempDir, git2::Error> {
|
||||||
// Create temp directory and initialize repository
|
// Create temp directory and initialize repository
|
||||||
let temp_dir = TempDir::new("bat-tests").expect("Temp directory");
|
let temp_dir = TempDir::new("bat-tests").expect("Temp directory");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user