Emacs Muse NEWS --- History of user-visible changes -*- outline -*- * Changes in Muse 3.03 ** An emacs-wiki migration guide is available in etc/emacs-wiki-migration.txt. ** Ideas for the future and planned time of implementation can be found in etc/IDEAS.muse. ** Core functionality (lisp/muse.el) *** Fix an XEmacs beta byte-compiler issue. *** Fix failure to recognize the .muse file extension. Handle the case where the user customizes the file extension. *** It is now easier to indicate that Muse should not use a file extension. Just do the following. (setq muse-file-extension nil muse-mode-auto-p t) If you visit a Muse file in your .emacs, however, and do not want a file extension, then you must still do the following beforehand. (add-hook 'find-file-hooks 'muse-mode-maybe) *** Allow tab characters in explicit links. *** Escape brackets in links, and then un-escape them when displaying the link in a buffer of publishing it. This allows brackets to be safely used in link descriptions and links, as long as you use `C-c TAB l', `C-c TAB u', `C-c C-e', or automatic Planner annotations. *** Ensure that no recursive load situation can take place. ** Blosxom publishing (lisp/muse-blosxom.el) *** New option: muse-blosxom-use-tags. This specifies whether or not we are using tags. Tags allow a page to belong to multiple categories, but they do not rely on the directory structure for categorization. *** Use `find-file' as the browsing function. *** New example script: contrib/pyblosxom/make-blog. This shows how to invoke contrib/pyblosxom/getstamps.py. ** Book publishing (lisp/muse-book.el) *** It is now possible to publish a book using a muse-project-alist entry. See the "Book" section of the manual for details and an example. ** DocBook publishing (lisp/muse-docbook.el) *** A bug with multiple-stanza verses has been fixed. ** HTML publishing (lisp/muse-html.el) *** Make sure spaces in URLs get escaped properly. *** Make the Table of Contents CSS easier to customize. For an example, see examples/mwolson/stylesheets/screen.css. *** Make Table of Contents publishing work with Planner. *** Fix a paragraph detection bug for paragraphs that occur after verses. *** New tag: This tag is used to colorize (using HTML) source code of any language for which Emacs has a mode available. The "lang" attribute determines the mode to call on the region. Muse will look for the LANG-mode function, call it, and then call htmlize. You will need htmlize 1.34 or later for this to work. If a non-HTML publishing style is used, this will be published the same as an region. ** Importing LaTeX documents (lisp/muse-import-latex.el) *** Rename from muse-convert.el, since Muse can now import other formats as well. ** Journal (lisp/muse-journal.el) *** New option: muse-journal-rss-heading-regexp. Determine the regexp to use when searching for an RSS heading. *** Make sure that the date is in a format that RSS readers can handle. ** LaTeX publishing (lisp/muse-latex.el) *** New publishing styles: slides and slides-pdf. This allows you to use Beamer to publish slides. *** New publishing styles: lecture-notes and lecture-notes-pdf. These are similar to the slides styles, but are suitable for publishing lecture notes. *** New option: muse-latex-pdf-program. The program to call in order to generate PDF content from LaTeX content. *** New option: muse-latex-pdf-cruft. The extensions of files to remove after generating PDF output successfully. *** Improve escaping of specials. *** Use \label{} and \ref{} for anchors and anchor references. *** Emphasize table elements. *** Improve table generation. *** Use \url{} to publish bare URLs. *** Handle case where a Muse page begins with a quote character. *** Handle case where the path to the Muse source contains a tilde character in one of the parent directories. It is still possible to run into this problem if you publish outside of a directory that has a tilde, but with a source file that does have one -- this was deemed to be a very unlikely case. *** Display footnotes when we have both a URL and description. This makes the URLs show up on printed documents in a sensible fashion. *** Escape the "@" character in the entire document. *** Make images take up 75% of the width of the page. *** New option: muse-latex-permit-contents-tag. This specifies whether we should take action on the tag. *** Allow for definitions to be separated from their terms, much like the way HTML does it by default, if the user puts a blank line or a line break between the term and the definition. If the term and definition are on the same line, they will be that way in the output as well. *** Publish comments using the "%" character, rather than a custom Latex command. ** Publish embedded LaTeX content to a PNG file (lisp/muse-latex2png.el) *** The tag has been modified to work with styles other than just HTML. It will even leave the region alone if you are publishing a Latex-based publishing style. *** New tag: The tag acts similarly to the tag, except that it surrounds the region with "$" characters first, and makes the resulting image inline. If the first line of the tag begins with 6 spaces, then surround the region with "$$" (or an equivalent markup) instead. This has the effect of "centering" the output on its own line. ** Muse Manual (muse.texi) *** Re-license under the GFDL instead of the GPL. The rationale for this is that Muse may one day be included with Emacs, so it should use the same manual license that Emacs itself uses. At this point, the matter is not open to debate, unless the FSF brings it up. *** Use better style for subsections. *** Make sure the PDF file for the manual is properly generated. *** Implicit Links **** Mention how to customize the WikiName recognition. *** Extending Muse **** Move "Common Elements" and "Deriving Styles" chapters here. *** Tag Summary **** Mention new tags and updated syntax for some tags. ** Muse Mode (lisp/muse-mode.el) *** `C-c TAB' now inserts an object, prompting the user for which type. `C-c TAB l' inserts a relative link. `C-c TAB t' inserts a Muse tag. `C-c TAB u' inserts a URL. These keybindings may be modified by editing `muse-insert-map'. Note that the prompt you get when you hit `C-c TAB' will not change. *** New list-oriented keybindings: `M-RET' inserts a list item. `C->' increases list item indentation. `C-<' decreases list item indentation. *** Slightly improved speed of flyspell integration *** Implement searching through Muse files. **** `C-c C-s' performs a search through Muse files. **** New option: muse-grep-command. Customize this to specify the command used for searching. In particular, "glimpse" is handy. Check the documentation for this command for details. *** Changed keybindings: `C-c C-b' is now `muse-find-backlinks' `C-c C-v' is now `muse-browse-result' *** The `C-c C-M-t' keybinding can be used in place of `C-c C-S-t', since the latter is not available on some terminals. *** Remove the C-c C-c keybinding, since it conflicts with other modes like Planner. *** Don't require muse-publish.el, since publishing and viewing Muse files are supposed to be completely separable. *** Speed up searching for next and previous references. *** Make filling definition lists work better. *** Make editing existing links with `C-c C-e' work better. *** Make browsing the resulting page with `C-c C-v' work better. *** Don't throw an error if doing flyspell or following link at beginning of buffer. *** When publishing a file with `C-c C-t', consult muse-project-alist and use its publishing styles to intelligently prompt the user as to the publishing style and output directory. The old behavior of allowing the file to be published anywhere and with any style has been moved to `C-c C-T'. *** Clicking `mouse-2' now does the right thing when mouse-yank-at-point is non-nil. ** Muse Mode highlighting (lisp/muse-colors.el) *** New option: muse-colors-inline-images. This determines whether or not to inline an image when viewing Muse source. The default is to enable this behavior. This feature is currently considered to be in a beta state, because finding the real paths of images consistently has not been worked out. **** New option: muse-colors-inline-image-method. This determines how to find an image that we want to inline. The default is to look in the current directory. If set to 'muse-colors-use-publishing-directory, it will look in the directory where the current page will be published. **** New function: muse-colors-toggle-inline-images. This toggles whether images are inlined. *** Make links blue by default, like most other Emacs modes do. *** Don't cause a long delay when highlighting remote (Tramp, ange-ftp) links. *** Make faces conform the namespace better. `muse-link-face' is renamed to `muse-link'. `muse-bad-link-face' is renamed to `muse-bad-link'. `muse-verbatim-face' is renamed to `muse-verbatim'. *** Handle muse-emphasis faces better. *** Source-level change: The regexps in `muse-colors-markup' are now permitted to have non-shy groupings. ** New modules *** lisp/muse-backlink.el -- Provide backlink support for Muse. *** lisp/muse-groff.el -- This introduces the publishing styles "groff" and "groff-pdf". *** lisp/muse-import-docbook.el -- Convert Docbook XML into Muse format. *** lisp/muse-import-xml.el -- Helper file for muse-import-docbook.el. *** lisp/muse-latex2png.el -- Publish embedded LaTeX content to a PNG file. This introduces the tag. *** lisp/muse-xml-common.el -- Common functionality used by XML-based publishing styles, such as HTML, XML, and DocBook. *** experimental/muse-mathml.el -- This introduces the "mathml" publishing style and the tag. *** experimental/muse-protocol-iw.el: Implements a simpler URL-like interwiki protocol that handles subdirectories. *** experimental/muse-split.el -- Splits published Muse files into several smaller files. ** Project settings (lisp/muse-project.el) *** Introduce the `with-muse-project' macro, which makes it easier to switch to a given Muse project and execute some code. *** Fix an error with `custom-quote'. *** Ignore buffers that have no associated filename. This fixes an annoyance where Muse prompts to save BBDB and ERC buffers before publishing. *** If we cannot find a project to publish, indicate this in an error message. This fixes an infinite loop. *** Update the file-alist whenever a Muse file is saved. *** Prevent infinite recursion when updating the file alist. *** In addition to Arch and CVS metadata directories, also ignore these for Darcs, SVN, Mercurial, and Bazaar. Also, don't erroneously ignore files with "#" in them. *** Make links to subdirectories work. The idea is to include as much of the path that is needed in order to disambiguate the link. For example: "web/TestPage". *** New variable: muse-current-output-style. This holds the output style that is currently being used to publish a file. *** Permit non-Muse files in projects to be linked to. *** Handle relative links to other Muse pages. Relative links are prefixed with "./" or "../". *** New option: muse-project-publish-private-files If this is non-nil (the default), files will be published even if they have "o-r" permissions set (that is, if no one except the owner and possibly group are allowed to read them). To get back the old behavior, set this to nil. *** Publishing functions can now be customized on per-project basis You can now use :publish-project and :publish to specify what function to call for publishing entire projects or just a single file. :publish-project is meant to be specified in the first part of a project entry, along with the directories. :publish is meant to be used in a (optionally derived) publishing style: after specifying such a style, use its name in the latter part of a project entry. ** Publishing (lisp/muse-publish.el) *** Implement escaping of specials throughout the entire document. This makes it much easier to publish documents to multiple kinds of formats, since you no longer have to worry about putting around specials. *** Make escaping of specials context-sensitive. Muse now realizes that URLs, normal document text, regions, and the like have different special characters to escape. *** Support nested lists. Muse now determines the nested level of a list by its initial whitespace. Ordered lists, unordered lists, and definition lists can all be nested. It is even possible to force a line break in a list item by inserting a blank line on the same level between the lines. Blockquotes may also be nested inside of a list. *** It is now possible to force images to not be inlined. To accomplish this, place the text "URL:" immediately in front of the link text. Example: [[URL:http://example.org/image.png]] *** New interactive function: muse-publish-region. This command publishes the current region, prompting for the title of the page (if any) and the style to use. This is handy for firing off quick blog entries and pasting the result into a web browser -- for this use case, it is recommended to use the blosxom-html or blosxom-xhtml styles, as they omit the large header and footer. *** Additional arguments for tag. The optional "style" and "exact" attributes may now be specified, which cause text to only be included if the current publishing style matches some criteria -- the text will be removed otherwise. Omitting these attributes causes to behave the same as usual. *** Table improvements **** Support orgtbl-mode style tables. Here is a quick example of what they look like. For additional information, consult the Org Mode manual. | Name | Phone | Age | |------+-------+-----| | Pete | 1234 | 25 | | Sara | 4321 | 22 | If you are used to the way that Org Mode publishes these tables, then customize `muse-html-table-attributes' to: border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides" in order to get a similar kind of output. **** Support table.el-style tables. If you have table.el somewhere in your load-path, Muse will publish tables that are in the format used by table.el. Currently, table.el tables can only be published for publishing styles based on HTML, LaTeX, or DocBook. **** Allow empty elements in tables. **** Allow initial and trailing whitespace in tables, but strip it out of the published result. **** If the #disable-tables publishing directive exists on the current Muse page, do not generate a table. *** Require at least once space after "::" in definition lists, so we avoid an ambiguity with interwiki link syntax. *** Handle nested emphasis types better. It should now publish exactly the way it looks in Muse Mode. *** Preserve whitespace around emdash. This allows for more flexibility, since some people seem to prefer to have the emdash directly against the surrounding text, while others like it to be spaced. *** Fix paragraph detection when block-level markup comes immediately after a paragraph. Examples of block-level markup are: , verses, lists. *** Allow the tag to take the "markup" attribute. see the Tag Summary section in the manual for details. *** Publish image links with descriptions as captioned images. This has been implemented for all Muse publishing styles. The major change is that image links with descriptions will be centered and the description will be displayed just below the image as a "caption". Thus, it is meant to only be used as its own paragraph, not surrounded by other text. Images without descriptions may still have surrounding text. *** Make comments higher priority than tags when publishing, so that Muse comments within tags get stripped out. *** Handle properly comments that have no text. *** Distinguish links and footnotes better. *** Do the right thing when a footnote reference exists but has no corresponding footnote. *** Simplify markup string for anchors. *** Allow text like "%N%" in markup strings. This makes it much easier to re-use the same text or put strings in a different order. *** Create parent directories when publishing for the first time. *** Handle case where we are trying to publish a file that has not been saved. *** Fix XEmacs issue where text at beginning of buffer is read-only. *** Allow publishing styles to specify a function to use for escaping specials in a particular context. This is especially handy for HTML URLs, since they have a larger subset of special characters than normal characters. See `muse-xml-decide-specials' in muse-xml-common.el for details. This functionality already exists for escaping specials in strings. *** Don't give an error when trying to define or derive an existing style. Just replace it. *** Get rid of a warning that occurs when batch publishing. *** Ignore list items that are part of higher-priority constructs like emphasis. *** Don't markup emdash in a link, since otherwise it will be incorrectly escaped. *** Improve the published descriptions for implicit links and explicit links with no provided description. *** For headers and footers, use a better algorithm to detect whether we have been given a filename or the real contents. *** New option: muse-publish-date-format. Format string of the date used when publishing files. *** New option: muse-publish-markup-header-footer-tags. This specifies which tags may be used when publishing headers and footers. *** New option: muse-publish-contents-depth. This specifies the maximum depth of headings to include with tags. *** Allow `muse-publish-markup-buffer' to work even if the buffer is not associated with a file. *** Fix a compilation bug with XEmacs beta. *** Source-level change: Use 'image instead of 'image-link to indicate images without descriptions. Use 'image-link instead of 'url-with-image to indicate URLs that have an image as their description. *** Self-nested tags are now supported. Tags with the same name can now be nested inside one another. This only applies to the new tag and the tag currently, but it may be useful for custom tags as well. To activate this, set the 4th element in a `muse-publish-markup-tag' to non-nil. Note that this involved a change to the structure of `muse-publish-markup-tag', so be sure to change any custom tags appropriately. *** Fix bug with WikiName link descriptions and PDF output. *** New convenience function: muse-style-derived-p The new muse-style-derived-p function allows you to make custom tags or inline code that acts differently depending on whether the current style is derived from (or equal to) another style. For an example of its use, see `muse-publish-latex-tag' in lisp/muse-latex2png.el. *** New tags, see the Tag Summary section in the manual for details **** -- Designate entire regions as comments. **** -- Insert the given file at publish time. **** -- Mark up the text between the initial and ending tags. **** -- Evaluate perl code. **** -- Evaluate python code. **** -- Publish the region as a blockquote. **** -- Evaluate ruby code. ** Texinfo publishing (lisp/muse-texinfo.el) *** Escape commas in URLs. *** Make it so that links to other info or PDF documents use the proper suffix. *** Publish table headings properly. *** Handle case where the path to the Muse source contains a tilde character in one of the parent directories. It is still possible to run into this problem if you publish outside of a directory that has a tilde, but with a source file that does have one -- this was deemed to be a very unlikely case. ** URL protocols (lisp/muse-protocols.el) *** Add support for DOI's. DOI's (digitial object identifiers) are a standard identifier used in the publishing industry. *** Add support for "dict:" URLs. This is used to look up terms on the Wikipedia website. **** New option: muse-wikipedia-country. This specified the country code to use for Wikipedia. *** Add support for "woman:" URLs. "woman" links are opened with Emacs' internal manpage viewer. ** Wiki (lisp/muse-wiki.el) *** Three-part links (example: Project::File#anchor) now work. *** New option: muse-wiki-wikiword-match-project-files. Whether to extend WikiName functionality to also match existing filenames, regardless of whether they are named in WikiWord format. If non-nil, Muse will color and publish implicit links to any file in your project. The default is nil. *** New option: muse-wiki-ignore-implicit-links-to-current-page. Whether to ignore implicit links to the current page. If non-nil, Muse will not recognize implicit links to the current page, both when formatting and publishing. *** For interwiki links, prefer files that have the same file extension as the current file. *** Check the entire explicit link for a project name or complete interwiki link, not just part of it. This allows page names with invalid WikiName characters to be referred to by using an explicit link. *** If the document does not have a valid title string, use the empty string. *** Take the value of `muse-wiki-hide-nop-tag' into account. *** Match filenames in the project before the general WikiWord regexp. *** Fix some bugs. ** XML publishing (lisp/muse-xml.el) *** The Muse XML schema has been moved from examples/muse.rnc to etc/muse.rnc. *** Update muse.rnc to handle nested list items. *** Fix table generation when some attributes are not given.