Emacs backspace только один пробел

Как я могу настроить Emacs (24.3, OS X Yosemite, Prelude) так, чтобы он всегда возвращал только один пробел? Когда я нахожусь внутри блоков кода, он иногда без предупреждения возвращает 4 пробела, и мне приходится вставлять пробелы обратно.

Весь мой код имеет отступ в 2 пробела, а не вкладки.

Извините, если это основной вопрос, я только начинаю работать с emacs.


person FeifanZ    schedule 13.12.2014    source источник
comment
Различные режимы делают разные вещи — поэтому, возможно, введите C-h k, а затем клавишу возврата, чтобы увидеть, какая функция прикреплена к этой клавише в любом основном / второстепенном режимах, которые вы используете. Как только вы определите это, вы можете настроить определение по своему вкусу.   -  person lawlist    schedule 13.12.2014
comment
Говорит, что это связано с командой coffee-dedent-line-backspace, которая представляет собой интерактивную скомпилированную функцию Lisp в `coffee-mode.el. Как мне изменить команду, чтобы получить желаемую функциональность?   -  person FeifanZ    schedule 13.12.2014
comment
Есть несколько способов сделать это - люди, которые посещают эти темы / форумы, относятся к исходному коду как к священному / святому. Я лично изменяю свой исходный код, например, закомментирую ;; строку 236 (если вы используете тот же исходный код, что и по следующей ссылке): github.com/defunkt/coffee-mode/blob/master/coffee-mode.el я опубликую альтернативу для люди, выступающие против модификации исходного кода. По сути, аннулирование назначения раскладки клавиатуры для coffee-dedent-line-backspace приводит к тому, что резервный вариант по умолчанию вступает во владение. Но изменение исходного кода требует повторной компиляции байтов.   -  person lawlist    schedule 13.12.2014
comment
ПРИМЕЧАНИЕ. Я не искал исходный код прелюдии для всех вызовов coffee-dedent-line-backspace, потому что он у меня не установлен, и вы, вероятно, можете взять его на себя. Я смотрел только на coffee-mode.el. В настройке прелюдии всегда могут быть другие назначения раскладки клавиш, которые назначают coffee-dedent-line-backspace для возврата. Это для тех, кто против модификации исходного кода: (eval-after-load "coffee-mode" '(progn (define-key coffee-mode-map "\177" nil)))   -  person lawlist    schedule 13.12.2014
comment
@lawlist работает отлично! Я приму это, если вы превратите его в ответ.   -  person FeifanZ    schedule 13.12.2014


Ответы (1)


Следующий код может быть вставлен в .emacs или другие подобные файлы инициализации. Эффект будет заключаться в том, чтобы аннулировать предыдущее назначение клавиши coffee-mode для \177, которое, как указал исходный постер, является клавишей возврата.

(eval-after-load "coffee-mode"
  '(progn
    (define-key coffee-mode-map "\177" nil)))

Кроме того, строку 236 текущей версии coffee-mode можно закомментировать, т. е. закомментировать (define-key map "\177" 'coffee-dedent-line-backspace) так, чтобы перед ней стояла хотя бы одна точка с запятой. Затем запустите M-x byte-compile-file RET и путь к файлу coffee-mode.el, а затем RET. Исходный код можно найти по следующей ссылке:

http://www.github.com/defunkt/coffee-mode/blob/master/coffee-mode.el

person lawlist    schedule 13.12.2014