当本地不具备环境或本地电脑太慢(比如我的),可利用在线的 playgrounds 来验证一些简单的代码。
通常只需 M-x play-code
调用即可,只有当无法断定语言版本(例如py2 / py3)的时候,需要在弹出的列表中进行选择。
play-code
函数可作用于:
- region
- buffer
- block (或 block 中的 region ) ;; require org-mode / markdown
目前实现了向 rextester.com(优先)和 labstack.com 两个后端发送代码,用户可通过修改 play-code-ground-alist
变量来调整优先级(即先后顺序)。
wikipedia#Comparison_of_online_source_code_playgrounds 有整理一个各种 playground 对比的表格,其中大部分我都不了解。
还有哪些靠谱并且没太多限制(例如无需注册、允许匿名提交)的 playground 欢迎推荐。
另,对于 https://jsfiddle.net 之类的目前还没什么思路。一是要考虑如何组织本地代码(js/css/html);二是如何展示返回结果。如果太复杂了这个包就失去意义了,我的初衷是:直接把代码片段/block 发送到远程执行,无需在代码中增加帮助识别的标记之类的,因为 markdown / orgmode 本身已经具备了,加了影响阅读。
APPEND:
给 org-babel 增加了一个 :playonline
关键字,详见 #22 楼。
15 个赞
加了一行代码 可以在python-mode下面用了
加了一行什么?原本不是就可以在 python-mode 下用吗?
试了下 Go 的 Hello World 提示
Compiler args must contain ‘-o a.out’
换用 play-code-send-to-labstack
没这个问题。
https://code.labstack.com 的 API 文档在哪?Google https://code.labstack.com/api/v1/run 没发现。
我也没看到文档。
这个错误是 rextester 返回的,它竟然需要提交额外的参数😅,我先前试过 js/python/swift/rust… 就是没试 go。
可以暂时先把 labstack 放在优先位置:
(setq play-code-ground-alist
'((play-code-labstack-languages . play-code-send-to-labstack)
(play-code-rextester-languages . play-code-send-to-rextester)))
另外,C 类的代码需要包裹在 main 函数:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello from Go!")
}
稍后我会加上自动包裹 mian 的功能。
替换了
(_ (error "Don't know how to detect the block, please use `play-code-region' instead"))
那你的代码中用到的 https://code.labstack.com/api/v1/run 是从何得知的?
用 Chrome Developer Tools 看来的。
1 个赞
你是在执行 markdown / org-mode 代码块的时候遇到这个问题?
怪不到 Google 不到 https://code.labstack.com/api/v1/run
,而 GitHub 只有一个搜索结果(就是你写的)。
@xuchunyang
增加一个 play-code-rextester-compiler-args
来存放额外的编译参数,目前只有 go 的:
https://github.com/twlz0ne/play-code.el/blob/master/play-code.el#L127-L128
还有哪些语言需要参数我没有一一去核对(应该是大部分都不需要),等出错了再来添加吧。
我觉得 没有必要区分region和block
在.py文件中发送region的意义不大 因为两次region之间没有联系
C GCC 也有同样问题,compile c gcc online 用的是
-Wall -std=gnu99 -O2 -o a.out source_file.c
估计哪些需要编译的语言会需要
不完全是,目前发现 c/cpp/d/go/haskell/objc 需要编译参数(已提交 commit:603551e),但 cl/ocaml/rust/swift… 等其它却又不需要。
把 3 个方法合并了,现在只提供一个 play-code
。
对于https://jsfiddle.net
只能是通过给浏览器写个插件 让他能接收emacs传来的数据 并把数据变成浏览器内的要编辑的内容
输出的内容还得靠浏览器显示 emacs只能算是附属品
我有想过定义一个 define-main-wrapper
宏来生成函数,减少 if then
的部分,else
部分还是少不了,函数的个数也少不了。
不过我的打算是先上 travis,把测试用例给补完再说。
1 个赞