sieukrem / jn-npp-plugin

Plugin for Notepad++ allowing you to automate some tasks using JavaScript
https://github.com/sieukrem/jn-npp-plugin/wiki
110 stars 24 forks source link

js and vbs scripts from a similar project. #59

Closed trdm closed 5 years ago

trdm commented 6 years ago

There are many useful scripts written in js and vbs and working on the same technology as your plugin. You can adapt some of them, but the API of your IView differs slightly from the ITextDoc of a third-party project. And your plugin supports vbs - scripts? Here is his idl: https://github.com/trdm/alterplast/blob/master/openconf_src/interfaces.idl Specifically here: [propget, id (15), helpstring ("Document text block")] HRESULT Range ([in] long StartLine, [in, optional] VARIANT StartCol, [in, optional] VARIANT EndLine, [in, optional] VARIANT EndCol, [out, retval] BSTR pVal); [propput, id (15), helpstring ("Document text block")] HRESULT Range ([in] long StartLine, [in, optional] VARIANT StartCol, [in, optional] VARIANT EndLine, [in, optional] VARIANT EndCol, [in] BSTR newVal); [propget, id (16), helpstring ("Start line of the selected block")] HRESULT SelStartLine ([out, retval] long pVal); [propget, id (17), helpstring ("The initial column of the selected block")] HRESULT SelStartCol ([out, retval] long pVal); [propget, id (18), helpstring ("Final selection line")] HRESULT SelEndLine ([out, retval] long pVal); [propget, id (19), helpstring ("Final selection column")] HRESULT SelEndCol ([out, retval] long * pVal);

Specifically interesting scripts intsOLEGenerator.vbs Intellisence.vbs They can add Intellisence and code-complit to notepad ++ I can adapt these scripts to Notepad++ if миы support is provided, and if not, then rewrite them to javascript.

js and vbs скрипты из похожего проекта.

Имеется много полезных скриптов, написанных на js and vbs и работающих по той же технологии, что и ваш плагин. Можно адаптировать некоторые из них, однако API Вашего IView отличается немного от ITextDoc стороннего проекта. И ваш плагин поддерживает vbs - скрипты? Вот его idl: https://github.com/trdm/alterplast/blob/master/openconf_src/interfaces.idl Конкретно тут: [propget, id(15), helpstring("Блок текста документа")]HRESULT Range([in] long StartLine, [in, optional] VARIANT StartCol, [in, optional] VARIANT EndLine, [in, optional] VARIANT EndCol, [out, retval] BSTR pVal); [propput, id(15), helpstring("Блок текста документа")]HRESULT Range([in] long StartLine, [in, optional] VARIANT StartCol, [in, optional] VARIANT EndLine, [in, optional] VARIANT EndCol, [in] BSTR newVal); [propget, id(16), helpstring("Начальная строка выделенного блока")]HRESULT SelStartLine([out, retval] long pVal); [propget, id(17), helpstring("Начальная колонка выделенного блока")]HRESULT SelStartCol([out, retval] long pVal); [propget, id(18), helpstring("Конечная строка выделения")]HRESULT SelEndLine([out, retval] long pVal); [propget, id(19), helpstring("Конечная колонка выделения")]HRESULT SelEndCol([out, retval] long *pVal);

Конкретно интересны скрипты: intsOLEGenerator.vbs - https://github.com/trdm/alterplast/blob/master/OpenConf_Scripts/Intellisence/intsOLEGenerator.vbs Intellisence.vbs - https://github.com/trdm/alterplast/blob/master/OpenConf_Scripts/Intellisence/Intellisence.vbs Они могут добавить Intellisence и коде-комплит в notepad++ Я могу адаптировать эти скрипты для Нотепад++ если поддержку вбс обеспечите, а если нет, то переписать их на яваскрипт.

sieukrem commented 6 years ago
KOLANICH commented 6 years ago

WSH JS and VBS share the most of API. You should try to translate them into JS first. To create an object use new ActiveXObject("object.path")

trdm commented 6 years ago

Can you explain how intellisence for installed COM components would work? It is not realy comfortable when intellisence is implemented without respecting of context.

The Intellisence.vbs script calls the script intsOLEGenerator.vbs, which generates * .ints files. Look at what objects works intsOLEGenerator.vbs it works with the TLI.TLIApplication object.

trdm commented 6 years ago

Привет, нужна помощь со скриптом IIntellOle.js, а конкретно с объектом "MSXML2.DOMDocument" Не хватает у меня знаний в обрасти ActiveX. Базовая работа сделана, т.е. вспомогательные файлы генерятся, если поймает главный интерфейс, однако не все генерится хорошо. Если есть желание помочь, буду рад. Конкретно, конструкция: TLIApplication = new ActiveXObject("TLI.TLIApplication"); ProgID = 'MSXML2.DOMDocument'; Obj = new ActiveXObject(ProgID); interf = TLIApplication.InterfaceInfoFromObject(Obj); DefaultInterfase.Name = 'IXMLDOMNode';// А основной интерфейс это: "IXMLDOMDocument" ?!?!?! Заметил еще если генерить: var gWshNetwork = new ActiveXObject("WScript.Network"); Для 'WScript.Network' не ловится проперть UserName. Вот "пойманные": 0000 AddPrinterConnection(,,,,) 0000 AddWindowsPrinterConnection(,,) 0000 ComputerName 0000 EnumNetworkDrives() 0000 EnumPrinterConnections() 0000 MapNetworkDrive(,,,,) 0000 RemoveNetworkDrive(,,) 0000 RemovePrinterConnection(,,) 0000 SetDefaultPrinter() 0000 UserDomain

Я уже просто немного измучен этим скриптом и понимаю что мозгов немного не хватает. Ссылка на Npp со всеми скриптами: https://yadi.sk/d/2mme5HSJ3Rk8FD

sieukrem commented 6 years ago

Отвечу так https://youtu.be/fNBGnV_IDB4?t=399

Пока желания не совпадают с возможностями. но я могу попробовать ответить на конкретные вопросы.

KOLANICH commented 6 years ago

I advise you to use a pure js xml parser if you have some problems with it.

trdm commented 6 years ago

Попробую сам. Просто думаю что мне не хватает знаний по IDL ActiveX.