-*- Org -*-
Copyright 2007, 2008, 2009, 2012 Ludovic Courtès <[email protected]>
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.
This is a fairly long list of to-do items for Skribilo, hopefully not too outdated, but probably somewhat ambitious, as suggested by the headings below.
XXX: Check items in `src/guile/README’.
Almost done.
Almost there. Need to improve layout and style of the Lout PDF.
Almost done.
`–’ should yield `{-}{-}’ in Lout, while `,(–)’ should produce `–’, things like that.
Currently, our CSS makes `code’ fixed-width in HTML, but it’s not so in Lout et al.
Probably with `wdg-html-validator’, or OpenSP, since xmllint(1) doesn’t do the job (can’t load the DTD, returns zero even in the presence of parse errors, etc.).
Left margin doesn’t display well when CSS is being used.
Expressions like `(if (engine-format? “lout”) xxx yyy)’ are wrong, because they look at the value of `*current-engine*’ rather than the engine actually used during resolution and output.
Currently, most packages have side-effects at `use-modules’-time, e.g., they `engine-custom-set!’ the current engine, which kinda sucks (see, e.g., `(skribilo package slide)’).
Likewise, there’s no replacement for the `*load-options*’ mechanism implemented by `skribe-load’ (see, e.g., `web-article’).
Write a GUI
Could be based on Andy’s parser in Guile-Present.
Could be based on the one in Guile-Lib.
Such as `skribilo-to-bibtex’, `bibtex-to-skribilo’, etc.
In `(skribilo module)’, the default user-module should not contain any filesystem-related primitives, nor any standard module allowing such operations (e.g., `(ice-9 popen)’).
Now that node identifiers are scoped, node identifiers in nested documents could collide with identifiers in the parent document(s). Thus, engines should work to avoid collisions. That said, nested documents are not very useful, except in the user manual.
The goal would be to benefit from referential transparency several levels, thereby clarifying the code and allowing for a wide range of improvements (e.g., reusing ASTs or engines in different contexts).
We’d need to first iterate over the AST:
- to create a dictionary of nodes (keyed by node `:ident’);
- to create a parent-lookup dictionary, so that things like `ast-parent’ can be implemented.
To that end, VList-based hash lists could come into play. Andy Wingo’s work on `fold-layout’ would certainly be a good source of inspiration.
Oleg’s work on SXML parent pointers is probably a good source of inspiration, especially the “parent pointers as thunks” approach: it’s simple and Just Works!
In addition, we could have the resolution function add a VList “hash list” (read: functional hash table) to the `document’ node so that we can do `document-lookup-node’.
Markups should be named using unforgeable objects, rather than symbols. This would be a step in the direction of “capability-object semantics”.
;;; Local Variables: ;;; coding: utf-8 ;;; ispell-local-dictionary: “american” ;;; End: