purebasic.info
http://purebasic.info/phpBB3ex/

Notepad++ в качестве IDE?
http://purebasic.info/phpBB3ex/viewtopic.php?f=1&t=4887
Страница 3 из 3

Автор:  AZJIO [ Сб апр 20, 2019 4:56 pm ]
Заголовок сообщения:  Re: Notepad++ в качестве IDE?

Добавление рег.выр. в 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++, чтобы изменения вступили в силу.

Автор:  bizdon [ Вс июн 09, 2019 3:01 pm ]
Заголовок сообщения:  Re: Notepad++ в качестве IDE?

наткнулся на плагин для npp, который помимо прочего делает навороченный автокомплит.
http://jcaillon.github.io/3P/#/home
в описании сказано, что написан без использования сцинтиллы, т.к. последняя тормозит если в автокомплите более 1000 строк и с этим ничего не поделать (связывались с автором сцинтиллы). В разделе сайта "Thanks" видны используемые части кода: база данных, окно вывода и т.п. Немного непривычно и наворочено, но работает быстро.. Это я к тому, что если писать ресурсоёмкий плагин, то функции сцинтиллы не помогут.

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