Sublime Text 本身不原生支持意图式 API,但可通过插件封装实现:定义高层语义命令(如 mark_function_as_reviewed)、基于LSP的上下文感知、声明式配置(JSON/YAML规则)、intent-aware快捷键与动态命令面板入口,使用户专注“做什么”而非“怎么做”。

Sublime Text 本身不原生支持“基于意图的 API”(Intent-based API),它提供的是一套面向操作的插件接口(如 sublime_plugin、View.run_command() 等),开发者需明确指定“如何做”——比如调用哪个命令、在什么位置插入文本、如何遍历 region。但你可以通过封装和抽象,在插件层面构建出接近“声明‘什么’而非‘如何’”的体验。
用高层语义封装底层命令
意图的本质是隐藏实现细节,暴露业务语义。例如,用户想“标记当前函数为已审核”,不必关心光标在哪、怎么找函数边界、如何写注释——你可定义一个 intent 命令:
-
定义 intent 接口:如
mark_function_as_reviewed,它内部自动检测当前光标所在的函数范围(用view.find_by_selector("entity.name.function")或 AST 解析) - 自动上下文感知:不依赖用户预选区域或手动定位,而是基于语法作用域、符号表或轻量解析推断“当前函数”“当前测试块”“配置节”等概念
- 幂等与状态管理:重复执行同一 intent 不产生副作用(如已标记则跳过,或切换状态),让用户放心“说一次”,无需担心执行逻辑
借助 declarative 配置降低意图表达门槛
让用户用 JSON/YAML 声明意图,比写 Python 插件更贴近“声明什么”。例如在 IntentRules.sublime-settings 中写:
{
"intent": "add_api_logging",
"when": { "selector": "source.python - string - comment", "has_symbol": "def " },
"apply": {
"before": ["import logging", "logger = logging.getLogger(__name__)"],
"inside": ["logger.debug('entering %s', __name__)"]
}
}登录后复制
你的插件监听保存/快捷键,匹配规则并自动注入——用户只描述“我要给函数加日志”,不写一行执行代码。
标签: api 意图 python sublime js json app 作用域 lsp
还木有评论哦,快来抢沙发吧~