From eed6b95a5c5fdd15a6fa12d3d44f4b1cabe83faf Mon Sep 17 00:00:00 2001 From: Sebastian Gniazdowski Date: Sun, 25 Sep 2016 12:05:51 +0200 Subject: [PATCH] main-highlighter can be run as command, with profiling equipped --- highlighters/main/mh-parse.zsh | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 highlighters/main/mh-parse.zsh diff --git a/highlighters/main/mh-parse.zsh b/highlighters/main/mh-parse.zsh new file mode 100755 index 0000000..1d42424 --- /dev/null +++ b/highlighters/main/mh-parse.zsh @@ -0,0 +1,62 @@ +#!/bin/sh + +# +# This file runs main highlighter on a specified file +# i.e. parses the file with the highlighter. Outputs +# running time (stderr) and resulting region_highlight +# (stdout). +# + +# Strive for -f +# .. occuring problems (no q flag), but at least try to quote $0 and $@ +[[ -z "$ZSH_VERSION" ]] && exec /usr/bin/env zsh -f -c "source \"$0\" \"$1\" \"$2\" \"$3\"" + +ZERO="${(%):-%N}" +ZERO_RESOLVED="${ZERO:A:h}" + +# +# Load Z-SY-H +# + +if [[ -e "${ZERO_RESOLVED}/main-highlighter.zsh" ]]; then + source "${ZERO_RESOLVED}/../../zsh-syntax-highlighting.zsh" +elif [[ -e "${0:A:h}/main-highlighter.zsh" ]]; then + source "${0:A:h}/../../zsh-syntax-highlighting.zsh" +elif [[ -e "../../main-highlighter.zsh" ]]; then + source "../../zsh-syntax-highlighting.zsh" +else + print "Could not find zsh-syntax-highlighting.zsh, aborting" + exit 1 +fi + +# +# Call _zsh_highlight_highlighter_main_paint +# + +if [[ -r "$1" ]]; then + # Load from given file + PREBUFFER="" + BUFFER="$(<$1)" + + typeset -F SECONDS + SECONDS=0 + + _zsh_highlight_highlighter_main_paint + + print -u2 "Main highlighter's running time: $SECONDS" + + # This output can be diffed to detect changes in operation + print -rl -- "${region_highlight[@]}" +else + if [[ -z "$1" ]]; then + print -u2 "Usage: ./mh-parse.zsh {to-parse file}" + exit 1 + else + print -u2 "Unreadable to-parse file \`$1', aborting" + exit 2 + fi +fi + +exit 0 + +# vim:ft=zsh