muse-el-3.20+dfsg/ 0000755 0001750 0001750 00000000000 12070124143 013232 5 ustar taffit taffit muse-el-3.20+dfsg/Makefile.defs.default 0000644 0001750 0001750 00000002333 11331353120 017234 0 ustar taffit taffit # -*- Makefile -*-
#
# If you wish to modify this file, first copy it to a file called
# Makefile.defs. The resulting Makefile.defs file may then be
# modified.
# Emacs options
EMACS = emacs
SITEFLAG = --no-site-file
# XEmacs users will probably want the following settings.
#EMACS = xemacs
#SITEFLAG = -no-site-file
# Installation options
# PREFIX is only used here.
DESTDIR =
PREFIX = /usr/local
ELISPDIR = $(DESTDIR)$(PREFIX)/share/emacs/site-lisp/muse
INFODIR = $(DESTDIR)$(PREFIX)/share/info
# Command to use to install the Info dir entry
install_info = install-info --info-dir=$(INFODIR) $(1) || :
# If you're using Debian or Ubuntu, uncomment the following rule and
# comment out the previous rule.
#
#install_info = install-info --section "Emacs" "emacs" --info-dir=$(INFODIR) \
# $(INFODIR)/$(1) || :
# If you're using XEmacs, use something like the following instead of
# the above two rules.
#
#install_info = install-info --section "XEmacs 21.4" $(1).info \
# $(INFODIR)/dir || :
# Useful only for the maintainer
PROJECT = muse
VERSION = 3.20
MANUAL = muse
# Location of Emacs Lisp Package Archive entries
ELPADIR = ../../elpa
# Description of ELPA package
ELPADESC = Authoring and publishing tool
muse-el-3.20+dfsg/ChangeLog.1 0000644 0001750 0001750 00000030153 11331353120 015143 0 ustar taffit taffit 2004-12-30 Michael Olson
* muse.el (muse-link-regexp): Allow spaces in the first part of
links.
* muse-colors.el, muse-convert.el, muse-docbook.el: Use
customizable alternatives to extended character classes.
* muse-html.el, muse-mode.el, muse-publish.el: Ditto.
2004-12-29 Michael Olson
* Makefile: Change path to `publish' script.
* muse.el: Change Copyright notice to FSF. Change Maintainer to
myself. Update URL.
* muse-regexps.el: New file that implements regexp handling.
Generalized regexp options will be moved to it eventually.
* contrib/pcomplete.el: New file that is used by Muse without
actually being a part of it: hence its location in the contrib
directory.
* contrib/cgi.el, contrib/httpd.el: New location.
* examples/muse-johnw.el, examples/publish-johnw: Ditto.
* scripts/publish, scripts/publish-project: Ditto.
2004-12-11 Michael Olson
* muse-project.el (muse-project-save-buffers): Attempt to fix
Emacs CVS-ism in use of `save-some-buffers-action-alist'. Since
it looks like this is somewhat optional, only use it if it is
bound.
2004-12-06 Michael Olson
* muse-mode.el: Do not use the third argument of `require' since
it seems to be an Emacs CVS-ism.
2004-11-30 Michael Olson
* muse.el (muse-tag-regexp, muse-link-regexp): Replace use of "
\t\n(\r)" with "[:space:]" and " \t" with "[:blank:]". This
should fix the problem reported by Pascal Quesseveur concerning
processing of emphasized text.
* muse-colors.el (muse-colors-verbatim, muse-colors-markup)
(muse-colors-custom-tags): Ditto.
* muse-convert.el (muse-write-citation): Ditto.
* muse-docbook.el (muse-docbook-markup-regexps)
(muse-docbook-markup-table): Ditto.
* muse-html.el (muse-html-markup-regexps)
(muse-html-insert-anchor, muse-html-markup-footnote): Ditto.
* muse-mode.el (muse-current-word, muse-link-at-point): Ditto.
* muse-publish.el (muse-publish-markup-regexps)
(muse-publish-markup-tag, muse-publish-markup-footnote)
(muse-publish-surround-text, muse-forward-paragraph)
(muse-publish-markup-list): Ditto.
2004-11-17 Michael Olson
* muse-latexcjk.el (muse-latexcjk-transform-content-type): Use
`muse-latexcjk-encoding-default' instead of
`muse-latexcjk-coding-default'. Thanks to Kenneth Geisshirt for
reporting this.
2004-10-26 Michael Olson
* muse-html.el (muse-html-style-sheet): Make part of "muse-html"
group, not "muse-message" group.
2004-10-14 Li Daobing
* muse-latexcjk.el: New file that provides LaTeX publishing with
CJK support.
2004-10-09 Li Daobing
* muse-html.el (muse-html-encoding-map): Add entries for
mule-utf8, chinese-iso-8bit, and chinese-gbk.
(muse-html-transform-content-type): Change use of cadr to cdr so
that the content type is chosen correctly.
2004-04-27 Sandra Jean Chua (Sacha)
* muse-colors.el (muse-link-face): If a file has no project, check
for links in the current directory.
* muse-mode.el (muse-visit-link): Find file if nonexistent.
2004-03-24 John Wiegley
* muse-texinfo.el (muse-texinfo-markup-table): Fixed table markup.
* muse-latex.el (muse-latex-markup-table): Fixed table markup.
* muse-html.el: Removed the tag.
(muse-html-markup-table): Fixed table markup.
2004-03-24 John Wiegley
* muse-html.el, muse-latex.el, muse-publish.el, muse-texinfo.el:
Change the way the tag is handled. It is handled now
during :after (for HTML), or in the -header (for other styles),
and not before the buffer is marked up.
* muse-html.el (muse-html-contents-tag): Don't generate contents
for section titles that have been marked read-only (such as those
within an example section).
* muse-mode.el (muse-mode-hook): Added `turn-on-auto-fill' to the
:options section.
* muse-colors.el (muse-colors-verbatim): Improved end check.
(muse-colors-markup): Improved verbatim regexp.
2004-03-23 John Wiegley
* Many changes, mostly as part of sweeping through and adding
documentation and cleaning up. Also, markup-rules are no longer a
list of three element vectors, but a list of three element lists.
There was no reason to be using vectors, and it just complicated
things.
2004-03-22 John Wiegley
* muse-colors.el (muse-colors-emphasized): Corrected bugs.
* muse-book.el (muse-book-publish-chapter): Don't process tags a
second time, since no header or footer has been inserted.
(muse-book-publish-project): Don't process tags for the whole
book; now `muse-insert-file-or-string' will do it for just the
header/footer.
* muse-project.el (muse-project-delete-output-files): Added a
command to cleanup all the output files of a project. Dangerous!
* muse-journal.el (muse-journal-anchorize-title): Remove tags and
quoting characters from anchor titles in the RDF file.
* muse-publish.el (muse-publish-comment-tag): Added a "comment"
tag, which just deletes the text within the comment.
(muse-publish-markup-tags): Added "comment" tag.
(muse-publish-markup-buffer): Don't process tags for entire file
after inserting the header and footer.
(muse-insert-file-or-string): Instead, only process the tag
for just the text in the header and footer.
* muse-journal.el (muse-journal-html-munge-buffer): Added local
binding for `datestamp'.
* muse-colors.el (muse-colors-emphasized): Rewrote this function,
which is now hundreds of times faster. Removed
`muse-colors-ok-context-p', since I could not figure out what it
was doing, and it was slowing things down tremendously (to the
point of making font-lock unusable in larger buffers).
(muse-colors-underlined): Rewrite.
(muse-colors-verbatim): Rewrite.
2004-03-22 John Wiegley
* muse-html.el (muse-html-markup-paragraph): Use `looking-at',
rather than just checking `char-after'.
* muse-journal.el (muse-journal-anchorize-title): Call
save-match-data, or else infinite loops occur.
2004-03-21 John Wiegley
* muse-journal.el (muse-journal-html-munge-buffer): Simplified,
since :before-end is now used to call the function.
* muse-html.el (muse-html-markup-rules): Fixed rule for adding
final
.
* muse-poem.el (muse-poem-prepare-buffer): Make sure to set
`muse-poem-longest-line' as a local variable.
2004-03-20 John Wiegley
* muse-html.el (muse-html-header): Corrected author reference in
header.
* muse-docbook.el (muse-docbook-markup-table): Removed reference
to `muse-docbook-table-attributes', which doesn't exist.
* muse-publish.el (muse-publish-markup-footnote): Improved
functionality so that, if the style supports it, it can handle
footnote references.
* muse-latex.el (muse-latex-markup-rules): Use
`muse-publish-markup-footnote'.
(muse-latex-markup-strings): Added footnote markup strings.
(muse-latex-prepare-buffer): Removed initialization of
`muse-latex-footnotes', which is now gone.
2004-03-20 John Wiegley
* muse-texinfo.el (muse-texinfo-markup-rules): Use general
footnote facility.
(muse-texinfo-markup-strings): Added footnote markup strings.
* muse-publish.el (muse-publish-markup-buffer): Added :before-end
style hook, which gets run after markup is done, but before the
header and footer are inserted.
(muse-publish-markup-footnote): Added a generic form of footnote
markup, which all the styles will use.
* muse-mode.el (muse-mode-hook): Removed support for `table'
package.
(muse-html-markup-table): ditto.
* muse-html.el (muse-html-markup-rules): Removed support for
`table' package.
* muse-docbook.el: Added new publishing style.
* muse-colors.el (muse-colors-markup): Highlight #title even if
not at beginning of buffer (not really a speed hit).
* muse-publish.el (muse-publish-markup-buffer): Default "author"
to (user-full-name).
* muse-book.el (muse-book-latex-header): "author" directive now
defaults to (user-full-name).
* muse-latex.el (muse-latex-header): "author" directive now
defaults to (user-full-name).
* muse-poem.el (muse-chapbook-latex-header): "author" directive
now defaults to (user-full-name).
* muse-texinfo.el (muse-texinfo-header): "author" directive now
defaults to (user-full-name).
2004-03-20 John Wiegley
* muse-mode.el (muse-visit-link): Was missing the string argument
in call to `substring'. Also, if an anchor was specified in the
link name, search for it (if it exists).
(muse-mode-map): Bind C-c C-a to `muse-index'.
(muse-index): Added back project index generation code.
* muse-colors.el (muse-mode-local-map): Added back the old
local-map, which allows hitting RET on link names in a Muse
buffer.
* muse-publish.el (muse-publish-file): Use `muse-page-name'
instead of `file-name-nondirectory'.
(muse-publish-output-name): Use `muse-page-name'.
2004-03-20 John Wiegley
* muse-publish.el (muse-publish-markup-buffer): Remove leading
trailing whitespace from a buffer before marking it up.
(muse-publish-get-output-dir): Corrected insertion of :path.
* muse-texinfo.el, muse-latex.el, muse-html.el: Removed default
directories. Use project definitions to set directories!
* muse-arabic.el: Changed "arabic" tool to "atranslit".
* muse-latex.el (muse-latex-markup-rules): Only join like tables
and lists; before, it was joining tables to lists.
* muse-project.el (muse-project-publish-file): Changed :regexp to
:include/:exclude.
* muse-mode.el (muse-mode-hook): Initialize with nil.
2004-03-19 John Wiegley
* muse-colors.el (muse-link-face): Strip anchors before checking
if a project page exists.
* muse-arabic.el: Added new module for rendering Arabic text
within Muse pages.
* muse-http.el (muse-http-render-page): Set
`muse-publishing-current-file' before marking up buffer.
* muse-project.el (muse-project-set-variables): Changed
`make-local-var' to `make-local-variable'.
Avoid byte compiler warnings from use of `make-local-hook'.
* muse-journal.el (muse-journal-latex-munge-buffer): Use a let
form to avoid free variable.
* muse-book.el (muse-book-publish-project): Set
`muse-current-project' when publishing a book.
* muse-publish.el (muse-publish-markup-list-or-quote): Removed
extraneous code I had added long ago for handling indented
paragraphs; but it messes up handling of single line quotations.
* muse-poem.el (muse-poem-markup-tag): Added "nohead" attribute.
Also, add "poem" tag to `muse-publish-markup-tags'.
* muse-colors.el (muse-colors-markup): Removed '''', and only
highlight title if it begins the buffer.
(muse-colors-region): Removed some extraneous code.
(muse-link-face): Added `save-match-data', and use of
`muse-file-regexp'.
(muse-colors-link): match-string was called with 0, should be 2.
* muse-journal.el: Added anchor generation (for RDF).
(muse-journal-latex-munge-buffer): Make sections and subsections
within a journal enter into the tableofcontents as chapters and
sections.
* muse-book.el (muse-book-publish-chapter): Set
`muse-publishing-current-file' to the file which is being inserted
as a chapter. This helps the hooks know which file the contents
has come from, which may influence stylistic decisions.
* muse-journal.el: Added a first approach at creating journals; it
still needs to be cleaned up and better architected, but is at
least working and proving the concept. Still too hackish, though.
Also, "rdf" is available as a style, which can convert journal
pages into an RDF that represents a summary of the content in that
page.
2004-03-18 John Wiegley
* muse-publish.el (muse-publish-output-name): First argument is
now optional, defaults to current file.
2004-03-18 Sacha Chua
* muse-project.el (muse-project-set-variables): New. Sets
buffer-local variables based on :set keyword. Use like this:
:set (sym val sym val ...).
* muse-mode.el (muse-mode): Set variables.
(muse-visit-link): Allow override of `visit-link-function' using
the new :visit-link keyword.
;; Local Variables:
;; coding: utf-8
;; End:
muse-el-3.20+dfsg/etc/ 0000755 0001750 0001750 00000000000 11331353120 014003 5 ustar taffit taffit muse-el-3.20+dfsg/etc/emacs-wiki-migration.txt 0000644 0001750 0001750 00000012450 11331353120 020566 0 ustar taffit taffit
This document describes the process of migrating from emacs-wiki to Muse.
Features
========
Muse only
---------
Features that exist in Muse, but not emacs-wiki:
- Nested lists.
- Publishing to multiple other formats, such as LaTeX and Docbook.
- Escaping special characters automatically throughout the entire
document, so that you don't have to.
- Ability to use a different header and footer in different projects,
by creating your own publishing style.
- Ability to surround some Muse markup with the tag, which
causes is to not be treated as markup. This is useful for
publishing the "|" character as-is, without turning the current
line into a table.
- Improved detection of paragraphs, which results in HTML that meets
various W3C standards.
- Journalling mode that is capable of publishing to RSS 2.0 or RSS
1.0 (RDF).
- Embedding LaTeX code into a document by turning it into an image.
This is in muse-latex2png.el.
emacs-wiki only
---------------
The reason that most of these have not been implemented is lack of
demand. If you want to see these features implemented, please send an
email to the muse-el-discuss mailing list, describing a good use case
for them.
- Publishing bookmarks in XBEL format. The bk2site program --
available separately -- does an adequate job, so this was not
implemented for Muse.
- Macros, i.e. keywords like %this%, that expand to some text upon
publishing.
- Global IDs.
- Menu generation.
- PGP encryption of regions with the and tags.
- The tag.
- Publishing of ChangeLog files.
- The keybinding `C-c C-r': rename wiki link at point.
- The keybinding `C-c C-D': delete wiki link at point.
- The #style directive.
- Using the title of the page in a generated index page, rather than
the filename of the page.
Specifying Projects
===================
Here is an example emacs-wiki-projects setting.
(setq emacs-wiki-projects
'(("WebWiki" .
((emacs-wiki-directories . ("~/WebWiki"))
(emacs-wiki-project-server-prefix . "/web/")
(emacs-wiki-publishing-directory
. "~/public_html/web")))
("ProjectsWiki" .
((emacs-wiki-directories . ("~/ProjectsWiki"))
(emacs-wiki-project-server-prefix . "/projects/")
(emacs-wiki-publishing-directory
. "~/public_html/projects")))))
And here is the corresponding muse-project-alist setting.
(setq muse-project-alist
'(("Website" ("~/WebWiki"
:default "WelcomePage")
(:base "html"
:path "~/public_html/web"))
("Projects" ("~/ProjectsWiki"
:default "WelcomePage")
(:base "html"
:path "~/public_html/projects"))))
Note that there is no need to specify a prefix. Muse will
automatically figure out what the relative paths in links to Muse
files should be.
If you want to be able to link to another project entry that is on a
different domain, then you must use :base-url in every project entry.
An example of this follows.
(setq muse-project-alist
'(("Website" ("~/WebWiki"
:default "WelcomePage")
(:base "html"
:base-url "http://web.example.org/web"
:path "~/public_html_1/web"))
("Projects" ("~/ProjectsWiki"
:default "WelcomePage")
(:base "html"
:base-url "http://projects.example.org/projects"
:path "~/public_html_2/projects"))))
Special Topics
==============
Including multiple directories
------------------------------
With emacs-wiki, this was done by setting the
`emacs-wiki-recurse-directories' option to non-nil.
With Muse, this can be accomplished by including an entry in your
muse-project-alist setting that causes entries for a directory and all
subdirectories to be created. This does not work when using the
customize interface to set `muse-project-alist'.
Here is an example:
("Blog" (,@(muse-project-alist-dirs "~/Blog")
:default "index")
;; Publish this directory and its subdirectories. Arguments
;; are as follows. The above `muse-project-alist-dirs' part
;; is also needed, using Argument 1.
;;
;; 1. Source directory
;; 2. Output directory
;; 3. Publishing style
;; remainder: Other things to put in every generated style
,@(muse-project-alist-styles "~/Blog"
"~/public_html/blog"
"blosxom"))
Generating an Index page
------------------------
In emacs-wiki, the page specified by `emacs-wiki-index-page' is an
automatically generated index page.
Muse does not automatically create this file. If you want an
automatic index file to be generated, then create a file and place the
following contents (between the lines of underscores) in it.
_____
#title Index
(muse-index-as-string t t t)
_____
Then, add a :force-publish tag to the paths part of the project entry
in muse-project-alist. Example:
("Website" ("~/Web/"
:force-publish ("WikiIndex")
:default "WelcomePage")
(:base "xhtml"
:base-url "http://mydomain.org/"
:path "~/public_html"))
License
=======
This file may be used, distributed, and modified without restriction.
muse-el-3.20+dfsg/etc/muse.rnc 0000644 0001750 0001750 00000020427 11331353120 015465 0 ustar taffit taffit namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace rng = "http://relaxng.org/ns/structure/1.0"
# Emacs Muse RELAX NG Schema v. 1.2
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
# Author: Brad Collins (brad AT chenla DOT org)
# Maintainer: Michael Olson
# This is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version. This material is distributed in
# the hope that it will be useful, but WITHOUT ANY WARRANTY; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more
# details.You should have received a copy of the GNU General Public
# License along with this file; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307, USA.
# Commentary:
#
# RelaxNG Compact syntax can be converted into RelaxNG XML Syntax,
# DTD format and XML Schema language using free tools.
#
# Emacs users are encouraged to use James Clarke's nxml-mode for
# editing and validating XML files. If you are in nxml-mode use the
# command C-c C-s C-f to point to this schema file, say yes if you
# are asked if you want to copy the file to your location, and then
# C-c C-s C-a can be used to reload the schema if you make changes
# to the file.
# History:
#
# Version 0.1:
# - Original version by Brad Collins.
#
# Version 0.2:
# - Hacked it to the point of working with Muse's QuickStart
# document.
#
# Version 0.3:
# - Permit lists to be nested.
#
# Version 1.0:
# - Permit paragraph-level markup, such as links, to appear in
# table lines.
# - Support multiple definitions in a definition list.
# - Permit a list to be nested inside of a definition.
# - Permit a link to be inside of a title.
# - Permit emphasis to be inside of other emphasis.
#
# Version 1.1:
# - Add the tag.
#
# Version 1.2:
# - Add the tag.
# - Don't allow tags inside of format elements.
# Contributors:
# Schema:
start = MUSE
## root element
MUSE =
element MUSE {
muse.element.pageinfo?
& muse.element.section*
& muse.element.p*
& muse.element.blockquote*
& muse.element.table*
& muse.element.list*
& muse.element.hr*
& muse.element.image*
& muse.element.example*
& muse.element.verse*
}
# ------------------------------------------------
# Pageinfo elements
# ------------------------------------------------
## pageinfo element used for metadata
## for the page
muse.element.pageinfo = element pageinfo {
muse.element.title?
& muse.element.author?
& muse.element.maintainer?
& muse.element.pubdate? }?
## page title element
muse.element.title = element title {
muse.element.link*
& text }?
## page author element
muse.element.author = element author { text }?
## page maintainer element
muse.element.maintainer = element maintainer { text }?
## page publication date element
muse.element.pubdate = element pubdate { text }?
# ------------------------------------------------
# Block elements
# ------------------------------------------------
muse.element.section = element section {
muse.attribute.type?
& muse.attribute.level?
& muse.element.section*
& muse.element.title*
& muse.element.p*
& muse.element.blockquote*
& muse.element.table*
& muse.element.list*
& muse.element.hr*
& muse.element.image*
& muse.element.example*
& muse.element.verse*
& text }?
## blockquote element
muse.element.blockquote = element blockquote {
muse.element.title?
& muse.element.p* }?
## paragraph element
muse.element.p = element p {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& muse.element.anchor*
& muse.element.footnote*
& text }?
## example element
muse.element.example = element example { text }?
## verse element
muse.element.verse = element verse {
muse.element.line* }?
## verse line element
muse.element.line = element line {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& muse.element.anchor*
& muse.element.footnote*
& text }?
# ------------------------------------------------
# Unordered list elements
# ------------------------------------------------
muse.element.list = element list {
muse.attribute.type?
& muse.element.item* }?
muse.element.item = element item {
muse.element.term?
& muse.element.definition*
& muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.p*
& muse.element.blockquote*
& muse.element.table*
& muse.element.example*
& muse.element.verse*
& muse.element.list*
& text }?
# ------------------------------------------------
# Definition list elements
# ------------------------------------------------
muse.element.term = element term {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& text }?
## def
muse.element.definition = element definition {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& muse.element.list*
& text }?
# ------------------------------------------------
# Inline elements
# ------------------------------------------------
## format element
## used for emphasis, underlining, and centering paragraphs
muse.element.format = element format {
muse.attribute.type?
& muse.attribute.level?
& muse.element.code*
& muse.element.format*
& text }?
## cite element
## used for citing sources
muse.element.cite = element cite {
muse.attribute.type?
& text }?
## code element
## used for small pieces of monospace text, like commands
muse.element.code = element code { text }?
muse.element.image = element image { muse.attribute.href? }?
## horizontal rule element
muse.element.hr = element hr { empty }?
## footnote element
muse.element.footnote = element footnote { text }?
## anchor element
muse.element.anchor = element anchor { muse.attribute.id }?
## link element
muse.element.link = element link {
muse.attribute.type?
& muse.attribute.href
& text }?
# ------------------------------------------------
# Attributes
# ------------------------------------------------
## type attribute
muse.attribute.type = attribute type { text }?
## level attribute
muse.attribute.level = attribute level { text }?
## href attribute -- must have valid URI
muse.attribute.href = attribute href { xsd:anyURI }?
## id attribute
muse.attribute.id = attribute id { text }?
# ------------------------------------------------
# Table elements
# ------------------------------------------------
## table element
muse.element.table = element table {
muse.element.tbody*
& muse.element.thead*
& muse.element.tfoot* }?
## table body element
muse.element.tbody = element tbody { muse.element.tr* }?
## table header element
muse.element.thead = element thead { muse.element.tr* }?
## table footer element
muse.element.tfoot = element tfoot { muse.element.tr* }?
## table row element
muse.element.tr = element tr {
muse.element.td*
& muse.element.th* }?
## td element
muse.element.td = element td {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& muse.element.anchor*
& muse.element.footnote*
& text }?
## th element
muse.element.th = element th {
muse.element.br*
& muse.element.code*
& muse.element.cite*
& muse.element.format*
& muse.element.image*
& muse.element.link*
& muse.element.image*
& muse.element.anchor*
& muse.element.footnote*
& text }?
muse-el-3.20+dfsg/etc/IDEAS.muse 0000644 0001750 0001750 00000006730 11331353120 015531 0 ustar taffit taffit This is the "Ideas" page for Emacs Muse.
It lists various ideas for future enhancements to Emacs Muse. It also
serves to keep track of various changes that the maintainer would like
to merge into Muse at some point.
* Pending code
This is code that may or may not be already approved, but should be
checked out at some point.
** Waiting for a new release
- Jim Ottaway
- jeho-latex.el: a rewrite of muse-latex.el which should replace it
at some point.
- muse-latex-labels.el: addition of cross-references to LaTeX.
Should be merged into muse-latex.el after replacing with
jeho-latex.el.
- David D. Smith
- dds-emphasis-bits.el
- New syntax for explicitly specifying emphasis:
{[_-=*] some emphasized text}.
Also, {** some text **} and {*** some text ***} should work.
- Using -strike- to do strikethrough.
* Ideas without code
** After 3.10 release
None of these ideas has been finalized yet.
*** Support for different source markup formats
For any of these to be done, we have to write functions that call the
right program to do the publishing for us. If the markup format has
some project-aware tools, write Elisp wrappers for those at the
project-publish level.
- Markdown: http://daringfireball.net/projects/markdown/
mwolson: I hate this format, but it's popular.
- reStructuredText: http://docutils.sourceforge.net/rst.html
mwolson: I like this format from an initial glance.
- AsciiDoc: http://www.methods.co.nz/asciidoc/index.html
Git uses this, but it has heavy dependencies.
- Org Mode: http://orgmode.org/
Just use org-publish functions.
- Like Muse's default markup, but allow tags to be specified in
Texinfo style: namely, "@tagname{contents}" instead of
"contents" for small regions and
"@tagname\ncontents\n@end tagname" for large regions.
This might be a pain to implement, and only one person has asked
for it.
- Take markup features from phpBB and make a format out of it. This
could interest the forum crowd in our work.
mwolson: I do not have interest in making a new markup format at
the moment.
*** Publishing to plain text
- The file experimental/muse-message.el also needs some attention, so
that it can do plain text. Maybe it should be renamed to
muse-plain-text.el.
- People have requested being able to publish Muse format to other
stuff like rst and markdown.
mwolson: I'm not in any hurry to implement this.
*** Make tags for every "main" Muse markup syntax
The idea is to have something to fall back on. One use case is
putting a list into a table.
*** Allow pages made by M-x muse-index to be refreshed automatically
The idea is to update the contents of the index page whenever a new
page is saved. This should be controlled by a new customizable option
called `muse-index-update', which is either nil or non-nil.
`muse-index' should be modified to add the generated buffer into a new
variable called `muse-index-buffers'.
A new function called `muse-index-update-buffers' should be made,
which goes through the list `muse-index-buffers', doing the following.
It must check `muse-index-update' first to see whether it should do
anything. It must take no arguments.
(let ((index (muse-index-as-string as-list exclude-private)))
(dolist (buffer muse-index-buffers)
(with-current-buffer buffer
(erase-buffer)
(insert index)
(current-buffer))))
This function should be added to after-save-hook in muse-mode.el.
muse-el-3.20+dfsg/scripts/ 0000755 0001750 0001750 00000000000 11331353120 014717 5 ustar taffit taffit muse-el-3.20+dfsg/scripts/muse-build.el 0000644 0001750 0001750 00000005145 11331353120 017314 0 ustar taffit taffit (add-to-list 'load-path "../contrib")
(add-to-list 'load-path "../experimental")
(add-to-list 'load-path "../lisp")
;; Avoid interference from VC.el
(setq vc-handled-backends nil)
(defun muse-elint-files ()
(require 'elint)
(elint-initialize)
(defvar nomessage t)
(load "muse" nil nomessage)
(dolist (dir '("../lisp" "../contrib" "../experimental"))
(dolist (file (directory-files dir nil "\\.el$"))
(setq file (substring file 0 (string-match "\\.el$" file)))
(load file nil nomessage)))
(add-to-list 'elint-standard-variables 'current-prefix-arg)
(add-to-list 'elint-standard-variables 'command-line-args-left)
(add-to-list 'elint-standard-variables 'buffer-file-coding-system)
(add-to-list 'elint-standard-variables 'save-some-buffers-action-alist)
(add-to-list 'elint-standard-variables 'emacs-major-version)
(add-to-list 'elint-standard-variables 'emacs-minor-version)
(add-to-list 'elint-standard-variables 'emacs-version)
(add-to-list 'elint-standard-variables 'window-system)
(add-to-list 'elint-standard-variables 'muse-mode-abbrev-table)
(dolist (file command-line-args-left)
(find-file file)
(message "Checking %s ..." file)
(elint-current-buffer)
(with-current-buffer (elint-get-log-buffer)
(goto-char (point-min))
(forward-line 2)
(while (not (or (eobp)
(looking-at "^Linting complete")))
(message (buffer-substring (muse-line-beginning-position)
(muse-line-end-position)))
(forward-line 1)))
(kill-buffer (current-buffer))))
(defun muse-generate-autoloads ()
(interactive)
(defvar autoload-package-name)
(defvar command-line-args-left)
(defvar generated-autoload-file)
(require 'autoload)
(setq backup-inhibited t)
(setq generated-autoload-file (expand-file-name "muse-autoloads.el"))
(setq command-line-args-left (mapcar #'expand-file-name
command-line-args-left))
(if (featurep 'xemacs)
(progn
(setq autoload-package-name "muse")
(batch-update-autoloads))
(find-file generated-autoload-file)
(delete-region (point-min) (point-max))
(insert ";;; muse-autoloads.el --- autoloads for Muse
;;
;;; Code:
")
(save-buffer 0)
(batch-update-autoloads)
(find-file generated-autoload-file)
(goto-char (point-max))
(insert ?\n)
(insert "(provide 'muse-autoloads)
;;; muse-autoloads.el ends here
;;
;; Local Variables:
;; version-control: never
;; no-byte-compile: t
;; no-update-autoloads: t
;; End:
")
(insert ?\n)
(save-buffer 0)
(kill-buffer (current-buffer))))
muse-el-3.20+dfsg/scripts/publish 0000755 0001750 0001750 00000000430 11331353120 016310 0 ustar taffit taffit #!/bin/bash
style=$(echo $1 | sed 's/^--//')
shift
$EMACS -q $SITEFLAG -batch -l ../scripts/muse-build.el \
-l muse-regexps.el -l muse.el -l muse-publish.el \
-l muse-html.el -l muse-latex.el -l muse-texinfo.el \
-f muse-batch-publish-files $style --output-dir=. "$@"
muse-el-3.20+dfsg/experimental/ 0000755 0001750 0001750 00000000000 11331353120 015725 5 ustar taffit taffit muse-el-3.20+dfsg/experimental/muse-split.el 0000644 0001750 0001750 00000041650 11331353120 020357 0 ustar taffit taffit ;;; muse-split.el --- split published Muse files
;; Copyright (C) 2006 Free Software Foundation, Inc.
;; Author: Phillip Lord
;; This file is part of Emacs Muse. It is not part of GNU Emacs.
;; Emacs Muse is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your
;; option) any later version.
;; Emacs Muse is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with Emacs Muse; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;; Status:
;; This works now, except that anchors will get broken, as they may
;; well point to the wrong thing.
;; Anchors are mostly working, some crashes in caching code. Have
;; realised that could just circumvent the anchors problem by always
;; pointing toward the full length entry which all of my split
;; functions generate now. Given the complexity that this has
;; introduced taht might not have been a bad idea.
;; These functions directly over-write the original versions in
;; muse-publish.
(require 'muse-publish)
(require 'assoc)
(eval-when-compile
(require 'cl))
;; this code duplicates that in muse-publish-markup-regexps and should
;; be factored out. I use this style to pull directives from the front
;; of file.
(defvar muse-publish-presplit-markup-regexps
`(
;; Handle any leading #directives
(1200 "\\`#\\([a-zA-Z-]+\\)\\s-+\\(.+\\)\n+" 0 directive)
;; define anchor points
(1500 "^\\(\\W*\\)#\\(\\S-+\\)\\s-*" 0 anchor)))
(defvar muse-publish-presplit-functions
'((directive . muse-publish-presplit-directive)
(anchor . muse-publish-presplit-anchor)))
;; oh dear, this function used to be so simple and now has got so
;; nasty. I'm sure I can amalgamate some of the let bindings and
;; lambda function.
(defun muse-publish-file (file style &optional output-dir force)
"Publish the given file in list FILES.
If the argument FORCE is nil, each file is only published if it is
newer than the published version. If the argument FORCE is non-nil,
the file is published no matter what."
(interactive (cons (read-file-name "Publish file: ")
(muse-publish-get-info)))
(setq style (muse-style style))
(let* ((output-path (muse-publish-output-file file output-dir style))
(output-suffix (muse-style-element :osuffix style))
(muse-publishing-current-file file)
(muse-publishing-style-in-use style)
(muse-publish-split-file-split-values nil)
(muse-publish-presplit-directive-store "")
(muse-publish-presplit-anchor-location nil)
(muse-publishing-targets-alist
(muse-publish-split-file file))
(target-list
(mapcar
(lambda(elem)
(if output-suffix
(concat (file-name-sans-extension
(cdr (car elem)))
output-suffix)
output-path))
muse-publishing-targets-alist)))
(when (or force
;; update if any of the files are out of date.
(let ((outofdate nil))
(mapc
(lambda(elem)
(if (file-newer-than-file-p file
(car elem))
(setq outofdate t)))
muse-publishing-targets-alist)
outofdate))
(if (and muse-publish-report-threshhold
(> (nth 7 (file-attributes file))
muse-publish-report-threshhold))
(message "Publishing %s ..." file)
;; need to grab the directives.
(muse-publish-presplit-publish file)
;; start a temp buffer for main data
(muse-with-temp-buffer
(muse-insert-file-contents file)
(let ((mainbuffer (current-buffer))
(subcontents))
(mapc
(lambda(elem)
(muse-with-temp-buffer
;; not handling the directives yet.
(save-excursion
(set-buffer mainbuffer)
(setq subcontents
(buffer-substring-no-properties
(cadr elem) (caddr elem))))
;; insert the directives afresh.
(insert muse-publish-presplit-directive-store)
(insert subcontents)
(muse-publish-markup-buffer (muse-page-name file) style)
(let* ((backup-inhibited t))
(write-file (muse-publish-output-file (car elem)
output-dir style)))
(muse-style-run-hooks :final style file (car elem))))
muse-publishing-targets-alist)))
t))))
(defun muse-publish-presplit-publish(file)
(muse-with-temp-buffer
(muse-insert-file-contents file)
(let ((muse-publish-markup-regexps muse-publish-presplit-markup-regexps)
(muse-publish-markup-functions muse-publish-presplit-functions)
(muse-publishing-styles)
(muse-publish-presplit-splitting-file file))
;; great an empty style. The name is just wierd, so that
;; it won't preexist (which makes muse crash). The let
;; binding should mean that it disappears.
(muse-define-style "ThePurposeIsNotToDescribeTheWorldButToChangeIt")
(muse-publish-markup-buffer
(muse-page-name "temp")
"ThePurposeIsNotToDescribeTheWorldButToChangeIt"))))
(defun muse-publish-prepare-url (target &rest ignored)
"Transform anchors and get published name, if TARGET is a page."
(save-match-data
(unless (or (string-match muse-url-regexp target)
(string-match muse-image-regexp target)
(string-match muse-file-regexp target))
(setq target (if (string-match "#" target)
;; is this a simple anchor, we need to check
;; where it will be published.
(if (eq (aref target 0) ?\#)
(concat
(muse-publish-link-name
(muse-publish-split-file-for-anchor
muse-publishing-current-file
(substring target 1)))
target)
;; it's not anchor simple anchor, so we need to
;; put in the extension
(let
((file (substring target 0 (match-beginning 0)))
(anchor (substring target (match-end 0))))
(concat (muse-publish-link-name
(muse-publish-split-file-for-anchor
(concat (file-name-directory
muse-publishing-current-file)
file "." muse-file-extension)
anchor))
"#" anchor)))
;; it's not an anchor at all.
(muse-publish-link-name target))))
target))
;; these are support functions
;; we currently have to store a lot of state to get this to work,
;; which is rather dissatisfying. All of it is let bound from
;; muse-publish-file. Wey hey for dynamic scoping.
(defvar muse-publish-presplit-directive-store nil
"Stores directives from main file during splitting")
(defvar muse-publish-presplit-anchor-location nil
"Stores anchors during publishing.")
(defvar muse-publish-split-file-split-values nil
"Cache the values of split locations in files, during publish")
(defvar muse-publishing-targets-alist nil
"Stores the targets to be published to.
Changing this will cause bad things to happen. ")
(defvar muse-publishing-style-in-use nil
"Stores the style currently being published")
(defvar muse-publish-presplit-splitting-file nil
"The file that we are current publishing for presplit")
(defun muse-publish-no-split-function (file)
(muse-with-temp-buffer
(muse-insert-file-contents file)
(list `(,(file-name-sans-extension file) . (1 ,(point-max))))))
(defun muse-publish-split-file (file)
"Calculate where to split the FILE.
FILE is the file to be split
This should return an alist of form (position . output-file)
where position is the last position that should appear in output-file"
(let* ((split-function
(muse-get-keyword
:split muse-publishing-style-in-use t))
(split-alist
(if (not split-function)
(muse-publish-no-split-function file)
(funcall split-function file))))
(aput 'muse-publish-split-file-split-values
file split-alist)
split-alist))
(defun muse-publish-presplit-directive (&optional name value)
(unless name (setq name (match-string 1)))
(unless value (setq value (match-string 2)))
;; store the directives.
(setq muse-publish-presplit-directive-store
(format "%s#%s %s\n"
muse-publish-presplit-directive-store
name value)))
(defun muse-publish-presplit-anchor()
"Stores the location and names of anchors"
(let ((alist (aget muse-publish-presplit-anchor-location
muse-publish-presplit-splitting-file)))
(add-to-list 'alist
`(,(match-string 2) . ,(match-beginning 2)))
(aput 'muse-publish-presplit-anchor-location
muse-publish-presplit-splitting-file
alist)))
;; ;;(setq muse-publish-split-file-split-values nil)
;; (setq muse-publish-split-file-split-values
;; '(("d:/home/src/ht/home_website/journal-split/journal.muse"
;; ("d:/home/src/ht/home_website/journal-split/journal-20060226" 875 1592)
;; ("d:/home/src/ht/home_website/journal-split/journal-20060228" 417 874)
;; ("d:/home/src/ht/home_website/journal-split/journal-20060303" 27 416)
;; ("d:/home/src/ht/home_website/journal-split/journal-20060220" 1593 2957)
;; ("d:/home/src/ht/home_website/journal-split/journal-all" 1 2957)
;; ("d:/home/src/ht/home_website/journal-split/journal" 1 2957))))
;; ;; muse-publish-presplit-anchor-location's value is shown below.
;; ;; Value:
;; ;; (setq muse-publish-presplit-anchor-location nil)
;; (setq muse-publish-presplit-anchor-location
;; '(("d:/home/src/ht/home_website/journal-split/journal.muse"
;; ("semantic_enrichment" 1642)
;; ("title" 2))
;; ("d:/home/src/ht/home_website/journal-split/simple.muse"
;; ("anchor7" 189)
;; ("anchor3" 173)
;; ("anchor2" 162)
;; ("simple_anchor" 15))))
;; get the anchor locations
;; (muse-publish-presplit-publish file)
;; get the split locations
;; (muse-publish-split-file file))
(defun test1()
(interactive)
(message "%s" (muse-publish-split-file-for-anchor
"d:/home/src/ht/home_website/journal-split/journal.muse"
"semantic_enrichment")))
(defun muse-publish-split-file-for-anchor (base-file anchor)
"Given a base file and an anchor, return the file into which
the anchor will be output"
(let* (
;; this should be an alist, keyed on the anchor, valued on
;; either numbers, or file-locations
(anchor-alist
(or
(aget muse-publish-presplit-anchor-location
base-file)
(progn
(muse-publish-presplit-publish base-file)
(aget muse-publish-presplit-anchor-location
base-file))))
;; this should be a list of triples: file, start, stop.
(split-list
(or (aget muse-publish-split-file-split-values
base-file)
(muse-publish-split-file base-file)))
;; this should be either the position of the anchor in a
;; buffer as an int, or a output file location
(anchor-position-or-location
(aget anchor-alist anchor))
;; this should definately be the output file location
(anchor-output
(if (stringp anchor-position-or-location)
anchor-position-or-location
(car
(delete nil
(mapcar
(lambda(elem)
(if (and
(> anchor-position-or-location
(cadr elem))
(< anchor-position-or-location
(caddr elem)))
(car elem)))
split-list))))))
;; ensure that we put the location back into the stored list so
;; that we don't have to work it out next time
(aput
'anchor-alist anchor anchor-output)
(aput 'muse-publish-presplit-anchor-location
base-file anchor-alist)
(file-name-nondirectory anchor-output)))
;; this is an example of why I would want to use the code.
(muse-derive-style "journal-html-by-day" "journal-html"
:split 'muse-journal-split-by-entry)
(muse-derive-style "journal-html-by-month" "journal-html"
:split 'muse-journal-split-by-month)
(defun muse-journal-split-by-entry (file)
"Split a muse journal file into days"
(muse-with-temp-buffer
(muse-insert-file-contents file)
(let* ((split-alist)
(root-name (file-name-sans-extension file))
(split-regexp "^\\* \\([0-9]\\{8\\}\\)")
(current-position
(if (re-search-forward split-regexp nil t)
(- (match-beginning 0) 1)))
(entry-name (match-string 1))
(entry-location (match-beginning 0)))
(while (re-search-forward split-regexp nil t)
(setq entry-location (match-beginning 0))
(add-to-list 'split-alist
`(,(concat root-name "-" entry-name)
,current-position
,(- entry-location 1)))
(setq current-position entry-location
entry-name (match-string 1)))
(add-to-list 'split-alist
`(,(concat root-name "-" entry-name)
,current-position
,(point-max))
t)
(add-to-list 'split-alist
`(,root-name
,(cadr (car (last split-alist)))
,(caddr (car (last split-alist))))
t)
(add-to-list 'split-alist
`(,(concat root-name "-all")
1 ,(point-max))
t))))
(defun muse-journal-split-by-month (file)
"Split a muse journal file into months.
This function makes the assumption that the entries are sorted. If
it isn't then it some of the entries will appear not to be published."
(muse-with-temp-buffer
(muse-insert-file-contents file)
(let* ((split-alist)
(root-name (file-name-sans-extension file))
(split-regexp (concat "^\\* \\([0-9]\\{4\\}\\)\\([0-9]\\{2\\}\\)"
"\\([0-9]\\{2\\}\\)"))
(current-position
(if (re-search-forward split-regexp nil t)
(- (match-beginning 0) 1)))
(entry-name (muse-journal-split-by-month-name))
(entry-location (match-beginning 0)))
;; for a new entry, if the name has changed
(while (and (re-search-forward split-regexp nil t)
(not (equal entry-name
(muse-journal-split-by-month-name))))
(setq entry-location (match-beginning 0))
(add-to-list 'split-alist
`(,(concat root-name "-" entry-name)
,current-position
,(- entry-location 1)))
(setq current-position entry-location
entry-name (muse-journal-split-by-month-name)))
;; add last entry
(add-to-list 'split-alist
`(,(concat root-name "-" entry-name)
,current-position
,(point-max)))
;; add some duplicate entries in. Add these last, so that
;; anchors go to one of the others.
;;
;; duplicate last entry as current
(add-to-list 'split-alist
`(,root-name
,(cadr (car (last split-alist)))
,(caddr (car (last split-alist))))
t)
;; add all entry
(add-to-list 'split-alist
`(,(concat root-name "-all")
1 ,(point-max))
t))))
(defun muse-journal-split-by-month-name()
(concat (match-string 1)
(match-string 2)))
(defun test2()
(interactive)
(message "%s" (muse-journal-split-by-entry "journal.muse")))
(provide 'muse-split)
;; muse-split.el ends here
muse-el-3.20+dfsg/experimental/muse-message.el 0000644 0001750 0001750 00000020372 11331353120 020646 0 ustar taffit taffit ;;; muse-message.el --- publish a file as an email message
;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
;; This file is part of Emacs Muse. It is not part of GNU Emacs.
;; Emacs Muse is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your
;; option) any later version.
;; Emacs Muse is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with Emacs Muse; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; This file is in experimental status due to unimplemented features.
;;
;; To make use of this file, put (require 'muse-message) in your .emacs.
;;
;; By default, the way to mark up an email message is to do the
;; following.
;;
;; - Enter Message mode. This is usually done automatically when you
;; compose an email message using your Emacs mail client of choice.
;;
;; - Use standard Muse markup instead of plain text for your message.
;;
;; - When you are ready to see what the email message will look like,
;; do `M-x muse-message-markup'. This will make two versions of
;; your message: plaintext and HTML.
;;
;; - If you want to do further editing, simply undo your changes,
;; edit some more, and run `muse-message-markup' when you're ready
;; to send.
;;
;; - Send the message.
;;
;; If you wish the markup to be automatic at the time of sending you
;; message (a risky proposition), just add `muse-message-markup' to
;; `message-send-hook'.
;;; Contributors:
;;; Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Muse E-Mail Publishing (via alternative/html)
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'message)
(require 'footnote)
(require 'muse-publish)
(require 'muse-html)
(defgroup muse-message nil
"Options controlling the behavior of Emacs Wiki Mail Markup."
:group 'hypermedia
:group 'muse-publish)
(defcustom muse-message-publishing-style "message"
"Style used for publishing the alternative/text section of a message."
:type 'string
:group 'muse-message)
(defcustom muse-message-html-publishing-style "message-html"
"Style used for publishing the alternative/html section of a message."
:type 'string
:group 'muse-message)
(defcustom muse-message-indent " "
"String used to pad indentend text."
:type 'string
:group 'muse-message)
(defcustom muse-message-style-sheet
"body {
background: white; color: black;
margin-left: 3%; margin-right: 7%;
}
p { margin-top: 1% }
p.verse { margin-left: 3% }
.example { margin-left: 3% }
h2 {
margin-top: 25px;
margin-bottom: 0px;
}
h3 { margin-bottom: 0px; }"
"Text to prepend to a Muse mail message being published.
This text may contain markup tags."
:type 'string
:group 'muse-message)
(defcustom muse-message-html-header
"
(muse-publishing-directive \"title\")
user-mail-address\">
\n"
"Text to prepend to a Muse mail message being published.
This text may contain markup tags."
:type 'string
:group 'muse-message)
(defcustom muse-message-html-footer
"\n
\n"
"Text to append to a Muse mail message being published.
This text may contain markup tags."
:type 'string
:group 'muse-message)
(defcustom muse-message-markup-functions
'((link . muse-message-markup-link))
"An alist of style types to custom functions for that kind of text.
For more on the structure of this list, see
`muse-publish-markup-functions'."
:type '(alist :key-type symbol :value-type function)
:group 'muse-message)
(defcustom muse-message-markup-strings
'((rule . " * * * *")
(begin-verse . " ")
(end-verse-line . "\n ")
(verse-space . " ")
(end-verse . "")
(begin-underline . "_")
(end-underline . "_")
(begin-literal . "`")
(end-literal . "'")
(begin-emph . "/")
(end-emph . "/")
(begin-more-emph . "*")
(end-more-emph . "*")
(begin-most-emph . "*/")
(end-most-emph . "/*"))
"Strings used for marking up message text."
:type '(alist :key-type symbol :value-type string)
:group 'muse-message)
(defcustom muse-message-markup-tags
'(("example" t nil muse-message-example-tag)
("contents" nil t muse-message-contents-tag))
"A list of tag specifications, for specially marking up text.
See the documentation for `muse-publish-markup-tags'."
:type '(repeat (list (string :tag "Markup tag")
(boolean :tag "Expect closing tag" :value t)
(boolean :tag "Parse attributes" :value nil)
function))
:group 'muse-message)
(defcustom muse-message-markup-specials nil
"A table of characters which must be represented specially."
:type '(alist :key-type character :value-type string)
:group 'muse-message)
(defun muse-message-markup-link ()
(let ((desc (match-string 2))
(url (match-string 1)))
(save-match-data
(delete-region (match-beginning 0) (match-end 0))
(when desc (insert desc))
(save-excursion
(Footnote-add-footnote)
(insert url))
"")))
(defun muse-message-example-tag (beg end)
"Mark up example and code by simply indenting them."
(muse-publish-escape-specials beg end)
(kill-line 1)
(goto-char end)
(kill-line -1)
(string-rectangle beg (point) muse-message-indent)
(muse-publish-mark-read-only beg (point)))
;; Copied from `muse-publish-contents-tag'.
;; FIXME: Make this do something worthwhile.
(defun muse-message-contents-tag (beg end attrs)
(set (make-local-variable 'muse-publish-generate-contents)
(cons (copy-marker (point) t)
(let ((depth (cdr (assoc "depth" attrs))))
(or (and depth (string-to-number depth)) 2)))))
;;;###autoload
(defun muse-message-markup ()
"Markup a wiki-ish e-mail message as HTML alternative e-mail.
This step is manual by default, to give the author a chance to review
the results and ensure they are appropriate.
If you wish it to be automatic (a risky proposition), just add this
function to `message-send-hook'."
(interactive)
(save-excursion
(message-goto-body)
(let ((text (buffer-substring-no-properties (point) (point-max)))
(subject (message-fetch-field "subject"))
(encoding (muse-html-encoding)))
(delete-region (point) (point-max))
(insert
"<#multipart type=alternative>\n"
"<#part type=text/plain charset=\"" encoding "\" nofile=yes>\n"
(with-temp-buffer
(insert text)
(muse-publish-markup-buffer
subject muse-message-publishing-style)
(buffer-substring-no-properties (point-min) (point-max)))
"\n<#part type=text/html charset=\"" encoding "\" nofile=yes>\n"
(with-temp-buffer
(insert text)
(muse-publish-markup-buffer
subject muse-message-html-publishing-style)
(buffer-substring-no-properties (point-min) (point-max)))
"<#/multipart>\n"))))
(muse-define-style "message"
:functions 'muse-message-markup-functions
:strings 'muse-message-markup-strings
:tags 'muse-message-markup-tags)
(muse-derive-style "message-html" "html"
:header 'muse-message-html-header
:footer 'muse-message-html-footer)
(muse-derive-style "message-xhtml" "xhtml"
:header 'muse-message-html-header
:footer 'muse-message-html-footer)
(provide 'muse-message)
;;; muse-message.el ends here
muse-el-3.20+dfsg/experimental/muse-mathml.el 0000644 0001750 0001750 00000012246 11331353120 020505 0 ustar taffit taffit ;;; muse-mathml.el --- provide MathML support for Muse
;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Li Daobing (lidaobing AT gmail DOT com)
;; Keywords: Muse mathml hypermedia
;; This file is part of Emacs Muse. It is not part of GNU Emacs.
;; Emacs Muse is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your
;; option) any later version.
;; Emacs Muse is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with Emacs Muse; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;;_* Commentary
;;;_ + Startup
;; 1. Get a copy of itex2MML and install it to `/usr/bin' or
;; `/usr/local/bin'.
;;
;; You can get a copy from
;; `http://pear.math.pitt.edu/mathzilla/itex2mml.tar.gz'.
;; 2. Copy `itex2MML.py' to `/usr/bin' or `/usr/local/bin', if you
;; do not have this file, create it and do a `chmod a+x itex2MML.py'.
;; Its content is the following.
;; #!/usr/bin/env python
;; """A wrap for itex2MML
;;
;; Delete the extra blank line.
;;
;; You can use it as itex2MML.
;;
;; For example:
;;
;; echo '$a_b$' | itex2MML.py
;; """
;;
;; import sys
;; import os
;;
;; def main():
;; fin, fo = os.popen2('itex2MML')
;; fin.write(sys.stdin.read())
;; fin.close()
;; for line in fo:
;; line = line.strip()
;; if line:
;; print line
;;
;; if __name__ == '__main__':
;; main()
;; 3. Put `muse-math.el' into your `load-path'.
;; 4. Add the following to your .emacs file.
;;
;; (require 'muse-mathml)
(require 'muse-html)
(require 'muse-publish)
(defgroup muse-mathml nil
"Options controlling the behavior of Muse XHTML+MathML publishing.
See `muse-html' for more information."
:group 'muse-publish)
(defcustom muse-mathml-extension ".xhtml"
"Default file extension for publishing XHTML+MathML files."
:type 'string
:group 'muse-mathml)
(defcustom muse-mathml-style-sheet muse-xhtml-style-sheet
"Store your stylesheet definitions here.
This is used in `muse-mathml-header'.
You can put raw CSS in here or a tag to an external stylesheet.
This text may contain markup tags.
An example of using is as follows.
"
:type 'string
:group 'muse-mathml)
(defcustom muse-mathml-header
"
(muse-html-encoding)\"?>
(concat (muse-publishing-directive \"title\")
(let ((author (muse-publishing-directive \"author\")))
(if (not (string= author (user-full-name)))
(concat \" (by \" author \")\"))))
muse-html-meta-http-equiv\"
content=\"muse-html-meta-content-type\" />
(let ((maintainer (muse-style-element :maintainer)))
(when maintainer
(concat \"\")))
muse-xhtml-style-sheet
\n"
"Header used for publishing XHTML+MathML files.
This may be text or a filename."
:type 'string
:group 'muse-mathml)
(defcustom muse-mathml-footer "
\n"
"Footer used for publishing XHTML+MathML files.
This may be text or a filename."
:type 'string
:group 'muse-mathml)
(defcustom muse-mathml-command
(if (or (featurep 'executable)
(load "executable" t t))
(executable-find "itex2MML.py"))
"Program to use to convert Latex text to MathML."
:type 'string
:group 'muse-mathml)
(defun muse-publish-mathml-tag (beg end)
(if muse-mathml-command
(muse-publish-command-tag
beg end (list (cons "interp" muse-mathml-command)))
(muse-publish-example-tag beg end)))
;; Add the tag
(add-to-list 'muse-publish-markup-tags
'("mathml" t nil muse-publish-mathml-tag)
t)
;; Register the Muse MathML Publisher
(muse-derive-style "mathml" "xhtml"
:suffix 'muse-mathml-extension
:header 'muse-mathml-header
:footer 'muse-mathml-footer)
(provide 'muse-mathml)
;;; muse-mathml.el ends here
muse-el-3.20+dfsg/experimental/Makefile 0000644 0001750 0001750 00000001471 11331353120 017370 0 ustar taffit taffit .PHONY: all experimental clean realclean distclean fullclean install
.PHONY: install-uncompiled
.PRECIOUS: %.elc
DEFS = $(shell test -f ../Makefile.defs && echo ../Makefile.defs \
|| echo ../Makefile.defs.default)
include $(DEFS)
EL = $(wildcard *.el)
ELC = $(patsubst %.el,%.elc,$(wildcard *.el))
all: experimental
experimental: $(ELC)
$(PROJECT)-build.elc: ../scripts/$(PROJECT)-build.el
@echo $(PROJECT)-build.el is not byte-compiled
%.elc: %.el
@$(EMACS) -q $(SITEFLAG) -batch -l ../scripts/$(PROJECT)-build.el \
-f batch-byte-compile $<
clean realclean distclean fullclean:
-rm -f *.elc *~
install: $(ELC)
install -d $(ELISPDIR)/experimental
install -m 0644 $(EL) $(ELC) $(ELISPDIR)/experimental
install-uncompiled:
install -d $(ELISPDIR)/experimental
install -m 0644 $(EL) $(ELISPDIR)/experimental
muse-el-3.20+dfsg/experimental/muse-cite.el 0000644 0001750 0001750 00000011240 11331353120 020140 0 ustar taffit taffit ;;; muse-cite.el --- smart citations for Muse
;; Copyright (C) 2005 Free Software Foundation, Inc.
;; This file is part of Emacs Muse. It is not part of GNU Emacs.
;; Emacs Muse is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your
;; option) any later version.
;; Emacs Muse is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with Emacs Muse; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; This file is currently in experimental state. I found it in an old
;; pre-release version of Muse and thought it might come in handy.
;;; Contributors:
;;; Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Muse Smart Citations
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Commentary:
;; If a footnote is of the general form "AUTHOR, TITLE, PAGES", this
;; module offers a function to more intelligently markup such
;; citations. For LaTeX, it italicizes the TITLE and inserts correct
;; spacing and endashes in PAGES. For HTML, it is able to convert the
;; TITLE or PAGES into a link, given knowledge of where to find known
;; texts by certain authors.
;;
;; To use this module -- since it only rewrites markup, and is not
;; particular to any style -- modify `muse-before-publish-hook':
;;
;; (require 'muse-publish)
;; (require 'muse-cite)
;; (add-hook 'muse-before-publish-hook 'muse-cite-munge-footnotes)
(require 'muse-publish)
(defgroup muse-cite nil
"Offers functionality for marking up smart citations."
:group 'muse-publish)
(defcustom muse-cite-titles nil
"An alist of authors and the titles they've written.
This is how titles are recognized, and marked up as links to the
title and to the specific pages referenced.
This variable is an alist of the form:
((AUTHOR . TITLE-LIST)
...)
Where AUTHOR is a string, and TITLE-LIST is a list of the form:
((TITLE URL [PAGE-URL])
...)
Where TITLE is a string, URL is a URL string, and PAGE-URL can be
nil or a URL string with %d somewhere in it -- which is substituted
with the first page number mentioned in the reference."
:type '(alist :key-type (string :tag "Author")
:value-type
(repeat (list (string :tag "Title")
(string :tag "URL")
(choice (string :tag "Page URL")
(const :tag "No Page URL" nil)))))
:group 'muse-cite)
(defun muse-cite-rewrite (citation)
"Rewrite an 'Author, Title, Pages' CITATION as an intelligent reference."
(when (string-match
(concat "\\([^,]+\\), *\\([^,]+\\), *"
"\\(pp?\\. *\\([0-9]+\\)\\(-+[0-9]+\\)?\\)") citation)
(let* ((author (match-string 1 citation))
(title (match-string 2 citation))
(pages (match-string 3 citation))
(page (match-string 4 citation))
(author-entry (assoc author muse-cite-titles))
(book-entry (and author-entry
(assoc title (cdr author-entry))))
(book-url (car (cdr book-entry)))
(book-page (car (cddr book-entry))))
(cond
((null book-url)
(format "%s, *%s*, %s" author title pages))
((or (null book-page)
(not (string-match "%d" book-page)))
(format "%s, [[%s][%s]], %s" author book-url title pages))
(t
(setq book-page (replace-match page nil t book-page))
(format "%s, [[%s][%s]], [[%s][%s]]"
author book-url title book-page pages))))))
(defun muse-cite-munge-footnotes ()
"Munge the footnote citations in the current buffer.
The author/title definitions given in `muse-cite-titles' are used
to change the citations automagically into hyperlinks.."
(goto-char (point-max))
(when (re-search-backward "^Footnotes" nil t)
(while (re-search-forward "^\\[[0-9]+\\][ \t]+\\(.+\\)" nil t)
(let ((end (copy-marker (match-end 0) t))
(rewrite (save-match-data
(muse-cite-rewrite (match-string 1)))))
(when rewrite
(goto-char (match-beginning 1))
(delete-region (match-beginning 1) (match-end 1))
(insert rewrite))
(goto-char end))))
nil)
(provide 'muse-cite)
;;; muse-cite.el ends here
muse-el-3.20+dfsg/experimental/muse-protocol-iw.el 0000644 0001750 0001750 00000005012 11331353120 021472 0 ustar taffit taffit ;;; muse-protocol-iw.el --- implement an interwiki protocol handler
;; Copyright (C) 2006 Free Software Foundation, Inc.
;; Author: Phillip Lord
;; This file is part of Emacs Muse. It is not part of GNU Emacs.
;; Emacs Muse is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published
;; by the Free Software Foundation; either version 3, or (at your
;; option) any later version.
;; Emacs Muse is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with Emacs Muse; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; This defines a new url type, which is like the interwiki support of
;; muse-wiki. You can also publish to a different directory structure
;; from the file space (which I do for historical reasons). So a link
;; like
;; [[iw:home\emacs][hello]] will work from any of the individual muse
;; projects that I have.
(require 'muse-protocols)
(add-to-list 'muse-url-protocols
'("iw:" muse-browse-url-iw muse-resolve-url-iw))
(defvar muse-interwiki-protocol-alist
'(("home" "/" "~/src/ht/home_website")
("silly" "/silly/" "~/src/ht/home_website/silly")
("energy" "/energy/" "~/src/ht/home_website/energy")
("journal" "/journal/" "~/src/ht/home_website/journal")))
(defun muse-resolve-url-iw (url)
(when (string-match "\\`iw:\\([a-zA-Z]*\\)\\\\\\(.+\\)" url)
(let* ((wiki-resolve
(assoc (match-string 1 url)
muse-interwiki-protocol-alist))
(publish-resolve
(nth 1 wiki-resolve)))
(concat publish-resolve (match-string 2 url)))))
;; this doesn't handle anchors properly yet.
(defun muse-browse-url-iw (url)
(when (string-match "\\`iw:\\([a-zA-Z]*\\)\\\\\\(.+\\)#?\\(.*\\)" url)
(let* ((wiki-resolve
(assoc (match-string 1 url)
muse-interwiki-protocol-alist))
(browse-resolve
(or (nth 2 wiki-resolve)
(nth 1 wiki-resolve))))
(find-file
(concat browse-resolve "/"
(match-string 2 url)
".muse")))))
(provide 'muse-protocol-iw)
;; muse-protocol-iw.el ends here
muse-el-3.20+dfsg/README 0000644 0001750 0001750 00000021137 11331353120 014114 0 ustar taffit taffit -*- Text -*-
This is the README file for Emacs Muse.
The terms "Emacs Muse", "Emacs-Muse", and "Muse" are used
interchangeably throughout this document to refer to this software.
Synopsis
========
Emacs Muse is an authoring and publishing environment for Emacs. It
simplifies the process of writings documents and publishing them to
various output formats.
Emacs Muse consists of two main parts: an enhanced text-mode for
authoring documents and navigating within Muse projects, and a set of
publishing styles for generating different kinds of output.
Directory contents
==================
The directory structure is as follows.
etc :: Miscellaneous files like the emacs-wiki migration guide, the
list of ideas for the future, and a RelaxNG schema for Muse XML.
contrib :: Files that are not a part of Muse proper, but are useful
enough to be bundled with Muse.
examples :: Example configuration files for use with Muse, a
publishable quickstart guide, and miscellaneous helper stuff.
experimental :: Source code that is not yet considered stable.
lisp :: Muse source code.
scripts :: Scripts that are used when compiling Muse and publishing
the QuickStart document; they might prove useful if you want to
automate the building of Muse documents.
texi :: The manual (muse.texi) and any supplemental sections.
Getting started
===============
Prerequisites
-------------
You need either Emacs (21.1 or greater), XEmacs (21.4 or greater), or
SXEmacs (warning: Muse has not been tested with SXEmacs). The current
maintainer recommends using Emacs.
Compilation
-----------
This is an optional step, since Emacs Lisp source code does not
necessarily have to be byte-compiled. It may yield a slight speed
increase, however.
A working copy of Emacs or XEmacs is needed in order to compile the
Emacs Muse. By default, the program that is installed with the name
`emacs' will be used.
If you want to use the `xemacs' binary to perform the compilation, you
must copy `Makefile.defs.default' to `Makefile.defs' in the top-level
directory, and then edit `Makefile.defs' as follows. You can put
either a full path to an Emacs or XEmacs binary or just the command
name, as long as it is in the PATH.
EMACS = xemacs
SITEFLAG = -no-site-file
# Edit the section as necessary
install_info = install-info --section "XEmacs 21.4" $(1).info \
$(INFODIR)/dir || :
Running `make' in the top-level directory should compile the Muse
source files in the `lisp' directory, and generate an autoloads
file in `lisp/muse-autoloads.el'.
Installation
------------
Muse may be installed into your file hierarchy by doing the following.
Copy `Makefile.defs.default' to `Makefile.defs' in the top-level
directory, if you haven't done so already. Then edit the
`Makefile.defs' file so that ELISPDIR points to where you want the
source and compiled Muse files to be installed and INFODIR indicates
where to put the Muse manual. You may use a combination of DESTDIR
and PREFIX to further determine where the installed files should be
placed. As mentioned earlier, you will want to edit EMACS and
SITEFLAG as shown in the Compilation section if you are using XEmacs.
If you are installing Muse on a Debian or Ubuntu system, you might
want to change the value of INSTALLINFO as specified in
`Makefile.defs'.
If you wish to install Muse to different locations than the defaults
specify, edit `Makefile.defs' accordingly.
Run `make' as a normal user, if you haven't done so already.
Run `make install' as the root user if you have chosen installation
locations that require this.
Insinuation
-----------
Two things need to happen in order for Muse to be usable with your
version of Emacs or XEmacs.
1. The location of the Muse directory needs to be added to the load
path so that your variant of Emacs can find it.
2. You need to load whichever Muse files you wish to make use of.
A quick example that accomplishes both of these follows.
;; Add this to your .emacs or .xemacs/init.el file.
(setq load-path (add-to-list 'load-path "/path/to/muse"))
(require 'muse-mode)
(require 'muse-publish)
(require 'muse-html) ;; and so on
Documentation
-------------
The Muse manual may be generated by running `make doc'.
It will produce two files: an Info file called `muse.info' and an HTML
document called `muse.html'. Both of these will be created in the
`texi' directory.
This manual is also available online in several forms.
- PDF: http://mwolson.org/static/doc/muse.pdf
- HTML (single file): http://mwolson.org/static/doc/muse.html
- HTML (multiple files): http://mwolson.org/static/doc/muse/
QuickStart
----------
Type "make examples" to generate a quickstart guide for Muse. An HTML
document called QuickStart.html, an Info document called
QuickStart.info, and a PDF file called QuickStart.pdf will be created
in the `examples' directory.
If you do not have a working LaTeX installation with the proper fonts,
the PDF file will not be successfully generated.
To see the document that is interpreted in order to generate these
files, take a look at `examples/QuickStart.muse'.
To view the generated Info document from within Emacs, try the
following.
C-u M-x info RET /path/to/muse/examples/QuickStart.info RET
Further Documentation
=====================
Please consult http://www.emacswiki.org/cgi-bin/wiki/EmacsMuse to find
more information on bugs, unimplemented features, and user-contributed
tweaks.
The current maintainer's webpage for Muse is at
http://mwolson.org/projects/EmacsMuse.html.
If you wish to participate in the development of Muse, or track the
latest development changes, please read the `Development' section of
the Muse manual (in the `Obtaining Muse' chapter) for instructions.
Mailing Lists
=============
Mailing lists for Muse exist.
muse-el-announce ::
Low-traffic list for Muse-related announcements.
You can join this mailing list (muse-el-announce@gna.org)
using the subscription form at
http://mail.gna.org/listinfo/muse-el-announce/.
This mailing list is also available via Gmane (http://gmane.org/).
The group is called
gmane.emacs.muse.announce.
muse-el-discuss ::
Discussion, bugfixes, suggestions, tips, and the like for Muse.
This mailing list also includes the content of muse-el-announce.
You can join this mailing list (muse-el-discuss@gna.org)
using the subscription form at
http://mail.gna.org/listinfo/muse-el-discuss/.
This mailing list is also available via Gmane with the identifier
gmane.emacs.muse.general.
muse-el-logs ::
Log messages for commits made to Muse.
You can join this mailing list (muse-el-logs@gna.org) using
the subscription form at
http://mail.gna.org/listinfo/muse-el-logs/.
This mailing list is also available via Gmane with the identifier
gmane.emacs.muse.scm.
muse-el-commits ::
Generated bug reports for Emacs Muse. If you use our bug-tracker at
https://gna.org/bugs/?group=muse-el, the bug reports will be sent to
this list automatically.
You can join this mailing list (muse-el-commits@gna.org) using
the subscription form at
http://mail.gna.org/listinfo/muse-el-commits/.
This mailing list is also available via Gmane with the identifier
gmane.emacs.muse.cvs.
License
=======
Emacs Muse is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any
later version.
Emacs Muse is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with Emacs Muse; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
The Muse manual is available under the terms of the GNU Free
Documentation License, Version 1.2 or any later version published by
the Free Software Foundation; with no Invariant Sections, and with the
Front-Cover texts and Back-Cover Texts as specified in the manual. A
copy of the license is included in the section entitled "GNU Free
Documentation License" in the Muse manual. All Emacs Lisp code
contained in the manual may be used, distributed, and modified without
restriction.
The PNG images included in the examples/ directory may be used,
distributed, and modified without restriction.
The contents of the contrib/blosxom and contrib/pyblosxom directories
are available under the terms of other licenses. Please consult the
header of each file for the appropriate license text.
muse-el-3.20+dfsg/ChangeLog.5 0000644 0001750 0001750 00000035411 11331353120 015151 0 ustar taffit taffit 2008-11-23 Michael Olson
* examples/ikiwiki/IkiWiki/Plugin/muse.pm: Loop in Muse closer to
the beginning of the publishing process, so that other
HTML-producing Ikiwiki plugins can do their thing after we are
done with the document. Otherwise, we would end up escaping their
HTML. Detect Muse-style directives. Treat #tag, #tags, and
#category directives like an Ikiwiki tag directive. Treat every
other directive as an Ikiwiki meta directive.
* lisp/muse-docbook.el (muse-docbook-markup-paragraph): Honor the
muse-no-paragraph property. Use muse-end-list as the property
name rather than end-list.
* lisp/muse-html.el (muse-html-markup-paragraph): Honor the
muse-no-paragraph property. Use muse-end-list as the property
name rather than end-list.
* lisp/muse-ikiwiki.el (muse-ikiwiki-markup-regexps)
(muse-ikiwiki-markup-directive): Pass through Ikiwiki directives
during publishing without modifying them.
* lisp/muse-xml.el (muse-xml-markup-paragraph): Honor the
muse-no-paragraph property. Use muse-end-list as the property
name rather than end-list.
* lisp/muse.el (muse-forward-paragraph, muse-forward-list-item):
Use muse-end-list as the property name rather than end-list.
2008-11-01 Michael Olson
* examples/ikiwiki/IkiWiki/Plugin/muse.pm (import): Add hook for
getsetup.
(getsetup): New function that provides info about this plugin.
* lisp/muse-colors.el (muse-unhighlight-region): Reset
muse-no-flyspell property.
* lisp/muse-ikiwiki.el (muse-colors-ikiwiki-directive): Fix some
logic errors with quote detection. Remove flyspell overlays and
set a property to inhibit them.
* lisp/muse-mode.el (muse-mode-flyspell-p): Don't highlight at
point if muse-no-flyspell property present.
2008-10-30 Michael Olson
* lisp/muse-ikiwiki.el (muse-ikiwiki-directive): New face for
coloring Ikiwiki directives.
(muse-colors-ikiwiki-directive): Colorize ikiwiki directives.
(muse-ikiwiki-insinuate-colors): Stuff to do when both
muse-ikiwiki and muse-colors are loaded.
* lisp/muse-wiki.el: Move some code out of eval-after-load
statement.
2008-10-13 Michael Olson
* lisp/muse-colors.el (muse-colors-regexp, muse-colors-vector):
Remove.
(muse-colors-highlighting-registry)
(muse-colors-make-highlighting-struct)
(muse-colors-highlighting.regexp, muse-colors-highlighting.vector)
(muse-colors-highlighting.remaining)
(muse-colors-highlighting-entry)
(muse-colors-find-highlighting, muse-colors-define-highlighting):
New scheme for separating highlighting rules according to
major-mode.
(muse-configure-highlighting, muse-use-font-lock): Use
muse-colors-define-highlighting.
(muse-colors-region): Permit the vector to contain more than one
rule. Handle case where we have rules that are not in the vector
and do not have the same function handler. Make sure that the
match data exactly corresponds to the regexp that goes with the
rule.
(muse-colors-custom-tags, muse-colors-explicit-link): No need to
explicitly call `looking-at', because the match data will be
correct.
(muse-colors-implicit-link): Use match-string 0 instead of
match-string 1, now that the match data is accurate.
* lisp/muse-wiki.el (muse-wiki-update-project-file-regexp)
(muse-wiki-wikiword-regexp): Call muse-colors-define-highlighting.
(muse-wiki-update-interwiki-regexp): Only update the highlighting
if the value has changed.
2008-10-12 Michael Olson
* lisp/muse.el (muse-write-file): Make nomessage argument
optional.
2008-10-09 Michael Olson
* examples/ikiwiki/IkiWiki/Plugin/muse.pm: Move here from
examples/ikiwiki/muse. Encode/decode UTF-8 properly. Take pains
to remove the temp file. Die on errors. Remove test sub.
* examples/ikiwiki/muse-init-project.el: Remove server stuff.
* lisp/muse-ikiwiki.el (muse-ikiwiki-publish-file): Set
font-lock-verbose to nil to avoid spurious messages when
publishing. Silence the "Wrote file" message.
* lisp/muse-publish.el (muse-batch-publish-files): Set
font-lock-verbose to nil to avoid spurious messages when
publishing.
* lisp/muse.el (muse-write-file): Take NOMESSAGE argument.
* texi/muse.texi (Ikiwiki): Add instructions for using
IkiWiki::Plugin::muse.
2008-09-30 Clinton Ebadi
* muse-latex2png (muse-latex2png): Use call-process rather than
shell-command-to-string, so that filenames with spaces in them are
handled correctly.
2008-09-28 Michael Olson
* lisp/muse-publish.el (muse-publish-this-file): Handle style
arguments that are strings.
2008-09-18 Michael Olson
* lisp/muse-publish.el (muse-publish-markup): Do not skip past the
beginning of the buffer even if the first character is read-only.
This fixes a bug where the first paragraph would not be published
properly if it started with a link.
2008-09-17 Michael Olson
* lisp/muse-project.el (muse-project-alist-styles): If output
directory is a remote path, do not try to expand it. This fixes a
bug where Tramp could be invoked during startup if this function
is used in the definition of muse-project-alist.
2008-09-13 Wang Diancheng
* lisp/muse-publish.el (muse-publish-markup-regexps): Use
muse-table-el-line-regexp.
* lisp/muse-regexps.el (muse-table-el-line-regexp): New regexp
that represents lines in table.el style tables.
2008-08-07 Michael Olson
* lisp/muse-latex.el (muse-latex-slide-tag): Mark all frames as
fragile, so that works. This may be slower, but it is
always correct, and requires no additional work on my end.
* lisp/muse-project.el (muse-project-publish-this-file): Correctly
pass style to muse-publish-this-file. This fixes a bug when using
C-c C-v on a file not part of any project.
2008-07-28 Michael Olson
* examples/ikiwiki/muse: New file that provides a plugin for
Ikiwiki that allows it to publish Muse files.
* examples/ikiwiki/muse-init-project.el: Sample Muse init file
that provides project-aware publishing of single files for
Ikiwiki.
* examples/ikiwiki/muse-init-simple.el: Sample Muse init file that
provides basic single-file publishing support for Ikiwiki.
* texi/muse.texi (Ikiwiki): Finish documenting Ikiwiki support.
2008-07-22 Michael Olson
* lisp/muse-latex.el (muse-latex-pdf-program): New option that
determines the program to use when browsing a PDF file.
(muse-latex-pdf-browse-file): Use it.
* lisp/muse-mode.el (muse-browse-result): Support styles that use
an output suffix, such as PDF.
* texi/muse.texi (LaTeX): Document muse-latex-pdf-browser.
2008-07-21 Michael Olson
* lisp/muse-html.el (muse-html-src-allowed-modes): Docfix.
* lisp/muse-ikiwiki.el: New file that supports integration with
Ikiwiki.
* texi/muse.texi (Ikiwiki): Document new options and style.
2008-07-20 Michael Olson
* lisp/muse-mode.el (muse-browse-result): Publish page before
viewing it. This addresses Bug #5172.
* lisp/muse-project.el (muse-project-publish-this-file): Accept a
new STYLE argument to specify which publishing style to use.
2008-07-09 Michael Olson
* lisp/muse-latex.el (muse-latex-slide-tag): Make sure tags inside
of a tag get published. Thanks to Philipp Grau for the
report.
2008-05-18 Michael Olson
* texi/muse.texi (Tag Summary): Document the
tag.
2008-05-18 Alex Ott
* lisp/muse-html.el (muse-html-div-tag): New function which
publishes a
tag.
(muse-html-markup-tags): Add entry for "div".
* lisp/muse-publish.el (muse-publish-markup-tags): Add entry for
"div".
(muse-publish-div-tag): By default, ignore
tags.
2008-04-16 Michael Olson
* Makefile.defs.default (DEBNAME, LASTUPLOAD, BUILDOPTS)
(DISTRIBUTOR): Remove obsolete variables.
* Makefile (debclean, debprepare, debbuild, debinstall, deb):
Remove obsolete targets.
2008-03-31 Michael Olson
* lisp/muse-colors.el (muse-make-faces-default): Improve docstring
for muse-header-{1-3} faces.
2008-03-26 Michael Olson
* lisp/muse-project.el (muse-project-publish-this-file): Make sure
that we follow the same rules as muse-project-publish-file,
including creating the publishing directory if it does not exist.
Thanks to Peter Jones for the report and initial patch.
2008-03-25 Michael Olson
* lisp/muse-project.el (muse-current-project-global): New variable
that saves the value of muse-current-project across temporary
buffers when publishing.
(muse-project-publish-this-file, muse-project-publish): Save
muse-current-project.
(muse-project-save-buffers): Save the current buffer, so that this
does not throw off publishing.
(muse-project-set-variables): Set muse-current-project if it is
nil and there is a saved value for it. Thanks to Peter Jones for
the report.
* lisp/muse-publish.el (muse-batch-publishing-p)
(muse-publishing-p): Docfix.
(muse-inhibit-before-publish-hook): New variable that indicates
whether muse-before-publish-hook should be inhibited.
(muse-publish-markup-buffer): Use it.
(muse-publish-file): Call muse-before-publish-hook here, so that
we can run it before checking for file-local variables, since
values set by the latter should overlay values set by the former.
Bind muse-inhibit-before-publish-hook to t so that we do not call
the hook twice.
2008-03-16 Michael Olson
* lisp/muse-journal.el (muse-journal-html-munge-buffer)
(muse-journal-latex-munge-buffer, muse-journal-rss-munge-buffer):
Use nil instead of current-time-zone to fix a bug where dates
could be interpreted incorrectly. We don't allow the user to
specify the hour or minute, so it does not make sense to take the
current time zone into account. Thanks to Xin Shi for the report.
* lisp/muse-publish.el (muse-publish-markup): When point is on a
read-only character, skip to the next non-read-only character.
This works around a weird edge case with the table-el rule, and
seems like a good thing to do in general. Thanks to Suno Ano for
the report.
(muse-publish-table-el-table): Only proceed with table generation
if we have located a non-read-only "|" character.
2008-02-23 Michael Olson
* lisp/muse-wiki.el (muse-wiki-project-files-with-spaces): Fix
bug.
2008-02-22 Michael Olson
* lisp/muse-project.el (muse-read-project-file): Delete duplicates
before calling muse-completing-read-function, since
ido-completing-read does not do this.
* lisp/muse.el (muse-delete-dups): New compatibility function.
2008-02-19 Michael Olson
* lisp/muse-html.el (muse-html-src-allowed-modes): New option that
specifies the modes that we permit the tag to colorize.
(muse-html-src-tag): Use it. Use intern-soft instead of intern.
* lisp/muse-latex2png.el (muse-publish-latex-tag)
(muse-publish-math-tag):
* lisp/muse-poem.el (muse-poem-markup-tag):
* lisp/muse-publish.el (muse-publish-literal-tag)
(muse-publish-lisp-tag, muse-publish-command-tag)
(muse-publish-perl-tag, muse-publish-php-tag)
(muse-publish-python-tag, muse-publish-ruby-tag)
(muse-publish-include-tag, muse-publish-mark-up-tag): Mark these
tags as potentially dangerous for text written by untrusted
contributors.
* lisp/muse-publish.el (muse-publish-mark-up-tag): Use intern-soft
instead of intern.
(muse-publish-enable-dangerous-tags): New option that determines
whether to publish tags that can call external programs or expose
sensitive information. This is useful to set to nil for
publishing files from untrusted sources.
2008-02-10 Michael Olson
* lisp/muse-publish.el (muse-publish-enable-local-variables): New
option that determines whether to interpret local variables when
publishing. The default is not to do so.
(muse-publish-file): Interpret local variables if the user wants
this. Thanks to Sebastian Tennant for the idea.
* texi/muse.texi (Extending Muse): Flatten nodes by removing
Common Elements and grouping its subsections under this chapter.
(Style Elements): Use @defun. Fix arguments to muse-define-style.
Thanks to Sebastian Tennant for the report. Explain the arguments
of the function for :final.
(Deriving Styles): Use @defun. Fix argument names.
(Embedded Lisp): Drop mention of this being the only tag allowed
in headers and footers. Thanks to Phillip Lord for the
suggestion.
(Tag Summary): Mention muse-publish-markup-header-footer-tags.
2008-02-02 Michael Olson
* Makefile.defs.default (INFODIR): Place files in .../share/info,
rather than .../info. Thanks to gour for the suggestion.
2008-01-29 Michael Olson
* lisp/muse.el (muse-insert-file-contents): Fix bug where end of
line conversion was not happening on Windows. Thanks to Sacha
Chua for the report.
2008-01-28 Michael Olson
* Release Emacs Muse 3.12.
* NEWS: Update.
* Update copyright years.
* examples/mwolson: Update init file, stylesheets, and templates.
* etc/muse.rnc: Add support for the tag. Don't allow
tags inside of format elements.
* lisp/muse-groff.el (muse-groff-markup-strings)
* lisp/muse-html.el (muse-html-markup-strings)
(muse-xhtml-markup-strings):
* lisp/muse-latex.el (muse-latex-markup-strings)
* lisp/muse-texinfo.el (muse-texinfo-markup-strings)
* lisp/muse-xml.el (muse-xml-markup-strings): Add markup string
for line-break.
* lisp/muse-project.el (muse-project-of-file): Fix bug where
directory names without slashes in projects were not being
recognized. Thanks to Mirko Vukovic and ktneely for the report.
2008-01-23 Michael Olson
* lisp/muse-latex.el (muse-latex-header)
(muse-latex-slides-header, muse-latex-lecture-notes-header):
Default to using UTF-8, rather than latin1.
* lisp/muse-publish.el (muse-publish-url): Add comments. Move
target detection higher. Use unescaped description for image
links, so that they don't get erroneously escaped. Thanks to Suno
Ano for the report.
2008-01-15 Michael Olson
* Makefile.defs.default (DESTDIR): New variable which allows the
destination directory to be easily set. Thanks to gour for the
suggestion.
(ELISPDIR, INFODIR): Use it.
* README (Compilation): Don't mention PREFIX, ELISPDIR, and
INFODIR here.
(Installation): Mention DESTDIR and PREFIX.
* texi/muse.texi: Update copyright year.
(Installation): Don't mention PREFIX, ELISPDIR, and INFODIR in the
compilation step. Do mention DESTDIR and PREFIX in the
installation step.
2008-01-06 Michael Olson
* lisp/muse.el (muse-with-temp-buffer): Don't keep track of undo
information. Update documentation.
See ChangeLog.4 for earlier changes.
;; Local Variables:
;; coding: utf-8
;; End:
muse-el-3.20+dfsg/ChangeLog 0000644 0001750 0001750 00000002045 11331353120 015003 0 ustar taffit taffit 2009-08-05 Michael Olson
* lisp/muse.el (muse-insert-file-contents): Cause epa-file-handler
to be ignored.
2009-06-18 Michael Olson
* lisp/muse-latex.el (muse-latex-slides-header)
(muse-latex-lecture-notes-header): Handle images. Generate title
page correctly. Generate table of contents page if requested.
2009-06-17 Michael Olson
* lisp/muse-latex.el (muse-latex-pdf-cruft): Remove additional
cruft files from beamer.
2009-01-03 Michael Olson
* contrib/ikiwiki/Ikiwiki/Plugin/muse.pm: Move here from
examples/ikiwiki/IkiWiki/Plugin/muse.pm.
* contrib/Makefile (htmlize-hack.elc): Don't byte-compile
htmlize-hack.el, since it is only useful if htmlize.el is
installed.
* contrib/cgi.el: Add compatibility functions for calendar, so
that it works with both Emacs 21 and Emacs 23. Thanks to Brent
Goodrick for the report.
* texi/muse.texi (Using Muse Mode): Fix typo.
See ChangeLog.5 for earlier changes.
;; Local Variables:
;; coding: utf-8
;; End:
muse-el-3.20+dfsg/NEWS 0000644 0001750 0001750 00000152473 11331353120 013743 0 ustar taffit taffit Emacs Muse NEWS --- History of user-visible changes -*- outline -*-
* Changes in Muse 3.20
** Fix bug with duplicates in completing-read of wiki page names.
** Mark some tags as dangerous for text by untrusted contributors.
** Implement
tag.
** When viewing a page, publish it first.
** Include non-working alpha of Ikiwiki publishing.
** Make it easier to browse published PDF files.
** Fix bug with C-c C-v on a file not part of any project.
** Add workaround for Emacs 23 and htmlize issue.
** muse-latex2png: Fix handling of filenames with spaces in them.
** muse-colors: Separate highlighting rules according to major mode.
** muse-latex: Make lecture notes and slides work with images,
title page, and table of contents.
** Publishing
*** Fix end-of-line conversion bug when using Windows.
*** Fix bug where dates in journal entries could be published incorrectly.
*** Preserve the value of muse-current-project.
*** Conditionally interpret local variables.
*** Values set by file-local variables trump project variables.
*** muse-latex: Fix publishing of tags inside of tags.
*** Render correctly in slides.
*** Fix bug in publishing of table.el style tables.
*** Fix bug where the first paragraph would not be published properly
if it started with a link.
** Build system
*** Makefile.defs.default (INFODIR): Place files in .../share/info.
** Manual
*** Miscellaneous updates.
* Changes in Muse 3.12
** New interactive function `muse-update-values': Call this after
changing muse-project-alist, in order to update various autogenerated
values.
** Tag attributes may now span multiple lines.
** Don't keep track of undo data when publishing.
This should yield a speed-up.
** Build system
*** Add support for the DESTDIR variable, which allows the destination
directory to be easily set.
** Muse Mode highlighting (lisp/muse-colors.el)
*** Display message when muse-colors-toggle-inline-images is called.
** ConTeXt publishing (lisp/muse-context.el)
*** Fix publishing bug in Windows.
** HTML publishing (lisp/muse-html.el)
*** Fix bug where nested class tags were not working.
*** Fix error that occurred when a class tag had no name element.
In this case, we do not publish the tag at all.
** LaTeX publishing (lisp/muse-latex.el)
*** Escape specials in image filenames properly
Previously, it was not possible to escape "/", "#", or "|" in image
filenames. In order to make this work, be certain that you have the
following LaTeX code in your header.
\def\museincludegraphics{%
\begingroup
\catcode`\|=0
\catcode`\\=12
\catcode`\#=12
\includegraphics[width=0.75\textwidth]
}
*** Escape specials in the title string in headers
In order to achieve this effect in custom headers, replace
\title{(muse-publishing-directive "title")}
with
\title{(muse-publish-escape-specials-in-string
(muse-publishing-directive "title") 'document)}
in your headers.
*** Default to using UTF-8 rather than latin1 in headers.
*** Fix publishing bug in Windows.
*** Escape backslash as \textbackslash{} in monospace regions.
** Publish embedded LaTeX content to a PNG file (lisp/muse-latex2png.el)
*** Detect whether the tag ends at the end of a line.
If not, do not use "$$" to publish it.
** Muse Mode (lisp/muse-mode.el)
*** New option: `muse-insert-url-initial-input' specifies the initial text
to use when reading a URL.
*** Fix bug with browsing anchors that come after a link to them.
*** Fix bug involving filling and paragraphs next to headings.
*** Fill definition lists with two initial spaces in lines after the
definition list term.
** Project support (lisp/muse-project.el)
*** Fix issue that occurred when saving several files at once, where only
one of them would make it into the project file-alist.
*** If the PAGE argument to `muse-project-page-file' is nil, then return
the first directory of the project.
*** Fix bug where directory names without slashes in projects were not
being recognized.
** Publishing (lisp/muse-publish.el)
*** New tag represents a line break when publishing.
This is supported in all publishing styles except for DocBook, which
has no notion of line breaks without stylesheet hacks.
*** Treat "---" as an mdash.
Before, it would publish as an mdash followed by a single dash.
*** Escape specials properly in footnotes in several styles.
*** Fix bug with publishing plain URLs.
*** Fix bad escaping of image links.
*** Save match adta in `muse-publish-classify-url'.
** Wiki-like behavior (lisp/muse-wiki.el)
*** Display tags correctly.
*** Publish tags correctly.
* Changes in Muse 3.11
** Update my example settings in examples/mwolson.
** Fix several bugs with setting muse-file-extension to something else.
If you have both muse-file-extension set to some string, and
muse-mode-auto-p set to non-nil, please set muse-mode-auto-p to nil
from now on. This was a workaround that some people used to deal with
a bug that has now been fixed.
** Support for serving published Muse files with Blosxom.
See the end of the Blosxom Requirements section of the Muse manual for
details.
** The metadate plugin for PyBlosxom is now included with Muse
in contrib/pyblosxom/metadate.py.
** Compatibility fixes for Emacs21 and XEmacs
*** Use copy-tree instead of copy-alist.
*** Correctly require derived.el.
*** Deal with the lack of a `delete-and-extract-region' function in XEmacs
by making `muse-delete-and-extract-region'.
*** Fix XEmacs and Texinfo publishing bug.
*** Deal with lack of autoloads for the `man' function in some Emacs variants.
*** Fix XEmacs compilation error in muse-import-xml.el.
** Muse Mode highlighting (lisp/muse-colors.el)
*** Fix display bug where emphasis becomes unhighlighted when moving
around the buffer.
** ConTeXt publishing (lisp/muse-context.el)
*** Add support for #module directive.
Consult the ConTeXt section of the Muse manual for details.
** DocBook publishing (lisp/muse-docbook.el)
*** Fix bug with paragraphs after tags.
** HTML publishing (lisp/muse-html.el)
*** Fix bug with links not being interpreted in titles.
This fix also takes care of some additional escaping issues that were
addressed in the previous release by a different means.
** Journal (lisp/muse-journal.el)
*** Fix bug with title anchors and CJK.
*** Fix bug with summarized entries.
** LaTeX publishing (lisp/muse-latex.el)
*** Remove footnote references from headings.
The reason for this is that LaTeX will throw errors during the publishing
process if they exist.
** Publishing (lisp/muse-publish.el)
*** Fix serious bug in definition list publishing.
We were skipping past the initial indented line, and that was causing
an erroneous blockquote to be inserted.
*** Revert fix for escaping bug involving headings and the tag,
because it was buggy. This is instead handled by muse-html.el now.
** Texinfo publishing (lisp/muse-texinfo.el)
*** Make url, link, and link-and-anchor output look better in texi2html
output, for people who want to run that command on texi output
produced by Muse.
** XML publishing (lisp/muse-xml.el)
*** Add support for tag.
*** Bump the version of etc/muse.rnc to 1.1 to reflect support for .
** Muse Manual (texi/muse.texi)
*** Document support for citations in new Citations section.
*** Document how to use the Pyblosxom metadate plugin in the
Blosxom Requirements section.
* Changes in Muse 3.10
** Relicense to GPLv3.
** Muse's source code development is now being managed with git.
Instructions for participating in Muse development using git are
available in the "Development" section of the Muse manual.
This yields not only speed improvements, but also space efficiency
improvements. One person has found that Arch took 300MB to store one
of Muse's branches, but git takes only 4MB. The information to store
the entire Muse development history only takes up 8.6MB.
If you are a Muse developer, please consult
http://emacswiki.org/cgi-bin/wiki/MuseDevelopment for instructions on
using git, and how to gain access to the shared Muse repository.
** Remove unused markers when we are done with them.
This can speed up the publishing process.
** Build system
*** Rename Makefile.defs to Makefile.defs.default.
Now, there is a Makefile.defs.default file included with Muse, rather
than Makefile.defs. If you want to make changes to this file, first
copy it to Makefile.defs, and then make your changes there. If you do
not need to make any changes, there is no need to copy the file.
*** Indicate dependencies between Emacs Lisp files, so that Muse can be
recompiled without running "make clean" after an update.
*** Don't activate VC when publishing files.
This avoids some annoying messages when building QuickStart in the
examples directory.
*** Make installing info files easier for XEmacs users.
There is now a commented-out install-info definition in
Makefile.defs.default, along with commented instructions.
** Quickstart guide (examples/QuickStart.muse)
*** Fix some typos.
** Core functionality (lisp/muse.el)
*** Work around a bad bug in color-theme.el involving its
overwriting of the `replace-in-string' function.
*** Fix a bug where Muse would lock up if muse-project-alist is nil.
*** New option: muse-completing-read-function.
Function to call when prompting user to choose between a list of options.
This should take the same arguments as `completing-read'.
One possible value for this is 'ido-completing-read. The default
value is 'completing-read.
*** Make inserting file contents and writing files to be faster.
This involves defining the functions `muse-insert-file-contents' and
`muse-write-file'. Consult their documentation for details.
** Muse Mode highlighting (lisp/muse-colors.el)
*** Comments are now colored.
*** Fix bug with using tags in #title directives.
Now any tags in #title directives are guaranteed to be
evaluated after any other tags that are nearby.
** ConTeXt publishing (lisp/muse-context.el)
*** New file courtesy of Jean Magnan de Bornier that publishes files in
the ConTeXt format. See the ConTeXt section of the Muse manual for
details on its use.
** Journal (lisp/muse-journal.el)
*** Fix bug causing RDF output to have invalid syntax.
*** Make RSS output look nicer by adding some newlines.
*** Allow and tags to be used in entry templates.
*** Fix escaping bugs in entry template text, quote-of-the-day, and title.
*** Mark up the tag as if it were used.
*** New style journal-rss-entry indicates how we are to mark up
individual RSS and RDF entries.
*** Set `muse-journal-rdf-summarize-entries' to nil by default.
** HTML publishing (lisp/muse-html.el)
*** Add xhtml1.0 style, which is an alias for the xhtml style.
*** Add xhtml1.1 style for those who want XHTML 1.1 compliant output.
*** When publishing , only strip links from titles, rather
than every tag.
** Muse Mode (lisp/muse-mode.el)
*** Add new minor mode called muse-list-edit-minor-mode.
See the "Muse List Edit Minor Mode" section of the manual for details.
*** Don't try to indent line before inserting a comment.
** Publish embedded LaTeX content to a PNG file (lisp/muse-latex2png.el)
*** Support ConTeXt.
** Project settings (lisp/muse-project.el)
*** Handle nested projects correctly.
Now it is possible to have the directories of a project be the
subdirectories of another project. Previously, it depended on the
order that the projects were defined.
*** Set project-specific variables at publish time as well as display time.
Previously, the variable settings specified by the :set attribute in
muse-project-alist projects were being ignored at publish time, but
applied in Muse mode. Now they are applied at both times.
*** Fix bug when publishing a file that has multiple styles.
*** Fix bug when trying to publish a file in a project with multiple
directories.
*** Fix bug where links between files did not work if muse-file-extension
is nil.
*** Ignore .git metadata directories when looking for project files.
** Publishing (lisp/muse-publish.el)
*** Add tag. See "Tag Summary" in the manual for details on its use.
*** Fix bug where Muse locks up when trying to publish a malformed table.
*** Fix bug where tags other than and were being acted on
in headers and footers.
*** Fix bug involving use of inside of an file.
*** Fix bug with nested list items that have an extra blank in front.
This was causing Muse to lock up when publishing some files.
*** Fix bug with definition list publishing when there are empty terms.
*** Fix bug where output from did not match output from verse
syntax.
*** Fix bug where directives were leaking out of regions.
*** Fix escaping bug involving headings and the tag.
*** [Developers] Automatically widen before evaluating contents.
** Wiki (lisp/muse-wiki.el)
*** Fix a bug with three-part links that have descriptions.
*** (muse-wiki-resolve-project-page): If the project argument is nil,
default to the current project instead of the first project entry in
muse-project-alist.
** Common functionality used by XML-based styles (lisp/muse-xml-common.el)
*** Don't escape parentheses in URLs.
* 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: