Невозможно отключить emacs, автоматически изменяющий отступ строк

Я хотел бы выключить electric-indent-mode для всех основных режимов в Emacs из моего .emacs файл.

Я пытался добавить их в свой .emacs файл (каждый отдельно):

(electric-indent-mode -1)

(add-hook 'after-change-major-mode-hook (lambda() (electric-indent-mode -1)))

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

(add-hook 'c-mode-common-hook
  (lambda ()
    (add-hook 'electric-indent-functions
      (lambda () 'no-indent) nil 'local)))

Никто не работал на моем простом .cpp тестовый файл.

Чтобы быть немного более понятным, вот что происходит:

Это:

#include <iostream>
int main() {
             std::cout << "Hello World!";
  return 0;
}

становится:

#include <iostream>
int main() {
  std::cout << "Hello World!";
  return 0;
}

Линия с std::cout << ... перестраивается, чтобы иметь 2 пробела, когда я нажимаю либо второй : или ;

Я хочу иметь возможность контролировать способ отступа моих файлов, вводя символы самостоятельно, а не изменяя их в emacs. Я считаю, что это с отключением electric-indent-mode (отсюда и мои попытки отключить), но может быть и другой способ.

Я использую emacs 24.3.1 (x86_64-redhat-linux-gnu, GTK+ версия 3.10.9)

1 ответ

Решение

Я думаю, что вы лаете не на то дерево. В моем Emacs (который по общему признанию является более старой версией) двоеточие связано с c-electric-colon в режиме C++. Это ведет себя "электрически" независимо от electric-indent-mode, Прочитайте его документацию; Кажется, есть переменная c-electric-flag который вы можете установить nil отключить это поведение.

Если ничего не помогает, и вы хотите сохранить другие функции режима C++, связывание клавиш, которые вы не хотите вести "электрически" в этом режиме, кажется, путь для этого.

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