Files
libuev/.stuff/bin/MkIndex
T
2011-01-10 16:11:31 +01:00

46 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
Dir=.
[ $# -gt 0 ] && Dir=$1
cd $Dir
rm -f .glimpse_filenames .glimpse_filenames_index .glimpse_filetimes \
.glimpse_index .glimpse_messages .glimpse_partitions .glimpse_statistics
find . \
-name .svn -prune -o -name rootdisk -prune -o -name shadows -prune -o -name \*-pak -prune -o \
-name doxygen -prune -o -type f -print | cut -c3- \
| /bin/grep -v -E '^tags$|\.glimpse_|\.pdf$|\.o$|\.so$|\.so\.|\.a$|/mapfile$' \
| while read L ;do
read -n4 T < "$L"; [[ $T != ?ELF && $T != BZh* && $T != $'\x1f\x8b\x08'* ]] && echo "$L"
done \
| glimpseindex-tt -n -F -H $Dir | awk '!/^Indexing /'
echo -n "Creating tags ... "
ctags --recurse --exclude=.svn --exclude=rootdisk --exclude=\*-pak \
--sort=no --links=no --excmd=number -f - --extra=+fq --totals=yes \
| { X=$(mktemp); rm -f $X; ctags -f $X /dev/null; cat $X -; rm -f $X; } \
| gawk -F '\t' '
/^!_TAG_FILE_SORTED/ {sub(/[0-9]/, "2")}
{print}
$NF == "F" && $1 ~ /\.h$/ {
file = $2
#print "Searching " file " .." >"/dev/stderr"
lno = 0
while (getline l <file) {
lno++
if (l ~ /^MessageNodeType\(/) {
split(substr(l, 17), arg, ",")
tag = gensub(/^ */, "", 1, arg[1])
print tag "\t" file "\t" lno " \"\tt"
#tags=tags " " tag
extra++
}
}
}
$NF == "f" && $1 ~ /:/ && $2 ~ /\.lua$/ {
npath = split($1, pth, ":")
print pth[npath] "\t" $2 "\t" $3 "\tf"
}
END {print extra+0 " extra tags added" tags >"/dev/stderr"}
' > tags
LC_ALL=C sort --ignore-case -o tags tags
echo done