概述
web浏览器的编辑框通过emacs来编辑. firefox通过 It’s All Text! 插件实现, chrome 通过 Edit with Emacs实现.
firefox
安装使用步骤
- 下载安装 firefox 插件 It's All Text
- 设置 It's All Text 参数,指定快捷键,扩展名,运行程序.
- 生成italltext.py脚本,修正 emacs 的 HOME 路径重新指向问题:
firefox 插件italltext可以将浏览器的text与外部编辑器关联起来,但是italltext插件保存的文件位于系统的HOME目录
"C:\Documents and Settings\Administrator\Application Data\
下的
Mozilla\Firefox\Profiles\bqyiv0kx.default\itsalltext\localhost.2r362x1j2s.txt"
而 emacs 在处理 HOME 目录时,如果在init.el或者环境变量中设置了 HOME ,在传入文件名参数给 emacsclientw 时,会自动将系统的 HOME 目录改为 emacs 设置的目录,导致文件修改失败,本脚
本就是利用 junction 创建一个目录的软连接(c:\winhome),然后 italltext 修改传给 emacs 的文件名参数,再调用 runclientw
import sys import subprocess def main(): # C:\Users\Administrator\AppData\Roaming # C:\Documents and Settings\Administrator\Application # Mozilla\Firefox\Profiles\bqyiv0kx.default\itsalltext\localhost.1e1u2p2c39.wiki file_path = r"c:\winhome" + sys.argv[1][38:] print file_path cmd = r'c:/emacs/curversion/bin/emacsclientw.exe -n -f "C:/emacs/config/.emacs.d/server/server" -a "c:/emacs/curversion/bin/runemacs.exe" %s' % (file_path) subprocess.call(cmd) if __name__ == '__main__': main()
- 创建ema-firefox.bat 批处理脚本,以调用italltext.py
@echo off set HOME=C:/cygwin/home/Administrator python C:\emacs\bin\italltext.py %*
- 设置italltext插件,将编辑器关联到ema-firefox.bat,同时增加*.wiki到保存文件的第一行,使得缺省文件为wiki,设置快捷键为M-c
- 创建ema-firefox.bat 批处理脚本,以调用italltext.py
遗留问题: 通过 bat 启用 python ,再通过 python 启动 emacs ,感觉有点太绕,不过我对 bat 操作不熟,权且如此吧.
- 生成italltext.py脚本,修正 emacs 的 HOME 路径重新指向问题:
chrome
参考:
- Chrome Edit With Emacs
- chrome插件 edit-with-emacs-for-chrome
- 源代码: github-emacs-chrome
- wiki: Edit with Emacs
工作原理
当调用edit-serter-start时,在 Emacs里面开一个listen服务器,监听9292端口,然后Chrome插件将文本POST到Emacs里面编辑,编辑完再返回回去。
安装步骤
- 安装chrome 插件
- 安装emacs的edit-server组件,我是采用elpa方式,增加edit-server
- 新建一个init-edit-server.el文件,内容如下:
(require 'edit-server) (edit-server-start) (provide 'init-edit-server)
- 修正中文url支持问题
- 问题描述 当编辑中文 url的 textarea 会有bug,因为中文在url中被转义成了%xx%xx这种形式,这个%在format的时候没转义好,于是format的时候就出错了
- 解决办法
注释掉 edit-server-find-or-create-edit-buffer 下面的 edit-server-log. 因为我采用的是elpa包管理,所以手动编辑 elpa目录下的 edit-server.el 解决中文url问题,然后调用以下命令编译成字节码
emacs -batch -f batch-byte-compile *.el
遗留问题: "Chrome Edit With Emacs" 一文的作者已经给 edit-server提交了改问题的bug,所以下次有新版本的话,应该可以修正这个问题,故此这里就采用手动修改的方式了.
- 使用: Chrome所有的 Textarea 都会出现一个蓝色的 edit 按钮,单机,就可以用Emacs编辑里面的内容了。