在 Emacs/elisp 中调用了目录功能

Directory function is called for in Emacs/elisp

如何找到调用函数的目录?

例如,如果我调用线路

(defconst dir default-directory)

dir 的值是包含上述行的 fine 所在的目录,而不是我调用它的目录。

提前致谢

Emacs 中的默认行为是使用 directory associated with the file being "visited" in the current buffer。 所以,

(file-name-directory (buffer-file-name))

应该给你当前缓冲区文件的目录名(即你当时正在使用的那个,你的自定义 Lisp 函数被调用)。

如果您不确定您的自定义函数是否在缓冲区的上下文中被调用,缓冲区已经有一个与之关联的文件名,您应该测试一下:

(let ((file (buffer-file-name)))
    (if (not file)
        (progn ... no file name here ...)
      ... ok, file name available ...))