From: Dan Davison <dandavison7@gmail.com>
To: Bastien <bastien.guerry@wikimedia.fr>
Cc: Org <emacs-orgmode@gnu.org>, mail@christianmoe.com
Subject: [PATCH] Re: [BUG] htmlp and latexp
Date: Tue, 22 Feb 2011 11:08:57 -0800 [thread overview]
Message-ID: <m1fwrfnaye.fsf_-_@int200.counsyl.com> (raw)
In-Reply-To: <87d3mpekpg.fsf@gnu.org> (Bastien's message of "Fri, 18 Feb 2011 10:49:31 +0100")
Bastien <bastien.guerry@wikimedia.fr> writes:
> Hi Dan,
>
> Dan Davison <dandavison7@gmail.com> writes:
>
>> I was thinking that if it were defvard in org.el, say as
>>
>> (defvar org-export-current-backend nil)
>>
>> then any code could use (null org-export-current-backend) to test
>> whether org is currently exporting or not. Otherwise, the code has to be
>> certain that it has been called during export if it is going to access
>> the variable.
>
> I agree this would be a good idea. If you have time, please send a
> patch. Otherwise, I just put it [somewhere] in my own todo list...
Here's a patch. I note that Eric S pointed out in a separate thread that
org-current-export-file can be used for a similar purpose.
Incidentally, I would suggest that org-current-export-file and
org-current-export-dir are renamed so that they are within the
org-export-* namespace. There are other areas of Org where I think the
naming should be standardised, notably in org-src.el: the distinction
between org-src-* and org-edit-src-* is unclear IMO. I think this is
kind of important, because in learning emacs one does makes use of these
namespace conventions, e.g. C-h v <initial-letters> TAB. How much change
would there be if we demanded that *all* variables defined in org-foo.el
are named within the org-foo-* namespace?
Dan
commit ac9baa44c7c0baeb8ed3133ed79bc22c4eb6acc7
Author: Dan Davison <dandavison7@gmail.com>
Date: Sun Feb 20 08:55:39 2011 -0800
New variable storing current export backend symbol, or nil.
* lisp/org-exp.el (org-export-current-backend): Variable to
hold current export backend symbol when export is in progress.
(org-export-preprocess-string): Bind `org-export-current-backend' to
backend symbols during export.
* lisp/org-exp-blocks.el (org-export-blocks-format-ditaa): Dynamically
scoped variable `backend' renamed as `org-export-current-backend'
(org-export-blocks-format-dot): Dynamically scoped variable `backend'
renamed as `org-export-current-backend'
(org-export-blocks-format-comment): Dynamically scoped variable
`backend' renamed as `org-export-current-backend'
* lisp/org-exp.el (org-export-convert-protected-spaces): Dynamically
scoped variable `backend' renamed as `org-export-current-backend'
* lisp/org-publish.el (org-publish-project-alist): Dynamically scoped
variable `backend' renamed as `org-export-current-backend'
(org-export-current-backend): Dynamically scoped variable `backend'
renamed as `org-export-current-backend'
(org-publish-aux-preprocess): Dynamically scoped variable `backend'
renamed as `org-export-current-backend'
* lisp/org-special-blocks.el (org-export-current-backend): Dynamically
scoped variable `backend' renamed as `org-export-current-backend'
(org-special-blocks-make-special-cookies): Dynamically scoped variable
`backend' renamed as `org-export-current-backend'
diff --git a/lisp/org-exp-blocks.el b/lisp/org-exp-blocks.el
index 1fac3bf..15549b8 100644
--- a/lisp/org-exp-blocks.el
+++ b/lisp/org-exp-blocks.el
@@ -242,7 +242,7 @@ passed to the ditaa utility as command line arguments."
"\n")))
(prog1
(cond
- ((member backend '(html latex docbook))
+ ((member org-export-current-backend '(html latex docbook))
(unless (file-exists-p out-file)
(mapc ;; remove old hashed versions of this file
(lambda (file)
@@ -301,7 +301,7 @@ digraph data_relationships {
(out-file (concat (car out-file-parts) "_" hash "." (cdr out-file-parts))))
(prog1
(cond
- ((member backend '(html latex docbook))
+ ((member org-export-current-backend '(html latex docbook))
(unless (file-exists-p out-file)
(mapc ;; remove old hashed versions of this file
(lambda (file)
@@ -333,7 +333,7 @@ other backends, it converts the comment into an EXAMPLE segment."
(let ((owner (if headers (car headers)))
(title (if (cdr headers) (mapconcat 'identity (cdr headers) " "))))
(cond
- ((eq backend 'html) ;; We are exporting to HTML
+ ((eq org-export-current-backend 'html) ;; We are exporting to HTML
(concat "#+BEGIN_HTML\n"
"<div class=\"org-comment\""
(if owner (format " id=\"org-comment-%s\" " owner))
diff --git a/lisp/org-exp.el b/lisp/org-exp.el
index 9a35b00..e239c25 100644
--- a/lisp/org-exp.el
+++ b/lisp/org-exp.el
@@ -584,6 +584,14 @@ table.el tables."
(defconst org-level-max 20)
+(defvar org-export-current-backend nil
+ "During export, this will be bound to a symbol such as 'html,
+ 'latex, 'docbook, 'ascii, etc, indicating which of the export
+ backends is in use. Otherwise it has the value nil. Users
+ should not attempt to change the value of this variable
+ directly, but it can be used in code to test whether export is
+ in progress, and if so, what the backend is.")
+
(defvar org-current-export-file nil) ; dynamically scoped parameter
(defvar org-current-export-dir nil) ; dynamically scoped parameter
(defvar org-export-opt-plist nil
@@ -1033,7 +1041,7 @@ to export. It then creates a temporary buffer where it does its job.
The result is then again returned as a string, and the exporter works
on this string to produce the exported version."
(interactive)
- (let* ((backend (plist-get parameters :for-backend))
+ (let* ((org-export-current-backend (plist-get parameters :for-backend))
(archived-trees (plist-get parameters :archived-trees))
(inhibit-read-only t)
(drawers org-drawers)
@@ -1091,22 +1099,22 @@ on this string to produce the exported version."
;; Change lists ending. Other parts of export may insert blank
;; lines and lists' structure could be altered.
- (org-export-mark-list-end backend)
+ (org-export-mark-list-end org-export-current-backend)
;; Export code blocks
(org-export-blocks-preprocess)
;; Mark lists with properties
- (org-export-mark-list-properties backend)
+ (org-export-mark-list-properties org-export-current-backend)
;; Handle source code snippets
- (org-export-replace-src-segments-and-examples backend)
+ (org-export-replace-src-segments-and-examples org-export-current-backend)
;; Protect short examples marked by a leading colon
(org-export-protect-colon-examples)
;; Protected spaces
- (org-export-convert-protected-spaces backend)
+ (org-export-convert-protected-spaces org-export-current-backend)
;; Normalize footnotes
(when (plist-get parameters :footnotes)
@@ -1122,7 +1130,7 @@ on this string to produce the exported version."
;; Get rid of drawers
(org-export-remove-or-extract-drawers
- drawers (plist-get parameters :drawers) backend)
+ drawers (plist-get parameters :drawers) org-export-current-backend)
;; Get the correct stuff before the first headline
(when (plist-get parameters :skip-before-1st-heading)
@@ -1145,7 +1153,7 @@ on this string to produce the exported version."
;; Select and protect backend specific stuff, throw away stuff
;; that is specific for other backends
(run-hooks 'org-export-preprocess-before-selecting-backend-code-hook)
- (org-export-select-backend-specific-text backend)
+ (org-export-select-backend-specific-text org-export-current-backend)
;; Protect quoted subtrees
(org-export-protect-quoted-subtrees)
@@ -1166,7 +1174,7 @@ on this string to produce the exported version."
;; Attach captions to the correct object
(setq target-alist (org-export-attach-captions-and-attributes
- backend target-alist))
+ org-export-current-backend target-alist))
;; Find matches for radio targets and turn them into internal links
(org-export-mark-radio-links)
@@ -1198,20 +1206,20 @@ on this string to produce the exported version."
(run-hooks 'org-export-preprocess-before-backend-specifics-hook)
;; LaTeX-specific preprocessing
- (when (eq backend 'latex)
+ (when (eq org-export-current-backend 'latex)
(require 'org-latex nil)
(org-export-latex-preprocess parameters))
;; ASCII-specific preprocessing
- (when (eq backend 'ascii)
+ (when (eq org-export-current-backend 'ascii)
(org-export-ascii-preprocess parameters))
;; HTML-specific preprocessing
- (when (eq backend 'html)
+ (when (eq org-export-current-backend 'html)
(org-export-html-preprocess parameters))
;; DocBook-specific preprocessing
- (when (eq backend 'docbook)
+ (when (eq org-export-current-backend 'docbook)
(require 'org-docbook nil)
(org-export-docbook-preprocess parameters))
@@ -1567,13 +1575,13 @@ from the buffer."
(replace-match
(org-add-props
(cond
- ((eq backend 'latex)
+ ((eq org-export-current-backend 'latex)
(format "\\hspace{%dex}" (- (match-end 0) (match-beginning 0))))
- ((eq backend 'html)
+ ((eq org-export-current-backend 'html)
(org-add-props (match-string 0) nil
'org-whitespace (- (match-end 0) (match-beginning 0))))
- ;; ((eq backend 'docbook))
- ((eq backend 'ascii)
+ ;; ((eq org-export-current-backend 'docbook))
+ ((eq org-export-current-backend 'ascii)
(org-add-props (match-string 0) '(org-whitespace t)))
(t (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
'(org-protected t))
diff --git a/lisp/org-publish.el b/lisp/org-publish.el
index 649e39a..5bc4f28 100644
--- a/lisp/org-publish.el
+++ b/lisp/org-publish.el
@@ -931,7 +931,7 @@ the project."
;;; Index generation
-(defvar backend) ; dynamically scoped
+(defvar org-export-current-backend) ; dynamically scoped
(defun org-publish-aux-preprocess ()
"Find index entries and write them to an .orgx file."
(let ((case-fold-search t)
@@ -942,7 +942,7 @@ the project."
(re-search-forward "^[ \t]*#\\+index:[ \t]*\\(.*?\\)[ \t]*$" nil t)
(> (match-end 1) (match-beginning 1)))
(setq entry (match-string 1))
- (when (eq backend 'latex)
+ (when (eq org-export-current-backend 'latex)
(replace-match (format "\\index{%s}" entry) t t))
(save-excursion
(ignore-errors (org-back-to-heading t))
diff --git a/lisp/org-special-blocks.el b/lisp/org-special-blocks.el
index 54fb6cb..f253787 100644
--- a/lisp/org-special-blocks.el
+++ b/lisp/org-special-blocks.el
@@ -45,11 +45,12 @@
by org-special-blocks. These blocks will presumably be
interpreted by other mechanisms.")
-(defvar backend) ; dynamically scoped
+(defvar org-export-current-backend) ; dynamically scoped
(defun org-special-blocks-make-special-cookies ()
"Adds special cookies when #+begin_foo and #+end_foo tokens are
seen. This is run after a few special cases are taken care of."
- (when (or (eq backend 'html) (eq backend 'latex))
+ (when (or (eq org-export-current-backend 'html)
+ (eq org-export-current-backend 'latex))
(goto-char (point-min))
(while (re-search-forward "^[ \t]*#\\+\\(begin\\|end\\)_\\(.*\\)$" nil t)
(unless (org-string-match-p org-special-blocks-ignore-regexp (match-string 2))
>
> Thanks!
next prev parent reply other threads:[~2011-02-22 19:09 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-15 22:23 [BUG] htmlp and latexp Dan Davison
2011-02-16 8:44 ` Christian Moe
2011-02-16 10:01 ` Bastien
2011-02-16 10:01 ` Bastien
2011-02-16 10:07 ` Dan Davison
2011-02-16 10:44 ` Bastien
2011-02-16 17:11 ` Dan Davison
2011-02-18 9:49 ` Bastien
2011-02-22 19:08 ` Dan Davison [this message]
2011-03-01 19:06 ` [PATCH] " Bastien
2011-03-01 19:09 ` Bastien
2011-03-02 2:01 ` Dan Davison
2011-03-07 15:32 ` Bastien
2011-02-16 10:03 ` Bastien
2011-02-17 8:46 ` Andreas Leha
2011-02-17 10:19 ` Sébastien Vauban
2011-02-17 10:50 ` Jambunathan K
2011-02-17 23:14 ` Jeff Horn
2011-02-17 23:32 ` Nick Dokos
2011-02-17 23:44 ` Bastien
2011-02-18 8:09 ` Christian Moe
2011-02-18 8:22 ` Andreas Leha
2011-02-18 8:49 ` Bastien
2011-02-18 22:52 ` Jeff Horn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1fwrfnaye.fsf_-_@int200.counsyl.com \
--to=dandavison7@gmail.com \
--cc=bastien.guerry@wikimedia.fr \
--cc=emacs-orgmode@gnu.org \
--cc=mail@christianmoe.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).