windows, emacs 29, 我这边不感觉卡;等有时间,我看看能否做成选项提个PR
不是选项,而是要解决性能问题,我这边 yas–get-snippet-tables 太卡了,所以我才直接从 yas 的目录读取,效果一样的。
请问你说的是哪个svg,melpa上的还是软件包的?
在 org-mode 中是不是没有办法使用 english-helper?
org-mode 好像还没有 language server,lsp-bridge 都起不来吧。
可以把org-mode加到这里试一下 lsp-bridge/acm.el at 1e487376d6ba792637642edf0eb18d124d405c49 · manateelazycat/lsp-bridge · GitHub
win10系统下,pyright无法检测到同级目录下的其他文件和模块。
例如以下目录:
./test/src/
|--- __init__.py
|--- a.py
|--- b.py
|--- mode
|--- __init__.py
|--- c.py
在 a.py
文件中,调用 b.py
和 c.py
,我尝试了两种方法
方法一:报错。
a.py
import b # pyright提示 :Import “b” could not be resolved
from mode import c # pyright提示 :Import “mode” could not be resolved
方法二:不报错,但运行时容易引起Import Error,对脚本启动路径要求严格,所以我希望使用方法一。
a.py
from . import b # pyright不报错
from .mode import c # pyright不报错
同向对比 vscode 的 pyright 插件,以上两种写法都是不报错的,我感觉应该是pyright工作目录配置问题,但不知道该怎样解决,还请大佬指点。
如果多文件开发的话,项目目录得是一个 git 仓库;否则会按照单文件处理
已经参照格式加进去了。
尝试多次开关 lsp-bridge-toggle-english-helper
并不起作用。可以确认在 elisp 底下是可以工作的。
lsp-bridge-enable-debug
已经打开,*lsp-bridge*
buffer 是空的。
如果 lsp-bridge/acm/icons at master · manateelazycat/lsp-bridge · GitHub 这里面的文件图标你打开不能显示图标的话,就是你的emacs 不支持svg.
因为我的emacs是自己从源代码编译的,就会检测 系统 有没有 安装librsvg,如果没有安装,那编译出来的 emacs 就是不支持 svg的。
如果你是ubuntu用户,安装 librsvg可以执行 apt-get install librsvg2-dev。
可以自己判断下
(if (image-type-available-p 'svg)
(setq acm-enable-icon t)
(setq acm-enable-icon nil))
我在测试文件 a.py
同级目录与上级目录分别创建git仓库进行测试,依然提示 import “mode” could not be resolved
,也尝试创建 .projectile
文件指定项目路径,同样会有提示。
刚才参考 pyright/configuration.md ,在项目路径下添加 pyrightconfig.json 文件进行项目路径配置,不知道是不是文件格式有问题,配置同样没生效
lsp-bridge-enable-log 打开,看下 initialize 请求里面的 rootUri/rootPath 相关参数是什么。我怀疑你这个 path 是 “test”, 所以你可能要 import src.mode.xxx 才不报错。
你这是识别成单文件了。 projectile 就别纠结了,lsp-bridge 探测工程不用这个,只看 git。 你 .git 是真的还是假的? 不是建立目录就完了,要 git --init . 这样建立。
可以到 Script 目录打开 cmd 手工执行下,看看是不是有报错。 git rev-parse --is-inside-work-tree
lsp-bridge 判断工程根目录是这个方式,你看手工操作下是不是可以。你这个看起来是这个操作没成功,所以发了单文件。
找到问题原因了,是我的cmd配置问题。
之前为了修改cmd编码格式为UTF-8,所以根据网上教程,修改了注册表:
路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
新建:autorun 值为 chcp 65001
之后每次启动 cmd 会先执行 “chcp 65001”,导致 get_command_result
结果执行失败。
现在删除了该键值,一切正常。感谢~
lsp-bridge能不能增加用tab和S-tab进行候选列表移动的键位绑定啊,这一套键位用习惯了; 另外,lsp-bridge可以增加orderless separator吗?类似corfu做的那样,在比较多的候选项中,可以很快定位到候选项,不用上下移动好多次;
按键自己自定义哈,每个人用tab习惯不一样,有些喜欢补全,有些喜欢下一个,很难兼顾。
目前改变文件内容,lsp就会刷新数据,所以暂时没法实现corfu那种模式。
今天腾出时间,在不破坏原代码的前提下,尝试加入了自定义语种的 backend。基本实现了!!!感觉 acm 比之前的 company 快得太多了!!!
;;;
;;; blove-lang-helper.el
;;;
(defalias 'lsp-bridge-toggle-korean-helper #'acm-toggle-korean-helper)
(defvar-local acm-enable-korean-helper nil)
(defcustom acm-backend-kor-min-length 1
"Minimum length of korean word."
:type 'integer)
(add-to-list 'acm-icon-alist '("korean" . ("material" "korean" "#ed6856")))
(defun acm-backend-korean-candidates (keyword dict)
(let* ((candidates (list)))
(when (>= (length keyword) acm-backend-kor-min-length)
(dolist (candidate dict)
(when (string-prefix-p keyword candidate)
(add-to-list 'candidates (list :key candidate
:icon "translate"
;; :icon "korean"
:label candidate
:display-label candidate
:annotation (get-text-property 0 :initials candidate)
:backend "korean")
t))))
candidates))
(defun acm-toggle-korean-helper ()
(interactive)
(if acm-enable-korean-helper
(message "Turn off korean helper.")
(message "Turn on korean helper."))
(setq-local acm-enable-korean-helper (not acm-enable-korean-helper))
)
(add-to-list 'load-path (concat user-emacs-directory "lisp/blove-extra/blove-lang-helper/blove-lang-zh"))
(defun acm-update-candiates-advice ()
(let* ((keyword (acm-get-input-prefix))
(candidates (list))
path-candidates
yas-candidates
tempel-candidates
mode-candidates)
(if acm-enable-korean-helper
(progn
(require 'blove-backends-kor-zh-15000)
(setq candidates (acm-backend-korean-candidates keyword blove-kor-zh-15000))
)
(progn
(if acm-enable-english-helper
;; Completion english if option `acm-enable-english-helper' is enable.
(progn
(require 'acm-backend-english-data)
(require 'acm-backend-english)
(setq candidates (acm-backend-english-candidates keyword))
)
(setq path-candidates (acm-backend-path-candidates keyword))
(if (> (length path-candidates) 0)
;; Only show path candiates if prefix is valid path.
(setq candidates path-candidates)
;; Fetch syntax completion candidates.
(setq mode-candidates (append
(acm-backend-elisp-candidates keyword)
(acm-backend-lsp-candidates keyword)))
(setq yas-candidates (acm-backend-yas-candidates keyword))
(setq tempel-candidates (acm-backend-tempel-candidates keyword))
;; Insert snippet candiates in first page of menu.
(setq candidates
(if (> (length mode-candidates) acm-snippet-insert-index)
(append (cl-subseq mode-candidates 0 acm-snippet-insert-index)
yas-candidates
tempel-candidates
(cl-subseq mode-candidates acm-snippet-insert-index))
(append mode-candidates yas-candidates tempel-candidates)
))))
)
)
candidates))
(advice-add 'acm-update-candiates :override #'acm-update-candiates-advice)
;;; ========== at-the-bottom
(provide 'blove-lang-helper)