有没有办法让elisp代码延迟执行?

(defun gk-roam-insert-file ()
  "Insert a gk-roam file at point"
  (interactive)
  (let* ((filenames (directory-files gk-roam-directory nil (rx (+ (in num)) "-" (+ anychar) ".org" eow)))
	     (filename (completing-read "Choose a file: " filenames nil t))
	     (file (concat gk-roam-directory filename)))
      (insert (gk-roam--format-link file))
      (gk-roam-update-reference  file)))

如上代码:

(insert (gk-roam--format-link file)) 会在当前光标下插入’file’的文件链接。

(gk-roam-update-reference file) 会启动一个rg进程搜索目录下所有引用了‘file’的文件链接的条目,处理后插入 ‘file’ 的底部。

现在的问题的:刚刚被插入的文件链接,无法被搜索到并插入到文件中。

我猜测的原因是:因为在同一个函数中,插入操作和rg进程搜索间隔的时间太短了。所以我想,延迟更新reference函数的执行应该可以解决问题。

不知我的理解是否正确,不知道有没有好的解决方案?烦请大佬赐教!

你insert之后保存了吗?

1 个赞

:sweat_smile: 我傻了,竟然是这个原因,解决了,感谢大佬!:pray: