簡體   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