将同一行上的嵌套命名空间缩进一级

发布于 2024-09-08 00:01:27 字数 376 浏览 2 评论 0原文

在 emacs 21 中:

namespace Abc { namespace Def { 
    class X;
    namespace Ghi {
        class Y;
    }
} }

但现在在 emacs 22.2.1 中:

namespace Abc { namespace Def {
        class X;
        namespace Ghi {
            class Y;
        }
    } }

如何恢复旧的行为?请注意,我不需要固定的缩进列,我希望它缩进一个级别,无论该行包含多少个“命名空间{”。

In emacs 21:

namespace Abc { namespace Def { 
    class X;
    namespace Ghi {
        class Y;
    }
} }

But now in emacs 22.2.1:

namespace Abc { namespace Def {
        class X;
        namespace Ghi {
            class Y;
        }
    } }

How do I get the old behaviour back? Note that I don't want a fixed column for indentation, I want it to indent one level regardless of how many 'namespace {' the line contains.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亚希 2024-09-15 00:01:27

事实上,我自己在一个清晰的思考中找到了答案:

(defun followed-by (cases)
  (cond ((null cases) nil)
        ((assq (car cases) 
               (cdr (memq c-syntactic-element c-syntactic-context))) t)
        (t (followed-by (cdr cases)))))


(c-add-style  "foo"      
              `( ...
        (c-offsets-alist
         ( ... )
         (innamespace
          . (lambda (x) 
          (if (followed-by 
               '(innamespace namespace-close)) 0 '+))))))

“……”当然象征着其他个性化。

I actually found the answer myself, in a moment of clear thinking:

(defun followed-by (cases)
  (cond ((null cases) nil)
        ((assq (car cases) 
               (cdr (memq c-syntactic-element c-syntactic-context))) t)
        (t (followed-by (cdr cases)))))


(c-add-style  "foo"      
              `( ...
        (c-offsets-alist
         ( ... )
         (innamespace
          . (lambda (x) 
          (if (followed-by 
               '(innamespace namespace-close)) 0 '+))))))

The '...' symbolizes other personalizations of course.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文