Emacs has at any time one selected tags table, and all the commands for working with tags tables use the selected one. To select a tags table, type M-x visit-tags-table, which reads the tags table file name as an argument. The name `TAGS' in the default directory is used as the default file name.
All this command does is store the file name in the variable
tags-file-name. Emacs does not actually read in the tags table
contents until you try to use them. Setting this variable yourself is just
as good as using
visit-tags-table. The variable's initial value is
nil; that value tells all the commands for working with tags tables
that they must ask for a tags table file name to use.
visit-tags-table when a tags table is already loaded
gives you a choice: you can add the new tags table to the current list
of tags tables, or start a new list. The tags commands use all the tags
tables in the current list. If you start a new list, the new tags table
is used instead of others. If you add the new table to the
current list, it is used as well as the others. When the tags
commands scan the list of tags tables, they don't always start at the
beginning of the list; they start with the first tags table (if any)
that describes the current file, proceed from there to the end of the
list, and then scan from the beginning of the list until they have
covered all the tables in the list.
You can specify a precise list of tags tables by setting the variable
tags-table-list to a list of strings, like this:
(setq tags-table-list '("~/emacs" "/usr/local/lib/emacs/src"))
This tells the tags commands to look at the `TAGS' files in your `~/emacs' directory and in the `/usr/local/lib/emacs/src' directory. The order depends on which file you are in and which tags table mentions that file, as explained above.
Do not set both