【问题标题】:Bash completion for executable files in Emacs shell bufferEmacs shell 缓冲区中可执行文件的 Bash 补全
【发布时间】:2018-02-14 02:01:45
【问题描述】:

当我启动 emacs 时设置的 PATH 似乎可以正常工作,但是如果我在 emacs shell 缓冲区中更改 PATH,我似乎无法让 Emacs 重新考虑它的可能完成列表。

有没有办法重新初始化 Emacs 的完成视图?

在非 emacs shell 中,一切都按预期运行,偶尔会抛出 hash -r。

【问题讨论】:

    标签: shell emacs


    【解决方案1】:

    假设您使用的是完成点,有一个变量exec-path 维护了一个搜索可执行文件的目录列表。 shell-command-completion,默认情况下是 shell-dynamic-complete-functions 的一部分,会搜索这些位置。

    您可以使用新位置更新该变量以搜索可执行文件,例如。 (push "<new-directory>" exec-path).

    【讨论】:

    • 手动设置 exec-path 提供了我期望的完成。是否有一个方便的 elisp 函数可以根据 PATH 环境变量设置 exec-path?而且,我注意到 describe-variable 表示使 exec-path buffer-local 是有风险的——但如果您在不同的 shell 缓冲区中有不同的路径,这似乎是理想的设置,不是吗?
    • 我相信它被称为有风险的,因为它可能被用来在访问缓冲区时以危险的方式操纵您的计算机,例如。如果它设置为目录局部变量或其他东西。
    • 可能有一个方便的功能,我会去看看env.el。将(getenv "PATH") 的结果除以path-separator 并进行任何操作也相当简单。还有github.com/purcell/exec-path-from-shell,虽然我没用过,因为我不在Mac上
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多