art*_*lla 8 emacs macros haskell elisp haskell-mode
在haskell-mode的emacs中,我想更改命令
至
从以下提示: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)
Run Code Online (Sandbox Code Playgroud)
变体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)
Run Code Online (Sandbox Code Playgroud)
[编辑1] @Tikhon Jelvis:这绝对是一个很好的学习练习!谢谢.使用帖子中列出的方法,我将您的功能更改为:
(defun my-haskell-mode-save-buffer ()
(interactive)
(save-buffer)
(inferior-haskell-load-file)
(other-window 1))
Run Code Online (Sandbox Code Playgroud)
最后一行以编程方式将光标切换到交互式窗口.谢谢.
[EDIT2]其他变种包括:
(defun my-haskell-mode-save-buffer ()
(interactive)
(execute-kbd-macro (read-kbd-macro "C-c C-l"))
(other-window 1))
Run Code Online (Sandbox Code Playgroud)
并且:
(defun my-haskell-mode-save-buffer ()
(interactive)
(execute-kbd-macro [?\C-c ?\C-l])
(other-window 1))
Run Code Online (Sandbox Code Playgroud)
你想要做的是运行运行的函数,C-x C-s
然后运行函数C-c C-l
.您可以通过某些键绑定来找出运行的函数C-h k
.也就是说,首先输入C-h k
您感兴趣的键命令.
这使我们(save-buffer &optional ARGS)
对C-x C-s
和(inferior-haskell-load-file &optional RELOAD)
对C-c C-l
.这&optional
意味着你的想法 - 这个论点是可选的,所以我们不关心它.
现在编写执行这两个功能的函数:
(defun my-haskell-mode-save-buffer ()
(interactive)
(save-buffer)
(inferior-haskell-load-file))
Run Code Online (Sandbox Code Playgroud)
现在你可以将这个函数绑定到C-x C-s
haskell模式,就像你一直在做的那样:
(add-hook 'haskell-mode-hook (lambda ()
(local-set-key (kbd "C-x C-s") 'my-haskell-mode-save-buffer)))
Run Code Online (Sandbox Code Playgroud)
编辑:C-c C-l
在加载之前,它似乎默认保存您的文件.这意味着你可以写
(add-hook 'haskell-mode-hook (lambda ()
(local-set-key (kbd "C-x C-s") 'inferior-haskell-load-file)))
Run Code Online (Sandbox Code Playgroud)
并且在不编写自己的功能的情况下具有完全相同的效果 但是,我认为以我的方式写它是一个很好的学习练习:P.只要您想将多个不同的键绑定合并为一个,该方法就可以使用.
归档时间: |
|
查看次数: |
788 次 |
最近记录: |