aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/tools/make_ctags41
1 files changed, 31 insertions, 10 deletions
diff --git a/src/tools/make_ctags b/src/tools/make_ctags
index 4fc01f543d0..37ac134aa3d 100755
--- a/src/tools/make_ctags
+++ b/src/tools/make_ctags
@@ -5,20 +5,41 @@
trap "rm -f /tmp/$$" 0 1 2 3 15
rm -f ./tags
-cv=`ctags --version 2>&1 | grep Exuberant`
+IS_EXUBERANT=""
+ctags --version 2>&1 | grep Exuberant && IS_EXUBERANT="Y"
-if [ -z "$cv" ]
-then FLAGS="-dt"
-else FLAGS="--c-types=+dfmstuv"
+# List of kinds supported by Exuberant Ctags 5.8
+# generated by ctags --list-kinds
+# c classes
+# d macro definitions
+# e enumerators (values inside an enumeration)
+# f function definitions
+# g enumeration names
+# l local variables [off]
+# m class, struct, and union members
+# n namespaces
+# p function prototypes [off]
+# s structure names
+# t typedefs
+# u union names
+# v variable definitions
+# x external and forward variable declarations [off]
+
+if [ "$IS_EXUBERANT" ]
+then FLAGS="--c-kinds=+dfmstuv"
+else FLAGS="-dt"
fi
-find `pwd`/ \( -name _deadcode -prune \) -o \
- -type f -name '*.[chyl]' -print |
- xargs ctags "$FLAGS" -a -f tags
+# this is outputting the tags into the file 'tags', and appending
+find `pwd`/ -type f -name '*.[chyl]' -print |
+ xargs ctags -a -f tags "$FLAGS"
-if [ -z "$cv" ]
-then
- LC_ALL=C
+# Exuberant tags has a header that we cannot sort in with the other entries
+# so we skip the sort step
+# Why are we sorting this? I guess some tag implementation need this,
+# particularly for append mode. bjm 2012-02-24
+if [ ! "$IS_EXUBERANT" ]
+then LC_ALL=C
export LC_ALL
sort tags >/tmp/$$ && mv /tmp/$$ tags
fi