sublime text 3插件改造之添加从模版新增文件到指定目录

简介:以前使用ST2里面的Sublime NFFT插件比较顺手,最近安装了ST3,但是Sublime NFFT插件不支持ST3,就下载了SublimeTmpl从模版新建文件插件。在使用时,习惯在侧边栏右击目录-新建模版文件,然后保存在右击的目录下。但是SublimeTmpl插件不支持这功能,非常蛋疼。花了一点时间研究Sublime NFFT插件源码,对SublimeTmpl进行了改造,详情如下:

SublimeTmpl插件安装之后,首选项>浏览程序包>SublimeTmpl>sublime-tmpl.py,该文件修改如下(左侧是原来代码,右侧红色部分是修改之处):

修改之后完整代码:

  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 # + Python 3 support
  4 # + sublime text 3 support
  5 
  6 import sublime
  7 import sublime_plugin
  8 # import sys
  9 import os
 10 import glob
 11 import datetime
 12 import zipfile
 13 import re
 14 
 15 PACKAGE_NAME = 'SublimeTmpl'
 16 TMLP_DIR = 'templates'
 17 KEY_SYNTAX = 'syntax'
 18 KEY_FILE_EXT = 'extension'
 19 
 20 # st3: Installed Packages/xx.sublime-package
 21 BASE_PATH = os.path.abspath(os.path.dirname(__file__))
 22 PACKAGES_PATH = sublime.packages_path()  # for ST2
 23 
 24 # sys.path += [BASE_PATH]
 25 # sys.path.append(BASE_PATH)
 26 # import sys;print(sys.path)
 27 
 28 IS_GTE_ST3 = int(sublime.version()[0]) >= 3
 29 DISABLE_KEYMAP = None
 30 
 31 class SublimeTmplCommand(sublime_plugin.TextCommand):
 32 
 33     def run(self, edit, type='html', dirs=[]):
 34         view = self.view
 35         opts = self.get_settings(type)
 36         tmpl = self.get_code(type)
 37 
 38         # print('global', DISABLE_KEYMAP, IS_GTE_ST3);
 39         if DISABLE_KEYMAP:
 40             return False
 41 
 42         # print(KEY_SYNTAX in opts)
 43         self.tab = self.creat_tab(view)
 44 
 45         self.set_syntax(opts)
 46         self.set_code(tmpl, type, dirs)
 47 
 48     def get_settings(self, type=None):
 49         settings = sublime.load_settings(PACKAGE_NAME + '.sublime-settings')
 50 
 51         if not type:
 52             return settings
 53 
 54         # print(settings.get('html')['syntax'])
 55         opts = settings.get(type, [])
 56         # print(opts)
 57         return opts
 58 
 59     def open_file(self, path, mode='r'):
 60         fp = open(path, mode)
 61         code = fp.read()
 62         fp.close()
 63         return code
 64 
 65     def get_code(self, type):
 66         code = ''
 67         file_name = "%s.tmpl" % type
 68         isIOError = False
 69 
 70         if IS_GTE_ST3:
 71             tmpl_dir = 'Packages/' + PACKAGE_NAME + '/' + TMLP_DIR + '/'
 72             user_tmpl_dir = 'Packages/User/' + \
 73                 PACKAGE_NAME + '/' + TMLP_DIR + '/'
 74             # tmpl_dir = os.path.join('Packages', PACKAGE_NAME , TMLP_DIR)
 75         else:
 76             tmpl_dir = os.path.join(PACKAGES_PATH, PACKAGE_NAME, TMLP_DIR)
 77             user_tmpl_dir = os.path.join(
 78                 PACKAGES_PATH, 'User', PACKAGE_NAME, TMLP_DIR)
 79 
 80         self.user_tmpl_path = os.path.join(user_tmpl_dir, file_name)
 81         self.tmpl_path = os.path.join(tmpl_dir, file_name)
 82 
 83         if IS_GTE_ST3:
 84             try:
 85                 code = sublime.load_resource(self.user_tmpl_path)
 86             except IOError:
 87                 try:
 88                     code = sublime.load_resource(self.tmpl_path)
 89                 except IOError:
 90                     isIOError = True
 91         else:
 92             if os.path.isfile(self.user_tmpl_path):
 93                 code = self.open_file(self.user_tmpl_path)
 94             elif os.path.isfile(self.tmpl_path):
 95                 code = self.open_file(self.tmpl_path)
 96             else:
 97                 isIOError = True
 98 
 99         # print(self.tmpl_path)
100         if isIOError:
101             sublime.message_dialog('[Warning] No such file: ' + self.tmpl_path
102                                    + ' or ' + self.user_tmpl_path)
103 
104         return self.format_tag(code)
105 
106     def format_tag(self, code):
107         code = code.replace('\r', '') # replace \r\n -> \n
108         # format
109         settings = self.get_settings()
110         format = settings.get('date_format', '%Y-%m-%d')
111         date = datetime.datetime.now().strftime(format)
112         if not IS_GTE_ST3:
113             code = code.decode('utf8') # for st2 && Chinese characters
114         code = code.replace('${date}', date)
115 
116         attr = settings.get('attr', {})
117         for key in attr:
118             code = code.replace('${%s}' % key, attr.get(key, ''))
119         return code
120 
121     def creat_tab(self, view):
122         win = view.window()
123         tab = win.new_file()
124         return tab
125 
126     def set_code(self, code, type, dirs):
127         tab = self.tab
128         tab.set_name('untitled.' + type)
129         # insert codes
130         tab.run_command('insert_snippet', {'contents': code})
131         if len(dirs) == 1:
132             tab.settings().set('default_dir', dirs[0])
133 
134     def set_syntax(self, opts):
135         v = self.tab
136         # syntax = self.view.settings().get('syntax') # from current file
137         syntax = opts[KEY_SYNTAX] if KEY_SYNTAX in opts else ''
138         # print(syntax) # tab.set_syntax_file('Packages/Diff/Diff.tmLanguage')
139         v.set_syntax_file(syntax)
140 
141         # print(opts[KEY_FILE_EXT])
142         if KEY_FILE_EXT in opts:
143             v.settings().set('default_extension', opts[KEY_FILE_EXT])
144 
145 class SublimeTmplEventListener(sublime_plugin.EventListener):
146     def on_query_context(self, view, key, operator, operand, match_all):
147         settings = sublime.load_settings(PACKAGE_NAME + '.sublime-settings')
148         disable_keymap_actions = settings.get('disable_keymap_actions', '')
149         # print ("key1: %s, %s" % (key, disable_keymap_actions))
150         global DISABLE_KEYMAP
151         DISABLE_KEYMAP = False;
152         if not key.startswith('sublime_tmpl.'):
153             return None
154         if not disable_keymap_actions: # no disabled actions
155             return True
156         elif disable_keymap_actions == 'all' or disable_keymap_actions == True: # disable all actions
157             DISABLE_KEYMAP = True;
158             return False
159         prefix, name = key.split('.')
160         ret = name not in re.split(r'\s*,\s*', disable_keymap_actions.strip())
161         # print(name, ret)
162         DISABLE_KEYMAP = True if not ret else False;
163         return ret
164 
165 def plugin_loaded():  # for ST3 >= 3016
166     # global PACKAGES_PATH
167     PACKAGES_PATH = sublime.packages_path()
168     TARGET_PATH = os.path.join(PACKAGES_PATH, PACKAGE_NAME)
169     # print(BASE_PATH, os.path.dirname(BASE_PATH))
170     # print(TARGET_PATH)
171 
172     # auto create custom_path
173     custom_path = os.path.join(PACKAGES_PATH, 'User', PACKAGE_NAME, TMLP_DIR)
174     # print(custom_path, os.path.isdir(custom_path))
175     if not os.path.isdir(custom_path):
176         os.makedirs(custom_path)
177 
178     # first run
179     if not os.path.isdir(TARGET_PATH):
180         os.makedirs(os.path.join(TARGET_PATH, TMLP_DIR))
181         # copy user files
182         tmpl_dir = TMLP_DIR + '/'
183         file_list = [
184             'Default.sublime-commands', 'Main.sublime-menu',
185             # if don't copy .py, ST3 throw: ImportError: No module named
186             'sublime-tmpl.py',
187             'README.md',
188             tmpl_dir + 'css.tmpl', tmpl_dir + 'html.tmpl',
189             tmpl_dir + 'js.tmpl', tmpl_dir + 'php.tmpl',
190             tmpl_dir + 'python.tmpl', tmpl_dir + 'ruby.tmpl',
191             tmpl_dir + 'xml.tmpl'
192         ]
193         try:
194             extract_zip_resource(BASE_PATH, file_list, TARGET_PATH)
195         except Exception as e:
196             print(e)
197 
198     # old: *.user.tmpl compatible fix
199     files = glob.iglob(os.path.join(os.path.join(TARGET_PATH, TMLP_DIR), '*.user.tmpl'))
200     for file in files:
201         filename = os.path.basename(file).replace('.user.tmpl', '.tmpl')
202         # print(file, '=>', os.path.join(custom_path, filename));
203         os.rename(file, os.path.join(custom_path, filename))
204 
205     # old: settings-custom_path compatible fix
206     settings = sublime.load_settings(PACKAGE_NAME + '.sublime-settings')
207     old_custom_path = settings.get('custom_path', '')
208     if old_custom_path and os.path.isdir(old_custom_path):
209         # print(old_custom_path)
210         files = glob.iglob(os.path.join(old_custom_path, '*.tmpl'))
211         for file in files:
212             filename = os.path.basename(file).replace('.user.tmpl', '.tmpl')
213             # print(file, '=>', os.path.join(custom_path, filename))
214             os.rename(file, os.path.join(custom_path, filename))
215 
216 if not IS_GTE_ST3:
217     sublime.set_timeout(plugin_loaded, 0)
218 
219 def extract_zip_resource(path_to_zip, file_list, extract_dir=None):
220     if extract_dir is None:
221         return
222     # print(extract_dir)
223     if os.path.exists(path_to_zip):
224         z = zipfile.ZipFile(path_to_zip, 'r')
225         for f in z.namelist():
226             # if f.endswith('.tmpl'):
227             if f in file_list:
228                 # print(f)
229                 z.extract(f, extract_dir)
230         z.close()
View Code

 

增加侧边栏右键新增模版文件功能:

  1. 首选项>浏览程序包,在打开的目录新建跟插件名称一样的目录,这里是新建"SideBarEnhancements"。
  2. 选择当前目录上一级(Sublime Text 3)>Installed Packages找到"SideBarEnhancements.sublime-package",复制一份该文件到任意目录,修改文件后缀为.zip,用软件解压。
  3. 找到解压目录中以".sublime-menu"为结尾的文件,这里是"Side Bar.sublime-menu",复制一份到第一步新建的目录SideBarEnhancements中。
  4. 修改复制的"Side Bar.sublime-menu"文件,添加如下内容:
 1     {
 2         "caption": "New File (SublimeTmpl)",
 3         "id": "side-bar-new-file-SublimeTmpl",
 4         "children": [
 5                     {
 6                         "caption": "HTML",
 7                         "command": "sublime_tmpl",
 8                         "args": {
 9                             "type": "html",
10                             "dirs": []
11                         }
12                     },
13                     {
14                         "caption": "Javascript",
15                         "command": "sublime_tmpl",
16                         "args": {
17                             "type": "js",
18                             "dirs": []
19                         }
20                     },
21                     {
22                         "caption": "CSS",
23                         "command": "sublime_tmpl",
24                         "args": {
25                             "type": "css",
26                             "dirs": []
27                         }
28                     },
29                     {
30                         "caption": "PHP",
31                         "command": "sublime_tmpl",
32                         "args": {
33                             "type": "php",
34                             "dirs": []
35                         }
36                     },
37                     {
38                         "caption": "python",
39                         "command": "sublime_tmpl",
40                         "args": {
41                             "type": "py",
42                             "dirs": []
43                         }
44                     },
45                     {
46                         "caption": "ruby",
47                         "command": "sublime_tmpl",
48                         "args": {
49                             "type": "rb",
50                             "dirs": []
51                         }
52                     },
53                     {"caption": "-"},
54                     {
55                         "command": "open_file",
56                         "args": {"file": "${packages}/SublimeTmpl/Main.sublime-menu"},
57                         "caption": "Menu"
58                     }
59         ]
60     },

修改之后完成代码:

[
    {
        "caption": "aaaaa_side_bar",
        "id": "aaaaa_side_bar",
        "command": "aaaaa_side_bar",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-start-separator"
    },
    {
        "caption": "New File…",
        "id": "side-bar-new-file",
        "command": "side_bar_new_file",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "New Folder…",
        "id": "side-bar-new-directory",
        "command": "side_bar_new_directory",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-start-separator"
    },
    {
        "caption": "New File (SublimeTmpl)",
        "id": "side-bar-new-file-SublimeTmpl",
        "children": [
                    {
                        "caption": "HTML",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "html",
                            "dirs": []
                        }
                    },
                    {
                        "caption": "Javascript",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "js",
                            "dirs": []
                        }
                    },
                    {
                        "caption": "CSS",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "css",
                            "dirs": []
                        }
                    },
                    {
                        "caption": "PHP",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "php",
                            "dirs": []
                        }
                    },
                    {
                        "caption": "python",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "py",
                            "dirs": []
                        }
                    },
                    {
                        "caption": "ruby",
                        "command": "sublime_tmpl",
                        "args": {
                            "type": "rb",
                            "dirs": []
                        }
                    },
                    {"caption": "-"},
                    {
                        "command": "open_file",
                        "args": {"file": "${packages}/SublimeTmpl/Main.sublime-menu"},
                        "caption": "Menu"
                    }
        ]
    },
    {
        "caption": "-",
        "id": "side-bar-new-separator"
    },

    {
        "caption": "Edit",
        "id": "side-bar-edit",
        "command": "side_bar_edit",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Edit to Right",
        "id": "side-bar-edit-to-right",
        "command": "side_bar_edit_to_right",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Open / Run",
        "id": "side-bar-open",
        "command": "side_bar_open",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Open In Browser",
        "id": "side-bar-open-in-browser",
        "children": [
            {
                "caption": "Default",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-"
            },
            {
                "caption": "Firefox",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "firefox"
                }
            },
            {
                "caption": "-"
            },
            {
                "caption": "Chromium",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "chromium"
                }
            },
            {
                "caption": "Chrome",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "chrome"
                }
            },
            {
                "caption": "Canary",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "canary"
                }
            },
            {
                "caption": "-"
            },
            {
                "caption": "Opera",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "opera"
                }
            },
            {
                "caption": "Safari",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "safari"
                }
            },
            {
                "caption": "-"
            },
            {
                "caption": "Internet Explorer",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "ie"
                }
            },
            {
                "caption": "Edge",
                "command": "side_bar_open_in_browser",
                "args": {
                    "paths": [],
                    "type": "testing",
                    "browser": "edge"
                }
            },
            {
                "caption": "-"
            },
            {
                "caption": "Open In All Browsers",
                "command": "side_bar_open_browsers"
            }
        ]
    },
    {
        "caption": "Open In New Window",
        "id": "side-bar-open-in-new-window",
        "command": "side_bar_open_in_new_window",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Open With Finder",
        "id": "side-bar-open-with-finde",
        "command": "side_bar_open_with_finder",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Open With",
        "id": "side-bar-files-open-with",

        "children": [

            {
                "caption": "-",
                "id": "side-bar-files-open-with-edit-application-separator"
            },
            {
                "caption": "Edit Applications…",
                "id": "side-bar-files-open-with-edit-applications",
                "command": "side_bar_files_open_with_edit_applications",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-files-open-with-edit-applications-separator"
            }

        ]
    },
    {
        "caption": "Reveal",
        "id": "side-bar-reveal",
        "command": "side_bar_reveal",
        "args": {
            "paths": []
        }
    },

    {
        "caption": "-",
        "id": "side-bar-edit-open-separator"
    },

    {
        "caption": "Find & Replace…",
        "id": "side-bar-find-selected",
        "command": "side_bar_find_in_selected",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Find Files Named…",
        "id": "side-bar-find-files",
        "command": "side_bar_find_files_path_containing",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Find Advanced",
        "id": "side-bar-find-advanced",
        "children": [
            {
                "caption": "In Parent Folder…",
                "id": "side-bar-find-parent",
                "command": "side_bar_find_in_parent",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-find-parent-separator"
            },
            {
                "caption": "In Project…",
                "id": "side-bar-find-in-project",
                "command": "side_bar_find_in_project",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "In Project Folder…",
                "id": "side-bar-find-project-folder",
                "command": "side_bar_find_in_project_folder",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "In Project Folders…",
                "id": "side-bar-find-project-folders",
                "command": "side_bar_find_in_project_folders"
            },
            {
                "caption": "-",
                "id": "side-bar-find-project-separator"
            },
            {
                "id": "side-bar-find-in-files-with-extension",
                "command": "side_bar_find_in_files_with_extension",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "In Paths Containing…",
                "id": "side-bar-find-files-path-containing",
                "command": "side_bar_find_files_path_containing",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-mass-rename-separator"
            },
            {
                "caption": "Mass Rename Selection…",
                "id": "side-bar-mass-rename",
                "command": "side_bar_mass_rename",
                "args": {
                    "paths": []
                }
            }

        ]
    },
    {
        "caption": "-",
        "id": "side-bar-find-separator"
    },
    {
        "caption": "Cut",
        "id": "side-bar-clip-cut",
        "command": "side_bar_cut",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy",
        "id": "side-bar-clip-copy",
        "command": "side_bar_copy",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy Name",
        "id": "side-bar-clip-copy-name",
        "command": "side_bar_copy_name",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy Path",
        "id": "side-bar-clip-copy-path",
        "command": "side_bar_copy_path_absolute_from_project_encoded",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy Path (Windows)",
        "id": "side-bar-clip-copy-path-windows",
        "command": "side_bar_copy_path_absolute_from_project_encoded_windows",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy Dir Path",
        "id": "side-bar-clip-copy-dir-path",
        "command": "side_bar_copy_dir_path",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Copy as Text",
        "id": "side-bar-clip-copy-as",
        "children": [
            {
                "caption": "Relative Path From View Encoded",
                "id": "side-bar-clip-copy-path-relative-from-view-encoded",
                "command": "side_bar_copy_path_relative_from_view_encoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Relative Path From View",
                "id": "side-bar-clip-copy-path-relative-from-view",
                "command": "side_bar_copy_path_relative_from_view",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-path-relative-from-view-separator"
            },

            {
                "caption": "Relative Path From Project Encoded",
                "id": "side-bar-clip-copy-path-relative-from-project-encoded",
                "command": "side_bar_copy_path_relative_from_project_encoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Relative Path From Project",
                "id": "side-bar-clip-copy-path-relative-from-project",
                "command": "side_bar_copy_path_relative_from_project",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-path-relative-from-project-separator"
            },

            {
                "caption": "Absolute Path From Project Encoded",
                "id": "side-bar-clip-copy-path-absolute-from-project-encoded",
                "command": "side_bar_copy_path_absolute_from_project_encoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Absolute Path From Project",
                "id": "side-bar-clip-copy-path-absolute-from-project",
                "command": "side_bar_copy_path_absolute_from_project",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-path-absolute-from-project-separator"
            },

            {
                "caption": "Path as URI",
                "id": "side-bar-clip-copy-path-encoded",
                "command": "side_bar_copy_path_encoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Path",
                "id": "side-bar-clip-copy-path",
                "command": "side_bar_copy_path",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-path-separator"
            },

            {
                "caption": "Name Encoded",
                "id": "side-bar-clip-copy-name-encoded",
                "command": "side_bar_copy_name_encoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-name-encoded-separator"
            },

            {
                "caption": "URL",
                "id": "side-bar-clip-copy-url",
                "command": "side_bar_copy_url",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "URL Decoded",
                "id": "side-bar-clip-copy-url-decoded",
                "command": "side_bar_copy_url_decoded",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-url-separator"
            },

            {
                "caption": "Tag a",
                "id": "side-bar-clip-copy-tag-a",
                "command": "side_bar_copy_tag_ahref",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Tag img",
                "id": "side-bar-clip-copy-tag-img",
                "command": "side_bar_copy_tag_img",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Tag script",
                "id": "side-bar-clip-copy-tag-script",
                "command": "side_bar_copy_tag_script",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Tag style",
                "id": "side-bar-clip-copy-tag-style",
                "command": "side_bar_copy_tag_style",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-tag-separator"
            },
            {
                "caption": "Project Folders",
                "id": "side-bar-clip-copy-project-directories",
                "command": "side_bar_copy_project_directories",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-clip-copy-project-directories-separator"
            },
            {
                "caption": "Content as UTF-8",
                "id": "side-bar-clip-copy-content-utf8",
                "command": "side_bar_copy_content_utf8",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Content as Data URI",
                "id": "side-bar-clip-copy-content-base-64",
                "command": "side_bar_copy_content_base64",
                "args": {
                    "paths": []
                }
            }
        ]
    },

    {
        "caption": "Paste",
        "id": "side-bar-clip-paste",
        "command": "side_bar_paste",
        "args": {
            "paths": [],
            "in_parent": "False"
        }
    },
    {
        "caption": "Paste in Parent",
        "id": "side-bar-clip-paste-in-parent",
        "command": "side_bar_paste",
        "args": {
            "paths": [],
            "in_parent": "True"
        }
    },
    {
        "caption": "-",
        "id": "side-bar-clip-separator"
    },
    {
        "caption": "Duplicate…",
        "id": "side-bar-duplicate",
        "command": "side_bar_duplicate",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-duplicate-separator"
    },

    {
        "caption": "Rename…",
        "id": "side-bar-rename",
        "command": "side_bar_rename",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Move…",
        "id": "side-bar-move",
        "command": "side_bar_move",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-rename-move-separator"
    },

    {
        "caption": "Delete",
        "id": "side-bar-delete",
        "command": "side_bar_delete",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "Empty",
        "id": "side-bar-empty",
        "command": "side_bar_empty",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-delete-separator"
    },

    {
        "caption": "Refresh",
        "id": "side-bar-refresh",
        "command": "refresh_folder_list"
    },
    {
        "caption": "-",
        "id": "side-bar-refresh-separator"
    },
    {
        "caption": "Project",
        "id": "side-bar-project",
        "children": [
            {
                "caption": "Edit Project",
                "id": "side-bar-project-open-file",
                "command": "side_bar_project_open_file",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Edit Preview URLs",
                "id": "side-bar-preview-edit-urls",
                "command": "side_bar_preview_edit_urls",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-project-open-file-separator"
            },
            {
                "command": "prompt_add_folder",
                "caption": "Add Folder to Project…",
                "mnemonic": "d"
            },
            {
                "caption": "-",
                "id": "side-bar-promote-as-project-folder-separator"
            },
            {
                "caption": "Promote as Project Folder",
                "id": "side-bar-project-item-add",
                "command": "side_bar_project_item_add",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "Hide From Sidebar (In theory exclude from project)",
                "id": "side-bar-project-item-exclude",
                "command": "side_bar_project_item_exclude",
                "args": {
                    "paths": []
                }
            },
            {
                "caption": "-",
                "id": "side-bar-project-item-separator"
            },
            {
                "id": "side-bar-project-item-exclude-from-index-item",
                "command": "side_bar_project_item_exclude_from_index",
                "args": {
                    "paths": [],
                    "type": "item"
                }
            },
            {
                "id": "side-bar-project-item-exclude-from-index-relative",
                "command": "side_bar_project_item_exclude_from_index",
                "args": {
                    "paths": [],
                    "type": "relative"
                }
            },
            {
                "id": "side-bar-project-item-exclude-from-index-directory",
                "command": "side_bar_project_item_exclude_from_index",
                "args": {
                    "paths": [],
                    "type": "directory"
                }
            },
            {
                "id": "side-bar-project-item-exclude-from-index-file",
                "command": "side_bar_project_item_exclude_from_index",
                "args": {
                    "paths": [],
                    "type": "file"
                }
            },
            {
                "id": "side-bar-project-item-exclude-from-index-extension",
                "command": "side_bar_project_item_exclude_from_index",
                "args": {
                    "paths": [],
                    "type": "extension"
                }
            },
            {
                "caption": "-",
                "id": "side-bar-project-item-separator"
            },
            {
                "caption": "Remove Folder from Project",
                "id": "side-bar-project-item-remove-folder",
                "command": "side_bar_project_item_remove_folder",
                "args": {
                    "paths": []
                }
            }

        ]
    },
    {
        "caption": "-",
        "id": "side-bar-donate-separator"
    },
    {
        "caption": "Donate",
        "command": "side_bar_donate",
        "args": {
            "paths": []
        }
    },
    {
        "caption": "-",
        "id": "side-bar-end-separator"
    },
    {
        "caption": "zzzzz_side_bar",
        "id": "zzzzz_side_bar",
        "command": "zzzzz_side_bar",
        "args": {
            "paths": []
        }
    },
]
View Code

 

总结: 本人python语言完全不懂,根据Sublime NFFT插件修改,不妥之处欢迎拍砖。

 

posted @ 2016-06-06 12:19  极·简  Views(2900)  Comments(0Edit  收藏  举报