繁体   English   中英

将TAB设置为Emacs Haskell模式下自动完成的快捷方式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM