LINUX.ORG.RU

удаление слова, но если точка или запятая - удалить точку или запятую

 ,


0

1

У меня есть бинд на C-w

(defun backward-delete-word (arg)
  "Delete characters backward until encountering the end of a word.
  With argument, do this that many times."
  (interactive "p")
  (delete-word (- arg)))

было бы клево, если в слове присутствует . или , - то удалять не слово, а . или запятую. [] - позиция курсора.

слово,       []
слово.[]     


Вот набросал:

(defun my-do-killing ()
  "Удаляет либо слово, либо точку, либо запятую."
  (delete-horizontal-space)
  (let ((ch (char-before)))
    (if (or (eq ch ?.) (eq ch ?,))
        (delete-backward-char 1)
      (backward-kill-word 1))))

(defun my-backward-kill-word-or-dot-or-comma (arg)
  "Удаляет слово/точку/запятую `arg' раз."
  (interactive "p")
  (dotimes (_i arg)
    (my-do-killing)))
  
(global-set-key (kbd "C-w") 'my-backward-kill-word-or-dot-or-comma)

evbogdanov ()