mirror of
https://github.com/eth-p/bat-extras.git
synced 2025-03-04 16:31:17 +01:00
Merge branch 'eth-p:master' into patch-1
This commit is contained in:
commit
73506988bc
@ -67,7 +67,7 @@ runs:
|
|||||||
uses: dsaltares/fetch-gh-release-asset@master
|
uses: dsaltares/fetch-gh-release-asset@master
|
||||||
if: ${{ env.ACT || inputs.test == 'true' }}
|
if: ${{ env.ACT || inputs.test == 'true' }}
|
||||||
with:
|
with:
|
||||||
file: "ripgrep_[0-9\\.]+_amd64.deb"
|
file: "ripgrep_[0-9\\.-]+_amd64.deb"
|
||||||
repo: "BurntSushi/ripgrep"
|
repo: "BurntSushi/ripgrep"
|
||||||
# version: "${{ inputs.version_ripgrep || "latest" }}"
|
# version: "${{ inputs.version_ripgrep || "latest" }}"
|
||||||
regex: true
|
regex: true
|
||||||
|
14
README.md
14
README.md
@ -53,11 +53,21 @@ All of the `bat-extras` scripts can be installed with `brew install bat-extras`.
|
|||||||
If you would prefer to only install the specific scripts you need, you can use the `eth-p/software` tap to install individual scripts: `brew install eth-p/software/bat-extras-[SCRIPT]`
|
If you would prefer to only install the specific scripts you need, you can use the `eth-p/software` tap to install individual scripts: `brew install eth-p/software/bat-extras-[SCRIPT]`
|
||||||
|
|
||||||
|
|
||||||
|
### MacPorts
|
||||||
|
|
||||||
|
The `bat-extras` scripts can also be installed via [MacPorts](https://www.macports.org) on macOS:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo port install bat-extras
|
||||||
|
```
|
||||||
|
|
||||||
|
Port info [here](https://ports.macports.org/port/bat-extras/).
|
||||||
|
|
||||||
### Pacman
|
### Pacman
|
||||||
|
|
||||||
`bat-extras` is [officially available](https://archlinux.org/packages/community/any/bat-extras/) on the Arch community repository!
|
`bat-extras` is [officially available](https://archlinux.org/packages/extra/any/bat-extras/) on the Arch extra repository!
|
||||||
|
|
||||||
If you have the community repository enabled, you can install `bat-extras` by running:
|
If you have the extra repository enabled, you can install `bat-extras` by running:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -S bat-extras
|
pacman -S bat-extras
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# bat-extras | Copyright (C) 2020 eth-p and contributors | MIT License
|
# bat-extras | Copyright (C) 2020-2024 eth-p and contributors | MIT License
|
||||||
#
|
#
|
||||||
# Repository: https://github.com/eth-p/bat-extras
|
# Repository: https://github.com/eth-p/bat-extras
|
||||||
# Issues: https://github.com/eth-p/bat-extras/issues
|
# Issues: https://github.com/eth-p/bat-extras/issues
|
||||||
|
@ -31,7 +31,8 @@ Search through files or directories looking for matching regular expressions (or
|
|||||||
| | `--paging=["never"/"always"]`| Enable/disable paging. |
|
| | `--paging=["never"/"always"]`| Enable/disable paging. |
|
||||||
| | `--pager=[PAGER]` | Specify the pager to use. |
|
| | `--pager=[PAGER]` | Specify the pager to use. |
|
||||||
| | `--terminal-width=[COLS]` | Generate output for the specified terminal width. |
|
| | `--terminal-width=[COLS]` | Generate output for the specified terminal width. |
|
||||||
| | `--no-separator` | Disable printing separator between files |
|
| | `--no-separator` | Disable printing separator between files. |
|
||||||
|
| | `--rga` | Use `ripgrep-all` instead of `ripgrep`. |
|
||||||
|
|
||||||
The following options are passed directly to ripgrep, and are not handled by this script.
|
The following options are passed directly to ripgrep, and are not handled by this script.
|
||||||
|
|
||||||
|
@ -11,7 +11,19 @@ If you have `fzf` installed, you can even use `batman` to search through manual
|
|||||||
|
|
||||||
batman [SECTION] [ENTRY]
|
batman [SECTION] [ENTRY]
|
||||||
|
|
||||||
|
### As a Replacement for Man
|
||||||
|
|
||||||
|
With bash:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
eval "$(batman --export-env)"
|
||||||
|
```
|
||||||
|
|
||||||
|
With fish:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
batman --export-env | source
|
||||||
|
```
|
||||||
|
|
||||||
## Environment
|
## Environment
|
||||||
|
|
||||||
|
@ -21,22 +21,23 @@ See `man bat` for more information.
|
|||||||
|
|
||||||
## Languages
|
## Languages
|
||||||
|
|
||||||
| Language | Formatter |
|
| Language | Formatter |
|
||||||
| -------------------- | ----------------------------------------------------------- |
|
| -------------------- | --------------------------------------------------------------- |
|
||||||
| JavaScript (JS, JSX) | [prettier](https://prettier.io/) |
|
| JavaScript (JS, JSX) | [prettier](https://prettier.io/) |
|
||||||
| TypeScript (TS, TSX) | [prettier](https://prettier.io/) |
|
| TypeScript (TS, TSX) | [prettier](https://prettier.io/) |
|
||||||
| CSS, SCSS, SASS | [prettier](https://prettier.io/) |
|
| CSS, SCSS, SASS | [prettier](https://prettier.io/) |
|
||||||
| Markdown | [prettier](https://prettier.io/) |
|
| Markdown | [prettier](https://prettier.io/) |
|
||||||
| JSON | [prettier](https://prettier.io/) |
|
| JSON | [prettier](https://prettier.io/) |
|
||||||
| YAML | [prettier](https://prettier.io/) |
|
| YAML | [prettier](https://prettier.io/) |
|
||||||
| HTML | [prettier](https://prettier.io/) |
|
| HTML | [prettier](https://prettier.io/) |
|
||||||
| SVG | [prettier](https://prettier.io/) |
|
| SVG | [prettier](https://prettier.io/) |
|
||||||
| Rust | [rustfmt](https://github.com/rust-lang/rustfmt) |
|
| Rust | [rustfmt](https://github.com/rust-lang/rustfmt) |
|
||||||
| Bash | [shfmt](https://github.com/mvdan/sh) |
|
| Bash | [shfmt](https://github.com/mvdan/sh) |
|
||||||
| C | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
| C | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||||
| C++ | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
| C++ | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||||
| Objective-C | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
| Objective-C | [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||||
| Python | [black](https://black.readthedocs.io/) |
|
| Python | [black](https://black.readthedocs.io/) |
|
||||||
|
| Elixir | [mix format](https://hexdocs.pm/mix/main/Mix.Tasks.Format.html) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,7 +97,10 @@ Options:
|
|||||||
Generate output for the specified terminal width.
|
Generate output for the specified terminal width.
|
||||||
|
|
||||||
--no-separator:
|
--no-separator:
|
||||||
Disable printing separator between files
|
Disable printing separator between files.
|
||||||
|
|
||||||
|
--rga:
|
||||||
|
Use ripgrep-all instead of ripgrep.
|
||||||
|
|
||||||
Options passed directly to ripgrep:
|
Options passed directly to ripgrep:
|
||||||
-F, --fixed-strings
|
-F, --fixed-strings
|
||||||
@ -141,6 +144,7 @@ EOF
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Options:
|
# Options:
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
RIPGREP="$EXECUTABLE_RIPGREP"
|
||||||
RG_ARGS=()
|
RG_ARGS=()
|
||||||
BAT_ARGS=()
|
BAT_ARGS=()
|
||||||
PATTERN=""
|
PATTERN=""
|
||||||
@ -252,6 +256,14 @@ while shiftopt; do
|
|||||||
-p | --search-pattern) OPT_SEARCH_PATTERN=true ;;
|
-p | --search-pattern) OPT_SEARCH_PATTERN=true ;;
|
||||||
--no-search-pattern) OPT_SEARCH_PATTERN=false ;;
|
--no-search-pattern) OPT_SEARCH_PATTERN=false ;;
|
||||||
--no-separator) OPT_NO_SEPARATOR=true ;;
|
--no-separator) OPT_NO_SEPARATOR=true ;;
|
||||||
|
--rga) {
|
||||||
|
if ! rga --version | grep 'ripgrep-all' &>/dev/null; then
|
||||||
|
printc "%{RED}%s: option '--rga' requires ripgrep-all to be installed%{CLEAR}\n" "$PROGRAM" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RIPGREP='rga'
|
||||||
|
};;
|
||||||
|
|
||||||
# Option forwarding
|
# Option forwarding
|
||||||
--rg:*) {
|
--rg:*) {
|
||||||
@ -377,10 +389,10 @@ main() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "$READ_FROM_STDIN"; then
|
if "$READ_FROM_STDIN"; then
|
||||||
"$EXECUTABLE_RIPGREP" "${COMMON_RG_ARGS[@]}" <<< "$STDIN_DATA"
|
"$RIPGREP" "${COMMON_RG_ARGS[@]}" <<< "$STDIN_DATA"
|
||||||
return $?
|
return $?
|
||||||
else
|
else
|
||||||
"$EXECUTABLE_RIPGREP" "${COMMON_RG_ARGS[@]}"
|
"$RIPGREP" "${COMMON_RG_ARGS[@]}"
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
SELF_NC="${BASH_SOURCE:-$0}"
|
SELF_NC="${BASH_SOURCE:-$0}"
|
||||||
SELF="$(cd "$(dirname "${SELF_NC}")" && cd "$(dirname "$(readlink "${SELF_NC}" || echo ".")")" && pwd)/$(basename "$(readlink "${SELF_NC}" || echo "${SELF_NC}")")"
|
SELF="$(cd "$(dirname "${SELF_NC}")" && cd "$(dirname "$(readlink "${SELF_NC}" || echo ".")")" && pwd)/$(basename "$(readlink "${SELF_NC}" || echo "${SELF_NC}")")"
|
||||||
LIB="$(cd "$(dirname "${SELF_NC}")" && cd "$(dirname "$(readlink "${SELF_NC}" || echo ".")")/../lib" && pwd)"
|
LIB="$(cd "$(dirname "${SELF_NC}")" && cd "$(dirname "$(readlink "${SELF_NC}" || echo ".")")/../lib" && pwd)"
|
||||||
if [[ -n "${MANPAGER}" ]]; then BAT_PAGER="$MANPAGER"; fi
|
|
||||||
source "${LIB}/constants.sh"
|
source "${LIB}/constants.sh"
|
||||||
source "${LIB}/pager.sh"
|
source "${LIB}/pager.sh"
|
||||||
source "${LIB}/print.sh"
|
source "${LIB}/print.sh"
|
||||||
@ -23,10 +22,12 @@ hook_version
|
|||||||
FORWARDED_ARGS=()
|
FORWARDED_ARGS=()
|
||||||
MAN_ARGS=()
|
MAN_ARGS=()
|
||||||
BAT_ARGS=()
|
BAT_ARGS=()
|
||||||
|
OPT_EXPORT_ENV=false
|
||||||
|
|
||||||
SHIFTOPT_SHORT_OPTIONS="SPLIT"
|
SHIFTOPT_SHORT_OPTIONS="SPLIT"
|
||||||
while shiftopt; do
|
while shiftopt; do
|
||||||
case "$OPT" in
|
case "$OPT" in
|
||||||
|
--export-env) OPT_EXPORT_ENV=true ;;
|
||||||
--paging|--pager) shiftval; FORWARDED_ARGS+=("${OPT}=${OPT_VAL}");
|
--paging|--pager) shiftval; FORWARDED_ARGS+=("${OPT}=${OPT_VAL}");
|
||||||
BAT_ARGS+=("${OPT}=${OPT_VAL}") ;;
|
BAT_ARGS+=("${OPT}=${OPT_VAL}") ;;
|
||||||
*) MAN_ARGS+=("$OPT") ;;
|
*) MAN_ARGS+=("$OPT") ;;
|
||||||
@ -48,7 +49,8 @@ fi
|
|||||||
|
|
||||||
if [[ "${BATMAN_IS_BEING_MANPAGER:-}" = "yes" ]]; then
|
if [[ "${BATMAN_IS_BEING_MANPAGER:-}" = "yes" ]]; then
|
||||||
print_manpage() {
|
print_manpage() {
|
||||||
col -bx | "$EXECUTABLE_BAT" --language=man "${BAT_ARGS[@]}"
|
sed -e 's/\x1B\[[0-9;]*m//g; s/.\x08//g' \
|
||||||
|
| "$EXECUTABLE_BAT" --language=man "${BAT_ARGS[@]}"
|
||||||
exit $?
|
exit $?
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,9 +66,18 @@ if [[ "${BATMAN_IS_BEING_MANPAGER:-}" = "yes" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
if [[ -n "${MANPAGER}" ]]; then BAT_PAGER="$MANPAGER"; fi
|
||||||
export MANPAGER="env BATMAN_IS_BEING_MANPAGER=yes bash $(printf "%q " "$SELF" "${FORWARDED_ARGS[@]}")"
|
export MANPAGER="env BATMAN_IS_BEING_MANPAGER=yes bash $(printf "%q " "$SELF" "${FORWARDED_ARGS[@]}")"
|
||||||
export MANROFFOPT='-c'
|
export MANROFFOPT='-c'
|
||||||
|
|
||||||
|
# If `--export-env`, print exports to use batman as the manpager directly.
|
||||||
|
if "$OPT_EXPORT_ENV"; then
|
||||||
|
printf "export %s=%q\n" \
|
||||||
|
"MANPAGER" "$MANPAGER" \
|
||||||
|
"MANROFFOPT" "$MANROFFOPT"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# If no argument is provided and fzf is installed, use fzf to search for man pages.
|
# If no argument is provided and fzf is installed, use fzf to search for man pages.
|
||||||
if [[ "${#MAN_ARGS[@]}" -eq 0 ]] && [[ -z "$BATMAN_LEVEL" ]] && command -v "$EXECUTABLE_FZF" &>/dev/null; then
|
if [[ "${#MAN_ARGS[@]}" -eq 0 ]] && [[ -z "$BATMAN_LEVEL" ]] && command -v "$EXECUTABLE_FZF" &>/dev/null; then
|
||||||
export BATMAN_LEVEL=1
|
export BATMAN_LEVEL=1
|
||||||
|
@ -14,6 +14,7 @@ source "${LIB}/str.sh"
|
|||||||
source "${LIB}/print.sh"
|
source "${LIB}/print.sh"
|
||||||
source "${LIB}/version.sh"
|
source "${LIB}/version.sh"
|
||||||
source "${LIB}/check.sh"
|
source "${LIB}/check.sh"
|
||||||
|
source "${LIB}/term.sh"
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Init:
|
# Init:
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@ -22,7 +23,10 @@ hook_version
|
|||||||
# Formatters:
|
# Formatters:
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
FORMATTERS=("prettier" "rustfmt" "shfmt" "clangformat" "black")
|
FORMATTERS=(
|
||||||
|
"prettier" "rustfmt" "shfmt" "clangformat"
|
||||||
|
"black" "mix_format" "column"
|
||||||
|
)
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
@ -118,6 +122,55 @@ formatter_black_process() {
|
|||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
|
formatter_mix_format_supports() {
|
||||||
|
case "$1" in
|
||||||
|
.ex | \
|
||||||
|
.exs | \
|
||||||
|
.eex | \
|
||||||
|
.heex)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
formatter_mix_format_process() {
|
||||||
|
mix format
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
|
formatter_column_supports() {
|
||||||
|
case "$1" in
|
||||||
|
.tsv)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
formatter_column_process() {
|
||||||
|
local needs_newline=true
|
||||||
|
local args=(
|
||||||
|
-t
|
||||||
|
-s $'\t'
|
||||||
|
-c "$TERMINAL_WIDTH"
|
||||||
|
)
|
||||||
|
|
||||||
|
if column --help &>/dev/null; then
|
||||||
|
# GNU `column`
|
||||||
|
args+=(--keep-empty-lines)
|
||||||
|
needs_newline=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ { "$needs_newline" && sed 's/$/\n/'; } || cat; } | column "${args[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Functions:
|
# Functions:
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@ -145,6 +198,9 @@ map_language_to_extension() {
|
|||||||
rust | rs) ext=".rs" ;;
|
rust | rs) ext=".rs" ;;
|
||||||
graphql | gql) ext=".graphql" ;;
|
graphql | gql) ext=".graphql" ;;
|
||||||
python | py) ext=".py" ;;
|
python | py) ext=".py" ;;
|
||||||
|
elixir | ex) ext=".ex" ;;
|
||||||
|
exs) ext=".exs" ;;
|
||||||
|
tsv) ext=".tsv" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "$ext"
|
echo "$ext"
|
||||||
@ -272,6 +328,8 @@ OPT_LANGUAGE=
|
|||||||
FILES=()
|
FILES=()
|
||||||
DEBUG_PRINT_FORMATTER=false
|
DEBUG_PRINT_FORMATTER=false
|
||||||
|
|
||||||
|
TERMINAL_WIDTH="$(term_width)"
|
||||||
|
|
||||||
# Parse arguments.
|
# Parse arguments.
|
||||||
while shiftopt; do
|
while shiftopt; do
|
||||||
case "$OPT" in
|
case "$OPT" in
|
||||||
|
@ -63,7 +63,10 @@ Options:
|
|||||||
Generate output for the specified terminal width.
|
Generate output for the specified terminal width.
|
||||||
|
|
||||||
--no-separator:
|
--no-separator:
|
||||||
Disable printing separator between files
|
Disable printing separator between files.
|
||||||
|
|
||||||
|
--rga:
|
||||||
|
Use ripgrep-all instead of ripgrep.
|
||||||
|
|
||||||
Options passed directly to ripgrep:
|
Options passed directly to ripgrep:
|
||||||
-F, --fixed-strings
|
-F, --fixed-strings
|
||||||
|
@ -1 +1 @@
|
|||||||
2023.09.19
|
2024.07.10
|
||||||
|
Loading…
Reference in New Issue
Block a user