When I released blogmore.el v4.7.0yesterday I finished off by saying that it was my intention, at some point,to rework the frontmatter-handling code so that it did proper YAML parsing.As often happens with these sorts of things, "some point" ended up beingthat evening.I've rewritten everything to do with handling properties in the frontmatterso that it now uses yaml.el. This has anumber of knock-on effects. The first and most obvious effect is thatanything that is a list/array in the frontmatter is actually properlytreated as a list. A good example here is tags. Now you can have your tagslook like:tags: [BlogMore, Emacs, "Emacs Lisp", Lisp, "blogmore.el", coding]or:tags: - BlogMore - Emacs - Emacs Lisp - Lisp - blogmore.el - codingand blogmore.el will still handle things fine. The same holds for seriestoo.It should be noted, however, that because I'm now using actual YAMLserialisation code, most other forms of a list will all end up beingtransformed into this kind:tags: [BlogMore, Emacs, "Emacs Lisp", Lisp, "blogmore.el", coding]So if you have a bare list:tags: BlogMore, Emacs, "Emacs Lisp", Lisp, "blogmore.el", codingand you make an edit to the tags via blogmore.el, it will end up as theversion enclosed in []. BlogMore itselfsupports all three versions so this works fine.There is a breaking change here too, which in part explains the reason Ibumped the version to 5.0.0: because series can now be treated as a listI've removed the blogmore-set-series command and instead replaced it withblogmore-add-series and blogmore-remove-series. Both can of course befound in the transient menu.Another big change in this release is the way that existing values areloaded up from your blog. Previously, when you went to add a category, tagor series, blogmore.el would useripgrep (or a combination of findand grep if rg wasn't available) to pull out values to help populate acompletion list. This worked fine as long as a) the frontmatter property wasall on one line and b) the body of a post didn't contain something thatlooked like a frontmatter property. With this release of blogmore.el I'vedropped this approach in favour of calling blogmore itself and using thedump command to getthe actual lists of categories, tags and series.This does mean that BlogMore needs to be installed in a location whereblogmore.el can see it, and to help with this I've added a new defcustomcalled blogmore-command. By default this is set to call whatever versionof blogmore can be found in your exec-path; if this results inunexpected behaviour you can set blogmore-command to point to a specificcopy of blogmore.There is, however, a small downside to this beneficial1 approach: callingon blogmore and parsing all posts to get the values is generally going tobe slower. With this in mind I've built in a cache for these values. Thefirst time you load up the categories, tags or series, the values are heldon to so that subsequent prompts are instantaneous (meaning there is nofurther call to blogmore). To ensure this doesn't confuse things, when youswitch blog (blogmore-work-on) the caches are cleared. In the unlikelyevent that there is a problem with this approach, I've also added ablogmore-clear-caches command to force the clearing of the caches.There are some other small QoL changes under the hood and also to theinterface. I've moved some things around in the transient menu, and alsoensured that a couple of options are better-disabled depending on thecontext.All of this makes the package even more robust. Something that started as aquick hack back in March has turnedinto a tool I heavily lean on. Hopefully, for anyone who might happen to useBlogMore and GNU Emacs, it'll be a useful daily-driver for them too.The benefits being: only values in frontmatter appear, inconsistentcasing is cleaned up, etc. ↩