> Thanks! Here is what I am currently using: Note that your code may fail if there is an inline task in the body.
Best, Ihor John Kitchin <jkitc...@andrew.cmu.edu> writes: > Thanks! Here is what I am currently using: > > (defun canvas-org-get-heading-body () > "Return the body of the current heading up to the next heading." > (interactive) > (save-excursion > (unless (org-at-heading-p) > (org-previous-visible-heading 1)) > (org-end-of-meta-data) > (buffer-substring (point) > (progn (re-search-forward org-heading-regexp nil 'mv) > (line-beginning-position))))) > > So far it gets what I want. I am pretty sure I have reinvented this, > maybe even from code I wrote before... I couldn't find my answer on SO > or my blog though. > > Ihor Radchenko <yanta...@gmail.com> writes: > >> You may use something similar to org-quick-peek--get-entry-text from >> org-quick-peek package (https://github.com/alphapapa/org-quick-peek): >> >> (cl-defun org-quick-peek--get-entry-text (marker &key keep-drawers >> keep-planning) >> "Return Org entry text from node at MARKER. >> If KEEP-DRAWERS is non-nil, drawers will be kept, otherwise >> removed." >> ;; Modeled after `org-agenda-get-some-entry-text' >> (let (text) >> (with-current-buffer (marker-buffer marker) >> ;; Get raw entry text >> (org-with-wide-buffer >> (goto-char marker) >> ;; Skip heading >> (end-of-line 1) >> ;; Get entry text >> (setq text (buffer-substring >> (point) >> (or (save-excursion (outline-next-heading) (point)) >> (point-max)))))) >> (with-temp-buffer >> (org-mode) >> (insert text) >> (unless keep-drawers >> (goto-char (point-min)) >> (while (re-search-forward org-drawer-regexp nil t) >> ;; Remove drawers >> (delete-region (match-beginning 0) >> (progn (re-search-forward >> "^[ \t]*:END:.*\n?" nil 'move) >> (point))))) >> (unless keep-planning >> (goto-char (point-min)) >> (while (re-search-forward org-planning-line-re nil t) >> ;; Remove planning line >> (kill-whole-line))) >> (setq text (buffer-substring (point-min) (point-max)))) >> (-reduce-r #'funcall (reverse (cons text (cons #'identity >> org-quick-peek-filter-functions)))))) >> >> Best, >> Ihor >> >> John Kitchin <jkitc...@andrew.cmu.edu> writes: >> >>> Hi everyone, >>> >>> I am trying to get the body of a heading up to the next subheading. For >>> example with this org file, >>> >>> * quiz one >>> >>> This is the description. >>> Use emacs for this. >>> >>> ** question 1 >>> what is 40 + 2 >>> >>> If the point is in the first heading, I want to run a function that would >>> return the string "This is the description.\nUse emacs for this." >>> >>> I thought there was a simple way to do that, but so far it has eluded my >>> google fu. Any hints? >>> >>> John >>> >>> ----------------------------------- >>> Professor John Kitchin >>> Doherty Hall A207F >>> Department of Chemical Engineering >>> Carnegie Mellon University >>> Pittsburgh, PA 15213 >>> 412-268-7803 >>> @johnkitchin >>> http://kitchingroup.cheme.cmu.edu > > > -- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu -- Ihor Radchenko, PhD, Center for Advancing Materials Performance from the Nanoscale (CAMP-nano) State Key Laboratory for Mechanical Behavior of Materials, Xi'an Jiaotong University, Xi'an, China Email: yanta...@gmail.com, ihor_radche...@alumni.sutd.edu.sg