【发布时间】:2010-12-05 15:18:13
【问题描述】:
在 GNU Emacs 中,我想在当前选定的文本上运行一个程序 figlet。然后我想评论产生的区域。
我已经知道如何使用标准的 Emacs 命令来做到这一点:
- 在单词的开头用 C-
设置标记 - 将光标移到词尾
- C-u M-x shell-command-on-region RET figlet RET
- M-x 评论区域 RET
但是,我没有弄清楚如何编写一个 Emacs lisp 程序来完成这一切。这是我的尝试:
(defun figlet-region ()
(interactive)
(push-mark)
(shell-command-on-region "figlet")
(comment-region (mark) (point))
(pop-mark)
)
(global-set-key "\C-c\C-f" 'figlet-region)
然后C-<space>; M-x figlet-region产生垃圾:
回答
(defun figlet-region (&optional b e)
(interactive "r")
(shell-command-on-region b e "figlet" (current-buffer) t)
(comment-region (mark) (point)))
(这是基于 Trey Jackson 的回答。)
示例(Lisp 交互模式)
;; _ _ _
;; | |_| |__ __ _ _ __ | | _____
;; | __| '_ \ / _` | '_ \| |/ / __|
;; | |_| | | | (_| | | | | <\__ \
;; \__|_| |_|\__,_|_| |_|_|\_\___/
示例(CPerl 模式)
# _ _ _
# | |_| |__ __ _ _ __ | | _____
# | __| '_ \ / _` | '_ \| |/ / __|
# | |_| | | | (_| | | | | <\__ \
# \__|_| |_|\__,_|_| |_|_|\_\___/
【问题讨论】: