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