| #!/bin/sh |
| |
| # This file illustrates how to generate a useful TAGS file via etags |
| # for emacs. This should be invoked from the top source directory i.e.: |
| # > build/MakeEtags |
| # and will create a TAGS file in the top source directory. |
| |
| # This script falls under the Apache License. |
| # See http://www.apache.org/docs/LICENSE |
| |
| # Once you have created ./TAGS in emacs you'll need to setup |
| # tag-table-alist with an entry to assure it finds the single ./TAGS |
| # file from the many source directories. Something along these lines: |
| # (setq tag-table-alist |
| # '(("/home/me/work/httpd-2.0/" |
| # . "/home/me/work/httpd-2.0/") |
| # )) |
| |
| # 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=AP_DECLARE,AP_DECLARE_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 - |
| |