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
(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