Giter Site home page Giter Site logo

Comments (18)

zilongshanren avatar zilongshanren commented on May 23, 2024

别用中文路径看看

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

再报一个没有在git目录的test.py,路径C:\Users\Administrator\Desktop\test.py,lsp buffer:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "c:\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "c:\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "c:/green/emacs/.emacs.d/packages/corfu/corfu-main/lsp-bridge-master/lsp-bridge.py", line 90, in postgui_dispatcher
    self._open_file(message["content"])
  File "c:/green/emacs/.emacs.d/packages/corfu/corfu-main/lsp-bridge-master/lsp-bridge.py", line 131, in _open_file
    server = LspServer(self.message_queue, file_action, self.enable_lsp_server_log)
  File "c:\green\emacs\.emacs.d\packages\corfu\corfu-main\lsp-bridge-master\core\lspserver.py", line 231, in __init__
    self.p = subprocess.Popen(self.get_server_command(),
  File "c:\Python38\lib\subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "c:\Python38\lib\subprocess.py", line 1311, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
Cache action change_cursor, wait for file c:/Users/Administrator/Desktop/test.py to open it before executing.

这个路径不含中文,pyright也正常安装了,eglot都是正常执行的。

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

打印了get_server_command()是['pyright-langserver.cmd', '--stdio'],是在pyright.json里配置的

 "nt": ["pyright-langserver.cmd", "--stdio"],

而我的C:\Python38\Scripts是

  c:/Python38/Scripts:
  drwxr-xr-x 1 Administrator 197121    0 2022/05/08 08:48 .
  drwxr-xr-x 1 Administrator 197121    0 2022/03/27 19:07 ..
  -rwxr-xr-x 1 Administrator 197121 104K 2022/05/08 08:48 nodeenv.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/03/26 17:47 pip.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/03/26 17:47 pip3.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/03/26 17:47 pip3.8.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/05/08 08:48 pyright.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/05/08 08:48 pyright-langserver.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/05/08 08:48 pyright-python.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/05/08 08:48 pyright-python-langserver.exe
  -rwxr-xr-x 1 Administrator 197121 104K 2022/03/26 17:47 wheel.exe

pyright-langserver.cmd用everything搜索了下也有,但是不在bin路径里,手动cmd里执行pyright-langserver.cmd也报错了

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

pyright.json里改为:

    "nt": ["pyright-langserver", "--stdio"],

正常了,嘿嘿,就剩下个中文路径问题了,可以考虑emacs传project root给python不?emacs支持不止git一种哟

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

又发现个问题,我编辑那个pyright.json貌似启动lsp bridge了,导致这边test.py没有补全了,好奇怪,lsp buffer提示

Cache action change_cursor, wait for file c:/green/emacs/.emacs.d/packages/corfu/corfu-main/lsp-bridge-master/langserver/pyright.json to open it before executing.
['typescript-language-server', '--stdio']  --------这是我加的get_server_command()打印,所以是json文件启动ts后端了?

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

lsp bridge确实很快,太爽了,太感谢懒猫了,希望越来越好,加油!

from lsp-bridge.

wsw0108 avatar wsw0108 commented on May 23, 2024

运行git时的编码问题,git的stdin stdout都期待是utf-8

from lsp-bridge.

manateelazycat avatar manateelazycat commented on May 23, 2024

pyright.json里改为:

    "nt": ["pyright-langserver", "--stdio"],

正常了,嘿嘿,就剩下个中文路径问题了,可以考虑emacs传project root给python不?emacs支持不止git一种哟

Emacs 的 project-root 在嵌套 git 项目中不会正确判断,你只要把 git 创建好, lsp-bridge 就可以正常工作。

from lsp-bridge.

manateelazycat avatar manateelazycat commented on May 23, 2024

pyright.json里改为:

    "nt": ["pyright-langserver", "--stdio"],

正常了,嘿嘿,就剩下个中文路径问题了,可以考虑emacs传project root给python不?emacs支持不止git一种哟

Windows 不是 pyright-langser.cmd 吗? 如果是这样 https://github.com/manateelazycat/lsp-bridge/blob/master/langserver/pyright_nt.json 文件没有存在的必要了。

from lsp-bridge.

wsw0108 avatar wsw0108 commented on May 23, 2024

安装途径不一样,他这个是exe的

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

感觉是没必要,就算只有pyright-langserver.cmd没有pyright-langserver.exepyright-langserver照样能调用pyright-langserver.cmd,我看eglot代码也只有个pyright-langserver。我是通过pip install pyright安装的,貌似还要装个node。

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

另外这个gbk问题,用的今天最新代码在win10 64位上测试(python Python 3.10.4 64位)又可以正常在C:\Users\lynnux\Desktop\新建文a 件夹这样的git仓库里补全py文件。难道跟win10,或者python版本有关系?(win7的python是3.8某个版本主要太新了的不支持win7) 貌似git输出是utf-8,可以考虑在get_command_result里decode("utf-8")之类,今天晚上回去在win7上测试下。

from lsp-bridge.

wsw0108 avatar wsw0108 commented on May 23, 2024

感觉是没必要,就算只有pyright-langserver.cmd没有pyright-langserver.exepyright-langserver照样能调用pyright-langserver.cmd,我看eglot代码也只有个pyright-langserver。我是通过pip install pyright安装的,貌似还要装个node。

python的Popen为了所谓的安全问题,不会像Emacs的进程创建函数那样去把pyright-langserver “解析” 成pyright-langserver+PATHEXT(.cmd/.bat/.ps1)

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

测试subprocess.Popen加个 encoding="utf-8"就不报错了:

def get_command_result(command_string, cwd):
    import subprocess
    process = subprocess.Popen(command_string, cwd=cwd, shell=True, text=True,
                               stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                               encoding="utf-8")
    ret = process.wait()
    return "".join((process.stdout if ret == 0 else process.stderr).readlines()).strip()

不过含中文路径的补全有点问题,见gif(由于我设置了(setq-local corfu-auto-prefix 1),有些是手动触发completion-at-point):
22
而且lsp bridge buffer没有任何显示。

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

对于非中文路径,函数名含中文好像也会有问题,测试代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys

def b中文():
    print("测试中文")

def ab中哈():
    pass

def main():
    # 这里补全试试
    os.
    
if __name__ == "__main__":
    try:
        main()
    except:
        import traceback
        traceback.print_exc()
        input()

from lsp-bridge.

manateelazycat avatar manateelazycat commented on May 23, 2024

测试subprocess.Popen加个 encoding="utf-8"就不报错了:

def get_command_result(command_string, cwd):
    import subprocess
    process = subprocess.Popen(command_string, cwd=cwd, shell=True, text=True,
                               stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                               encoding="utf-8")
    ret = process.wait()
    return "".join((process.stdout if ret == 0 else process.stderr).readlines()).strip()

不过含中文路径的补全有点问题,见gif(由于我设置了(setq-local corfu-auto-prefix 1),有些是手动触发completion-at-point): 22 而且lsp bridge buffer没有任何显示。

这个最新的commint已经修正了,感谢反馈。

from lsp-bridge.

manateelazycat avatar manateelazycat commented on May 23, 2024

对于非中文路径,函数名含中文好像也会有问题,测试代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys

def b中文():
    print("测试中文")

def ab中哈():
    pass

def main():
    # 这里补全试试
    os.
    
if __name__ == "__main__":
    try:
        main()
    except:
        import traceback
        traceback.print_exc()
        input()

这个你继续折腾吧,欢迎发送PR

from lsp-bridge.

lynnux avatar lynnux commented on May 23, 2024

OK,中文路径问题解决了。上面今天没重现。先关闭了。
还发现不知道是不是win7 python3.8环境问题,有时候pyright的进程半天都启动不起来,只有个lsp bridge的python进程,再观察下。。

from lsp-bridge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.