Fixing bugs and filling in new features
- Develop window configuration was not cleaned up, resulting in improper window configuration “restoration”
- There is less markup (especially for babel)
- Old actions are easier to use
- New actions (KMACROS!) fit a more clear pattern
- That pattern has a long-term plan
This release captures a lot of the low-hanging fruit of the benefits expected in 0.7.0. For the most part, what was removed was markup that nobody wanted to write.
0.7.0 will continue in this direction, using less markup and having more of it be similar. 0.7.0 will also make it possible to mix steps from different actions. That will very nearly bring us to 1.0.
There is a tricky outstanding architectural issue with actions tracking their own progress. If the changes to custom actions are significant, it will only because it also makes writing new custom actions much, much simpler.
⛔ The dslide-default-actions
value will soon go away, becoming deprecated in 0.7.0. Instead, we will use configurable dispatcher to match elements and set default arguments globally. The dispatcher will create actions on-demand.
The propertize action is the closest one to working like they will in 0.7.0. ℹ️ Your custom actions will need to be registered in the dispatcher configuration after 0.7.0.
- 🧪 Experimental new kmacro action can run keyboard kmacros to script “live demonstrations”. Describe
dslide-action-kmacro
to view the documentation. There is a demo in the usual [] file. All related functions and variables are under thedslide-action-kmacro
ordslide-kmacro
prefixes. - 🧪 Experimental keyboard macro recording with
dslide-kmacro-transcribe-set-mark
, every time you callkmacro-end-macro
, dslide will transcribe a macro playback expression into your presentation. All related commands, functions, and variables are under thedslide-kmacro-transcribe
prefix dslide-deck-present
is a distinct command fromdslide-deck-start
. It will create a new frame instead of showing the presentation in the current frame. Thedslide-present-hook
will be run in this frame when the deck is ready. If you customize this hook, you can easily separate configuration for development and presentation.- Development now has its own hook
dslide-develop-hook
. Use this for more convenient buffer setup when using thedslide-deck-develop
command to debug your presentation. - Babel blocks, which will now all be executed by default, respect the
:eval
parameter. Values such asnever
ornever-export
will skip the block. Other values are equivalent toyes
. Values likequery
do not ask yet. Expect that in 0.7.0. 🚧#+begin_src elisp :eval never (message "All blocks are now on by default! You must opt out!") #+end_src
init
is now recognized as a direction by babel blocks and counts for bothbegin
andend
. It always runs when entering a slide, regardless of direction. It is the counterpart tofinal
, which always runs when exiting a slide.
- Babel blocks are no longer configured with
#+attr_dslide:
affiliated keywords. Instead, they now read:direction
as a normal babel block parameter.⚠️ Old style will warn.#+begin_src elisp :direction backwards (message "The old #+attr_dslide: backward style is no more!") #+end_src
To provide multiple directions, you can use quoted lists and vectors, like so:
#+begin_src elisp :direction '(begin backwards) (message "Lists must be quoted or Org mode tries to evaluate them") #+end_src #+begin_src elisp :direction [begin backwards] (message "It may be better to just use a vector 💡") #+end_src
- Image action is now a default action (although default actions are going away.)
- Image action defaults
:standalone-display
tonil
. If you want fullscreen display, you need to set the option in the property drawer, the way it has been. This was to support turning the image action on by default. ⚠️ Propertize action now warns on unquoted lists. Please use quoted lists. In my opinion, all lists should be considered quoted in org, but this change is consistent with babel parameters being evaluated when unquoted.- Yet more manual Kaizen. Seriously, check it out by installing dslide.
dslide-start-hook
is only called when beginning fromdslide-deck-start
.dslide-deck-develop
(and the newdslide-deck-present
command) will not run this hook. If you use a custom start function, thedslide-deck-start
hook will still run.
- The image action will no longer haphazardly try to display links that don’t look like an image. Remote images, if they were working on your Emacs, may be affected. File an issue, explain your setup, and workaround by downloading.
- Window scroll when opening the contents was unreliable. The call to
recenter
was replaced with ascroll-down
to pull the header into view. Let me know if this doesn’t work for you. Stop just suffering in silence. dslide-deck-stop
when called in the contents will leave the contents and return to the presentation. It seemd unintuitive to quite from the contents view.- 🚧
dslide-deck-develop
is a bit smarter. It may also be dumber. There’s a lot of states it can be called in. The happy path seems okay. - 🚧
dslide-default-actions
could result in duplicate actions. This caused issues with images when going in reverse if they were both configured and present in the default actions list. This entire behavior will go away in 0.7.0.
- ⛔ The concept of default actions has been marked for deprecation. This is preparation for instantiating actions on-demand rather than per slide. The action system may undergo some overhaul internally.
- Markup will be reduced, not changed
- Affiliated keywords such as
#+attr_dslide_propertize:
will be used more - Configuration of actions on the slide property drawer will be made unnecessary and then removed except for slide actions, which have higher association with the slide heading than any elements in the section.
- Breadcrumbs can have a trailing separator appended with
dslide-breadcrumb-separator-style
. Default isappend
. To return to old behavior, selectseparate
. - News file (this file)
- Manual Kaizen (continuous improvement)
- When a step callback fails, it will be removed from the deck’s list of callbacks, preventing infinite loops. This respects
debug-on-error
.