Форум программистов, компьютерный форум, киберфорум
Наши страницы

Изыскания с автокомплитером и код-навигатором

Войти
Регистрация
Восстановить пароль
После безуспешных поисков соратников, я всё равно решил продолжить доработку некоторых opensource проектов.
В данный момент доработка ведется только над mc (Midnight commander)
Планируется добавить в его едитор функционал свойственный некоторым ide, а именно:
- добавить в completer проверку области видимости. работать это будет только для файлов C и C++
- добавить в completer поиск по подключенным хедерам. Это можно развивать до бесконечности, но для начала я это буду
делать для си, си++, питона и shell
- улучшить работу с etags. В настоящий момент я использую universal-ctags. Но часто непонятно это дефинишн или использование, так что тут буду что-нибудь придумывать, чтобы стало понятно))
- переход на таг должен не текущий открывать новый файл, и регистрировать его в списке открытых, а не просто делать
текущим
- сделать более удобным работу с несколькими одновременно открытыми файлами. mcedit умеет работать, и если настроить
горячие клавиши, это не так уж безобразно, но навигацию хочется улучшить 100%.

В самом mc мне нравиться практически всё, кроме того что командная строка (которая внизу) и шелл (который появляется после скрытия панелей) имеют разную историю. Хотелось бы, чтобы это была одна сессия.

Так же возможно я буду тут постить полезные (ИМХО) bash-скрипты и т.п.
Оценить эту запись

Изыскания с автокомплитером и код-навигатором

Запись от Skjame размещена 15.09.2017 в 17:37

Ух, даже не знаю с чего начать. Пожалуй, нужно было писать сюда почаще, потому что работы проделано очень много, и сейчас трудно уже вспомнить всё...С другой стороны, не хотелось писать, когда нет особых результатов и успехов.

Сейчас я уже дошёл до того момента, когда начисто забыл то чем занимался месяц назад, и чтобы избежать этого в будущем - опишу ситуацию.

Последнее время вся моя работа с MC была не сколько в его коде, сколько в исследованиях и пробах пера в написании библиотеки/тулзы для быстрого и умного code-completer'a и code-navigator'a. Как многие понимают - это не простая задача, даже если ограничиться С/C++. И идея отказаться от самописного г**на пришла довольно быстро. Но вот найти какую-то библиотеку или выдрать её откуда-нибудь не так-то просто оказалось.

Я довольно успешно смог выдрать из qtcreator'a плугин CPlusPlus, и даже заставить его работать, но тащить в MC qt-шный код не очень хотелось. Возможно, я ещё передумаю, и он там появиться. Но сейчас, это явно лишнее. Так что, не смотря на успех - вычёркиваем.

Сам MC использует файл TAGS, который генерируется программами ctags или etags, но как я писал в шапке блога, да и те кто читают явно знают, что работает он плохо, но зато поиски в гугле с запросом "ctags analogue token parser" вывел меня на следующий проект (эх, юзал бы я vim или emacs давно бы его знал) rtags github.

Суть данного проекта в двух словах: создаётся демон, который создает сокет и индексирует ваши проекты, и программа которая через этот сокет получает доступ к индексированной базе проектов.

Как же мне это понравилось. Clang-model для кода используется и в qtcreator'e, ну наконец нашёл возможность не писать код, и получить рабочий механизм... но все мы знаешь что так просто не бывает...

Я не буду описывать то количество финтов ушами, которое мне пришлось совершить, чтобы банально собрать rtags (дело в том что на компе уже были необходимые библиотеки и программы, но не тех версий...). Но вот для запуска индексации, нужен не просто путь к папке, а специальный файл compile_commands.json, который вроде как легко получается cmake'ом... А что делать если проект не cmake... Ладно, ставим bear заходим в каталог самого mc, делаем bear make. Он собирает mc, и заодно создаёт файл, мы его скармливаем rtags и готово, всё работает, из консоли запускаем rc -F <имя символа> и он выдаёт в stdout всё что нужно. Круто!!

СТОП!

А если у меня нет мэйкфайла...Что если я просто набросал ещё пару тройку классов, и там ещё нечего собирать, у меня не будет навигации в коде...блин... столько трудов и всё коту под...

И тут я осознал ещё одну вещь, зачем нам bear make и т.п. тулзы, когда файлик compile_commands.json элементарно просто выглядит, всё что нужно, это добавить возможность его создания. А для этого хорошо бы иметь файл описывающий наш проект (mcedit.project.file). Это будет и удобнее для настройки проекта в целом (флаги компилятора и т.п.) и решит проблему с созданием этого самого файла.

В качестве формата было решено использовать нечто подобное qt.pro файлов.

------

Итог записи: для навигации и автокомплишена решено использовать rtags. Необходимо создать меню настройки проекта и проработать его формат. Сменилось направление задач, но цель осталась прежней)

------
P.S. в дальнейшем буду писать короткие отчёты с более подробной инфой, чтобы не забывать, да и полезным может оказаться для кого-нибудь, чтобы не так много как мне пришлось прыгать с бубном.
Размещено в Без категории
Просмотров 474 Комментарии 0
Всего комментариев 0

Комментарии

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru