代码之家  ›  专栏  ›  技术社区  ›  Luca Martini

Emacs缩进模板类/函数

  •  5
  • Luca Martini  · 技术社区  · 14 年前

    有人知道如何禁止Emacs在template子句后缩进函数或类的名称吗?

    目前的结果是:

    template <typename T>
        class A {
        /* ... */
        };
    

    我想要的地方:

    template <typename T>
    class A {
    /* ... */
    };
    

    非常感谢你的帮助。

    编辑1 我使用C++模式,用Java作为C++的缩进样式。我用这种方式定制了C-offset-alist:

    (custom-set-variables 
    ;;
    '(c-offsets-alist (quote ((case-label . +) (innamespace . 0))))
    
    4 回复  |  直到 10 年前
        1
  •  8
  •   Déjà vu    10 年前

    转到 class 线和命中 TAB 执行(未经请求的)缩进。
    然后按 正文结束字符 移入字符 to display the indent mode for 最前面的简介`

    出版社 ENTER ,然后可以更改缩进号(例如3到0)。

    在你的最后 .emacs 您可以永久设置该指令:

      (c-set-offset 'topmost-intro-cont 0 nil)
    
        2
  •  3
  •   darioo    14 年前

    对于Emacs的C++模式,缩进有不同的样式。 Quoting EmacsWiki :

    部分已知的C样式列表:

    • GNU:GNU项目的默认样式
    • __K&R_:C的作者Kernighan和Ritchie在他们的书中使用了什么?
    • __bsd_157;:BSD开发人员使用什么,也就是埃里克·奥尔曼之后的__奥尔曼风格_157;。
    • Stroustrup的《C++》作者用什么?
    • Linux:Linux开发人员用于内核开发的工具
    • __python_:python开发人员对扩展模块的使用
    • Java模式:Java模式的默认样式(见下文)
    • _用户_:当您想定义自己的样式时

    这个 c-default-style 变量是您需要更改的。也许其中之一就是你需要的。现在没有Emac,所以我无法查看它们。

        3
  •  0
  •   Thunder Rabbit Jonathan Delean    14 年前

    我不知道,但我想你的模式会有所不同。您在什么模式下编辑?我假设C++模式导致了 c++ 作为标签。

    对于我来说,在C++模式下,结果是这样的:

    template <typename T>
    class A {
       /* ... */
    };
    

    注释缩进,但是 class A 不缩进。

        4
  •  0
  •   jwernerny    14 年前

    要检查的几个不同的东西:

    我在C++模式下编辑C++ .h文件而不是C++模式时遇到了类似的问题。默认情况下,.h文件是C模式,而不是C++模式。[您可以通过在窗口底部的括号中查找“C++”或“C”来检查这一点。]您可以设置Emacs始终打开。

    (setq auto-mode-alist (append '(("\\.h\\'"   . c++-mode)
                    )
                      auto-mode-alist
                      ))
    

    另一件要检查的是如何设置C-Default-Style。“CC模式”的信息页面将详细介绍所有可能性。