lurdan / ob-typescript

Emacs org-mode babel support for typescript
GNU General Public License v3.0
31 stars 12 forks source link

This org-mode babel extension enables you to execute typescript code blocks.

** Install

*** Requirement You need to install node.js and typescript to use this extension.

*** MELPA With setting up [[http://melpa.org][MELPA]], use =M-x package-install ob-typescript= .

*** Manually Add ob-typescript.el to your =load-path= and require.

+BEGIN_SRC emacs-lisp

(add-to-list 'load-path "/path/to/ob-typescript.el") (require 'ob-typescript)

+END_SRC

** Configure

+BEGIN_SRC emacs-lisp

(org-babel-do-load-languages 'org-babel-load-languages '((typescript . t) ))

+END_SRC

The default command used to run the typescript compiler is defined in [[help:org-babel-command:typescript][org-babel-command:typescript]]. You may configure this to do things like use a sandboxed version of the typescript compiler without having to install it globally

+begin_src emacs-lisp

(setq org-babel-command:typescript "npx -p typescript -- tsc")

+end_src

** Examples

*** Execute with node.js

+BEGIN_SRC typescript :results output :var x="foo" :var y='("bar" "baz")

module Greeting { export class Hello { constructor(private text : string) { } say() :void{ console.log(${this.text}, ${x}, ${y}); } } }

var hello : Greeting.Hello = new Greeting.Hello("Hello, World!"); hello.say();

+END_src

+RESULTS:

: Hello, World!, foo, bar,baz

*** Transpile

You can see transpile results by specifying ":wrap src js" header argument.

+BEGIN_SRC typescript :wrap "src js :results output"

module Greeting { export class Hello { constructor(private text : string) { } say() :void{ console.log(this.text); } } }

var hello : Greeting.Hello = new Greeting.Hello("Hello, World!"); hello.say();

+END_SRC

+RESULTS:

+begin_src js :results output

var Greeting; (function (Greeting) { var Hello = /* @class / (function () { function Hello(text) { this.text = text; } Hello.prototype.say = function () { console.log(this.text); }; return Hello; }()); Greeting.Hello = Hello; })(Greeting || (Greeting = {})); var hello = new Greeting.Hello("Hello, World!"); hello.say();

+end_src