Удалить текущее (неатомарное) s-выражение в Emacs

Есть ли простой способ удалить наименьшее возможное неатомарное s-выражение на основе расположения курсора? Я хочу повернуть это ("|" - курсор)

(defun foo (bar)
  (if bar
      |789
    (+ 456 123)))

в это

(defun foo (bar)
  |)

Это кажется полезным, но я не смог найти подходящую (одношаговую) команду в шпаргалке Paredit.

3 ответа

Решение

Я также не нашел предопределенную команду.

К счастью, с Emacs действительно легко реализовать свой собственный.

Например:

(define-key global-map (kbd "C-c C-d") 
    (lambda () (interactive) (backward-up-list) (paredit-kill)))

C-M-u делает правильные вещи внутри строк в paredit 23, поэтому `CMu CMk'будет работать даже внутри строки.

Предполагаемый курсор находится не под номером 789, а внутри строки "Foo" в этом месте.

Чем эта команда не выполнится.

Вот почему ar-kill-parentized-atpt и связанные расширения существуют в

http://launchpad.net/s-x-emacs-werkstatt/

Другие вопросы по тегам