Как правильно определить define-key в emacs? - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь переключить режим вставки / нормального режима на зло в spacemacs.Я успешно выполнил это с помощью кода там.Но светодиодный свет рядом с Caps-Lock на моем MacBook Pro 2018 13 'перестал работать.Поэтому я пытаюсь переключить светодиод на моем caps-lock с помощью скрипта.

Я использую элементы karabiner для переназначения caps-lock на f13.Когда emacs записывает f13, он меняет состояние на состояние «зло нормальное» или «состояние вставки зло».

Проблема начинается, когда я хочу добавить еще одну команду для запуска, когда нажата клавиша f13, также известная как caps-lock.Его (shell-command "/Users/atrumoram/setleds +caps").Который включает свет на заглавные буквы или выключает его.Я пытался сделать свою собственную функцию defun.Но я действительно не могу заставить это работать вместе.В конце я хотел бы получить что-то вроде этого.

Это код, который переключает режим вставки / нормальный во зло, используя capslock

  (define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state)
  (define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state)

Inконец, я хотел бы иметь что-то вроде этого.

  (define-key evil-insert-state-map (kbd "<f13>") 'evil-normal-state (shell-command "/Users/atrumoram/setleds +caps"))
  (define-key evil-normal-state-map (kbd "<f13>") 'evil-insert-state (shell-command "/Users/atrumoram/setleds -caps"))

Есть ли какой-нибудь способ, которым кто-то может мне помочь?Ждем ваших идей.

1 Ответ

2 голосов
/ 24 мая 2019

Клавиша может быть привязана только к одной функции за раз, поэтому для того, чтобы при нажатии клавиши происходили две вещи, вам нужно создать функцию, сделать ее «интерактивной» и привязать ее к клавише, которую вы нажимаете.want.

Эта функция выполняет два действия, одно за другим:

(defun my-evil-normal-state-and-set-caps-led ()
  (interactive)
  (evil-normal-state)
  (shell-command "/Users/atrumoram/setleds +caps"))

Поскольку она объявлена ​​как interactive функция, вы можете проверить ее с помощью M-x my-evil-normal-state-and-set-caps-led.

Тогда это просто вопрос:

(define-key evil-insert-state-map (kbd "<f13>") 'my-evil-normal-state-and-set-caps-led)

И наоборот для переключения в состояние вставки.

...