Patch 529 (http://patchwork.newartisans.com/patch/529/) is now "Accepted".
Maintainer comment: Added some cosmetic changes and a small rewrite of the doc This relates to the following submission: http://mid.gmane.org/%3CAANLkTi%3DEBSvP9ukR5LRJQxBk%2BDaBHK4vyM0pvdr%3D9-JR%40mail.gmail.com%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [Orgmode] How do I include text between a range of line numbers with > #INCLUDE > Date: Sun, 09 Jan 2011 00:28:01 -0000 > From: Puneeth Chaganti <puncha...@gmail.com> > X-Patchwork-Id: 529 > Message-Id: <AANLkTi=EBSvP9ukR5LRJQxBk+DaBHK4vyM0pvdr=9...@mail.gmail.com> > To: Carsten Dominik <carsten.domi...@gmail.com> > Cc: Venkatesh Choppella <venkatesh.choppe...@iiit.ac.in>, > emacs-orgmode@gnu.org > > Hi Carsten, > > On Sat, Jan 8, 2011 at 11:35 PM, Carsten Dominik > <carsten.domi...@gmail.com> wrote: > > Hi Puneeth, > > > > can cou please augment the patch with a propert ChangeLog-like entry, and > > with documentation for the manual, and then resubmit? > > Here is a patch with a ChangeLog entry and documentation for the > manual. Please tell me if it looks OK. Also, I hope using > git-format-patch is the right way to send this page. If not, what is > the right way? > > Thanks, > Puneeth > > > >From 4a9be5b1a7a19c5d092ed14a86d29ad83122e9a8 Mon Sep 17 00:00:00 2001 > From: Puneeth Chaganti <puncha...@gmail.com> > Date: Sun, 9 Jan 2011 00:48:51 +0530 > Subject: [PATCH] Include only specified range of line numbers of a file > > * doc/org.texi (Include files): Document :lines. > * lisp/org-exp.el (org-export-handle-include-files): Support :lines > property. > (org-get-file-contents): New argument lines to include specify a range > of lines to include. > > On Fri, Jan 7, 2011 at 1:29 PM, Puneeth <puncha...@gmail.com> wrote: > > On Fri, Jan 7, 2011 at 10:03 AM, Venkatesh Choppella > > <venkatesh.choppe...@iiit.ac.in> wrote: > >> I would like to include a part of a file (between a given range of > >> line numbers) instead of the whole file. Is there a way to do that > >> in org-mode? > > > > It isn't possible to include files using line numbers, as of now. > > Here's a quick patch that would add this feature. I have tested it > > with small files and works fine. Can somebody tell me if it looks > > good? > > > > :lines "5-10" will include the lines from 5 to 10, 10 excluded. > > :lines "-10" will include the lines from 1 to 10, 10 excluded. > > :lines "5-" will include the lines from 1 to the end of the file. > > > > HTH, > > Puneeth > --- > doc/org.texi | 11 +++++++++++ > lisp/org-exp.el | 24 ++++++++++++++++++++---- > 2 files changed, 31 insertions(+), 4 deletions(-) > > diff --git a/doc/org.texi b/doc/org.texi > index e83909d..62f90e9 100644 > --- a/doc/org.texi > +++ b/doc/org.texi > @@ -8891,6 +8891,17 @@ use > #+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " " > @end example > > +You can also include a portion of a file, by specifying a range of line > +numbers using the @code{:lines} parameter. The line with the line number > +equal to the end of the range, will not be included. The start or/and the > +end limits of the range, may be omitted to use the obvious defaults. > + > +@example > +#+INCLUDE: "~/.emacs" :lines "5-10" @r{Include lines 5 to 10, 10 excluded} > +#+INCLUDE: "~/.emacs" :lines "-10" @r{Include lines 1 to 10, 10 excluded} > +#+INCLUDE: "~/.emacs" :lines "10-" @r{Include lines from 10 to EOF} > +@end example > + > @table @kbd > @kindex C-c ' > @item C-c ' > diff --git a/lisp/org-exp.el b/lisp/org-exp.el > index 3d466fa..ea81386 100644 > --- a/lisp/org-exp.el > +++ b/lisp/org-exp.el > @@ -2130,13 +2130,14 @@ 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 prefix prefix1 switches all minlevel) > + params file markup lang start end prefix prefix1 switches all minlevel > lines) > (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) > minlevel (org-get-and-remove-property 'params :minlevel) > + lines (org-get-and-remove-property 'params :lines) > file (org-symname-or-string (pop params)) > markup (org-symname-or-string (pop params)) > lang (and (member markup '("src" "SRC")) > @@ -2159,7 +2160,7 @@ TYPE must be a string, any of: > end (format "#+end_%s" markup)))) > (insert (or start "")) > (insert (org-get-file-contents (expand-file-name file) > - prefix prefix1 markup minlevel)) > + prefix prefix1 markup minlevel lines)) > (or (bolp) (newline)) > (insert (or end "")))) > all)) > @@ -2176,15 +2177,30 @@ TYPE must be a string, any of: > (when intersection > (error "Recursive #+INCLUDE: %S" intersection)))))) > > -(defun org-get-file-contents (file &optional prefix prefix1 markup minlevel) > +(defun org-get-file-contents (file &optional prefix prefix1 markup minlevel > lines) > "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. > If MARKUP, don't protect org-like lines, the exporter will > -take care of the block they are in." > +take care of the block they are in. If LINES is a string, > +include only the lines specified." > (if (stringp markup) (setq markup (downcase markup))) > (with-temp-buffer > (insert-file-contents file) > + (when lines > + (let (beg end) > + (setq lines (split-string lines "-") > + beg (if (string= "" (car lines)) > + (point-min) > + (goto-char (point-min)) > + (forward-line (1- (string-to-number (car lines)))) > + (point)) > + end (if (string= "" (cadr lines)) > + (point-max) > + (goto-char (point-min)) > + (forward-line (1- (string-to-number (cadr lines)))) > + (point))) > + (narrow-to-region beg end))) > (when (or prefix prefix1) > (goto-char (point-min)) > (while (not (eobp)) > -- > 1.7.1 > _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode