当前位置: 首页 > news >正文

sublime text插件开发

手工开发了一些ST的py插件,记录过程中遇到的一些问题。

ST3/ST4 begin_edit问题

报错:

begin_edit() missing 2 required positional arguments: 'edit_token' and 'cmd'

ST3时已经不能直接调view.begin_edit方法了,需要通过runCommand+TextCommand转一手,写法如下:

class ShowEnvVarsInternalCommand(sublime_plugin.TextCommand):def run(self, edit, input):self.view.set_read_only(False)self.view.insert(edit, 0, input)self.view.end_edit(edit)self.view.set_read_only(True)class ShowEnvVarsCommand(sublime_plugin.WindowCommand):def run(self):self.var_names = list(os.environ.keys())self.window.show_quick_panel(self.var_names, self.disp_var)def disp_var(self, index):if index != -1:var = self.var_names[index]str = '\n'.join(os.environ[var].split(';'))             output_view = self.window.create_output_panel("env_var")            self.window.run_command("show_panel", {"panel": "output.env_var"})# 这里在ST2里是直接调用output_view.begin_edit,然后对Edit对象做insert,这里改为调用output_view.run_command方法,把请求转给TextCommand,后者的run方法可以直接拿到Edit对象。output_view.run_command('show_env_vars_internal', {"input": str})self.window.focus_view(output_view)

sublime.set_timeout的用途

用于在工作线程里访问ST的界面,因只有主线程才能刷新ST界面,set_timeout相当于“工作线程向主线程发消息”。

exec命令

通过查看exec.py源码,得知:
exec是异步的,也就是说,ST主线程不会等待exec完成才返回,相反,它立刻返回,而exec进程的输出被异步(通过起线程的方式)的追加到output.exec窗口里。因此,当你run_command后立刻从output.exec里拿结果,只会得到空。
为何ST主线程不会等待呢?因为这是一个GUI程序,一旦主线程等待,界面就会僵死。

ST插件API说明

ST4的API文档

http://www.lryc.cn/news/418593.html

相关文章:

  • 【Linux网络】网络层协议:IP
  • 分布式接口文档聚合,Solon 是怎么做的?
  • 多尺度病理图像纹理特征作为肺腺癌预后预测的新指标|文献精读·24-08-09
  • RAG+Agent项目实践系列:基于本地菜谱知识库的大语言模型RAG+Agent的解决方案设计和实现
  • JupyterNotebook添加Anaconda中已有的虚拟环境
  • 利用vscode-icons-js在Vue3项目中实现文件图标展示
  • 某赛通电子文档安全管理系统 CDGAuthoriseTempletService1 SQL注入漏洞复现(XVE-2024-19611)
  • 做个一套C#面试题
  • 【ML】Pre-trained Language Models及其各种微调模型的实现细节和特点
  • YARN单机和集群环境部署教程
  • Android SurfaceFlinger——Vsync信号发送(五十二)
  • 零基础5分钟上手亚马逊云科技AWS核心云架构知识-用S3桶托管静态网页
  • YOLO:使用labelme进行图片数据标签制作,并转换为YOLO格式
  • 论文解读(15)-UrbanGPT
  • 大数据湖体系规划与建设方案(51页PPT)
  • 8月最新ChatGPT系统源码SparkAi系统,支持AI换脸+智能体GPTs应用+AI绘画+AI视频+文档分析
  • Linux知识复习第3期
  • 【独家原创】基于NRBO-Transformer多特征分类预测【24年新算法】 (多输入单输出)Matlab代码
  • Debezium日常分享系列之:Debezium 3.0.0.Alpha2 Released
  • SumatraPDF暗黑模式以及如何还原快捷键
  • LeetCode Medium|【300. 最长递增子序列】
  • jenkins自动化构建docker镜像并上传至harbor仓库
  • Java高级Day23-HashMap
  • 【学术会议征稿】第四届电气工程与计算机技术国际学术会议(ICEECT2024)
  • Spring boot tomcat使用自定义线程池监控线程数量告警
  • K8S子节点加入主节点访问MaterAPI报错:Unauthorized 401
  • C++ Poco服务端框架中JSON的使用
  • leetcode787. K 站中转内最便宜的航班——优先队列优化的Dijkstra算法+剪枝
  • 赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!
  • Nacos-配置中心