gpt4 book ai didi

emacs - 如何在查找文件 Hook 中显示文件

转载 作者:行者123 更新时间:2023-12-04 06:53:07 24 4
gpt4 key购买 nike

目前,我使用 find-file-hook调用该文件的冗长编译/检查。因此,我必须等待一段时间才能真正看到该文件。相反,我想做的是能够在检查器运行时查看(而不是编辑)文件,从而产生瞬时编译的错觉。我怎样才能做到这一点?

最佳答案

使用 find-file-hook意味着您的代码将在您打开的每个文件上运行;你是
你确定要这个吗?创建一个新的主要或次要模式可能更有意义
对于要运行验证的文件类型,然后使用
对应的模式 Hook 。例如,如果您想检查所有 .chk 文件
(您的新主要模式继承自 prog-mode ):

(define-derived-mode check-mode prog-mode "Checker")
(add-to-list 'auto-mode-alist '("\\.chk\\'" . check-mode))
(add-hook 'check-mode-hook 'check-mode-computation-hook)

至于实际的钩子(Hook),这段代码(离开菲尔斯的评论)对我有用:
;;; -*- lexical-binding: t -*-
(defun slow-computation ()
(dotimes (i 10000000)
(+ i 1)))

(defun check-mode-computation-hook ()
(let ((cb (current-buffer))
(ro buffer-read-only))
(setq-local buffer-read-only t)
(run-at-time .1 nil
(lambda ()
(with-current-buffer cb
(message "Loading...")
(slow-computation)
(setq-local buffer-read-only ro)
(message "Loaded!"))))))

但请注意,虽然这会显示文件,但 emacs 仍将被卡住
直到它完成处理,如
Emacs doesn't actually support multithreading .为了解决这个问题,您可以
必须使用像 async 这样的库, deferred , 或 concurrent .

关于emacs - 如何在查找文件 Hook 中显示文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314399/

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