【问题标题】:Switch haskell-process-type between cabal-repl and ghci在 cabal-repl 和 ghci 之间切换 haskell-process-type
【发布时间】:2014-12-05 09:52:30
【问题描述】:

我可以在活动的 haskell 会话期间或开始新会话时打开 haskell-process-type 吗?

【问题讨论】:

    标签: haskell emacs haskell-mode


    【解决方案1】:

    是的,只需在缓冲区中输入以下内容,然后输入C-x C-e(假设cabal-repl 是您的默认设置)。

    (setq haskell-process-type 'ghci)
    

    在我的.emacs 中,我实际上有这个让这件事变得简单,因为我经常这样做:

    (define-key haskell-mode-map (kbd "C-c h t") 
      (lambda () (interactive)
        (progn
          (setq haskell-process-type 'ghci)
          (message "Now in ghci mode."))))
    

    然后另一个C-c C-l 将以正确的模式加载您的交互式缓冲区。

    编辑:现在使用haskell-mode-map

    【讨论】:

    • (define-key haskell-mode-map ...) 也可以吗?
    • 那应该是C-x C-e 来评估吗?
    • 你说得对,我已经更正了。我不确定haskell-mode-map
    • 您能否在 OP 中进行编辑,解释您所做的事情?
    【解决方案2】:

    最后我扩展fosskers回答了一下!

    切换进程类型的函数:

    (defvar haskell-process-use-ghci nil)
    
    (defun haskell-process-toggle ()
      "Toggle GHCi process between cabal and ghci"
      (interactive)
      (if haskell-process-use-ghci
          (progn (setq haskell-process-type 'cabal-repl)
                 (setq haskell-process-use-ghci nil)
                 (message "Using cabal repl"))
        (progn (setq haskell-process-type 'ghci)
               (setq haskell-process-use-ghci t)
               (message "Using GHCi"))))
    

    和一个haskell-mode特定的键绑定:

    (define-key haskell-mode-map (kbd "C-c C-h C-t") 'haskell-process-toggle)
    

    【讨论】:

    • 我现在同意haskell-mode-map 更好用。此外,您可以直接在haskell-process-type 上进行测试,而不是defvar,例如:(if (equal 'ghci haskell-process-type) ...)
    • 我还在我的配置的其他部分中使用了该变量,但我相信它会生成更好的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多