manateelazycat / lsp-bridge

A blazingly fast LSP client for Emacs
GNU General Public License v3.0
1.4k stars 199 forks source link

更新到最新commit之后在windows无法使用 #693

Closed heheda123123 closed 1 year ago

heheda123123 commented 1 year ago

更新到最新commit d97f2b170600c5aa3eb309d505ade4828738512e lsp-bridge加载成功,但是服务器无法启动,无法使用

image

*lsp-bridge*buffer报错如下,和新加的copilot支持有关

Traceback (most recent call last):
  File "c:\Users\Administrator\emacs-plugin\lsp-bridge\lsp_bridge.py", line 817, in <module>
    LspBridge(sys.argv[1:])
  File "c:\Users\Administrator\emacs-plugin\lsp-bridge\lsp_bridge.py", line 95, in __init__
    self.init_search_backends()
  File "c:\Users\Administrator\emacs-plugin\lsp-bridge\lsp_bridge.py", line 109, in init_search_backends
    self.copilot = Copilot()
                   ^^^^^^^^^
  File "c:\Users\Administrator\emacs-plugin\lsp-bridge\core\copilot.py", line 39, in __init__
    npm_prefix = subprocess.check_output(['npm', 'config', 'get', 'prefix'], universal_newlines=True).strip()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "c:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1509, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] ϵͳ Ҳ   ָ     ļ   

我本地直接执行这个命令是有结果的

PS C:\Users\Administrator> npm config get prefix
C:\Users\Administrator\AppData\Roaming\npm

测试了下,windows上用subprocess.check_output执行命令时,如果命令是bat脚本,需要写全名npm.cmd

PowerShell 7.3.6
PS C:\Users\Administrator> which npm
C:\Program Files\nodejs\npm.cmd
PS C:\Users\Administrator> python
Python 3.11.3 (tags/v3.11.3:f3909b8, Apr  4 2023, 23:49:59) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output("npm config get prefix")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 1509, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
>>> subprocess.check_output("npm.cmd config get prefix")
b'C:\\Users\\Administrator\\AppData\\Roaming\\npm\n'
>>>
heheda123123 commented 1 year ago

另外看文档有启用copilot的函数,意味着默认应该是不启用copilot吧,没启用copilot的时候是不是可以不创建Copilot对象。 或者至少把执行外部命令的操作拿到其他方法去。npm相关的命令执行起来还是挺慢的。 image 其他tabnine,codeium在__init__的时候只是初始化了几个变量。copilot对象创建的时候执行了外部命令,不执行这个外部命令,应该可以让启动速度更快 image

manateelazycat commented 1 year ago

@kongds 看看?

kongds commented 1 year ago

已经修好了 在这个pr #692

manateelazycat commented 1 year ago

有问题随时打开,先关闭了