From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#20629: 25.0.50; Regression: TAGS broken, can't find anything in C++ files. Date: Sat, 23 May 2015 17:46:18 +0300 Message-ID: <83pp5r1hdx.fsf@gnu.org> References: <555EC552.5010600@swipnet.se> <55606A8F.1020109@swipnet.se> <55606CC7.3010401@yandex.ru> <55606F70.10605@swipnet.se> <83twv31jzg.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1432392445 496 80.91.229.3 (23 May 2015 14:47:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 23 May 2015 14:47:25 +0000 (UTC) Cc: 20629@debbugs.gnu.org To: jan.h.d@swipnet.se Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat May 23 16:47:15 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YwAhm-0005OK-3c for geb-bug-gnu-emacs@m.gmane.org; Sat, 23 May 2015 16:47:14 +0200 Original-Received: from localhost ([::1]:37828 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YwAhl-0002UT-K8 for geb-bug-gnu-emacs@m.gmane.org; Sat, 23 May 2015 10:47:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45769) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YwAhe-0002UC-RA for bug-gnu-emacs@gnu.org; Sat, 23 May 2015 10:47:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YwAha-0001kv-UB for bug-gnu-emacs@gnu.org; Sat, 23 May 2015 10:47:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:44063) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YwAha-0001kJ-Q8 for bug-gnu-emacs@gnu.org; Sat, 23 May 2015 10:47:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YwAha-0003WC-Ah for bug-gnu-emacs@gnu.org; Sat, 23 May 2015 10:47:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 May 2015 14:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20629 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20629-submit@debbugs.gnu.org id=B20629.143239239513491 (code B ref 20629); Sat, 23 May 2015 14:47:02 +0000 Original-Received: (at 20629) by debbugs.gnu.org; 23 May 2015 14:46:35 +0000 Original-Received: from localhost ([127.0.0.1]:54038 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YwAh4-0003VS-QO for submit@debbugs.gnu.org; Sat, 23 May 2015 10:46:34 -0400 Original-Received: from mtaout26.012.net.il ([80.179.55.182]:36132) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YwAgy-0003V8-48 for 20629@debbugs.gnu.org; Sat, 23 May 2015 10:46:28 -0400 Original-Received: from conversion-daemon.mtaout26.012.net.il by mtaout26.012.net.il (HyperSendmail v2007.08) id <0NOT00E0050RF300@mtaout26.012.net.il> for 20629@debbugs.gnu.org; Sat, 23 May 2015 17:48:03 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout26.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NOT0072J543BI60@mtaout26.012.net.il>; Sat, 23 May 2015 17:48:03 +0300 (IDT) In-reply-to: <83twv31jzg.fsf@gnu.org> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:103106 Archived-At: > Date: Sat, 23 May 2015 16:50:11 +0300 > From: Eli Zaretskii > Cc: 20629@debbugs.gnu.org > > We should try to fix bugs without re-introducing previously solved > ones. Does the patch below give good results in real-life C++ usage? Please also consider whether this change could cause trouble in other C++ use cases. (I've ran the modified version on the etags test suite, and didn't spot any problems in the differences with the previous results, but I don't consider myself an expert on C++ syntax.) Thanks. diff --git a/lib-src/etags.c b/lib-src/etags.c index 28729da..cb96f06 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -3681,7 +3681,29 @@ enum, 0, st_C_enum switch (fvdef) { case flistseen: - make_C_tag (true); /* a function */ + if ((c_ext & C_PLPL) != 0) + { + /* Tag C++ member function names, excluding the class and + namespace instances, if any. */ + char *colon_colon = strstr (token_name.buffer, "::"); + char *colon_colon2 = + colon_colon + ? strstr (colon_colon + 2, "::") + : NULL; + + if (colon_colon2 != NULL) + colon_colon = colon_colon2; + + if (colon_colon != NULL) + { + memmove (token_name.buffer, colon_colon + 2, + strlen (colon_colon + 2) + 1); + token_name.len = strlen (token_name.buffer); + } + make_C_tag (true); /* a member function */ + } + else + make_C_tag (true); /* a function */ /* FALLTHRU */ case fignore: fvdef = fvnone;