diff options
author | Georg Brandl <georg@python.org> | 2013-01-09 16:43:14 +0100 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2013-01-09 16:43:14 +0100 |
commit | 86cd4a7422091db8aa4d0ae7fe209c5e5f28c9b1 (patch) | |
tree | 74824dbe846068e90a1b1390e8b56999a01c9bb5 | |
parent | 4094d7e06b7053debf15a97d727cbeafb6316f21 (diff) | |
download | pygments-86cd4a7422091db8aa4d0ae7fe209c5e5f28c9b1.tar.gz |
Closes #802: add "autopygmentize" as a possible .lessfilter
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | external/autopygmentize | 68 |
2 files changed, 70 insertions, 0 deletions
@@ -72,6 +72,8 @@ Version 1.6 - Add a Java quickstart document (PR#146) +- Add a "external/autopygmentize" file that can be used as .lessfilter (#802) + Version 1.5 ----------- diff --git a/external/autopygmentize b/external/autopygmentize new file mode 100644 index 00000000..ad9faaeb --- /dev/null +++ b/external/autopygmentize @@ -0,0 +1,68 @@ +#!/bin/sh +# Best effort auto-pygmentization with transparent decompression +# (c) Reuben Thomas 2012 +# This program is in the public domain. + +# Strategy: first see if pygmentize can find a lexer; if not, ask file; if that finds nothing, fail +# Set the environment variable PYGMENTIZE_OPTS to configure pygments. + +# This program can be used as a .lessfilter for the less pager to auto-color less's output + +if [ `pygmentize -N $1` != "text" ]; then + pygmentize $PYGMENTIZE_OPTS "$1" + exit 0 +fi + +file_common_opts="--brief --dereference --uncompress" + +unset lexer +case `file --mime-type $file_common_opts "$1"` in + application/xml|image/svg+xml) lexer=xml;; + text/html) lexer=html;; + text/troff) lexer=nroff;; + text/x-asm) lexer=nasm;; + text/x-awk) lexer=awk;; + text/x-c) lexer=c;; + text/x-c++) lexer=cpp;; + text/x-diff) lexer=diff;; + text/x-fortran) lexer=fortran;; + text/x-gawk) lexer=gawk;; + text/x-java) lexer=java;; + text/x-lisp) lexer=common-lisp;; + text/x-lua) lexer=lua;; + text/x-makefile) lexer=make;; + text/x-msdos-batch) lexer=bat;; + text/x-nawk) lexer=nawk;; + text/x-pascal) lexer=pascal;; + text/x-perl) lexer=perl;; + text/x-php) lexer=php;; + text/x-po) lexer=po;; + text/x-python) lexer=python;; + text/x-ruby) lexer=ruby;; + text/x-shellscript) lexer=sh;; + text/x-tcl) lexer=tcl;; + text/x-tex|text/x-texinfo) lexer=latex;; # FIXME: texinfo really needs its own lexer + + # Types that file outputs which pygmentize didn't support as of file 5.11, pygments 1.5 + # text/calendar + # text/PGP + # text/rtf + # text/texmacs + # text/x-bcpl + # text/x-info + # text/x-m4 + # text/x-vcard + # text/x-xmcd +esac + +encoding=`file --mime-encoding $file_common_opts "$1"` + +if [ -n "$lexer" ]; then + # FIXME: Specify input encoding rather than output encoding https://bitbucket.org/birkenfeld/pygments-main/issue/800 + # FIXME: Encoding argument ignored on stdin https://bitbucket.org/birkenfeld/pygments-main/issue/799 + #zcat "$1" | pygmentize -O encoding=$encoding,outencoding=UTF-8 $PYGMENTIZE_OPTS -l $lexer + pygmentize -O encoding=$encoding,outencoding=UTF-8 $PYGMENTIZE_OPTS -l $lexer $1 + exit 0 +fi + +exit 1 |