OberonCore
https://forum.oberoncore.ru/

Oberon-2 IDE на основе Notepad++
https://forum.oberoncore.ru/viewtopic.php?f=30&t=2027
Страница 2 из 7

Автор:  Info21 [ Воскресенье, 15 Ноябрь, 2009 01:20 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Александр Ильин писал(а):
Я бы более жёсткий синтаксис задал.
А я бы поддержал.

Автор:  Валерий Лаптев [ Воскресенье, 15 Ноябрь, 2009 09:06 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

И я тоже.

Автор:  Александр Ильин [ Понедельник, 16 Ноябрь, 2009 21:39 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Практически готов плагин для полноценной подсветки синтаксиса. Наконец-то поддерживаются вложенные комментарии. Более того, простенький парсер надёжно подсвечивает следующие ошибки синтаксиса:
- незакрытая строковая константа;
- попытка создать вложенную директиву компилятора;
- неизвестный символ - например, % или @ не могут встретиться в тексте программы, равно как и верхняя половина таблицы ASCII;
- дисбалланс (* и *), <* и *>. При этом комментарии внутри опций компилятора, как и прочие особые случаи, корректно обрабатываются в соответствии с ожиданиями компилятора XDS;
- ошибки форматирования числовых констант с полной поддержкой синтаксиса чисел с плавающей точкой, а также суффиксами "H" и "X".

Для установки разных цвето-шрифтовых атрибутов определено 9 стилей:
- Default - пользовательские идентификаторы, знаки препинания и прочий программный текст, не попадающий в остальные категории;
- Keyword - ключевые слова и стандартные идентификаторы, не входящие в следующие два стиля;
- Flow breakers - особо выделены слова, прерывающие поток выполнения: EXIT, HALT, RETURN (при желании можно задать цвет и шрифт, идентичные стилю Keyword);
- Unsafe - идентификатор SYSTEM;
- Number - числа: десятичные, шестнадцатиричные и с плавающей точкой;
- String - строковые '...{"}...', "...{'}..." и символьные константы (0X..0FFX и прочие шестнадцатиричные константы с суффиксом "X");
- Comment - комментарии блочные (*...*), в том числе с произвольным уровнем вложенности, и оконечные (от "--" до конца строки);
- Compiler option - опции компилятора <*...*>, используемые в XDS;
- Error - стиль для подсветки синтаксических ошибок.
Все стили настраиваются через стандартный диалог Settings - Style configurator.

Фолдинг пока не реализован, но никаких препятствий к этому нет.

Библиотека Amadeus не используется, поэтому, в отличие от Obide, исходники будут доступны вместе с первым выпуском. Однако, есть ложка дёгтя. Плагин FunctionList не работает с внешними лексерами. Соответственно, если выбрать Languages - Oberon-2, то список функций текущего модуля оказывается пуст. В этой связи ищу добровольца со знанием С++ для доработки FunctionList. Суть работы вот в чём:
1) скачать исходники и добиться успешной компиляции;
2) сделать так, чтобы при выборе внешнего лексера подгружались правила поиска функций для одноимённого user-defined языка. Другими словами, всё необходимое уже есть, надо только заставить правильно обработать один особый случай, создав "короткое замыкание" в нужном месте.

Вообще, суть FunctionList в том, что он предоставляет возможность задать набор регулярных выражений для поиска объявлений функций в исходном тексте. Каждый набор правил закреплён за одним из поддерживаемых языков программирования. Поддержка языков бывает трёх видов: 1) встроенная в текстовый редактор Scintilla (компонент, вокруг которого построен Notepad++), 2) добавленная средствами Notepad++ (в меню View - User-Defined Language...) и 3) добавленная плагином (external lexer по терминологии Scintilla). Как вариант, можно попробовать сделать один особый набор правил, который FunctionList активировал бы в случае, если текущий язык предоставлен плагином.

Есть желающие помочь?

Автор:  Ihor [ Понедельник, 16 Ноябрь, 2009 22:25 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

В версии 2 бета написано:
Цитата:
How to make parsing rules

This is not so easy to explain. At first you need to know how to work with RE
(Regular Expressions).
Open "Plugins->Function List->Language Parsing Rules...". You see a new dialog
to change/modify the rules. Here you can change for each language the rules.
To understand how does a parsing works, please have a review to the other
parsing rules and to the help dialog box. Open it by click on help within the
"Language Parsing Rules" box.
The tree can show at maximum one group with a set of currently one subgroups.
For example:

O INCLUDE
O CLASS
|-O Class name
| |-O ENUM
| | |-- Enum 1
| | '-- Enum 2
| '-O METHODE
| |-- Metohde 1
| '-- Methode 2

Therefore you only need to change the combo box in "Group Properties". Change
the subgroup combo box of CLASS to METHODE.

BTW: If you added your own User Defined Language you will also see the language
in the left list at bottom.


Может ничего и не надо делать?
1.2 скомпилировался.

Автор:  Александр Ильин [ Вторник, 17 Ноябрь, 2009 10:11 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Ihor писал(а):
1.2 скомпилировался.
Большое спасибо, что откликнулись!
Ihor писал(а):
Может ничего и не надо делать?
Я вчера целый день промаялся. Перепробовал альфу, бету, затем нашёл наиболее свежую версию. Сначала надеялся запустить на ANSI-версии Notepad++, потом стал пробовать Unicode. В общем, только сегодня выяснил, что FunctionList на самом деле поддерживает внешние лексеры, но его вводит в заблуждение настройка "Make language menu compact". Уж не знаю, какими хаками там одно к другому прикручено, но выход найден, список процедур отображается.

Теперь буду думать, придётся ли переходить на новую Unicode-версию Notepad++ или удастся остаться на старой.

Автор:  Ihor [ Вторник, 17 Ноябрь, 2009 15:29 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Что плохого в Unicode-версии?

Автор:  Александр Ильин [ Вторник, 17 Ноябрь, 2009 20:15 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Ihor писал(а):
Что плохого в Unicode-версии?
Я одним глазом слежу за форумом пользователей Notepad++. Там с тех пор как вышла Unicode-версия постоянно упоминаются разные (или одни и те же?) глюки с поиском в русскоязычных текстах. Например, сейчас вот в версии 5.5.1 Unicode ввёл "это русский тексст" и сделал поиск строки "СС" без учёта регистра.

Не находит. Соответственно, и поиск с заменой тоже не работает.

Смена кодировки документа (пробовал ANSI и UTF-8) не помогает.

Правда, сейчас проверил в ANSI версии - тоже не работает. Возможно, что это глюки Scintilla 2.0.1. Помню, мне приходилось его вручную "откатывать" на предыдущую версию после обновления Notepad++, так как при вводе вместо кириллицы появлялись какие-то странные символы.

Автор:  Александр Ильин [ Суббота, 19 Декабрь, 2009 23:59 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Info21 писал(а):
А на линуксе это работает?
Unix Installation

Автор:  Александр Ильин [ Вторник, 26 Январь, 2010 09:10 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Ihor писал(а):
В версии 2 бета написано:
Цитата:
BTW: If you added your own User Defined Language you will also see the language
in the left list at bottom.
Может ничего и не надо делать?
1.2 скомпилировался.
Все-таки что-то не так. Никак не могу заставить работать FunctionList последней версии с внешним лексером Oberon2Lexer в Notepad++ Unicode v5.6.4. В меню Languages язык Oberon-2 появляется, синтаксис нормально подсвечивается, но в диалоге настройки FunctionList язык Oberon-2 отсутствует.

То, что выше написано про Used-defined Language, - не про внешние лексеры (подключенные через плагины DLL), а про языки, созданные с помощью диалога View - User Define Dialog... Мне раньше показалось, что мой внешний лексер работает, но на самом деле у меня просто не был удалён одноимённый User-defined язык, и он иногда активировался из-за недоработок в Notepad++.

Так что запрос доработки FunctionList остаётся актуальным, без этого я не могу выпустить NO2 v0.2. Поскольку Oberon2Lexer существует и в ANSI, и в Unicode версиях, то и FunctionList устроит любой. Желательно, всё же работать с последней версией (ссылка на исходники дана выше).

Нужно добавить поддержку одного дополнительного языка. Это может быть язык "External", обозначающий любой внешний лексер (да, пусть поддерживается только один внешний лексер), либо "Default", применяющаяся всегда, когда для текущего языка не заданы правила (в заголовке окна последней версии FunctionList при этом пишется "Function List - No Rule Defined", вместо этого пусть будет "Function List - Default"). Подозреваю, что второй вариант проще, чем поиск и распознавание внешних лексеров.

Автор:  dizer [ Четверг, 04 Февраль, 2010 09:53 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Не понял компилятор xc прикручен к плагину или нет - не могу скомпилировать даже стандартный пример из каталога samles - ctrl+1 - пишет compiled successfully

Автор:  Александр Ильин [ Четверг, 04 Февраль, 2010 11:22 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

dizer писал(а):
Не понял компилятор xc прикручен к плагину или нет
Нет, в качестве компилятора вызывается make в каталоге текущего файла. Компиляция считается успешной, если в выдаче не обнаружено текста ошибок в формате XC.

Интеграция компилятора находится в состоянии proof-of-concept, т.е. сделан только некий минимум для демонстрации того, что она в принципе возможна. Для полноценной работы там ещё много нужно сделать.

Автор:  dizer [ Четверг, 04 Февраль, 2010 12:14 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Спасибо за ответ. я просмотрел все что есть на текущий момент относящееся ide oberona и все более склоняюсь к мысли о перспективности интеграции xdc компиллятора в netbeans - notepad даже с двумя плюсами при максимуме затраченных усилий будет увы только полумерой....

Автор:  Виктор О [ Четверг, 04 Февраль, 2010 12:35 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Не знаю netbeans, но мне бы хватило и notepad при наличии хорошей книжки и системы помощи. Почему, кстати, оберона нет в eclipse?

Автор:  Ihor [ Четверг, 04 Февраль, 2010 16:40 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Посмотрю как появится время.

Автор:  Александр Ильин [ Вторник, 23 Февраль, 2010 21:37 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Недавно вышел из беты FunctionList 2.1. Похоже, внешние лексеры поддерживаются! : ))
У меня тем временем уже есть заготовка фолдинга, надо несколько багов ещё отловить.
Так что намечается NO2 v0.2 примерно в течение месяца.

Автор:  Sergo [ Среда, 24 Февраль, 2010 00:02 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Ждем-с:) Кстати, первая версия NO2 работает как часы - каких-либо багов замечено не было.

Автор:  Александр Ильин [ Понедельник, 15 Март, 2010 23:10 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Александр Ильин писал(а):
импортированные модули ищутся в текущем каталоге текущего модуля, затем в следующих каталогах в указанном порядке: ..\A3, ..\Lib, ..\..\A3, ..\..\Lib, ..\..\Src. Это пока что не вынесено в настройки, а просто намертво зашито в плагин. Пока я был единственным пользователем, я реализовал поддержку нужной мне структуры проекта. Теперь ожидаю предложений, чтобы понять, как лучше сделать. То ли достаточно ли будет глобального Obide.ini, то ли нужен такой файл в каталоге каждого проекта, то ли обязательно нужно искать и разбирать xc.red.
Добавил чтение настроек из файла Notepad++\Plugins\Config\Obide.ini. Секция Globals, ключ lookup. По умолчанию = ".\;..\A3;..\Lib;..\..\A3;..\..\Lib;..\..\Src". Как видно, список путей указывается через точку с запятой. Пути указываются относительно текущего открытого файла.

Пока что решил остановиться на глобальной настройке. Искать и суммировать пути по всем *.prj и xc.red мне что-то не улыбается, тем более, что проектов в одном каталоге может быть несколько, - поди разберись, к какому из них относится текущий файл.

Ещё сегодня добавил Code Hint для идентификатора модуля: выводится имя модуля (в случае псевдонима бывает полезно) и полное имя файла, где плагин нашёл исходник данного модуля (будет полезно для отладки списка путей) либо сообщение, что файл не найден. В последнем случае также выводится значение параметра Global.lookup, т.е. список относительных путей для поиска.

Автор:  Александр Ильин [ Суббота, 20 Март, 2010 20:37 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Доступен для скачивания плагин Obide (Oberon IDE) v2.2. Что нового:
- Добавлена поддержка Unicode-версии Notepad++.
- Добавлена подсказка для модулей: полное имя и полный путь к файлу.
- Пути поиска модулей загружаются из файла Obide.ini, если он есть.
- Пункт меню "Go to Definition" переименован в "Go to Declaration".
- Если при попытке перейти к объявлению модуля не удаётся найти файл, то выводится соответствующее сообщение, в котором указывается список путей поиска.
- Исправлен формат ресурса Version Information dll-файлов.
- Версия плагина выведена в заголовок окна About.

Ссылка для скачивания: http://downloads.sourceforge.net/projec ... .v.2.2.zip
Описание и история изменений: http://downloads.sourceforge.net/projec ... .v.2.2.txt

Автор:  Sergo [ Суббота, 20 Март, 2010 23:00 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Огромное спасибо! Вроде все нормально работает, кроме компиляции по CTRL+1. Пишет, что "compiled successfully", даже для текста с ошибками. Пока не разбирался, в чем тут дело. Правда, для меня это не критично - у меня Notepad уже интегрирован с компилятором, хотя и топорно.

Автор:  Александр Ильин [ Суббота, 20 Март, 2010 23:31 ]
Заголовок сообщения:  Re: Oberon-2 IDE на основе Notepad++

Sergo писал(а):
Огромное спасибо! Вроде все нормально работает, кроме компиляции по CTRL+1. Пишет, что "compiled successfully", даже для текста с ошибками. Пока не разбирался, в чем тут дело. Правда, для меня это не критично - у меня Notepad уже интегрирован с компилятором, хотя и топорно.

Команда компиляции устроена просто. В каталоге текущего файла производится попытка запустить программу "make" (предполагается, что она где-то есть среди путей в переменной окружения PATH). Далее, если в выдаче не обнаруживается ошибок компилятора XDS, то выводится сообщение "Compiled successfully". Даже в том случае, если произошли другие ошибки и сам make отработать не смог.

Я обычно компилирую в соседнем окне cmd.exe, либо - редко - в консоли плагина NppExec. Редко - потому что места экранного жалко всё время держать его открытым.

Вообще, надо бы убрать, наверное, эту "компиляцию". Тем более, что в новых версиях Notepad++ Ctrl+1 уже используется для чего-то другого. Основная причина, по которой компиляция не развивается, - это то, что на время ожидания завершения работы компилятора основной процесс Notepad++ замораживается, а это совсем не красиво с точки зрения пользователя, да и не удобно. Надо многопоточность вводить, а я этим совсем в XDS не занимался. Пожалуй, в следующей версии уберу, чтобы никого не смущать.

А вы используете make вообще? Какая у вас интеграция компилятора?

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