LINUX.ORG.RU

История изменений

Исправление gns, (текущая версия) :

Оно, это code tree, большое. Закачайте в редактор ядро линкукса и посмотрите, с какой скоростью это все будет работать. Прелесть тегов в том, что изначально у меня в редакторе открыто ну пять файлов, ну десять. А когда я ищу что-то по тегам, редактор открывает мне дополнительные буфера (фреймы, табы, окна, whatever) c файлами, где он этот тег нашел. И то, если ткну в соответствующею строку в окне поиска. Насколько я понимаю, Project Tree требует, что бы все файлы были открыты к моменту построения дерева. Опять же, у меня есть один проект — мой, типа пишу модуль ядра. У него свои символы и свои теги в своем дереве каталогов. Если я переключаюсь на просмотр кода ядра для справки, то редактор уже ориентируется на проиндексированное ядро (в другой директории, не связанной иерархией с моим проектом). Как бы, может существовать несколько иерархий проектов и редактор будет искать базу тегов от текущего файла вверх своей по иерархии. И как найдет, так и покажет.

Возможно Ваш редактор работает не так, я не знаю, не пробовал. Но если Code Tree строится в редакторе, то редактор должен иметь доступ ко всем файлам кода на момент построения Code Tree. База тегов строится вне редактора вообще отдельной тулзой. Редактор запускается и пользователь ему говорит: — ты тут поищи в базе, где определен символ nlmsg_put, к примеру. Ок, говорит, редактор, на пару уровней выше вашего файла я нашел файл GTAGS, и из него мне стало ясно, что символ используется в файлах

global -v --result=grep --color=always --path-style=shorter --from-here=914:include/net/netlink.h -- nlmsg_put
crypto/crypto_user_base.c:163:	nlh = nlmsg_put(skb, NETLINK_CB(in_skb).portid, info->nlmsg_seq,
crypto/crypto_user_stat.c:274:	nlh = nlmsg_put(skb, NETLINK_CB(in_skb).portid, info->nlmsg_seq,
drivers/connector/connector.c:100:	nlh = nlmsg_put(skb, 0, msg->seq, NLMSG_DONE, size, 0);
drivers/infiniband/core/netlink.c:134:	*nlh = nlmsg_put(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), len, flags);
drivers/infiniband/core/nldev.c:1032:	nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq,
drivers/infiniband/core/nldev.c:1116:	nlh = nlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
drivers/infiniband/core/nldev.c:1176:	nlh = nlmsg_put(msg, 
.....

Вам какой файл открыть и на какой строке?

Исходная версия gns, :

Оно, это code tree, большое. Закачайте в редактор ядро линкукса и посмотрите, с какой скоростью это все будет работать. Прелесть тегов в том, что изначально у меня в редакторе открыто ну пять файлов, ну десять. А когда я ищу что-то по тегам, редактор открывает мне дополнительные буфера (фреймы, табы, окна, whatever) c файлами, где он этот тег нашел. И то, если ткну в соответствующею строку в окне поиска. Насколько я понимаю, Projrct Tree требует, что бы все файлы были открыты к моменту построения дерева. Опять же, у меня есть один проект — мой, типа пишу модуль ядра. У него свои символы и свои теги в своем дереве каталогов. Если я переключаюсь на просмотр кода ядра для справки, то редактор уже ориентируется на проиндексированное ядро (в другой директории, не связанной иерархией с моим проектом). Как бы, может существовать несколько иерархий проектов и редактор будет искать базу тегов от текущего файла вверх своей по иерархии. И как найдет, так и покажет.

Возможно Ваш редактор работает не так, я не знаю, не пробовал. Но если Code Tree строится в редакторе, то редактор должен иметь доступ ко всем файлам кода на момент построения Code Tree. База тегов строится вне редактора вообще отдельной тулзой. Редактор запускается и пользователь ему говорит: — ты тут поищи в базе, где определен символ nlmsg_put, к примеру. Ок, говорит, редактор, на пару уровней выше вашего файла я нашел файл GTAGS, и из него мне стало ясно, что символ используется в файлах

global -v --result=grep --color=always --path-style=shorter --from-here=914:include/net/netlink.h -- nlmsg_put
crypto/crypto_user_base.c:163:	nlh = nlmsg_put(skb, NETLINK_CB(in_skb).portid, info->nlmsg_seq,
crypto/crypto_user_stat.c:274:	nlh = nlmsg_put(skb, NETLINK_CB(in_skb).portid, info->nlmsg_seq,
drivers/connector/connector.c:100:	nlh = nlmsg_put(skb, 0, msg->seq, NLMSG_DONE, size, 0);
drivers/infiniband/core/netlink.c:134:	*nlh = nlmsg_put(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), len, flags);
drivers/infiniband/core/nldev.c:1032:	nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq,
drivers/infiniband/core/nldev.c:1116:	nlh = nlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq,
drivers/infiniband/core/nldev.c:1176:	nlh = nlmsg_put(msg, 
.....

Вам какой файл открыть и на какой строке?