gpt4 book ai didi

sublimetext3 - "view.window().run_command"和 "view.run_command"的区别

转载 作者:行者123 更新时间:2023-12-03 13:34:55 25 4
gpt4 key购买 nike

view.window().run_command(...)之间的实际区别是什么?和 view.run_command(...) ?

这是同一个插件的两个版本,有两个小改动:

(它会在保存时将制表符转换为空格。您需要在首选项中使用 "expand_tabs_on_save": true)。

一:

# https://coderwall.com/p/zvyg7a/convert-tabs-to-spaces-on-file-save
import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
def on_pre_save(self, view):
if view.settings().get('expand_tabs_on_save') == 1:
view.window().run_command('expand_tabs')

二:
# https://github.com/bubenkoff/ExpandTabsOnSave-SublimeText
import sublime_plugin # <---------- `sublime` and `os` removed

class ExpandTabsOnSave(sublime_plugin.EventListener):
def on_pre_save(self, view):
if view.settings().get('expand_tabs_on_save') == 1:
view.run_command('expand_tabs') # <--------- `window()` removed

通过这些变化,它的行为发生了什么变化?

最佳答案

在 Sublime Text 中,可以定义命令以在 Application 处运行。级别( ApplicationCommand ),一个 Window级别 ( WindowCommand ) 或 View级别 ( TextCommand )。

通常只有 TextCommand s 修改缓冲区或仅影响当前缓冲区的设置,WindowCommand s 当前窗口布局或其他相关设置,以及 ApplicationCommand全局偏好等。

根据我的经验,执行 WindowCommandView对象什么都不做。例子:

view.run_command('set_layout', {"cells": [[0, 0, 1, 1], [1, 0, 2, 1]], "cols": [0.0, 0.5, 1.0], "rows": [0.0, 1.0]})

But executing a TextCommand on a Window object implicitly targets that window's currently active view.从 ST 控制台执行时,会影响 ST 控制台的输入文本区域。
window.run_command('insert', { 'characters': 'testing123' })

因此,答案是根据命令的类型以及 View 是否存在差异。您要执行的命令是否处于事件状态。

import方面s 删除,没有任何影响,因为插件中没有使用这些导入。

关于sublimetext3 - "view.window().run_command"和 "view.run_command"的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com