play-code.el:把代码发送到在线的 playgrounds 执行

@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只能算是附属品

ensure-main-wrap 系列函数

重复的代码太多了 可以用宏精简代码

我有想过定义一个 define-main-wrapper 宏来生成函数,减少 if then 的部分,else 部分还是少不了,函数的个数也少不了。

不过我的打算是先上 travis,把测试用例给补完再说。

1 个赞

这个好,没有环境也能跑一些代码

给 org-babel 增加了一个 :playonline 关键字(纠结要不要把 play-code.el 名字也改过来):

这样就可以直接 C-c C-c 使用在线 playground 的运行代码了,例如:

#+BEGIN_SRC python :results output :playonline
print('hello, python')
#+END_SRC
6 个赞

这个赞,哈哈! 作为Org Mode Babel重度使用者,必须点赞。 UPDATE: 为啥不把ob-playonline放在play-code里面呢?分两个包多麻烦?

是一个非常简单的测试页面 只有一个输入框和一个输出框

觉得他应该不难实现吧

这个倒是很有意思。不知道页面是怎么接收输入的。

在用Firefox Dev Tools查看了下网络请求后,发现没有XHR请求,好像是JS直接自动监控输 入框渲染结果的。

1 个赞

即使代码是放在同一个仓库,如果将来上 Melpa,恐怕也必须拆分成两个包,因为里边函数的前缀不一样。

还有个问题是我对包的名字不太满意,所以暂时还没上 Melpa,目前安装需要手动 git clone 两个仓库确实有点不方便。

这个就是为了展示 MathJax 这个 JS 库专门做的页面吧,输入内容是随着 html 页面一起下来的,也无需提交到服务端渲染,直接在浏览器端就完成了。恐怕不能像目前已有的 playgound 一样实现。

不过或许可以通过 jsfidle 来间接实现。写个 elisp 函数生成 htmljs,这两部分内容用户无需关心,用户只需输入 LaTeX / MathML / AsciiMath,然后一起发送到 jsfidle(相当于一个用户可提交内容的 Demo),借用它上边的浏览器来生成图片。

1 个赞
  • 增加了对 https://www.mycompiler.io/ 的支持。三方的 playground 有时候不稳定,多支持几个有备无患。
  • 也改名了,改成 playonline。
  • 提交 mepla 审核。
2 个赞

希望能增加Org Mode Babel的集成。

已经有 ob-playonline 了呀,但是需要手动克隆安装,详见 #22 楼。

因为它本身还存在一些问题,我认为还达不到发布的条件。

  • 这个扩展主体部分是基于 org-babel-execute-src-block 函数直接修改的,跟 org 耦合太紧了,所以即便是后续 org 内部函数的变更都会受影响。

  • 当时是直接拷贝了 26.1 上的 org 代码,所以在低版本的 Emacs 上可能会有问题,但我希望跟主包 playonline.el 一致(支持到 24.4+)。

好的,感谢,我去看看。:)