当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎样在emacs中方便的实现这个小功能
帖子发表于 : 2007-11-27 16:46 

注册: 2006-11-21 17:23
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
如题:
1----- if ( condition ) {
2----------if ( condition ){
3--------------end;
4----------}
5------}

从 1 到 2 时 c-j 即可, 2 到 3 时也是 c-j 即可,但是从 3 到 4 要怎么办呢?我是先打上 } 然后在移回到 } 在 c-j 感觉方法拙大了.......哪位emacsor能帮个忙,给一下解决方法!谢谢!!!


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-11-27 18:17 

注册: 2006-09-20 19:56
帖子: 768
送出感谢: 0 次
接收感谢: 1
C-j,根本不需要。

代码:
(defun c-ret-hook ()
   (define-key c-mode-base-map (kbd "RET") 'c-context-line-break))
(add-hook 'c-mode-hook 'c-ret-hook)


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-11-27 18:19 

注册: 2006-09-20 19:56
帖子: 768
送出感谢: 0 次
接收感谢: 1
几乎就没有在Emacs中手动缩进过。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-11-27 20:22 

注册: 2006-11-21 17:23
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
这样应该只是把 c-j 变成了 回车! 你是怎么实现从来不用手动缩进的呢,请指教!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-11-27 21:03 

注册: 2006-11-21 17:23
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
又搜了搜发现在.emacs中加入
(add-hook 'c-mode-common-hook
(lambda () (c-toggle-auto-hungry-state 1)))
就可以了,感谢zhangsong23,呵呵!


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-11-27 23:07 

注册: 2006-09-20 19:56
帖子: 768
送出感谢: 0 次
接收感谢: 1
zw2mba 写道:
这样应该只是把 c-j 变成了 回车! 你是怎么实现从来不用手动缩进的呢,请指教!


你不是问的是从3怎么到4么?
直接输入'}',它自己就会跳到适当的地方了啊。
打开auto-new-line-mode,之后,再像上面那样绑定一下回车键,几平就不用手动缩进了。

实在要手动缩进,用M-i,不过我基本上不用。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-12-06 20:28 

注册: 2006-10-15 13:04
帖子: 14
送出感谢: 0 次
接收感谢: 0 次
贴一下我以前自己设置的c-mode吧,可以实现楼主所想要的功能。
代码:
(add-hook 'c-mode-hook 'linux-c-mode)
(add-hook 'c++-mode-hook 'linux-cpp-mode)
;; 设置imenu的排序方式为按名称排序
(setq imenu-sort-function 'imenu--sort-by-name)
(defun linux-c-mode()
;; 将回车代替C-j的功能,换行的同时对齐
  (define-key c-mode-map [return] 'newline-and-indent)
  (interactive)
;; 设置C程序的对齐风格
  (c-set-style "K&R")
;; 自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
  (c-toggle-auto-state)
;; 此模式下,当按Backspace时会删除最多的空格
  (c-toggle-hungry-state)
;; TAB键的宽度设置为8
  (setq c-basic-offset 8)
;; 在菜单中加入当前Buffer的函数索引
  (imenu-add-menubar-index)
;; 在状态条上显示当前光标在哪个函数体内部
  (which-function-mode)
 )
(defun linux-cpp-mode()
  (define-key c++-mode-map [return] 'newline-and-indent)
  (define-key c++-mode-map [(control c) (c)] 'compile)
  (interactive)
  (c-set-style "K&R")
  (c-toggle-auto-state)
  (c-toggle-hungry-state)
  (setq c-basic-offset 8)
  (imenu-add-menubar-index)
  (which-function-mode)
  )


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译