Название: Плагин для Qt Creator 2.8.x Отправлено: Majestio от Ноября 24, 2013, 18:12 Не хватает кастомных средств форматирования кода в редакторе. Вот задумался накидать свой плагин, ну и по возможности его дорабатывать. Не имея навыков в написании плагинов, разыскал в сети достаточно неплохую статью (http://"http://habrahabr.ru/post/135289/"), в которой большинство моментов прописано. Но потом "благодать Божыя" закончилась - не могу найти документацию по использованию интерфейса Core::IEditor.
А нужно всего лишь сделать четыре действия: 1) Определить выделенный блок (если точнее - номер первой и последней строки выделения) 2) Получить текст в выделенном блоке (о5 же, если точнее - группе строк) 3) Модифицировать нужным мне образом 4) Закинуть обратно в редактор По пункту 4 - результирующих строк может быть как равно, так и меньше, и больше чем в "источнике". Буду рад любой полезной инфе, ссылкам, примерам. Название: Re: Плагин для Qt Creator 2.8.x Отправлено: kai666_73 от Ноября 25, 2013, 10:29 Есть абстрактный класс уровнем пониже
Код: class TEXTEDITOR_EXPORT ITextEditor : public Core::IEditor Непонятно чем существующие средства форматирования кода не устраивают... Название: Re: Плагин для Qt Creator 2.8.x Отправлено: Majestio от Ноября 25, 2013, 10:51 Есть абстрактный класс уровнем пониже А де про все эти классы прочитать?Код: class TEXTEDITOR_EXPORT ITextEditor : public Core::IEditor Непонятно чем существующие средства форматирования кода не устраивают... Пока хочется "научить" редактор выравнивать комментарии, которые в выделенном блоке стоят правее операторов. Например: Код: a = b + 1; // Хороший комментарий Название: Re: Плагин для Qt Creator 2.8.x Отправлено: alex312 от Ноября 25, 2013, 12:20 А де про все эти классы прочитать? Боюсь что кроме исходников другой документации нет.Название: Re: Плагин для Qt Creator 2.8.x Отправлено: kai666_73 от Ноября 25, 2013, 13:25 Это точно, разбираться в исходниках, другого пути нету.
По поводу Код: ITextEditor А смысл примерно такой: не всякий едитор текстовый, но если приведение типа к ITextEditor-у вернет не нулевой результат, то документ текстовый, и, собственно в распоряжении есть интерфейс для анализа и изменения текста. Кстати, возможно, понадобится проверка на предмет является ли содержимое едитора сишным кодом. Тогда надо анализировать его контекст, примерно так Код: if ( editor->context().contains(CppEditor::Constants::C_CPPEDITOR) ) {...} Название: Re: Плагин для Qt Creator 2.8.x Отправлено: Majestio от Ноября 25, 2013, 13:39 Пасип, спасибо за содействие! :)
Название: Re: Плагин для Qt Creator 2.8.x Отправлено: ViTech от Ноября 25, 2013, 14:22 Если нужно форматирование кода существующими решениями, то можно воспользоваться Uncrustify (http://uncrustify.sourceforge.net/). Можно настроить работу с ним в Qt Creator через "External Tools". На сочетание клавиш повесить форматирование всего файла или только выделенного фрагмента. Основная проблема: настроить файл конфигурации. Потому что настроек там очень много, и не всегда сразу понятно их влияние на конечный результат. Может пройти несколько дней, пока добьетесь нужного форматирования :).
Название: Re: Плагин для Qt Creator 2.8.x Отправлено: Majestio от Ноября 25, 2013, 14:35 Если нужно форматирование кода существующими решениями, то можно воспользоваться Uncrustify (http://uncrustify.sourceforge.net/). Можно настроить работу с ним в Qt Creator через "External Tools". На сочетание клавиш повесить форматирование всего файла или только выделенного фрагмента. Основная проблема: настроить файл конфигурации. Потому что настроек там очень много, и не всегда сразу понятно их влияние на конечный результат. Может пройти несколько дней, пока добьетесь нужного форматирования :). За совет - спасибо. Но не очень, если честно. Это как из пушки по воробьям :) Инструмент более мощный и более узконаправленный, чем мне надо. А то что я хочу, выполнять не будет. Там свой ограниченный функционал. Название: Re: Плагин для Qt Creator 2.8.x Отправлено: VPS от Ноября 27, 2013, 19:19 Пока хочется "научить" редактор выравнивать комментарии, которые в выделенном блоке стоят правее операторов. Можно сделать как-то так: Код: bool AlignCommentsPlugin::initialize(const QStringList &arguments, QString *errorString) П.С.: если нужен исходник, то могу выложить. Название: Re: Плагин для Qt Creator 2.8.x Отправлено: Majestio от Ноября 27, 2013, 19:42 Можно ещё сделать как-то так: Пасип конешно, но времени пока нет, просто ппц. Этот плагин - пока в моих мечтах. Если есть время на эксперименты, могу подкинуть идею (то, что я хотел бы наваять), попробую ее описать в виде типа-ТЗ: 1) Плагин вызывается по горячей клавише и выводит свое меню (клавиша Ыть) 2) Плагин вызывается и сразу выполняет одно из своих действий по горячей клавише (клавиша Ёоу) 3) То, что можно выполнять, записывается в текстовом файле настроек в виде: полный путь к программе, либо программа доступная из окружения::блок-строка?::аргументы в кавычках-разделенные запятыми 4) При вызове действия во временный файл сбрасывается блок, либо строки от N до M 5) Все это скармливается программе 6) Читается ее вывод в STDOUT 7) Заменяется в редакторе В качестве программы-обработчика вижу perl, первым аргументом - имя perl-скрипта, просто обожаю этот ЯП Все. Больше ничего не надо :) PS: "блок или строка" - просто указывает, работаем чисто с выделением, либо с совокупностью строк выделения, где N-первая строка блока, а М- последняя, это влияет на замену, иными словами - что после обработки заменяем |