存档

‘emacs’ 分类的存档

bingapiel——基于Azure版bing-api的emacs翻译工具

2012年6月5日 29 条评论

简介

  随着Windows Azure版bing-api的完善,旧版bing-api会逐渐退出历 史舞台。之前发布的translate-emacs-toolkit只能用到今年八月份。因 此,笔者基于Azure版bing-api升级了translate-emacs-toolkit,并重命 名为bingapielbingapiel借助bing-api提供在emacs环境下的实时翻译、 自动检测语言、翻译历史查询等功能。已经在emacs24下测试通过。

安装

  1. 从github获取bingapiel
    git clone git@github.com:coordinate/bingapiel.git
    
  2. 安装curl。Ubuntu用户使用 sudo apt-get install curl 命令。 Windows用户下载curl Win32 – Generic,并将 curl.exe 所在路径 加入环境变量。
    (setenv "PATH" (concat (concat program-path "/curl-7.26.0-devel-mingw32/bin;") (getenv "PATH")))
    
  3. 在.emacs文件中加入如下配置信息。其中 client idclient secret 是笔者注册的bing-api信息,可以直接使用,但是 每月限制翻译200万个字符。建议您自己申请。
    (add-to-list 'load-path (concat plugin-path "bingapiel"))
    
    ;; Your bing api client_id.
    (defvar bingapi-clientid "667f3adb-e22d-4dca-b476-ca536c0a6d8a")
    ;; Your bing api client_secret.
    (defvar bingapi-clientsecret "xBTJ5Ee5RSFf++uVjSVKVFcsoswQlDyb8kPp5wSyrV8=")
    ;; list all language codes may be used
    (defvar bingtranslate-language-list '("en" "zh-CHS" "ja"))
    ;; Turn auto detect language code on
    (defvar bingtranslate-auto-detect t)
    
    (require 'bing-translate)
    ;; key bounding
    (global-set-key [M-f1] 'bingtranslate-region-or-input)
    ;; add a pair of language
    ;; Parameters: "pair name" "from language" "to language"
    (bingtranslate-add-pair "1" "zh-CHS" "ja")
    
  4. 重启emacs或者 eval-region 使配置生效。
  5. M-x bingtranslate-region-or-input 输入翻译内容、原始语言、 目标语言。翻译结果会在minibuffer中显示并存入剪切版。首次使用 时需要获取 access token ,请等待几秒钟。 access token 每经过 十分钟就将失效,程序会自动获取新的 access token ,耐心等待几 秒钟。如果等待时间漫长(通常是网速过慢或者掉线引起),您可以 使用 C-g 中断翻译过程。
  6. M-x bingtranslate-show-history 列出翻译历史记录。

注册bing-api

  1. 注册Windows Live IDhttp://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-windowsliveid1.gif
  2. 注册Windows Azure Marketplace accounthttp://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-windowsazuremarketplace1.gif
  3. 注册应用程式。其中用户端识别码(client id)、名称、重新导向 URL、描述信息可以随意填写,用户端密码(client secret)默认即 可。记录 client idclient secret 备用。 http://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-registerapplication2.gif http://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-clientidclientsecret.gif
  4. 定购Microsoft Translator。免费版有每月200万个字符的限制。 http://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-MicrosoftTranslator.gif

示例

http://coordinate-wordpress.stor.sinaapp.com/uploads/2012/06/wpid-previewnew.gif

分类: emacs 标签:

在emacs中使用bing translate api实现高效翻译

2012年3月16日 没有评论

  本文介绍如何在Emacs中使用Bing translate api实现高效翻译。之所 以使用bing translate api,一方面因为bing translate api翻译效果很好, 另一方面是因为google translate api总是提示说今天的访问超量了 (dailyLimitExceeded)。

所需工具

安装

  1. 将emacs解压。
  2. 克隆translate-emacs-toolkit最新版本,或者下载压缩包解压。
  3. bing开发者申请appId。
  4. 启动emacs。
  5. 在.emacs文件中加入下列代码,配置appengine-emacs-toolkit。
    (add-to-list 'load-path (concat git-path "translate-emacs-toolkit"))
    
    ;; Your appId. Application at http://www.bing.com/toolbox/bingdeveloper/
    (defvar bingtranslate-appId "your-appId")
    
    ;; Your priority language to translate from.
    (defvar bingtranslate-from-priority "en")
    
    ;; Your priority language to translate to.
    (defvar bingtranslate-to-priority "zh-CHS")
    
    (require 'bing-translate-api)
    
    ;; key bounding
    (global-set-key [M-f1] 'bingtranslate-region-or-input)
    
    ;; add a pair of language
    ;; Parameters: "pair name" "from language" "to language"
    (bingtranslate-add-pair "1" "zh-CHS" "en")
    

    其中plugin-path是你存放translate-emacs-toolkit文件夹的路径(如 d:/home/emacs-23/site-lisp/)。 最后一句的意思给“简体中文”到“英文”的翻译设置快捷方式。

  6. 重启emacs。
  7. 调用命令bingtranslate-region-or-input(M-x bingtranslate-region-or-input)。输入翻译文本、原始语言(或快捷 方式)、翻译语言。在minibuffer中会出现翻译结果。并且翻译结果会 自动加载在剪切板中。
  8. 调用命令bingtranslate-show-history(M-x bingtranslate-show-history)可以调出翻译历史记录。

实例

http://coordinate-wordpress.stor.sinaapp.com/uploads/2012/03/wpid-translate.gif

分类: emacs 标签:

Using emacs and python to develop GoogleAppEngine project

2011年12月26日 没有评论

Tools

  1. emacs.
  2. python25 or python27.
  3. GoogleAppEngine.
  4. appengine-emacs-toolkit. This toolkit can help to create project, start app server, browse in browser and upload.

Install

  1. Unzip emacs.
  2. Install python25 or python27 or both. Write python’s folder to system path or emacs’s path(reference: Set up python in emacs).
  3. Install GoogleAppEngine.
  4. Clone appengine-emacs-toolkit repository or download and unzip appengine-emacs-toolkitV1.0.zip file.

Usage

  1. Run emacs.
  2. Copy appengine-emacs-toolkit to your emacs’s load-path. Add following code to .emacs file.
    (setq gae-root-path (concat program-path"google_appengine/"))
    (setq gae-priority-python-version "27")
    (add-to-list 'load-path (concat plugin-path "appengine-emacs-toolkit"))
    (require 'appyaml-mode)
    (add-hook 'appyaml-mode-hook
              (lambda ()
                (progn (local-set-key "\C-cc" 'gae-start-appserver)
                       (local-set-key "\C-cb" 'gae-browse-appserver)
                       (local-set-key "\C-cu" 'gae-update-appserver))))
    

    The gae-root-path is your GoogleAppEngine’s Installation path. plugin-path is where you put appengine-emacs-toolkit(e.g. d:/home/emacs-23/site-lisp/).

  3. Restart emacs.
  4. Call gae-new-project command in minibuffer. Input new project’s path, name and python’s version.
  5. New app.yaml file is open. Call gae-start-appserver command.
  6. Then a shell buffer came up. Run gae-start-appserver command or browse http://localhost:8001 manually.

分类: emacs 标签:

Set up python in emacs

2011年12月26日 没有评论

There are lots of version of python, We have to face different python in one system. I use python25 and python27 to develop GoogleAppEngine and use python26 to develop SinaAppEngine. I want to try python32. So following I will set up python with emacs step by step.

Firstly we install all python to be used. Such as python25, python26 and python27. I put all of them to “d:/home/program/”.

Run emacs and find file .emacs. Add following code to set python27‘s root in emacs’s path.

(setq pythonversion "27")
(setq program-path "d:/home/program/")
(setenv "PATH" (concat (concat program-path"python"pythonversion";") (getenv "PATH")))

Then add following function to switch between pythons.

(defun* zxy-switch-python-version (&optional (pver nil))
  "Swith python version at runtime"
  (interactive)
  (if (equal nil pver)
      (let ((tempver (read-string (format "[zxy] Swith to which version of python (default %s)? "
                                          pythonversion) nil nil pythonversion nil)))
        (setq pver tempver)))
  (unless (file-exists-p (concat program-path"python"pver""))
    (error (format "[zxy] Cannot find python%s!" pver)))
  (message (format "[zxy] Switch to python%s." pver))
  (setq pythonversion pver)
  (setenv "PATH" (concat (concat program-path"python"pythonversion";") (getenv "PATH"))))

Set up python-mode as following.

;; emacs python
(require 'python)
(defun zxy-python-compile ()
  "Use compile to run python programs"
  (interactive)
  (compile (concat "python " (buffer-name))))
(setq compilation-scroll-output t)
(define-key python-mode-map "\C-cc" 'zxy-python-compile)

Restart emacs and open a py file. M-x zxy-python-compile will run this file in a new buffer. M-x zxy-switch-python-version help to switch python version.

分类: emacs 标签:

在emacs中配置python环境变量

2011年12月24日 没有评论

  由于 python 版本的不断更新,我们经常会在同一个系统中使用若干种 版本的 python 。比如我使用 python25python27 开发 GoogleAppEngine应用,使用 python26 开发SinaAppEngine应用,还会尝试 一下 python32 。本文主要介绍如何在emacs环境下便捷的切换python版本。

  首先安装不同版本的 python ,这里我们以安装 python25 , python26python27 为例。将上述三个版本的/python/ 都安装在 d:/home/program文件夹下。

  启动emacs,打开.emacs文件。添加下列代码,将 python27 的根目录路径 写进emacs环境变量。

(setq pythonversion "27")
(setq program-path "d:/home/program/")
(setenv "PATH" (concat (concat program-path"python"pythonversion";") (getenv "PATH")))

  然后添加下面函数,用于切换 python 版本。

(defun* zxy-switch-python-version (&optional (pver nil))
  "Swith python version at runtime"
  (interactive)
  (if (equal nil pver)
      (let ((tempver (read-string (format "[zxy] Swith to which version of python (default %s)? "
                                          pythonversion) nil nil pythonversion nil)))
        (setq pver tempver)))
  (unless (file-exists-p (concat program-path"python"pver""))
    (error (format "[zxy] Cannot find python%s!" pver)))
  (message (format "[zxy] Switch to python%s." pver))
  (setq pythonversion pver)
  (setenv "PATH" (concat (concat program-path"python"pythonversion";") (getenv "PATH"))))

  配置python-mode如下。

;; emacs python
(require 'python)
(defun zxy-python-compile ()
  "Use compile to run python programs"
  (interactive)
  (compile (concat "python " (buffer-name))))
(setq compilation-scroll-output t)
(define-key python-mode-map "\C-cc" 'zxy-python-compile)

  重起emacs。打开任意py文件。M-x zxy-python-compile运行该文件。 M-x zxy-switch-python-version,切换python版本。

分类: emacs 标签:

使用emacs和python开发SinaAppEngine应用

2011年12月23日 没有评论

所需工具

  1. emacs
  2. python26。 由于python2.6.7只提供源代码,windows用户可以安装2.6.6版本。
  3. SaeAppEngine
  4. appengine-emacs-toolkit。 该工具帮助开发人员在emacs上开发GoogleAppEngine和SinaAppEngine项目。

安装

  1. 将emacs解压。
  2. 安装python26。将python26根目录写入环境变量(可以在emacs写环境变 量参考在emacs中配置python环境变量)。
  3. 克隆saepythondevguide最新版本,或者下载压缩包解压。
  4. 克隆appengine-emacs-toolkit最新版本,或者下载压缩包解压。

实例

  1. 启动emacs。
  2. 配置appengine-emacs-toolkit。在.emacs文件中加入下列代码。
       (setq sae-python-root-path (concat
       program-path"saepythondevguide/dev_server/"))
    ;; 如果你使用django库请指定库路径
    (setq django-lib-path (concat program-path"django/"))
    (add-to-list 'load-path (concat plugin-path "appengine-emacs-toolkit"))
    (require 'indexwsgi-mode)
    (add-hook 'indexwsgi-mode-hook
              (lambda ()
                (progn (local-set-key "\C-cc" 'sae-python-start-appserver)
                       (local-set-key "\C-cb" 'appengine-browse-appserver)
                       (local-set-key "\C-cu" 'sae-python-update-appserver))))
    

    其中sae-root-path是saepythondevguide文件夹下devserver子文件夹路径。 plugin-path是你存放appengine-emacs-toolkit文件夹的路径(如d:/home/emacs-23/site-lisp/)。

  3. 重启emacs。
  4. 调用sae-python-new-project命令(M-x sae-new-project)。输入新 建项目路径、名称、版本号和项目类型。
  5. 在新打开的index.wsgi文件中调用sae-python-start-appserver命令。
  6. 等下面的shell窗口出现“* Running on http://localhost:8080/”, 调用sae-python-browse-appserver命令或者打开浏览器手动浏览 http://localhost:8080/

分类: emacs 标签:

解决:中文博客的段首空格

2011年12月19日 没有评论

  段首空两格从第一堂作文课开始就深深植入每一个中国人的心中,这是 我们的习惯和文化。这里我提供两种方法,使用emacs、org2blog,在 wordpress上发布段首空格的中文博客。

  浏览过我的博客的朋友可能会问,“为什么你喜欢用蹩脚的英文写博 客?”原因有三,首先英文的博客容易被google搜索到;其次我使用emacs 发布博客,且打开了自动换行,这样中文段落中会有很多不必要的空格,至 今没有好的解决办法;最后我想联系一下英文的写作,学了十几年的英语, 听书读写样样不行,我不甘心。

  废话不多说了,下面是博客中文段首空格的两种解决办法。

方法一:段首插入中文空格

  在.emacs文件中加入下面函数。然后在每次开始新段落时只要 shift+spc两次即可。

(defun insert-big-spc (p)
  "insert a Chinese spc."
  (interactive "*p")
  (insert " ")) ;; 中文空格
(global-set-key (kbd "<S-SPC>") 'insert-big-spc)

方法二:自定义CSS方式

  在org模式下,中文段落前后用如下css格式的标签包裹即可。

@<p style="text-indent:2em">
另外我还要隆重的向大家推荐一下小黑。小黑是我住处附近的一条看门
狗。它全身乌黑,个头比常见的宠物狗略小一号。小黑不是宠物,我从来没
有见过他的主人,它总是独自在我经常散步的草地上休息,偶尔有宠物伙伴
来访,会兴奋异常,但很快又会孤单一人。当有陌生人或者车子进入草地旁
一所单位的大门时,小黑会立即跑过去,叫个不停。它对我很警惕,也不敢
正眼看我,今天我特意留着中午吃排骨剩下的骨头,准备晚上贿赂一下小黑。
@</p>

分类: emacs 标签:

Tip: Automatically reset .emacs file path

2011年12月18日 没有评论

Everytime I have to reset .emacs file when I use emacs on a new computer. I can not avoid to find out default home path and write a .emacs file with only one line “(load-file “new/emacs/home/path/.emacs”)”. Now I don’t have to do this because I add following code on top of my .emacs file.

(defun zxy-reset-dotemacs ()
  "Reset .emacs file"
  (interactive)
  (with-temp-buffer
    (let (print-level print-length)
      (insert (format "(load-file \"%s\")" load-file-name))
      (if (file-exists-p "~/.emacs")
          (message "Don't need reset .emacs file!")
        (progn
          (message "Reset .emacs file.")
          (write-file "~/.emacs"))))))
(zxy-reset-dotemacs)

Then I can open emacs on a new computer, input “(load-file “d:/zxy/home/.emacs”)” at scratch buffer and type C-j. This function will automatically reset my .emacs file.

分类: emacs 标签: ,

Test org2blog with emacs

2011年12月17日 没有评论

H2

H3

Test upload image

http://coordinate-wordpress.stor.sinaapp.com/uploads/2011/12/wpid-preview.gif

Test emphasis

blod italic undlerlined code verbatim strike-through

org-src

* Test org2blog with emacs
** H2
*** H3
**** Test upload image
[[file:e:/zxy/home/org/preview.gif]]
**** Test emphasis
*blod* /italic/ _undlerlined_ =code= ~verbatim~ +strike-through+
分类: emacs 标签:

Tip: Set emacs’s home path and plugin path

2011年12月16日 没有评论

Add the following code to .emacs file. It will automatically set emacs’s home to your .emacs file path.

(if (eq system-type 'windows-nt)
    (progn
      (setenv "HOME" (car (split-string default-directory "emacs")))
      (setq plugin-path "~/emacs-23.3/site-lisp/plugins/"))
  (setq plugin-path "/usr/share/emacs23/site-lisp/plugins/"))

The plugin-path is a constant for positioning my plugins. For example, I can add org to my load-path as follow.

(add-to-list 'load-path (concat plugin-path "org-7.7/lisp"))
分类: emacs 标签: ,