与gnu emacs的python接口。

python-emacs的Python项目详细描述


python emacs

Build StatusDocumentation Status

与gnu emacs的python接口。

安装

使用pip安装:

pip install python-emacs

或者直接从存储库:

git clone https://github.com/jlumpe/python-emacs
cd python-emacs
python setup.py install

用法

使用Emacs.batch()Emacs.client()创建到emacs的接口。第一个使用每个命令以批处理模式运行一个新的emacs进程,第二个使用emacsclient与已经运行的进程通信。

>>> from emacs import Emacs
>>> emacs = Emacs.batch(['-q'])

执行一些elisp代码并获得输出:

>>> src = '(princ (format "One plus two is %d" (+ 1 2)))'
>>> emacs.eval(src)
'One plus two is 3'

将表达式的结果作为python值:

>>> emacs.getresult('(format "One plus two is %d" (+ 1 2))')
'One plus two is 3'

>>> emacs.getresult('(cl-loop for i in \'(1 2 3 4 5) collect (* i i))')
[1, 4, 9, 16, 25]

用python编写elisp程序

>>> import emacs.elisp as el

>>> src = el.to_elisp((el.Symbol('format'), 'One plus two is %d', (el.Symbol('+'), 1, 2)))
>>> src
<el (format "One plus two is %d" (+ 1 2))>

>>> emacs.getresult(src)
'One plus two is 3'

使用糟糕的DSL:

>>> from emacs.elisp import E

>>> prog = E.dolist((E.i, E.number_sequence(1, 20)),
      E.princ(E.i),
      E.when(E['='](E['%'](E.i, 3), 0), E.princ("fizz")),
      E.when(E['='](E['%'](E.i, 5), 0), E.princ("buzz")),
      E.princ('\n'),
    )
>>> prog
<el (dolist (i (number-sequence 1 20)) (princ i) (when (= (% i 3) 0) (princ "fizz")) (when (= (% i 5) 0) (princ "buzz")) (princ "\n"))>

>>> print(emacs.eval(prog))
1
2
3fizz
4
5buzz
6fizz
7
8
9fizz
10buzz
11
12fizz
13
14
15fizzbuzz
16
17
18fizz
19
20buzz

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
分别使用椭圆曲线密码对文本消息进行java加密和解密   java如何将JTable滚动到特定值?   java JSP登录注销简单web应用程序,使用bean在数据库中存在数据时返回false   java无法编译,未设置类路径,包不存在?   java为什么这一变量会受到影响?   集合为什么Java在Map中没有putIfAbsent(key,supplier)方法?   安卓在Java中计算仿真时间   java初始化方法在主类中的指定方法之前运行   java如何在hadoop的reduce中将genericWritable恢复为用户定义的可写?   如何使用java替换pdf中的文本   参数不适用于ASP服务器的java HttpPost   创建对象时的java NullPointerException   Java JPanel中的swing图形有问题,但它在一个框架中工作   java Android Studio在硬件设备上运行时出错   google api类路径的java空指针异常   java如何将InputStream转换为DataHandler?   java在多个Jetty服务器之间共享连接池