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)
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()
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
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
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
def cell_type(p): language = g.getLanguageAtPosition(c, p) return 'markdown' if language in ('jupyter', 'markdown') else 'python'
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'