Chinaunix首页 | 论坛 | 博客
  • 博客访问: 891804
  • 博文数量: 113
  • 博客积分: 3160
  • 博客等级: 少校
  • 技术积分: 1801
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-19 10:09
文章分类

全部博文(113)

分类: LINUX

2012-09-18 17:29:50

这个主要是方便在Emacs下直接查单词,因为如果再打开一个stardict,非常麻烦。
碰巧在网上看到有关stardict的elisp代码,我就把它封装过来。下面是整个安装
和使用过程。


** 安装Stardict

下面的命令直接安装Stardict.

: sudo apt-get install stardict


** 添加词库

直接搜索“stardict 词库”,就能找到词库的主页,按照它的说明即可。


** 安装stardict命令行程序

这个命令可以在命令行下使用stardict查询单词。

: sudo apt-get install sdcv


** 添加stardict.el

下面是stardict.el,你可以把它放到~/.emacs.d/下。



  1. #+begin_src emacs-lisp
  2. ;; Author : pluskid
  3. ;; Modified By : lishuo
  4. ;;
  5. ;; 调用 stardict 的命令行程序 sdcv 来查辞典
  6. ;; 安装: sudo apt-get install stardict
  7. ;; sudo apt-get install sdcv
  8. ;;
  9. ;; 如果选中了 region 就查询 region 的内容,否则查询当前光标所在的单词
  10. ;; 查询结果在一个叫做 *sdcv* 的 buffer 里面显示出来,在这个 buffer 里面
  11. ;; 按 q 可以把这个 buffer 放到 buffer 列表末尾,按 d 可以查询单词
  12. ;; 注意自己编写.el的时候必须加上开头和结尾
  13. (require 'cl)
  14. (defun view-stardict-in-buffer ()
  15. (interactive)
  16. (let ((word (if mark-active
  17. (buffer-substring-no-properties (region-beginning) (region-end))
  18. (current-word nil t))))
  19. (setq word (read-string (format "Search the dictionary for (default %s): " word) nil nil word))
  20. (set-buffer (get-buffer-create "*sdcv*"))
  21. (buffer-disable-undo)
  22. (erase-buffer)
  23. (let ((process (start-process-shell-command "sdcv" "*sdcv*" "sdcv" "-n" word)))
  24. (set-process-sentinel
  25. process
  26. (lambda (process signal)
  27. (when (memq (process-status process) '(exit signal))
  28. (unless (string= (buffer-name) "*sdcv*")
  29. (setq kid-sdcv-window-configuration (current-window-configuration))
  30. (switch-to-buffer-other-window "*sdcv*")
  31. (local-set-key (kbd "d") 'view-stardict-in-buffer)
  32. (local-set-key (kbd "q") (lambda ()
  33. (interactive)
  34. (bury-buffer)
  35. (unless (null (cdr (window-list))) ; only one window
  36. (delete-window)))))
  37. (goto-char (point-min))))))))
  38. (provide 'stardict)
  39. #+end_src


** 启用stardict

在~/.emacs下启用stardict

  1. : (require 'stardict)
  2. : (global-set-key (kbd "C-c-d") 'view-stardict-in-buffer)

** 效果图


阅读(3680) | 评论(1) | 转发(0) |
0

上一篇:Emacs AucTex安装

下一篇:AWK入门

给主人留下些什么吧!~~

zh1314432013-09-16 12:13:53

我不是学IT的,都是在网上自己学下,现在非常想用你介绍的这个功能。希望您能帮个忙,我是这样操作的,敬请您的指点 
1、我的环境是emacs是安装在在win7中(e:\emacs\) 
2、现已装好cygwin32,sdcv在命令行下也可正常使用了。
3、把stardict.el放入到e:\emacs\.emacs.d下
4、.emacs也加入了 
(require 'stardict)
(global-set-key (kbd "C-c-d") 'view-stardict-in-buffer) 
5、但是启动后emacs就提示是错误的。
这里先谢谢您!