emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Enabling another language in org-babel
@ 2014-06-24  8:54 Brendan Halpin
  2014-06-24 11:02 ` Eric Schulte
  0 siblings, 1 reply; 18+ messages in thread
From: Brendan Halpin @ 2014-06-24  8:54 UTC (permalink / raw)
  To: emacs-orgmode

Does there exist any documentation on extending org-babel to another
language?

Relatedly, is anyone working on adding Stata coverage to org-babel?


Regards,

Brendan
-- 
Brendan Halpin, Head, Department of Sociology, University of Limerick, Ireland
Tel: w +353-61-213147  f +353-61-202569  h +353-61-338562;  Room F1-002 x 3147
mailto:brendan.halpin@ul.ie    ULSociology on Facebook: http://on.fb.me/fjIK9t
http://teaching.sociology.ul.ie/bhalpin/wordpress         twitter:@ULSociology

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-24  8:54 Enabling another language in org-babel Brendan Halpin
@ 2014-06-24 11:02 ` Eric Schulte
  2014-06-24 12:05   ` Rainer M Krug
  0 siblings, 1 reply; 18+ messages in thread
From: Eric Schulte @ 2014-06-24 11:02 UTC (permalink / raw)
  To: brendan.halpin; +Cc: emacs-orgmode

Brendan Halpin <brendan.halpin@ul.ie> writes:

> Does there exist any documentation on extending org-babel to another
> language?
>

Hi Brendan,

There is a template [1] which may be filled out to add support for a new
language.  More generally simply defining a function named
`org-babel-execute:foo' will cause babel to try to execute foo code
blocks using that function.  See the template for existing
`org-babel-execute:*' functions.

>
> Relatedly, is anyone working on adding Stata coverage to org-babel?
>

I'm not but who knows.  If you do add support for Stata please consider
contributing it to Org-mode (see [2]).

Best,
Eric

>
>
> Regards,
>
> Brendan


Footnotes: 
[1]  http://orgmode.org/w/worg.git/blob/HEAD:/org-contrib/babel/ob-template.el

[2]  http://orgmode.org/worg/org-contribute.html

-- 
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D (see https://u.fsf.org/yw)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-24 11:02 ` Eric Schulte
@ 2014-06-24 12:05   ` Rainer M Krug
  2014-06-24 19:52     ` Ista Zahn
  0 siblings, 1 reply; 18+ messages in thread
From: Rainer M Krug @ 2014-06-24 12:05 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode, brendan.halpin

[-- Attachment #1: Type: text/plain, Size: 1524 bytes --]

Eric Schulte <schulte.eric@gmail.com> writes:

> Brendan Halpin <brendan.halpin@ul.ie> writes:
>
>> Does there exist any documentation on extending org-babel to another
>> language?
>>
>
> Hi Brendan,
>
> There is a template [1] which may be filled out to add support for a new
> language.  More generally simply defining a function named
> `org-babel-execute:foo' will cause babel to try to execute foo code
> blocks using that function.  See the template for existing
> `org-babel-execute:*' functions.
>
>>
>> Relatedly, is anyone working on adding Stata coverage to org-babel?
>>
>
> I'm not but who knows.  If you do add support for Stata please consider
> contributing it to Org-mode (see [2]).

stata should be not to difficult to add, as ESS supports stata and I
would guess that most functions would be the same (or very similar)

Cheers,

Rainer

>
> Best,
> Eric
>
>>
>>
>> Regards,
>>
>> Brendan
>
>
> Footnotes: 
> [1]  http://orgmode.org/w/worg.git/blob/HEAD:/org-contrib/babel/ob-template.el
>
> [2]  http://orgmode.org/worg/org-contribute.html

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      Rainer@krugs.de

Skype:      RMkrug

PGP: 0x0F52F982

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-24 12:05   ` Rainer M Krug
@ 2014-06-24 19:52     ` Ista Zahn
  2014-06-24 20:13       ` G. Jay Kerns
  2014-06-25  8:33       ` Bastien
  0 siblings, 2 replies; 18+ messages in thread
From: Ista Zahn @ 2014-06-24 19:52 UTC (permalink / raw)
  To: Rainer M Krug; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

I just hacked up a rudimentary ob-stata.el by replacing "julia" with
"stata" in ob-julia.el by G. Jay Kerns (and making a few other minor
tweaks). Only ":results output" works (no graphics, no :results
value). In short it's in pretty rough shape, but it does work for some
basic things. Perhaps someone with better emacs-lisp can polish it up.
The code is available at
https://gist.github.com/izahn/5745dcf6dd07a6b05084

Best,
Ista

On Tue, Jun 24, 2014 at 8:05 AM, Rainer M Krug <Rainer@krugs.de> wrote:
> Eric Schulte <schulte.eric@gmail.com> writes:
>
>> Brendan Halpin <brendan.halpin@ul.ie> writes:
>>
>>> Does there exist any documentation on extending org-babel to another
>>> language?
>>>
>>
>> Hi Brendan,
>>
>> There is a template [1] which may be filled out to add support for a new
>> language.  More generally simply defining a function named
>> `org-babel-execute:foo' will cause babel to try to execute foo code
>> blocks using that function.  See the template for existing
>> `org-babel-execute:*' functions.
>>
>>>
>>> Relatedly, is anyone working on adding Stata coverage to org-babel?
>>>
>>
>> I'm not but who knows.  If you do add support for Stata please consider
>> contributing it to Org-mode (see [2]).
>
> stata should be not to difficult to add, as ESS supports stata and I
> would guess that most functions would be the same (or very similar)
>
> Cheers,
>
> Rainer
>
>>
>> Best,
>> Eric
>>
>>>
>>>
>>> Regards,
>>>
>>> Brendan
>>
>>
>> Footnotes:
>> [1]  http://orgmode.org/w/worg.git/blob/HEAD:/org-contrib/babel/ob-template.el
>>
>> [2]  http://orgmode.org/worg/org-contribute.html
>
> --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany)
>
> Centre of Excellence for Invasion Biology
> Stellenbosch University
> South Africa
>
> Tel :       +33 - (0)9 53 10 27 44
> Cell:       +33 - (0)6 85 62 59 98
> Fax :       +33 - (0)9 58 10 27 44
>
> Fax (D):    +49 - (0)3 21 21 25 22 44
>
> email:      Rainer@krugs.de
>
> Skype:      RMkrug
>
> PGP: 0x0F52F982

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-24 19:52     ` Ista Zahn
@ 2014-06-24 20:13       ` G. Jay Kerns
  2014-06-25  8:33       ` Bastien
  1 sibling, 0 replies; 18+ messages in thread
From: G. Jay Kerns @ 2014-06-24 20:13 UTC (permalink / raw)
  To: Ista Zahn, Rainer M Krug; +Cc: emacs-orgmode, brendan.halpin, Eric Schulte

Great work, Ista!

Cheers,
Jay

-- 
G. Jay Kerns, Ph.D.
Youngstown State University
http://gkerns.people.ysu.edu/


On 06/24/14 15:52, Ista Zahn wrote:
> I just hacked up a rudimentary ob-stata.el by replacing "julia" with
> "stata" in ob-julia.el by G. Jay Kerns (and making a few other minor
> tweaks). Only ":results output" works (no graphics, no :results
> value). In short it's in pretty rough shape, but it does work for some
> basic things. Perhaps someone with better emacs-lisp can polish it up.
> The code is available at
> https://gist.github.com/izahn/5745dcf6dd07a6b05084
> 
> Best,
> Ista
> 
> On Tue, Jun 24, 2014 at 8:05 AM, Rainer M Krug <Rainer@krugs.de> wrote:
>> Eric Schulte <schulte.eric@gmail.com> writes:
>>
>>> Brendan Halpin <brendan.halpin@ul.ie> writes:
>>>
>>>> Does there exist any documentation on extending org-babel to another
>>>> language?
>>>>
>>>
>>> Hi Brendan,
>>>
>>> There is a template [1] which may be filled out to add support for a new
>>> language.  More generally simply defining a function named
>>> `org-babel-execute:foo' will cause babel to try to execute foo code
>>> blocks using that function.  See the template for existing
>>> `org-babel-execute:*' functions.
>>>
>>>>
>>>> Relatedly, is anyone working on adding Stata coverage to org-babel?
>>>>
>>>
>>> I'm not but who knows.  If you do add support for Stata please consider
>>> contributing it to Org-mode (see [2]).
>>
>> stata should be not to difficult to add, as ESS supports stata and I
>> would guess that most functions would be the same (or very similar)
>>
>> Cheers,
>>
>> Rainer
>>
>>>
>>> Best,
>>> Eric
>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Brendan
>>>
>>>
>>> Footnotes:
>>> [1]  http://orgmode.org/w/worg.git/blob/HEAD:/org-contrib/babel/ob-template.el
>>>
>>> [2]  http://orgmode.org/worg/org-contribute.html
>>
>> --
>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany)
>>
>> Centre of Excellence for Invasion Biology
>> Stellenbosch University
>> South Africa
>>
>> Tel :       +33 - (0)9 53 10 27 44
>> Cell:       +33 - (0)6 85 62 59 98
>> Fax :       +33 - (0)9 58 10 27 44
>>
>> Fax (D):    +49 - (0)3 21 21 25 22 44
>>
>> email:      Rainer@krugs.de
>>
>> Skype:      RMkrug
>>
>> PGP: 0x0F52F982

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-24 19:52     ` Ista Zahn
  2014-06-24 20:13       ` G. Jay Kerns
@ 2014-06-25  8:33       ` Bastien
  2014-06-25 13:44         ` Ista Zahn
  1 sibling, 1 reply; 18+ messages in thread
From: Bastien @ 2014-06-25  8:33 UTC (permalink / raw)
  To: Ista Zahn; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

Hi Ista,

Ista Zahn <istazahn@gmail.com> writes:

> The code is available at
> https://gist.github.com/izahn/5745dcf6dd07a6b05084

Looks good -- would you like to add it to the contrib/ directory
in Org's repository?

As for the original question, I think it would be a nice addition,
let's put it somewhere on our collective TODO list :)

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-25  8:33       ` Bastien
@ 2014-06-25 13:44         ` Ista Zahn
  2014-07-28 13:20           ` Bastien
  0 siblings, 1 reply; 18+ messages in thread
From: Ista Zahn @ 2014-06-25 13:44 UTC (permalink / raw)
  To: Bastien; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

Hi Bastien,

I don't know if this is ready for contrib yet (though I don't object
if you think it is). I'm not sure what quality standards exist for
contrib, but this is really quick and dirty; it would be nice to at
least implement graphics support. On the other hand its better than
nothing, so maybe it does make sense to add it to contrib.

Also I'm not sure what the development process is once things go in
contrib (sorry for my ignorance!). Does contrib live in the same code
repository as the rest of org, or are things in contrib developed
separately and pulled in later?

In short feel free to add it to contrib if you want, but be aware that
it is  in pretty rough shape.

Best,
Ista

On Wed, Jun 25, 2014 at 4:33 AM, Bastien <bzg@gnu.org> wrote:
> Hi Ista,
>
> Ista Zahn <istazahn@gmail.com> writes:
>
>> The code is available at
>> https://gist.github.com/izahn/5745dcf6dd07a6b05084
>
> Looks good -- would you like to add it to the contrib/ directory
> in Org's repository?
>
> As for the original question, I think it would be a nice addition,
> let's put it somewhere on our collective TODO list :)
>
> --
>  Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-06-25 13:44         ` Ista Zahn
@ 2014-07-28 13:20           ` Bastien
  2014-07-28 21:29             ` Ista Zahn
  0 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2014-07-28 13:20 UTC (permalink / raw)
  To: Ista Zahn; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

Hi Ista,

Ista Zahn <istazahn@gmail.com> writes:

> I don't know if this is ready for contrib yet (though I don't object
> if you think it is). I'm not sure what quality standards exist for
> contrib, but this is really quick and dirty; it would be nice to at
> least implement graphics support. On the other hand its better than
> nothing, so maybe it does make sense to add it to contrib.

Yes, it makes sense to add it to contrib, it will help others step up
and improve the code if needed.

> Also I'm not sure what the development process is once things go in
> contrib (sorry for my ignorance!). Does contrib live in the same code
> repository as the rest of org, or are things in contrib developed
> separately and pulled in later?

contrib/ lives in the same Git repository than the rest of Org (which
is arguably a problem).  So everything is developed at the same place.

Once you send me your public key, I'll grant you write access to the
repository and you can push commits.

> In short feel free to add it to contrib if you want, but be aware that
> it is  in pretty rough shape.

Please provide a separate commit on the list for this piece of code,
so that we can review it and commit it.  And if you want to get push
access, please send me your public key.

Thanks!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-28 13:20           ` Bastien
@ 2014-07-28 21:29             ` Ista Zahn
  2014-07-29 14:36               ` Bastien
  0 siblings, 1 reply; 18+ messages in thread
From: Ista Zahn @ 2014-07-28 21:29 UTC (permalink / raw)
  To: Bastien; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

[-- Attachment #1: Type: text/plain, Size: 2030 bytes --]

Hi all,

Please find code attached that implements stata support in org-babel.
The attached ob-stata.el is a modified version of ob-julia.el. It
currently supports evaluation of stata code from babel code blocks
with ':results output' (and this has been set as the default). Neither
':results value' nor ':results graphics' work. I suspect that
':results value' doen't make sense for stata, in which case all the
value-specific stuff should be removed. I would like to eventually get
':results graphics' working, but have not yet implemented it.

If there are no objections I would like to add this to contrib.

Best,
Ista

On Mon, Jul 28, 2014 at 9:20 AM, Bastien <bzg@gnu.org> wrote:
> Hi Ista,
>
> Ista Zahn <istazahn@gmail.com> writes:
>
>> I don't know if this is ready for contrib yet (though I don't object
>> if you think it is). I'm not sure what quality standards exist for
>> contrib, but this is really quick and dirty; it would be nice to at
>> least implement graphics support. On the other hand its better than
>> nothing, so maybe it does make sense to add it to contrib.
>
> Yes, it makes sense to add it to contrib, it will help others step up
> and improve the code if needed.
>
>> Also I'm not sure what the development process is once things go in
>> contrib (sorry for my ignorance!). Does contrib live in the same code
>> repository as the rest of org, or are things in contrib developed
>> separately and pulled in later?
>
> contrib/ lives in the same Git repository than the rest of Org (which
> is arguably a problem).  So everything is developed at the same place.
>
> Once you send me your public key, I'll grant you write access to the
> repository and you can push commits.
>
>> In short feel free to add it to contrib if you want, but be aware that
>> it is  in pretty rough shape.
>
> Please provide a separate commit on the list for this piece of code,
> so that we can review it and commit it.  And if you want to get push
> access, please send me your public key.
>
> Thanks!
>
> --
>  Bastien

[-- Attachment #2: ob-stata.el --]
[-- Type: text/x-emacs-lisp, Size: 12428 bytes --]

;;; ob-stata.el --- org-babel functions for stata code evaluation

;; Copyright (C) 2014 Ista Zahn
;; Author: Ista Zahn, based on ob-julia.el by G. Jay Kerns, and ob-R.el
;; by Eric Schulte and Dan Davison


;; This file is not part of GNU Emacs.

;; This program 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, or (at your option)
;; any later version.
;;
;; This program 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; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; The file provides Org-Babel support for evaluating stata code.
;; It is basically result of find-and-replace "stata" for "julia"
;; in ob-julia.el by G. Jay Kerns. Only ":results output" works: the
;; header args must include ":results output" (this is the default).
;; Note that I'm not sure ':results value' makes sense or is useful 
;; but I have left all the value-processing stuff inherited from 
;; ob-julia and ob-R. ':results graphics' would be nice, but I have
;; not tried to implement it.

;;; Requirements:

;; Stata and ESS are required.

;;; Code:
(require 'ob)
(eval-when-compile (require 'cl))

(declare-function orgtbl-to-csv "org-table" (table params))
(declare-function stata "ext:ess-stata" (&optional start-args))
(declare-function inferior-ess-send-input "ext:ess-inf" ())
(declare-function ess-make-buffer-current "ext:ess-inf" ())
(declare-function ess-eval-buffer "ext:ess-inf" (vis))
(declare-function org-number-sequence "org-compat" (from &optional to inc))
(declare-function org-remove-if-not "org" (predicate seq))

(defconst org-babel-header-args:stata
  '((width		 . :any)
    (horizontal		 . :any)
    (results             . ((file list vector table scalar verbatim)
			    (raw org html latex code pp wrap)
			    (replace silent append prepend)
                            ;; NOTE: not sure 'value' makes sense in stata
                            ;; we may want to remove it from the list
			    (output value graphics))))
  "stata-specific header arguments.")

(add-to-list 'org-babel-tangle-lang-exts '("stata" . "do"))

;; only ':results output' currently works, so make that the default
(defvar org-babel-default-header-args:stata '((:results . "output")))

(defcustom org-babel-stata-command inferior-STA-program-name
  "Name of command to use for executing stata code."
  :group 'org-babel
  :version "24.4"
  :package-version '(Org . "8.0")
  :type 'string)

(defvar ess-local-process-name) ; dynamically scoped
(defun org-babel-edit-prep:stata (info)
  (let ((session (cdr (assoc :session (nth 2 info)))))
    (when (and session (string-match "^\\*\\(.+?\\)\\*$" session))
      (save-match-data (org-babel-stata-initiate-session session nil)))))

(defun org-babel-expand-body:stata (body params &optional graphics-file)
  "Expand BODY according to PARAMS, return the expanded body."
  (let ((graphics-file
	 (or graphics-file (org-babel-stata-graphical-output-file params))))
    (mapconcat
     #'identity
     ((lambda (inside)
	(if graphics-file
            inside
	  inside))
      (append (org-babel-variable-assignments:stata params)
	      (list body))) "\n")))

(defun org-babel-execute:stata (body params)
  "Execute a block of stata code.
This function is called by `org-babel-execute-src-block'."
  (save-excursion
    (let* ((result-params (cdr (assoc :result-params params)))
	   (result-type (cdr (assoc :result-type params)))
           (session (org-babel-stata-initiate-session
		     (cdr (assoc :session params)) params))
	   (colnames-p (cdr (assoc :colnames params)))
	   (rownames-p (cdr (assoc :rownames params)))
	   (graphics-file (org-babel-stata-graphical-output-file params))
	   (full-body (org-babel-expand-body:stata body params graphics-file))
	   (result
	    (org-babel-stata-evaluate
	     session full-body result-type result-params
	     (or (equal "yes" colnames-p)
		 (org-babel-pick-name
		  (cdr (assoc :colname-names params)) colnames-p))
	     (or (equal "yes" rownames-p)
		 (org-babel-pick-name
		  (cdr (assoc :rowname-names params)) rownames-p)))))
      (if graphics-file nil result))))

(defun org-babel-prep-session:stata (session params)
  "Prepare SESSION according to the header arguments specified in PARAMS."
  (let* ((session (org-babel-stata-initiate-session session params))
	 (var-lines (org-babel-variable-assignments:stata params)))
    (org-babel-comint-in-buffer session
      (mapc (lambda (var)
              (end-of-line 1) (insert var) (comint-send-input nil t)
              (org-babel-comint-wait-for-output session)) var-lines))
    session))

(defun org-babel-load-session:stata (session body params)
  "Load BODY into SESSION."
  (save-window-excursion
    (let ((buffer (org-babel-prep-session:stata session params)))
      (with-current-buffer buffer
        (goto-char (process-mark (get-buffer-process (current-buffer))))
        (insert (org-babel-chomp body)))
      buffer)))

;; helper functions

(defun org-babel-variable-assignments:stata (params)
  "Return list of stata statements assigning the block's variables."
  (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
    (mapcar
     (lambda (pair)
       (org-babel-stata-assign-elisp
	(car pair) (cdr pair)
	(equal "yes" (cdr (assoc :colnames params)))
	(equal "yes" (cdr (assoc :rownames params)))))
     (mapcar
      (lambda (i)
	(cons (car (nth i vars))
	      (org-babel-reassemble-table
	       (cdr (nth i vars))
	       (cdr (nth i (cdr (assoc :colname-names params))))
	       (cdr (nth i (cdr (assoc :rowname-names params)))))))
      (org-number-sequence 0 (1- (length vars)))))))

(defun org-babel-stata-quote-csv-field (s)
  "Quote field S for export to stata."
  (if (stringp s)
      (concat "\"" (mapconcat 'identity (split-string s "\"") "\"\"") "\"")
    (format "%S" s)))

(defun org-babel-stata-assign-elisp (name value colnames-p rownames-p)
  "Construct stata code assigning the elisp VALUE to a variable named NAME."
  (if (listp value)
      (let ((max (apply #'max (mapcar #'length (org-remove-if-not
						#'sequencep value))))
	    (min (apply #'min (mapcar #'length (org-remove-if-not
						#'sequencep value))))
	    (transition-file (org-babel-temp-file "stata-import-")))
        ;; ensure VALUE has an orgtbl structure (depth of at least 2)
        (unless (listp (car value)) (setq value (list value)))
        (with-temp-file transition-file
          (insert
	   (orgtbl-to-csv value '(:fmt org-babel-stata-quote-csv-field))
	   "\n"))
	(let ((file (org-babel-process-file-name transition-file 'noquote))
	      (header (if (or (eq (nth 1 value) 'hline) colnames-p)
			  "TRUE" "FALSE"))
	      (row-names (if rownames-p "1" "NULL")))
	  (if (= max min)
	      (format "%s = insheet using \"%s\"" name file)
	    (format "%s = insheet using \"%s\""
		    name file))))
    (format "%s = %s" name (org-babel-stata-quote-csv-field value))))

(defvar ess-ask-for-ess-directory) ; dynamically scoped

(defun org-babel-stata-initiate-session (session params)
  "If there is not a current stata process then create one."
  (unless (string= session "none")
    (let ((session (or session "*stata*"))
	  (ess-ask-for-ess-directory
	   (and (and (boundp 'ess-ask-for-ess-directory) ess-ask-for-ess-directory)
		(not (cdr (assoc :dir params))))))
      (if (org-babel-comint-buffer-livep session)
	  session
	(save-window-excursion
	  (require 'ess) (stata)
	  (rename-buffer
	   (if (bufferp session)
	       (buffer-name session)
	     (if (stringp session)
		 session
	       (buffer-name))))
	  (current-buffer))))))

(defun org-babel-stata-associate-session (session)
  "Associate stata code buffer with a stata session.
Make SESSION be the inferior ESS process associated with the
current code buffer."
  (setq ess-local-process-name
	(process-name (get-buffer-process session)))
  (ess-make-buffer-current))

(defun org-babel-stata-graphical-output-file (params)
  "Name of file to which stata should send graphical output."
  (and (member "graphics" (cdr (assq :result-params params)))
       (cdr (assq :file params))))

(defvar org-babel-stata-eoe-indicator "display \"org_babel_stata_eoe\"")
(defvar org-babel-stata-eoe-output "org_babel_stata_eoe")

(defvar org-babel-stata-write-object-command "outsheet using \"%s\"")

;; The following was a very complicated write object command
;; The replacement needs to add error catching
;(defvar org-babel-stata-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")")

(defun org-babel-stata-evaluate
  (session body result-type result-params column-names-p row-names-p)
  "Evaluate stata code in BODY."
  (if session
      (org-babel-stata-evaluate-session
       session body result-type result-params column-names-p row-names-p)
    (org-babel-stata-evaluate-external-process
     body result-type result-params column-names-p row-names-p)))

(defun org-babel-stata-evaluate-external-process
  (body result-type result-params column-names-p row-names-p)
  "Evaluate BODY in external stata process.
If RESULT-TYPE equals 'output then return standard output as a
string.  If RESULT-TYPE equals 'value then return the value of the
last statement in BODY, as elisp."
  (case result-type
    (value
     (let ((tmp-file (org-babel-temp-file "stata-")))
       (org-babel-eval org-babel-stata-command
		       (format org-babel-stata-write-object-command
			       (org-babel-process-file-name tmp-file 'noquote)
			       (format "begin\n%s\nend" body)))
       (org-babel-stata-process-value-result
	(org-babel-result-cond result-params
	  (with-temp-buffer
	    (insert-file-contents tmp-file)
	    (buffer-string))
	  (org-babel-import-elisp-from-file tmp-file '(4)))
	column-names-p)))
    (output (org-babel-eval org-babel-stata-command body))))

(defun org-babel-stata-evaluate-session
  (session body result-type result-params column-names-p row-names-p)
  "Evaluate BODY in SESSION.
If RESULT-TYPE equals 'output then return standard output as a
string.  If RESULT-TYPE equals 'value then return the value of the
last statement in BODY, as elisp."
  (case result-type
    (value
     (with-temp-buffer
       (insert (org-babel-chomp body))
       (let ((ess-local-process-name
	      (process-name (get-buffer-process session)))
	     (ess-eval-visibly-p nil))
	 (ess-eval-buffer nil)))
     (let ((tmp-file (org-babel-temp-file "stata-")))
       (org-babel-comint-eval-invisibly-and-wait-for-file
	session tmp-file
	(format org-babel-stata-write-object-command
		(org-babel-process-file-name tmp-file 'noquote) "ans"))
       (org-babel-stata-process-value-result
	(org-babel-result-cond result-params
	  (with-temp-buffer
	    (insert-file-contents tmp-file)
	    (buffer-string))
	  (org-babel-import-elisp-from-file tmp-file '(4)))
	column-names-p)))
    (output
     (mapconcat
      #'org-babel-chomp
      (butlast
       (delq nil
	     (mapcar
	      (lambda (line) (when (> (length line) 0) line))
	      (mapcar
	       (lambda (line) ;; cleanup extra prompts left in output
		 (if (string-match
		      "^\\([ ]*[>+\\.][ ]?\\)+\\([[0-9]+\\|[ ]\\)" line)
		     (substring line (match-end 1))
		   line))
	       (org-babel-comint-with-output (session org-babel-stata-eoe-output)
		 (insert (mapconcat #'org-babel-chomp
				    (list body org-babel-stata-eoe-indicator)
				    "\n"))
		 (inferior-ess-send-input)))))) "\n"))))

(defun org-babel-stata-process-value-result (result column-names-p)
  "stata-specific processing of return value.
Insert hline if column names in output have been requested."
  (if column-names-p
      (cons (car result) (cons 'hline (cdr result)))
    result))

(provide 'ob-stata)

;;; ob-stata.el ends here

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-28 21:29             ` Ista Zahn
@ 2014-07-29 14:36               ` Bastien
  2014-07-30 16:47                 ` Ista Zahn
  0 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2014-07-29 14:36 UTC (permalink / raw)
  To: Ista Zahn; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

Hi Ista,

some comments on the code below.

Ista Zahn <istazahn@gmail.com> writes:

> ;; Copyright (C) 2014 Ista Zahn
> ;; Author: Ista Zahn, based on ob-julia.el by G. Jay Kerns, and ob-R.el
> ;; by Eric Schulte and Dan Davison

You need to reformat this -- see files with multiple authors in Org or
in Emacs.

> ;; This file is not part of GNU Emacs.

We plan to add this to Org's core, so this will be part of Emacs.

> ;; Stata and ESS are required.

Maybe add some links for the requirements.

> (defcustom org-babel-stata-command inferior-STA-program-name
>   "Name of command to use for executing stata code."
>   :group 'org-babel
>   :version "24.4"
>   :package-version '(Org . "8.0")
                              ^^^

This needs to be 8.3

> ;; The following was a very complicated write object command
> ;; The replacement needs to add error catching
> ;(defvar org-babel-stata-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")")

Maybe simply remove this, or make it more readable.

Thanks in advance for this contribution!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-29 14:36               ` Bastien
@ 2014-07-30 16:47                 ` Ista Zahn
  2014-07-30 17:06                   ` Nick Dokos
                                     ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Ista Zahn @ 2014-07-30 16:47 UTC (permalink / raw)
  To: Bastien; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

[-- Attachment #1: Type: text/plain, Size: 2000 bytes --]

I've made the suggested changes, with the exception of the "part of
Emacs bit",  as this should go in contrib not core.

I asked Bastien privately about getting access to the git repository,
but will ask here as well: When I run 'git clone
orgmode@orgmode.org:org-mode.git' I get a response saying

"Permission denied (publickey).
fatal: Could not read from remote repository"

Does that mean my key wasn't properly added, or did I miss some required set-up?

Best,
Ista

On Tue, Jul 29, 2014 at 10:36 AM, Bastien <bzg@gnu.org> wrote:
> Hi Ista,
>
> some comments on the code below.
>
> Ista Zahn <istazahn@gmail.com> writes:
>
>> ;; Copyright (C) 2014 Ista Zahn
>> ;; Author: Ista Zahn, based on ob-julia.el by G. Jay Kerns, and ob-R.el
>> ;; by Eric Schulte and Dan Davison
>
> You need to reformat this -- see files with multiple authors in Org or
> in Emacs.
>
>> ;; This file is not part of GNU Emacs.
>
> We plan to add this to Org's core, so this will be part of Emacs.
>
>> ;; Stata and ESS are required.
>
> Maybe add some links for the requirements.
>
>> (defcustom org-babel-stata-command inferior-STA-program-name
>>   "Name of command to use for executing stata code."
>>   :group 'org-babel
>>   :version "24.4"
>>   :package-version '(Org . "8.0")
>                               ^^^
>
> This needs to be 8.3
>
>> ;; The following was a very complicated write object command
>> ;; The replacement needs to add error catching
>> ;(defvar org-babel-stata-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")")
>
> Maybe simply remove this, or make it more readable.
>
> Thanks in advance for this contribution!
>
> --
>  Bastien

[-- Attachment #2: ob-stata.el --]
[-- Type: text/x-emacs-lisp, Size: 11983 bytes --]

;;; ob-stata.el --- org-babel functions for stata code evaluation

;; Copyright (C) 2014 Ista Zahn
;; Author: Ista Zahn istazahn@gmail.com
;;      G. Jay Kerns
;;      Eric Schulte
;;      Dan Davison


;; This file is not part of GNU Emacs.

;; This program 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, or (at your option)
;; any later version.
;;
;; This program 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; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; The file provides Org-Babel support for evaluating stata code.
;; It is basically result of find-and-replace "stata" for "julia"
;; in ob-julia.el by G. Jay Kerns. Only ":results output" works: the
;; header args must include ":results output" (this is the default).
;; Note that I'm not sure ':results value' makes sense or is useful 
;; but I have left all the value-processing stuff inherited from 
;; ob-julia and ob-R. ':results graphics' would be nice, but I have
;; not tried to implement it. 
;; --Ista, 07/30/2014

;;; Requirements:
;; Stata: http://stata.com
;; ESS: http://ess.r-project.org

;;; Code:
(require 'ob)
(eval-when-compile (require 'cl))

(declare-function orgtbl-to-csv "org-table" (table params))
(declare-function stata "ext:ess-stata" (&optional start-args))
(declare-function inferior-ess-send-input "ext:ess-inf" ())
(declare-function ess-make-buffer-current "ext:ess-inf" ())
(declare-function ess-eval-buffer "ext:ess-inf" (vis))
(declare-function org-number-sequence "org-compat" (from &optional to inc))
(declare-function org-remove-if-not "org" (predicate seq))

(defconst org-babel-header-args:stata
  '((width		 . :any)
    (horizontal		 . :any)
    (results             . ((file list vector table scalar verbatim)
			    (raw org html latex code pp wrap)
			    (replace silent append prepend)
                            ;; NOTE: not sure 'value' makes sense in stata
                            ;; we may want to remove it from the list
			    (output value graphics))))
  "stata-specific header arguments.")

(add-to-list 'org-babel-tangle-lang-exts '("stata" . "do"))

;; only ':results output' currently works, so make that the default
(defvar org-babel-default-header-args:stata '((:results . "output")))

(defcustom org-babel-stata-command inferior-STA-program-name
  "Name of command to use for executing stata code."
  :group 'org-babel
  :version "24.4"
  :package-version '(Org . "8.3")
  :type 'string)

(defvar ess-local-process-name) ; dynamically scoped
(defun org-babel-edit-prep:stata (info)
  (let ((session (cdr (assoc :session (nth 2 info)))))
    (when (and session (string-match "^\\*\\(.+?\\)\\*$" session))
      (save-match-data (org-babel-stata-initiate-session session nil)))))

(defun org-babel-expand-body:stata (body params &optional graphics-file)
  "Expand BODY according to PARAMS, return the expanded body."
  (let ((graphics-file
	 (or graphics-file (org-babel-stata-graphical-output-file params))))
    (mapconcat
     #'identity
     ((lambda (inside)
	(if graphics-file
            inside
	  inside))
      (append (org-babel-variable-assignments:stata params)
	      (list body))) "\n")))

(defun org-babel-execute:stata (body params)
  "Execute a block of stata code.
This function is called by `org-babel-execute-src-block'."
  (save-excursion
    (let* ((result-params (cdr (assoc :result-params params)))
	   (result-type (cdr (assoc :result-type params)))
           (session (org-babel-stata-initiate-session
		     (cdr (assoc :session params)) params))
	   (colnames-p (cdr (assoc :colnames params)))
	   (rownames-p (cdr (assoc :rownames params)))
	   (graphics-file (org-babel-stata-graphical-output-file params))
	   (full-body (org-babel-expand-body:stata body params graphics-file))
	   (result
	    (org-babel-stata-evaluate
	     session full-body result-type result-params
	     (or (equal "yes" colnames-p)
		 (org-babel-pick-name
		  (cdr (assoc :colname-names params)) colnames-p))
	     (or (equal "yes" rownames-p)
		 (org-babel-pick-name
		  (cdr (assoc :rowname-names params)) rownames-p)))))
      (if graphics-file nil result))))

(defun org-babel-prep-session:stata (session params)
  "Prepare SESSION according to the header arguments specified in PARAMS."
  (let* ((session (org-babel-stata-initiate-session session params))
	 (var-lines (org-babel-variable-assignments:stata params)))
    (org-babel-comint-in-buffer session
      (mapc (lambda (var)
              (end-of-line 1) (insert var) (comint-send-input nil t)
              (org-babel-comint-wait-for-output session)) var-lines))
    session))

(defun org-babel-load-session:stata (session body params)
  "Load BODY into SESSION."
  (save-window-excursion
    (let ((buffer (org-babel-prep-session:stata session params)))
      (with-current-buffer buffer
        (goto-char (process-mark (get-buffer-process (current-buffer))))
        (insert (org-babel-chomp body)))
      buffer)))

;; helper functions

(defun org-babel-variable-assignments:stata (params)
  "Return list of stata statements assigning the block's variables."
  (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
    (mapcar
     (lambda (pair)
       (org-babel-stata-assign-elisp
	(car pair) (cdr pair)
	(equal "yes" (cdr (assoc :colnames params)))
	(equal "yes" (cdr (assoc :rownames params)))))
     (mapcar
      (lambda (i)
	(cons (car (nth i vars))
	      (org-babel-reassemble-table
	       (cdr (nth i vars))
	       (cdr (nth i (cdr (assoc :colname-names params))))
	       (cdr (nth i (cdr (assoc :rowname-names params)))))))
      (org-number-sequence 0 (1- (length vars)))))))

(defun org-babel-stata-quote-csv-field (s)
  "Quote field S for export to stata."
  (if (stringp s)
      (concat "\"" (mapconcat 'identity (split-string s "\"") "\"\"") "\"")
    (format "%S" s)))

(defun org-babel-stata-assign-elisp (name value colnames-p rownames-p)
  "Construct stata code assigning the elisp VALUE to a variable named NAME."
  (if (listp value)
      (let ((max (apply #'max (mapcar #'length (org-remove-if-not
						#'sequencep value))))
	    (min (apply #'min (mapcar #'length (org-remove-if-not
						#'sequencep value))))
	    (transition-file (org-babel-temp-file "stata-import-")))
        ;; ensure VALUE has an orgtbl structure (depth of at least 2)
        (unless (listp (car value)) (setq value (list value)))
        (with-temp-file transition-file
          (insert
	   (orgtbl-to-csv value '(:fmt org-babel-stata-quote-csv-field))
	   "\n"))
	(let ((file (org-babel-process-file-name transition-file 'noquote))
	      (header (if (or (eq (nth 1 value) 'hline) colnames-p)
			  "TRUE" "FALSE"))
	      (row-names (if rownames-p "1" "NULL")))
	  (if (= max min)
	      (format "%s = insheet using \"%s\"" name file)
	    (format "%s = insheet using \"%s\""
		    name file))))
    (format "%s = %s" name (org-babel-stata-quote-csv-field value))))

(defvar ess-ask-for-ess-directory) ; dynamically scoped

(defun org-babel-stata-initiate-session (session params)
  "If there is not a current stata process then create one."
  (unless (string= session "none")
    (let ((session (or session "*stata*"))
	  (ess-ask-for-ess-directory
	   (and (and (boundp 'ess-ask-for-ess-directory) ess-ask-for-ess-directory)
		(not (cdr (assoc :dir params))))))
      (if (org-babel-comint-buffer-livep session)
	  session
	(save-window-excursion
	  (require 'ess) (stata)
	  (rename-buffer
	   (if (bufferp session)
	       (buffer-name session)
	     (if (stringp session)
		 session
	       (buffer-name))))
	  (current-buffer))))))

(defun org-babel-stata-associate-session (session)
  "Associate stata code buffer with a stata session.
Make SESSION be the inferior ESS process associated with the
current code buffer."
  (setq ess-local-process-name
	(process-name (get-buffer-process session)))
  (ess-make-buffer-current))

(defun org-babel-stata-graphical-output-file (params)
  "Name of file to which stata should send graphical output."
  (and (member "graphics" (cdr (assq :result-params params)))
       (cdr (assq :file params))))

(defvar org-babel-stata-eoe-indicator "display \"org_babel_stata_eoe\"")
(defvar org-babel-stata-eoe-output "org_babel_stata_eoe")

(defvar org-babel-stata-write-object-command "outsheet using \"%s\"")

(defun org-babel-stata-evaluate
  (session body result-type result-params column-names-p row-names-p)
  "Evaluate stata code in BODY."
  (if session
      (org-babel-stata-evaluate-session
       session body result-type result-params column-names-p row-names-p)
    (org-babel-stata-evaluate-external-process
     body result-type result-params column-names-p row-names-p)))

(defun org-babel-stata-evaluate-external-process
  (body result-type result-params column-names-p row-names-p)
  "Evaluate BODY in external stata process.
If RESULT-TYPE equals 'output then return standard output as a
string.  If RESULT-TYPE equals 'value then return the value of the
last statement in BODY, as elisp."
  (case result-type
    (value
     (let ((tmp-file (org-babel-temp-file "stata-")))
       (org-babel-eval org-babel-stata-command
		       (format org-babel-stata-write-object-command
			       (org-babel-process-file-name tmp-file 'noquote)
			       (format "begin\n%s\nend" body)))
       (org-babel-stata-process-value-result
	(org-babel-result-cond result-params
	  (with-temp-buffer
	    (insert-file-contents tmp-file)
	    (buffer-string))
	  (org-babel-import-elisp-from-file tmp-file '(4)))
	column-names-p)))
    (output (org-babel-eval org-babel-stata-command body))))

(defun org-babel-stata-evaluate-session
  (session body result-type result-params column-names-p row-names-p)
  "Evaluate BODY in SESSION.
If RESULT-TYPE equals 'output then return standard output as a
string.  If RESULT-TYPE equals 'value then return the value of the
last statement in BODY, as elisp."
  (case result-type
    (value
     (with-temp-buffer
       (insert (org-babel-chomp body))
       (let ((ess-local-process-name
	      (process-name (get-buffer-process session)))
	     (ess-eval-visibly-p nil))
	 (ess-eval-buffer nil)))
     (let ((tmp-file (org-babel-temp-file "stata-")))
       (org-babel-comint-eval-invisibly-and-wait-for-file
	session tmp-file
	(format org-babel-stata-write-object-command
		(org-babel-process-file-name tmp-file 'noquote) "ans"))
       (org-babel-stata-process-value-result
	(org-babel-result-cond result-params
	  (with-temp-buffer
	    (insert-file-contents tmp-file)
	    (buffer-string))
	  (org-babel-import-elisp-from-file tmp-file '(4)))
	column-names-p)))
    (output
     (mapconcat
      #'org-babel-chomp
      (butlast
       (delq nil
	     (mapcar
	      (lambda (line) (when (> (length line) 0) line))
	      (mapcar
	       (lambda (line) ;; cleanup extra prompts left in output
		 (if (string-match
		      "^\\([ ]*[>+\\.][ ]?\\)+\\([[0-9]+\\|[ ]\\)" line)
		     (substring line (match-end 1))
		   line))
	       (org-babel-comint-with-output (session org-babel-stata-eoe-output)
		 (insert (mapconcat #'org-babel-chomp
				    (list body org-babel-stata-eoe-indicator)
				    "\n"))
		 (inferior-ess-send-input)))))) "\n"))))

(defun org-babel-stata-process-value-result (result column-names-p)
  "stata-specific processing of return value.
Insert hline if column names in output have been requested."
  (if column-names-p
      (cons (car result) (cons 'hline (cdr result)))
    result))

(provide 'ob-stata)

;;; ob-stata.el ends here

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-30 16:47                 ` Ista Zahn
@ 2014-07-30 17:06                   ` Nick Dokos
  2014-07-30 17:16                   ` Achim Gratz
                                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Nick Dokos @ 2014-07-30 17:06 UTC (permalink / raw)
  To: emacs-orgmode

Ista Zahn <istazahn@gmail.com> writes:

> I asked Bastien privately about getting access to the git repository,
> but will ask here as well: When I run 'git clone
> orgmode@orgmode.org:org-mode.git' I get a response saying
>
> "Permission denied (publickey).
> fatal: Could not read from remote repository"
>
> Does that mean my key wasn't properly added, or did I miss some required set-up?
>

I don't think there is any set-up you need to do (and the command works
for me, so there does not seem to be anything wrong with the server);
I think you are right in suspecting that your key was not properly
added. Unfortunately, Bastien is going to be away for a while and I'm
not sure who has access in his absence.

Nick

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-30 16:47                 ` Ista Zahn
  2014-07-30 17:06                   ` Nick Dokos
@ 2014-07-30 17:16                   ` Achim Gratz
  2014-07-31  0:23                   ` Jay Kerns
                                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Achim Gratz @ 2014-07-30 17:16 UTC (permalink / raw)
  To: emacs-orgmode

Ista Zahn writes:
> I've made the suggested changes, with the exception of the "part of
> Emacs bit",  as this should go in contrib not core.
>
> I asked Bastien privately about getting access to the git repository,
> but will ask here as well: When I run 'git clone
> orgmode@orgmode.org:org-mode.git' I get a response saying

Unrelated to your problem: you should not use the SSH connection for
pulling.  Configure the orgmode repo to use the normal git for reading,
then configure (in your global user configuration) to use the SSH
connection just for pushing:

--8<---------------cut here---------------start------------->8---
[url "git+ssh:orgmode@orgmode.org:org-mode.git"]
        pushInsteadOf = git://orgmode.org/org-mode.git
--8<---------------cut here---------------end--------------->8---

> "Permission denied (publickey).
> fatal: Could not read from remote repository"
>
> Does that mean my key wasn't properly added, or did I miss some required set-up?

Most likely, but it could also be that you haven't entered the correct
passphrase or are using the wrong key.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-30 16:47                 ` Ista Zahn
  2014-07-30 17:06                   ` Nick Dokos
  2014-07-30 17:16                   ` Achim Gratz
@ 2014-07-31  0:23                   ` Jay Kerns
  2014-07-31 10:52                   ` Bastien
  2015-01-31 19:42                   ` Esa Palosaari
  4 siblings, 0 replies; 18+ messages in thread
From: Jay Kerns @ 2014-07-31  0:23 UTC (permalink / raw)
  To: Ista Zahn, Bastien; +Cc: emacs-orgmode, brendan.halpin, Eric Schulte

Dear Ista,

I don't know if Bastien has already responded to your private message
(if so, please disregard this), but for what it's worth, it looks like
you are doing everything right to me.  I am not an org-mode developer
so I can't speak with 100% certainty, but it looks like a permissions
issue on the org-mode.org side (read: your key hasn't been added just
quite yet) and nothing on your side.

Good luck, and best wishes.
Jay



On 07/30/14 12:47, Ista Zahn wrote:
> I've made the suggested changes, with the exception of the "part of
> Emacs bit",  as this should go in contrib not core.
> 
> I asked Bastien privately about getting access to the git repository,
> but will ask here as well: When I run 'git clone
> orgmode@orgmode.org:org-mode.git' I get a response saying
> 
> "Permission denied (publickey).
> fatal: Could not read from remote repository"
> 
> Does that mean my key wasn't properly added, or did I miss some required set-up?
> 
> Best,
> Ista
> 
> On Tue, Jul 29, 2014 at 10:36 AM, Bastien <bzg@gnu.org> wrote:
>> Hi Ista,
>>
>> some comments on the code below.
>>
>> Ista Zahn <istazahn@gmail.com> writes:
>>
>>> ;; Copyright (C) 2014 Ista Zahn
>>> ;; Author: Ista Zahn, based on ob-julia.el by G. Jay Kerns, and ob-R.el
>>> ;; by Eric Schulte and Dan Davison
>>
>> You need to reformat this -- see files with multiple authors in Org or
>> in Emacs.
>>
>>> ;; This file is not part of GNU Emacs.
>>
>> We plan to add this to Org's core, so this will be part of Emacs.
>>
>>> ;; Stata and ESS are required.
>>
>> Maybe add some links for the requirements.
>>
>>> (defcustom org-babel-stata-command inferior-STA-program-name
>>>   "Name of command to use for executing stata code."
>>>   :group 'org-babel
>>>   :version "24.4"
>>>   :package-version '(Org . "8.0")
>>                               ^^^
>>
>> This needs to be 8.3
>>
>>> ;; The following was a very complicated write object command
>>> ;; The replacement needs to add error catching
>>> ;(defvar org-babel-stata-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")")
>>
>> Maybe simply remove this, or make it more readable.
>>
>> Thanks in advance for this contribution!
>>
>> --
>>  Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-30 16:47                 ` Ista Zahn
                                     ` (2 preceding siblings ...)
  2014-07-31  0:23                   ` Jay Kerns
@ 2014-07-31 10:52                   ` Bastien
  2014-07-31 11:06                     ` Ista Zahn
  2015-01-31 19:42                   ` Esa Palosaari
  4 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2014-07-31 10:52 UTC (permalink / raw)
  To: Ista Zahn; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

Hi Ista,

Ista Zahn <istazahn@gmail.com> writes:

> I asked Bastien privately about getting access to the git repository,
> but will ask here as well: When I run 'git clone
> orgmode@orgmode.org:org-mode.git' I get a response saying
>
> "Permission denied (publickey).
> fatal: Could not read from remote repository"

This should be fixed now, let me know,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-31 10:52                   ` Bastien
@ 2014-07-31 11:06                     ` Ista Zahn
  0 siblings, 0 replies; 18+ messages in thread
From: Ista Zahn @ 2014-07-31 11:06 UTC (permalink / raw)
  To: Bastien; +Cc: G. Jay Kerns, emacs-orgmode, brendan.halpin, Eric Schulte

On Thu, Jul 31, 2014 at 6:52 AM, Bastien <bzg@gnu.org> wrote:
> Hi Ista,
>
> Ista Zahn <istazahn@gmail.com> writes:
>
>> I asked Bastien privately about getting access to the git repository,
>> but will ask here as well: When I run 'git clone
>> orgmode@orgmode.org:org-mode.git' I get a response saying
>>
>> "Permission denied (publickey).
>> fatal: Could not read from remote repository"
>
> This should be fixed now, let me know,

Yes working now, thank you!

>
> --
>  Bastien

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2014-07-30 16:47                 ` Ista Zahn
                                     ` (3 preceding siblings ...)
  2014-07-31 10:52                   ` Bastien
@ 2015-01-31 19:42                   ` Esa Palosaari
  2015-01-31 19:50                     ` Esa Palosaari
  4 siblings, 1 reply; 18+ messages in thread
From: Esa Palosaari @ 2015-01-31 19:42 UTC (permalink / raw)
  To: emacs-orgmode

Ista Zahn <istazahn <at> gmail.com> writes:

> 
> I've made the suggested changes, with the exception of the "part of
> Emacs bit",  as this should go in contrib not core.


Hi,

thank you for the code! It would be very cool to have this working. 
For some reason, the it returns only the command (for example 
".display 2 + 2" and the stata shell start screen) instead 
of the results ("4"). I use Stata-SE 12.1. Any guesses what might 
be causing this?

Thanks!
Esa 

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Enabling another language in org-babel
  2015-01-31 19:42                   ` Esa Palosaari
@ 2015-01-31 19:50                     ` Esa Palosaari
  0 siblings, 0 replies; 18+ messages in thread
From: Esa Palosaari @ 2015-01-31 19:50 UTC (permalink / raw)
  To: emacs-orgmode


> Hi,
> 
> thank you for the code! It would be very cool to have this working. 
> For some reason, the it returns only the command (for example 
> ".display 2 + 2" and the stata shell start screen) instead 
> of the results ("4"). I use Stata-SE 12.1. Any guesses what might 
> be causing this?
> 
> Thanks!
> Esa 
> 


Sorry about bothering you. It's to be working ok. I just didn't
send a return. Great to have this!

Esa

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2015-01-31 19:50 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-24  8:54 Enabling another language in org-babel Brendan Halpin
2014-06-24 11:02 ` Eric Schulte
2014-06-24 12:05   ` Rainer M Krug
2014-06-24 19:52     ` Ista Zahn
2014-06-24 20:13       ` G. Jay Kerns
2014-06-25  8:33       ` Bastien
2014-06-25 13:44         ` Ista Zahn
2014-07-28 13:20           ` Bastien
2014-07-28 21:29             ` Ista Zahn
2014-07-29 14:36               ` Bastien
2014-07-30 16:47                 ` Ista Zahn
2014-07-30 17:06                   ` Nick Dokos
2014-07-30 17:16                   ` Achim Gratz
2014-07-31  0:23                   ` Jay Kerns
2014-07-31 10:52                   ` Bastien
2014-07-31 11:06                     ` Ista Zahn
2015-01-31 19:42                   ` Esa Palosaari
2015-01-31 19:50                     ` Esa Palosaari

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).