使用 JXA 设置 BBEdit 插入点

Setting a BBEdit insertion point with JXA

我正在尝试将一些 Applescript (AS) 翻译成 Javascript (JXA) for BBedit。

敲掉一些锈迹是一件有趣的小事,但我很难过。 使用 AS 我可以在 BBEdit 文档中设置一个插入点;

tell application "BBEdit"
    activate
    tell text 1 of window 1
        select insertion point before line 40
    end tell
end tell

谈到 JXA,我完全被难住了。我一直在 line 对象中四处寻找,但找不到 insertsionPoint 属性.

您可以像这样访问 selection 属性;

currentLine = bbedit.selection().startline().

但它是只读的。所以我认为如果你想设置一个 select 离子或插入点,你需要访问那个 select 方法。我不知道如何,或者如果你可以使用 JXA。

有人知道如何使用 JXA 设置 BBEdit 插入点 and/or selection 吗? 谢谢

JXA 不实现插入引用形式 (before/after/beginning/end)。相对 (previous…/next…) 和范围 (from…to…) 说明符也很乏味,过滤器 (whose…) 子句也很糟糕。许多重要的东西在 JXA 的 AS 中断中工作得很好:就像 Apple 早期的 Scripting Bridge API,JXA 在交付时是半生不熟的,并立即被遗弃。

像这样废话就是我推荐坚持使用 AppleScript 的原因。该语言可能很糟糕,但它是唯一 [勉强] 支持的选项,它实际上正确地实现了 Apple 事件。通常我建议通过 AppleScript-ObjC 桥从其他语言调用 AppleScript 作为最简单的解决方案,但 Apple 在 10.13 中也设法打破了这一点。

(如果你喜欢危险的生活,NodeAutomation 为 Node.js 提供了完整的 Apple 事件支持,但是随着 Apple 放弃 AppleScript 自动化,我不想浪费任何人的时间来推广或支持它, 所以买者自负。)