emacs lisp 将文件名扩展为字符串

emacs lisp expand-file-name to string

    (setq jedi:server-args
          '("--sys-path" "/usr/lib/python3.6"
            "--sys-path" "/home/jerryzhang/.local/lib/python3.6/site-packages"))

效果很好,但我想使用 $HOME 替换 /home/jerryzhang/ 以获得更通用的效果。所以我猜可以用expand-file-name

(setq jedi:server-args
          '("--sys-path" "/usr/lib/python3.6"
            "--sys-path" (expand-file-name "~/.local/lib/python3.6/site-packages")))

但是和我想的不一样,貌似expand-file-name没有执行。

对不起,我不是学lisp的,但是学emacser的。

已解决。

 (setq jedi:server-args
          (list
           "--sys-path" "/usr/lib/python3.6"
           "--sys-path" (expand-file-name "~/.local/lib/python3.6/site-packages")
           ))

来自:https://www.reddit.com/r/emacs/comments/c77h9m/how_emacs_lisp_expandfilename_to_string/

或者,您可以使用反引号将结果替换到列表中,例如。

(setq jedi:server-args
      `("--sys-path" "/usr/lib/python3.6"
        "--sys-path" ,(expand-file-name "~/.local/lib/python3.6/site-packages")))

这在 lisps 中很常用——参见 elisp backquote