Sublimetext3 修改或扩展项目的默认设置

Sublimetext3 修改或扩展项目的默认设置,sublimetext3,Sublimetext3,在SublimiteText3项目中,是否有方法修改或扩展而不是替换默认设置 具体来说,在项目中,我指定要包含在项目中的文件夹的路径。每个文件夹都有该文件夹独有的文件和目录,我想使用文件夹排除模式或文件排除模式;有关详细信息,请参阅文档 但据我所知,这些项目设置将替换而不是扩展默认设置。但是,我希望有一个附加到默认模式的项目设置,而不是替换它。这可能吗 表示我想做什么的伪代码: "folders": [ { "path": "c:\\dir1", "fol

在SublimiteText3项目中,是否有方法修改或扩展而不是替换默认设置

具体来说,在项目中,我指定要包含在项目中的文件夹的路径。每个文件夹都有该文件夹独有的文件和目录,我想使用
文件夹排除模式
文件排除模式
;有关详细信息,请参阅文档

但据我所知,这些项目设置将替换而不是扩展默认设置。但是,我希望有一个附加到默认模式的项目设置,而不是替换它。这可能吗

表示我想做什么的伪代码:

"folders":
[
    {
        "path": "c:\\dir1",
        "folder_exclude_patterns": default_folder_exclude_patterns + ["junk"]
    },
    {
        "path": "C:\\dir2"
        "folder_exclude_patterns": default_folder_exclude_patterns + ["old"]
    },
]

如果这是不可能的,那么我相信我唯一能轻松做到的就是复制默认设置并为每个文件夹项目复制它们。由于我有多个项目/文件夹,并且需要为文件排除、文件夹排除和二进制文件设置执行此操作,因此这将变得繁琐且难以维护。当然,这似乎是一个成熟的插件,但这不在我期待做的范围。(当然,如果其他人有这样的插件,我很乐意尝试一下!:-)

不幸的是,由于升华的设置方式,高优先级的设置取代了低优先级的设置,而不是补充它们。这是一件好事,因为许多设置是或-例如,如果您的用户设置有
“highlight\u line”:false
,而项目有
“highlight\u line”:true
,您会怎么做

插件应该能够做到这一点。包含
project\u data()
set\u project\u data()
方法,分别允许您检索和写入项目设置。您可以向项目中的每个文件夹添加一个
“more\u folder\u exclude\u patterns”
键,其中包含要添加到
首选项中默认设置的其他模式。升华设置
文件。然后,插件可以检查
“more”
键是否存在,读取两个数组,连接它们,并将结果写回
.sublime项目
文件,同时删除
“more”
键。最后,您可以设置一个事件监听器,以便在保存、加载新文件等任何时候运行插件

编辑 下面是一个工作示例:

导入升华
导入升华插件
从复制导入deepcopy
类ModifyExcludedFolderCommand(升华插件.WindowCommand):
def运行(自):
proj_data=self.window.project_data()#dict
原始项目数据=深度复制(项目数据)#供以后比较
设置=升华。加载设置(“首选项。升华设置”)
fep=settings.get(“文件夹排除模式”)#列表
对于项目数据中的文件夹[“文件夹”]:
尝试:
如果文件夹[“文件夹排除模式”]:
休息#如果f#e#p已经出现,我们的工作就完成了
除KeyError外:
pass#如果不存在,请转到mfep
尝试:
mfep=文件夹[“更多文件夹排除模式”]
新建fep=已排序(列表(集合(fep+mfep))#合并来自
#偏好和项目,
#使用
#一套。
文件夹[“文件夹排除模式”]=新建
del文件夹[“更多文件夹排除模式”]
除KeyError外:
pass#如果mfep不存在,只需移动到下一个文件夹
如果项目数据!=原始项目数据:
self.window.set\u项目数据(项目数据)
类UpdateProjectData(升华插件.EventListener):
def on_已激活(自我,查看):
window=view.window()
运行命令(“修改\u排除的\u文件夹”)

将文件另存为
Packages/User/modify\u excluded\u folders.py
(其中
Packages
是在选择
首选项->浏览软件包时打开的文件夹…
),并应立即生效。它将在每次激活视图时运行。它检查在当前
.sublime项目
文件中定义的每个文件夹中是否存在
“文件夹排除模式”
数组,如果找到,则假定一切正常并传递到下一个文件夹。如果未找到该数组,它将检查是否存在
“更多文件夹\u排除\u模式”
数组。如果找到,它将发挥其魔力,并将内容与您首选项(默认或用户)中现有的
“folder\u exclude\u patterns”
数组合并。然后,它将一个新的
“文件夹排除模式”
数组写入文件夹,并删除
“更多文件夹排除模式”
数组。最后,它检查是否有任何更改,如果有,它会将新数据写回
.sublime项目
文件。

如果你想让我尝试快速制作一个原型,请告诉我,我会看看我能做些什么。谢谢你的提示。我也发现了这个软件包,并提交了第一期。我当然会选择一个原型并尝试它(尽管这是我第一次尝试从源代码处尝试一个新的包,所以我可能需要一些帮助来开始)。谢谢@菲尔:没问题,我会看看我是否能把一些东西组合起来。@菲尔请看我上面的编辑,以获得一个工作示例。谢谢!我会尝试一下,然后再给你回复。