[英]Set TAB as shortcut for autocompletion in Emacs Haskell mode
当我在Emacs中使用Haskell REPL(GHCI)(由Cc Cb调用)时,我想使用TAB自动完成事情。 M- /是我不够好,但我不知道这个功能的名字TAB绑定到它(TAB在交互模式适用于制表(惊讶吗?),我发现它完全没用)。
我希望这些更改仅在TAB用于缩进时才适用于交互模式,而不适用于常规编辑(可能还用于其他方面,我还没有完全理解所有内容)。
扩展@chi的注释,您可以使用Ch k M-/
查找Lisp函数的名称,它提供了hippie-expand
功能。
要以ghci
交互模式绑定TAB
,请使用以下elisp代码:
(define-key haskell-interactive-mode-map (kbd "TAB") 'hippie-expand)
或者,如果您想以普通的haskell-mode
将其绑定,则:
(define-key haskell-mode-map (kbd "TAB") 'hippie-expand)
OK,使用chi的出色注释 ,我发现绑定到M- /的函数的名称是dabbrev-expand
(通过Ch k M- / )。
现在我们需要Haskell REPL的主要模式的名称,我发现我们可以使用Ch v major-mode来获得它,它实际上是inferior-haskell-mode
。
然后,我想有一个inferior-haskell-mode-hook
,当创建REPL框架时,我们可以使用它来进行调整。
要添加本地快捷方式绑定,应使用define-key
。 参数keymap
值可以通过current-local-map
。
了解这些事实,我们可以写:
(add-hook 'inferior-haskell-mode-hook
(lambda ()
(define-key (current-local-map) (kbd "<tab>") 'dabbrev-expand)))
据我所知,它可以完美工作,现在TAB可以在REPL模式下实现自动补全,而在其他模式下可以进行缩进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.