[O] [PATCH] ob-fortran.el, add matrix as input

2013-06-01 Thread Litvinov Sergey
I would like to propose a tiny patch which adds matrix as an input for
ob-fortran.el. See changes in testing/examples/ob-fortran-test.org for
the examples.

From 4115610e692e5056fa4c0f9d498c12912d374646 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Sat, 1 Jun 2013 19:20:06 +0200
Subject: [PATCH] Add a matrix input to ob-fortran.el

* lisp/ob-fortran.el: add a branch which handles nested lists
* testing/examples/ob-fortran-test.org: add a test for matrix input
* testing/lisp/test-ob-fortran.el: add a test for matrix input
---
 lisp/ob-fortran.el   |  6 ++
 testing/examples/ob-fortran-test.org | 22 ++
 testing/lisp/test-ob-fortran.el  | 12 
 3 files changed, 40 insertions(+)

diff --git a/lisp/ob-fortran.el b/lisp/ob-fortran.el
index 1eab03e..a379273 100644
--- a/lisp/ob-fortran.el
+++ b/lisp/ob-fortran.el
@@ -143,6 +143,12 @@ of the same value.
  ((stringp val)
   (format character(len=%d), parameter ::  %S = '%s'\n
   (length val) var val))
+ ;; val is a matrix
+ ((and (listp val) (listp (car val)))
+  (format real, parameter :: %S(%d,%d) = transpose( reshape( %s , (/ %d, %d /) ) )\n
+	  var (length val) (length (car val)) 
+	  (org-babel-fortran-transform-list val)
+	  (length (car val)) (length val)))
  ((listp val)
   (format real, parameter :: %S(%d) = %s\n
 	  var (length val) (org-babel-fortran-transform-list val)))
diff --git a/testing/examples/ob-fortran-test.org b/testing/examples/ob-fortran-test.org
index 47931bf..530d15e 100644
--- a/testing/examples/ob-fortran-test.org
+++ b/testing/examples/ob-fortran-test.org
@@ -50,6 +50,28 @@ write (*, '(3f5.2)'), s
 write (*, '(2f5.2)'), s
 #+end_src
 
+* matrix
+  :PROPERTIES:
+  :ID:   3f73ab19-d25a-428d-8c26-e8c6aa933976
+  :END:
+Real matrix as input
+#+name: fortran-input-matrix1
+| 0.0 | 42.0 |
+| 0.0 |  0.0 |
+| 0.0 |  0.0 |
+
+#+name: fortran-input-matrix2
+| 0.0 | 0.0 | 0.0 |
+| 0.0 | 0.0 | 42.0 |
+
+#+begin_src fortran :var s=fortran-input-matrix1 :results silent
+write (*, '(i2)'), nint(s(1,2))
+#+end_src
+
+#+begin_src fortran :var s=fortran-input-matrix2 :results silent
+write (*, '(i2)'), nint(s(2,3))
+#+end_src
+
 * failing
   :PROPERTIES:
   :ID:   891ead4a-f87a-473c-9ae0-1cf348bcd04f
diff --git a/testing/lisp/test-ob-fortran.el b/testing/lisp/test-ob-fortran.el
index c355996..7754c64 100644
--- a/testing/lisp/test-ob-fortran.el
+++ b/testing/lisp/test-ob-fortran.el
@@ -68,6 +68,18 @@
 (org-babel-next-src-block 2)
 (should (equal 1.00 2.00 (org-babel-execute-src-block)
 
+(ert-deftest ob-fortran/list-matrix-from-table1 ()
+  Test real matrix from a table
+  (org-test-at-id 3f73ab19-d25a-428d-8c26-e8c6aa933976
+(org-babel-next-src-block 1)
+(should (= 42 (org-babel-execute-src-block)
+
+(ert-deftest ob-fortran/list-matrix-from-table2 ()
+  Test real matrix from a table
+  (org-test-at-id 3f73ab19-d25a-428d-8c26-e8c6aa933976
+(org-babel-next-src-block 2)
+(should (= 42 (org-babel-execute-src-block)
+
 (ert-deftest ob-fortran/no-variables-with-main ()
   Test :var with explicit 'program'
   (org-test-at-id 891ead4a-f87a-473c-9ae0-1cf348bcd04f
-- 
1.8.1.5



Re: [O] [PATCH] narrowing in agenda file

2012-02-01 Thread Litvinov Sergey
Bernt Hansen be...@norang.ca writes:
   - org agenda clock reports are correct
   - You don't have the LOGBOOK drawer aligned with tags when clocking in
 from the agenda (this was with emacs -q (no org-indent-mode)
   - Column view in the agenda shows correct clocking amounts for each
 task
   - Visiting a task with RET or SPC goes to the task when outside the
 narrowed region
   - Remote editing of a task outside the narrowed region changes the
 target task and not something in your narrowed region instead

 I tried this patch today and clock reports in the agenda no longer
 display for me.  Could you take a look at it please?

Hi Bernt, 

thank you for the recommendations and for testing the patch. I am working
on ERT tests for the items you listed above. Also I found that
=org-agenda-add-note= does not work with narrowed agenda file.

Meanwhile I can share another patch to fix the problem with clock
reports (please see the second code block in
testing/examples/org-agenda-test.org )

From 8824692191990c7ec4294b20c0c966bfc3e89de6 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Wed, 1 Feb 2012 16:04:12 +0100
Subject: [PATCH 3/3] Fix clock reports in the agenda, add a test example for agenda

---
 lisp/org.el  |4 +++-
 testing/examples/org-agenda-test.org |   19 +++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 9e23c18..e1abbda 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16498,6 +16498,8 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 	(inhibit-read-only t)
 	(rea (concat : org-archive-tag :))
 	 bmp file re)
+(save-excursion
+  (save-restriction
 	(while (setq file (pop files))
 	  (catch 'nextfile
 	(if (bufferp file)
@@ -16532,7 +16534,7 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 		  (while (re-search-forward re nil t)
 		(add-text-properties
 		 (match-beginning 0) (org-end-of-subtree t) pc)))
-		(set-buffer-modified-p bmp)
+		(set-buffer-modified-p bmp)))
 	(setq org-todo-keywords-for-agenda
 	  (org-uniquify org-todo-keywords-for-agenda))
 	(setq org-todo-keyword-alist-for-agenda
diff --git a/testing/examples/org-agenda-test.org b/testing/examples/org-agenda-test.org
index ecd00e5..b16badb 100644
--- a/testing/examples/org-agenda-test.org
+++ b/testing/examples/org-agenda-test.org
@@ -1,10 +1,21 @@
 #+Title: a collection of examples for org-agenda tests
 * TODO should be visible
+  CLOCK: [2010-01-01 Fri 10:00]--[2010-01-01 Fri 10:05] =  0:05
 ob-agenda-test.org buffer should be narrowed after execution of this block
 #+BEGIN_SRC elisp :results silent
-  (let ((org-agenda-files (list buffer-file-name)))
-(narrow-to-region 1 (- (buffer-size) 23))
-(org-agenda nil t)
-(org-agenda-redo))
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-narrow-to-subtree)
+  (org-agenda nil t)
+  (org-agenda-redo))
+#+END_SRC
+
+#+BEGIN_SRC elisp :results silent
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-agenda nil a)
+  (org-agenda-clockreport-mode 1)
+  (org-agenda-change-time-span 'year 2010)
+  (org-agenda-day-view 1)
+)
 #+END_SRC
 * TODO should be hidden
+  CLOCK: [2010-02-01 Mon 10:00]--[2010-02-01 Mon 10:05] =  0:05
-- 
1.7.3.4



Re: [O] [PATCH] narrowing in agenda file

2012-02-01 Thread Litvinov Sergey
This must be a cumulative patch against master.
From f95e9e89b47b35d5198ecaff7ee20ffb3e63b066 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Thu, 2 Feb 2012 08:15:56 +0100
Subject: [PATCH] Make narrowing of the agenda file survive (org-agenda-redo)

* lisp/org.el (org-prepare-agenda-buffers): move '(save-excursion
  (save-restriction' construction
* testing/examples/org-agenda-test.org: add examples
---
 lisp/org.el  |   65 +
 testing/examples/org-agenda-test.org |   21 +++
 2 files changed, 54 insertions(+), 32 deletions(-)
 create mode 100644 testing/examples/org-agenda-test.org

diff --git a/lisp/org.el b/lisp/org.el
index dc9e653..2f08579 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16575,39 +16575,40 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 		(set-buffer file)
 	  (org-check-agenda-file file)
 	  (set-buffer (org-get-agenda-file-buffer file)))
-	(widen)
-	(setq bmp (buffer-modified-p))
-	(org-refresh-category-properties)
-	(setq org-todo-keywords-for-agenda
-		  (append org-todo-keywords-for-agenda org-todo-keywords-1))
-	(setq org-done-keywords-for-agenda
-		  (append org-done-keywords-for-agenda org-done-keywords))
-	(setq org-todo-keyword-alist-for-agenda
-		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
-	(setq org-drawers-for-agenda
-		  (append org-drawers-for-agenda org-drawers))
-	(setq org-tag-alist-for-agenda
-		  (append org-tag-alist-for-agenda org-tag-alist))
-
 	(save-excursion
-	  (remove-text-properties (point-min) (point-max) pall)
-	  (when org-agenda-skip-archived-trees
-		(goto-char (point-min))
-		(while (re-search-forward rea nil t)
-		  (if (org-at-heading-p t)
-		  (add-text-properties (point-at-bol) (org-end-of-subtree t) pa
-	  (goto-char (point-min))
-	  (setq re (format org-heading-keyword-regexp-format
-			   org-comment-string))
-	  (while (re-search-forward re nil t)
-		(add-text-properties
-		 (match-beginning 0) (org-end-of-subtree t) pc)))
-	(set-buffer-modified-p bmp)
-(setq org-todo-keywords-for-agenda
-  (org-uniquify org-todo-keywords-for-agenda))
-(setq org-todo-keyword-alist-for-agenda
-	  (org-uniquify org-todo-keyword-alist-for-agenda)
-	  org-tag-alist-for-agenda (org-uniquify org-tag-alist-for-agenda
+	  (save-restriction
+		(widen)
+		(setq bmp (buffer-modified-p))
+		(org-refresh-category-properties)
+		(setq org-todo-keywords-for-agenda
+		  (append org-todo-keywords-for-agenda org-todo-keywords-1))
+		(setq org-done-keywords-for-agenda
+		  (append org-done-keywords-for-agenda org-done-keywords))
+		(setq org-todo-keyword-alist-for-agenda
+		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
+		(setq org-drawers-for-agenda
+		  (append org-drawers-for-agenda org-drawers))
+		(setq org-tag-alist-for-agenda
+		  (append org-tag-alist-for-agenda org-tag-alist))
+		(save-excursion
+		  (remove-text-properties (point-min) (point-max) pall)
+		  (when org-agenda-skip-archived-trees
+		(goto-char (point-min))
+		(while (re-search-forward rea nil t)
+		  (if (org-at-heading-p t)
+			  (add-text-properties (point-at-bol) (org-end-of-subtree t) pa
+		  (goto-char (point-min))
+		  (setq re (format org-heading-keyword-regexp-format
+   org-comment-string))
+		  (while (re-search-forward re nil t)
+		(add-text-properties
+		 (match-beginning 0) (org-end-of-subtree t) pc)))
+		(set-buffer-modified-p bmp)))
+	(setq org-todo-keywords-for-agenda
+	  (org-uniquify org-todo-keywords-for-agenda))
+	(setq org-todo-keyword-alist-for-agenda
+	  (org-uniquify org-todo-keyword-alist-for-agenda)
+	  org-tag-alist-for-agenda (org-uniquify org-tag-alist-for-agenda
 
  Embedded LaTeX
 
diff --git a/testing/examples/org-agenda-test.org b/testing/examples/org-agenda-test.org
new file mode 100644
index 000..b16badb
--- /dev/null
+++ b/testing/examples/org-agenda-test.org
@@ -0,0 +1,21 @@
+#+Title: a collection of examples for org-agenda tests
+* TODO should be visible
+  CLOCK: [2010-01-01 Fri 10:00]--[2010-01-01 Fri 10:05] =  0:05
+ob-agenda-test.org buffer should be narrowed after execution of this block
+#+BEGIN_SRC elisp :results silent
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-narrow-to-subtree)
+  (org-agenda nil t)
+  (org-agenda-redo))
+#+END_SRC
+
+#+BEGIN_SRC elisp :results silent
+(let ((org-agenda-files (list buffer-file-name)))
+  (org-agenda nil a)
+  (org-agenda-clockreport-mode 1)
+  (org-agenda-change-time-span 'year 2010)
+  (org-agenda-day-view 1)
+)
+#+END_SRC
+* TODO should be hidden
+  CLOCK: [2010-02-01 Mon 10:00]--[2010-02-01 Mon 10:05] =  0:05
-- 
1.7.3.4



[O] [PATCH] narrowing in agenda file

2012-01-23 Thread Litvinov Sergey
Narrowing in the agenda file does not survive agenda redo. Please
see an example in the first patch. I think the second patch fixes this
problem.
From 60ef46625131391c6a49fccd26861f933a984515 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Mon, 23 Jan 2012 14:22:53 +0100
Subject: [PATCH 1/2] Add a test narrowed agenda file

---
 testing/examples/org-agenda-test.org |   10 ++
 1 files changed, 10 insertions(+), 0 deletions(-)
 create mode 100644 testing/examples/org-agenda-test.org

diff --git a/testing/examples/org-agenda-test.org b/testing/examples/org-agenda-test.org
new file mode 100644
index 000..ecd00e5
--- /dev/null
+++ b/testing/examples/org-agenda-test.org
@@ -0,0 +1,10 @@
+#+Title: a collection of examples for org-agenda tests
+* TODO should be visible
+ob-agenda-test.org buffer should be narrowed after execution of this block
+#+BEGIN_SRC elisp :results silent
+  (let ((org-agenda-files (list buffer-file-name)))
+(narrow-to-region 1 (- (buffer-size) 23))
+(org-agenda nil t)
+(org-agenda-redo))
+#+END_SRC
+* TODO should be hidden
-- 
1.7.3.4

From 188d95624fec5d53403fd705679167ed7d7345a2 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Mon, 23 Jan 2012 14:26:14 +0100
Subject: [PATCH 2/2] Make narrowing of the agenda file survive (org-agenda-redo)

* lisp/org.el (org-prepare-agenda-buffers): move '(save-excursion
  (save-restriction' construction
---
 lisp/org.el |   67 +--
 1 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index f6a1160..9e23c18 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16498,47 +16498,46 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 	(inhibit-read-only t)
 	(rea (concat : org-archive-tag :))
 	 bmp file re)
-(save-excursion
-  (save-restriction
 	(while (setq file (pop files))
 	  (catch 'nextfile
 	(if (bufferp file)
 		(set-buffer file)
 	  (org-check-agenda-file file)
 	  (set-buffer (org-get-agenda-file-buffer file)))
-	(widen)
-	(setq bmp (buffer-modified-p))
-	(org-refresh-category-properties)
-	(setq org-todo-keywords-for-agenda
-		  (append org-todo-keywords-for-agenda org-todo-keywords-1))
-	(setq org-done-keywords-for-agenda
-		  (append org-done-keywords-for-agenda org-done-keywords))
-	(setq org-todo-keyword-alist-for-agenda
-		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
-	(setq org-drawers-for-agenda
-		  (append org-drawers-for-agenda org-drawers))
-	(setq org-tag-alist-for-agenda
-		  (append org-tag-alist-for-agenda org-tag-alist))
-
 	(save-excursion
-	  (remove-text-properties (point-min) (point-max) pall)
-	  (when org-agenda-skip-archived-trees
-		(goto-char (point-min))
-		(while (re-search-forward rea nil t)
-		  (if (org-at-heading-p t)
-		  (add-text-properties (point-at-bol) (org-end-of-subtree t) pa
-	  (goto-char (point-min))
-	  (setq re (format org-heading-keyword-regexp-format
-			   org-comment-string))
-	  (while (re-search-forward re nil t)
-		(add-text-properties
-		 (match-beginning 0) (org-end-of-subtree t) pc)))
-	(set-buffer-modified-p bmp)
-(setq org-todo-keywords-for-agenda
-  (org-uniquify org-todo-keywords-for-agenda))
-(setq org-todo-keyword-alist-for-agenda
-	  (org-uniquify org-todo-keyword-alist-for-agenda)
-	  org-tag-alist-for-agenda (org-uniquify org-tag-alist-for-agenda
+	  (save-restriction
+		(widen)
+		(setq bmp (buffer-modified-p))
+		(org-refresh-category-properties)
+		(setq org-todo-keywords-for-agenda
+		  (append org-todo-keywords-for-agenda org-todo-keywords-1))
+		(setq org-done-keywords-for-agenda
+		  (append org-done-keywords-for-agenda org-done-keywords))
+		(setq org-todo-keyword-alist-for-agenda
+		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
+		(setq org-drawers-for-agenda
+		  (append org-drawers-for-agenda org-drawers))
+		(setq org-tag-alist-for-agenda
+		  (append org-tag-alist-for-agenda org-tag-alist))
+		(save-excursion
+		  (remove-text-properties (point-min) (point-max) pall)
+		  (when org-agenda-skip-archived-trees
+		(goto-char (point-min))
+		(while (re-search-forward rea nil t)
+		  (if (org-at-heading-p t)
+			  (add-text-properties (point-at-bol) (org-end-of-subtree t) pa
+		  (goto-char (point-min))
+		  (setq re (format org-heading-keyword-regexp-format
+   org-comment-string))
+		  (while (re-search-forward re nil t)
+		(add-text-properties
+		 (match-beginning 0) (org-end-of-subtree t) pc)))
+		(set-buffer-modified-p bmp)
+	(setq org-todo-keywords-for-agenda
+	  (org-uniquify org-todo-keywords-for-agenda))
+	(setq org-todo-keyword-alist-for-agenda
+	  (org-uniquify org-todo-keyword-alist-for-agenda)
+	  org-tag-alist-for-agenda (org-uniquify org-tag-alist

[O] [BABEL,PATCH] Map screen language to shell-script-mode

2012-01-20 Thread Litvinov Sergey
A patch maps screen language to shell-script-mode.
From 8b802edb789eb50ddffcc9f040afcb7870db0181 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Fri, 20 Jan 2012 18:26:59 +0100
Subject: [PATCH] Map screen to shell-script-mode

---
 lisp/org-src.el |3 ++-
 testing/examples/ob-screen-test.org |5 +
 2 files changed, 7 insertions(+), 1 deletions(-)
 create mode 100644 testing/examples/ob-screen-test.org

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 11ce461..5357dd8 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -153,7 +153,8 @@ but which mess up the display of a snippet in Org exported files.)
 (defcustom org-src-lang-modes
   '((ocaml . tuareg) (elisp . emacs-lisp) (ditaa . artist)
 (asymptote . asy) (dot . fundamental) (sqlite . sql)
-(calc . fundamental) (C . c) (cpp . c++))
+(calc . fundamental) (C . c) (cpp . c++)
+(screen . shell-script))
   Alist mapping languages to their major mode.
 The key is the language name, the value is the string that should
 be inserted as the name of the major mode.  For many languages this is
diff --git a/testing/examples/ob-screen-test.org b/testing/examples/ob-screen-test.org
new file mode 100644
index 000..19ce147
--- /dev/null
+++ b/testing/examples/ob-screen-test.org
@@ -0,0 +1,5 @@
+#+Title: a collection of examples for ob-screen tests
+#+begin_src screen :session create-tmpdir
+  mkdir -p $TMPDIR
+  cd $TMPDIR
+#+end_src
-- 
1.7.3.4



[O] [BABEL,PATCH] Add graphical output to ob-octave

2011-12-17 Thread Litvinov Sergey
I propose a patch to make the following example work in ob-octave.
#+begin_src octave :results graphics :file chart.png
sombrero; % make a figure
#+end_src
From f193df8b1b7d1330a0dde89907a607051f632775 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Fri, 16 Dec 2011 20:12:39 +0100
Subject: [PATCH] ob-octave.el: Add graphical output

* lisp/ob-octave.el: add graphical output to png file

* testing/examples/ob-octave-test.org: add a test for graphical
  output, and a test for session
---
 lisp/ob-octave.el   |   30 +++---
 testing/examples/ob-octave-test.org |   10 ++
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
index f840739..796a5c7 100644
--- a/lisp/ob-octave.el
+++ b/lisp/ob-octave.el
@@ -86,13 +86,24 @@ end)
 	  (org-babel-expand-body:generic
 	   body params (org-babel-variable-assignments:octave params)))
 	 (result (org-babel-octave-evaluate
-		  session full-body result-type matlabp)))
-(org-babel-reassemble-table
- result
- (org-babel-pick-name
-  (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
- (org-babel-pick-name
-  (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params))
+		  session
+		  (if (org-babel-octave-graphical-output-file params)
+		  (mapconcat 'identity
+ (list
+  set (0, \defaultfigurevisible\, \off\);
+  full-body
+  (format print -dpng %s (org-babel-octave-graphical-output-file params)))
+ \n)
+		full-body)
+		  result-type matlabp)))
+(if (org-babel-octave-graphical-output-file params)
+	nil
+  (org-babel-reassemble-table
+   result
+   (org-babel-pick-name
+	(cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
+   (org-babel-pick-name
+	(cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)))
 
 (defun org-babel-prep-session:matlab (session params)
   Prepare SESSION according to PARAMS.
@@ -259,6 +270,11 @@ This removes initial blank and comment lines and then calls
   (match-string 1 string)
 string))
 
+(defun org-babel-octave-graphical-output-file (params)
+  Name of file to which maxima should send graphical output.
+  (and (member graphics (cdr (assq :result-params params)))
+   (cdr (assq :file params
+
 (provide 'ob-octave)
 
 
diff --git a/testing/examples/ob-octave-test.org b/testing/examples/ob-octave-test.org
index 97d9b00..9839d63 100644
--- a/testing/examples/ob-octave-test.org
+++ b/testing/examples/ob-octave-test.org
@@ -43,3 +43,13 @@ Input elisp nil
 #+begin_src octave :exports results :results silent :var s='nil
 ans = s
 #+end_src
+
+
+* Graphical tests
+#+begin_src octave :results graphics :file chart.png
+sombrero;
+#+end_src
+
+#+begin_src octave :session
+sombrero;
+#+end_src
-- 
1.7.4.1



Re: [O] [PATCH][babel] add a string input to ob-octave

2011-10-01 Thread Litvinov Sergey
 In other words, replacing (or var nil) with var would be enough

Thanks. Fixed in the patch below. The patch also adds an ert test.
From b4b679abdc7bec9f3033b50f81d567a0bb48b147 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Sat, 1 Oct 2011 13:37:56 +0200
Subject: [PATCH 2/2] Remove redundant condition check in ob-octave.el. Add a test.

---
 lisp/ob-octave.el   |4 ++--
 testing/examples/ob-octave-test.org |6 --
 testing/lisp/test-ob-octave.el  |6 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
index cfc1f1d..f840739 100644
--- a/lisp/ob-octave.el
+++ b/lisp/ob-octave.el
@@ -119,9 +119,9 @@ specifying a variable of the same value.
 			 (if (listp (car var)) ;  ,)) ])
 (cond
  ((stringp var)
-  (format \'%s\' (or var nil)))
+  (format \'%s\' var))
  (t
-  (format %s (or var nil))
+  (format %s var)
 
 (defun org-babel-prep-session:octave (session params optional matlabp)
   Prepare SESSION according to the header arguments specified in PARAMS.
diff --git a/testing/examples/ob-octave-test.org b/testing/examples/ob-octave-test.org
index 37cf3f9..97d9b00 100644
--- a/testing/examples/ob-octave-test.org
+++ b/testing/examples/ob-octave-test.org
@@ -24,7 +24,6 @@ Input an integer variable
 ans = s
 #+end_src
 
-
 Input an array
 #+begin_src octave :exports results :results silent :var s='(1.0 2.0 3.0)
 ans = s
@@ -40,4 +39,7 @@ Input a string
 ans = s(1:2)
 #+end_src
 
-
+Input elisp nil
+#+begin_src octave :exports results :results silent :var s='nil
+ans = s
+#+end_src
diff --git a/testing/lisp/test-ob-octave.el b/testing/lisp/test-ob-octave.el
index f3972ec..145266d 100644
--- a/testing/lisp/test-ob-octave.el
+++ b/testing/lisp/test-ob-octave.el
@@ -53,3 +53,9 @@
 (org-babel-next-src-block 4)
 (should (equal te (org-babel-execute-src-block)
 
+(ert-deftest ob-octave/input-nil ()
+  Input elisp nil
+  (org-test-at-id cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+(org-babel-next-src-block 5)
+(should (equal nil (org-babel-execute-src-block)
+
-- 
1.7.4.1



Re: [O] looking for examples using babel/calc

2011-10-01 Thread Litvinov Sergey
 is there some documentation and are there some examples of using babel
 with calc?

There are examples in
https://github.com/eschulte/babel-dev.git

Search for 'begin_src calc'.
https://raw.github.com/eschulte/babel-dev/master/scraps.org




[O] [PATCH][babel] add a string input to ob-octave

2011-09-30 Thread Litvinov Sergey
Please consider a tiny patch to add a string input variable to
ob-octave. I also add tests for ob-octave.
From 4848960cefc1b1486705f7aed022ba199189b6e1 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Sat, 1 Oct 2011 02:04:49 +0200
Subject: [PATCH] Add string input variables to ob-octave.el. Add tests for ob-octave.el

---
 lisp/ob-octave.el   |6 +++-
 testing/README.org  |1 +
 testing/examples/ob-octave-test.org |   43 +++
 testing/lisp/test-ob-octave.el  |   55 +++
 4 files changed, 104 insertions(+), 1 deletions(-)
 create mode 100644 testing/examples/ob-octave-test.org
 create mode 100644 testing/lisp/test-ob-octave.el

diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
index 3d90954..cfc1f1d 100644
--- a/lisp/ob-octave.el
+++ b/lisp/ob-octave.el
@@ -117,7 +117,11 @@ specifying a variable of the same value.
   (if (listp var)
   (concat [ (mapconcat #'org-babel-octave-var-to-octave var
 			 (if (listp (car var)) ;  ,)) ])
-(format %s (or var nil
+(cond
+ ((stringp var)
+  (format \'%s\' (or var nil)))
+ (t
+  (format %s (or var nil))
 
 (defun org-babel-prep-session:octave (session params optional matlabp)
   Prepare SESSION according to the header arguments specified in PARAMS.
diff --git a/testing/README.org b/testing/README.org
index 2f16a55..221a33c 100644
--- a/testing/README.org
+++ b/testing/README.org
@@ -79,6 +79,7 @@ First tangle this file out to your desktop.
(list (concat org-dir /testing/examples/babel.org)
  (concat org-dir /testing/examples/normal.org)
  (concat org-dir /testing/examples/ob-awk-test.org)
+ (concat org-dir /testing/examples/ob-octave.org)
  (concat org-dir /testing/examples/ob-fortran-test.org)
  (concat org-dir /testing/examples/link-in-heading.org)
  (concat org-dir /testing/examples/links.org)))
diff --git a/testing/examples/ob-octave-test.org b/testing/examples/ob-octave-test.org
new file mode 100644
index 000..37cf3f9
--- /dev/null
+++ b/testing/examples/ob-octave-test.org
@@ -0,0 +1,43 @@
+#+Title: a collection of examples for ob-octave tests
+#+OPTIONS: ^:nil
+
+* Simple tests
+  :PROPERTIES:
+  :ID:   54dcd61d-cf6c-4d7a-b9e5-854953c8a753
+  :END:
+Number output
+#+begin_src octave :exports results :results silent
+ans = 10
+#+end_src
+
+Array output
+#+begin_src octave :exports results :results silent
+ans = 1:4'
+#+end_src
+
+* Input tests
+  :PROPERTIES:
+  :ID:   cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+  :END:
+Input an integer variable
+#+begin_src octave :exports results :results silent :var s=42
+ans = s
+#+end_src
+
+
+Input an array
+#+begin_src octave :exports results :results silent :var s='(1.0 2.0 3.0)
+ans = s
+#+end_src
+
+Input a matrix
+#+begin_src octave :exports results :results silent :var s='((1 2) (3 4))
+ans = s
+#+end_src
+
+Input a string
+#+begin_src octave :exports results :results silent :var s=test
+ans = s(1:2)
+#+end_src
+
+
diff --git a/testing/lisp/test-ob-octave.el b/testing/lisp/test-ob-octave.el
new file mode 100644
index 000..f3972ec
--- /dev/null
+++ b/testing/lisp/test-ob-octave.el
@@ -0,0 +1,55 @@
+;;; test-ob-octave.el --- tests for ob-octave.el
+
+;; Copyright (c) 2010 Sergey Litvinov
+;; Authors: Sergey Litvinov
+
+;; Released under the GNU General Public License version 3
+;; see: http://www.gnu.org/licenses/gpl-3.0.html
+
+(org-test-for-executable octave)
+
+(let ((load-path (cons (expand-file-name
+			.. (file-name-directory
+			  (or load-file-name buffer-file-name)))
+		   load-path)))
+  (require 'org-test)
+  (require 'org-test-ob-consts))
+
+(require 'ob-octave)
+
+(ert-deftest ob-octave/input-none ()
+  Number output
+  (org-test-at-id 54dcd61d-cf6c-4d7a-b9e5-854953c8a753
+(org-babel-next-src-block)
+(should (= 10 (org-babel-execute-src-block)
+
+(ert-deftest ob-octave/output-vector ()
+  Vector output
+  (org-test-at-id 54dcd61d-cf6c-4d7a-b9e5-854953c8a753
+(org-babel-next-src-block 2)
+(should (equal '((1 2 3 4)) (org-babel-execute-src-block)
+
+(ert-deftest ob-octave/input-variable ()
+  Input variable
+  (org-test-at-id cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+(org-babel-next-src-block)
+(should (= 42 (org-babel-execute-src-block)
+
+(ert-deftest ob-octave/input-array ()
+  Input an array
+  (org-test-at-id cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+(org-babel-next-src-block 2)
+(should (equal '((1 2 3)) (org-babel-execute-src-block)
+
+(ert-deftest ob-octave/input-matrix ()
+  Input a matrix
+  (org-test-at-id cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+(org-babel-next-src-block 3)
+(should (equal '((1 2) (3 4)) (org-babel-execute-src-block)
+
+(ert-deftest ob-octave/input-string ()
+  Input a string
+  (org-test-at-id cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba
+(org-babel-next-src-block 4)
+(should (equal te (org-babel-execute

[O] [PATCH] testing/ort-test.el, regexp to find files

2011-08-03 Thread Litvinov Sergey
org-test picks up temporary and backup files. Please consider a patch
the attachments to get rid of them.
From 9b616baf0f3df63ea13ffde37c9c5aff903fac4e Mon Sep 17 00:00:00 2001
From: Sergey Litvinov slitvi...@gmail.com
Date: Mon, 1 Aug 2011 00:47:32 +0200
Subject: [PATCH] Get rid of tmp and backup file in test load

---
 testing/org-test.el |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/testing/org-test.el b/testing/org-test.el
index 96e693f..4e2f8e6 100644
--- a/testing/org-test.el
+++ b/testing/org-test.el
@@ -204,7 +204,7 @@ files.
 		 (lambda (path)
 		   (if (file-directory-p path) (rload path) (load-file path)))
 		 (directory-files base 'full
-  ^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*\\.el
+  ^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*\\.el$
 (rload (expand-file-name lisp org-test-dir))
 (rload (expand-file-name lisp
 			 (expand-file-name contrib org-test-dir)
-- 
1.7.1



[O] [BABEL,PATCH] cpp-c++-mode, ob-C mode tests

2011-08-03 Thread Litvinov Sergey
The first patch maps cpp language code to c++-mode. The second patch
adds tests for ob-C.
From d0bc3554ec70138245289f1fabf78e2e86436c78 Mon Sep 17 00:00:00 2001
From: Sergey Litvinov slitvi...@gmail.com
Date: Wed, 3 Aug 2011 22:02:43 +0200
Subject: [PATCH 1/2] Map cpp to c++-mode

---
 lisp/org-src.el |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 30ffc34..094ec09 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -155,7 +155,7 @@ but which mess up the display of a snippet in Org exported files.)
 (defcustom org-src-lang-modes
   '((ocaml . tuareg) (elisp . emacs-lisp) (ditaa . artist)
 (asymptote . asy) (dot . fundamental) (sqlite . sql)
-(calc . fundamental) (C . c))
+(calc . fundamental) (C . c) (cpp . c++))
   Alist mapping languages to their major mode.
 The key is the language name, the value is the string that should
 be inserted as the name of the major mode.  For many languages this is
-- 
1.7.1

From fba6eef6944766e675e4abe1d11d347b9a728031 Mon Sep 17 00:00:00 2001
From: Sergey Litvinov slitvi...@gmail.com
Date: Wed, 3 Aug 2011 22:03:19 +0200
Subject: [PATCH 2/2] Add tests for ob-C.el

---
 testing/README.org |1 +
 testing/examples/ob-C-test.org |   44 
 testing/lisp/test-ob-C.el  |   43 +++
 3 files changed, 88 insertions(+), 0 deletions(-)
 create mode 100644 testing/examples/ob-C-test.org
 create mode 100644 testing/lisp/test-ob-C.el

diff --git a/testing/README.org b/testing/README.org
index 2f16a55..cb408db 100644
--- a/testing/README.org
+++ b/testing/README.org
@@ -77,6 +77,7 @@ First tangle this file out to your desktop.
   (require 'org-id)
   (org-id-update-id-locations
(list (concat org-dir /testing/examples/babel.org)
+ (concat org-dir /testing/examples/ob-C-test.org)
  (concat org-dir /testing/examples/normal.org)
  (concat org-dir /testing/examples/ob-awk-test.org)
  (concat org-dir /testing/examples/ob-fortran-test.org)
diff --git a/testing/examples/ob-C-test.org b/testing/examples/ob-C-test.org
new file mode 100644
index 000..4721c96
--- /dev/null
+++ b/testing/examples/ob-C-test.org
@@ -0,0 +1,44 @@
+#+Title: a collection of examples for ob-C tests
+#+OPTIONS: ^:nil
+* Simple tests
+  :PROPERTIES:
+  :ID:   fa6db330-e960-4ea2-ac67-94bb845b8577
+  :END:
+#+source: simple
+#+begin_src cpp :includes iostream :results silent
+  std::cout  42;
+  return 0;
+#+end_src 
+
+#+source: integer_var
+#+begin_src cpp :var q=12 :includes iostream :results silent
+  std::cout  q;
+  return 0;
+#+end_src
+
+#+source: two_var
+#+begin_src cpp :var q=12 :var p=10 :includes iostream :results silent
+  std::cout  p+q;
+  return 0;
+#+end_src
+
+#+source: string_var
+#+begin_src cpp :var q=word :includes '(iostream cstring) :results silent
+  std::cout  q  ' '  strlen(q);
+  return 0;
+#+end_src
+
+#+source: define
+#+begin_src cpp :defines N 42  :includes iostream :results silent
+  std::cout  N;
+  return 0;
+#+end_src
+
+* Array
+#+source: array
+#+begin_src cpp :includes iostream :results vector :results silent
+  for (int i=1; i3; i++) {
+std::cout  i  '\n';
+  }
+  return 0;
+#+end_src
diff --git a/testing/lisp/test-ob-C.el b/testing/lisp/test-ob-C.el
new file mode 100644
index 000..5ee7bec
--- /dev/null
+++ b/testing/lisp/test-ob-C.el
@@ -0,0 +1,43 @@
+(require 'ob-C)
+ 
+(ert-deftest ob-C/assert ()
+  (should t))
+
+(ert-deftest ob-C/simple-program ()
+  Hello world program.
+  (org-test-at-id fa6db330-e960-4ea2-ac67-94bb845b8577
+(org-babel-next-src-block)
+(should (= 42 (org-babel-execute-src-block)
+
+(ert-deftest ob-C/integer-var ()
+  Test of an integer variable.
+  (org-test-at-id fa6db330-e960-4ea2-ac67-94bb845b8577
+(org-babel-next-src-block 2)
+(should (= 12 (org-babel-execute-src-block)
+
+(ert-deftest ob-C/two-integer-var ()
+  Test of two input variables
+  (org-test-at-id fa6db330-e960-4ea2-ac67-94bb845b8577
+(org-babel-next-src-block 3)
+(should (= 22 (org-babel-execute-src-block)
+
+(ert-deftest ob-C/string-var ()
+  Test of a string input variable
+  (org-test-at-id fa6db330-e960-4ea2-ac67-94bb845b8577
+(org-babel-next-src-block 4)
+(should (equal word 4 (org-babel-execute-src-block)
+
+(ert-deftest ob-C/preprocessor ()
+  Test of a string variable
+  (org-test-at-id fa6db330-e960-4ea2-ac67-94bb845b8577
+(org-babel-next-src-block 5)
+(should (= 42 (org-babel-execute-src-block)
+
+(ert-deftest ob-C/table ()
+  Test of a table output
+  (org-test-at-id 2df1ab83-3fa3-462a-a1f3-3aef6044a874
+(org-babel-next-src-block)
+(should (equal '((1) (2)) (org-babel-execute-src-block)
+
+;;; test-ob-C.el ends here
+ 
-- 
1.7.1



[O] [BABEL,PATCH] call awk with no input

2011-07-24 Thread Litvinov Sergey
Please consider this tiny fix to execute awk program with no input.
Example with gawk:
gawk --posix 'BEGIN {print 42}'

I also added some tests for ob-awk.
From 868fa910254c48752801cdc7849c3eb4db63f811 Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Sun, 24 Jul 2011 12:28:35 +0200
Subject: [PATCH] Awk can be called with no in-file: and no :stdin

---
 lisp/ob-awk.el   |6 +---
 testing/README.org   |1 +
 testing/examples/ob-awk-test.in  |2 +
 testing/examples/ob-awk-test.org |   39 ++
 testing/lisp/test-ob-awk.el  |   19 ++
 5 files changed, 63 insertions(+), 4 deletions(-)
 create mode 100644 testing/examples/ob-awk-test.in
 create mode 100644 testing/examples/ob-awk-test.org
 create mode 100644 testing/lisp/test-ob-awk.el

diff --git a/lisp/ob-awk.el b/lisp/ob-awk.el
index d5098bc..cfed04a 100644
--- a/lisp/ob-awk.el
+++ b/lisp/ob-awk.el
@@ -26,8 +26,7 @@
 
 ;;; Commentary:
 
-;; Babel's awk support relies on two special header argument one of
-;; which is required to pass data to the awk process.
+;; Babel's awk can use special header argument:
 ;; 
 ;; - :in-file takes a path to a file of data to be processed by awk
 ;;   
@@ -89,11 +88,10 @@ called by `org-babel-execute-src-block'
 	  (with-temp-file tmp (insert results))
 	  (org-babel-import-elisp-from-file tmp)
   (cond
-   (in-file (org-babel-eval cmd ))
(stdin (with-temp-buffer
 		(call-process-shell-command cmd stdin (current-buffer))
 		(buffer-string)))
-   (t (error ob-awk: must specify either :in-file or :stdin
+   (t (org-babel-eval cmd 
  (org-babel-pick-name
   (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
  (org-babel-pick-name
diff --git a/testing/README.org b/testing/README.org
index 3cc0487..2f16a55 100644
--- a/testing/README.org
+++ b/testing/README.org
@@ -78,6 +78,7 @@ First tangle this file out to your desktop.
   (org-id-update-id-locations
(list (concat org-dir /testing/examples/babel.org)
  (concat org-dir /testing/examples/normal.org)
+ (concat org-dir /testing/examples/ob-awk-test.org)
  (concat org-dir /testing/examples/ob-fortran-test.org)
  (concat org-dir /testing/examples/link-in-heading.org)
  (concat org-dir /testing/examples/links.org)))
diff --git a/testing/examples/ob-awk-test.in b/testing/examples/ob-awk-test.in
new file mode 100644
index 000..c38382d
--- /dev/null
+++ b/testing/examples/ob-awk-test.in
@@ -0,0 +1,2 @@
+ # an input file for awk test
+15
\ No newline at end of file
diff --git a/testing/examples/ob-awk-test.org b/testing/examples/ob-awk-test.org
new file mode 100644
index 000..7f51772
--- /dev/null
+++ b/testing/examples/ob-awk-test.org
@@ -0,0 +1,39 @@
+#+Title: a collection of examples for ob-awk tests
+#+OPTIONS: ^:nil
+
+* Simple tests
+  :PROPERTIES:
+  :ID:   9e998b2a-3581-43fe-b26d-07d3c507b86a
+  :END:
+Run without input stream
+#+begin_src awk :ouput silent :results silent
+  BEGIN {
+  print 42
+  }
+#+end_src
+
+Use a code block ouput as an input
+#+begin_src awk  :stdin genseq :results silent
+  {
+  print 42+$1
+  }
+#+end_src
+
+Use input file
+#+srcname: genfile
+#+begin_src awk  :in-file ob-awk-test.in :results silent
+$0~/[\t]*#/{
+# skip comments 
+next
+}
+{ 
+print $1*10
+}
+#+end_src
+
+* Input data generators
+A code block to generate input stream
+#+srcname: genseq
+#+begin_src emacs-lisp :results silent
+(print 1)
+#+end_src
diff --git a/testing/lisp/test-ob-awk.el b/testing/lisp/test-ob-awk.el
new file mode 100644
index 000..018dec4
--- /dev/null
+++ b/testing/lisp/test-ob-awk.el
@@ -0,0 +1,19 @@
+(require 'ob-awk)
+
+(ert-deftest ob-awk/input-none ()
+  Test with no input file
+  (org-test-at-id 9e998b2a-3581-43fe-b26d-07d3c507b86a
+(org-babel-next-src-block)
+(should (= 42 (org-babel-execute-src-block)
+
+(ert-deftest ob-awk/input-src-block ()
+  Test a code block as an input
+  (org-test-at-id 9e998b2a-3581-43fe-b26d-07d3c507b86a
+(org-babel-next-src-block 2)
+(should (= 43 (org-babel-execute-src-block)
+
+(ert-deftest ob-awk/input-src-block ()
+  Test a code block as an input
+  (org-test-at-id 9e998b2a-3581-43fe-b26d-07d3c507b86a
+(org-babel-next-src-block 3)
+(should (= 150 (org-babel-execute-src-block)
-- 
1.7.4.1



[O] [BABEL,PATCH] ob-fortran, ert tests

2011-07-20 Thread Litvinov Sergey
ob-fortran.el: fix a bug with string input, add ob-fortran tests with
ert.
From ed4e14fd509cad8d9ccc66bef570f2d8796213ca Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Thu, 21 Jul 2011 00:44:50 +0200
Subject: [PATCH] ob-fortran.el: fix bug with string input, add ob-fortran tests with ert

---
 contrib/babel/langs/ob-fortran.el|4 +-
 testing/README.org   |1 +
 testing/examples/ob-fortran-test.org |   86 +++---
 testing/lisp/test-ob-fortran.el  |   80 +++
 4 files changed, 131 insertions(+), 40 deletions(-)
 create mode 100644 testing/lisp/test-ob-fortran.el

diff --git a/contrib/babel/langs/ob-fortran.el b/contrib/babel/langs/ob-fortran.el
index f2f5cb2..6b0b144 100644
--- a/contrib/babel/langs/ob-fortran.el
+++ b/contrib/babel/langs/ob-fortran.el
@@ -142,8 +142,8 @@ of the same value.
  ((or (characterp val))
   (format character, parameter :: %S = '%S'\n var val))
  ((stringp val)
-  (format character, parameter ::  %S(%d) = '%s'\n
-  var (length val) val))
+  (format character(len=%d), parameter ::  %S = '%s'\n
+  (length val) var val))
  ((listp val)
   (format real, parameter :: %S(%d) = %s\n
 	  var (length val) (ob-fortran-transform-list val)))
diff --git a/testing/README.org b/testing/README.org
index 648a30d..3cc0487 100644
--- a/testing/README.org
+++ b/testing/README.org
@@ -78,6 +78,7 @@ First tangle this file out to your desktop.
   (org-id-update-id-locations
(list (concat org-dir /testing/examples/babel.org)
  (concat org-dir /testing/examples/normal.org)
+ (concat org-dir /testing/examples/ob-fortran-test.org)
  (concat org-dir /testing/examples/link-in-heading.org)
  (concat org-dir /testing/examples/links.org)))
   
diff --git a/testing/examples/ob-fortran-test.org b/testing/examples/ob-fortran-test.org
index ade9f43..d48ae4e 100644
--- a/testing/examples/ob-fortran-test.org
+++ b/testing/examples/ob-fortran-test.org
@@ -1,76 +1,86 @@
-* Test org fortran file
-#+begin_src fortran
+#+Title: a collection of examples for ob-fortran tests
+#+OPTIONS: ^:nil
+
+* simple programs
+  :PROPERTIES:
+  :ID:   459384e8-1797-4f11-867e-dde0473ea7cc
+  :END:
+#+source: hello
+#+begin_src fortran :results silent
 print *, 'Hello world'
 #+end_src
 
-#+begin_src fortran
+#+source: fortran_parameter
+#+begin_src fortran :results silent
 integer, parameter :: i = 10
-print *, 'i = ', i
+write (*, '(i2)') i
 #+end_src
 
-#+begin_src fortran :var N = 10
-print *, 'N = ', N
+* variable resolution
+  :PROPERTIES:
+  :ID:   d8d1dfd3-5f0c-48fe-b55d-777997e02242
+  :END:
+#+begin_src fortran :var N = 15 :results silent
+write (*, '(i2)') N
 #+end_src
 
 Define for preprocessed fortran
-#+begin_src fortran :defines N 42
+#+begin_src fortran :defines N 42 :results silent
 implicit none
-print *, 'N = ', N
+write (*, '(i2)') N
 #+end_src
 
-#+begin_src fortran :var s=word
-print *, 's = ', s
-print *, 'size(s) = ', size(s)
+#+begin_src fortran :var s=word :results silent
+write (*, '(a4)') s
 #+end_src
-
-#+begin_src fortran :var s=42.0
-print *, 's = ', s
-print *, 'kind(s) = ', kind(s)
+* arrays
+  :PROPERTIES:
+  :ID:   c28569d9-04ce-4cad-ab81-1ea29f691465
+  :END:
+Real array as input
+#+begin_src fortran :var s='(1.0 2.0 3.0) :results silent
+write (*, '(3f5.2)'), s
 #+end_src
 
-#+begin_src fortran
-program ex
-print *, output of ex program
-end program ex
+#+tblname: test_tbl
+| 1.0 |
+| 2.0 |
+
+#+begin_src fortran :var s=test_tbl :results silent
+write (*, '(2f5.2)'), s
 #+end_src
 
+* failing
+  :PROPERTIES:
+  :ID:   891ead4a-f87a-473c-9ae0-1cf348bcd04f
+  :END:
 Should fail (TODO: add input variables for the case with explicit
 program statement)
-#+begin_src fortran :var s=word
+#+begin_src fortran :var s=word :results silent
 program ex
 print *, output of ex program
 end program ex
 #+end_src
 
-Real array as input
-#+begin_src fortran :var s='(1.0 2.0 3.0)
-print *, s
-#+end_src
-
-#+tblname: test_tbl
-| 1.0 |
-| 2.0 |
-
-Real array as input
-#+begin_src fortran :var s=test_tbl
-print *, s
-#+end_src
-
 Fails to compile (TODO: error check in ob-fortran.el)
-#+begin_src fortran :var s='(1 ())
+#+begin_src fortran :var s='(1 ()) :results silent
 print *, s
 #+end_src
 
 Should fail to compile with gfortran
-#+begin_src fortran :flags --std=f95 --pedantic-error
+#+begin_src fortran :flags --std=f95 --pedantic-error :results silent
 program ex
 integer*8 :: i
 end program ex
 #+end_src
 
+* programs input parameters
+  :PROPERTIES:
+  :ID:   2d5330ea-9934-4737-9ed6-e1d3dae2dfa4
+  :END:
 Pass parameters to the program
-#+begin_src fortran :cmdline 23
+#+begin_src fortran :cmdline 23 :results silent
 character(len=255) :: cmd
-call get_command(cmd)
+call get_command_argument(1, cmd)
 write (*,*) trim(cmd)
 #+end_src
diff --git a/testing/lisp/test-ob-fortran.el b/testing/lisp/test-ob

[O] [BABEL, PATCH] ob-maxima.el add variables and graphical output

2011-07-19 Thread Litvinov Sergey
I would like to contribute an extension of babel maxima support.
The patch adds variables and graphical output (currently limited to png
files). There is a file with examples (tests). It is not ERTed yet.
org-mode/testing/examples/ob-maxima-test.org
From e383e0aa6e0a996033f86b8346205b1a38a124da Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Tue, 19 Jul 2011 00:33:52 +0200
Subject: [PATCH] Extend ob-maxima: add input variables and graphic output

---
 lisp/ob-maxima.el   |   91 +-
 testing/examples/ob-maxima-test.org |   63 
 2 files changed, 130 insertions(+), 24 deletions(-)
 create mode 100644 testing/examples/ob-maxima-test.org

diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el
index 6bd5d39..1344384 100644
--- a/lisp/ob-maxima.el
+++ b/lisp/ob-maxima.el
@@ -32,47 +32,90 @@
 ;;
 ;; 1) there is no such thing as a session in maxima
 ;;
-;; 2) we are generally only going to return output from maxima
-;;
-;; 3) we are adding the cmdline header argument
-;;
-;; 4) there are no variables
+;; 2) we are adding the cmdline header argument
 
 ;;; Code:
 (require 'ob)
 
+(defvar org-babel-tangle-lang-exts)
+(add-to-list 'org-babel-tangle-lang-exts '(maxima . max))
+
 (defvar org-babel-default-header-args:maxima '())
 
 (defun org-babel-maxima-expand (body params)
   Expand a block of Maxima code according to its header arguments.
-  body)
+  (let ((vars (mapcar #'cdr (org-babel-get-header params :var
+ (mapconcat 'identity
+		(list
+		 ;; graphic output
+		 (let ((graphic-file (org-babel-maxima-graphical-output-file params)))
+		   (if graphic-file  
+		   (format 
+			set_plot_option ([gnuplot_term, png]); set_plot_option ([gnuplot_out_file, %S]); 
+			graphic-file)
+		 ))
+		 ;; variables
+		 (mapconcat 'org-babel-maxima-var-to-maxima vars \n)
+		 ;; body
+		 body
+		 gnuplot_close ()$)
+		\n)))
 
 (defun org-babel-execute:maxima (body params)
   Execute a block of Maxima entries with org-babel.  This function is
 called by `org-babel-execute-src-block'.
   (message executing Maxima source code block)
-  (let* ((result-params (split-string (or (cdr (assoc :results params)) )))
-	 (cmdline (cdr (assoc :cmdline params)))
-	 (in-file (org-babel-temp-file maxima-))
-	 (cmd (format maxima --very-quiet -r 'batchload(%S)$' %s
-		  in-file cmdline)))
-(with-temp-file in-file (insert body))
-(message cmd)
-((lambda (raw) ;;  | grep -v batch | grep -v 'replaced' | sed '/^$/d' 
-   (mapconcat
-	#'identity
-	(delq nil
-	  (mapcar (lambda (line)
-			(unless (or (string-match batch line)
-(string-match ^rat: replaced .*$ line)
-(= 0 (length line)))
-			  line))
-		  (split-string raw [\r\n]))) \n))
- (org-babel-eval cmd 
+  (let ((result
+	 (let* ((result-params (split-string (or (cdr (assoc :results params)) )))
+		(cmdline (cdr (assoc :cmdline params)))
+		(in-file (org-babel-temp-file maxima- .max))
+		(cmd (format maxima --very-quiet -r 'batchload(%S)$' %s
+			 in-file cmdline)))
+	   (with-temp-file in-file (insert (org-babel-maxima-expand body params)))
+	   (message cmd)
+	   ((lambda (raw) ;;  | grep -v batch | grep -v 'replaced' | sed '/^$/d' 
+	  (mapconcat
+	   #'identity
+	   (delq nil
+		 (mapcar (lambda (line)
+			   (unless (or (string-match batch line)
+	   (string-match ^rat: replaced .*$ line)
+	   (= 0 (length line)))
+ line))
+			 (split-string raw [\r\n]))) \n))
+	(org-babel-eval cmd ) 
+(if (org-babel-maxima-graphical-output-file params) 
+	nil
+  result)))
+
 
 (defun org-babel-prep-session:maxima (session params)
   (error Maxima does not support sessions))
 
+(defun org-babel-maxima-var-to-maxima (pair)
+  Convert an elisp val into a string of maxima code specifying a var
+of the same value.
+  (let ((var (car pair))
+(val (cdr pair)))
+(when (symbolp val)
+  (setq val (symbol-name val))
+  (when (= (length val) 1)
+(setq val (string-to-char val
+  (format %S: %s$ var 
+	  (org-babel-maxima-elisp-to-maxima val
+
+(defun org-babel-maxima-graphical-output-file (params)
+  Name of file to which maxima should send graphical output.
+  (and (member graphics (cdr (assq :result-params params)))
+   (cdr (assq :file params
+
+(defun org-babel-maxima-elisp-to-maxima (val)
+  Return a string of maxima code which evaluates to VAL.
+  (if (listp val)
+  (concat [ (mapconcat #'org-babel-maxima-elisp-to-maxima val , ) ])
+(format %s val)))
+
+
 (provide 'ob-maxima)
 
 ;; arch-tag: d86c97ac-7eab-4349-8d8b-302dd09779a8
diff --git a/testing/examples/ob-maxima-test.org b/testing/examples/ob-maxima-test.org
new file mode 100644
index 000..23c76e7
--- /dev/null
+++ b/testing/examples/ob-maxima-test.org
@@ -0,0 +1,63 @@
+* Test org maxima file
+#+begin_src maxima :var s=4 :results silent
+print(s);
+#+end_src
+
+Pass a string
+#+begin_src

[O] [BABEL,PATCH] ob-fortran

2011-07-18 Thread Litvinov Sergey
Please consider an implementation of fortran support for
org-babel. The patch adds contrib/babel/langs/ob-fortran.el
(modification of lisp/ob-C.el) and
testing/examples/ob-fortran-test.org with tests.

From 2ac9b86a6387cae1472e3ed288a3a133be72318c Mon Sep 17 00:00:00 2001
From: Litvinov Sergey slitvi...@gmail.com
Date: Mon, 18 Jul 2011 09:44:07 +0200
Subject: [PATCH] Add fortran to babel

---
 contrib/babel/langs/ob-fortran.el|  191 ++
 testing/examples/ob-fortran-test.org |   76 ++
 2 files changed, 267 insertions(+), 0 deletions(-)
 create mode 100644 contrib/babel/langs/ob-fortran.el
 create mode 100644 testing/examples/ob-fortran-test.org

diff --git a/contrib/babel/langs/ob-fortran.el b/contrib/babel/langs/ob-fortran.el
new file mode 100644
index 000..6fdf416
--- /dev/null
+++ b/contrib/babel/langs/ob-fortran.el
@@ -0,0 +1,191 @@
+;;; ob-fortran.el --- org-babel functions for fortran
+;; Copyright (C) 2010  Free Software Foundation, Inc.
+
+;; Author: Sergey Litvinov (based on ob-C.el by Eric Schulte)
+;; Keywords: literate programming, reproducible research, fortran
+;; Homepage: http://orgmode.org
+;; Version: 7.6
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
+
+;;; Commentary:
+
+;; Org-Babel support for evaluating fortran code.
+;;
+
+;;; Code:
+
+;; Org-Babel support for evaluating fortran code.
+;;
+
+(require 'ob)
+(require 'ob-eval)
+(require 'cc-mode)
+
+(declare-function org-entry-get org
+		  (pom property optional inherit literal-nil))
+
+(defvar org-babel-tangle-lang-exts)
+(add-to-list 'org-babel-tangle-lang-exts '(fortran . F90))
+
+(defvar org-babel-default-header-args:fortran '())
+
+(defvar org-babel-fortran-compiler gfortran
+  fortran command used to compile a fortran source code file into an
+  executable.)
+
+(defun org-babel-execute:fortran (body params)
+  Execute BODY according to PARAMS.  This function calls
+`org-babel-execute:fortran'.
+  (org-babel-execute:fortran body params))
+
+(defun org-babel-execute:fortran (body params)
+Execute a block of fortran code with org-babel.  This function is
+called by `org-babel-execute-src-block'.
+  (org-babel-fortran-execute body params))
+
+(defun org-babel-expand-body:fortran (body params)
+  Expand a block of fortran code with org-babel according to it's
+header arguments (calls `org-babel-fortran-expand').
+  (org-babel-fortran-expand body params))
+
+(defun org-babel-execute:fortran (body params)
+  Execute a block of fortran code with org-babel.  This function is
+called by `org-babel-execute-src-block'.
+  (org-babel-fortran-execute body params))
+
+(defun org-babel-expand-body:fortran (body params)
+  Expand a block of fortran code with org-babel according to it's
+header arguments (calls `org-babel-fortran-expand').
+  (org-babel-fortran-expand body params))
+
+(defun org-babel-fortran-execute (body params)
+  This function should only be called by `org-babel-execute:fortran'
+  (let* ((tmp-src-file (org-babel-temp-file
+			fortran-src-
+			.F90))
+ (tmp-bin-file (org-babel-temp-file fortran-bin-))
+ (cmdline (cdr (assoc :cmdline params)))
+ (flags (cdr (assoc :flags params)))
+ (full-body (org-babel-fortran-expand body params))
+ (compile
+	  (progn
+	(with-temp-file tmp-src-file (insert full-body))
+	(org-babel-eval
+	 (format %s -o %s %s %s
+		 org-babel-fortran-compiler
+		 (org-babel-process-file-name tmp-bin-file)
+		 (mapconcat 'identity
+(if (listp flags) flags (list flags))  )
+		 (org-babel-process-file-name tmp-src-file)) 
+((lambda (results)
+   (org-babel-reassemble-table
+	(if (member vector (cdr (assoc :result-params params)))
+	(let ((tmp-file (org-babel-temp-file f-)))
+	  (with-temp-file tmp-file (insert results))
+	  (org-babel-import-elisp-from-file tmp-file))
+	  (org-babel-read results))
+	(org-babel-pick-name
+	 (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
+	(org-babel-pick-name
+	 (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)
+ (org-babel-trim
+   (org-babel-eval
+	(concat tmp-bin-file (if cmdline (concat   cmdline) )) )
+
+(defun org-babel-fortran-expand (body params)
+  Expand a block of fortran or fortran code with org-babel according to
+it's header arguments

[Orgmode] Re: [babel] maxima support?

2011-02-25 Thread Litvinov Sergey
Thanks.
Works like a charm.


___
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


[Orgmode] [babel] maxima support?

2011-02-23 Thread Litvinov Sergey
I have not found (i)maxima on this page.
http://orgmode.org/worg/org-contrib/babel/languages.html
(Babel: Languages)

Has someone implemented it?


___
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