#c #ctags #exuberant-ctags
#c #ctags #буйный-ctags
Вопрос:
Мне нужно создать редактор с помощью браузера символов, и я сказал, что буду играть с ctags. Ну, я прочитал формат ctags и попытался погуглить и выполнить поиск здесь по адресу SO. Все, что я нашел, это вопросы о ctags и vim, а я ноль в vim. Поэтому я решил, что буду играть сам. Итак, я взял файл тегов и был совершенно сбит с толку!
Здесь я поместил PHP-файл и соответствующий ему тег, и мне нужна ваша помощь в том, как мне узнать, представляет ли строка атрибут класса или метод? Также, как я могу узнать возвращаемое значение функции / метода PHP?
Я не нашел ни одного хорошего руководства по работе с тегами PHP (или любого другого языка) в ctags, кроме vi / vim connected! Спасибо
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
Ответ №1:
Первый элемент после ;"
в каждой строке описывает kind
тег, то есть является ли он классом, функцией и т. Д. В вашем примере c
обозначает класс, f
функцию и так далее. Вы можете получить полный список с ctags --list-kinds=php
помощью .
Возвращаемые типы (к сожалению) не сообщаются ctags.
Вам обязательно следует взглянуть на справочную страницу ctags, там все достаточно хорошо объяснено, например, какую другую информацию он может сообщать в дополнение к информации, которую он сообщает по умолчанию.
Комментарии:
1. Правильно ли говорить, что формат: Имя файла / ^ подпись; вид ?
2. Почти, это
tagname filename /searchpattern/;" kind
. Как я уже сказал, взгляните на справочную страницу, там все объяснено (нижеTAG FILE FORMAT
).
Ответ №2:
Ну, я читаю формат ctags
Формат файла Exuberant Ctags хорошо документирован.