Files
lessfilter-pygmentize/.lessfilter
2021-02-11 11:27:58 -08:00

114 lines
6.8 KiB
Bash

#!/bin/bash
# uses Pygments v2.7.4 for syntax highlighting on applicable file types
for path in "$@"; do
# match by known filenames
filename=$(basename "$path")
case "$filename" in
.bash_aliases|.bash_environment|.bash_login|.bash_logout|\
.bash_profile|.cshdirs|.cshrc|.kshrc|.profile|.tcshrc|.zlogin|\
.zlogout|.zprofile|bash.bashrc|csh.cshrc|csh.login|csh.logout|\
ksh.kshrc|zlogin|zlogout|zprofile)
# shell lexer
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" -l sh "$path"
;;
.Renviron|.Rhistory|.Rprofile|.bashrc|.exrc|.gvimrc|.htaccess|.vimrc|\
.zshrc|BUCK|BUILD|BUILD.bazel|CMakeLists.txt|Dockerfile|GNUmakefile|\
Gemfile|Kconfig*|Makefile|Makefile.*|PKGBUILD|Pipfile|Pipfile.lock|\
Rakefile|SConscript|SConstruct|Singularity|WORKSPACE|apache.conf|\
apache2.conf|autodelegate|autohandler|bashrc|control|dhandler|exrc|\
external.in*|gvimrc|makefile|nginx.conf|pacman.conf|poetry.lock|\
sources.list|squid.conf|standard-modules.in|termcap|termcap.src|\
terminfo|terminfo.src|todo.txt|vimrc|xorg.conf|zshrc)
# filename recognized
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
;;
*)
ext=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
case "$ext" in
.6pl|.6pm|.ABAP|.ASM|.BAS|.C|.CBL|.COB|.CPP|.CPY|.F|.F03|.F90|\
.G|.H|.ICON|.PRG|.R|.Rd|.Rout|.S|.SAS|.VBS|.[1234567]|.abap|\
.abnf|.ada|.adb|.adl|.adlf|.adls|.adlx|.ado|.ads|.agda|.aheui|\
.ahk|.ahkl|.aj|.als|.apl|.applescript|.arexx|.arw|.as|.asax|\
.ascx|.ashx|.asm|.asmx|.aspx|.asy|.at|.au3|.aug|.aux|.awk|\
.axd|.b|.bare|.bas|.bash|.bat|.bb|.bbc|.bc|.befunge|.bf|.bib|\
.bmx|.bnf|.boa|.boo|.bpl|.bro|.bst|.bug|.bzl|.c|.c++|\
.c++-objdump|.c-objdump|.cadl|.camkes|.capnp|.cbl|.cc|.cdf|\
.cdl|.ceylon|.cf|.cfc|.cfg|.cfm|.cfml|.chai|.chpl|.ci|.cirru|\
.cl|.clay|.clj|.cljs|.cls|.cmake|.cmd|.cob|.coffee|.cp|.cpp|\
.cpp-objdump|.cps|.cpsa|.cpy|.cr|.crmsh|.croc|.cry|.cs|.csd|\
.csh|.css|.css.in|.cu|.cuh|.cw|.cxx|.cxx-objdump|.cyp|.cypher|\
.d|.d-objdump|.darcspatch|.dart|.dasm|.dasm16|.dcl|.decls|\
.def|.dg|.di|.diff|.dmesg|.do|.docker|.dot|.dpatch|.dpr|.dtd|\
.dts|.dtsi|.duby|.duel|.dyl|.dylan|.dylan-console|.e|.ebnf|\
.ebuild|.ec|.ecl|.eclass|.edp|.eex|.eg|.eh|.el|.elm|.eml|.eps|\
.erl|.erl-sh|.es|.escript|.evoque|.ex|.exec|.exheres-0|.exlib|\
.exs|.ezt|.f|.f03|.f90|.factor|.fan|.fancypack|.feature|\
.fhtml|.fish|.flo|.flx|.flxh|.fnl|.frag|.frt|.fs|.fsi|.fst|\
.fsti|.fun|.fy|.g|.gap|.gd|.gdc|.gemspec|.geo|.gi|.go|.golo|\
.gradle|.graph|.groovy|.gs|.gsp|.gst|.gsx|.gv|.h|.h++|.haml|\
.handlebars|.hbs|.hdp|.hh|.hlsl|.hlsli|.hpp|.hrl|.hs|.hsail|\
.htm|.html|.hx|.hxml|.hxsl|.hxx|.hy|.hyb|.i|.i6t|.i7x|.icl|\
.icn|.icon|.idc|.idl4|.idr|.ijs|.ik|.inc|.inf|.ini|.ino|\
.instances|.intr|.io|.ipf|.isa|.j|.jade|.jag|.java|.jbst|.jcl|\
.jl|.js|.js.in|.jsgf|.jsm|.json|.jsonld|.jsp|.juttle|.jy|.kal|\
.kid|.kif|.kk|.kki|.kmsg|.ksh|.kt|.kts|.lagda|.lasso|\
.lasso[89]|.lcry|.lean|.less|.lgt|.lhs|.lid|.lidr|.liquid|\
.lisp|.ll|.load|.logtalk|.ls|.lsl|.lsp|.lua|.m|.ma|.mac|.mak|\
.man|.mao|.maql|.markdown|.mask|.mc|.md|.mhtml|.mi|.mir|.mjs|\
.mk|.ml|.mli|.mll|.mly|.mm|.mo|.mod|.monkey|.moo|.moon|.mos|\
.mq4|.mq5|.mqh|.ms|.msc|.mt|.mu|.mxml|.myt|.n|.nb|.nbp|.nc|\
.ncl|.ng2|.ni|.nim|.nimrod|.nit|.nix|.nl|.nqp|.ns2|.nsh|.nsi|\
.objdump|.objdump-intel|.odin|.ooc|.opa|.orc|.p|.p6|.p6l|.p6m|\
.pan|.pas|.patch|.pc|.pcmk|.peg|.perl|.php|.php[345]|.phtml|\
.pig|.pike|.pl|.pl6|.plot|.plt|.pm|.pm6|.pmod|.po|.pony|.pot|\
.pov|.pp|.praat|.prg|.pro|.proc|.prolog|.promql|.properties|\
.proto|.ps|.ps1|.psc|.psi|.psl|.psm1|.ptls|.pug|.pwn|.pxd|\
.pxi|.py|.py2tb|.py3tb|.pypylog|.pytb|.pyw|.pyx|.qbs|.qml|\
.qvto|.r|.r3|.rake|.raku|.rakudoc|.rakumod|.rakutest|.rb|.rbw|\
.rbx|.re|.reb|.red|.reds|.reg|.rei|.rest|.rex|.rexx|.rhtml|\
.ride|.rkt|.rktd|.rktl|.rl|.rnc|.robot|.rpf|.rq|.rql|.rs|\
.rs.in|.rsl|.rss|.rst|.rts|.run|.rvt|.rx|.s|.sage|.sarl|.sas|\
.sass|.sbl|.sc|.scala|.scaml|.scd|.scdoc|.sce|.sci|.scm|.sco|\
.scss|.sgf|.sh|.sh-session|.shell-session|.shen|.shex|.sieve|\
.sig|.sil|.siv|.sl|.sla|.slim|.sls|.smali|.sml|.smv|.snobol|\
.sol|.sp|.sparql|.spec|.spt|.sql|.sqlite3-console|.ss|.ssp|\
.st|.stan|.sv|.svh|.swg|.swift|.t|.tac|.tap|.tasm|.tcl|.tcsh|\
.tea|.tex|.tf|.thrift|.thy|.tid|.tmpl|.tnt|.toc|.todotxt|\
.toml|.tpl|.treetop|.ts|.tst|.tsx|.tt|.ttl|.twig|.txt|\
.typoscript|.u|.u1|.u2|.udo|.usd|.usda|.v|.vala|.vapi|.vark|\
.vb|.vbs|.vcl|.vert|.vhd|.vhdl|.vim|.vm|.vpr|.wdiff|.webidl|\
.weechatlog|.whiley|.wlua|.wsdl|.wsf|.x|.x10|.xhtml|.xi|.xm|\
.xmi|.xml|.xpl|.xq|.xql|.xqm|.xquery|.xqy|.xsd|.xsl|.xslt|\
.xtend|.xtm|.xul.in|.yaml|.yang|.yml|.zeek|.zep|.zig|.zsh|\
Config.in*)
# extension recognized
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
;;
*)
# unrecognized filename/extension
# attempt to parse the lexer from the shebang if it exists
lexer=$(head -n 1 "$path" |grep "^#\!" |awk -F" " \
'match($1, /\/(\w*)$/, a) {if (a[1]!="env") {print a[1]} else {print $2}}')
case "$lexer" in
node|nodejs)
# workaround for lack of Node.js lexer alias
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l js "$path"
;;
"")
# fall-back to plain text
exit 1
;;
*)
# use lexer alias parsed from the shebang
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l "$lexer" "$path"
;;
esac
;;
esac
;;
esac
done
exit 0