Пример #1
0
def func_at(view, pos):
    defs = _func_defs(view)
    if source(view, pos) == 'python':
        is_junk = lambda r: re_test('^(lambda|\s*\@)', view.substr(r))
        defs = lremove(is_junk, defs)
    func_def = region_b(defs, pos)

    lang = source(view, pos)
    if lang == 'python':
        next_line = newline_f(view, func_def.end())
        return func_def.cover(view.indented_region(next_line))
    elif lang == 'js':
        start_bracket = view.find(r'{', func_def.end(), sublime.LITERAL)
        end_bracket = find_matching_bracket(view, start_bracket)
        return func_def.cover(end_bracket)
    else:
        return func_def
Пример #2
0
    def run(self, edit):
        # Get expression
        sel = self.view.sel()[0]
        pos = sel.begin()
        expr = self.view.substr(sel)

        # Prepare new line
        line = self.view.line(pos)
        line_str = self.view.substr(line)
        prefix = re_find(r'^\s*', line_str)
        template, cursor_shift = self.TEMPLATES.get(source(self.view, pos), self.DEFAULT)
        exracted_line = prefix + template.format(expr)

        # Modify text
        self.view.insert(edit, line.begin(), exracted_line)

        # Create cursor for name
        name_pos = line.begin() + len(prefix) + cursor_shift
        self.view.sel().add(sublime.Region(name_pos, name_pos))
Пример #3
0
    def run(self, edit):
        # Get expression
        sel = self.view.sel()[0]
        pos = sel.begin()
        expr = self.view.substr(sel)

        # Prepare new line
        line = self.view.line(pos)
        line_str = self.view.substr(line)
        prefix = re_find(r'^\s*', line_str)
        template, cursor_shift = self.TEMPLATES.get(source(self.view, pos),
                                                    self.DEFAULT)
        exracted_line = prefix + template.format(expr)

        # Modify text
        self.view.insert(edit, line.begin(), exracted_line)

        # Create cursor for name
        name_pos = line.begin() + len(prefix) + cursor_shift
        self.view.sel().add(sublime.Region(name_pos, name_pos))
Пример #4
0
def find_functions(view):
    funcs = view.find_by_selector('meta.function')
    if source(view) == 'python':
        is_junk = lambda r: re_test('^(lambda|\s*\@)', view.substr(r))
        funcs = lremove(is_junk, funcs)
    return funcs