我正在研究C代码 .

我有一个与此question相同的问题 .

解决方案是使用空格而不是制表符 . 但我更倾向于使用Smart Tabs Mode .

我已经尝试启用和禁用“c-tab-always-indent”和“indent-tabs-mode”(在cc-mode-hook中) .

我看到的问题是,在代码的某些部分,嵌套循环生成两个Tab,如预期的那样(?) . 但在某些情况下,它只生成一个选项卡和四个空格,而在其他情况下,它只生成一个选项卡,如下所示:

function_name
open brace here
...code indented by 4 spaces (though I want a tab)>
 open_brace
_tab_  code under condition
_4spc_ close_brace
some more 4 space aligned code
_tab_  open_brace
_tab+4spc_ code under some block
_tab_  close_brace
some more 4 space aligned code
_tab_ open_brace
_2 tabs_ code aligned as I prefer with two tabs
_tab_ close_brace

有人可以帮助我在整个代码中获得最后一种风格吗?

我的.emacs文件在这里(我使用了一些软件包,比如cscope和hide-show,但我不认为这会导致问题):

(custom-set-variables
     ;; custom-set-variables was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     '(ansi-color-faces-vector [default default default italic underline success warning error])
     '(ansi-color-names-vector ["black" "red3" "ForestGreen" "yellow3" "blue" "magenta3" "DeepSkyBlue" "gray50"])
     '(c-basic-offset 4)
     '(c-cleanup-list (quote (scope-operator space-before-funcall compact-empty-funcall)))
     '(c-default-style (quote ((c-mode . "linux") (c++-mode . "linux") (java-mode . "java") (awk-mode . "awk") (other . "gnu"))))
     '(c-hanging-braces-alist (quote set-from-style))
    ; '(c-tab-always-indent t)
     '(custom-enabled-themes (quote (tango-dark)))
     '(save-place t nil (saveplace))
     '(show-paren-mode t))
    (custom-set-faces
     ;; custom-set-faces was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     )

    (setq savehist-additional-variables    ;; also save...
      '(search-ring regexp-search-ring)    ;; ... my search entries
      savehist-file "~/.emacs.d/savehist") ;; keep my home clean

    (defalias 'yes-or-no-p 'y-or-n-p) ; to answer y or n instead of yes or no :-P ...I'm to lazy
    (setq search-highlight t            ;; highlight when searching... 
          query-replace-highlight 1)        ;; ...and replacing

    (add-to-list 'load-path "~/.emacs.d/packages/")
    (add-to-list 'load-path "~/share/emacs/site-lisp")


    ;;;add packages
    ;;(require 'doxymacs)

    ;;; turn ons
    (ido-mode) 
    (savehist-mode 1)
    (setq show-paren-mode 1)
    (global-linum-mode 1)
    (setq column-number-mode 1)


    ;;cc-mode changes
    (require 'smart-tabs-mode)
    (require 'xcscope)
    (cscope-setup)

    (autoload 'smart-tabs-mode "smart-tabs-mode"
      "Intelligently indent with tabs, align with spaces!")
    (autoload 'smart-tabs-mode-enable "smart-tabs-mode")
    (autoload 'smart-tabs-advice "smart-tabs-mode")
    (autoload 'smart-tabs-insinuate "smart-tabs-mode")

    (defun my-c-mode-common-hook ()
      (setq require-trailing-newline 1)   ;; Always add a final newline
      (which-function-mode 1)
      (subword-mode 1)
      (hs-minor-mode 1)  
      (setq show-paren-style 'parenthesis)
    ;  (setq indent-tabs-mode t)
      (smart-tabs-mode 1)
      )

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