purebasic.info

PureBasic forum
Текущее время: Вс окт 20, 2019 9:13 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Notepad++ в качестве IDE?
СообщениеДобавлено: Сб апр 20, 2019 4:56 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 503
Благодарил (а): 34 раз.
Поблагодарили: 58 раз.
Пункты репутации: 0
Добавление рег.выр. в functionList.xml, чтобы был список функций и прыжок к ним. Подробнее тут
Это нужно добавить где то в 103 строке, ну то есть в конец списка однотипных данных, главное во внутрь тегов associationMap.
Код:
1
2
3
4
5
<association id=    "purebasic_function"      userDefinedLangName="PureBasic" />
<association id=    "purebasic_function"      langID="68"  />
<association id=    "purebasic_function"      ext=".pb"  />
<association id=    "purebasic_function"      ext=".pbi"  />
<association id=    "purebasic_function"      ext=".pbf"  />



Это можно добавить в конец файла после последнего < / parser>, перед тегом < / parsers>. Структура там очевидна, просто воткнуть к существующим парсерам ещё один парсер.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<parser
displayName="PureBasic"
id         ="purebasic_function"
commentExpr="(?x)(?m-s:^\h*;.*?$)  # !Single line comment"
>
        <classRange
                mainExpr    ="(?x)(?mi)^\h*Module\h+\K[A-Za-z_]\w*\s+.+?(?=EndModule)"
        >
                <className>
                        <nameExpr expr="\w+" />
                </className>
                        <function
                                mainExpr="(?x)(?mi)^\h*(?:Procedure[CDL$]{0,5}?(?:\h*\.[abcdfilqsuw])?\K|Macro)\h+[A-Za-z_]\w*\h*(?=\()"
                        >
                                <functionName>
                                        <funcNameExpr expr="[\w\h.$]+" />
                                </functionName>
                        </function>
        </classRange>
        <function
                mainExpr="(?x)(?mi)^\h*(?:Procedure[CDL$]{0,5}?(?:\h*\.[abcdfilqsuw])?\K|Macro)\h+[A-Za-z_]\w*\h*(?=\()"
        >
                <functionName>
                        <nameExpr expr="[\w\h.$]+"   />
                </functionName>
        </function>
</parser>



Немного описания:
Здесь id="purebasic_function" ссылается на такую же запись парсера который будет использоваться
userDefinedLangName="PureBasic" - означает что у вас есть собственный синтаксис сделанный с помощью UDL и названый PureBasic. Если его нет то скопируйте с той же темы или возьмите мой. Для перестраховки я добавил строку с ext=".pb" то есть связь по расширению (не работает), а не только по синтаксису, langID="68" связь с встроенным синтаксисом.

classRange определяет Модуль и все его функции помещаются в раскрываемый список. Разобрался как это сделать, посмотрев примеры. В нём указывается начало и конец модуля, а вложенные функции ищут процедуры внутри модуля.

Рег.выр в параметре commentExpr в принципе идеален, игнорирует поиск в комментариях, заданный рег.выром.
Рег.выр в параметре mainExpr собственно поиск процедуры, но и до кучи Macro, начиная от начала строки до скобок.
Рег.выр в параметре expr это поиск имени в предыдущей найденной строке процедуры, но после ключа \K, то есть если этот ключ поставить до Procedure, то рег.выр выведет всю строку, если перед типом возврата, то включая его, но я поставил чтобы получить только имя. Если Macro то выведет это слово.
При экспериментах нужно перезапускать Notepad++, чтобы изменения вступили в силу.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Notepad++ в качестве IDE?
СообщениеДобавлено: Вс июн 09, 2019 3:01 pm 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 171
Благодарил (а): 110 раз.
Поблагодарили: 5 раз.
Пункты репутации: 0
наткнулся на плагин для npp, который помимо прочего делает навороченный автокомплит.
http://jcaillon.github.io/3P/#/home
в описании сказано, что написан без использования сцинтиллы, т.к. последняя тормозит если в автокомплите более 1000 строк и с этим ничего не поделать (связывались с автором сцинтиллы). В разделе сайта "Thanks" видны используемые части кода: база данных, окно вывода и т.п. Немного непривычно и наворочено, но работает быстро.. Это я к тому, что если писать ресурсоёмкий плагин, то функции сцинтиллы не помогут.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB