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转一手,写法如下:

python 复制代码
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文档

相关推荐
陈言必行30 分钟前
Unity 性能优化 之 编辑器创建资源优化( 工作流 | 场景 | 预制体)
unity·编辑器·游戏引擎
CAE虚拟与现实8 小时前
VSCode中的下载VSIX是指什么?
ide·vscode·编辑器
CAE虚拟与现实11 小时前
VSCode官方汉化包
ide·vscode·编辑器·vscode汉化
CAE虚拟与现实11 小时前
VSCode创建Python项目和运行py文件
ide·vscode·编辑器
患得患失94921 小时前
【前端】【高德地图WebJs】【知识体系搭建】面要素知识点——>多边形,圆形, 矩形,图形编辑器
前端·编辑器·高德地图·amap
网硕互联的小客服1 天前
如何解决Ubuntu下vi编辑器方向键变字母的问题?
编辑器
return(b,a%b);2 天前
VSCode 远程开发连接(glibc<2.28)
ide·vscode·编辑器
speop2 天前
vscode使用tmux技巧
ide·vscode·编辑器
人工干智能2 天前
建自己的Python项目仓库,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
python·编辑器·github
程序员三明治2 天前
Python编辑器的安装及配置(Pycharm、Jupyter的安装)从0带你配置,小土堆视频
python·pycharm·编辑器