예제 #1
0
def InsertDrawerIfNotPresent(view, node, drawer = ":PROPERTIES:", onDone=None):
    if(drawer == ":PROPERTIES:"):
        if(node.property_drawer_location):
            evt.EmitIf(onDone)
            return False
    else:
        for d in node.drawers:
            if((":" + d["name"] + ":") == drawer):
                evt.EmitIf(onDone)
                return False
    level = node.level
    indent = " " + (" " * level)
    drawerRow = node.body_lines_start
    # Properties should be the first drawer...
    if(drawer != ":PROPERTIES:" and node.property_drawer_location):
        drawerRow = node.property_drawer_location[1] + 1
    # Also skip over SCHEDULED, DEADLINE and CLOSED lines
    for row in range(drawerRow, node.local_end_row + 1):
        pt = view.text_point(row, 0)
        line = view.line(pt)
        txt = view.substr(line)
        m = RE_SDC.search(txt)
        if(not m):
            drawerRow = row
            break
        else:
            drawerRow = row + 1

    drawerHere = view.text_point(drawerRow, 0)
    newline = "\n" if view.isBeyondLastRow(drawerRow) else ""
    if(drawer == ":PROPERTIES:"):
        node.set_property_drawer_location((drawerRow,drawerRow+1))
    view.run_command("org_internal_insert", {"location": drawerHere, "text": newline + indent + drawer +"\n" + indent + ":END:\n","onDone":onDone})
    return True
예제 #2
0
    def run(self, edit, onDone=None):
        self.file = db.Get().FindInfo(self.view)
        if (None == self.file):
            log.error("Not an org file? Cannot build reveal document")
            evt.EmitIf(onDone)
            return
        doc = None
        self.style = GetGlobalOption(self.file, "HTML_STYLE", "HtmlStyle",
                                     "blocky").lower()
        log.log(51, "EXPORT STYLE: " + self.style)
        try:
            outputFilename = HtmlFilename(self.view)
            doc = HtmlDoc(outputFilename, self.file)
            doc.style = self.style
            doc.StartHead()
            self.build_head(doc)
            doc.EndHead()

            doc.StartBody()
            self.build_body(doc)
            doc.EndBody()
        finally:
            if (None != doc):
                doc.Close()
            log.log(51, "EXPORT COMPLETE: " + str(outputFilename))
            self.view.set_status("ORG_EXPORT",
                                 "EXPORT COMPLETE: " + str(outputFilename))
            sublime.set_timeout(self.clear_status, 1000 * 10)
            evt.EmitIf(onDone)
예제 #3
0
 def run(self, edit, location, text, onDone=None):
     self.view.insert(edit, location, text)
     # Reload the file automatically when we edit it.
     file = db.Get().FindInfo(self.view.file_name())
     if (file != None):
         file.LoadS(self.view)
     evt.EmitIf(onDone)
예제 #4
0
 def run(self, edit, heading=None, onDone=None):
     curNode = db.Get().AtInView(self.view)
     if (not curNode):
         file = db.Get().FindInfo(self.view)
         if (len(file.org) > 0):
             curNode = file.org[len(file.org) - 1]
     if (not curNode):
         level = 1
         l = self.view.line(self.view.size())
         reg = sublime.Region(l.start(), l.start())
         reg = here
     else:
         level = curNode.level
         reg = curNode.region(self.view)
         if (level == 0):
             level = 1
             here = sublime.Region(view.size(), view.size())
         else:
             here = sublime.Region(reg.end(), reg.end())
     self.view.sel().clear()
     self.view.sel().add(reg.end() + 1)
     #self.view.show(here)
     self.view.insert(edit,
                      self.view.sel()[0].begin(),
                      '\n' + ('*' * (level + 1)) + ' ' + heading)
     evt.EmitIf(onDone)
예제 #5
0
def RemoveClosed(view, node, onDone=None):
    closedPt = LocateClosed(view, node)
    if (closedPt):
        view.ReplaceRegion(closedPt.IncEnd(), "", onDone)
        #view.run_command("org_internal_replace", {"start": closedPt.begin(), "end": closedPt.end() + 1, "text": "", "onDone": onDone})
    else:
        evt.EmitIf(onDone)
예제 #6
0
 def run(self, edit, start, end, text, onDone=None):
     region = sublime.Region(start, end)
     self.view.replace(edit, region, text)
     # Reload the file automatically when we edit it.
     file = db.Get().FindInfo(self.view.file_name())
     if (file != None):
         file.LoadS(self.view)
     evt.EmitIf(onDone)
예제 #7
0
 def OnDone(self):
     evt.EmitIf(self.onDone)
     if (self.silent != None):
         evt.EmitIfParams(self.onDoneResultsPos,
                          postFormat=self.formattedOutput,
                          preFormat=self.preFormattedOutput,
                          name=self.onDoneFnName)
     else:
         evt.EmitIfParams(self.onDoneResultsPos,
                          pos=self.resultsTxtStart,
                          name=self.onDoneFnName)
예제 #8
0
 def OnDoneSourceBlockExecution(self):
     # Reload if necessary
     self.file = db.Get().FindInfo(self.view)
     self.doc  = None
     try:
         outputFilename = exp.ExportFilename(self.view,".html",self.suffix)
         self.doc = RevealDoc(outputFilename,self.file)
         self.helper    = exp.OrgExportHelper(self.view,self.index)
         self.helper.Run(outputFilename, self.doc)
     finally:    
         evt.EmitIf(self.onDone)
예제 #9
0
 def OnDoneSourceBlockExecution(self):
   # Reload if necessary
   self.file = db.Get().FindInfo(self.view)
   doc = None
   self.style = exp.GetGlobalOption(self.file,"HTML_STYLE","HtmlStyle","blocky").lower()
   log.log(51,"EXPORT STYLE: " + self.style)
   try:
     outputFilename = exp.ExportFilename(self.view,".html", self.suffix)
     doc            = HtmlDoc(outputFilename, self.file)
     doc.style      = self.style
     self.helper    = HtmlExportHelper(self.view, self.index)
     self.helper.Run(outputFilename, doc)
   finally:  
     evt.EmitIf(self.onDone)
예제 #10
0
 def OnDoneSourceBlockExecution(self):
     # Reload if necessary
     self.file = db.Get().FindInfo(self.view)
     self.doc = None
     self.docClass = exp.GetGlobalOption(self.file, "LATEX_CLASS",
                                         "latexClass", "article").lower()
     try:
         outputFilename = exp.ExportFilename(self.view, ".tex", self.suffix)
         self.doc = LatexDoc(outputFilename, self.file)
         self.doc.setClass(self.docClass)
         self.helper = exp.OrgExportHelper(self.view, self.index)
         self.helper.Run(outputFilename, self.doc)
     finally:
         evt.EmitIf(self.onDone)
예제 #11
0
 def run(self,edit, onDone=None, index=None, suffix=""):
   self.file = db.Get().FindInfo(self.view)
   self.onDone = onDone
   self.suffix = suffix
   if(index != None):
     self.index = index
   else:
     self.index = None
   if(None == self.file):
     log.error("Not an org file? Cannot build reveal document")
     evt.EmitIf(onDone)  
     return
   if(sets.Get("htmlExecuteSourceOnExport",True)):
     self.view.run_command('org_execute_all_source_blocks',{"onDone":evt.Make(self.OnDoneSourceBlockExecution),"amExporting": True})
   else:
     self.OnDoneSourceBlockExecution()
예제 #12
0
 def run(self, edit, onDone=None):
     curNode = db.Get().AtInView(self.view)
     needsNewline = False
     if (not curNode):
         file = db.Get().FindInfo(self.view)
         if (len(file.org) > 0):
             curNode = file.org[len(file.org) - 1]
     if (not curNode):
         level = 1
         l = self.view.line(self.view.size())
         reg = sublime.Region(l.start(), l.start())
         reg = here
     else:
         level = curNode.level
         reg = curNode.region(self.view, True)
         if (level == 0):
             level = 1
             here = sublime.Region(view.size(), view.size())
         else:
             here = sublime.Region(reg.end(), reg.end())
             text = self.view.substr(self.view.line(here))
             if (text.strip() != ""):
                 needsNewline = True
     if (not needsNewline):
         ll = self.view.line(reg.end())
         text = self.view.substr(ll)
         if (text.strip() == "" and len(text) > 0):
             # This is an empty line! Have to work at the front of this line!
             # Or we will insert to an odd location!
             reg = sublime.Region(ll.start(), ll.start())
     self.view.sel().clear()
     self.view.sel().add(reg.end())
     self.view.show(here)
     if (needsNewline):
         self.view.insert(edit, self.view.sel()[0].begin(), '\n')
     ai = sublime.active_window().active_view().settings().get(
         'auto_indent')
     self.view.settings().set('auto_indent', False)
     self.view.run_command(
         "insert_snippet", {
             "name":
             "Packages/OrgExtended/orgsnippets/heading" + str(
                 (level + 1)) + ".sublime-snippet"
         })
     sublime.active_window().active_view().settings().set('auto_indent', ai)
     evt.EmitIf(onDone)
예제 #13
0
 def OnDone(self, text):
     if (not text):
         return
     node = db.Get().AtInView(self.view)
     if (node):
         if not text in node.tags:
             (region, line) = self.view.getLineAndRegion(node.start_row)
             m = RE_TAGS.search(line)
             if (m.group('tags') != None):
                 tags = m.group('tags') + text + ":"
             else:
                 tags = "    :" + text + ":"
             toline = "{0:70}{1}".format(m.group('heading'), tags)
             self.view.ReplaceRegion(region, toline, self.onDone)
         else:
             log.debug("Tag already part of node")
             evt.EmitIf(self.onDone)
예제 #14
0
 def createProperty(self, prop):
     if(not prop):
         return
     isint = False
     try:
         i = int(prop)
         isint = True
     except:
         pass
     if(isint):
         inc = sets.Get("defaultEffortEstimateUnit","d")
         prop = prop + inc
     d = dur.OrgDuration.Parse(prop)
     if(d):
         node = db.Get().AtInView(self.view)
         if(node and node.level > 0):
             UpdateProperty(self.view, node, "Effort", str(d), self.onDone)
     else:
         log.error("Could not generate effort, please use org duration formation for your estimate")
         view.set_status("Error: ", prop + "is not a valid effort, please use org duration formation 1y 1d 1h 1min")
         evt.EmitIf(self.onDone)
예제 #15
0
 def run(self, edit, onDone=None):
     ImageHandler.hide_images(self.view, edit)
     evt.EmitIf(onDone)
예제 #16
0
 def on_totally_done(self):
     evt.EmitIf(self.onDone)
예제 #17
0
 def onSaved(self):
     db.Get().Reload(self.savedView)
     evt.EmitIf(self.onDone)
예제 #18
0
 def run(self, edit, onDone=None):
     ClockManager.ClockOut(self.view)
     evt.EmitIf(onDone)
예제 #19
0
 def run(self, edit, onDone=None):
     ImageHandler.show_images(self.view)
     evt.EmitIf(onDone)
예제 #20
0
 def OnDone(self):
     evt.EmitIf(self.onDone)
예제 #21
0
 def OnDone(self):
     self.view.sel().clear()
     self.view.sel().add(self.cursor)
     evt.EmitIf(self.onDone)