我需要使用Symbol Browser制作一个编辑器,我说我会用ctags玩。好吧,我读了ctags格式并尝试了谷歌,并在这里搜索SO。我发现的只是关于ctags和vim的问题,而我在vim是零。所以我决定自己一起玩。 所以我拿了一个标签文件,我完全糊涂了!
这里我已经放了PHP文件及其相应的标签,我需要你的帮助,我怎么知道这行是代表类属性还是方法?另外我怎么知道PHP函数/方法的返回值?
我没有找到任何关于在vi / vim连接以外的ctags中处理PHP(或任何其他语言)标签的好教程! 感谢
PHP文件
<?php
$teachers = array("standard one"=>"Celina Stephen", "Standard Two"=>"Emanyor Dickson");
function set_teachers($teacher_array){
$teachers = $teacher_array;
return $teacher_array;
}
class School{
$teachers;
$students;
public function __construct(){
}
public function get_all(){
return array($this->teachers,$this->students);
}
}
class ManySchools extends School{
public __construct(){
parent::construct();
}
private do_selection($teacher, $student=null){
return false;
}
}
标记文件
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.9~svn20110310 //
ManySchools test.php /^class ManySchools extends School{$/;" c
School test.php /^class School{$/;" c
__construct test.php /^ public function __construct(){$/;" f
get_all test.php /^ public function get_all(){$/;" f
set_teachers test.php /^function set_teachers($teacher_array){$/;" f
teachers test.php /^ $teachers = $teacher_array;$/;" v
teachers test.php /^$teachers = array("standard one"=>"Celina Stephen", "Standard Two"=>"Emanyor Dickson");$/;" v
答案 0 :(得分:3)
每行;"
之后的第一项描述了标记的kind
,即它是否是类,函数等。在您的示例中c
代表类, f
用于功能等。您可以使用ctags --list-kinds=php
获取完整列表。
(遗憾的是)ctags没有报告返回类型。
你一定要看看ctags手册页,那里的所有内容都说得很清楚,例如,除了默认报告的信息之外,还可以报告其他信息。
答案 1 :(得分:0)
我读过ctags格式
Exuberant Ctags文件格式已有详细记录。