Sublime构建基于意图的API(Intent-based API)_让用户声明“什么”而非“如何”

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

Sublime构建基于意图的API(Intent-based API)_让用户声明“什么”而非“如何”-第1张图片-佛山资讯网

Sublime Text 本身不原生支持“基于意图的 API”(Intent-based API),它提供的是一套面向操作的插件接口(如 sublime_pluginView.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

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~