如何配置emacs中 C编程风格

Vim、Emacs配置和使用
回复
tp_linkcoco
帖子: 4
注册时间: 2007-08-31 21:19
送出感谢: 0
接收感谢: 0

如何配置emacs中 C编程风格

#1

帖子 tp_linkcoco » 2007-09-06 21:51

我编写程序的习惯是这样的:

代码: 全选

int foo(int arg1)
{
    int i;
    int n=5;

    for(i=0; i<n; i++)
    {
        printf("%d", i);
    }
   
    return 0
}
[/color][/size]
也就是 缩进4个空格,大括号的列相同。我应该怎么设置emacs 23?
上次由 tp_linkcoco 在 2007-09-07 14:59,总共编辑 1 次。
头像
boydd
帖子: 255
注册时间: 2007-05-10 19:42
来自: 南京, Deutschland, Karlsruhe
送出感谢: 0
接收感谢: 0
联系:

#2

帖子 boydd » 2007-09-07 3:35

这个你要去修改cc-mode了
forcotton
帖子: 57
注册时间: 2006-10-06 21:10
送出感谢: 0
接收感谢: 0

#3

帖子 forcotton » 2007-09-07 6:30

查看 c-mode的帮助。
如果要永久的改变缩进的话,在.emacs中:
(setq c-basic-offset 4)

还可以用 C-c . (c-set-style)改变当前buffer 的风格。
tp_linkcoco
帖子: 4
注册时间: 2007-08-31 21:19
送出感谢: 0
接收感谢: 0

#4

帖子 tp_linkcoco » 2007-09-07 14:49

非常感谢两位。

(setq c-basic-offset 4) 改变缩进成功了。

但是 怎么修改cc-mode,使得我的大括号处于同一列呢?

我的cc-mode是5.31.3; 里面有多个文件,我应该在哪个文件中进行修改,cc-align.el?
如何修改?里面的代码我看得不太明白.
tp_linkcoco
帖子: 4
注册时间: 2007-08-31 21:19
送出感谢: 0
接收感谢: 0

#5

帖子 tp_linkcoco » 2007-09-07 15:05

来人帮我阿
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56
送出感谢: 0
接收感谢: 1 次

#6

帖子 zhangsong023 » 2007-09-07 15:27

自定义风格就行了,这类问题,自带的文档上讲得很清楚,先看自带的文档,实在搞不定再发问,这样也有利于系统地掌握这个工具。

代码: 全选

(defconst please-read-document-c-style
 '("gnu" (c-basic-offset . 4)
	 ))
(c-add-style "readdocument" please-read-document-c-style)
(c-set-style "readdocument")
如果不喜欢gnu的代码风格,请换成其它的built-in style。
善意提醒,看看文档吧,既然已经开始用emacs了,可不要有畏难情绪哟,加油。
tp_linkcoco
帖子: 4
注册时间: 2007-08-31 21:19
送出感谢: 0
接收感谢: 0

#7

帖子 tp_linkcoco » 2007-09-07 15:56

zhangsong023 写了:自定义风格就行了,这类问题,自带的文档上讲得很清楚,先看自带的文档,实在搞不定再发问,这样也有利于系统地掌握这个工具。

代码: 全选

(defconst please-read-document-c-style
 '("gnu" (c-basic-offset . 4)
	 ))
(c-add-style "readdocument" please-read-document-c-style)
(c-set-style "readdocument")
如果不喜欢gnu的代码风格,请换成其它的built-in style。
善意提醒,看看文档吧,既然已经开始用emacs了,可不要有畏难情绪哟,加油。
好吧,那我再摸索摸索,不过真的有点困难阿:P。
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56
送出感谢: 0
接收感谢: 1 次

#8

帖子 zhangsong023 » 2007-09-07 18:09

我已经给你答案了啊,使用那一小段代码就可以达到你要的效果了。
忘说了,把gnu换成ellemtel。
oiniya
帖子: 256
注册时间: 2007-07-26 15:07
送出感谢: 0
接收感谢: 0

#9

帖子 oiniya » 2007-09-12 10:54

;;========================================
;;C/C++语法设置
;;========================================
;;CC-mode配置参见:http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)

(defun my-c-mode-common-hook()
(setq tab-width 4 indent-tabs-mode nil)
;;在输入“;” ”{” “}”等字符时,自动开始新的一行并缩进,可以用C-c C-a开关
(c-toggle-auto-hungry-state 1)
;;按键定义
(define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
(define-key c-mode-base-map [(return)] 'newline-and-indent)
(define-key c-mode-base-map [(f7)] 'compile)
(define-key c-mode-base-map [(f8)] 'ff-get-other-file)
(define-key c-mode-base-map [(meta \`)] 'c-indent-command)
;; (define-key c-mode-base-map [(tab)] 'hippie-expand)
(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
(define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
;;预处理设置
(setq c-macro-shrink-window-flag t)
(setq c-macro-preprocessor "cpp")
(setq c-macro-cppflags " ")
(setq c-macro-prompt-flag t)
(setq hs-minor-mode t)
(setq abbrev-mode t)
(setq tab-width 4 indent-tabs-mode nil)
(setq default-fill-column 80)
)

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

(defun my-c++-mode-hook()
;(setq tab-width 4 indent-tabs-mode nil)
(c-set-style "stroustrup")
(add-to-list 'c-cleanup-list 'defun-close-semi)
;; (add-to-list 'c-cleanup-list 'scope-operator)
;; (define-key c++-mode-map [f3] 'replace-regexp)
)

(add-hook 'c++-mode-hook 'my-c++-mode-hook)
zhangsong023
帖子: 768
注册时间: 2006-09-20 19:56
送出感谢: 0
接收感谢: 1 次

#10

帖子 zhangsong023 » 2007-09-12 17:22

楼上的配置并不怎么涉及自定义编程风格的问题,你用了built-in style, built-in style会覆盖你的Tab宽度等设置,不过你运气比较好的话,有可能刚好你自定义的东东和你用的built-in style一致。

要想自定义风格,请使用c-add-style函数。
halve
帖子: 45
注册时间: 2005-09-09 11:32
送出感谢: 0
接收感谢: 0

#11

帖子 halve » 2008-01-03 20:22

(setq c-basic-offset 4)
试了半天,原来就是少了这个
回复

回到 “Vim和Emacs”