我装了最新的 ob-ipython ,去掉 Lsp-mode,重新装上 Anaconda-mode 。
Org-mod 的补全还是老样子,需要按 Tab 键。
我装了最新的 ob-ipython ,去掉 Lsp-mode,重新装上 Anaconda-mode 。
Org-mod 的补全还是老样子,需要按 Tab 键。
不需要写 Imports 也可以补全吗?
嗯,不需要再写一遍 import。
所以现在为了良好的文学编程环境就是装 Lsp-mode,Lsp-python。不装 Python language sever。
听起来是不是太魔幻了。
我没看错吧?所以你到底是怎么设置的?
有:
ob-ipython
lsp-mode
lsp-python
没有 python language server 和 anaconda-mode?
我试着把 Lsp-mode 和 Lsp-python 关掉,也能实现。
所以说还是 ob-ipython 的功劳,不知道为什么 spacemacs 需要按 Tab 键。 而 Doom Emacs 却能直接补全。
不好意思哈,虚惊一场:rofl:

能不能查看一下你在 doom 下能够自动补全时的 company-backends 变量?谢谢
还有 doom 应该也是用的 anaconda 吧?
应该就是第一个 company-capf 的作用,加上 ob-ipython。
但是你的截图里应该是已经关闭了 anaconda-mode
ob-ipython 进化了?scimax 有点落后了啊,而且 ob-ipython 更符合 org-babel 的惯例。
我刚才又试了一下,确实是 company-capf,spacemacs 的 python-mode 下默认没有打开 company-capf,所以你需要 tab 补全。加入以后不用按 tab 即可补全,不需要 imports。推荐把它和 company-anaconda 放一块,作为补充。
把它设为下面这样:
'((company-anaconda company-capf)
(company-dabbrev-code company-gtags company-etags company-keywords)
company-files company-dabbrev)
但是这种方法也不完美:没有 imports 的时候,因为不是用 jedi 来解析,所以不会显示 eldoc 信息。
Edit: 上面设置 company 后端的方式还是不太完美,如果两个后端 company-anaconda 和 company-capf 同时都起作用,会在补全菜单里显示重复选项。所以暂时还是放弃 company-capf 了。
建议你去 company 那边提交一个bug, 让作者添加几行代码消除重复选项。
这个不是 bug,是 feature
如果两个并列的后端所提供的选项没有重叠的话,这种就有意义了。
我现在把 python-mode 的第一个 company 后端设为 (company-anaconda company-dabbrev company-yasnippet) 这样就能在菜单里同时显示 anaconda (jedi),dabbrev (动态缩写),以及 snippet.
我的意思是: 如果两个备选项完全一样, 即使他们来自不同的后端,也不应该重复显示。。。。。这应该是bug
我还是忍不住说一声, 文学编程是自虐的一种方式。。。。。
这倒是个不错的想法,如果两个有相同的选项,只显示第一个,或者只显示信息最全的那个
你是被文学编程伤到有多深 ![]()
文学编程我感觉是一种极端理念, 现实情况下,我们能做到代码和文档同步就很不错了
所以,我更习惯结构化 comment,代码为主, 文档隐藏在 结构化comment 中, 必要的时候可以提取出来。
但是确实有人一直在践行文学编程,比如 CM 大学的 John Kitchin 教授,Scimax 的作者。
这难道不是一个硬币的正反面?
或者说,你这种方式有什么文学方式不具备的优势吗?
不一样,工具支持不一样, 我写结构化 comment 的时候,习惯用 org 语法,但在 comment 中,是没有工具支持的, 只能用脑袋解析,手动敲
所以,关注点还是文学编程反人类?除了那种超人,一般人适应不来?