Emacs 让npm在守护程序模式下使用SpaceMac

Emacs 让npm在守护程序模式下使用SpaceMac,emacs,systemd,spacemacs,Emacs,Systemd,Spacemacs,我正在尝试让lsp(这取决于npm)与我的EmacClient一起工作 经过一些修补,我通过运行使我的lsp正常工作/usr/share/nvm/nvm.sh然后在交互式shell中手动执行emacs--守护进程 但是,我不想在交互式shell中手动运行emacs--daemon 下面是我迄今为止所做的尝试,如果有人能指出我所做的不正确,我将不胜感激 尝试#1更新系统单位文件: 将ExecStartPre=/bin/bash/usr/share/nvm/nvm.sh添加到emacs.servi

我正在尝试让lsp(这取决于npm)与我的EmacClient一起工作

经过一些修补,我通过运行
使我的lsp正常工作/usr/share/nvm/nvm.sh
然后在交互式shell中手动执行emacs--守护进程

但是,我不想在交互式shell中手动运行
emacs--daemon

下面是我迄今为止所做的尝试,如果有人能指出我所做的不正确,我将不胜感激


尝试#1更新系统单位文件:

ExecStartPre=/bin/bash/usr/share/nvm/nvm.sh
添加到
emacs.service

结果
(可执行文件查找“节点”)
返回
nil


尝试#2将硬代码路径添加到
.spacemacs

(setq exec path(追加exec path'(“~/.local/share/nvm/versions/node/v10.18.0/bin”))

结果
(可执行文件查找“节点”)
返回“~/.local/share/nvm/versions/node/v10.18.0/bin/node”,但它仍然需要连接到lsp服务器


尝试#3使用bspwm自动启动emacs,而不是systemd:

$(.“/usr/share/nvm/nvm.sh”和&emacs--daemon)
附加到
bspwmrc

结果
(可执行文件查找“节点”)
返回
“nil”
尝试4更新
zshrc

if [[ -z $(pgrep emacs) ]]; then
    . "/usr/share/nvm/nvm.sh" &> /dev/null 
    emacs --daemon &> /dev/null
fi
结果最终有效,但这将导致my zsh的首次启动延迟

除此之外还有更好的解决方法吗


理想情况下,守护进程最好开始使用systemd,否则在重新启动期间,它不会正常停止:(

现在,我将坚持使用attemp#2

我意识到如果我使用
~
而不是
/home/user

因此,以下方法应该有效

  (setq exec-path
        (append exec-path
                (list (concat user-home-directory ".local/share/nvm/versions/node/v10.18.0/bin"))))

目前,这是我找到的最好的解决方案。

EmacClient-ca”“
,不确定它在windows上运行得如何-在ubuntu上,我设置了一个自定义键盘
“bash-c'EmacClient-ca”"“
,因为我发现在修补confighmm时systemd process会遇到更多的麻烦,这只会启动EmacClient。但是,问题是节点的路径没有添加到emacs路径中,因为我使用的是延迟加载路径的
nvm
。哦,出于某种原因,我以为您在windows上。如果您在Gnome下运行,如果您是这样做的话在~/.profile中配置包管理器(去掉.bash_profile等),然后在登录时配置节点(至少,这对我来说在ubuntu 18上是有效的)——但是不同的窗口管理器以不同的顺序/时间配置登录脚本,所以YMMV
expand file name
file truename
是可选的