Hi Nicolas, Nicolas Goaziou writes:
> Hello, > > Myles English <mylesengl...@gmail.com> writes: > >> Hi Yagnesh, >> >> Yagnesh Raghava Yakkala writes: >>> I have been using example setting suggested by Nicolas >>> (http://article.gmane.org/gmane.emacs.orgmode/55972) to tell exporter to >>> skip >>> particular headline (with ignoreheading tag). >>> >>> It seems recent commit made this setup obsolete. could anybody suggest me >>> the >>> alternative setting for this.? > > There are only two changes: > > #+BEGIN_SRC emacs-lisp > (add-to-list 'org-e-latex-translate-table '(headline . my-e-latex-headline)) > #+END_SRC > > is obsolete since `org-e-latex-translate-table' variable has been > removed. If you want to install a new translator, you have to create > a derived back-end, which is easy (see the example at the end of that > link). > > Also, the hook will now be called with an argument: the back-end used as > a symbol. > > Otherwise, the thread is still valid. > >> I've been using this, (I notice it is significantly longer than the >> example in the link above so it may be overkill): >> >> #+BEGIN_SRC emacs-lisp >> (defun my-export-delete-headlines-tagged-noheading(heading-text) >> "Goto headline `heading-text'" >> (let ((wasfound t)) >> (while wasfound >> (progn (org-element-map >> (org-element-parse-buffer 'headline) >> 'headline >> (lambda (x) >> (if (member "noheading" (org-element-property :tags x)) >> (progn >> (goto-char (org-element-property :begin x)) >> (delete-region (point) >> (progn >> (forward-line 1) >> (point))) >> (goto-char (point-min))) >> (setq wasfound nil))) >> nil >> t)) ;; stop at first find, >> nil) ;; start again from the top of the buffer >> (goto-char (point-min)))) >> >> (add-to-list 'org-export-before-processing-hook >> 'my-export-delete-headlines-tagged-noheading) >> #+END_SRC > > Each time you delete an headline, you parse the full buffer again, so, > yes, it will be slow. You can simply reverse list returned by > `org-element-map' (but don't stop at first find) and walk that list, > deleting matching headlines along the way. [kicks self] > #+begin_src emacs-lisp > (defun my-export-delete-headlines-tagged-noheading (backend) > (dolist (hl (nreverse (org-element-map (org-element-parse-buffer 'headline) > 'headline > 'identity))) > (when (member "noheading" (org-element-property :tags hl)) > (goto-char (org-element-property :begin hl)) > (delete-region (point) (progn (forward-line) (point)))))) > #+end_src > > Another option is to use `org-map-entries', which doesn't require to > reverse the results (and doesn't use Org Element). This is left as an > exercise. Thank you, there is lots of useful stuff to learn from in your reply, as always. Myles