From d042e3add1e62b4273524673fe1a18009d69a439 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Tue, 2 Oct 2012 14:46:44 +0200 Subject: [PATCH] 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. --- contrib/lisp/org-e-odt.el | 155 ++++++++++++-------------------------- lisp/org-odt.el | 145 ++++++++++++----------------------- mk/org-fixup.el | 14 +--- 3 files changed, 99 insertions(+), 215 deletions(-) diff --git a/contrib/lisp/org-e-odt.el b/contrib/lisp/org-e-odt.el index b2f7479d6..d7f21b6ef 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 '(("\\\\-" . "­\\1") ; shy ("---\\([^-]\\)" . "—\\1") ; mdash @@ -126,69 +114,34 @@ Use this to infer values of `org-e-odt-styles-dir' and ("\\.\\.\\." . "…")) ; 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 7e7e5e1b0..249bd0a57 100644 --- a/lisp/org-odt.el +++ b/lisp/org-odt.el @@ -84,52 +84,27 @@ ("\\.\\.\\." . "…")) ; 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 7b59efb88..57542749c 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)