Emacs заменяет пробелы табуляцией

Проблема в том, что я хочу, чтобы Emacs сохранял вкладки, когда я ввожу их как вкладки, и пробелы, если я ввожу их как пробелы. Но редактор заменяет мои вручную набранные пробелы табуляцией, когда количество пробелов достигает значения, определенного в tab-stop-list, т.е. когда я печатаю

   →func1() {
   →   →some_long_command_name -param1 -param2 \
   →   →→→→→→→→→→→→→→→→→→→→→→→→-param3 -param4

(где вкладка    → и пробел ) Emacs делает это

   →func1() {
   →   →some_long_command_name -param1 -param2 \
   →   →   →   →   →   →   →→→→-param3 -param4

Что нарушает отступ, который я хотел сохранить, если длина вкладки изменится.


person tijagi    schedule 03.09.2014    source источник
comment
Emacs не преобразует пробелы во вкладки, как вы описываете. Либо вы используете какой-то странный дополнительный пакет, либо вы делаете что-то еще, кроме того, что вы описываете (например, вы повторно отступаете код, может быть?).   -  person Stefan    schedule 03.09.2014
comment
@Stefan Теперь я думаю, что это может быть ошибка режима ebuild. Постараюсь связаться с его разработчиками.   -  person tijagi    schedule 03.09.2014


Ответы (2)



Настройте параметр indent-tabs-mode, чтобы задать значение nil. Это останавливает Emacs от преобразования пробелов отступа в использование TAB символов. SPC символов и TAB символов, которые вы вводите, остаются таковыми.

Затем вам нужно будет либо связать ключ TAB с self-insert-command, либо использовать C-q TAB для вставки символа TAB. Это означает, что вы теряете ключ TAB в качестве команды отступа. В качестве альтернативы вы можете привязать какую-либо другую клавишу к команде, которая вставляет символ TAB, или привязать какую-либо другую клавишу, кроме TAB, к команде отступа, к которой по умолчанию привязан TAB.

person Drew    schedule 03.09.2014
comment
Я бы не хотел терять автоматические отступы, я хотел бы избавиться только от того, что Emacs вставляет после. Я думаю, что автоматический отступ и замена пробелов не должны зависеть друг от друга. Я мог бы проследить это до функции 'indent-relative в indent.el, но я не знаю elisp, чтобы углубиться :D - person tijagi; 03.09.2014