Mailsmith发送现在的菜单主要防御

Mailsmith最重要的魅力之一是它的文本编辑功能与BBEdit非常相似他们看起来相似,他们觉得相似,同样的脚本。

仅因为这个原因,我一直在使用Mailsmith自从版本1998年1.0出货Mailsmith 1.0在邮箱中存储邮件方面速度缓慢,而且缺少许多功能“1.0”软件往往就是这样但其BBEdit-like文本编辑功能都其可取之处。

但是,虽然类似的编辑,他们并不完全相同文本文件编辑器和电子邮件客户端之间必然存在某些差异在过去的五年里,有几次这样的差异,就是菜单键快捷键Cmd-E。

在BBEdit中,Cmd-E绑定到搜索→输入搜索字符串如果在前窗口中选择一些文本,然后调用Enter Search String,则所选文本将成为“查找”对话框的“搜索”字段中的文本因此,您可以使用此命令输入搜索字符串,然后使用Find Again或Replace All等命令,而无需实际打开“查找”对话框本身。

在Mailsmith中,Cmd-E绑定到消息→立即发送。

Do you see how this could be a problem? I’m writing in Mailsmith; I select a word; I hit Cmd-E with the intention of entering a search string — but他妈的通过点击Cmd-E,我只是在完成之前发送了消息。

这很少发生在我身上,我说也许每年两到三次但是近六年来我一年两三次发生这种情况这不是灾难,但令人尴尬的是我想找到一种方法来阻止它再次发生。

BBEdit和Mailsmith都允许您自定义菜单键,但我不想更改这些快捷方式自BBEdit存在之前,Cmd-E一直是Mac文本编辑器中输入搜索字符串的标准快捷方式,它仍然是事实上的标准快捷方式(它甚至在像Xcode和SubEthaEdit这样的新编辑器中得到支持,尽管他们调用命令“Use Selection for Find”;我认为“输入搜索字符串”是一个更好的名称,因为它使用Cmd-E快捷方式有助于记忆。)

邮件客户端的Send命令没有标准的快捷方式,但Cmd-E和任何一个一样快捷显而易见的捷径是Cmd-S,但当然这是为Save保留的(Even if your app doesn’t actually save or print anything, you should never reappropriate deeply ingrained shortcuts like Cmd-S or Cmd-P.) Cmd-E is certainly a better shortcut for sending a message than Apple Mail’s contorted Shift-Cmd-DEudora使用Cmd-E发送,这使得它尽可能接近一个既定标准Mac的电子邮件客户端,你会得到。

问题不在于捷径本身 - 事实上我有两个肌肉记忆当我在Mailsmith中击中Cmd-E时,99.9%的时间,我确实想要发送当前消息我想要防范的是,当我在Mailsmith中命中Cmd-E时,有一次是为了调用Enter Search String。

菜单脚本解决方案

上个月,我终于找到了一个解决方案:我可以将菜单脚本附加到Mailsmith的Send Now命令,并在脚本中尝试检测是否在调用Enter Search String时调用了它。

要将菜单脚本附加到Mailsmith菜单命令,请将脚本保存在Mailsmith支持文件夹内的Menu Scripts文件夹中(BBEdit也一样。)脚本的名称必须在表单中MENU_NAME•COMMAND_NAME; so in this case, the name will be “Message•Send Now”.

The question is, how can I detect when I’ve invoked this command with the intention of entering a search string? Well, to enter a search string, you need to select some text first但是当我真的准备发送消息时,我几乎从未在消息窗口中进行选择 - 只是一个闪烁的插入点。

这是脚本应该如何工作的想法:

  • When “Send Now” is invoked, check to see if there is a range of selected text in the current message window.

    • If not, tell Mailsmith to go ahead and send the message, as usual.

    • 如果有a text selection, display a confirmation dialog to ask if I really want to send the message.

这是脚本:

on menuselect()
  tell application "Mailsmith"
    tell message window 1
      if (selection as text) is not "" then
        try
          display dialog ¬
            "Are you sure you want to send this message?" buttons ¬
            {"Cancel", "Send"} default button 2
        on error
          -- User hit Cancel; tell Mailsmith not to proceed
          -- with sending the message:
          return true
        end try

        -- User hit Send, so tell Mailsmith to send the message:
        return false

      end if
    end tell
  end tell
end menuselect

如果确认对话框除了“发送”和“取消”按钮之外还提供“输入搜索字符串”按钮,那将是很好的,但Mailsmith的搜索字符串属性是AppleScript的只读属性。

诚然,这是一个深奥的但它已经彻底解决了我五年来遭遇的一个罕见但非常烦人的问题在我已经有了这个脚本的两个月里,它已经让我免于过早地发送一次消息,而且当我真正想要发送消息时它从未妨碍过我。

更新: 迈克尔·蔡写这个脚本的一个版本能够如果有文本选择,请输入搜索字符串 - 使用Mac OS X新推出的GUI脚本干净的把戏。

以前: 48小时
下一个: 真的