good point, thanks! Here is a new version that might fail some other way! (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 (org-next-visible-heading 1) (point))))) 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 On Wed, May 13, 2020 at 10:42 AM Ihor Radchenko wrote: > > 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 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 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 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: yantar92@gmail.com, ihor_radchenko@alumni.sutd.edu.sg >