ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

钩子

作者: twolfson 全部

在常见事件钩子上运行Sublime命令(例如:on_new, on_post_save)。

标签 事件, 钩子

详细信息

安装

  • 总数 5K
  • Win 1K
  • Mac 2K
  • Linux 1K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0
Mac 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 1 0 0 0 0
Linux 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

自述文件

源代码
raw.​githubusercontent.​com

sublime-hooks

在常见事件钩子上运行 Sublime 命令(例如:on_newon_post_save)。

此工具是为了给其他 Sublime 插件提供事件级别的绑定。

我的用途是在保存时通过 request(via sublime-request)向服务器发送请求。结果是

"on_post_save_user": [
  {
    "command": "request",
    "args": {
      "open_args": ["http://localhost:7060/"]
    },
    "scope": "window"
  }
]

入门

安装

此包可在 Package Control 中的 hooks 下访问,这是一个允许轻松管理其他插件的 Sublime Text 插件。

如果您喜欢手动安装,可以通过以下命令在Sublime Text终端(ctrl+`)中安装脚本,该终端使用git clone

import os; path=sublime.packages_path(); (os.makedirs(path) if not os.path.exists(path) else None); window.run_command('exec', {'cmd': ['git', 'clone', 'https://github.com/twolfson/sublime-hooks', 'hooks'], 'working_dir': path})

可以通过“Package Control: Remove Package”通过命令框安装包,在Windows/Linux上按ctrl+shift+p,在Mac上按command+shift+p

创建一个新的钩子

在这个练习中,我们将创建一个在保存后选择全部文本的绑定。

钩子可以在用户项目语言级别添加。我们将添加一个用户级别的钩子。

要编辑用户设置,打开命令框,并选择“首选项:设置 - 用户”。

在打开的首选项中,为on_post_save_user创建一个以下值的新键值对

"on_post_save_user": [
  {
    "command": "select_all"
  }
]

然后,保存两次(一次保存设置,另一次触发插件)。

到此步骤,所有的文本都将被选择,表明钩子和命令已运行。

用户、项目和语言钩子的示例可以在下面找到。

文档

钩子存储在用户项目语言设置中。每个都期望一个字典列表。这些字典满足以下条件

  • command(必需),Sublime在列表中指定的scope通过run_command运行命令。
  • args(可选),传递给 . 的参数字典。与“键绑定”中的 args 相当。
  • scope(可选),表示在哪里运行 command 的字符串。默认情况下,命令在 view 中运行。其他选项是 windowapp,分别在 windowsublime 层次上运行。
"on_post_save_user": [
  {
    // Runs `request` command
    "command": "request",

    // Invokes `request` with `open_args=["http://...:7060/"]`
    "args": {
      "open_args": ["http://localhost:7060/"]
    },

    // Runs `request` via `window.run_command`
    "scope": "window"
  }
]

访问设置

通过命令面板中的“首选项:设置 - 用户”访问 User 设置。

通过菜单栏中的“项目 -> 编辑项目”访问 Project 设置。您必须处于已保存的项目中,否则此选项不可用。

通过“首选项 -> 设置 - 更多 -> 语法特定 - 用户”访问 Language 设置。这将为打开的文件中的语言打开特定的设置。

命名空间

钩子在 UserProjectLanguage 层次上是必需的。密钥将是 event_name 后跟其 _level

命名空间是 _user_project_language

演示目的

  • Project 层级的 on_new 钩子将是 on_new_project
  • Language 层级的 on_load 将是 on_load_language

事件

对于 Sublime Text 2 和 3,你可以访问以下事件

  • on_new
  • on_clone
  • on_load
  • on_close
  • on_pre_save
  • on_post_save
  • on_activated
  • on_deactivated

对于 Sublime Text 3,你可以访问

  • on_new_async
  • on_clone_async
  • on_load_async
  • on_pre_close
  • on_pre_save_async
  • on_post_save_async
  • on_activated_async
  • on_deactivated_async

每个钩子的文档可以在 Sublime Text 文档中找到

Sublime Text 2 - https://text.sublime.net.cn/docs/2/api_reference.html#sublime_plugin.EventListener

Sublime Text 3 - https://text.sublime.net.cn/docs/3/api_reference.html#sublime_plugin.EventListener

出于潜在的性能问题,排除了一些不在这些列表上的事件(例如 on_modifiedon_text_command)。

示例

User

在用户的 .sublime-settings 中定义 User 设置应处于顶层。这可以通过命令面板中的“首选项:设置 - 用户”或菜单中的“首选项 -> 设置 - 用户”访问。

// Inside Packages/User/Preferences.sublime-settings
{
  "ignored_packages": [
  // ...
  ],
  "on_post_save_user": [
    {
      "command": "select_all"
    }
  ]
}

Project

在当前 .sublime-project 中的 settings 下定义 Project 设置。这可以通过命令面板中的“项目:编辑”或菜单中的“项目 -> 编辑”访问。

// Inside my-project.sublime-project
{
  "folders": [
  // ...
  ],
  "settings": {
    "on_post_save_project": [
      {
        "command": "select_all"
      }
    ]
  }
}

Language

在语言 .sublime-settings 的顶层定义 Language 设置。这可以通过菜单中的“首选项 -> 设置 - 更多 -> 语法特定 - 用户”访问。

// Inside my-language.sublime-settings
{
  "extensions": [
  // ...
  ],
  "on_post_save_language": [
    {
      "command": "select_all"
    }
  ]
}

捐赠

通过 gittip 支持此项目和 twolfson 的其他项目。

Support via Gittip

Unlicense

自 2013 年 9 月 4 日起,Todd Wolfson 已经将此存储库及其内容释放到公共领域。

它已经发布在 UNLICENSE 下。