Ihor Radchenko writes: > "Christopher M. Miles" writes: > >> I attached new version patch. > > Thanks! > >> +(defcustom org-cycle-inline-images-display nil >> + "Non-nil means auto display inline images under subtree when cycling." >> + :group 'org-startup >> + :group 'org-cycle >> + :type 'boolean) > > Please add :package-version tag as well. > Done >> + ('folded >> + (save-excursion >> + (save-restriction >> + (org-narrow-to-subtree) >> + ;; FIXME: sometimes `point-max' is EOF. > > Do you still need this FIXME? > Also, you can use `org-with-wide-buffer' instead of > save-excursion/restriction. > Done >> +;;; TODO: reference `test-org-fold/org-fold-reveal-broken-structure' >> +(ert-deftest test-org-fold/org-fold-display-inline-images () >> + "Test inline images displaying when cycling." >> + (let ((org-fold-core-style 'text-properties) > > Why do you need to set `org-fold-core-style' explicitly here? > Removed, Done >> + (org-cycle-inline-images-display t)) >> + ;; `org-cycle' -(state)-> `'children' display child inline images. >> + (org-test-with-temp-text >> + "* Heading 1 >> +[[file:image.png]]" > > This will not work in real tests. image.png will not exist. > You will need to provide a reference image in testing/examples > Added image file and link now. >> + ;; `org-cycle' -(state)-> `'folded' remove inline image overlays. >> + (org-test-with-temp-text >> + "* Heading 1 >> +[[file:image.png]] >> +** Subheading 1 >> +[[file:image2.png]] >> +** Subheading 2 >> +[[file:image3.png]]" >> + (org-overview) >> + (org-cycle) >> + (org-cycle) >> + (org-cycle) >> + ;; TODO: how to detect inline image overlays are deleted after folded? >> + (should (overlays-at (point))) >> + (org-toggle-inline-images) >> + (should-not (overlays-at (point)))))) > > This latest test will not work. The point is at BOB. I commented out the third test if someone can do this. I don't now how to test in fold state. ================================================================================================== Because I got error when running command "make test". I checked org-mode source code repo, the ob-vala.el is removed, don't know where it is introduced. #+begin_example ~/Code/Emacs/org-mode:subtree-display-inline-images λ make test /Applications/Xcode.app/Contents/Developer/usr/bin/make -C doc clean; /Applications/Xcode.app/Contents/Developer/usr/bin/make -C lisp clean; rm -f *.pdf *.html *.info *_letter.tex org-version.inc org-version.tex \ *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.pg *.pgs *.toc \ *.tp *.tps *.vr *.vrs *.log *.ps rm -f org-version.el org-loaddefs.el org-version.elc org-loaddefs.elc org-install.elc rm -f *.elc /Applications/Xcode.app/Contents/Developer/usr/bin/make -C lisp compile rm -f org-version.el org-loaddefs.el org-version.elc org-loaddefs.elc org-install.elc org-version: 9.6-pre (release_9.5.5-845-g67a00b) Loading /Users/stardiviner/Code/Emacs/org-mode/lisp/org-compat.el (source)... Loading /Users/stardiviner/Code/Emacs/org-mode/mk/org-fixup.el (source)... org-loaddefs: 9.6-pre (release_9.5.5-845-g67a00b) Loading /Users/stardiviner/Code/Emacs/org-mode/lisp/org-compat.el (source)... Loading /Users/stardiviner/Code/Emacs/org-mode/mk/org-fixup.el (source)... /Applications/Xcode.app/Contents/Developer/usr/bin/make compile-dirall ==================== dirall ==================== Checking /Users/stardiviner/Code/Emacs/org-mode/lisp... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-C.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-R.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-awk.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-calc.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-clojure.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-comint.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-core.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-css.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-ditaa.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-dot.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-emacs-lisp.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-eshell.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-eval.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-exp.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-forth.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-fortran.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-gnuplot.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-groovy.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-haskell.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-java.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-js.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-julia.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-latex.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-lilypond.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-lisp.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-lob.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-lua.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-makefile.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-matlab.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-maxima.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-ocaml.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-octave.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-org.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-perl.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-plantuml.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-processing.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-python.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-ref.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-ruby.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-sass.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-scheme.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-screen.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-sed.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-shell.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-sql.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-sqlite.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-table.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob-tangle.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ob.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc-basic.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc-biblatex.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc-bibtex.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc-csl.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc-natbib.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/oc.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-bbdb.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-bibtex.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-docview.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-doi.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-eshell.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-eww.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-gnus.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-info.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-irc.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-man.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-mhe.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-rmail.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol-w3m.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ol.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-agenda.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-archive.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-attach-git.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-attach.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-capture.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-clock.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-colview.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-compat.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-crypt.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-ctags.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-cycle.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-datetree.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-duration.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-element.el... In org-element--cache-active-p: org-element.el:5682:11: Warning: defsubst `org-element--cache-active-p' was used before it was defined Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-entities.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-faces.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-feed.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-fold-core.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-fold.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-footnote.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-goto.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-habit.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-id.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-indent.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-inlinetask.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-keys.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-lint.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-list.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-loaddefs.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-macro.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-macs.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-mobile.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-mouse.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-num.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-pcomplete.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-persist.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-plot.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-protocol.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-refile.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-src.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-table.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-tempo.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-timer.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org-version.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/org.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-ascii.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-beamer.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-html.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-icalendar.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-koma-letter.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-latex.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-man.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-md.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-odt.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-org.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-publish.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox-texinfo.el... Compiling /Users/stardiviner/Code/Emacs/org-mode/lisp/ox.el... Done (Total of 125 files compiled, 2 skipped) install -m 755 -d /var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T//tmp-orgtest TMPDIR=/var/folders/ym/f3v5_yk1279g5ls70x3hzblh0000gn/T//tmp-orgtest emacs -Q -batch --eval '(setq vc-handled-backends nil org-startup-folded nil)' --eval '(add-to-list '"'"'load-path (concat default-directory "lisp"))' --eval '(add-to-list '"'"'load-path (concat default-directory "testing"))' -l org-batch-test-init --eval '(setq org-batch-test t org-babel-load-languages (quote ( (awk . t) (C . t) (fortran . t) (maxima . t) (lilypond . t) (octave . t) (perl . t) (python . t) (vala . t) (emacs-lisp . t) (shell . t) (org . t))) org-test-select-re "\\(org\\|ob\\)" )' -l org-loaddefs.el -l cl -l testing/org-test.el -l ert -l org -l ox --eval '(org-test-run-batch-tests org-test-select-re)' Package cl is deprecated Error: file-missing ("Cannot open load file" "No such file or directory" "ob-vala") mapbacktrace(#f(compiled-function (evald func args flags) #)) debug-early-backtrace() debug-early(error (file-missing "Cannot open load file" "No such file or directory" "ob-vala")) require(ob-vala) org-babel-do-load-languages(org-babel-load-languages ((awk . t) (C . t) (fortran . t) (maxima . t) (lilypond . t) (octave . t) (perl . t) (python . t) (vala . t) (emacs-lisp . t) (shell . t) (org . t))) custom-initialize-reset(org-babel-load-languages (funcall #'#f(compiled-function () #))) custom-declare-variable(org-babel-load-languages (funcall #'#f(compiled-function () #)) "Languages which can be evaluated in Org buffers.\n\\\nThis list can be used to load support for any of the available\nlanguages with babel support (see info node `(org) Languages'). Each\nlanguage will depend on a different set of system executables and/or\nEmacs modes.\n\nWhen a language is \"loaded\", code blocks in that language can\nbe evaluated with `org-babel-execute-src-block', which is bound\nby default to \\[org-ctrl-c-ctrl-c].\n\nThe `org-babel-no-eval-on-ctrl-c-ctrl-c' option can be set to\nremove code block evaluation from \\[org-ctrl-c-ctrl-c]. By\ndefault, only Emacs Lisp is loaded, since it has no specific\nrequirement." :group org-babel :set org-babel-do-load-languages :version "24.1" :type (alist :tag "Babel Languages" :key-type (choice (const :tag "Awk" awk) (const :tag "C" C) (const :tag "R" R) (const :tag "Calc" calc) (const :tag "Clojure" clojure) (const :tag "CSS" css) (const :tag "Ditaa" ditaa) (const :tag "Dot" dot) (const :tag "Emacs Lisp" emacs-lisp) (const :tag "Forth" forth) (const :tag "Fortran" fortran) (const :tag "Gnuplot" gnuplot) (const :tag "Haskell" haskell) (const :tag "Java" java) (const :tag "Javascript" js) (const :tag "LaTeX" latex) (const :tag "Lilypond" lilypond) (const :tag "Lisp" lisp) (const :tag "Makefile" makefile) (const :tag "Maxima" maxima) (const :tag "Matlab" matlab) (const :tag "Ocaml" ocaml) (const :tag "Octave" octave) (const :tag "Org" org) (const :tag "Perl" perl) (const :tag "Pico Lisp" picolisp) (const :tag "PlantUML" plantuml) (const :tag "Python" python) (const :tag "Ruby" ruby) (const :tag "Sass" sass) (const :tag "Scala" scala) (const :tag "Scheme" scheme) (const :tag "Screen" screen) (const :tag "Shell Script" shell) (const :tag "Sql" sql) (const :tag "Sqlite" sqlite) (const :tag "Stan" stan)) :value-type (boolean :tag "Activate" :value t))) byte-code("\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315&\13\210\300\316\302\303\317DD\320\314\321\312\313\306\322&\11\210\323\324\325\"\210\323\326\325\"\207" [custom-declare-variable org-babel-load-languages funcall function #f(compiled-function () #) "Languages which can be evaluated in Org buffers.\n\\\nThis list can be used to load support for any of the available\nlanguages with babel support (see info node `(org) Languages'). Each\nlanguage will depend on a different set of system executables and/or\nEmacs modes.\n\nWhen a language is \"loaded\", code blocks in that language can\nbe evaluated with `org-babel-execute-src-block', which is bound\nby default to \\[org-ctrl-c-ctrl-c].\n\nThe `org-babel-no-eval-on-ctrl-c-ctrl-c' option can be set to\nremove code block evaluation from \\[org-ctrl-c-ctrl-c]. By\ndefault, only Emacs Lisp is loaded, since it has no specific\nrequirement." :group org-babel :set org-babel-do-load-languages :version "24.1" :type (alist :tag "Babel Languages" :key-type (choice (const :tag "Awk" awk) (const :tag "C" C) (const :tag "R" R) (const :tag "Calc" calc) (const :tag "Clojure" clojure) (const :tag "CSS" css) (const :tag "Ditaa" ditaa) (const :tag "Dot" dot) (const :tag "Emacs Lisp" emacs-lisp) (const :tag "Forth" forth) (const :tag "Fortran" fortran) (const :tag "Gnuplot" gnuplot) (const :tag "Haskell" haskell) (const :tag "Java" java) (const :tag "Javascript" js) (const :tag "LaTeX" latex) (const :tag "Lilypond" lilypond) (const :tag "Lisp" lisp) (const :tag "Makefile" makefile) (const :tag "Maxima" maxima) (const :tag "Matlab" matlab) (const :tag "Ocaml" ocaml) (const :tag "Octave" octave) (const :tag "Org" org) (const :tag "Perl" perl) (const :tag "Pico Lisp" picolisp) (const :tag "PlantUML" plantuml) (const :tag "Python" python) (const :tag "Ruby" ruby) (const :tag "Sass" sass) (const :tag "Scala" scala) (const :tag "Scheme" scheme) (const :tag "Screen" screen) (const :tag "Shell Script" shell) (const :tag "Sql" sql) (const :tag "Sqlite" sqlite) (const :tag "Stan" stan)) :value-type (boolean :tag "Activate" :value t)) org-clone-delete-id #f(compiled-function () #) "Remove ID property of clones of a subtree.\nWhen non-nil, clones of a subtree don't inherit the ID property.\nOtherwise they inherit the ID property with a new unique\nidentifier." boolean org-id autoload org-release "org-version.el" org-git-version] 12) require(org) eval-buffer(# nil "/Users/stardiviner/Code/Emacs/org-mode/testing/org-test.el" nil t) load-with-code-conversion("/Users/stardiviner/Code/Emacs/org-mode/testing/org-test.el" "/Users/stardiviner/Code/Emacs/org-mode/testing/org-test.el" nil t) load("/Users/stardiviner/Code/Emacs/org-mode/testing/org-test.el" nil t) command-line-1(("--eval" "(setq vc-handled-backends nil org-startup-folded nil)" "--eval" "(add-to-list 'load-path (concat default-directory \"lisp\"))" "--eval" "(add-to-list 'load-path (concat default-directory \"testing\"))" "-l" "org-batch-test-init" "--eval" "(setq org-batch-test t org-babel-load-languages (quote ( (awk . t) (C . t) (fortran . t) (maxima . t) (lilypond . t) (octave . t) (perl . t) (python . t) (vala . t) (emacs-lisp . t) (shell . t) (org . t))) org-test-select-re \"\\\\(org\\\\|ob\\\\)\" )" "-l" "org-loaddefs.el" "-l" "cl" "-l" "testing/org-test.el" "-l" "ert" "-l" "org" "-l" "ox" "--eval" "(org-test-run-batch-tests org-test-select-re)")) command-line() normal-top-level() Cannot open load file: No such file or directory, ob-vala make: *** [test] Error 255 ~/Code/Emacs/org-mode:subtree-display-inline-images λ #+end_example ================================================================================================== So I use another method =[M-x ert-run-tests-interactively]=. The first test is passed, but the second test failed. I got bellowing error output. I don't know why it failed. Ihor, If you can fix this test, please tell me. Thanks #+begin_example Selector: test-org-fold/org-fold-display-inline-images Passed: 0 Failed: 1 (1 unexpected) Skipped: 0 Total: 1/1 Started at: 2022-10-01 17:46:30+0800 Finished. Finished at: 2022-10-01 17:46:31+0800 F F test-org-fold/org-fold-display-inline-images Test inline images displaying when cycling. (ert-test-failed ((should (overlays-at (point))) :form (overlays-at 130) :value nil)) #+end_example -- [ stardiviner ] I try to make every word tell the meaning that I want to express without misunderstanding. Blog: https://stardiviner.github.io/ IRC(libera.chat, freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3