From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Leo Liu Newsgroups: gmane.emacs.help Subject: Re: etags and php classes Date: Fri, 04 Apr 2014 07:45:08 +0800 Message-ID: References: <83wqf7btww.fsf@gnu.org> <65DB79BD-C772-444A-9944-D23567A0A610@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1396568754 23406 80.91.229.3 (3 Apr 2014 23:45:54 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 3 Apr 2014 23:45:54 +0000 (UTC) Cc: help-gnu-emacs , Luca Ferrari To: cavd Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Apr 04 01:45:49 2014 Return-path: Envelope-to: geh-help-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 1WVrKN-0002XI-E4 for geh-help-gnu-emacs@m.gmane.org; Fri, 04 Apr 2014 01:45:47 +0200 Original-Received: from localhost ([::1]:46842 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WVrKN-0002vu-0m for geh-help-gnu-emacs@m.gmane.org; Thu, 03 Apr 2014 19:45:47 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34632) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WVrK4-0002vj-3B for help-gnu-emacs@gnu.org; Thu, 03 Apr 2014 19:45:32 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WVrJz-0000h9-8S for help-gnu-emacs@gnu.org; Thu, 03 Apr 2014 19:45:27 -0400 Original-Received: from mail-pa0-x22a.google.com ([2607:f8b0:400e:c03::22a]:48580) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WVrJy-0000h2-PA for help-gnu-emacs@gnu.org; Thu, 03 Apr 2014 19:45:23 -0400 Original-Received: by mail-pa0-f42.google.com with SMTP id fb1so2590550pad.15 for ; Thu, 03 Apr 2014 16:45:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=BjxvjMskyBEgYDEE67lNi4OBrJjMz96i/0fecXkKD9o=; b=rb3RSXgeogtJjqLTc3ZJP8ClTdMlvMIwFBX1dlilP9rTm4NgzH9A0cjtpe41hFTMV4 k1/K/3MGlECo29Trf91a4tGVfiP8/inmBNBJoNbLhmPOJUKVZffMo5aSCTtaki+gZLGP OCIBLe76kDqjR52u5fSqzztvgsGzCbWl3IDrlyIs3aF7cM+nNXvNE1kAJgQae+RDrbMA 9co7A5LuEYwLDeli3bogNJ9rjVcfNXeeeZmduE03lZGKuBmfRQAoOyTMXYZGmx3rrJ/t SAMwGhNc9djFXCyF1Y93tmGLyelpCk4Fn80z81uj+iFOjKHP/1kvxdMXGxwe97BZFiYs aLoA== X-Received: by 10.69.26.103 with SMTP id ix7mr10759765pbd.41.1396568721597; Thu, 03 Apr 2014 16:45:21 -0700 (PDT) Original-Received: from fortuna ([61.149.216.157]) by mx.google.com with ESMTPSA id my6sm13648002pbc.36.2014.04.03.16.45.13 for (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 03 Apr 2014 16:45:20 -0700 (PDT) Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAgMAAADxkFD+AAAADFBMVEUvT09qWs3/pQD///+J kUVcAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMLOd3veKQA AACuSURBVBjTldE9CgIxEAXgB+lEyFUC2wo5ikdZ8DSypxhMY7H9VuIVwlqkGRgnm59VsHGafIQ3 CZlAtmKIRaHETgYa12lqvEsPYKf8wXHsPGfqPaUM0g9aJPKFXkmNQmSDqwzz4Fpgpz+6WAPY2z5o uPJJpu0uypcl4nyCibMLQ8lCiVjayLoQvw5LsVKQuHPRR958HZbOcVsKeepcLxpByjycGvnKmY+c MBvrtyjfe0vmuLvdq/kAAAAASUVORK5CYII= In-Reply-To: <65DB79BD-C772-444A-9944-D23567A0A610@gmail.com> (cavd's message of "Thu, 3 Apr 2014 13:00:45 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (CentOS 6.5) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c03::22a X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:96959 Archived-At: --=-=-= Content-Type: text/plain On 2014-04-04 02:00 +0800, cavd wrote: > You might try GNU Global; it's pretty nice. > > Chris. I use global CVS + php.diff (attached) + ggtags.el. The patch should make Global usable for php5. If you install Global with the right plugin it can support many languages reasonably nicely with the ability to find both definitions and references. See https://github.com/leoliu/ggtags#install-global-and-plugins HTH, Leo --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=php.diff Content-Description: php.diff >From cde42478e8e8666974a8ed261084c6fa2f96b563 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Wed, 5 Mar 2014 14:41:14 +0800 Subject: [PATCH 1/2] Update reserved words for PHP --- libparser/php_res.in | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/libparser/php_res.in b/libparser/php_res.in index 5f8bd754..84053ca3 100644 --- a/libparser/php_res.in +++ b/libparser/php_res.in @@ -13,17 +13,29 @@ ; ; PHP reserved word list. ; -__FILE__ word +; http://us2.php.net/manual/en/language.constants.predefined.php __LINE__ word +__FILE__ word +__DIR__ word __FUNCTION__ word __CLASS__ word +__TRAIT__ word +__METHOD__ word +__NAMESPACE__ word +; +; http://us2.php.net/manual/en/reserved.keywords.php +__halt_compiler,__HALT_COMPILER,__Halt_Compiler word +abstract,ABSTRACT,Abstract word and,AND,And word array,ARRAY,Array word as,AS,As word break,BREAK,Break word +callable,CALLABLE,Callable word case,CASE,Case word +catch,CATCH,Catch word cfunction,CFUNCTION,Cfunction,CFunction word class,CLASS,Class word +clone,CLONE,Clone word const,CONST,Const word continue,CONTINUE,Continue word declare,DECLARE,Declare word @@ -44,24 +56,36 @@ endwhile,ENDWHILE,Endwhile,EndWhile word endswitch,ENDSWITCH,Endswitch,EndSwitch word eval,EVAL,Eval word exit,EXIT,Exit word +extends,EXTENDS,Extends word failure,FAILURE,Failure word false,FALSE,False word +final,FINAL,Final word for,FOR,For word foreach,FOREACH,Foreach,ForEach word function,FUNCTION,Function word global,GLOBAL,Global word +goto,GOTO,Goto word header,HEADER,Header word list,LIST,List word if,IF,If word +implements,IMPLEMENTS,Implements word include,INCLUDE,Include word include_once,INCLUDE_ONCE,Include_once,Include_Once word +instanceof,INSTANCEOF,Instanceof word +insteadof,INSTEADOF,Insteadof word +interface,INTERFACE,Interface word is_array,IS_ARRAY,Is_array,Is_Array word is_set,IS_SET,Is_set,Is_Set word +isset,ISSET,Isset word +namespace,NAMESPACE,Namespace word new,NEW,New word old_function,OLD_FUNCTION,Old_function,Old_Function word or,OR,Or word print,PRINT,Print word printf,PRINTF,Printf word +private,PRIVATE,Private word +protected,PROTECTED,Protected word +public,PUBLIC,Public word return,RETURN,Return word require,REQUIRE,Require word require_once,REQUIRE_ONCE,Require_once,Require_Once word @@ -69,7 +93,11 @@ setcookie,SETCOOKIE,Setcookie,SetCookie word success,SUCCESS,Success word static,STATIC,Static word switch,SWITCH,Switch word +throw,THROW,Throw word +trait,TRAIT,Trait word +try,TRY,Try word true,TRUE,True word +use,USE,Use word var,VAR,Var word while,WHILE,While word unset,UNSET,Unset word -- 1.9.1.352.gd393d14 >From a72fafcda8b9fb53baad122903ce7cbf28ebe5a6 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Wed, 5 Mar 2014 17:01:04 +0800 Subject: [PATCH 2/2] update php lexer --- libparser/php.l | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libparser/php.l b/libparser/php.l index 584112bc..24459042 100644 --- a/libparser/php.l +++ b/libparser/php.l @@ -298,6 +298,12 @@ php(const struct parser_param *param) PUT(PARSER_DEF, strbuf_value(string), LEXLINENO); break; case PHP_CLASS: + case PHP_INTERFACE: + if (LEXLEX(param) != PHP_TOKEN) + break; + PUT(PARSER_DEF, LEXTEXT, LEXLINENO); + break; + case PHP_CONST: if (LEXLEX(param) != PHP_TOKEN) break; PUT(PARSER_DEF, LEXTEXT, LEXLINENO); @@ -309,6 +315,11 @@ php(const struct parser_param *param) break; PUT(PARSER_DEF, LEXTEXT, LEXLINENO); break; + case PHP_TRAIT: + if (LEXLEX(param) != PHP_TOKEN) + break; + PUT(PARSER_DEF, LEXTEXT, LEXLINENO); + break; case PHP_VARIABLE: if (php_reserved_variable(LEXTEXT, LEXLENG)) { PUT(PARSER_REF_SYM, LEXTEXT, LEXLINENO); -- 1.9.1.352.gd393d14 --=-=-=--