LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 991|回复: 4

请教在emacs中如何实现这个功能

[复制链接]
发表于 2009-11-9 18:00:05 | 显示全部楼层 |阅读模式
请教在emacs中这样一个函数怎么写
当按下分号的时候,
1.插入分号
2.Call indent-according-to-mode

效果相当于
emacs中在按下“;”(分号)后理解indent所有代码(或者当前行的代码)。

如果这个问题能够解决,将帮助我搞定一个困扰了非常久的问题,恳请各位高手帮忙,先谢谢了!
发表于 2009-11-10 15:17:17 | 显示全部楼层
是这意思吗?

(global-set-key  (kbd ";")  
                                  (lambda () (interactive)
                                        (insert ";")
                                        (indent-according-to-mode)))
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-10 19:12:10 | 显示全部楼层
非常感谢iNPRwANG的帮助,这个函数确实达到了我说的功能,但是非常郁闷的事不知道他为什么不能在我所需要的buffer中起作用。

这个问题的本意是想要解决我在nxhtml中找到的一个bug,详见https://bugs.launchpad.net/nxhtml/+bug/463136

最后请教下大家,有没有人有配好的php工作环境的环境,支持混合代码的,我找了很多都有各种各样的问题。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 15:39:34 | 显示全部楼层
可能是与 nxhtml 的缩进有冲突,nxhtml 也不是在最后一个;的时候开始起作用缩进的吗?
要修改这个bug,估计还是要hack其源代码的,另外,我的帖子里用了 global-set-key 不太好,应该改成 define-key map 比较好。
回复 支持 反对

使用道具 举报

发表于 2009-11-11 16:33:41 | 显示全部楼层
那个nxhtml缩进不是用indent-according-to-mode缩进的,而是用c-indent中的一个函数,c-indent中的那个函数用到cc-engine的函数,可是我的emacs竟然不能打开cc-engine,报错,进行不下去了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表