| #!/bin/sh |
| |
| # This file illustrates how to generate a useful TAGS file via etags |
| # for emacs. This should be invoked from the src directory i.e.: |
| # > helpers/MakeEtags |
| # and will create a TAGS file in the src directory. |
| |
| # This script falls under the Apache License. |
| # See http://www.apache.org/docs/LICENSE |
| |
| # Once you have created src/TAGS in emacs you'll need to setup |
| # tag-table-alist with an entry to assure it finds the single src/TAGS |
| # file from the many source directories. Something along these lines: |
| # (setq tag-table-alist |
| # '(("/home/me/work/apache-1.3/src/" |
| # . "/home/me/work/apache-1.3/src/") |
| # )) |
| |
| # This requires a special version of etags, i.e. the |
| # one called "Exuberant ctags" available at: |
| # http://fly.hiwaay.net/~darren/ctags/ |
| # Once that is setup you'll need to point to the |
| # executable here: |
| |
| etags=~/local/bin/etags |
| |
| # Exuberant etags is necessary since it can ignore some defined symbols |
| # that obscure the function signatures. |
| |
| ignore=API_EXPORT,API_EXPORT_NONSTD,__declspec |
| |
| # Create an etags file at the root of the source |
| # tree, then create symbol links to it from each |
| # directory in the source tree. By passing etags |
| # absolute pathnames we get a tag file that is |
| # NOT portable when we move the directory tree. |
| |
| find . -name '*.[ch]' -print | $etags -I "$ignore" -L - |
| |