def flattenOutlineToNode(self, event=None):
    '''
    Append the body text of all descendants of the selected node to the
    body text of the selected node.
    '''
    c, root, u = self, self.p, self.undoer
    if not root.hasChildren():
        return
    language = g.getLanguageAtPosition(c, root)
    if language:
        single,start,end = g.set_delims_from_language(language)
    else:
        single,start,end = '#', None, None
    bunch = u.beforeChangeNodeContents(root)
    aList = []
    for p in root.subtree():
        if single:
            aList.append('\n\n===== %s %s\n\n' % (single, p.h))
        else:
            aList.append('\n\n===== %s %s %s\n\n' % (start, p.h, end))
        if p.b.strip():
            lines = g.splitLines(p.b)
            aList.extend(lines)
    root.b = root.b.rstrip() + '\n' + ''.join(aList).rstrip() + '\n'
    u.afterChangeNodeContents(root, 'flatten-outline-to-node', bunch)
예제 #2
0
def flattenOutlineToNode(self, event=None):
    '''
    Append the body text of all descendants of the selected node to the
    body text of the selected node.
    '''
    c, root, u = self, self.p, self.undoer
    if not root.hasChildren():
        return
    language = g.getLanguageAtPosition(c, root)
    if language:
        single,start,end = g.set_delims_from_language(language)
    else:
        single,start,end = '#', None, None
    bunch = u.beforeChangeNodeContents(root)
    aList = []
    for p in root.subtree():
        if single:
            aList.append('\n\n===== %s %s\n\n' % (single, p.h))
        else:
            aList.append('\n\n===== %s %s %s\n\n' % (start, p.h, end))
        if p.b.strip():
            lines = g.splitLines(p.b)
            aList.extend(lines)
    root.b = root.b.rstrip() + '\n' + ''.join(aList).rstrip() + '\n'
    u.afterChangeNodeContents(root, 'flatten-outline-to-node', bunch)
예제 #3
0
def findMatchingBracket(self, event=None):
    '''Select the text between matching brackets.'''
    c, p = self, self.p
    if g.app.batchMode:
        c.notValidInBatchMode("Match Brackets")
        return
    language = g.getLanguageAtPosition(c, p)
    if language == 'perl':
        g.es('match-brackets not supported for', language)
    else:
        g.MatchBrackets(c, p, language).run()
예제 #4
0
def findMatchingBracket(self, event=None):
    '''Select the text between matching brackets.'''
    c, p = self, self.p
    if g.app.batchMode:
        c.notValidInBatchMode("Match Brackets")
        return
    language = g.getLanguageAtPosition(c, p)
    if language == 'perl':
        g.es('match-brackets not supported for', language)
    else:
        g.MatchBrackets(c, p, language).run()
예제 #5
0
 def get_delims(self, root):
     '''Return the deliminters in effect at root.'''
     c = self.c
     old_target_language = c.target_language
     try:
         c.target_language = g.getLanguageAtPosition(c, root)
         d = c.scanAllDirectives(root)
     finally:
         c.target_language = old_target_language
     delims1, delims2, delims3 = d.get('delims')
     if delims1:
         return delims1, None
     return delims2, delims3
예제 #6
0
 def add_markup(self):
     '''Add @language directives, but only if necessary.'''
     for p in self.root.subtree():
         level = p.level() - self.root.level()
         language = g.getLanguageAtPosition(self.c, p)
         cell = self.get_ua(p, 'cell')
         # # Always put @language directives in top-level imported nodes.
         if cell.get('cell_type') == 'markdown':
             if level < 2 or language not in ('md', 'markdown'):
                 p.b = '@language md\n@wrap\n\n%s' % p.b
         else:
             if level < 2 or language != 'python':
                 p.b = '@language python\n\n%s' % p.b
예제 #7
0
 def add_markup(self):
     '''Add @language directives, but only if necessary.'''
     for p in self.root.subtree():
         level = p.level() - self.root.level()
         language = g.getLanguageAtPosition(self.c, p)
         cell = self.get_ua(p, 'cell')
         # # Always put @language directives in top-level imported nodes.
         if cell.get('cell_type') == 'markdown':
             if level < 2 or language not in ('md', 'markdown'):
                p.b = '@language md\n@wrap\n\n%s' % p.b
         else:
             if level < 2 or language != 'python':
                 p.b = '@language python\n\n%s' % p.b
예제 #8
0
 def get_delims(self, root):
     '''Return the deliminters in effect at root.'''
     c = self.c
     old_target_language = c.target_language
     try:
         c.target_language = g.getLanguageAtPosition(c, root)
         d = c.scanAllDirectives(root)
     finally:
         c.target_language = old_target_language
     delims1, delims2, delims3 = d.get('delims')
     if delims1:
         return delims1, None
     else:
         return delims2, delims3
예제 #9
0
 def cell_type(p):
     language = g.getLanguageAtPosition(c, p)
     return 'markdown' if language in ('jupyter', 'markdown') else 'python'
예제 #10
0
 def cell_type(self, p):
     '''Return the Jupyter cell type of p.b, honoring ancestor directives.'''
     c = self.c
     language = g.getLanguageAtPosition(c, p)
     return 'code' if language == 'python' else 'markdown'
예제 #11
0
 def cell_type(p):
     language = g.getLanguageAtPosition(c, p)
     return 'markdown' if language in ('jupyter', 'markdown') else 'python'
예제 #12
0
 def cell_type(self, p):
     '''Return the Jupyter cell type of p.b, honoring ancestor directives.'''
     c = self.c
     language = g.getLanguageAtPosition(c, p)
     return 'code' if language == 'python' else 'markdown'