Как заставить Emacs сбросить отступ?

Я хочу, чтобы emacs автоматически сбрасывал свой уровень отступа на 0 в одной конкретной точке файла.

Например: поскольку у меня есть пространства имен nested-nested-nested-.., в файлах C++ я бы не хотел делать отступы для всего тела внутри пространств имен.

#include <vector>    
namespace qw {
namespace impl {

using std::vector;

class index_impl {
    vector<string> entries;
public:
    void add(const string &normalized, const string& original);
    string getBestMatch(const string& normalized) const;
};

} // namespace impl_multimap
} // namespace qw

Это, конечно, полезно только в тех случаях, когда внутри вложенных пространств имен существует в основном один класс для реализации. В заголовочных файлах это может привести к путанице. Поэтому я думаю, что лучшим решением было бы иметь специальный комментарий или что-то в этом роде.

#include <vector>    
namespace qw {
namespace impl {
// -*- indent: 0 -*-

using std::vector;
...

Любые другие идеи тоже подойдут.

1 ответ

Первоначальный источник.

Пожалуйста, поместите эту строку в ваш файл Emacs:

(c-set-offset 'substatement-open 0)

Детальный метод:

  1. Перейти к строке, которую вы хотите сделать отступ

  2. Пожалуйста, введите C C CO (не ноль) и нажмите Enter

  3. Теперь введите "0" и нажмите Enter, чтобы не было лишних отступов.

  4. Пожалуйста, наберите Tab, чтобы заново сделать отступ

  5. Будущее "{" будет иметь правильную настройку вкладки, пока вы не перезапустите emacs.

Кроме того, вы можете поместить это в ваш файл Emacs:

(c-set-offset 'SYNTACTIC-SYMBOL OFFSET)

чтобы увидеть код LISP.

Научитесь форматировать исходный код C++ вне emacs здесь.

Другие вопросы по тегам