def on_insert(self, edit, text):
     an.attach(self.view, edit)
     edit.ret = None
     edit._n = True  # 是否自动插入换行
     an.eval_(text) or an.exec_(text)
     if hasattr(edit.ret, '__len__'):
         selectionlen = len(self.view.selection)
         if selectionlen > 1:
             # 依次应用到光标
             itr = iter(edit.ret)
             i = 0
             for region in self.view.selection:
                 if i == selectionlen:
                     break
                 else:
                     i += 1
                 cur = itr.__next__()  # 当前要插入的文本
                 if not isinstance(cur, str):
                     cur = str(cur)
                 self.view.replace(edit, region, cur)
         else:
             # 列表插入到当前位置
             regions = []
             i = 0
             itemlen = len(edit.ret)
             usetpl = False  # 使用模板
             region = self.view.selection[0]
             if selectionlen == 1 and region.size() > 1 and self.view.substr(region.begin()) == '%':
                 usetpl = True
                 tpl = self.view.substr(sublime.Region(region.begin() + 1, region.end()))  # 模板文字
             self.view.erase(edit, region)
             while i < itemlen:
                 item = edit.ret[i]
                 if not usetpl:
                     item = extypes.astr(item)
                 else:
                     if isinstance(item, (list, tuple)):
                         argslen = len(item)  # 当前参数的长度
                         iscontainer = argslen > 0 and isinstance(item[0], (list, tuple))
                         if iscontainer and argslen == 1:
                             item = tpl.format(*item[0])
                         elif iscontainer and argslen == 2:
                             item = tpl.format(*item[0], **item[1])
                         else:
                             item = tpl.format(*item)
                     elif isinstance(item, dict):
                         item = tpl.format(**item)  # 替换一个参数
                     else:
                         item = extypes.astr(item)
                         item = tpl.format(item)
                 cur = self.view.selection[-1].a
                 regions.append(sublime.Region(cur, cur + len(item)))
                 self.view.insert(edit, cur, item)
                 i += 1
                 if edit._n and i < itemlen:
                     self.view.run_command('insert', {"characters": "\n"})
             self.view.selection.clear()
             self.view.selection.add_all(regions)
示例#2
0
 def on_exec(self, edit, text):
     an.attach(self.view, edit)
     edit.i = 0
     for region in self.view.selection:
         edit.src = self.view.substr(region)
         edit.i += 1
         if (an.eval_(text)):
             self.view.replace(edit, region, extypes.astr(edit.ret))
示例#3
0
 def run(self, edit):
     an.attach(self.view, edit)
     for region in self.view.selection:
         if region.empty():
             region = self.view.line(region.a)
         edit.ret = None
         if an.exec_(self.view.substr(region)) and edit.ret:
             self.view.replace(edit, region, extypes.astr(edit.ret))
 def on_exec(self, edit, text):
     an.attach(self.view, edit)
     edit.i = 0
     for region in self.view.selection:
         edit.src = self.view.substr(region)
         edit.i += 1
         if(an.eval_(text)):
             self.view.replace(edit, region, extypes.astr(edit.ret))
 def run(self, edit):
     an.attach(self.view, edit)
     for region in self.view.selection:
         if region.empty():
             region = self.view.line(region.a)
         edit.ret = None
         if an.exec_(self.view.substr(region)) and edit.ret:
             self.view.replace(edit, region, extypes.astr(edit.ret))
示例#6
0
    def set_output(self, text=None):
        win = sublime.Window(self.window_id)
        output = self.output
        if not output:
            output = self.output = win.create_output_panel('an')
            view = self.view or win.active_view()
            # self.output.settings().set('color_scheme', view.settings().get('color_scheme'))
            output.assign_syntax('Packages/Text/Plain text.tmLanguage')

        if text is not None:
            output.run_command('set_text', {'text': extypes.astr(text)})

        win.run_command('show_panel', {'panel': 'output.an'})
示例#7
0
 def on_insert(self, edit, text):
     an.attach(self.view, edit)
     edit.ret = None
     edit._n = True  # 是否自动插入换行
     an.eval_(text) or an.exec_(text)
     if hasattr(edit.ret, '__len__'):
         selectionlen = len(self.view.selection)
         if selectionlen > 1:
             # 依次应用到光标
             itr = iter(edit.ret)
             i = 0
             for region in self.view.selection:
                 if i == selectionlen:
                     break
                 else:
                     i += 1
                 cur = itr.__next__()  # 当前要插入的文本
                 if not isinstance(cur, str):
                     cur = str(cur)
                 self.view.replace(edit, region, cur)
         else:
             # 列表插入到当前位置
             regions = []
             i = 0
             itemlen = len(edit.ret)
             usetpl = False  # 使用模板
             region = self.view.selection[0]
             if selectionlen == 1 and region.size(
             ) > 1 and self.view.substr(region.begin()) == '%':
                 usetpl = True
                 tpl = self.view.substr(
                     sublime.Region(region.begin() + 1,
                                    region.end()))  # 模板文字
             self.view.erase(edit, region)
             while i < itemlen:
                 item = edit.ret[i]
                 if not usetpl:
                     item = extypes.astr(item)
                 else:
                     if isinstance(item, (list, tuple)):
                         argslen = len(item)  # 当前参数的长度
                         iscontainer = argslen > 0 and isinstance(
                             item[0], (list, tuple))
                         if iscontainer and argslen == 1:
                             item = tpl.format(*item[0])
                         elif iscontainer and argslen == 2:
                             item = tpl.format(*item[0], **item[1])
                         else:
                             item = tpl.format(*item)
                     elif isinstance(item, dict):
                         item = tpl.format(**item)  # 替换一个参数
                     else:
                         item = extypes.astr(item)
                         item = tpl.format(item)
                 cur = self.view.selection[-1].a
                 regions.append(sublime.Region(cur, cur + len(item)))
                 self.view.insert(edit, cur, item)
                 i += 1
                 if edit._n and i < itemlen:
                     self.view.run_command('insert', {"characters": "\n"})
             self.view.selection.clear()
             self.view.selection.add_all(regions)
示例#8
0
 def run(self, edit):
     an.attach(self.view, edit)
     for region in self.view.selection:
         if not region.empty() and an.eval_(self.view.substr(region)):
             self.view.replace(edit, region, extypes.astr(edit.ret))
 def run(self, edit):
     an.attach(self.view, edit)
     for region in self.view.selection:
         if not region.empty() and an.eval_(self.view.substr(region)):
             self.view.replace(edit, region, extypes.astr(edit.ret))