diff --git a/site-lisp/ox-my-html/ox-my-html.el b/site-lisp/ox-my-html/ox-my-html.el index d87fd41..50c5cb7 100644 --- a/site-lisp/ox-my-html/ox-my-html.el +++ b/site-lisp/ox-my-html/ox-my-html.el @@ -45,15 +45,18 @@ (org-export-define-derived-backend 'my-html 'html :menu-entry '(?h 1 - ((?M "As my-HTML buffer" org-my-html-export-as-html) - (?m "As my-HTML file" org-my-html-export-to-html) - (?O "As my-HTML file and open" + ((?M "As MY-HTML buffer" org-my-html-export-as-html) + (?m "As MY-HTML file" org-my-html-export-to-html) + (?O "As MY-HTML file and open" (lambda (a s v b) (if a (org-my-html-export-to-html t s v b) (org-open-file (org-my-html-export-to-html nil s v b))))))) :options-alist - '((:with-html-svg-embedding "HTML_EMBED_SVG" ;; groks nil as "nil" in Org file! - "html-embed-svg" org-html-embed-svg)) + '((:html-exclude-embed-svgs "HTML_EXCLUDE_EMBED_SVGS" nil + org-html-exclude-embed-svgs split) + (:html-select-embed-svgs "HTML_SELECT_EMBED_SVGS" nil + org-html-select-embed-svgs split) + (:with-html-svg-embedding nil "html-embed-svg" org-html-embed-svg)) :translate-alist '((link . org-my-html-link))) @@ -63,8 +66,10 @@ ;;;; Links :: Embed SVG (defcustom org-html-embed-svg nil - "Non-nil means embed SVG images into exported my-HTML pages, -otherwise link to SVG images from exported my-HTML pages. Use + "Non-nil means embed SVG images into exported HTML pages, +otherwise link to SVG images from exported HTML pages. + +This option can also be set with #+OPTIONS: html-embed-svg:t or #+OPTIONS: html-embed-svg:nil @@ -73,16 +78,44 @@ to enable or disable SVG embedding in Org files." :version "30.0" :type 'boolean) +(defcustom org-html-exclude-embed-svgs nil + "List of SVG paths to exclude from SVG embedding. + +This option overrules an `org-html-embed-svg' non-nil value. + +It can also be set with the HTML_EXCLUDE_EMBED_SVGS keyword." + :group 'org-export-html + :version "30.0" + :type '(repeat (string :path "Path")) + :safe (lambda (x) (and (listp x) (cl-every #'stringp x)))) + +(defcustom org-html-select-embed-svgs nil + "List of SVG paths to select for SVG embedding. + +This option overrules an `org-html-embed-svg' nil value. + +It can also be set with the HTML_SELECT_EMBED_SVGS keyword." + :group 'org-export-html + :version "30.0" + :type '(repeat (string :path "Path")) + :safe (lambda (x) (and (listp x) (cl-every #'stringp x)))) + ;;; Transcode Functions ;;;; Link -(defun org--my-html-embed-svg-p (link) - "Check whether LINK links to an SVG file to embed." +(defun org--my-html-embed-svg-p (link path info) + "Check whether LINK and INFO specify to embed the SVG file named PATH. +LINK must have no contents and link to an SVG file. INFO may contain +lists of SVG files to select for and/or to exclude from embedding." (and (not (org-element-contents link)) (let ((case-fold-search t)) - (string-match-p ".svg\\'" (org-element-property :path link))))) + (string-match-p ".svg\\'" (org-element-property :path link))) + (or (and (plist-get info :with-html-svg-embedding) + (not (member path (plist-get info :html-exclude-embed-svgs)))) + (and (not (plist-get info :with-html-svg-embedding)) + (member path (plist-get info :html-select-embed-svgs)))))) (defun org--my-html-svg-contents (path) "Return the SVG contents of the file named PATH." @@ -97,7 +130,7 @@ to enable or disable SVG embedding in Org files." (buffer-string))) (defun org-my-html-link (link desc info) - "Transcode a LINK object from Org to MY-HTML. + "Transcode a LINK object from Org to HTML. DESC is the description part of the link, or the empty string. INFO is a plist holding contextual information. See `org-export-data'. This function can embed or link SVG images @@ -176,8 +209,7 @@ contrary to `org-html-link' which can only link such images." ;; Link type is handled by a special function. ((org-export-custom-protocol-maybe link desc 'html info)) ;; Embed SVG. - ((and (plist-get info :with-html-svg-embedding) - (org--my-html-embed-svg-p link)) + ((org--my-html-embed-svg-p link path info) (org--my-html-svg-contents path)) ;; Image file. ((and (plist-get info :html-inline-images) @@ -298,7 +330,7 @@ contrary to `org-html-link' which can only link such images." ;;;###autoload (defun org-my-html-export-as-html (&optional async subtreep visible-only body-only ext-plist) - "Export current buffer to a MY-HTML buffer. + "Export current buffer to an HTML buffer. If narrowing is active in the current buffer, only export its narrowed part. @@ -334,7 +366,7 @@ is non-nil." ;;;###autoload (defun org-my-html-export-to-html (&optional async subtreep visible-only body-only ext-plist) - "Export current buffer to a MY-HTML file. + "Export current buffer to an HTML file. If narrowing is active in the current buffer, only export its narrowed part.