emacs作为firefox和chrome的编辑器

Posted on 2013-01-08 20:52  chenfanyu  阅读(951)  评论(0编辑  收藏  举报

概述

web浏览器的编辑框通过emacs来编辑. firefox通过 It’s All Text! 插件实现, chrome 通过 Edit with Emacs实现.

firefox

安装使用步骤

  1. 下载安装 firefox 插件 It's All Text
  2. 设置 It's All Text 参数,指定快捷键,扩展名,运行程序.
    1. 生成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()
      
      
      1. 创建ema-firefox.bat 批处理脚本,以调用italltext.py
        @echo off
        set HOME=C:/cygwin/home/Administrator
        python C:\emacs\bin\italltext.py %*
        
      2. 设置italltext插件,将编辑器关联到ema-firefox.bat,同时增加*.wiki到保存文件的第一行,使得缺省文件为wiki,设置快捷键为M-c

    遗留问题: 通过 bat 启用 python ,再通过 python 启动 emacs ,感觉有点太绕,不过我对 bat 操作不熟,权且如此吧.

chrome

工作原理

当调用edit-serter-start时,在 Emacs里面开一个listen服务器,监听9292端口,然后Chrome插件将文本POST到Emacs里面编辑,编辑完再返回回去。

安装步骤

  1. 安装chrome 插件
  2. 安装emacs的edit-server组件,我是采用elpa方式,增加edit-server
  3. 新建一个init-edit-server.el文件,内容如下:
    (require 'edit-server)
    (edit-server-start)
    (provide 'init-edit-server)
    
  4. 修正中文url支持问题
    1. 问题描述 当编辑中文 url的 textarea 会有bug,因为中文在url中被转义成了%xx%xx这种形式,这个%在format的时候没转义好,于是format的时候就出错了
    2. 解决办法 注释掉 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,所以下次有新版本的话,应该可以修正这个问题,故此这里就采用手动修改的方式了.

  5. 使用: Chrome所有的 Textarea 都会出现一个蓝色的 edit 按钮,单机,就可以用Emacs编辑里面的内容了。