[O] [ox, patch] Quickly INCLUDE from own file

2014-10-07 Thread Rasmus
Hi,

The attached patch allows for quick (== without filename) inclusion
from the same file.  Why?  'Cause I'm lazy and it would be useful to
push boring, location-specific stuff to the end of the file.

Here's an example:

* poor man's ~:ignoreheading:~
#+INCLUDE: ::*foo :only-contents t

#+INCLUDE: ::tbl

* foo   :noexport:
1

* bar   :noexport:
#+NAME: tbl
| 1 |

You need the preceding :: to be able tell the difference between the
file tbl and the table tbl.  Granted, this doesn't look like an
org link.  If that's an issue, for each link sans location it could be
tested if it exists in the current buffer.

Do you think something like this would be desirable?

—Rasmus

-- 
Hvor meget poesi tror De kommer ud af et glas isvand?
From f8fcf5b6816fa7e3e4cc9cc64b12c5cced4a546c Mon Sep 17 00:00:00 2001
From: rasmus ras...@pank.eu
Date: Tue, 7 Oct 2014 11:20:10 +0200
Subject: [PATCH] ox: Quickly INCLUDE contents from same file.

* ox.el (org-export-expand-include-keyword): Try buffer file
name if filename is nil.
---
 lisp/ox.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lisp/ox.el b/lisp/ox.el
index ec52203..ded3b2f 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -3349,8 +3349,9 @@ paths.
   (setq matched
 	(replace-match  nil nil matched 1)))
 (expand-file-name
- (org-remove-double-quotes
-  matched)
+ (or (org-string-nw-p
+	  (org-remove-double-quotes matched))
+	 (buffer-file-name))
  dir)))
 			  (setq value (replace-match  nil nil value)
 		 (only-contents
-- 
2.1.2



Re: [O] [ox, patch] Quickly INCLUDE from own file

2014-10-07 Thread Nicolas Goaziou
Hello,

Rasmus ras...@gmx.us writes:

 The attached patch allows for quick (== without filename) inclusion
 from the same file.  Why?  'Cause I'm lazy and it would be useful to
 push boring, location-specific stuff to the end of the file.

 Here's an example:

 * poor man's ~:ignoreheading:~
 #+INCLUDE: ::*foo :only-contents t

 #+INCLUDE: ::tbl

 * foo   :noexport:
 1

 * bar   :noexport:
 #+NAME: tbl
 | 1 |

 You need the preceding :: to be able tell the difference between the
 file tbl and the table tbl.  Granted, this doesn't look like an
 org link.  If that's an issue, for each link sans location it could be
 tested if it exists in the current buffer.

 Do you think something like this would be desirable?

Including in the same file is dangerous: you can easily duplicate
custom-id, name keywords, which are supposed to be unique. Even though
we don't prevent it[fn:1], I don't think we should make it easier to achieve.

Introducing a new special syntax in this case doesn't sound like a good
move either.


Regards,

[fn:1] Actually, we should have a guard against circular inclusion, but
at the moment, it is ineffective in this case.

-- 
Nicolas Goaziou