使用 EMACScript 代替 JavaScript

想到一个点子,用 Emacs 代替浏览器,用 Emacs API 代替 Web API,用 Emacs Lisp 代替 JavaScript:

例子:

<!DOCTYPE html>
<html lang="zh-Hans">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>EMACScript 测试</title>
  </head>
  <body>
    <script type="text/emacscript">
      (insert "当前时间: " (current-time-string))
    </script>
  </body>
</html>

浏览器支持,目前只有 EWW 支持:

(defun EMACScript (script)
  (when (equal (dom-attr script 'type) "text/emacscript")
    (eval (read (dom-text script)) 'lexical)))

(add-to-list 'shr-external-rendering-functions
             '(script . EMACScript))
14赞

第一个使用 EMACScript 的网站上线了:M-x eww https://xuchunyang.github.io/EMACScript/index.html

9赞

有意思的想法,哈哈哈,可以用在Org Mode博客导出后,嵌入这个,这样就只有Emacs用户能看到了。啊哈哈哈

Brendan Eich看了直呼内行 :rofl:

这样,可以直接用raw org file来做博客了。


ECMAScript,不行!

Emacscript,行!

我们Emacs真是太厉害啦!

马上渲染到你编辑器里!

:dog:


直接的read eval显然不太适合,应该用一个屏蔽IO交互的沙盒环境来eval

比如,用unsafep来判断表达式的纯度

(unsafep '(setq global-var 1))
;; => (global-variable global-var)

(unsafep '(shell-command "touch joke"))
;; => (function shell-command)
3赞

哇!好耶!紫薯布丁

1赞

牛牛啊。还可以有个Org浏览器,自动下载URL下的Org文件浏览,哈哈。

1赞

第一眼看成 ECMAScript,tql

我已经分不清了

这个牛逼,啥时候能出成品?

之前我也提出过啊, 能不能用 Common Lisp 来开发 App, 取代 Flutter 使用的 Dart
从 Flutter 代码也可以看出层层 嵌套是多么普遍的事情了啊
它们的右括号要一个占一行, 现在是觉得 Lisp 的尾部集中在一行更美观了…