From 56522ebe1387721d10196e835346257e7494abad Mon Sep 17 00:00:00 2001 From: Georg Lukas Date: Thu, 19 Nov 2009 12:14:45 +0100 Subject: syntax highlighting for all formats supported by "highlight" The highlight tool can be given any of the supported file extensions as its -S parameter. This patch replaces the case-switch by extracting the extension from the supplied file name and passing it to highlight. However, this requires a shell supporting the ${var##pattern} syntax, like dash or bash. Unknown extensions cause a fall-back to plain text using the --force switch. Error messages are redirected to /dev/null. A special case maps Makefile and Makefile.* to the "mk" extension. The total overhead is reduced by calling "exec highlight". No forks are needed during script execution. Signed-off-by: Georg Lukas --- filters/syntax-highlighting.sh | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'filters') diff --git a/filters/syntax-highlighting.sh b/filters/syntax-highlighting.sh index 999ad0c..6b1c576 100755 --- a/filters/syntax-highlighting.sh +++ b/filters/syntax-highlighting.sh @@ -3,6 +3,10 @@ # tree-view by refering to this file with the source-filter or repo.source- # filter options in cgitrc. # +# This script requires a shell supporting the ${var##pattern} syntax. +# It is supported by at least dash and bash, however busybox environments +# might have to use an external call to sed instead. +# # Note: the highlight command (http://www.andre-simon.de/) uses css for syntax # highlighting, so you'll probably want something like the following included # in your css file (generated by highlight 2.4.8 and adapted for cgit): @@ -20,20 +24,11 @@ # table.blob .kwc { color:#000000; font-weight:bold; } # table.blob .kwd { color:#010181; } -case "$1" in - *.c) - highlight -f -I -X -S c - ;; - *.h) - highlight -f -I -X -S c - ;; - *.sh) - highlight -f -I -X -S sh - ;; - *.css) - highlight -f -I -X -S css - ;; - *) - highlight -f -I -X -S txt - ;; -esac +# store filename and extension in local vars +BASENAME="$1" +EXTENSION="${BASENAME##*.}" + +# map Makefile and Makefile.* to .mk +[ "${BASENAME%%.*}" == "Makefile" ] && EXTENSION=mk + +exec highlight --force -f -I -X -S $EXTENSION 2>/dev/null -- cgit 1.4.1 3&showmsg=1&follow=1'>console.sh (unfollow)
Commit message (Collapse)Author
2017-09-05Add watch.cJune McEnroe
2017-09-02Remove Scala highlightingJune McEnroe
2017-08-31Fix Linux console Tarmak 3June McEnroe
Wow oops.
2017-08-31Use Tarmak 3 on Linux consoleJune McEnroe
2017-08-25Install ddateJune McEnroe
2017-08-19Move nethack options to envJune McEnroe
2017-08-17Remove scala syntax fileJune McEnroe
2017-08-06Add wakeJune McEnroe
That payload can appear anywhere within an ethernet frame. Wake-on-LAN is funny.
2017-08-04Use $() in install.shJune McEnroe
Something gave me the impression that sh did not like this, but it's specified by POSIX.
2017-08-02Create Code Tarmak 3 layoutJune McEnroe
2017-07-31Add tupJune McEnroe
2017-07-31Use designated initializer for hnel tableJune McEnroe
I did not know this syntax worked!
2017-07-30Add juneJune McEnroe
2017-07-30Play nethack as ValkyrieJune McEnroe
2017-07-28Add toggle to hnelJune McEnroe
2017-07-28Install slJune McEnroe
2017-07-25Add up, supJune McEnroe
2017-07-24Autopickup ringsJune McEnroe
2017-07-24Name dogJune McEnroe
2017-07-23Add nethackrcJune McEnroe
2017-07-23Remove useless setuid in briJune McEnroe
Don't you think it would be better if the setuid bit only gave you permission to do it and didn't do it for you?
2017-07-23Clean up hnel a tiny bitJune McEnroe
2017-07-21Set window size in hnelJune McEnroe
2017-07-21Add hnelJune McEnroe
2017-07-19chmod 600 in dtchJune McEnroe