1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-02-02 15:09:23 -05:00
elinks/doc/tools/keys2doc
pstumpf 5975184c90 Eliminate sed(1) GNUism
\| is an incompatible GNU extension to BREs.  This corrupts formatting of the elinkskeys(5) man page on any system where sed is not GNU sed (e.g. the BSDs).  Use ERE syntax instead.

(cherry picked from commit 42f24833506f25a7b903dfd2a15919620d43e49c)
2024-10-03 15:38:21 +02:00

136 lines
3.6 KiB
Bash
Executable File

#!/bin/sh
#
# Generate the keymap-actions.txt and keymap-defaults.txt for elinkskeys(5)
# manpage.
#
# Copyright (c) Jonas Fonseca <fonseca@diku.dk>, 2005-2006
#
KBDBIND=$1
CONFIGDIR=$(dirname "$KBDBIND")
OUTPUT=$2
test -d "$CONFIGDIR" || exit
print_title()
{
echo
echo "$1" | tr 'a-z' 'A-Z'
echo "$1" | sed 's/[^~]/~/g'
echo
}
print_keymap_actions()
{
keymap="$1"
print_title "$keymap ACTIONS"
echo 'ifdef::backend-xhtml11[]'
echo '`----------------------------------`----------------------------------------------------------------------------'
echo 'Action Description'
echo '----------------------------------------------------------------------------------------------------------------'
# open-link-in-new-tab-in-background
echo 'endif::backend-xhtml11[]'
grep ACTION_ "$CONFIGDIR/actions-$keymap.inc" \
| while read entry;
do
action=$(echo "$entry" | sed 's/ACTION_([^,]*, "\([^"]*\)".*/\1/')
caption=$(echo "$entry" | sed 's/.*N__("\(.*\)").*/\1/')
[ "$action" = "none" ] && continue
[ "$action" = " *scripting-function*" ] && continue
echo 'ifdef::backend-docbook[]'
echo "$action::"
echo " $caption."
echo
echo 'endif::backend-docbook[]'
echo 'ifdef::backend-xhtml11[]'
printf "%-34s %s\n" "$action" "$caption"
echo 'endif::backend-xhtml11[]'
done
echo 'ifdef::backend-xhtml11[]'
echo '---------------------------------------------------------------------------------------------------------------'
echo 'endif::backend-xhtml11[]'
}
print_keymap_defaults()
{
keymap="$1"
KEYMAP=$(echo $1 | tr '[a-z]' '[A-Z]')
print_title "$keymap KEYS"
echo 'ifdef::backend-xhtml11[]'
echo '`-----------`-------------------------------------------------------------------------------'
echo 'Key Description (Action)'
echo '--------------------------------------------------------------------------------------------'
# Ctrl-Insert
echo 'endif::backend-xhtml11[]'
grep ACT_$KEYMAP $KBDBIND | grep '^[[:space:]]{' | grep -v '{ "' \
| while read entry
do
entry=$(echo "$entry" | sed 's/.*{ { //')
key=$(echo "$entry" | sed -E "s/(KBD_[^,]*|'.*'),.*/\1/")
action=$(echo "$entry" | sed "s/.*,.*\(ACT_$KEYMAP\)_\([A-Z_]*\).*/\2/")
# If there are backslashed quotes, remove the backslashes.
# (This is not needed in print_keymap_actions because
# there the "read" command consumes the backslashes.)
action=$(grep " $action," "$CONFIGDIR/actions-$keymap.inc" \
| sed "s/.*\"\([^\"]*\)\".*N__(\"\(.*\)\").*/\2 ('\1')/;s/\\\\\"/\"/g")
q=
case "$key" in
KBD_*)
key=$(grep $key $KBDBIND \
| grep '^[[:space:]]{ "' \
| sed 's/.*"\([^"]*\)".*/\1/')
;;
"' '")
key="Space"
;;
*)
key=$(echo "$key" | sed "s/^'\(.*\)'$/\1/" \
| sed "s/'/{squote}/")
q='"'
;;
esac
case "$entry" in
*KBD_MOD_ALT*) modifier="Alt-" ;;
*KBD_MOD_CTRL*) modifier="Ctrl-" ;;
*KBD_MOD_SHIFT*) modifier="Shift-" ;;
*) modifier="" ;;
esac
echo 'ifdef::backend-docbook[]'
echo "'$modifier$q$key$q'::"
echo " $action"
echo
echo 'endif::backend-docbook[]'
echo 'ifdef::backend-xhtml11[]'
printf "%-11s %s\n" "$modifier$key" "$action"
echo 'endif::backend-xhtml11[]'
done
echo 'ifdef::backend-xhtml11[]'
echo '--------------------------------------------------------------------------------------------'
echo 'endif::backend-xhtml11[]'
}
print_keymap_doc=
case "$OUTPUT" in
*default*) print_keymap_doc="print_keymap_defaults" ;;
*action*) print_keymap_doc="print_keymap_actions" ;;
esac
$print_keymap_doc main
$print_keymap_doc edit
$print_keymap_doc menu