c++ - Emacs 可以在重新缩进缓冲区时将 C++ 大括号转换为挂起吗?

标签 c++ emacs elisp indentation

当我重新缩进 C++ 缓冲区时,我想像这样转换代码:

void foo(int a)
{
    try
    {
        for (unsigned int i=0; i<10; ++i)
        {
            if (++a)
            {
                break;
            }
            else
            {
                continue;
            }
        }
    } catch (...)
    {
        ;
    }
}

像这样编码:

void foo(int a) {
    try {
        for (unsigned int i=0; i<10; ++i) {
            if (++a) {
                break;
            }
            else {
                continue;
            }
        }
    }
} catch (...) {
    ;
}

此外,我希望类定义和 namespace 保持不变。 Emacs 中是否存在此功能?

我意识到这可以用一堆正则表达式来完成, 但是最好使用一个现成的函数来处理 所有的边缘情况和所有。

最佳答案

一个简单的宏就可以完成这项工作,例如:

(setq last-kbd-macro
   "\C-s{\336\C-e")

后面是:M-0C-xe

关于c++ - Emacs 可以在重新缩进缓冲区时将 C++ 大括号转换为挂起吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18986872/

相关文章:

emacs - 如何通过覆盖 Emacs 中的 set-face-attribute 来禁用粗体字体?

c++ - Mac OS X - 获取文件中的行尾

emacs - 使 php-mode(和其他 cc-mode 派生模式)与 Emacs 23 兼容

emacs - Elisp:如何使这个函数简短

emacs - 如果大纲标题 `**` 之前没有空行,则插入一个空行

emacs - 函数名称中的双减号 (--) 约定在 Emacs Lisp 中意味着什么

c++ - 在 Eigen 中求解稀疏上三角系统?

c++ - 如何获取数组中字符串元素的字符数? [C++]

c++ - 如何在C++中播放声音?

emacs - 在整个 Emacs 缓冲区中突出显示名称