summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2012-10-02 12:46:44 (GMT)
committer Bastien Guerry <bzg@altern.org>2012-10-02 12:47:04 (GMT)
commitd042e3add1e62b4273524673fe1a18009d69a439 (patch)
treee2d3e195d72099e698348d46f50ab04ae4e23326
parent16e0730342725b7ff9a76d0a355dbc574ceced00 (diff)
downloadorg-mode-d042e3add1e62b4273524673fe1a18009d69a439.zip
org-mode-d042e3add1e62b4273524673fe1a18009d69a439.tar.gz
org-odt.el (and org-e-odt.el): Simplify the way style/schema files are found
* org-odt.el (org-odt-lib-dir, org-odt-data-dir) (org-odt-schema-dir-list, org-odt-styles-dir-list): Delete. (org-export-odt-schema-dir, org-odt-styles-dir): Infer the correct directories without requiring other variables. * org-fixup.el (org-make-org-version, org-make-autoloads): Don't define `org-odt-data-dir' in org-version.el. * contrib/lisp/org-e-odt.el (org-e-odt-lib-dir, org-e-odt-data-dir) (org-e-odt-schema-dir-list, org-e-odt-styles-dir-list): Delete. (org-e-odt-schema-dir, org-e-odt-styles-dir): Infer the correct directories without requiring other variables.
-rw-r--r--contrib/lisp/org-e-odt.el155
-rw-r--r--lisp/org-odt.el145
-rw-r--r--mk/org-fixup.el14
3 files changed, 99 insertions, 215 deletions
diff --git a/contrib/lisp/org-e-odt.el b/contrib/lisp/org-e-odt.el
index b2f7479..d7f21b6 100644
--- a/contrib/lisp/org-e-odt.el
+++ b/contrib/lisp/org-e-odt.el
@@ -107,18 +107,6 @@
;;; Internal Variables
-(defconst org-e-odt-lib-dir
- (file-name-directory load-file-name)
- "Location of ODT exporter.
-Use this to infer values of `org-e-odt-styles-dir' and
-`org-e-odt-schema-dir'.")
-
-(defvar org-e-odt-data-dir
- (expand-file-name "../../etc/" org-e-odt-lib-dir)
- "Data directory for ODT exporter.
-Use this to infer values of `org-e-odt-styles-dir' and
-`org-e-odt-schema-dir'.")
-
(defconst org-e-odt-special-string-regexps
'(("\\\\-" . "&#x00ad;\\1") ; shy
("---\\([^-]\\)" . "&#x2014;\\1") ; mdash
@@ -126,69 +114,34 @@ Use this to infer values of `org-e-odt-styles-dir' and
("\\.\\.\\." . "&#x2026;")) ; hellip
"Regular expressions for special string conversion.")
-(defconst org-e-odt-schema-dir-list
- (list
- (and org-e-odt-data-dir
- (expand-file-name "./schema/" org-e-odt-data-dir)) ; bail out
- (eval-when-compile
- (and (boundp 'org-e-odt-data-dir) org-e-odt-data-dir ; see make install
- (expand-file-name "./schema/" org-e-odt-data-dir))))
- "List of directories to search for OpenDocument schema files.
-Use this list to set the default value of
-`org-e-odt-schema-dir'. The entries in this list are
-populated heuristically based on the values of `org-e-odt-lib-dir'
-and `org-e-odt-data-dir'.")
-
-(defconst org-e-odt-styles-dir-list
- (list
- (and org-e-odt-data-dir
- (expand-file-name "./styles/" org-e-odt-data-dir)) ; bail out
- (eval-when-compile
- (and (boundp 'org-e-odt-data-dir) org-e-odt-data-dir ; see make install
- (expand-file-name "./styles/" org-e-odt-data-dir)))
- (expand-file-name "../../etc/styles/" org-e-odt-lib-dir) ; git
- (expand-file-name "./etc/styles/" org-e-odt-lib-dir) ; elpa
- (expand-file-name "./org/" data-directory) ; system
- )
- "List of directories to search for OpenDocument styles files.
-See `org-e-odt-styles-dir'. The entries in this list are populated
-heuristically based on the values of `org-e-odt-lib-dir' and
-`org-e-odt-data-dir'.")
-
(defconst org-e-odt-styles-dir
- (let* ((styles-dir
- (catch 'styles-dir
- (message "Debug (org-e-odt): Searching for OpenDocument styles files...")
- (mapc (lambda (styles-dir)
- (when styles-dir
- (message "Debug (org-e-odt): Trying %s..." styles-dir)
- (when (and (file-readable-p
- (expand-file-name
- "OrgOdtContentTemplate.xml" styles-dir))
- (file-readable-p
- (expand-file-name
- "OrgOdtStyles.xml" styles-dir)))
- (message "Debug (org-e-odt): Using styles under %s"
- styles-dir)
- (throw 'styles-dir styles-dir))))
- org-e-odt-styles-dir-list)
- nil)))
- (unless styles-dir
- (error "Error (org-e-odt): Cannot find factory styles files, aborting"))
- styles-dir)
+ (let* ((d (expand-file-name (org-find-library-dir "org-e-odt.el")))
+ (styles-dir-list (list
+ (concat d "../../etc/styles/") ;; Git
+ (concat d "../../etc/org/") ;; system
+ (concat d "../etc/org/"))) ;; ELPA org-plus
+ styles-dir)
+ (setq styles-dir
+ (car
+ (delq nil
+ (mapcar (lambda (sd)
+ (when (and (file-readable-p
+ (expand-file-name
+ "OrgOdtContentTemplate.xml" sd))
+ (file-readable-p
+ (expand-file-name
+ "OrgOdtStyles.xml" sd)))
+ sd))
+ styles-dir-list))))
+ (or styles-dir
+ (error "Cannot find factory styles files for Org ODT, aborting")))
"Directory that holds auxiliary XML files used by the ODT exporter.
This directory contains the following XML files -
- \"OrgOdtStyles.xml\" and \"OrgOdtContentTemplate.xml\". These
- XML files are used as the default values of
- `org-e-odt-styles-file' and
- `org-e-odt-content-template-file'.
-
-The default value of this variable varies depending on the
-version of org in use and is initialized from
-`org-e-odt-styles-dir-list'. Note that the user could be using org
-from one of: org's own private git repository, GNU ELPA tar or
-standard Emacs.")
+\"OrgOdtStyles.xml\" and \"OrgOdtContentTemplate.xml\".
+These XML files are used as the default values of
+`org-export-odt-styles-file' and
+`org-export-odt-content-template-file'.")
(defconst org-e-odt-bookmark-prefix "OrgXref.")
@@ -380,28 +333,26 @@ visually."
;;;; Document schema
(defcustom org-e-odt-schema-dir
- (let* ((schema-dir
- (catch 'schema-dir
- (message "Debug (org-e-odt): Searching for OpenDocument schema files...")
- (mapc
- (lambda (schema-dir)
- (when schema-dir
- (message "Debug (org-e-odt): Trying %s..." schema-dir)
- (when (and (file-readable-p
- (expand-file-name "od-manifest-schema-v1.2-cs01.rnc"
- schema-dir))
- (file-readable-p
- (expand-file-name "od-schema-v1.2-cs01.rnc"
- schema-dir))
- (file-readable-p
- (expand-file-name "schemas.xml" schema-dir)))
- (message "Debug (org-e-odt): Using schema files under %s"
- schema-dir)
- (throw 'schema-dir schema-dir))))
- org-e-odt-schema-dir-list)
- (message "Debug (org-e-odt): No OpenDocument schema files installed")
- nil)))
- schema-dir)
+ (let* ((d (expand-file-name (org-find-library-dir "org-e-odt.el")))
+ (schema-dir-list (list (concat d "../etc/schema/"))) ;; ELPA and Git
+ schema-dir)
+ (setq schema-dir
+ (car
+ (delq nil
+ (mapcar (lambda (sd)
+ (when (and (file-readable-p
+ (expand-file-name
+ "od-manifest-schema-v1.2-cs01.rnc" sd))
+ (file-readable-p
+ (expand-file-name
+ "od-schema-v1.2-cs01.rnc" sd))
+ (file-readable-p
+ (expand-file-name
+ "schemas.xml" sd)))
+ sd))
+ schema-dir-list))))
+ (or schema-dir
+ (message "No OpenDocument schema files installed")))
"Directory that contains OpenDocument schema files.
This directory contains:
@@ -414,15 +365,13 @@ that `rng-schema-locating-files' is updated and auto-validation
of OpenDocument XML takes place based on the value
`rng-nxml-auto-validate-flag'.
-The default value of this variable varies depending on the
-version of org in use and is initialized from
-`org-e-odt-schema-dir-list'. The OASIS schema files are available
-only in the org's private git repository. It is *not* bundled
-with GNU ELPA tar or standard Emacs distribution."
+The OASIS schema files are available only in the Org's private
+git repository. It is *not* bundled with GNU ELPA tar or
+standard Emacs distribution."
:type '(choice
(const :tag "Not set" nil)
(directory :tag "Schema directory"))
- :group 'org-export-e-odt
+ :group 'org-e-odt
:version "24.1"
:set
(lambda (var value)
@@ -439,16 +388,13 @@ Also add it to `rng-schema-locating-files'."
(expand-file-name "schemas.xml" schema-dir)))
schema-dir
(when value
- (message "Error (org-e-odt): %s has no OpenDocument schema files"
- value))
+ (message "No OpenDocument schema files" value))
nil)))
(when org-e-odt-schema-dir
(eval-after-load 'rng-loc
'(add-to-list 'rng-schema-locating-files
(expand-file-name "schemas.xml"
org-e-odt-schema-dir))))))
-
-
;;;; Document styles
(defcustom org-e-odt-content-template-file nil
@@ -1882,8 +1828,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
;;;; Latex Environment
-
-(eval-after-load 'org-odt
+(eval-after-load 'org-e-odt
'(ad-deactivate 'org-format-latex-as-mathml))
;; (defadvice org-format-latex-as-mathml ; FIXME
diff --git a/lisp/org-odt.el b/lisp/org-odt.el
index 7e7e5e1..249bd0a 100644
--- a/lisp/org-odt.el
+++ b/lisp/org-odt.el
@@ -84,52 +84,27 @@
("\\.\\.\\." . "&#x2026;")) ; hellip
"Regular expressions for special string conversion.")
-(defconst org-odt-lib-dir (file-name-directory load-file-name)
- "Location of ODT exporter.
-Use this to infer values of `org-odt-styles-dir' and
-`org-export-odt-schema-dir'.")
-
-(defvar org-odt-data-dir nil
- "Data directory for ODT exporter.
-Use this to infer values of `org-odt-styles-dir' and
-`org-export-odt-schema-dir'.")
-
-(defconst org-odt-schema-dir-list
- (list
- (and org-odt-data-dir
- (expand-file-name "./schema/" org-odt-data-dir)) ; bail out
- (eval-when-compile
- (and (boundp 'org-odt-data-dir) org-odt-data-dir ; see make install
- (expand-file-name "./schema/" org-odt-data-dir))))
- "List of directories to search for OpenDocument schema files.
-Use this list to set the default value of
-`org-export-odt-schema-dir'. The entries in this list are
-populated heuristically based on the values of `org-odt-lib-dir'
-and `org-odt-data-dir'.")
-
(defcustom org-export-odt-schema-dir
- (let* ((schema-dir
- (catch 'schema-dir
- (message "Debug (org-odt): Searching for OpenDocument schema files...")
- (mapc
- (lambda (schema-dir)
- (when schema-dir
- (message "Debug (org-odt): Trying %s..." schema-dir)
- (when (and (file-readable-p
- (expand-file-name "od-manifest-schema-v1.2-cs01.rnc"
- schema-dir))
- (file-readable-p
- (expand-file-name "od-schema-v1.2-cs01.rnc"
- schema-dir))
- (file-readable-p
- (expand-file-name "schemas.xml" schema-dir)))
- (message "Debug (org-odt): Using schema files under %s"
- schema-dir)
- (throw 'schema-dir schema-dir))))
- org-odt-schema-dir-list)
- (message "Debug (org-odt): No OpenDocument schema files installed")
- nil)))
- schema-dir)
+ (let* ((d (expand-file-name "../" (org-find-library-dir "org-odt.el")))
+ (schema-dir-list (list (concat d "etc/schema/"))) ;; ELPA and Git
+ schema-dir)
+ (setq schema-dir
+ (car
+ (delq nil
+ (mapcar (lambda (sd)
+ (when (and (file-readable-p
+ (expand-file-name
+ "od-manifest-schema-v1.2-cs01.rnc" sd))
+ (file-readable-p
+ (expand-file-name
+ "od-schema-v1.2-cs01.rnc" sd))
+ (file-readable-p
+ (expand-file-name
+ "schemas.xml" sd)))
+ sd))
+ schema-dir-list))))
+ (or schema-dir
+ (message "No OpenDocument schema files installed")))
"Directory that contains OpenDocument schema files.
This directory contains:
@@ -142,11 +117,9 @@ that `rng-schema-locating-files' is updated and auto-validation
of OpenDocument XML takes place based on the value
`rng-nxml-auto-validate-flag'.
-The default value of this variable varies depending on the
-version of org in use and is initialized from
-`org-odt-schema-dir-list'. The OASIS schema files are available
-only in the org's private git repository. It is *not* bundled
-with GNU ELPA tar or standard Emacs distribution."
+The OASIS schema files are available only in the Org's private
+git repository. It is *not* bundled with GNU ELPA tar or
+standard Emacs distribution."
:type '(choice
(const :tag "Not set" nil)
(directory :tag "Schema directory"))
@@ -167,8 +140,7 @@ Also add it to `rng-schema-locating-files'."
(expand-file-name "schemas.xml" schema-dir)))
schema-dir
(when value
- (message "Error (org-odt): %s has no OpenDocument schema files"
- value))
+ (message "No OpenDocument schema files" value))
nil)))
(when org-export-odt-schema-dir
(eval-after-load 'rng-loc
@@ -176,56 +148,33 @@ Also add it to `rng-schema-locating-files'."
(expand-file-name "schemas.xml"
org-export-odt-schema-dir))))))
-(defconst org-odt-styles-dir-list
- (list
- (and org-odt-data-dir
- (expand-file-name "./styles/" org-odt-data-dir)) ; bail out
- (eval-when-compile
- (and (boundp 'org-odt-data-dir) org-odt-data-dir ; see make install
- (expand-file-name "./styles/" org-odt-data-dir)))
- (expand-file-name "../etc/styles/" org-odt-lib-dir) ; git
- (expand-file-name "./etc/styles/" org-odt-lib-dir) ; elpa
- (expand-file-name "./org/" data-directory) ; system
- )
- "List of directories to search for OpenDocument styles files.
-See `org-odt-styles-dir'. The entries in this list are populated
-heuristically based on the values of `org-odt-lib-dir' and
-`org-odt-data-dir'.")
-
(defconst org-odt-styles-dir
- (let* ((styles-dir
- (catch 'styles-dir
- (message "Debug (org-odt): Searching for OpenDocument styles files...")
- (mapc (lambda (styles-dir)
- (when styles-dir
- (message "Debug (org-odt): Trying %s..." styles-dir)
- (when (and (file-readable-p
- (expand-file-name
- "OrgOdtContentTemplate.xml" styles-dir))
- (file-readable-p
- (expand-file-name
- "OrgOdtStyles.xml" styles-dir)))
- (message "Debug (org-odt): Using styles under %s"
- styles-dir)
- (throw 'styles-dir styles-dir))))
- org-odt-styles-dir-list)
- nil)))
- (unless styles-dir
- (error "Error (org-odt): Cannot find factory styles files, aborting"))
- styles-dir)
+ (let* ((d (expand-file-name "../" (org-find-library-dir "org-odt.el")))
+ (styles-dir-list (list
+ (concat d "etc/styles/") ;; ELPA and Git
+ (concat d "etc/org/")))
+ styles-dir)
+ (setq styles-dir
+ (car
+ (delq nil
+ (mapcar (lambda (sd)
+ (when (and (file-readable-p
+ (expand-file-name
+ "OrgOdtContentTemplate.xml" sd))
+ (file-readable-p
+ (expand-file-name
+ "OrgOdtStyles.xml" sd)))
+ sd))
+ styles-dir-list))))
+ (or styles-dir
+ (error "Cannot find factory styles files for Org ODT, aborting")))
"Directory that holds auxiliary XML files used by the ODT exporter.
This directory contains the following XML files -
- \"OrgOdtStyles.xml\" and \"OrgOdtContentTemplate.xml\". These
- XML files are used as the default values of
- `org-export-odt-styles-file' and
- `org-export-odt-content-template-file'.
-
-The default value of this variable varies depending on the
-version of org in use and is initialized from
-`org-odt-styles-dir-list'. Note that the user could be using org
-from one of: org's own private git repository, GNU ELPA tar or
-standard Emacs.")
+\"OrgOdtStyles.xml\" and \"OrgOdtContentTemplate.xml\".
+These XML files are used as the default values of
+`org-export-odt-styles-file' and
+`org-export-odt-content-template-file'.")
(defvar org-odt-file-extensions
'(("odt" . "OpenDocument Text")
diff --git a/mk/org-fixup.el b/mk/org-fixup.el
index 7b59efb..5754274 100644
--- a/mk/org-fixup.el
+++ b/mk/org-fixup.el
@@ -50,14 +50,7 @@ the Git work tree)."
\"The Git version of org-mode.
Inserted by installing org-mode or when a release is made.\"
(let ((org-git-version \"" org-git-version "\"))
- org-git-version))
-;;;\#\#\#autoload
-\(defvar org-odt-data-dir \"" odt-dir "\"
- \"The location of ODT styles.\")
-\f\n\(provide 'org-version\)
-\f\n;; Local Variables:\n;; version-control: never
-;; no-byte-compile: t
-;; coding: utf-8\n;; End:\n;;; org-version.el ends here\n")
+ org-git-version))")
(toggle-read-only 0)
(write-file "org-version.el")))
@@ -87,10 +80,7 @@ force re-compilation. This function is provided for easier
manual install when the build system can't be used."
(let* ((origin default-directory)
(dirlisp (org-find-library-dir "org"))
- (dirorg (concat dirlisp "../" ))
- (dirodt (if (boundp 'org-odt-data-dir)
- org-odt-data-dir
- (concat dirorg "etc/"))))
+ (dirorg (concat dirlisp "../" )))
(unwind-protect
(progn
(cd dirlisp)