Код конфигурации Emacs lisp, который изменяет electric-indent-mode до и после вставки из буфера обмена

Код конфигурации Emacs lisp, который изменяет electric-indent-mode до и после вставки из буфера обмена

Начиная с Emacs 24.4 (я думаю), cj и ret поменялись местами, так что indent теперь вызывается после ret. И эти отступы в текстовом режиме являются относительными отступами, так что когда вы вставляете код с отступом, он вставляется по диагонали, а не выравнивается:

# copied code
  line1
  line2
  line3

# pasted
  line1
    line2
      line3

Я могу решить эту настройку electric-indent-mode(команда flip/flop), но мне нравится поведение относительно отступа, когда я пишу в текстовом режиме. Я хочу выключать его только при вставке текста.

Есть ли у кого-нибудь код, который я мог бы использовать для установки сочетания клавиш, вызывающего electric-indent-mode, вставляющего данные из буфера обмена и снова включающего electric-indent-mode?

Я был бы признателен за любое дидактическое объяснение кода, чтобы я мог вспомнить забытый элисп.

решение1

Это должно происходить только в текстовом терминале (где «вставка» заканчивается простой отправкой текста посимвольно в Emacs, как будто вы ввели эти символы).

Начиная с Emacs-25, это больше не должно быть проблемой, поскольку он использует поддержку «вставки в квадратных скобках» из текстового терминала (при которой терминал отправляет специальные управляющие последовательности до и после вставляемого текста).

Его даже не нужно настраивать: «он просто работает».

Связанный контент