编辑" ensure_newline_at_eof_on_save"的行为

时间:2015-10-16 18:05:46

标签: sublimetext2 sublimetext preference

Preferences.sublime-settings文件中,存在一个名为ensure_newline_at_eof_on_save的特定属性,我只想为非缩小文件激活它。将/min\.[^\.]+$/这样的正则表达式传递给它可以省略这些文件但这似乎不起作用。有什么建议吗?

修改

这是默认包文件夹下的trim_trailing_white_space.py文件的内容:

import sublime, sublime_plugin

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trailing_white_space = view.find_all("[\t ]+$")
            trailing_white_space.reverse()
            edit = view.begin_edit()
            for r in trailing_white_space:
                view.erase(edit, r)
            view.end_edit(edit)

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                edit = view.begin_edit()
                view.insert(edit, view.size(), "\n")
                view.end_edit(edit)

我已将第二个类更改为此实现:

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if ".min." not in view.name():
                if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                    edit = view.begin_edit()
                    view.insert(edit, view.size(), "\n")
                    view.end_edit(edit)

但它仍然不起作用。

1 个答案:

答案 0 :(得分:2)

这实际上很简单,你甚至不需要正则表达式。选择 Preferences -> Browse Packages... ,在操作系统的文件管理器中打开Sublime的Packages文件夹。进入Default文件夹,在Sublime中打开trim_trailing_white_space.py。第15行在文件中启动第三个类定义:

class EnsureNewlineAtEofCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if self.view.size() > 0 and self.view.substr(self.view.size() - 1) != '\n':
            self.view.insert(edit, self.view.size(), "\n")

删除整个班级(全部四行),然后粘贴以下内容:

class EnsureNewlineAtEofCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if ".min." not in self.view.name():
            if self.view.size() > 0 and self.view.substr(self.view.size() - 1) != '\n':
                self.view.insert(edit, self.view.size(), "\n")

我所做的是添加一项测试,以查看该视图的文件名是否包含.min.(例如,如foobar.min.jsbottom.div.min.css)。如果文件名 包含模式,则不会发生任何事情。如果,则会像平常一样添加换行符。

保存文件(更改文件名!),然后重新启动Sublime以使更改生效。

请注意,以上说明适用于Sublime Text 2. ST3没有直接提供的套餐,因此您需要从套餐管理中安装PackageResourceViewer,从中选择PackageResourceViewer: Open Resource命令选项板,然后选择Defaulttrim_trailing_white_space.py。如上所述编辑文件并保存,更改应立即生效,但您可能希望重新启动Sublime只是为了好玩。