From: Francesco Potorti` <pot@gnu.org>
To: Frank Schmitt <ich@frank-schmitt.net>
Cc: emacs-devel@gnu.org
Subject: Re: [PATCH, RFC] etags/ctags v22.0.92 break Linux kernel `make TAGS/tags`
Date: Mon, 05 Feb 2007 09:25:52 +0100 [thread overview]
Message-ID: <E1HDzAe-000694-C6@tucano.isti.cnr.it> (raw)
In-Reply-To: <m38xgk47lc.fsf@mid.gehheimdienst.de>
Sorry for the delay in my response. Frank, you had written:
>One case I've just found: For the following class Emacs etags fails to
>tag the class members and adds some strange lines for the template
>parameters while exuberant ctags gives a much nicer result (see below)
In fact, that happens when etags is called without the --members option.
What I usually do is calling it with both --declarations and --members,
whose meaning is:
--declarations
In C and derived languages, create tags for function declarations,
and create tags for extern variables unless --no-globals is used.
--members
Create tag entries for members of structures in some languages.
The reason why these are not the default is for compatibility with the
ancient ctags, because they were new when first introduced, and because
they make the TAGS file bigger. None of these reasons seems to hold any
more, so maybe I should make these the default and adding --no-members
and --no-declarations options.
I am confident that setting at least --members as the default is good
idea, so in the absence of contrary feedback, I will make --members the
default and leaving --declarations as it is now, but I would gladly
listen for opinions on this matter.
At the end of the message I am including the output of etags with
--members for the code snippet you propose.
>code:
>---------------------------------------------------------------------
>template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl, typename ipc3dLinkControlSetup>
>class CMultiChannelCSC19_3D
>{
>private:
> ipc3dLinkControlSetup setup;
> ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl> mcCSC;
> advTimer cscInitTime;
> advTimer cscSegmentationTime;
> advTimer outputTime;
>public:
> void execute(CPluginCSCState& p, int w, int h, int d, const ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage, ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int* mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)
> {
> if (orgImage!=NULL)
> {
> //do something
> }
> }
>};
>---------------------------------------------------------------------
>TAGS by emacs etags:
>---------------------------------------------------------------------
>
>foo.h,423
>template <typename ipc3dIslandHierarchy,1,0
>template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
>template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,1,0
>template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,1,0
>class CMultiChannelCSC19_3D2,151
> void execute(CMultiChannelCSC19_3D::execute11,459
>---------------------------------------------------------------------
>TAGS by exuberant ctags:
>---------------------------------------------------------------------
>
>foo.h,680
>class CMultiChannelCSC19_3DCMultiChannelCSC19_3D2,151
> ipc3dLinkControlSetup setup;setup5,190
> ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl> mcCSC; mcCSC6,220
> advTimer cscInitTime;cscInitTime7,375
> advTimer cscSegmentationTime;cscSegmentationTime8,398
> advTimer outputTime;outputTime9,429
> void execute(CPluginCSCState& p, int w, int h, int d, const ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage, ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int* mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)execute11,459
This is the output with --members. The first four lines make a tag for
the templates, which extags does not do (as far as I know). A tag for
ipc3dCSC19 is emitted, which exctags does not do. The tag names are of
the form class::tag, allowing to search tags more easily.
/tmp/t.cc,1293
template <typename ipc3dIslandHierarchy,^?1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,^?1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,^?1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,^?1,0
class CMultiChannelCSC19_3D^?2,151
ipc3dLinkControlSetup setup;^?CMultiChannelCSC19_3D::setup^A5,190
ipc3dCSC19<^?CMultiChannelCSC19_3D::ipc3dCSC19^A6,227
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl> mcCSC;^?CMultiChannelCSC19_3D::mcCSC^A6,227
advTimer cscInitTime;^?CMultiChannelCSC19_3D::cscInitTime^A7,388
advTimer cscSegmentationTime;^?CMultiChannelCSC19_3D::cscSegmentationTime^A8,418
advTimer outputTime;^?CMultiChannelCSC19_3D::outputTime^A9,456
void execute(^?CMultiChannelCSC19_3D::execute^A11,493
next prev parent reply other threads:[~2007-02-05 8:25 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-24 20:01 [PATCH, RFC] etags/ctags v22.0.92 break Linux kernel `make TAGS/tags` Don Mullis
2006-12-25 5:41 ` Masatake YAMATO
2006-12-25 16:47 ` Don Mullis
2006-12-25 22:36 ` Francesco Potorti`
2006-12-26 14:13 ` Francesco Potorti`
2006-12-26 18:43 ` Don Mullis
2006-12-28 0:10 ` Francesco Potorti`
2006-12-28 5:48 ` Don Mullis
2006-12-28 10:21 ` Francesco Potorti`
2006-12-29 22:58 ` Richard Stallman
2006-12-30 20:36 ` Don Mullis
2006-12-31 1:46 ` Richard Stallman
2006-12-27 2:59 ` Richard Stallman
2006-12-30 12:15 ` Francesco Potorti`
2006-12-31 1:45 ` Richard Stallman
2007-01-02 11:41 ` Francesco Potorti`
2007-01-02 14:26 ` Frank Schmitt
2007-01-03 1:24 ` Francesco Potorti`
2007-01-03 12:06 ` Frank Schmitt
2007-01-03 14:33 ` Frank Schmitt
[not found] ` <m38xgk47lc.fsf@mid.gehheimdienst.de>
2007-02-05 8:25 ` Francesco Potorti` [this message]
2007-01-02 21:24 ` Richard Stallman
2007-01-03 0:40 ` Francesco Potorti`
2007-01-02 21:24 ` Eli Zaretskii
2007-01-03 0:42 ` Francesco Potorti`
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1HDzAe-000694-C6@tucano.isti.cnr.it \
--to=pot@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=ich@frank-schmitt.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.