如何在emacs中的.h和.cpp文件中设置列宽?

时间:2014-08-01 22:34:35

标签: emacs

我希望在emacs中为.h和.cpp文件提供80行的文本宽度。 我试过的是,

M-x自动填充模式 C-x f

但上述解决方案无效。

我也尝试了http://www.emacswiki.org/emacs/CPlusPlusMode处的解决方案。如下所示。

; style I want to use in c++ mode                                                                                                                                                                                 
(c-add-style "my-style"
  '("stroustrup"
      (indent-tabs-mode . nil)        ; use spaces rather than tabs                                                                                                                                          
      (c-basic-offset . 4)            ; indent by four spaces                                                                                                                                                
      (c-offsets-alist . ((inline-open . 0)  ; custom indentation rules                                                                                                                                      
      (brace-list-open . 0)
      (statement-case-open . +)))))

(defun my-c++-mode-hook ()
(c-set-style "my-style")        ; use my-style defined above                                                                                                                                                   
(auto-fill-mode)
(c-toggle-auto-hungry-state 1))
(add-hook 'c++-mode-hook 'my-c++-mode-hook)**

尽管如此,我还没有完全理解emacswiki提供的解决方案。 感谢这方面的任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

您只需要在这些模式中设置fill-column,您可以通过定义一个函数来执行此操作并将该挂钩添加到相关模式(您也可以将其作为lambda执行,但是将它放在命名函数中通常是一种很好的做法,因此如果你需要,你可以在以后将其从钩子中删除。默认情况下,*.h文件会出现在c-mode中,而*.cpp文件默认会出现在c++-mode中。首先,定义一个函数:

(defun my-c-hook ()
  (setq fill-column 80))

然后,将该函数添加到相关模式挂钩:

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

您可以根据自己的喜好使自己的功能变得丰富,例如,输入原来的其他物品:

(defun my-c-hook ()
  (c-set-style "my-style")
  (auto-fill-mode)
  (c-toggle-auto-hungry-state 1)
  (setq fill-column 80))