Я новичок в emacs, и его отступы заставляют меня взбираться по стенам. Это слишком умно для собственного блага; он (ошибочно) думает, что знает, как я хочу отформатировать свой исходный код, но у меня нет времени разбираться с каждой настройкой для каждого режима для каждого языка, для которого я пишу код; и на многих из этих языков вообще не включен какой-либо режим.
Вот поведение, которое я хотел бы:
- TAB вставляет отступ
- RET вставляет новую строку, затем копирует пустые символы из начала предыдущей строки в первый непустой символ или конец строки, в зависимости от того, что наступит раньше.
- DEL (клавиша возврата) в пустом тексте между началом строки и первым непустым символом / концом строки удаляет один отступ, если это возможно, в противном случае - один символ, как обычно
- Без автоматического отступа на {
- Без автоудаления на}
- Фактически, никакого умного отступа нигде в любое время, просто скопируйте отступ предыдущей строки на RET.
- Две переменные, которые необходимо настроить для каждого формата исходного файла: ширина табуляции и содержимое отступа. Предпочтительно они могут быть настроены для произвольных форматов исходного кода без необходимости писать для них основной режим, если только запись основного режима не является однострочным в .emacs, состоящим из двух
setq
s.
Это дало бы мне логичное и последовательное поведение на всех языках. Это оставило бы мне работу по форматированию кода, но это нормально, я занимаюсь этим уже 20 лет и знаю, как сделать другие макросы, которые сделают это эффективным. Что еще более важно, это избавляет меня от бесконечной возни с настройками конфигурации, пытаясь добиться автоматического поведения в соответствии с моими предпочтениями. И мои макросы могут полагаться на последовательное поведение, поэтому они корректно работают во всех режимах.
Возможно ли вышеперечисленное? Неужто кто-то еще делал это раньше? Есть ли какой-нибудь второстепенный режим, который делает это так?
C-<space>
- очень плохая идея, так как она играет очень важную роль в маркировке региона. Во-вторых, нет причин тратить 15 часов на приведение Emacs в форму. Текущее состояние является результатом 30-летнего развития и использования тысячами программистов. Проблема в том, что вы пытаетесь заставить Emacs вести себя как то, что вы использовали раньше. Просто делайте это шаг за шагом. Я могу написать ниже некоторый код, который повторно связывает ключи для всех указанных вами режимов. Вы можете изменить настройки позже, если захотите. - person abo-abo   schedule 22.09.2013electric-indent-mode
). - person Stefan   schedule 22.09.2013