Có một chức năng thực hiện việc này đã được xác định trong inf-haskell.el
: inferior-haskell-load-and-run
. Thao tác này sẽ tải tệp hiện tại của bạn và chạy :main
.
Bạn có thể gắn nó vào một quan trọng trong chế độ Haskell bằng cách thêm một cái móc:
(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)
Tuy nhiên, chơi xung quanh với điều này cho một chút, nó dường như có một vấn đề kỳ lạ trên máy tính của tôi: đôi khi , khi nó bật lên bộ đệm *haskell*
, nó không di chuyển điểm đến cuối. Tôi thấy điều này khá khó chịu. Bạn có thể dễ dàng sửa chữa nó bằng cách di chuyển các điểm đến cuối cùng mình:
(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))
Tôi tin rằng sleep-for
là cần thiết vì lệnh Haskell được điều hành không đồng bộ và phải mất một chút thời gian để trở lại. Toàn bộ điều này là một cái gì đó của một hack, nhưng nó có vẻ làm việc.
Ngoài ra, bạn có thể muốn tùy chỉnh chính xác những gì inferior-haskell-run-command
là. Theo mặc định, nó là :main
. Tuy nhiên, đối với tôi, tôi nghĩ chỉ cần main
sẽ tốt hơn vì main
bị ảnh hưởng bởi :set args ...
trong đó :main
thì không.
Nếu bạn muốn ở lại trong bộ đệm Haskell hiện tại của bạn, bạn chỉ có thể làm điều này:
(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)))
Nguồn
2012-11-03 21:50:38
này hoạt động tuyệt vời ngoại trừ tập trung của tôi là vào khung kém-Haskell ở cuối. Tôi muốn nó được trên tập tin nguồn tôi đã chỉnh sửa. –
Giải pháp đơn giản nhất là chỉ cần bật trở lại bộ đệm bạn đã bắt đầu. Tôi sẽ chỉnh sửa nó vào câu trả lời của tôi. –
Cảm ơn bạn. Để bắt tất cả các ngoại lệ trong nhật ký Inf-Haskell, trong trường hợp của tôi, tôi tăng thời gian lên một chút. (ngủ 1 750) – Hartmut