但这一段代码在我这里会出问题,eesfhoghoousbdofbousbeogbsudjbguebsodgousbgo
是为了名字空间里没有这个。
(defun func (eesfhoghoousbdofbousbeogbsudjbguebsodgousbgo)
eesfhoghoousbdofbousbeogbsudjbguebsodgousbgo)
(member "eesfhoghoousbdofbousbeogbsudjbguebsodgousbgo"
(all-completions "" obarray))
;; ("eesfhoghoousbdofbousbeogbsudjbguebsodgousbgo" "org-at-property-drawer-p" "sldb-frame-number-at-point" "comp-ctxt-funcs-h" "ad-pushnew-advised-function" "cfw:face-default-content" "helpful--format-keys" "prescient-prefix-regexp" "iso-2022-int-1-unix" "common-lisp-trailing-comment" "sp-point-in-empty-sexp" "helm-bibtexkey" ...)
我的 emacs
版本是 28.2
你的意思是 obarray 会包括很多形参的名字?
欢迎发PR吧, 这个以前确实没有注意到, 因为我写 elisp 代码都是非常明确的, 即使有估计也触发不了这种情况。
还有十分钟,lsp-bridge将在Development演讲,不是General,大家不要看错了
emacsconf.org/2022/watch/dev/
1 个赞
org
2603
已经在看了,youtube上的画质好渣。。。好在原网址的还可以
老王,12月3日的commit后,用了random.randbytes()
后,python要求3.9.0以上版本,在readme里提一下?
1 个赞
其实可以用别的算法替代一下, 因为那只是一个随机数。
要是默认的python版本低的话,用了lsp-bridge后,发现不能用,还要看lsp-bridge的log才能知道原因,所以在readme里写清楚依赖python的版本会好点。
1 个赞
修了一下,目前能把形参过滤掉,同时会更新局部参数。
PTAL
1 个赞
我还没有测试这个补丁, 这个补丁大量做过滤, 不会在lsp-bridge收集 elisp symbols 的时候导致 Emacs 卡顿?
没注意看版本,要不然用 os.urandom(21).hex()
,这个好像没版本限制。
1 个赞
才看完 EmacsConf Wayland 的那个演讲, 测试了一下大佬的补丁, 很专业, 质量很高。
已经合并了, 感谢感谢。
测试了一下,all-completions
加上predicate
后大概慢了 7 倍左右.
我的 obarray
的大小有63668个。
(benchmark-elapse
(lsp-bridge-elisp-symbols--global))
;; 0.037313531
(benchmark-elapse
(all-completions "" obarray))
;; 0.005165364
local symbol不是很慢,也可能和测试样例有关系
(defun let-list (N)
(if (= N 1)
nil
`(let (,(intern (concat "x" (number-to-string N))))
,(let-list (- N 1)))))
(let-list 100)
;; (let (x100) (let (x99) (let (x98) (let (x97) (let (x96) (let (x95) (let (x94) (let (x93) (let (x92) (let (x91) (let (x90) (let (x89) (let (x88) (let (x87) (let (x86) (let (x85) (let (x84) (let (x83) (let (x82) (let (x81) (let (x80) (let (x79) (let (x78) (let (x77) (let (x76) (let (x75) (let (x74) (let (x73) (let (x72) (let (x71) (let (x70) (let (x69) (let (x68) (let (x67) (let (x66) (let (x65) (let (x64) (let (x63) (let (x62) (let (x61) (let (x60) (let (x59) (let (x58) (let (x57) (let (x56) (let (x55) (let (x54) (let (x53) (let (x52) (let (x51) (let (x50) (let (x49) (let (x48) (let (x47) (let (x46) (let (x45) (let (x44) (let (x43) (let (x42) (let (x41) (let (x40) (let (x39) (let (x38) (let (x37) (let (x36) (let (x35) (let (x34) (let (x33) (let (x32) (let (x31) (let (x30) (let (x29) (let (x28) (let (x27) (let (x26) (let (x25) (let (x24) (let (x23) (let (x22) (let (x21) (let (x20) (let (x19) (let (x18) (let (x17) (let (x16) (let (x15) (let (x14) (let (x13) (let (x12) (let (x11) (let (x10) (let (x9) (let (x8) (let (x7) (let (x6) (let (x5) (let (x4) (let (x3) (let (x2) nil)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
在嵌套 let
最里面benchmark
(benchmark-elapse
(lsp-bridge-elisp-symbols--local))
;; 0.000519512
1 个赞
我的 obarray 的大小有1.5万个左右, 0.03 秒可以接受, 因为大部分都是 idle 才会更新的, 所以不影响用户的输入。
1 个赞