lsp-bridge -- 速度最快的语法补全插件

大佬, 就用 git submodule 来管理 lsp-bridge 哇。

两年前我在 lsp-bridge 的 wiki NixOS · manateelazycat/lsp-bridge Wiki · GitHub 里添加了以全局方式安装 lsp-bridge 所须的 Python 依赖的方法

只需要原封不动地按照 lsp-bridge Readme 及时更新依赖列表,就可以直接

(use-package acm
  :load-path (lambda () (expand-file-name "git/lsp-bridge/acm" (getenv "HOME"))))
(use-package lsp-bridge
  :load-path (lambda () (expand-file-name "git/lsp-bridge" (getenv "HOME"))))

或者如果不想改变全局 Python 环境,可以像这样单独打一个别名包

let
  python = pkgs.python3.withPackages (p:
    with p; [
      epc
      orjson
      paramiko
      rapidfuzz
      setuptools
      sexpdata
      six
      watchdog
    ]);
in pkgs.runCommand "python-for-lsp-bridge" { } ''
  mkdir -p $out/bin
  ln -s ${python}/bin/python $out/bin/python-for-lsp-bridge
''

然后

(use-package lsp-bridge
  :custom (lsp-bridge-python-command "python-for-lsp-bridge"))
1 个赞

可以用。非常感谢!

image

遇到個問題,這里應該試是没有补全才對。不同語言都有,elisp 也有。

我开启了 acm-enable-preview

方便说一下详细的重现步骤吗?

感谢大佬提供线索啊, 终于把 Nix 的 nil lsp server 问题修复了:

大佬, 这个语言我用的少 Segmentation error in terraform-ls · Issue #1025 · manateelazycat/lsp-bridge · GitHub

欢迎提供线索啊, 只要可以稳定重现我都可以修复。

还是大佬效率高,我更新后测试了一下 nil 已经正常了。

最近论坛有人提到 nix 下使用 lsp-bridge 我就去看看 issue 还有没有其它人遇到此类问题,结果碰到几个熟悉的领域。 terraform-ls 的问题也破案了,坐等大佬修复。 :rofl:

1 个赞

应该已经修复了, lsp-bridge 创建之处为了区分不同的LSP请求, 加的一个标识在 message 内, 到成功发送消息给LSP server之前, 再根据 message_type 打印不同请求的日志, 方便调试。

没想到只有 terraform-ls 这个LSP Server如此诚实, 拒绝接受任何不对的JSONRPC, 哈哈哈哈。

2 个赞

大佬, 你想要啥样的通知, 我给你加, 但是 Rust 返回了好多不同类型的消息:

我按照你说的用acm-backend-lsp-show-progress 已经够用了

1 个赞

这个 C-Entropy不是我 :face_with_hand_over_mouth:

image

弹出补全窗口时,光标会跳到括号)的后面,这个该怎么解决
大致试了下,当补全窗口出现时,按空格键光标就会跳到括号外面
再次尝试了下,只有在终端运行会有这个问题,gui不会

你应该是绑定了空格到快捷键绑定吧, lsp-bridge 默认没有这个功能。

只有终端下才有这个情况,以及我使用doomemacs并且没添加过任何绑定空格键的keybinding,第三方插件除了doom自带的以外只有下面这些

(package! gruber-darker-theme
   :recipe (:host github :repo "rexim/gruber-darker-theme"))
(package! evil-terminal-cursor-changer)
(when (package! lsp-bridge
        :recipe (:host github
                 :repo "manateelazycat/lsp-bridge"
                 :branch "master"
                 :files ("*.el" "*.py" "acm" "core" "langserver" "multiserver" "resources")
                 ;; do not perform byte compilation or native compilation for lsp-bridge
                 :build (:not compile)))
  (package! markdown-mode)
  (package! yasnippet))
  (package! popon
    :recipe (:host nil :repo "https://codeberg.org/akib/emacs-popon.git"))
  (package! acm-terminal
    :recipe (:host github :repo "twlz0ne/acm-terminal"))

因此我推测是acm显示补全时卡顿造成的bug
经进一步测试,lsp-mode+company不会出现这个问题


经进一步测试,光标的跳转不是会跳到括号外,而是跳到当前行的最后面 7e2910190e0a5f2ca344c42891798bc2

应该是 acm-terminal 的bug

可以编译Emacs的 child-frame 分支, 应该会自动解决这个问题。

如何看当前的emacs是否支持childframe

M-x emacs-build-description


看样子不支持
请问如何编译到支持childframe的分支呢

image
似乎是这个

1 个赞

对,scratch/tty-child-frames 还没有并入主线,Ubuntu 不知道有没有ppa,直接克隆这个分支然后照常autogen,configure,make就是了

1 个赞