我试图翻译一些苹果脚本(AS)到Javascript(JXA)的BBedit。
这是一个有趣的小事情敲一些生 rust 了,但我难倒了。用AS我可以设置一个插入点到BBEdit文档这样;
tell application "BBEdit"
activate
tell text 1 of window 1
select insertion point before line 40
end tell
end tell
当谈到JXA时,我完全被难倒了。我已经在行对象中四处寻找,但是我找不到insertsionPoint属性。
您可以按如下方式访问选择属性;
currentLine = bbedit.selection().startline().
但是它是只读的。所以我认为如果你想设置一个选择或者插入点,你需要访问那个select方法。我不知道怎么做,或者你是否可以使用JXA。
有谁知道如何用JXA设置BBEdit插入点和/或选择吗?谢谢。
2条答案
按热度按时间eit6fx6z1#
JXA没有实现插入引用形式(
before
/after
/beginning
/end
)。相对(previous…
/next…
)和范围(from…to…
)说明符也被破坏了,过滤器(whose…
)子句也很糟糕。在JXA的AS中断中有很多重要的东西可以正常工作:像苹果早期的API一样,JXA在发布时是半生不熟的,很快就被抛弃了。这就是为什么我建议坚持使用AppleScript的原因。这种语言可能很糟糕,但它是唯一一个(勉强)支持的选项,可以正确地实现苹果事件。通常我会建议通过AppleScript-ObjC桥从其他语言调用AppleScript,这是最不糟糕的解决方案,但苹果在10.13中也成功地打破了这一点。
(If你喜欢危险的生活,NodeAutomation为Node.js提供了不间断的苹果事件支持,但是随着苹果放弃AppleScript自动化,我不想浪费任何人的时间来推广或支持它,所以请注意。)
btxsgosb2#
下面是一个使用Javascript(JXA)作为BBedit插入点对象和select方法的例子。BBEdit看起来确实可以与JXA一起工作,但是BBEdit中绝对没有关于JXA的文档,网上的信息也很少。下面是我花了几个小时的试验和错误后得出的一些代码。所以我希望它能有所帮助。