diff --git a/doc/org.texi b/doc/org.texi index c9eaab940..ab32c9132 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -6772,18 +6772,26 @@ needed to invoke the script. Using the line above, you can set the following viewing options: @example +path: @r{The path to the script. The default is to grab the script from} + @r{@url{http://orgmode.org/org-info.js}, but you might want to have} + @r{a local copy and use a path like @samp{../scripts/org-info.js}.} view: @r{Initial view when website is first shown. Possible values are} info @r{Info-like interface with one section per page.} overview @r{Folding interface, initially showing only top-level.} content @r{Folding interface, starting with all headlines visible.} showall @r{Folding interface, all headlines and text visible.} -toc: @r{Should the table of content be visible as the first section?} +sdepth: @r{Maximum headline level that will still become an independent} + @r{section for info and folding modes. The default is taken from} + @r{@code{org-headline-levels} (= the @code{H} @code{#+OPTIONS} switch).} + @r{If this is smaller than in @code{org-headline-levels}, each} + @r{info/folding section can still contain children headlines.} + @r{Default is @code{org-headline-levels} (= the @code{H} @code{#+OPTIONS} switch).} +toc: @r{Should the table of content @emph{initially} be visible?} @r{Even when @code{nil}, you can always get to the toc with @kbd{i}.} -ltoc: @r{Should there be short contents in each section?} -path: @r{The path to the script. The default is to grab the script from} - @r{@url{http://orgmode.org/org-info.js}, but you might want to have} - @r{a local copy use a path like @samp{../scripts/org-info.js}.} -mouse: @r{Headings are highlighted when the mouse is over the. Should be} +tdepth: @r{The depth of the table of contents. The defaults are taken from} + @r{the variables @code{org-headline-levels} and @code{org-export-with-toc}.} +ltoc: @r{Should there be short contents (children) in each section?} +mouse: @r{Headings are highlighted when the mouse is over themq. Should be} @r{@samp{underline} (default) or a background color like @samp{#cccccc}.} buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the} @r{default), only one such button will be present.} diff --git a/lisp/org-infojs.el b/lisp/org-infojs.el index 2a1c9233e..7a1f08e2e 100644 --- a/lisp/org-infojs.el +++ b/lisp/org-infojs.el @@ -68,6 +68,8 @@ line in the buffer. See also the variable `org-infojs-options'." '((path PATH "http://orgmode.org/org-info.js") (view VIEW "info") (toc TOC :table-of-contents) + (tdepth TOC_DEPTH "max") + (sdepth SECTION_DEPTH "max") (mouse MOUSE_HINT "underline") (runs MAX_RUNS "5") (buttons VIEW_BUTTONS "0") @@ -83,13 +85,19 @@ line in the buffer. See also the variable `org-infojs-options'." Each of the options must have an entry in `org-export-html/infojs-opts-table'. The value can either be a string that will be passed to the script, or a property. This property is then assumed to be a property that is defined -by the Export/Publishing setup of Org." +by the Export/Publishing setup of Org. +The `sdepth' and `tdepth' parameters can also be set to \"max\", which +means to use the maximum value consistent with other options." :group 'org-infojs :type - '(repeat - (cons (symbol :tag "Option") - (choice (symbol :tag "Publishing/Export property") - (string :tag "Value"))))) + `(set :greedy t :inline t + ,@(mapcar + (lambda (x) + (list 'cons (list 'const (car x)) + '(choice + (symbol :tag "Publishing/Export property") + (string :tag "Value")))) + org-infojs-opts-table))) (defcustom org-infojs-template " @@ -114,8 +122,13 @@ Option settings will replace the %MANAGER-OPTIONS cookie." ;; We do not want to use the script exp-plist ;; We do want to use the script, set it up - (let ((template org-infojs-template) - p1 s p v a1 tmp e opt var val table default) + (let ((template org-infojs-template) + (ptoc (plist-get exp-plist :table-of-contents)) + (hlevels (plist-get exp-plist :headline-levels)) + tdepth sdepth p1 s p v a1 tmp e opt var val table default) + (setq sdepth hlevels + tdepth hlevels) + (if (integerp ptoc) (setq tdepth (min ptoc tdepth))) (setq v (plist-get exp-plist :infojs-opt) table org-infojs-opts-table) (while (setq e (pop table)) @@ -130,6 +143,12 @@ Option settings will replace the %MANAGER-OPTIONS cookie." ((eq opt 'path) (and (string-match "%SCRIPT_PATH" template) (setq template (replace-match val t t template)))) + ((eq opt 'sdepth) + (if (integerp (read val)) + (setq sdepth (min (read val) hlevels)))) + ((eq opt 'tdepth) + (if (integerp (read val)) + (setq tdepth (min (read val) hlevels)))) (t (setq val (cond @@ -139,6 +158,15 @@ Option settings will replace the %MANAGER-OPTIONS cookie." (t (format "%s" val)))) (push (cons var val) s)))) + ;; Now we set the depth of the *generated* TOC to SDEPTH, because the + ;; toc will actually determine the splitting. How much of the toc will + ;; actually be displayed is governed by the TDEPTH option. + (setq exp-plist (plist-put exp-plist :table-of-contents sdepth)) + + ;; The table of contents should ot show more sections then we generate + (setq tdepth (min tdepth sdepth)) + (push (cons "TOC_DEPTH" tdepth) s) + (setq s (mapconcat (lambda (x) (format "org_html_manager.set(\"%s\", \"%s\");" (car x) (cdr x))) @@ -154,7 +182,6 @@ Option settings will replace the %MANAGER-OPTIONS cookie." ;; setting (if (not (plist-get exp-plist :table-of-contents)) (setq exp-plist (plist-put exp-plist :table-of-contents t))) - ;; Return the modified property list exp-plist)))