From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: finding tags files based on location Date: Tue, 26 Feb 2008 21:31:28 -0700 Message-ID: References: <8433d21a-3b4e-48b1-a88a-f5639d8e2f2d@i7g2000prf.googlegroups.com> <38795075-7c18-4e8e-b9a4-ba42fc3f5119@e6g2000prf.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1204086707 28880 80.91.229.12 (27 Feb 2008 04:31:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 27 Feb 2008 04:31:47 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Feb 27 05:32:12 2008 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JUDxg-0005k8-6o for geh-help-gnu-emacs@m.gmane.org; Wed, 27 Feb 2008 05:32:08 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JUDxA-0006AQ-5U for geh-help-gnu-emacs@m.gmane.org; Tue, 26 Feb 2008 23:31:36 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JUDwu-0006AL-80 for help-gnu-emacs@gnu.org; Tue, 26 Feb 2008 23:31:20 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JUDwr-0006A9-Rg for help-gnu-emacs@gnu.org; Tue, 26 Feb 2008 23:31:18 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JUDwr-0006A6-MM for help-gnu-emacs@gnu.org; Tue, 26 Feb 2008 23:31:17 -0500 Original-Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JUDwr-0006Av-Ka for help-gnu-emacs@gnu.org; Tue, 26 Feb 2008 23:31:17 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1JUDwn-0001xD-Mj for help-gnu-emacs@gnu.org; Wed, 27 Feb 2008 04:31:13 +0000 Original-Received: from c-67-162-159-170.hsd1.co.comcast.net ([67.162.159.170]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 27 Feb 2008 04:31:13 +0000 Original-Received: from kevin.d.rodgers by c-67-162-159-170.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 27 Feb 2008 04:31:13 +0000 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 39 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-67-162-159-170.hsd1.co.comcast.net User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) In-Reply-To: <38795075-7c18-4e8e-b9a4-ba42fc3f5119@e6g2000prf.googlegroups.com> X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:51902 Archived-At: gamename wrote: > On Feb 25, 8:08 pm, Kevin Rodgers wrote: >> gamename wrote: >>> I often have to checkout multiple copies of the same source tree from >>> cvs. For example, if I have a source tree 'foo' in cvs, I may have 2 >>> copies like ~/foo0/bar and ~/foo1/bar in my home directory at the same >>> time. Each copy of the foo tree will have a tags file in 'foo/tags'. >>> Does anyone have code that will enable emacs to determine which tags >>> file to use based on the tree i'm currently using? For example, if >>> I'm in foo1/bar, I would be using the tags file in foo1/tags, not foo0/ >>> tags. Is there code to dynamically determine that? >> >> Is it enough to make tags-file-name a buffer local variable, set >> appropriately for each file? If so: >> >> (defun set-local-tags-file-name () >> (when (file-exists-p "tags") >> (set (make-local-variable 'tags-file-name) >> (expand-file-name "tags")))) >> >> (add-hook 'find-file-hook 'set-local-tags-file-name) > > Thanks Kevin, but I don't think that scales very well. If I have > thousands of files, that wouldn't be workable. Actually, it scales perfectly well: No matter how many files you have, the hook is only run once for each file that you actually visit. The question is: Does it actually work? I see now that vist-tags-table explicitly provides a way to do the same thing, so perhaps this is better: (defun set-local-tags-file-name () (when (file-exists-p "tags") (visit-tags-table (expand-file-name "tags") t))) -- Kevin Rodgers Denver, Colorado, USA