colorize: add ability to colorize multiple files into less (#7662)
cless is an alias for a colorized less wrappper: colorize_via_pygmentize_less. Note that cless opens many files as independent files, navigatable with `:n` and `:p`.
This commit is contained in:
parent
9b2410fbcf
commit
ebd13b60c1
2 changed files with 35 additions and 3 deletions
|
|
@ -1,5 +1,6 @@
|
|||
# easier alias to use the plugin
|
||||
alias ccat='colorize_via_pygmentize'
|
||||
alias cless='colorize_via_pygmentize_less'
|
||||
|
||||
colorize_via_pygmentize() {
|
||||
if ! (( $+commands[pygmentize] )); then
|
||||
|
|
@ -16,7 +17,7 @@ colorize_via_pygmentize() {
|
|||
# guess lexer from file extension, or
|
||||
# guess it from file contents if unsuccessful
|
||||
local FNAME lexer
|
||||
for FNAME in $@
|
||||
for FNAME in "$@"
|
||||
do
|
||||
lexer=$(pygmentize -N "$FNAME")
|
||||
if [[ $lexer != text ]]; then
|
||||
|
|
@ -26,3 +27,23 @@ colorize_via_pygmentize() {
|
|||
fi
|
||||
done
|
||||
}
|
||||
|
||||
colorize_via_pygmentize_less() (
|
||||
# this function is a subshell so tmp_files can be shared to cleanup function
|
||||
declare -a tmp_files
|
||||
|
||||
cleanup () {
|
||||
[[ ${#tmp_files} -gt 0 ]] && rm -f "${tmp_files[@]}"
|
||||
exit
|
||||
}
|
||||
trap 'cleanup' EXIT HUP TERM INT
|
||||
|
||||
while (( $# != 0 )); do #TODO: filter out less opts
|
||||
tmp_file="$(mktemp --tmpdir "tmp.colorize.XXXX.$(sed 's/\//./g' <<< "$1")")"
|
||||
tmp_files+=("$tmp_file")
|
||||
colorize_via_pygmentize "$1" > "$tmp_file"
|
||||
shift 1
|
||||
done
|
||||
|
||||
less -f "${tmp_files[@]}"
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue