OberonCore
https://forum.oberoncore.ru/

Notepad++ Plugins на XDS Oberon
https://forum.oberoncore.ru/viewtopic.php?f=30&t=1037
Страница 1 из 1

Автор:  Александр Ильин [ Пятница, 20 Июнь, 2008 13:53 ]
Заголовок сообщения:  Notepad++ Plugins на XDS Oberon

Меня тут недавно приняли в группу разработчиков проекта "Notepad++ Plugins" на SourceForge, что позволило мне выложить для всеобщего пользования пару плагинчиков. Естественно, с исходниками. Плагины написаны на XDS Oberon (в редакторе Notepad++ : ) ).

ScrollPastEOF v.1.0 - разрешает прокручивать документ дальше конца файла на одну страницу. По умолчанию эта полезная возможность в Notepad++ отключена, и для её включения не предусмотрено никакого интерфейса. Добавлением данного плагина прокрутка включается.

WebEdit v.1.2 - небольшой плагин, конфигурируемый через ini-файл. Добавляет возможность "обёртывать" выделенный текст произвольными строками. Например, так:
"Hello, world!" -> "<p>Hello, world!</p>"
При этом не используется буфер обмена, не снимается выделение и сохраняется положение курсора, так что можно производить несколько "обёртываний" подряд.

Оба плагина, естественно, поставляются с исходными текстами и документацией на английском языке, а также содержат ссылки на компилятор XDS и книги Вирта на EuroProg.ru : )

Плагин ScrollPastEOF интересен тем, что использует модифицированный шаблон линковки (xc.tem). В данном шаблоне добавлена опция для отключения линковки рантайм-библиотеки, что позволяет создавать исполнимые модули (exe, dll) размером от 1.5 Кб. Правда, это накладывает определённые ограничения: нельзя пользоваться динамической памятью и работать с массивами, приложение должно состоять только из одного модуля (не считая SYSTEM, Windows и т.п.) и т.д. Рантайм-библиотека XDS имеет размер около 36 Кб, ScrollPastEOF.dll месте с ресурсом VersionInformation - 5.5 Кб.

WebEdit - это несколько более продвинутый плагин. В комплекте с ним идут модули NotepadPP и Scintilla, предоставляющие интерфейс к приложению и текстовому редактору соответственно. Оба модуля написаны вручную и по мере необходимости, так что основное там есть, а остальное видно, как добавить.

Страничка для скачивания плагинов: http://sourceforge.net/project/showfile ... _id=189927

PS: Notepad++ нормально работает под Wine.

Автор:  Sergo [ Понедельник, 23 Июнь, 2008 22:29 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Симпатичный редактор. Если бы его удалось "поженить" с компилятором XDS (как это можно сделать в MultiEdit-е), было бы здорово. Правда, вложенные комментарии в стиле Оберона он раскрашивает неправильно :)

Автор:  Александр Ильин [ Понедельник, 23 Июнь, 2008 22:41 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Sergo писал(а):
Симпатичный редактор. Если бы его удалось "поженить" с компилятором XDS (как это можно сделать в MultiEdit-е), было бы здорово.
А что там, в MutliEdit-е? Я им не пользовался. Опишите, если не трудно, а то я интеграцию компилятора уже начал делать потихоньку.
Sergo писал(а):
Правда, вложенные комментарии в стиле Оберона он раскрашивает неправильно :)
Надо Lexer написать для Scintilla. У меня в планах это есть, надо только пример стороннего лексера найти, а то по документации не совсем ясно. Сам разбор проще пареной репы, вопрос как лексер из плагина подключить.

Автор:  Sergo [ Вторник, 24 Июнь, 2008 17:00 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Александр Ильин писал(а):
Sergo писал(а):
Симпатичный редактор. Если бы его удалось "поженить" с компилятором XDS (как это можно сделать в MultiEdit-е), было бы здорово.
А что там, в MutliEdit-е? Я им не пользовался. Опишите, если не трудно, а то я интеграцию компилятора уже начал делать потихоньку.


Я его тоже не использую, знаком с ним только по документации.
В MultiEdit-е есть возможность парсить список ошибок и предупреждений, выдаваемых компилятором, и указывать в тексте программы места, где эти ошибки сделаны. Парсинг осуществляется регулярными выражениями, задаваемыми в специальном диалоге. Естественно, ошибки и предупреждения можно фильтровать.
Документацию можно скачать тут: http://www.multieditsoftware.com/ME2k6_Manual/ME2k6.pdf

Судя по описанию, очень мощная вещь. После настройки можно делать почти все, что и в любой нормальной IDE.

Автор:  Александр Ильин [ Вторник, 24 Июнь, 2008 18:42 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Sergo писал(а):
В MultiEdit-е есть возможность парсить список ошибок и предупреждений, выдаваемых компилятором, и указывать в тексте программы места, где эти ошибки сделаны. Парсинг осуществляется регулярными выражениями, задаваемыми в специальном диалоге.
Это уже умеет плагин NppExec. Фильтрует консольную выдачу регулярными выражениями, остаётся список ошибок, двойной щелчок по пункту списка открывает место в исходнике. Чего там не хватает - так это автоматического перехода к первой ошибке сразу после компиляции и поиска файла исходника за пределами текущего каталога.

Автор:  Sergo [ Среда, 25 Июнь, 2008 16:28 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Александр Ильин писал(а):
Чего там не хватает - так это [...] поиска файла исходника за пределами текущего каталога.

Да, есть такой неприятный момент. Можно открывать файлы в разных папках, если они находятся в текущем каталоге. Но стоит, скажем, сохранить изменения в одном из этих файлов, и текущим становится уже его каталог.

Кстати, если заставить компилятор выдавать полные имена файлов (не могу сообразить, как это сделать), то, возможно, этой проблемы не будет?

Автор:  Александр Ильин [ Среда, 25 Июнь, 2008 17:08 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Sergo писал(а):
Кстати, если заставить компилятор выдавать полные имена файлов (не могу сообразить, как это сделать), то, возможно, этой проблемы не будет?
Такой опции у компилятора я не видел. Можно сделать программу-обёртку, которая бы запускала компилятор, передавала ему все параметры из командной строки, перехватывала выдачу на консоль и дополняла имена файлов в сообщениях об ошибках. При соответствующих навыках это можно сделать, например, на Perl.

Автор:  Александр Ильин [ Среда, 25 Июнь, 2008 17:13 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Sergo писал(а):
Но стоит, скажем, сохранить изменения в одном из этих файлов, и текущим становится уже его каталог.
Насколько я понимаю, это опция: Settings - Preferences - MISC - Remember the last operation directory.

Автор:  Sergo [ Среда, 25 Июнь, 2008 20:11 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Александр Ильин писал(а):
Sergo писал(а):
Но стоит, скажем, сохранить изменения в одном из этих файлов, и текущим становится уже его каталог.
Насколько я понимаю, это опция: Settings - Preferences - MISC - Remember the last operation directory.

К сожалению, отключение этой опции проблему не решает - достаточно открыть новый файл, и его каталог становится текущим.
Действительно, похоже единственный выход - написать bat-файл, который будет запускать компилятор и фильтровать его выход, заменяя строки "src\..\" на полный путь. Программку для фильтрации написать не проблема. Для запуска bat-файла тоже использовать полный путь. Тогда по идее все должно работать нормально.

Автор:  Александр Ильин [ Среда, 06 Август, 2008 09:41 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Небольшой тизер ; ) разрабатываемого мною плагина Obide (Oberon IDE). Про условия распространения пока ничего сказать не могу, всё зависит от Штефана Метцелера (Amadeus IT Solutions), оплатившего моё время на разработку.
В настоящий момент заканчивается работа над версией 2.0, осталось добавить поддержку type-bound процедур.
Основные умения плагина: Autocompletion (AKA intellisense), Code Hints, навигация по исходнику (переход к объявлению идентификатора и обратно) и базовая - пока что очень базовая - интеграция компилятора. Первые два умения показаны на картинке достаточно полно. Как видно, корректно обрабатываются: переименование модулей, правила видимости элементов структур, наследование, именованные и безымянные типы, а так же локальные переменные, включая параметры процедур. В реализации использованы модули портируемого компилятора из системы Oberon (OPS - сканер, OPM - машинно-зависимые константы), которые без проблем заработали под XDS, подтвердив свою портируемость. Стандартный парсер не использовался намеренно, чтобы не запинаться о несущественные с точки зрения intellisense ошибки в исходниках.
При вызове функции плагина парсинг текущего модуля производится прямо из буфера Notepad++, так что сохранение файла не требуется, идёт работа с наиболее актуальными данными. Используемые модули по мере необходимости парсятся с жесткого диска.

Вложения:
Obide 2.0 demo.png
Obide 2.0 demo.png [ 55.5 КБ | Просмотров: 10271 ]

Автор:  Александр Ильин [ Воскресенье, 08 Ноябрь, 2009 19:05 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Версия 2.1.1 данного плагина была выпущена в составе сборки NO2 и доступна для скачивания всем желающим.

Автор:  Александр Ильин [ Четверг, 17 Декабрь, 2009 08:54 ]
Заголовок сообщения:  Re: Notepad++ Plugins на XDS Oberon

Александр Ильин писал(а):
Sergo писал(а):
Правда, вложенные комментарии в стиле Оберона он раскрашивает неправильно :)
Надо Lexer написать для Scintilla. У меня в планах это есть, надо только пример стороннего лексера найти, а то по документации не совсем ясно. Сам разбор проще пареной репы, вопрос как лексер из плагина подключить.
Вот и сделал потихоньку: viewtopic.php?p=39659#p39659

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/