创建时如何在新的BBEdit文档中添加文本?​​

时间:2018-12-29 02:45:35

标签: applescript attachment bbedit

我在Textwrangler / BBedit中打开了许多新文档,我希望它们始终将日期打印在顶部。我希望这是自动的,这样我就不必每次都运行脚本了。

我是BBEdit的新手,但我真的很喜欢Textwrangler,并且已经使用了很多年。我阅读了有关BB的一些文档,并且我认为将某些Applescript附加到事件上可能是可行的方法。但是,列出的事件似乎都不对,我真的不想在现有文档中添加日期。

我发现以下页面是一个很好的起点: http://bbeditextras.org/wiki/index.php?title=Scripting_and_Automation

我还从BB文档中找到了这些相关的钩子: 应用程序附件点

  • applicationDidFinishLaunching:在应用程序完成时调用 启动。
  • applicationShouldQuit:选择“退出”(或应用程序)时调用 出于其他任何原因收到“退出”事件)。
  • applicationDidQuit:在应用程序完成关闭并即将退出时调用。
  • applicationDidSwitchIn:在BBEdit出现在前台时调用。
  • applicationWillSwitchOut:在将BBEdit置于后台时调用。

文档附件点

  • documentDidOpen:在打开文档并准备使用时调用。 (由于BBEdit支持多种类型的文档,因此您的脚本应允许该参数为任何类型的文档。)
  • documentShouldClose:在应用程序准备关闭窗口时调用 文档。
  • documentDidClose:在应用程序关闭文档时调用。
  • documentShouldSave:在应用程序试图确定是否应保存给定文档时调用。
  • documentWillSave:在应用程序即将开始保存文件时调用 文献。 (请注意,只有在成功从 ‘documentShouldSave’。
  • documentDidSave:在成功保存文档后调用。
  • documentWillUnlock:在BBEdit将使文档可写时调用。 (例如,当您单击铅笔以解锁文档时)
  • documentDidUnlock:在BBEdit成功制作文档时调用 可写的。
  • documentWillLock:在BBEdit将文档设为只读时调用。
  • documentDidLock:在BBEdit成功将文档设为只读时调用。

不过,我不知道其中任何一个是否真的合适。我也可以尝试将一些脚本添加到启动文件夹中,但是我不确定该如何说,在所有打开的文档中添加一个日期。我以前从未做过applescript,所以这是一个反复试验的结果。

我已经尝试过自行运行此代码,并且可以正常运行:

tell application "BBEdit"
tell text window 1
select insertion point after (last character)
set selection to ((current date) as string)
end tell
end tell

关于如何使上述代码在文件创建时执行,我有些迷茫。

2 个答案:

答案 0 :(得分:0)

打开脚本编辑器并将以下代码粘贴到新的脚本文档中:

use BBEdit : application "BBEdit"
use scripting additions

on documentDidOpen(doc)
    set n to the doc's name
    set t to the doc's text as string

    if n does not start with "untitled text" then return
    if t's length > 0 then return

    set the contents of the doc to (the (current date) as text) ¬
        & linefeed & linefeed
end documentDidOpen

将其保存为类型script(扩展名.scpt),并将其命名为Document.documentDidOpen.scpt。直接将其保存,或随后将其移动到文件夹~/Library/Application Support/BBEdit/Attachment Scripts/中;如果该文件夹不存在,请创建它。

重新启动 BBEdit 应该没有必要,但也不会造成伤害。现在,无论何时创建新文档( 任何 类型的文档),都将以当前日期和时间为标题。

答案 1 :(得分:0)

尝试使用BBEdit的“将脚本附加到菜单项”功能(v11用户手册的第295页)。简而言之,如果您使用基于菜单/命令的名称将脚本保存到“菜单脚本”文件夹,则在选择该菜单项时将运行该脚本。因此,在您的情况下:

使用文件名“ New•Text Document”将下面的脚本保存到BBEdit的Menu Scripts文件夹中。

tell application "BBEdit"
    set cDate to ((current date) as text)
    make new document with properties {contents:cDate}
end tell

顺便说一句,通常可以避免在插入点上使用选择,例如:

tell document 1 of application "BBEdit" to set text of ¬
    first insertion point of text 1 to ((current date) as text)

在第二个“问题”场景中,您可能会以此循环浏览所有现有窗口,例如:

tell application "BBEdit"
    set tdCount to count of text documents
    repeat with i from 1 to tdCount
    set text of first insertion point of text 1 of ¬
        text document i to ((current date) as text) & linefeed
    end repeat
end tell