2015-09-02 3 views
2

Я хотел бы отключить electric-indent-mode для всех основных режимов в emacs из моего файла .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 << ... повторной alignes иметь 2 когда я нажимаю либо второй :, либо ;

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

Я использую Emacs 24.3.1 (x86_64-RedHat-Linux-гну, GTK + версии 3.10.9)

+0

Сообщите об этом как об ошибке. Обратите внимание, что единственное, что вам (должно) понадобиться - это «(электрический-indent-mode -1)», поскольку это глобальный второстепенный режим. После этого все остальное, что вы добавили, не влияет. – Stefan

ответ

3

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

Если все остальное не работает, и вы хотите сохранить другие функции режима C++, переключение ключей, которые вы не хотите вести себя «электрически» в этом режиме, похоже, является способом выхода.

+0

Спасибо! Оказывается, я лаял неправильное дерево, и эта проблема существовала только с «c-electric-flag» и только в режиме C++. Установка его на 'nil' сработала. : D –