我正在尝试使用 NppScripting 为 NotePad++ 编写插件 - 一个使用 javascript(特别是 JScript)编写插件的平台。
我想知道是否有一种方法(可能通过 ActiveXObject)可以异步监听端口(特别是 - 我正在尝试将 CSS-X-Fire 端口写入 NPP)。
我知道 .NET 通过 System.Net.Sockets 具有该功能,但我无法找到通过 JScript 访问它的方法。
有什么帮助吗?
我正在尝试使用 NppScripting 为 NotePad++ 编写插件 - 一个使用 javascript(特别是 JScript)编写插件的平台。
我想知道是否有一种方法(可能通过 ActiveXObject)可以异步监听端口(特别是 - 我正在尝试将 CSS-X-Fire 端口写入 NPP)。
我知道 .NET 通过 System.Net.Sockets 具有该功能,但我无法找到通过 JScript 访问它的方法。
有什么帮助吗?
如果我这样做,我会将 .NET 中的 Socket 服务器编写为独立的 EXE。如果我正确理解 CSS-X-Fire,它是 IntelliJ Idea 的一个插件,它监听来自 Firebug 的传出通信,然后适当地更新源文件。听起来比较简单。.NET 套接字服务器可以很容易地做到这一点。
然后,与其直接从套接字服务器向脚本环境公开第二个接口——比如 COM 对象或 COPYDATA 通道或类似的东西——我会使用文件系统进行通信。换句话说,在 NPP 中编写脚本来轮询文件系统文件以获取更新。当 .NET Socket 服务器收到一条消息“Firebug 刚刚更新了文件 X.css”时,.NET Socket 服务器可以将这些更新应用到文件系统文件,并将更改保存回文件系统。因为 Notepad++ 应用程序会轮询文件系统,所以它会看到更新的文件并重新加载它,获取那些保存的更改。您需要在 N++ 中智能地进行游标管理。
Emacs 对这类事情有一个“自动恢复模式”,因此 .NET CSS-X-Fire Socket 服务器可以开箱即用地与 emacs 一起工作——不需要额外的脚本。不确定 N++ 是否具有自动还原等效项。
我最终决定使用 Adobe AIR 来创建我的解决方案。它提供了一组惊人的 API,包括一组 Socket API。
你可以在这里查看我的解决方案