Emacs заменя интервалите с табулатори

Проблемът е, че искам Emacs да запазва раздели, когато съм ги въвел като раздели и интервали, ако съм ги въвел като интервали. Но редакторът заменя моите ръчно въведени интервали с tab, когато броят на интервалите достигне amonut, който е дефиниран в tab-stop-list, т.е. когато пиша

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

(където tab е    → и интервалът е ) 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)


Струва ми се, че преследвате https://www.emacswiki.org/emacs/SmartTabs ?

person phils    schedule 05.09.2014
comment
да По някаква причина си помислих, че вече съм го инсталирал. Но не беше. - person tijagi; 05.09.2014
comment
Но никога няма да работя за shell-mode ;_; github.com/jcsalomon/smarttabs/issues/11#issuecomment-10761636 - person tijagi; 05.09.2014

Персонализирайте опция 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