emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* ob-csharp
@ 2015-09-07 17:23 thomas
  2015-09-07 19:28 ` ob-csharp Thomas S. Dye
  2016-06-06  6:56 ` ob-csharp thomas
  0 siblings, 2 replies; 9+ messages in thread
From: thomas @ 2015-09-07 17:23 UTC (permalink / raw)
  To: Org Mode

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

Hi,

could not find ob-csharp in org mode. I created one to make the pointy 
haired boss happy.

It's based on Eric's ob-java.el with some bits taken from other ob files.

It works for the simple examples following below.

Hope this is useful and I'm open for hints to improve the code.

- thomas



* ob-csharp Tests

** Hello World

#+BEGIN_SRC csharp
class HelloWorld {
   public static void Main()
   {
     System.Console.WriteLine("Hello World!");
   }
}
#+END_SRC

#+RESULTS:
: Hello World!



** Tables

#+BEGIN_SRC csharp
class Table {
   public static void Main()
   {
     for (char  c = 'a'; c < 'd'; c++)
       System.Console.Write("{0} ",c);
     System.Console.WriteLine();
     for (int i = 0; i < 3; i++)
       System.Console.Write("{0} ",i);
   }
}
#+END_SRC

#+RESULTS:
| a | b | c |
| 0 | 1 | 2 |

** Compiler flags and command line args

#+BEGIN_SRC csharp :cmpflag -warnaserror+
public class TestFlags {
   public static void Main()
   {
    int i;  // unused; throw error
    System.Console.WriteLine("You won't see this!");
   }
}
#+END_SRC

#+RESULTS:

#+BEGIN_SRC csharp :results verbatim  :cmdline --version
public class TestCmd {
   public static void Main()
   {
    System.Console.WriteLine("You won't see this!");
   }
}
#+END_SRC

#+RESULTS:
#+begin_example
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-10)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. 
www.mono-project.com
     TLS:           __thread
     SIGSEGV:       altstack
     Notifications: epoll
     Architecture:  amd64
     Disabled:      none
     Misc:          softdebug
     LLVM:          supported, not enabled.
     GC:            sgen
#+end_example



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

;;; ob-csharp.el --- org-babel functions for csharp evaluation

;; Copyright (C) 2011-2015 Free Software Foundation, Inc.

;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
;; Homepage: http://orgmode.org

;; 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:

;; Currently this only supports the external compilation and execution
;; of csharp code blocks (i.e., no session support).

;;; Code:
(require 'ob)
(require 'csharp-mode) ;; http://www.emacswiki.org/emacs/CSharpMode

(defvar org-babel-tangle-lang-exts)
(add-to-list 'org-babel-tangle-lang-exts '("cs" . "cs"))

(defcustom org-babel-csharp-command "mono"
  "Name of the csharp command.
May be either a command in the path, like mono
or an absolute path name, like /usr/local/bin/mono
parameters may be used, like mono -verbose"
  :group 'org-babel
  :version "24.3"
  :type 'string)

(defcustom org-babel-csharp-compiler "mcs"
  "Name of the csharp compiler.
May be either a command in the path, like mcs
or an absolute path name, like /usr/local/bin/mcs
parameters may be used, like mcs -warnaserror"
  :group 'org-babel
  :version "24.3"
  :type 'string) 


(defun org-babel-execute:csharp (body params)
  (let* ((full-body (org-babel-expand-body:generic body params))
	 (cmpflag (or (cdr (assoc :cmpflag params)) ""))
	 (cmdline (or (cdr (assoc :cmdline params)) ""))
	 (src-file (org-babel-temp-file "csharp-src-" ".cs"))
	 (exe-file (concat (file-name-sans-extension src-file)  ".exe"))
	 (compile 
	  (progn (with-temp-file  src-file (insert full-body))
		 (org-babel-eval 
		  (concat org-babel-csharp-compiler " " cmpflag " "  src-file) ""))))
    (let ((results (org-babel-eval (concat org-babel-csharp-command " " cmdline " " exe-file) "")))
      (org-babel-reassemble-table
       (org-babel-result-cond (cdr (assoc :result-params params))
	 (org-babel-read results)
         (let ((tmp-file (org-babel-temp-file "c-")))
           (with-temp-file tmp-file (insert results))
           (org-babel-import-elisp-from-file tmp-file)))
       (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:csharp (session params)
  "Return an error because csharp does not support sessions."
  (error "csharp does not support sessions"))


(provide 'ob-csharp)



;;; ob-csharp.el ends here

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

* Re: ob-csharp
  2015-09-07 17:23 ob-csharp thomas
@ 2015-09-07 19:28 ` Thomas S. Dye
  2015-09-07 20:10   ` ob-csharp Grant Rettke
  2016-06-06  6:56 ` ob-csharp thomas
  1 sibling, 1 reply; 9+ messages in thread
From: Thomas S. Dye @ 2015-09-07 19:28 UTC (permalink / raw)
  To: thomas; +Cc: Org Mode

Aloha thomas,

thomas <thomas@friendlyvillagers.com> writes:

> Hi,
>
> could not find ob-csharp in org mode. I created one to make the pointy 
> haired boss happy.
>
> It's based on Eric's ob-java.el with some bits taken from other ob files.
>
> It works for the simple examples following below.
>
> Hope this is useful and I'm open for hints to improve the code.
>
> - thomas

Thanks for your contribution.  I hope the pointy haired boss is happy :)

Please give some thought to exactly how you'd like to contribute
ob-csharp.  See http://orgmode.org/worg/org-contribute.html

It can live in core, contrib, or as an emacs package.

I'm not sure who makes decisions about Babel code these days, but
someone will step up when you choose your path.

All the best,
Tom

-- 
Thomas S. Dye
http://www.tsdye.com

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

* Re: ob-csharp
  2015-09-07 19:28 ` ob-csharp Thomas S. Dye
@ 2015-09-07 20:10   ` Grant Rettke
  2015-09-07 22:44     ` ob-csharp Rüdiger Sonderfeld
  0 siblings, 1 reply; 9+ messages in thread
From: Grant Rettke @ 2015-09-07 20:10 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: Org Mode, thomas

On Mon, Sep 7, 2015 at 2:28 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
> It can live in core, contrib, or as an emacs package.

When it lives in core, it is available to everyone who downloads
Emacs. That is valuable because some users never install a single
package.

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

* Re: ob-csharp
  2015-09-07 20:10   ` ob-csharp Grant Rettke
@ 2015-09-07 22:44     ` Rüdiger Sonderfeld
  2015-09-08  7:36       ` ob-csharp thomas
  0 siblings, 1 reply; 9+ messages in thread
From: Rüdiger Sonderfeld @ 2015-09-07 22:44 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: thomas, Grant Rettke

On Monday 07 September 2015 15:10:59 Grant Rettke wrote:
> On Mon, Sep 7, 2015 at 2:28 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
> > It can live in core, contrib, or as an emacs package.
> 
> When it lives in core, it is available to everyone who downloads
> Emacs. That is valuable because some users never install a single
> package.

But it requires csharp-mode, which is not part of GNU Emacs.

Regards,

Rüdiger

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

* Re: ob-csharp
  2015-09-07 22:44     ` ob-csharp Rüdiger Sonderfeld
@ 2015-09-08  7:36       ` thomas
  2015-09-08 10:05         ` ob-csharp thomas
  2015-09-08 15:51         ` ob-csharp Nicolas Goaziou
  0 siblings, 2 replies; 9+ messages in thread
From: thomas @ 2015-09-08  7:36 UTC (permalink / raw)
  To: Org Mode

Thanks for the quick replies.

I'd really like to contribute to core, if that's possible (practically, 
I did nothing though; I just stripped Eric's ob-java and changed a few 
lines).

As Rüdiger pointed out csharp-mode is not part of Emacs.
But I'm not sure if csharp-mode is really necessary (besides syntax 
highlighting in the org buffer).

We might leave it out?


- thomas





On 08.09.2015 00:44, Rüdiger Sonderfeld wrote:
> On Monday 07 September 2015 15:10:59 Grant Rettke wrote:
>> On Mon, Sep 7, 2015 at 2:28 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
>>> It can live in core, contrib, or as an emacs package.
>> When it lives in core, it is available to everyone who downloads
>> Emacs. That is valuable because some users never install a single
>> package.
> But it requires csharp-mode, which is not part of GNU Emacs.
>
> Regards,
>
> Rüdiger
>

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

* Re: ob-csharp
  2015-09-08  7:36       ` ob-csharp thomas
@ 2015-09-08 10:05         ` thomas
  2015-09-08 15:51         ` ob-csharp Nicolas Goaziou
  1 sibling, 0 replies; 9+ messages in thread
From: thomas @ 2015-09-08 10:05 UTC (permalink / raw)
  To: emacs-orgmode

well allright. I did some tests and think csharp-mode is not necessary. 
So I guess it would be OK to leave it out. Can anybody confirm?

- thomas


On 08.09.2015 09:36, thomas wrote:
> Thanks for the quick replies.
>
> I'd really like to contribute to core, if that's possible 
> (practically, I did nothing though; I just stripped Eric's ob-java and 
> changed a few lines).
>
> As Rüdiger pointed out csharp-mode is not part of Emacs.
> But I'm not sure if csharp-mode is really necessary (besides syntax 
> highlighting in the org buffer).
>
> We might leave it out?
>
>
> - thomas
>
>
>
>
>
> On 08.09.2015 00:44, Rüdiger Sonderfeld wrote:
>> On Monday 07 September 2015 15:10:59 Grant Rettke wrote:
>>> On Mon, Sep 7, 2015 at 2:28 PM, Thomas S. Dye <tsd@tsdye.com> wrote:
>>>> It can live in core, contrib, or as an emacs package.
>>> When it lives in core, it is available to everyone who downloads
>>> Emacs. That is valuable because some users never install a single
>>> package.
>> But it requires csharp-mode, which is not part of GNU Emacs.
>>
>> Regards,
>>
>> Rüdiger
>>
>
>

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

* Re: ob-csharp
  2015-09-08  7:36       ` ob-csharp thomas
  2015-09-08 10:05         ` ob-csharp thomas
@ 2015-09-08 15:51         ` Nicolas Goaziou
  1 sibling, 0 replies; 9+ messages in thread
From: Nicolas Goaziou @ 2015-09-08 15:51 UTC (permalink / raw)
  To: thomas; +Cc: Org Mode

Hello,

thomas <thomas@friendlyvillagers.com> writes:

> I'd really like to contribute to core, if that's possible
> (practically, I did nothing though; I just stripped Eric's ob-java and
> changed a few lines).

Thank you for the library. You can contribute to core as long as you
have signed FSF papers.

Regards,

-- 
Nicolas Goaziou

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

* Re: ob-csharp
  2015-09-07 17:23 ob-csharp thomas
  2015-09-07 19:28 ` ob-csharp Thomas S. Dye
@ 2016-06-06  6:56 ` thomas
  2016-06-06  7:40   ` ob-csharp Rasmus
  1 sibling, 1 reply; 9+ messages in thread
From: thomas @ 2016-06-06  6:56 UTC (permalink / raw)
  To: Org Mode

Hi,

I'm sorry, I could not find the time yet to figure out how to 
"officially" contribute to Emacs (the papers are signed, though).

In the meantime you can find ob-csharp on github:

https://github.com/thomas-villagers/ob-csharp

- thomas



On 07.09.2015 19:23, thomas wrote:
> Hi,
>
> could not find ob-csharp in org mode. I created one to make the pointy 
> haired boss happy.
>
> It's based on Eric's ob-java.el with some bits taken from other ob files.
>
> It works for the simple examples following below.
>
> Hope this is useful and I'm open for hints to improve the code.
>
> - thomas
>
>
>
> * ob-csharp Tests
>
> ** Hello World
>
> #+BEGIN_SRC csharp
> class HelloWorld {
>   public static void Main()
>   {
>     System.Console.WriteLine("Hello World!");
>   }
> }
> #+END_SRC
>
> #+RESULTS:
> : Hello World!
>
>
>
> ** Tables
>
> #+BEGIN_SRC csharp
> class Table {
>   public static void Main()
>   {
>     for (char  c = 'a'; c < 'd'; c++)
>       System.Console.Write("{0} ",c);
>     System.Console.WriteLine();
>     for (int i = 0; i < 3; i++)
>       System.Console.Write("{0} ",i);
>   }
> }
> #+END_SRC
>
> #+RESULTS:
> | a | b | c |
> | 0 | 1 | 2 |
>
> ** Compiler flags and command line args
>
> #+BEGIN_SRC csharp :cmpflag -warnaserror+
> public class TestFlags {
>   public static void Main()
>   {
>    int i;  // unused; throw error
>    System.Console.WriteLine("You won't see this!");
>   }
> }
> #+END_SRC
>
> #+RESULTS:
>
> #+BEGIN_SRC csharp :results verbatim  :cmdline --version
> public class TestCmd {
>   public static void Main()
>   {
>    System.Console.WriteLine("You won't see this!");
>   }
> }
> #+END_SRC
>
> #+RESULTS:
> #+begin_example
> Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-10)
> Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. 
> www.mono-project.com
>     TLS:           __thread
>     SIGSEGV:       altstack
>     Notifications: epoll
>     Architecture:  amd64
>     Disabled:      none
>     Misc:          softdebug
>     LLVM:          supported, not enabled.
>     GC:            sgen
> #+end_example
>
>

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

* Re: ob-csharp
  2016-06-06  6:56 ` ob-csharp thomas
@ 2016-06-06  7:40   ` Rasmus
  0 siblings, 0 replies; 9+ messages in thread
From: Rasmus @ 2016-06-06  7:40 UTC (permalink / raw)
  To: emacs-orgmode

thomas <thomas@friendlyvillagers.com> writes:

> Hi,
>
> I'm sorry, I could not find the time yet to figure out how to
> "officially" contribute to Emacs (the papers are signed, though).

See here:

    http://orgmode.org/worg/org-contribute.html

-- 
Tack, ni svenska vakttorn. Med plutonium tvingar vi dansken på knä!

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

end of thread, other threads:[~2016-06-06  7:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-07 17:23 ob-csharp thomas
2015-09-07 19:28 ` ob-csharp Thomas S. Dye
2015-09-07 20:10   ` ob-csharp Grant Rettke
2015-09-07 22:44     ` ob-csharp Rüdiger Sonderfeld
2015-09-08  7:36       ` ob-csharp thomas
2015-09-08 10:05         ` ob-csharp thomas
2015-09-08 15:51         ` ob-csharp Nicolas Goaziou
2016-06-06  6:56 ` ob-csharp thomas
2016-06-06  7:40   ` ob-csharp Rasmus

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).