Thread: [Ctags] Patch for template support
Brought to you by:
dhiebert
From: Jim C. <jim...@gm...> - 2006-01-16 04:09:32
|
I've added initial support for templates, as well as a few other additions to ctags. I've created a patch file ( I hope I made it correctly) that people can use to patch the code from the 5.5.4 release from the SF project site. You can get the patch here: http://vcf-online.org/ctags-template-support.patch My changes add the following enhancements: types that declared as templates are properly parsed, so: std::map<int,int> myMap; will be parsed correctly. Also support for the "::" in identifiers was adde= d. The type info for variables and typedefs is now stored. I have added a new parameter/flag to toggle the output of the variable. Using +/- 't' with the --fields switch will toggle this information. If it's turned on, then the text "typeinfo:" is added with the variable/typedef's type so: std::map<int,int> myMap; would show up as myMap test.h 19;" typeinfo:std::map<int,int> in the tag file Template information is stored as well, and is toggled on or off by using the +/- "T" with the --fields switch. If it's enabled, then the text "templateSignature" is added like so: template <typename MyType> class Foo {}; would show as Foo test.h 3;" templateSignature:< typename MyType> Hope this helps, Cheers Jim Crafton |
From: Jim C. <jim...@gm...> - 2006-01-16 04:04:20
Attachments:
ctags-template-support.patch
|
I've added initial support for templates, as well as a few other additions to ctags. I've attached a patch file ( I hope I made it correctly) that people can use to patch the code from the 5.5.4 release from the SF project site. My changes add the following enhancements: types that declared as templates are properly parsed, so: std::map<int,int> myMap; will be parsed correctly. Also support for the "::" in identifiers was adde= d. The type info for variables and typedefs is now stored. I have added a new parameter/flag to toggle the output of the variable. Using +/- 't' with the --fields switch will toggle this information. If it's turned on, then the text "typeinfo:" is added with the variable/typedef's type so: std::map<int,int> myMap; would show up as myMap=09test.h=0919;"=09typeinfo:std::map<int,int> in the tag file Template information is stored as well, and is toggled on or off by using the +/- "T" with the --fields switch. If it's enabled, then the text "templateSignature" is added like so: template <typename MyType> class Foo {}; would show as Foo=09test.h=093;"=09templateSignature:< typename MyType> Hope this helps, Cheers Jim Crafton |
From: Jim C. <jim...@gm...> - 2006-01-25 01:48:04
|
Oops. Actually I need to do it again, because I found some bugs in my implementation, and fixed them. I'll try again, and resubmit. Is there some "formal" place to submit the patches? Cheers Jim |
From: Elliott H. <enh...@gm...> - 2006-01-25 02:08:41
|
T24gMS8yNC8wNiwgSmltIENyYWZ0b24gPGppbS5jcmFmdG9uQGdtYWlsLmNvbT4gd3JvdGU6Cj4K PiBPb3BzLiBBY3R1YWxseSBJIG5lZWQgdG8gZG8gaXQgYWdhaW4sIGJlY2F1c2UgSSBmb3VuZCBz b21lIGJ1Z3MgaW4gbXkKPiBpbXBsZW1lbnRhdGlvbiwgYW5kIGZpeGVkIHRoZW0uIEknbGwgdHJ5 IGFnYWluLCBhbmQgcmVzdWJtaXQuIElzIHRoZXJlCj4gc29tZSAiZm9ybWFsIiBwbGFjZSB0byBz dWJtaXQgdGhlIHBhdGNoZXM/Cj4KCnRoZXJlJ3MgdGhlIHBhdGNoIHF1ZXVlIG9uIHNvdXJjZWZv cmdlLCB3aGljaCBpcyBoYW5keSBmb3IgcG9zdGVyaXR5J3Mgc2FrZSwKYnV0IHRoaXMgbGlzdCB3 aWxsIHByb2JhYmx5IGdldCB5b3UgbW9yZSBleWViYWxscyBpbiB0aGUgc2hvcnQgdGVybS4gKHRo b3VnaApzdGlsbCBwcm9iYWJseSBub3QgdmVyeSBtYW55LikKCi0tCkVsbGlvdHQgSHVnaGVzLCBo dHRwOi8vd3d3Lmplc3NpZXMub3JnL35lbmgvCg== |
From: Jim C. <jim...@gm...> - 2006-01-25 02:25:13
|
> (though > still probably not very many.) What happened? Is it just because the tool is so stable? |
From: Elliott H. <enh...@gm...> - 2006-01-25 02:57:58
|
T24gMS8yNC8wNiwgSmltIENyYWZ0b24gPGppbS5jcmFmdG9uQGdtYWlsLmNvbT4gd3JvdGU6Cj4K PiBXaGF0IGhhcHBlbmVkPyBJcyBpdCBqdXN0IGJlY2F1c2UgdGhlIHRvb2wgaXMgc28gc3RhYmxl Pwo+CgppdCBoYWQgYSBzaW5nbGUgbWFpbnRhaW5lciB3aG8gaGFkIHNvbWUgZmFtaWx5IHByb2Js ZW1zIHRoYXQgaGF2ZSBwcmV2ZW50ZWQKaGltIGZyb20gZG9pbmcgYW55dGhpbmcgb24gZWN0YWdz IGZvciB5ZWFycyBub3cuICh5b3UgY2FuIHJlYWQgaGlzIG1haWxzIG9uCnRoZSBzdWJqZWN0IGlu IHRoZSBhcmNoaXZlLikgYSBiaWcgcHJvamVjdCBsaWtlIEdDQyBpcyBqdXN0IGdvaW5nIHRvIGtl ZXAKcm9sbGluZyBvbiwgYnV0IGEgc2luZ2xlLW1haW50YWluZXIgcHJvamVjdCBpcyBzY3Jld2Vk IGluIHN1Y2ggYQpjaXJjdW1zdGFuY2UuCgppIHdvbmRlciB3aGljaCBvZiBlY3RhZ3MnIGxhbmd1 YWdlcyBhcmUgYWN0dWFsbHkgdXNlZC4gdGhlIEMrKyBzdXBwb3J0IGlzCmZhaXJseSBnb29kLCB0 aGUgSmF2YSBzdXBwb3J0IHdhcyBva2F5IHVudGlsIEphdmEgMS41IGNhbWUgb3V0LCBidXQgdGhl IFBlcmwKYW5kIFJ1Ynkgc3VwcG9ydCBpcyBsYXVnaGFibGUuIGknZCBpbWFnaW5lIHRoYXQgaXQg aHVydHMgZWN0YWdzIHRoYXQgaXQncwp3cml0dGVuIGluIEMgYW5kIEMgaXMgdGhlIG1vc3Qgc3Rh YmxlIGxhbmd1YWdlIGl0IHN1cHBvcnRzLiBzbyB0aGUgcGVvcGxlCm1vc3QgYWJsZS93aWxsaW5n IHRvIGZpeCBzdHVmZiBhcmUgdGhlIHBlb3BsZSB3aXRoIGxlYXN0IG5lZWQgdG8uCgppdCdzIGFs c28gYSBidW1tZXIgdGhhdCBlY3RhZ3MgLS0gbW9yZSBzbyB0aGFuIGNvbXBpbGVycywgZXZlbiAt LSBoYXMgdG8KZGVhbCB3aXRoIG1hbGZvcm1lZCBzb3VyY2UuIHRoYXQgbWFrZXMgaXQgaGFyZCB0 byBqdXN0IHVzZSAoc2F5KSBTdW4ncyBKYXZhCnBhcnNlciBmb3IgdGhlIHNhbWUgam9iLiBlY3Rh Z3MnIGNydWZ0eSBhZC1ob2MgcGFyc2VycyBtaWdodCBub3QgYmUgaWRlYWwgdG8Kd29yayBvbiwg YnV0IHRoZWlyIGFiaWxpdHkgdG8gYmxpbmRseSBzdHJ1Z2dsZSBvbiBpbiB0aGUgZmFjZSBvZgpu ZWFyLW5vbnNlbnNlIGlucHV0IGlzIHByZXR0eSB1c2VmdWwuCgotLQpFbGxpb3R0IEh1Z2hlcywg aHR0cDovL3d3dy5qZXNzaWVzLm9yZy9+ZW5oLwo= |
From: Neil B. <ne...@fn...> - 2006-01-25 08:27:00
|
Around about 25/01/06 02:25, Jim Crafton typed ... > What happened? Is it just because the tool is so stable? If you're a happy hacker, it may well be worth contacting Darren and taking on, if only partially, C++ support yourself. Then you know your patches'll get in :) -- [neil@fnx ~]# rm -f .signature [neil@fnx ~]# ls -l .signature ls: .signature: No such file or directory [neil@fnx ~]# exit |
From: Dmitri T. <dm...@ne...> - 2006-01-25 14:17:39
|
Elliott Hughes wrote: > i wonder which of ectags' languages are actually used. the C++ support is > fairly good, the Java support was okay until Java 1.5 came out, but the Perl > and Ruby support is laughable. I have a patch that makes Perl support a bit better, IMO, here: http://web.njit.edu/~dxt2431/ctags/ - Dmitri. |
From: Elias P. <el...@us...> - 2006-01-25 15:25:17
|
On Wed, 2006-01-25 at 09:17 -0500, Dmitri Tikhonov wrote: > Elliott Hughes wrote: > > > i wonder which of ectags' languages are actually used. the C++ support is > > fairly good, the Java support was okay until Java 1.5 came out, but the Perl > > and Ruby support is laughable. > > I have a patch that makes Perl support a bit better, IMO, here: > > http://web.njit.edu/~dxt2431/ctags/ > For what it's worth, I have submitted a patch which fixes/works around a flaw in the Python parser here: http://sourceforge.net/tracker/index.php?func=detail&aid=1411963&group_id=6556&atid=106556 -- Elias Pschernig |
From: Elias P. <el...@us...> - 2006-01-25 15:14:47
|
On Wed, 2006-01-25 at 09:17 -0500, Dmitri Tikhonov wrote: > Elliott Hughes wrote: > > > i wonder which of ectags' languages are actually used. the C++ support is > > fairly good, the Java support was okay until Java 1.5 came out, but the Perl > > and Ruby support is laughable. > > I have a patch that makes Perl support a bit better, IMO, here: > > http://web.njit.edu/~dxt2431/ctags/ > For what it's worth, I have submitted a patch which fixes/works around a flaw in the Python parser here: http://sourceforge.net/tracker/index.php?func=detail&aid=1411963&group_id=6556&atid=106556 -- Elias Pschernig |