gpt4 book ai didi

haskell - 使用 Emacs 编辑源文件时在 ghci 中评估 haskell 的函数

转载 作者:行者123 更新时间:2023-12-04 18:11:28 26 4
gpt4 key购买 nike

我正在编辑一个 haskell 源文件。我想在我的 subior-haskell 缓冲区(已经在不同的框架中打开)中运行我的 main 函数并继续编辑我的源文件。为此,我做
C-c C-l , 换帧, main<ret> , 变回原来的帧

这似乎效率很低。我想要一个一次性完成的emacs功能/键。

最佳答案

实际上,inf-haskell.el 中已经定义了一个函数来执行此操作。 : inferior-haskell-load-and-run .这将加载您当前的文件并运行 :main .

您可以通过添加 Hook 将其绑定(bind)到 Haskell 模式中的键:

(defun my-haskell-mode-hook ()
(local-set-key (kbd "C-x C-r") 'inferior-haskell-load-and-run))
(add-hook 'haskell-mode-hook 'my-haskell-mode-hook)

然而,玩了一会儿,我的电脑上似乎有一个奇怪的问题:有时,当它弹出到 *haskell*缓冲区,它不会将点移动到末尾。我觉得这很烦人。您可以通过自己将点移到末尾来轻松修复它:

(defun my-haskell-load-and-run ()
"Loads and runs the current Haskell file."
(interactive)
(inferior-haskell-load-and-run inferior-haskell-run-command)
(sleep-for 0 100)
(end-of-buffer))

我相信 sleep-for是必要的,因为 Haskell 命令是异步运行的,需要一点时间才能返回。这整件事有点像黑客,但它似乎有效。

此外,您可能希望准确自定义 inferior-haskell-run-command 的内容。是。默认为 :main .但是,对我来说,我认为只是 main会更好,因为 main:set args ... 影响在哪里 :main不是。

如果你想留在你当前的 Haskell 缓冲区中,你可以这样做:

(defun my-haskell-load-and-run ()
"Loads and runs the current Haskell file."
(interactive)
(let ((start-buffer (current-buffer)))
(inferior-haskell-load-and-run inferior-haskell-run-command)
(sleep-for 0 100)
(end-of-buffer)
(pop-to-buffer start-buffer)))

关于haskell - 使用 Emacs 编辑源文件时在 ghci 中评估 haskell 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com