0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-22 18:10:43 +00:00

Merge branch 'master' into max-sticky-agenda

This commit is contained in:
Carsten Dominik 2012-03-06 07:30:16 +01:00
commit 79472e466f
9 changed files with 153 additions and 117 deletions

View file

@ -56,6 +56,7 @@
(declare-function org-element-parse-secondary-string
"org-element" (string restriction &optional buffer))
(defvar org-element-string-restrictions)
(defvar org-element-object-restrictions)
(declare-function org-export-clean-table "org-export" (table specialp))
(declare-function org-export-data "org-export" (data backend info))
@ -1566,10 +1567,13 @@ This function shouldn't be used for floats. See
(when (plist-get info :style-include-scripts)
org-e-html-scripts)))
(defun org-e-html-mathjax-config (template options in-buffer)
(defun org-e-html-mathjax-config (info)
"Insert the user setup into the matchjax template."
(when (member (plist-get info :LaTeX-fragments) '(mathjax t))
(let (name val (yes " ") (no "// ") x)
(let ((template org-e-html-mathjax-template)
(options org-e-html-mathjax-options)
(in-buffer (or (plist-get info :mathjax) ""))
name val (yes " ") (no "// ") x)
(mapc
(lambda (e)
(setq name (car e) val (nth 1 e))
@ -1725,9 +1729,7 @@ original parsed data. INFO is a plist holding export options."
<head>"
(org-e-html-meta-info info) ; meta
(org-e-html-style info) ; style
(org-e-html-mathjax-config ; mathjax
org-e-html-mathjax-template org-e-html-mathjax-options
(or (plist-get info :mathjax) ""))
(org-e-html-mathjax-config info) ; mathjax
"
</head>"
@ -2061,7 +2063,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(concat
;; Insert separator between two footnotes in a row.
(let ((prev (org-export-get-previous-element footnote-reference info)))
(when (and (listp prev) (eq (car prev) 'footnote-reference))
(when (eq (org-element-type prev) 'footnote-reference)
org-e-html-footnote-separator))
(cond
((not (org-export-footnote-first-reference-p footnote-reference info))
@ -2092,7 +2094,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
"Transcode an HEADLINE element from Org to HTML.
CONTENTS holds the contents of the headline. INFO is a plist
holding contextual information."
(let* ((numberedp (plist-get info :section-numbers))
(let* ((numberedp (org-export-numbered-headline-p headline info))
(level (org-export-get-relative-level headline info))
(todo (and (plist-get info :with-todo-keywords)
(let ((todo (org-element-property
@ -2126,7 +2128,7 @@ holding contextual information."
CONTENTS holds the contents of the headline. INFO is a plist
holding contextual information."
(let* ((class (plist-get info :latex-class))
(numberedp (plist-get info :section-numbers))
(numberedp (org-export-numbered-headline-p headline info))
;; Get level relative to current parsed data.
(level (org-export-get-relative-level headline info))
;; (class-sectionning (assoc class org-e-html-classes))
@ -2396,8 +2398,8 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(cond
((string= key "latex") value)
((string= key "index") (format "\\index{%s}" value))
((string= key "target")
(format "\\label{%s}" (org-export-solidify-link-text value)))
;; Invisible targets.
((string= key "target") nil) ; FIXME
((string= key "toc")
(let ((value (downcase value)))
(cond
@ -2545,50 +2547,58 @@ INFO is a plist holding contextual information. See
(cond
;; Image file.
(imagep (org-e-html-link--inline-image link info))
;; Target or radioed target: replace link with the normalized
;; custom-id/target name.
((member type '("target" "radio"))
;; Radioed target: Target's name is obtained from original raw
;; link. Path is parsed and transcoded in order to have a proper
;; display of the contents.
((string= type "radio")
(format "<a href=\"#%s\">%s</a>"
(org-export-solidify-link-text path)
(or desc (org-export-secondary-string path 'e-html info))))
(org-export-secondary-string
(org-element-parse-secondary-string
path (cdr (assq 'radio-target org-element-object-restrictions)))
'e-html info)))
;; Links pointing to an headline: Find destination and build
;; appropriate referencing commanding.
;; appropriate referencing command.
((member type '("custom-id" "fuzzy" "id"))
(let ((destination (if (string= type "fuzzy")
(org-export-resolve-fuzzy-link link info)
(org-export-resolve-id-link link info))))
;; Fuzzy link points to a target. Do as above.
(case (org-element-type destination)
(target
(format "<a href=\"#%s\">%s</a>"
(org-export-solidify-link-text (org-element-property
:raw-value destination))
;; Fuzzy link points nowhere.
('nil
(format "<i>%s</i>"
(or desc (org-export-secondary-string
(org-element-property :raw-link link)
'e-html info))))
;; Fuzzy link points to an headline. If headlines are
;; numbered and the link has no description, display
;; headline's number. Otherwise, display description or
;; headline's title.
;; Fuzzy link points to an invisible target.
(keyword nil)
;; LINK points to an headline. If headlines are numbered
;; and the link has no description, display headline's
;; number. Otherwise, display description or headline's
;; title.
(headline
(let ((label
(format "sec-%s"
(mapconcat
'number-to-string
(org-export-get-headline-number destination info)
"-"))))
(if (and (plist-get info :section-numbers) (not desc))
(format "\\ref{%s}" label)
(format "<a href=\"#%s\">%s</a>"
label (or desc
(org-export-secondary-string
(org-element-property :title destination)
'e-html info))))))
;; Fuzzy link points nowhere.
(let* ((headline-no (org-export-get-headline-number destination info))
(label (format "sec-%s" (mapconcat 'number-to-string
headline-no "-")))
(section-no (mapconcat 'number-to-string headline-no ".")))
(setq desc
(cond
(desc desc)
((plist-get info :section-numbers) section-no)
(t (org-export-secondary-string
(org-element-property :title destination)
'e-html info))))
(format "<a href=\"#%s\">%s</a>" label desc)))
;; Fuzzy link points to a target. Do as above.
(otherwise
(format "<i>%s</i>" (or desc (org-export-secondary-string
(org-element-property :raw-link link)
'e-html info)))))))
(let ((path (org-export-solidify-link-text path)))
(unless desc
(setq desc (let ((number (org-export-get-ordinal
destination info)))
(when number
(if (atom number) (number-to-string number)
(mapconcat 'number-to-string number "."))))))
(format "<a href=\"#%s\">%s</a>" path (or desc "FIXME")))))))
;; Coderef: replace link with the reference name or the
;; equivalent line number.
((string= type "coderef")
@ -2635,7 +2645,7 @@ the plist used as a communication channel."
(class (cdr (assoc style '((footnote . "footnote")
(verse . nil)))))
(extra (if class (format " class=\"%s\"" class) ""))
(parent (car (org-export-get-genealogy paragraph info))))
(parent (org-export-get-parent paragraph info)))
(cond
((and (equal (car parent) 'item)
(= (org-element-property :begin paragraph)
@ -3060,13 +3070,13 @@ CONTENTS is nil. INFO is a plist holding contextual information."
;;;; Target
(defun org-e-html-target (target text info)
(defun org-e-html-target (target contents info)
"Transcode a TARGET object from Org to HTML.
TEXT is the text of the target. INFO is a plist holding
contextual information."
CONTENTS is nil. INFO is a plist holding contextual
information."
(let ((id (org-export-solidify-link-text
(org-element-property :raw-value target))))
(format "<a id=\"%s\" name=\"%s\">%s</a>" id id text)))
(org-element-property :value target))))
(format "<a id=\"%s\" name=\"%s\"/>" id id)))
;;;; Time-stamp

View file

@ -1838,6 +1838,7 @@ formula file."
(declare-function org-element-parse-secondary-string
"org-element" (string restriction &optional buffer))
(defvar org-element-string-restrictions)
(defvar org-element-object-restrictions)
(declare-function org-export-clean-table "org-export" (table specialp))
(declare-function org-export-data "org-export" (data backend info))
@ -3488,7 +3489,8 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(defun org-e-odt-footnote-def (raw info) ; FIXME
(if (equal (org-element-type raw) 'org-data)
(org-trim (org-export-data raw 'e-odt info))
(org-trim (org-export-data raw 'e-odt info)) ; fix paragraph
; style
(org-odt-format-stylized-paragraph
'footnote (org-trim (org-export-secondary-string raw 'e-odt info)))))
@ -3501,7 +3503,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(concat
;; Insert separator between two footnotes in a row.
(let ((prev (org-export-get-previous-element footnote-reference info)))
(when (and (listp prev) (eq (car prev) 'footnote-reference))
(when (eq (org-element-type prev) 'footnote-reference)
org-e-odt-footnote-separator))
(cond
((not (org-export-footnote-first-reference-p footnote-reference info))
@ -3536,7 +3538,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
"Transcode an HEADLINE element from Org to HTML.
CONTENTS holds the contents of the headline. INFO is a plist
holding contextual information."
(let* ((numberedp (plist-get info :section-numbers))
(let* ((numberedp (org-export-numbered-headline-p headline info))
(level (org-export-get-relative-level headline info))
(todo (and (plist-get info :with-todo-keywords)
(let ((todo (org-element-property
@ -3570,7 +3572,7 @@ holding contextual information."
CONTENTS holds the contents of the headline. INFO is a plist
holding contextual information."
(let* ((class (plist-get info :latex-class))
(numberedp (plist-get info :section-numbers))
(numberedp (org-export-numbered-headline-p headline info))
;; Get level relative to current parsed data.
(level (org-export-get-relative-level headline info))
;; (class-sectionning (assoc class org-e-odt-classes))
@ -3789,8 +3791,9 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(cond
((string= key "latex") value)
((string= key "index") (format "\\index{%s}" value))
((string= key "target")
(format "\\label{%s}" (org-export-solidify-link-text value)))
((string= key "target") nil ; FIXME
;; (format "\\label{%s}" (org-export-solidify-link-text value))
)
((string= key "toc")
(let ((value (downcase value)))
(cond
@ -3942,53 +3945,58 @@ INFO is a plist holding contextual information. See
(cond
;; Image file.
(imagep (org-e-odt-link--inline-image link info))
;; Target or radioed target: replace link with the normalized
;; custom-id/target name.
((member type '("target" "radio"))
;; Radioed target: Target's name is obtained from original raw
;; link. Path is parsed and transcoded in order to have a proper
;; display of the contents.
((string= type "radio")
(org-e-odt-format-internal-link
(or desc (org-export-secondary-string path 'e-odt info))
(org-export-secondary-string
(org-element-parse-secondary-string
path (cdr (assq 'radio-target org-element-object-restrictions)))
'e-odt info)
(org-export-solidify-link-text path)))
;; Links pointing to an headline: Find destination and build
;; appropriate referencing commanding.
;; appropriate referencing command.
((member type '("custom-id" "fuzzy" "id"))
(let ((destination (if (string= type "fuzzy")
(org-export-resolve-fuzzy-link link info)
(org-export-resolve-id-link link info))))
;; Fuzzy link points to a target. Do as above.
(case (org-element-type destination)
(target
(org-e-odt-format-internal-link
(or desc
(org-export-secondary-string
(org-element-property :raw-link link)
'e-odt info))
(org-export-solidify-link-text
(org-element-property :raw-value destination))))
;; Fuzzy link points to an headline. If headlines are
;; numbered and the link has no description, display
;; headline's number. Otherwise, display description or
;; headline's title.
(headline
(let ((label
(format "sec-%s"
(mapconcat
'number-to-string
(org-export-get-headline-number destination info)
"-"))))
(if (and (plist-get info :section-numbers) (not desc))
(format "\\ref{%s}" label)
(org-e-odt-format-internal-link
(or desc
(org-export-secondary-string
(org-element-property :title destination)
'e-odt info)) label))))
;; Fuzzy link points nowhere.
(otherwise
('nil
(org-e-odt-format-fontify
(or desc
(org-export-secondary-string
(org-element-property :raw-link link)
'e-odt info)) 'emphasis)))))
(or desc (org-export-secondary-string
(org-element-property :raw-link link)
'e-odt info)) 'emphasis))
;; Fuzzy link points to an invisible target.
(keyword nil)
;; LINK points to an headline. If headlines are numbered
;; and the link has no description, display headline's
;; number. Otherwise, display description or headline's
;; title.
(headline
(let* ((headline-no (org-export-get-headline-number destination info))
(label (format "sec-%s" (mapconcat 'number-to-string
headline-no "-")))
(section-no (mapconcat 'number-to-string headline-no ".")))
(setq desc
(cond
(desc desc)
((plist-get info :section-numbers) section-no)
(t (org-export-secondary-string
(org-element-property :title destination)
'e-odt info))))
(org-e-odt-format-internal-link desc label)))
;; Fuzzy link points to a target. Do as above.
(otherwise
(let ((path (org-export-solidify-link-text path)))
(unless desc
(setq desc (let ((number (org-export-get-ordinal
destination info)))
(when number
(if (atom number) (number-to-string number)
(mapconcat 'number-to-string number "."))))))
(org-e-odt-format-internal-link (or desc "FIXME") path))))))
;; Coderef: replace link with the reference name or the
;; equivalent line number.
((string= type "coderef")
@ -4032,7 +4040,7 @@ the plist used as a communication channel."
(class (cdr (assoc style '((footnote . "footnote")
(verse . nil)))))
(extra (if class (format " class=\"%s\"" class) ""))
(parent (car (org-export-get-genealogy paragraph info)))
(parent (org-export-get-parent paragraph info))
(parent-type (org-element-type parent))
(style (case parent-type
(quote-block 'quote)
@ -4384,13 +4392,12 @@ CONTENTS is nil. INFO is a plist holding contextual information."
;;;; Target
(defun org-e-odt-target (target text info)
(defun org-e-odt-target (target contents info)
"Transcode a TARGET object from Org to HTML.
TEXT is the text of the target. INFO is a plist holding
contextual information."
CONTENTS is nil. INFO is a plist holding contextual
information."
(org-e-odt-format-anchor
text (org-export-solidify-link-text
(org-element-property :raw-value target))))
"" (org-export-solidify-link-text (org-element-property :value target))))
;;;; Time-stamp

View file

@ -14098,6 +14098,14 @@ evaluation. If @code{:noweb no}, the default, then the reference is not
expanded before evaluation. See the @ref{noweb-ref} header argument for
a more flexible way to resolve noweb references.
It is possible to include the @emph{results} of a code block rather than the
body. This is done by appending parenthesis to the code block name which may
optionally contain arguments to the code block as shown below.
@example
<<code-block-name(optional arguments)>>
@end example
Note: the default value, @code{:noweb no}, was chosen to ensure that
correct code is not broken in a language, such as Ruby, where
@code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not

View file

@ -75,9 +75,8 @@ results
NOTE: by default string variable names are interpreted as
references to source-code blocks, to force interpretation of a
cell's value as a string, prefix the identifier with two \"$\"s
rather than a single \"$\" (i.e. \"$$2\" instead of \"$2\" in the
example above.
cell's value as a string, prefix the identifier a \"$\" (e.g.,
\"$$2\" instead of \"$2\" or \"$@2$2\" instead of \"@2$2\").
NOTE: it is also possible to pass header arguments to the code
block. In this case a table cell should hold the string value of
@ -97,7 +96,7 @@ as shown in the example below.
(delq nil (mapcar
(lambda (el)
(if (eq '$ el)
(setq quote t)
(prog1 nil (setq quote t))
(prog1 (if quote
(format "\"%s\"" el)
(org-babel-clean-text-properties el))

View file

@ -192,9 +192,11 @@ exported source code blocks by language."
(when only-this-block
(unless (org-babel-where-is-src-block-head)
(error "Point is not currently inside of a code block"))
(unless target-file
(setq target-file
(read-from-minibuffer "Tangle to: " (buffer-file-name))))
(save-match-data
(unless (or (cdr (assoc :tangle (nth 2 (org-babel-get-src-block-info))))
target-file)
(setq target-file
(read-from-minibuffer "Tangle to: " (buffer-file-name)))))
(narrow-to-region (match-beginning 0) (match-end 0)))
(save-excursion
(let ((block-counter 0)

View file

@ -2225,6 +2225,8 @@ block but are passed literally to the \"example-block\"."
(setq index (point))
(nb-add
(with-current-buffer parent-buffer
(save-restriction
(widen)
(mapconcat ;; interpose PREFIX between every line
#'identity
(split-string
@ -2284,7 +2286,7 @@ block but are passed literally to the \"example-block\"."
"could not be resolved (see "
"`org-babel-noweb-error-langs')"))
"")))
"[\n\r]") (concat "\n" prefix)))))
"[\n\r]") (concat "\n" prefix))))))
(nb-add (buffer-substring index (point-max)))))
new-body))

View file

@ -6098,8 +6098,18 @@ could bind the variable in the options section of a custom command.")
(let ((pl (text-property-any 0 (length x) 'org-heading t x)))
(setq re (get-text-property 0 'org-todo-regexp x))
(when (and re
;; Test `pl' because if there's no heading content,
;; there's no point matching to highlight. Note
;; that if we didn't test `pl' first, and there
;; happened to be no keyword from `org-todo-regexp'
;; on this heading line, then the `equal' comparison
;; afterwards would spuriously succeed in the case
;; where `pl' is nil -- causing an args-out-of-range
;; error when we try to add text properties to text
;; that isn't there.
pl
(equal (string-match (concat "\\(\\.*\\)" re "\\( +\\)")
x (or pl 0)) pl))
x pl) pl))
(add-text-properties
(or (match-end 1) (match-end 0)) (match-end 0)
(list 'face (org-get-todo-face (match-string 2 x)))

View file

@ -112,11 +112,9 @@
(&optional dont-check-disk already-in-db-buffer))
(declare-function bbdb-split "ext:bbdb" (string separators))
(declare-function bbdb-string-trim "ext:bbdb" (string))
(declare-function bbdb-record-get-field "ext:bbdb"
(fn file &optional arglist fileonly))
;; These two functions below are part of BBDB3:
(declare-function bbdb-search-name "ext:bbdb" (regexp &optional layout))
(declare-function bbdb-search-organization "ext:bbdb" (regexp &optional layout))
(declare-function bbdb-record-get-field "ext:bbdb" (record field))
(declare-function bbdb-search-name "ext:bbdb-com" (regexp &optional layout))
(declare-function bbdb-search-organization "ext:bbdb-com" (regexp &optional layout))
(declare-function calendar-leap-year-p "calendar" (year))
(declare-function diary-ordinal-suffix "diary-lib" (n))
@ -228,10 +226,10 @@ italicized, in all other cases it is left unchanged."
(let ((inhibit-redisplay (not debug-on-error))
(bbdb-electric-p nil))
(if (fboundp 'bbdb-name)
(org-bbdb-open-old)
(org-bbdb-open-new))))
(org-bbdb-open-old name)
(org-bbdb-open-new name))))
(defun org-bbdb-open-old ()
(defun org-bbdb-open-old (name)
(catch 'exit
;; Exact match on name
(bbdb-name (concat "\\`" name "\\'") nil)
@ -251,7 +249,7 @@ italicized, in all other cases it is left unchanged."
(delete-window (get-buffer-window "*BBDB*"))
(error "No matching BBDB record"))))
(defun org-bbdb-open-new ()
(defun org-bbdb-open-new (name)
(catch 'exit
;; Exact match on name
(bbdb-search-name (concat "\\`" name "\\'") nil)

View file

@ -7948,7 +7948,7 @@ the following will happen:
repeater intact.
- the start days in the repeater in the original entry will be shifted
to past the last clone.
I this way you can spell out a number of instances of a repeating task,
In this way you can spell out a number of instances of a repeating task,
and still retain the repeater to cover future instances of the task."
(interactive "nNumber of clones to produce: \nsDate shift per clone (e.g. +1w, empty to copy unchanged): ")
(let (beg end template task idprop
@ -7975,7 +7975,7 @@ and still retain the repeater to cover future instances of the task."
(setq end (point))
(setq template (buffer-substring beg end))
(when (and doshift
(string-match "<[^<>\n]+ \\+[0-9]+[dwmy][^<>\n]*>" template))
(string-match "<[^<>\n]+ [.+]?\\+[0-9]+[dwmy][^<>\n]*>" template))
(delete-region beg end)
(setq end beg)
(setq nmin 0 nmax (1+ nmax) n-no-remove nmax))
@ -8006,7 +8006,7 @@ and still retain the repeater to cover future instances of the task."
(while (re-search-forward org-ts-regexp nil t)
(save-excursion
(goto-char (match-beginning 0))
(if (looking-at "<[^<>\n]+\\( +\\+[0-9]+[dwmy]\\)")
(if (looking-at "<[^<>\n]+\\( +[.+]?\\+[0-9]+[dwmy]\\)")
(delete-region (match-beginning 1) (match-end 1)))))))
(setq task (buffer-string)))
(insert task))