我装了最新的 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 中,是没有工具支持的, 只能用脑袋解析,手动敲
所以,关注点还是文学编程反人类?除了那种超人,一般人适应不来?