Как настроить эту функцию elisp, чтобы различать C-d & DEL? - PullRequest
2 голосов
/ 20 мая 2010

Вот моя текущая функция (слепо вставленная с сайта)

(defun tweakemacs-delete-one-line ()
  "Delete current line."
  (interactive)
  (beginning-of-line)
  (kill-line)
  (kill-line))
(global-set-key (kbd "C-d") 'tweakemacs-delete-one-line)

Здесь есть две причуды, от которых я хочу избавиться. 1) Это фактически связывает DEL с той же функцией. Я хочу, чтобы мой DEL оставался «удалить один символ». 2) Должно быть условие, при котором он не будет убивать дважды, если строка является только символом новой строки.

Ответы [ 2 ]

5 голосов
/ 20 мая 2010

Чтобы различать эти два, используйте предпочтительный векторный синтаксис для ключей:

(global-set-key [delete] 'foo)
(global-set-key [(control d)] 'bar)

Что касается второго, это звучит так, как если бы вы либо хотели

(setq kill-whole-line t)

или просто хотите использовать функцию kill-entire-line.

1 голос
/ 21 мая 2010

Я прочитал часть руководства по сочетаниям клавиш , и там говорилось, что C-d и <DEL>, как и другие специальные клавиши, связаны. Чтобы отсоединить их, вы должны явно установить их обоих.

В конечном счете, я использовал это решение:

(global-set-key (kbd "<delete>") 'delete-char)
(global-set-key ([control d]) 'kill-whole-word)
...