emacs hooks

本文探讨了Emacs中的hooks概念,重点介绍了如何利用elisp(Emacs Lisp)来设置和使用hooks,以实现对编辑器功能的自定义扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从emacser.com上学习到的elisp

hooks

hook 是一个elisp 表,这个表中存放着要被调用的函数的符号(或代码)
emacs 中存在大量的hook ,有emacs-lisp-mode-hook ,c-mode-hook 等,基本上一个mode就提供了一个hook 。

基本操作和操作列表相同
(setq myhook (cdr myhook))      ;; =>丢弃myhook中的第一个函数
(setq myhook (reverse myhook))  ;; =>将myhook反转,改变函数执行的顺序
(setq myhook nil)               ;; =>将myhook清空

需要注意的是 : add-hook插入的表执行顺序与插入顺序相反
(defvar myhook nil) ;;定义myhook为空表
(add-hook 'myhook '(lambda ()
          (insert "fun1 was called ")))  ;;将这个匿名函数1加入到myhook表中去
 
(add-hook 'myhook '(lambda ()
          (insert "fun2 was called "))) ;;将匿名函数2加入myhook表中去
 
(run-hooks 'myhook) ;; =>执行这条语句会在光标后插入fun2 was called fun1 was called
add-hook 会将函数插入到myhook列表的头部,并且run-hooks 是从myhook头执行到尾的,因此匿名函数2会先执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值