1

В Aquamacs 3.2 я хочу переназначить cmd+W, чтобы он убивал текущий буфер вместо закрытия кадра. Я использую Aquamacs в классическом стиле Emacs с одним окном, поэтому я закрываю буферы гораздо чаще, чем закрываю окна.

Я попробовал это в моем .emacs .

(global-unset-key [?\s-w])
(define-key global-map [?\s-w] 'kill-buffer)

Я также попробовал вариант этого ответа, но он все еще убивает окно.

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(global-unset-key (kbd "s-w"))
(global-set-key (kbd "s-w") 'kill-current-buffer)

Я также попытался поместить этот код в ~/Library/Preferences/Aquamacs Emacs/Preferences.el как предложено в этом ответе.

Я проверил с помощью describe-function что он загружен.

kill-current-buffer is an interactive Lisp function in `.emacs'.

It is bound to s-W.

(kill-current-buffer)

Not documented.

1 ответ1

1

Происходят две вещи. Во- первых, Aquamacs имеет переназначен командную клавишу Mac OS X на альт. Так и должно быть (global-set-key '[(alt w)] 'kill-current-buffer) .

Но это дает предупреждение из-за второго, osx-key-mode определил свою собственную osx-key-mode-map . Emacs предлагает переопределить этот ключ в этой таблице ключей с помощью define-key .

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(when (boundp 'osx-key-mode-map)
    (define-key osx-key-mode-map '[(alt w)] 'kill-current-buffer))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .