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