@@ -208,13 +208,38 @@ can be used to match against definitions for that classlike."
208208 ; ; allow backslashes in the name to handle namespaces, but again
209209 ; ; this is not necessarily correct for all values of `type' .
210210 " \\ s-+\\ (\\ (?:\\ sw\\ |\\\\\\ |\\ s_\\ )+\\ )" )))
211+
212+ (defconst php-imenu-generic-expression
213+ (eval-when-compile
214+ `((" Namespaces"
215+ ,(php-create-regexp-for-classlike " namespace" ) 1 )
216+ (" Classes"
217+ ,(php-create-regexp-for-classlike " class" ) 1 )
218+ (" Interfaces"
219+ ,(php-create-regexp-for-classlike " interface" ) 1 )
220+ (" Traits"
221+ ,(php-create-regexp-for-classlike " trait" ) 1 )
222+ (" All Methods"
223+ ,(php-create-regexp-for-method) 1 )
224+ (" Private Methods"
225+ ,(php-create-regexp-for-method '(" private" )) 1 )
226+ (" Protected Methods"
227+ ,(php-create-regexp-for-method '(" protected" )) 1 )
228+ (" Public Methods"
229+ ,(php-create-regexp-for-method '(" public" )) 1 )
230+ (" Anonymous Functions"
231+ " \\ <\\ (\\ (?:\\ sw\\ |\\ s_\\ )+\\ )\\ s-*=\\ s-*f\\ (unctio\\ )?n\\ s-*(" 1 )
232+ (" Named Functions"
233+ " ^\\ s-*function\\ s-+\\ (\\ (?:\\ sw\\ |\\ s_\\ )+\\ )\\ s-*(" 1 )))
211234 " Imenu generic expression for PHP Mode. See `imenu-generic-expression' ." )
212235
213- (defvar php--re-namespace-pattern
214- (php-create-regexp-for-classlike " namespace" ))
236+ (defconst php--re-namespace-pattern
237+ (eval-when-compile
238+ (php-create-regexp-for-classlike " namespace" )))
215239
216- (defvar php--re-classlike-pattern
217- (php-create-regexp-for-classlike (regexp-opt '(" class" " interface" " trait" ))))
240+ (defconst php--re-classlike-pattern
241+ (eval-when-compile
242+ (php-create-regexp-for-classlike (regexp-opt '(" class" " interface" " trait" )))))
218243
219244(defun php-get-current-element (re-pattern )
220245 " Return backward matched element by RE-PATTERN."
0 commit comments