Merge branch 'eth-p:master' into patch-1

This commit is contained in:
Seas0 2024-07-31 14:20:53 +08:00 committed by GitHub
commit 73506988bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 137 additions and 29 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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) |

View File

@ -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
} }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
2023.09.19 2024.07.10