個人的には長くEmacs派です。最近ではVisual Studio Codeに移ってしまいましたが、キーバインドは今なおEmacs風になっています。Common Lispは書く機会があまりないので、すぐ書き方を忘れてしまうのが難点です。 そんな中、Emacs進化の新しいアプローチを探っているのがemacs-ngです。Emacsの中でJavaScript/TypeScriptを利用可能にします。

emacs-ngの使い方

例えば次のようなListファイルが使えるようになります。eval-js-fileでJavaScriptファイルを実行します。

$ cat js/bootstrap.el 
(defun handler (e) (print e))
(setenv "DENO_DIR" "test/js/")
(js-initialize :js-error-handler 'handler)
(eval-js-file "./js/main.js")
;; Since we are in batch
;; manually tick the event
;; loop
(run-with-timer t 0.1 'js-tick-event-loop 'handler)
;; Since we are running async tests, we want to keep the event loop
;; running to allow them to finish. We will manually
;; exit the program upon completion
(sleep-for 999999)

emacs-ngはTypeScriptやスレッド、Async/Awaitなどが実行できます。Denoのように外部ライブラリを取り込んだり、データベースを使うこともできます。本体は従来のEmacsのままですが、その中で実用レベルでJavaScriptを実行できるのが面白いです。

emacs-ngはEmacs List製のオープンソース・ソフトウェア(GPL v3)です。

emacs-ng/emacs-ng: A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender.