Allow prefixes in include file statements.
This commit is contained in:
parent
3d80ceb6d9
commit
3d59326fcf
|
@ -1,3 +1,8 @@
|
|||
2008-07-02 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* lisp/org-mtags.el (org-mtags-replace): Allow prefix and prefix1
|
||||
as options in the include directive.
|
||||
|
||||
2008-06-18 Christian Egli <christian.egli@alumni.ethz.ch>
|
||||
|
||||
* scripts/org2hpda (DIARY): Make the location of the diary file
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
;; Needs to be on a line by itself, similarly the </src> tag.
|
||||
;; Will be translated into Org's BEGIN_SRC construct.
|
||||
;;
|
||||
;; <include file="FILE" markup="MARKUP" lang="LANG">
|
||||
;; <include file="FILE" markup="MARKUP" lang="LANG" prefix="str" prefix1="str">
|
||||
;; Needs to be on a line by itself.
|
||||
;; Will be translated into Org's #+INCLUDE construct.
|
||||
;;
|
||||
|
@ -128,7 +128,7 @@ The is done in the entire buffer."
|
|||
(let ((re (concat "^[ \t]*\\(</?\\("
|
||||
(mapconcat 'identity org-mtags-supported-tags "\\|")
|
||||
"\\)\\>\\)"))
|
||||
info tag rpl style markup lang file)
|
||||
info tag rpl style markup lang file prefix prefix1)
|
||||
;; First, do the <br> tag
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "<br>[ \t]*$" nil t)
|
||||
|
@ -177,12 +177,17 @@ The is done in the entire buffer."
|
|||
((equal tag "include")
|
||||
(setq file (plist-get info :file)
|
||||
markup (downcase (plist-get info :markup))
|
||||
lang (plist-get info :lang))
|
||||
lang (plist-get info :lang)
|
||||
prefix (plist-get info :prefix)
|
||||
prefix1 (plist-get info :prefix1))
|
||||
(setq rpl "#+INCLUDE")
|
||||
(when markup
|
||||
(setq rpl (concat rpl " " markup))
|
||||
(when (and (equal markup "src") lang)
|
||||
(setq rpl (concat rpl " " lang))))))
|
||||
(setq rpl (concat rpl " " lang))))
|
||||
(setq rpl (concat rpl
|
||||
" :prefix " prin1-to-string prefix
|
||||
" :prefix1 " prin1-to-string prefix1))))
|
||||
(when rpl
|
||||
(goto-char (plist-get info :match-beginning))
|
||||
(delete-region (point-at-bol) (plist-get info :match-end))
|
||||
|
|
|
@ -6941,7 +6941,14 @@ The optional second and third parameter are the markup (@samp{quote},
|
|||
@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
|
||||
language for formatting the contents. The markup is optional, if it is not
|
||||
given, the text will be assumed to be in Org mode format and will be
|
||||
processed normally.
|
||||
processed normally. The include line will also allow additional keyword
|
||||
parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
|
||||
first line and for each following line. For example, to include a file as an
|
||||
item, use
|
||||
|
||||
@example
|
||||
#+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
|
||||
@end example
|
||||
|
||||
@table @kbd
|
||||
@kindex C-c '
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2008-07-02 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org-exp.el (org-get-file-contents)
|
||||
(org-get-and-remove-property): New functions.
|
||||
(org-export-handle-include-files): Handle the new prefix options.
|
||||
|
||||
2008-07-01 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.el (org-time=, org-time<, org-time<=, org-time>)
|
||||
|
|
|
@ -1895,10 +1895,12 @@ TYPE must be a string, any of:
|
|||
(defun org-export-handle-include-files ()
|
||||
"Include the contents of include files, with proper formatting."
|
||||
(let ((case-fold-search t)
|
||||
params file markup lang start end)
|
||||
params file markup lang start end prefix prefix1)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^#\\+INCLUDE:?[ \t]+\\(.*\\)" nil t)
|
||||
(setq params (read (concat "(" (match-string 1) ")"))
|
||||
prefix (org-get-and-remove-property 'params :prefix)
|
||||
prefix1 (org-get-and-remove-property 'params :prefix1)
|
||||
file (org-symname-or-string (pop params))
|
||||
markup (org-symname-or-string (pop params))
|
||||
lang (org-symname-or-string (pop params)))
|
||||
|
@ -1914,17 +1916,45 @@ TYPE must be a string, any of:
|
|||
(setq start (format "#+begin_%s\n" markup)
|
||||
end (format "#+end_%s" markup))))
|
||||
(insert (or start ""))
|
||||
(forward-char (nth 1 (insert-file-contents (expand-file-name file))))
|
||||
(insert (org-get-file-contents (expand-file-name file) prefix prefix1))
|
||||
(or (bolp) (newline))
|
||||
(insert (or end ""))))))
|
||||
|
||||
(defun org-get-file-contents (file &optional prefix prefix1)
|
||||
"Get the contents of FILE and return them as a string.
|
||||
If PREFIX is a string, prepend it to each line. If PREFIX1
|
||||
is a string, prepend it to the first line instead of PREFIX."
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(when (or prefix prefix1)
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(insert (or prefix1 prefix))
|
||||
(setq prefix1 nil)
|
||||
(beginning-of-line 2)))
|
||||
(buffer-string)))
|
||||
|
||||
(defun org-get-and-remove-property (listvar prop)
|
||||
"Check if the value of LISTVAR contains PROP as a property.
|
||||
If yes, return the value of that property (i.e. the element following
|
||||
in the list) and remove property and value from the list in LISTVAR."
|
||||
(let ((list (symbol-value listvar)) m v)
|
||||
(when (setq m (member prop list))
|
||||
(setq v (nth 1 m))
|
||||
(if (equal (car list) prop)
|
||||
(set listvar (cddr list))
|
||||
(setcdr (nthcdr (- (length list) (length m) 1) list)
|
||||
(cddr m))
|
||||
(set listvar list)))
|
||||
v))
|
||||
|
||||
(defun org-symname-or-string (s)
|
||||
(if (symbolp s)
|
||||
(if s (symbol-name s) s)
|
||||
s))
|
||||
|
||||
;;; Fontification of code
|
||||
;; Currently only for th HTML backend, but who knows....
|
||||
;; Currently only for the HTML backend, but who knows....
|
||||
(defun org-export-replace-src-segments ()
|
||||
"Replace source code segments with special code for export."
|
||||
(let ((case-fold-search t)
|
||||
|
@ -4371,4 +4401,3 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
|
|||
;; arch-tag: 65985fe9-095c-49c7-a7b6-cb4ee15c0a95
|
||||
|
||||
;;; org-exp.el ends here
|
||||
|
||||
|
|
Loading…
Reference in New Issue