Emacs :Переопределение команды в Haskell -режим (haskell -режим -хук)

в emacs в режиме haskell -хотел изменить команду

  • "С -x С -с"

к

  • «C -x C -s», за которым следует «C -c C -l».

Беря пример с:Haskell.org :Emacs/Keybindings и простое использование Я попытался вставить следующие варианты в файл.emacs, но они не сработали. Любые предложения относительно того, как я могу реализовать описанную выше функциональность, будут приветствоваться! Спасибо.

Вариант 1

(defun haskell-hook ()
  (define-key haskell-mode-map (kbd "C-x C-s") (kbd "C-x C-s C-c C-l"))

(add-hook 'haskell-mode-hook 'haskell-hook)

Вариант 2

(defun haskell-hook ()
  (define-key haskell-mode-map (kbd "C-x C-s") 'my-haskell-mode-save-buffer)

(defun my-haskell-mode-save-buffer ()
  (interactive)
  (execute-kbd-macro [?\C-s ?\C-x ?\C-c ?\C-l return]))

(add-hook 'haskell-mode-hook 'haskell-hook)


[РЕДАКТ. 1]@Tikhon Jelvis :это определенно было хорошим упражнением для обучения! Спасибо. Используя методы, описанные в вашем посте, я изменил вашу функцию на:

(defun my-haskell-mode-save-buffer ()
  (interactive)
  (save-buffer)
  (inferior-haskell-load-file)
  (other-window 1))

где последняя строка программно переключает курсор на интерактивное окно. Спасибо.

[РЕДАКТИРОВАТЬ2]Другие варианты включают:

(defun my-haskell-mode-save-buffer ()
  (interactive)
  (execute-kbd-macro (read-kbd-macro "C-c C-l"))
  (other-window 1)) 

и:

(defun my-haskell-mode-save-buffer ()
  (interactive)
  (execute-kbd-macro [?\C-c ?\C-l])
  (other-window 1))

8
задан Richard J. Ross III 20 March 2013 в 16:52
поделиться