想到一个点子,用 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))
15 个赞
第一个使用 EMACScript 的网站上线了:M-x eww EMACScript 测试
9 个赞
有意思的想法,哈哈哈,可以用在Org Mode博客导出后,嵌入这个,这样就只有Emacs用户能看到了。啊哈哈哈
cireu
4
Brendan Eich看了直呼内行
这样,可以直接用raw org file来做博客了。
ECMAScript,不行!
Emacscript,行!
我们Emacs真是太厉害啦!
马上渲染到你编辑器里!
直接的read eval显然不太适合,应该用一个屏蔽IO交互的沙盒环境来eval
比如,用unsafep
来判断表达式的纯度
(unsafep '(setq global-var 1))
;; => (global-variable global-var)
(unsafep '(shell-command "touch joke"))
;; => (function shell-command)
3 个赞
牛牛啊。还可以有个Org浏览器,自动下载URL下的Org文件浏览,哈哈。
1 个赞
之前我也提出过啊, 能不能用 Common Lisp 来开发 App, 取代 Flutter 使用的 Dart
从 Flutter 代码也可以看出层层 嵌套是多么普遍的事情了啊
它们的右括号要一个占一行, 现在是觉得 Lisp 的尾部集中在一行更美观了…
wsug
11
之前也尝试过使用eww来部分取代浏览器的功能,因为想使用emacs的搜索功能来搜索网页的内容,这个功能算是做好了。然而在eww里编辑文本这个却怎么也搞不好,要知道emacs用着最舒服的地方就是文本编辑。做不好显然是不行的。
而emacs的文本编辑功能又以org-mode是最好用的。实现emacs部分代替浏览器,EMACScript代替JavaScript,其实可以直接在org-mode里面进行。
org-mode就是带有几乎完美编辑功能的浏览器,一个org文件就相当于一个网页,org里面运行EMACScript在方便不过,不在需要javascript
web网站服务器不需要在返回html,直接返回将elisp脚本嵌入其中的org文件的内容即可
另见这里: 以org-mode为前端的内容管理系统,像使用网页应用一样使用org-mode - #2,来自 wsug