Emacs: как связать клавишу дважды? - PullRequest
3 голосов
/ 07 февраля 2011

Я использую Emacs (23) и привязываю комбинацию клавиш C-. к функции:

(global-set-key (kbd "C-.") 'myfunction)

Возможно ли связать быстрое «двойное нажатие» клавиши?Например, я хотел бы вызвать функцию myfunction при быстром наборе . два раза.

Ответы [ 4 ]

5 голосов
/ 07 февраля 2011

Нет ничего встроенного, но вы можете использовать этот код.Настройте переменные dc-single-click-cmd и dc-double-click-cmd, чтобы они были желаемыми командами.

Примечание: это вносит небольшую задержку, поскольку код должен ждать немного времени, чтобы определить, является ли событиебыл один или двойной щелчок.

(defvar dc-single-click-cmd 'dc-example-single-click)
(defvar dc-double-click-cmd 'dc-example-double-click)
(defvar dc-click-timer nil
  "Pending single-click event.")
(defun dc-example-single-click ()
  (interactive)
  (message "A single click just happened."))
(defun dc-example-double-click ()
  (interactive)
  (message "Wait!  I meant double click."))
(defun dc-click-cmd ()
  "Either kick off a single click, or a double click."
  (interactive)
  (if dc-click-timer
      (progn
        (cancel-timer dc-click-timer)
        (setq dc-click-timer nil)
        (call-interactively dc-double-click-cmd))
    (setq dc-click-timer (run-at-time (when double-click-time 
                                            (/ 1000.0 double-click-time))
                                      nil
                                      'dc-call-single-click))))
(defun dc-call-single-click ()
  "spawn the single click"
  (setq dc-click-timer nil)
  (call-interactively dc-single-click-cmd))
2 голосов
/ 20 сентября 2012

Я считаю, KeyChord - это каноническое решение этого вопроса.

(Отказ от ответственности: я не использую KeyChord сам (пока), но многие люди используют, поэтому я уверен, что это по крайней мере стоит попробовать.)

0 голосов
/ 20 сентября 2012

https://github.com/k-talo/double-type.el предлагает функциональность, аналогичную той, которую вы ищете.

0 голосов
/ 20 августа 2011

(defun myfunction2 () (Интерактивный) (если (нет (например, последняя команда 'myfunction2)) (вставить «.») (setq this-command nil) (delete-backward-char 1) (звонок-интерактивно 'моя функция)))

(defun myfunction () (Интерактивный) (сообщение «MYFUNCTION»))

(глобальный набор ключей "." 'Myfunction2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...