summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamed Abdelnour <mohamed.k.abdelnour@gmail.com>2021-05-14 23:02:23 +0200
committerMohamed Abdelnour <mohamed.k.abdelnour@gmail.com>2021-05-14 23:02:23 +0200
commit8b787b4f704a2f9862958a1b02695d980a1a9e66 (patch)
treedeba328cc99cfa716c6b721e4823feacc42c7f09
parentef5154d5b34d3f2853e03da2ee55d90af35b4b65 (diff)
Add dash test file
-rw-r--r--tests/syntax-tests/highlighted/dash/shfm425
-rw-r--r--tests/syntax-tests/source/dash/LICENSE.md23
-rw-r--r--tests/syntax-tests/source/dash/shfm425
3 files changed, 873 insertions, 0 deletions
diff --git a/tests/syntax-tests/highlighted/dash/shfm b/tests/syntax-tests/highlighted/dash/shfm
new file mode 100644
index 00000000..3d382fbb
--- /dev/null
+++ b/tests/syntax-tests/highlighted/dash/shfm
@@ -0,0 +1,425 @@
+#!/usr/bin/env dash
+
+esc() {
+ case $1 in
+ # vt100 (IL is vt102) (DECTCEM is vt520)
+ CUD) printf '%s[%sB' "$esc_c" "$2" ;; # cursor down
+ CUP) printf '%s[%s;%sH' "$esc_c" "$2" "$3" ;; # cursor home
+ CUU) printf '%s[%sA' "$esc_c" "$2" ;; # cursor up
+ DECAWM) printf '%s[?7%s' "$esc_c" "$2" ;; # line wrap
+ DECRC) printf '%s8' "$esc_c" ;; # cursor restore
+ DECSC) printf '%s7' "$esc_c" ;; # cursor save
+ DECSTBM) printf '%s[%s;%sr' "$esc_c" "$2" "$3" ;; # scroll region
+ DECTCEM) printf '%s[?25%s' "$esc_c" "$2" ;; # cursor visible
+ ED[0-2]) printf '%s[%sJ' "$esc_c" "${1#ED}" ;; # clear screen
+ EL[0-2]) printf '%s[%sK' "$esc_c" "${1#EL}" ;; # clear line
+ IL) printf '%s[%sL' "$esc_c" "$2" ;; # insert line
+ SGR) printf '%s[%s;%sm' "$esc_c" "$2" "$3" ;; # colors
+
+ # xterm (since 1988, supported widely)
+ screen_alt) printf '%s[?1049%s' "$esc_c" "$2" ;; # alternate buffer
+ esac
+}
+
+term_setup() {
+ stty=$(stty -g)
+ stty -icanon -echo
+ esc screen_alt h
+ esc DECAWM l
+ esc DECTCEM l
+ esc ED2
+ esc DECSTBM 1 "$((LINES - 2))"
+}
+
+term_reset() {
+ esc DECAWM h >&2
+ esc DECTCEM h >&2
+ esc ED2 >&2
+ esc DECSTBM >&2
+ esc screen_alt l >&2
+ stty "$stty"
+
+ # needed for cd-on-exit
+ printf '%s\n' "$PWD" >&1
+}
+
+term_resize() {
+ # false-positive, behavior intentional, globbing is disabled.
+ # shellcheck disable=2046
+ {
+ set -f
+ set +f -- $(stty size)
+ }
+
+ LINES=$1 COLUMNS=$2
+
+ # space for status_line
+ bottom=$((LINES - 2))
+}
+
+term_scroll_down() {
+ case $((y - $#)) in
+ [0-9]*) return
+ esac
+
+ y=$((y + 1))
+ y2=$((y2 + 1 < bottom ? y2 + 1 : bottom))
+
+ line_print "$((y - 1))" "$@"
+ printf '\n'
+ line_print "$y" "$@"
+ status_line "$#"
+}
+
+term_scroll_up() {
+ case $y in
+ -*|0|1) return
+ esac
+
+ y=$((y - 1))
+
+ line_print "$((y + 1))" "$@"
+
+ case $y2 in
+ 1) esc IL ;;
+ *) esc CUU; y2=$((y2 > 1 ? y2 - 1 : 1))
+ esac
+
+ line_print "$y" "$@"
+ status_line "$#"
+}
+
+cmd_run() {
+ stty "$stty"
+ esc DECTCEM h
+ esc DECSTBM
+ esc ED2
+ "$@" ||:
+ esc DECSTBM 1 "$((LINES - 2))"
+ esc DECTCEM l
+ stty -icanon -echo
+ hist=2
+}
+
+file_escape() {
+ tmp=$1 safe=
+
+ # loop over string char by char
+ while c=${tmp%"${tmp#?}"}; do
+ case $c in
+ '') return ;;
+ [[:cntrl:]]) safe=$safe\? ;;
+ *) safe=$safe$c ;;
+ esac
+
+ tmp=${tmp#?}
+ done
+}
+
+hist_search() {
+ hist=0 j=1
+
+ for file do
+ case ${PWD%%/}/$file in
+ "$old_pwd") y=$j y2=$((j > bottom ? mid : j)) cur=$file
+ esac
+
+ j=$((j + 1))
+ done
+}
+
+list_print() {
+ esc ED2
+ esc CUP
+
+ i=1
+ end=$((bottom + 1))
+ mid=$((bottom / 4 < 5 ? 1 : bottom / 4))
+
+ case $# in
+ 1) [ -e "$1" ] || set -- empty
+ esac
+
+ case $hist in
+ 2) # redraw after cmd run
+ shift "$((y > y2 ? y - y2 : 0))"
+ ;;
+
+ 1) # redraw after go-to-parent
+ hist_search "$@"
+ shift "$((y >= bottom ? y - mid : 0))"
+ ;;
+
+ *) # everything else
+ shift "$((y >= bottom ? y - bottom : 0))"
+ ;;
+ esac
+
+ for file do
+ case $i in
+ "$y2") esc SGR 0 7
+ esac
+
+ case $((i - end)) in
+ -*)
+ line_format "$file"
+ esc CUD
+ ;;
+ esac
+
+ i=$((i + 1))
+ done
+
+ esc CUP "$((y > y2 ? y2 : y))"
+}
+
+redraw() {
+ list_print "$@"
+ status_line "$#"
+}
+
+status_line() {
+ esc DECSC
+ esc CUP "$LINES"
+
+ case $USER in
+ root) esc SGR 31 7 ;;
+ *) esc SGR 34 7 ;;
+ esac
+
+ printf '%*s\r%s ' "$COLUMNS" "" "($y/$1)"
+
+ case $ltype in
+ '') printf %s "$PWD" ;;
+ *) printf %s "$ltype"
+ esac
+
+ esc SGR 0 0
+ esc DECRC
+}
+
+prompt() {
+ esc DECSC
+ esc CUP "$LINES"
+ printf %s "$1"
+ esc DECTCEM h
+ esc EL0
+
+ case $2 in
+ r)
+ stty icanon echo
+ read -r ans ||:
+ stty -icanon -echo
+ ;;
+ esac
+
+ esc DECRC
+ esc DECTCEM l
+ status_line "($y/$#) $PWD"
+}
+
+line_print() {
+ offset=$1
+
+ case $offset in
+ "$y") esc SGR 0 7
+ esac
+
+ shift "$offset"
+
+ case $offset in
+ "$y") cur=$1
+ esac
+
+ line_format "$1"
+}
+
+line_format() {
+ file_escape "$1"
+ [ -d "$1" ] && esc SGR 1 31
+ printf %s "$safe"
+ [ -d "$1" ] && printf /
+ esc SGR 0 0
+ esc EL0
+ printf '\r'
+}
+
+main() {
+ set -e
+
+ case $1 in
+ -h|--help)
+ printf [