diff --git a/ChangeLog b/ChangeLog index 15c960243..aa5fdf38c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-04 Carsten Dominik + + * lisp/org.el (org-set-font-lock-defaults): Make the description + tag bold. + + * lisp/org-exp.el (org-export-as-html, org-close-li): Implement + description lists. + 2008-05-02 Carsten Dominik * lisp/org.el (org-read-date-analyze): "." as an alias for "+0" in diff --git a/ORGWEBPAGE/Changes.org b/ORGWEBPAGE/Changes.org index d0010d3bf..8b64cc43c 100644 --- a/ORGWEBPAGE/Changes.org +++ b/ORGWEBPAGE/Changes.org @@ -12,6 +12,30 @@ ** Details +*** Description lists are now supported natively + + A plain list will be exported as a description list if the + first item in the list has a /term/ and the /description/, + separated by " :: ". For example + + : Free software by Carsten Dominik + : - RefTeX :: Support for LaTeX Labels, References, Citations + : - CDLaTeX :: more LaTeX functionality for Emacs + : - TeXmathp :: checking LaTeX buffers for Math mode. + : - ORG :: An Emacs mode for notes and projet planning. + : - CONSTANTS :: An Emacs package for inserting the definition of + : natural constants and units into a buffer. + : - IDLWAVE :: The Emacs modes for editing and + : running IDL and WAVE CL files. + : - CHAIN :: A tool for running a code with + : different sets of parameters + : - MPP :: A preprocessor tool for creating MPEG + : and other movie streams + : - Dirabbrev :: Using abbreviations for directories + : in the shell + : - PSFIXBB :: fixing the BoundingBox in postscript files + : - TFMT :: A table formatting tool + *** Blockquotes for export For quoting an entire paragraph as a citation, use diff --git a/doc/org.texi b/doc/org.texi index 6712f55e3..0a35da302 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -1128,24 +1128,34 @@ additional structure. They also provide a way to create lists of checkboxes (@pxref{Checkboxes}). Org supports editing such lists, and the HTML exporter (@pxref{Exporting}) parses and formats them. -Org knows ordered and unordered lists. Unordered list items start -with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a -bullet, lines must be indented or they will be seen as top-level -headlines. Also, when you are hiding leading stars to get a clean -outline view, plain list items starting with a star are visually -indistinguishable from true headlines. In short: even though @samp{*} -is supported, it may be better to not use it for plain list items.} as -bullets. Ordered list items start with a numeral followed by either a -period or a right parenthesis, such as @samp{1.} or @samp{1)}. Items -belonging to the same list must have the same indentation on the first -line. In particular, if an ordered list reaches number @samp{10.}, then -the 2--digit numbers must be written left-aligned with the other numbers -in the list. Indentation also determines the end of a list item. It -ends before the next line that is indented like the bullet/number, or -less. Empty lines are part of the previous item, so you can have -several paragraphs in one item. If you would like an empty line to -terminate all currently open plain lists, configure the variable -@code{org-empty-line-terminates-plain-lists}. Here is an example: +Org knows ordered lists, unordered lists, and description lists. +@itemize @bullet +@item +@emph{Unordered} list items start with @samp{-}, @samp{+}, or +@samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or +they will be seen as top-level headlines. Also, when you are hiding leading +stars to get a clean outline view, plain list items starting with a star are +visually indistinguishable from true headlines. In short: even though +@samp{*} is supported, it may be better to not use it for plain list items.} +as bullets. +@item +@emph{Ordered} list items start with a numeral followed by either a period or +a right parenthesis, such as @samp{1.} or @samp{1)}. +@item +@emph{Description} list items are like unordered list items, but contain the +separator @samp{ :: } to separate the description @emph{term} from the +desciption. +@end itemize + +Items belonging to the same list must have the same indentation on the first +line. In particular, if an ordered list reaches number @samp{10.}, then the +2--digit numbers must be written left-aligned with the other numbers in the +list. Indentation also determines the end of a list item. It ends before +the next line that is indented like the bullet/number, or less. Empty lines +are part of the previous item, so you can have several paragraphs in one +item. If you would like an empty line to terminate all currently open plain +lists, configure the variable @code{org-empty-line-terminates-plain-lists}. +Here is an example: @example @group @@ -1159,6 +1169,10 @@ terminate all currently open plain lists, configure the variable - on DVD only He makes a really funny face when it happens. But in the end, not individual scenes matter but the film as a whole. + Important actors in this film are: + - @b{Elijah Wood} :: He plays the Frodo + - @b{Sean Austin} :: He plays the Sam, Frodos friend. I still remember + him very well from his role as Mikey Walsh a in the Goonies. @end group @end example @@ -1166,7 +1180,8 @@ Org supports these lists by tuning filling and wrapping commands to deal with them correctly@footnote{Org only changes the filling settings for Emacs. For XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on, put into @file{.emacs}: -@code{(require 'filladapt)}}. +@code{(require 'filladapt)}}, and by exporting them properly +(@pxref{Exporting}). The following commands act on items when the cursor is in the first line of an item (the line with the bullet or number). @@ -1260,7 +1275,8 @@ Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and show the entry, but keep the drawer collapsed to a single line. In order to look inside the drawer, you need to move the cursor to the drawer line and press @key{TAB} there. Org mode uses a drawer for -storing properties (@pxref{Properties and Columns}). +storing properties (@pxref{Properties and Columns}), and another one for +storing clock times (@pxref{Clocking work time}). @node Orgstruct mode, , Drawers, Document Structure @section The Orgstruct minor mode @@ -9042,15 +9058,17 @@ single key navigation. @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a conflict with @file{allout.el}. @item -@i{Jason Riedy} sent a patch to fix a bug with export of TODO keywords. +@i{Jason Riedy} generalized the send-receive mechanism for orgtbl tables with +extensive patches. @item -@i{Philip Rooke} created the Org reference card and provided lots -of feedback. +@i{Philip Rooke} created the Org reference card, provided lots +of feedback, developed and applied standards to the Org documentation and +wrote the manual for the contributed packages. @item @i{Christian Schlauer} proposed angular brackets around links, among other things. @item -Linking to VM/BBDB/Gnus was inspired by @i{Tom Shannon}'s +Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s @file{organizer-mode.el}. @item @i{Ilya Shlyakhter} proposed the Archive Sibling. @@ -9075,14 +9093,12 @@ keyword. @i{David Wainberg} suggested archiving, and improvements to the linking system. @item -@i{John Wiegley} wrote @file{emacs-wiki.el} and @file{planner.el}. The -development of Org was fully independent, and both systems are really -different beasts in their basic ideas and implementation details. I later -looked at John's code, however, and learned from his implementation of (i) -links where the link itself is hidden and only a description is shown, and -(ii) popping up a calendar to select a date. John has also contributed a -number of great ideas and patches directly to Org, including the file -@code{org-mac-message.el}' +@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and +@file{muse.el}, which have similar goals as Org. Initially the development +of Org was fully independent because I was not aware of the existence of +these packages. But with time I have accasionally looked at John's code and +learned a lot from it. John has also contributed a number of great ideas and +patches directly to Org, including the file @code{org-mac-message.el}' @item @i{Carsten Wimmer} suggested some changes and helped fix a bug in linking to Gnus. diff --git a/lisp/org-exp.el b/lisp/org-exp.el index 2e0d456cb..7dedcd69a 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -468,6 +468,7 @@ Org-mode file." vertical-align: top; } + dt { font-weight: bold; } " "The default style specification for exported HTML files. Since there are different ways of setting style information, this variable @@ -2309,7 +2310,7 @@ PUB-DIR is set, use this as the publishing directory." (inquote nil) (infixed nil) (in-local-list nil) - (local-list-num nil) + (local-list-type nil) (local-list-indent nil) (llt org-plain-list-ordered-item-terminator) (email (plist-get opt-plist :email)) @@ -2349,7 +2350,7 @@ PUB-DIR is set, use this as the publishing directory." "[\r\n]")) table-open type table-buffer table-orig-buffer - ind start-is-num starter didclose + ind item-type starter didclose rpl path desc descp desc1 desc2 link snumber fnc ) @@ -2716,10 +2717,10 @@ lang=\"%s\" xml:lang=\"%s\"> (setq head-count (+ head-count 1))) (when in-local-list ;; Close any local lists before inserting a new header line - (while local-list-num - (org-close-li) - (insert (if (car local-list-num) "\n" "")) - (pop local-list-num)) + (while local-list-type + (org-close-li (car local-list-type)) + (insert (format "\n" (car local-list-type))) + (pop local-list-type)) (setq local-list-indent nil in-local-list nil)) (setq first-heading-pos (or first-heading-pos (point))) @@ -2757,10 +2758,15 @@ lang=\"%s\" xml:lang=\"%s\"> (t (error "Invalid value of `org-plain-list-ordered-item-terminator'"))) line) (setq ind (org-get-string-indentation line) - start-is-num (match-beginning 4) + item-type (if (match-beginning 4) "o" "u") starter (if (match-beginning 2) (substring (match-string 2 line) 0 -1)) - line (substring line (match-beginning 5))) + line (substring line (match-beginning 5)) + item-tag) + (if (string-match "\\(.*?\\) ::[ \t]*" line) + (setq item-type "d" + item-tag (match-string 1 line) + line (substring line (match-end 0)))) (unless (string-match "[^ \t]" line) ;; empty line. Pretend indentation is large. (setq ind (if org-empty-line-terminates-plain-lists @@ -2772,9 +2778,9 @@ lang=\"%s\" xml:lang=\"%s\"> (not starter)) (< ind (car local-list-indent)))) (setq didclose t) - (org-close-li) - (insert (if (car local-list-num) "\n" "")) - (pop local-list-num) (pop local-list-indent) + (org-close-li (car local-list-type)) + (insert (format "\n" (car local-list-type))) + (pop local-list-type) (pop local-list-indent) (setq in-local-list local-list-indent)) (cond ((and starter @@ -2782,14 +2788,21 @@ lang=\"%s\" xml:lang=\"%s\"> (> ind (car local-list-indent)))) ;; Start new (level of) list (org-close-par-maybe) - (insert (if start-is-num "
    \n
  1. \n" "
      \n
    • \n")) - (push start-is-num local-list-num) + (insert (cond + ((equal item-type "u") "
        \n
      • \n") + ((equal item-type "o") "
          \n
        1. \n") + ((equal item-type "d") + (format "
          \n
          %s
          \n" item-tag)))) + (push item-type local-list-type) (push ind local-list-indent) (setq in-local-list t)) (starter ;; continue current list - (org-close-li) - (insert "
        2. \n")) + (org-close-li (car local-list-type)) + (insert (cond + ((equal (car local-list-type) "d") + (format "
          %s
          \n" (or item-tag "???"))) + (t "
        3. \n")))) (didclose ;; we did close a list, normal text follows: need

          (org-open-par))) @@ -2827,10 +2840,10 @@ lang=\"%s\" xml:lang=\"%s\"> (when inquote (insert "\n")) (when in-local-list ;; Close any local lists before inserting a new header line - (while local-list-num - (org-close-li) - (insert (if (car local-list-num) "

        \n" "
      \n")) - (pop local-list-num)) + (while local-list-type + (org-close-li (car local-list-type)) + (insert (format "\n" (car local-list-type))) + (pop local-list-type)) (setq local-list-indent nil in-local-list nil)) (org-html-level-start 1 nil umax @@ -3376,10 +3389,10 @@ stacked delimiters is N. Escaping delimiters is not possible." (when org-par-open (insert "

      ") (setq org-par-open nil))) -(defun org-close-li () +(defun org-close-li (&optional type) "Close
    • if necessary." (org-close-par-maybe) - (insert "
    • \n")) + (insert (if (equal type "d") "\n" "\n"))) (defvar body-only) ; dynamically scoped into this. (defun org-html-level-start (level title umax with-toc head-count) diff --git a/lisp/org.el b/lisp/org.el index a34d7e91c..b8ca18909 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -3659,6 +3659,9 @@ between words." (if org-provide-checkbox-statistics '("\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]" (0 (org-get-checkbox-statistics-face) t))) + ;; Description list items + '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(.*?\\) ::" + 2 'bold prepend) (list (concat "^\\*+ \\(.*:" org-archive-tag ":.*\\)") '(1 'org-archived prepend)) ;; Specials