Установить отступ для функции сценария оболочки

11

Я пытаюсь установить количество пробелов на отступ для запуска новой функции sh-mode(подрежим bash). Я попытался установить:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(как показано custom-set-variablesв .emacs) и некоторые другие , а также, но ни один из них не имели никакого эффекта!

Робин Грин
источник
Способ установки переменных - не через custom-set-variables(это то, что используется внутри Customize, но не предназначено для использования вручную). Лучше использовать такие вещи, как (setq sh-basic-offset 2).
Стефан

Ответы:

7

sh-basic-offsetТребуется установка требуемого отступа, но я не осознавал, что также необходимо закрыть и снова открыть все файлы сценариев оболочки, прежде чем настройка вступит в силу. Я не могу вспомнить когда-либо делать это раньше в Emacs.

Робин Грин
источник
1
После изменения .emacsвы должны либо выйти из emacs и перезапустить его, либо использовать M-x load-fileдля его перезагрузки. .emacsЕсли вы хотите перезагрузить файл, который вы открыли в редакторе, вы можете сказать C-x C-v RETURN«пересмотреть» его.
Алекс Л
Загрузочный файл @AlexL не работает в этом конкретном случае. Как я уже сказал, это очень необычно. Обычно достаточно просто настроить переменную.
Робин Грин,
Хм ... ты знаешь, почему это будет @ robin-green? Мне любопытно.
Алекс Л
Вы также можете использовать, M-x set-variableесли вы хотите просто изменить это для буфера, в котором вы работаете.
kotakotakota
1

Я установил basic-offset на 2, но это, похоже, не сработало, я снова нажал C-h v sh-<TAB>и понял, что sh-indentationя установил эту переменную на 2, и теперь все, похоже, работает как шарм.

Альбаро Перейра
источник
Пожалуйста, уточните, что вы подразумеваете под «set-basic-offset», а также уточните, как именно вы «устанавливаете эту переменную на 2».
Стефан
В форуме пропущена вкладка, потому что я поместил между большим и меньшим символом. Ch v sh- "нажмите вкладку" автозаполнение покажет вам список переменных.
Альбаро Перейра
Я исправил вашу разметку, но ваш комментарий все еще не объясняет, что вы имели в виду под «set-basic-offset», и как вы «устанавливаете эту переменную на 2».
Стефан
Эта переменная устарела с 26.1, используйте sh-basic-offsetвместо этого.
goetzc
0

У меня был тот же опыт, что и у Albaro: настройка sh-basic-offset не имела никакого эффекта, но настройка sh-indentation работала как положено.

В моем случае я оценивал (setq sh-basic-offset 2)с помощью emacs, например. через Mx eval-выражение. Я бегу GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Мой основной режим - Shell-скрипт.

Wes
источник