Emacs Backspace в начале строки с вкладками похож на intellij?

В intellij, когда вы находитесь на отступе табуляции, скажем, 4, в начале новой строки, и вы нажимаете клавишу Backspace, выполняется возврат через все предшествующие пробелы и переход к отступу табуляции 4 в предыдущей строке.

В emacs в той же ситуации выполняется возврат через один пробел.

Как заставить emacs вести себя как система обратного пространства Intelij? Есть ли плагин для этого?

Вот пример того, что происходит, когда вы нажимаете клавишу Backspace в intelij: введите здесь описание изображения

введите здесь описание изображения


person Noah    schedule 06.10.2015    source источник
comment
Что делать, если в предыдущей строке есть текст? Вернуться к концу текста предыдущей строки или вернуться к началу текущей строки? Кроме того, каков результат C-h k Backspace?   -  person Randy Morris    schedule 06.10.2015
comment
Вы не должны делать Emacs слишком похожим на что-то другое — просто научитесь делать это наилучшим образом на языке Emacs и сосредоточьтесь на более важных вещах, иначе вы можете упустить что-то еще из-за ваших особых настроек.   -  person Erik Kaplun    schedule 06.10.2015
comment
Если в предыдущей строке есть текст, он должен вернуться к концу текста в предыдущей строке.   -  person Noah    schedule 06.10.2015


Ответы (1)


Я считаю, что это близко к тому, что вы хотите:

(defun my-backspace ()
  (interactive)
  (let* ((end (save-excursion
                (end-of-line)
                (point)))
         (beginning (save-excursion
                      (beginning-of-line)
                      (point))))
    (if (string-match "^[ \t]*$" (buffer-substring beginning end))
        (progn
          (beginning-of-line)
          (kill-line)
          (previous-line)
          (indent-for-tab-command)
          (end-of-line))
      (c-electric-backspace))))

 (define-key c-mode-map (kbd "DEL") 'my-backspace)
person Brian Malehorn    schedule 06.10.2015
comment
Это прекрасно работает, за исключением того, что c-electric-backspace не является функцией; Затем я изменил c-electric-backspace на (delete-backward-char 1). Теперь все работает как положено, за исключением того, что когда я открываю файл (ctrl+o в ergoemacs), клавиша возврата ничего не делает. Есть идеи, как это исправить? - person Noah; 07.10.2015