关于 OrgSrc 中 python 无法自动补全的问题

各位大神, 我用的是 spacemacs.

我在 .py 文件中是可以自动补全的, 但在OrgSrc 中无法自动补全, company-diag 显示全是 nil, 必须手动打开 company-mode, 然后 手动调用 M-x company-anaconda 进行自动补全.

我在论坛上看了相关的帖子, 以下这篇跟我的问题很类似.

orgsrc block 中使用 company-clang补全C语言代码失败

但那个解决方案是直接改动官方的 .el 文件, 我知道自己的斤两不足以解决这个问题

另外奇怪的是, 我在 c, cpp, js 的 OrgSrc 中均能正常自动补全, 所以我感觉有点奇怪. 也就是说我的 python-mode 配置肯定有问题.

所以, 我想请教各位大神有没有什么打补丁的方法, 强制使 OrgSrc 中 python-mode 打开 company-mode 以及自动出来 company-anaconda(目前是设了一个快捷键, 但味道就不对了)

可以试试 emacs jupyter ,可以补全,不用进到 edit buffer 就可以补全。但是,恕我直言,使用体验并不好,不会比 jupyter lab 更好用。当然如果你的代码块都不长的话就还好。

我主要使用 org-mode 来写笔记心得日记等, 已经配置好很多 latex, html 模板了, 用了好多年写了很多东西了, 所以不可能用 jupyter lab了, 被捆绑了 可惜. 主要是为了使用某些软件我把 macOS 从原来的10.11升级到 10.15, 然后就出现这个问题了!!

不过你的这个思路很好, 我看看把 company-anaconda 加入 org-mode 的补全中, 效果如何吧

不用造轮子了,emacs jupyter 是个插件,你搜索一下。装上以后用 jupyter 代码块就行了。记得用同一个 session,这样就可以在所有相同 session 的代码块补全

org-edit-special(C-c ')里面不能补全还是

是的, 仅仅(C-c ')里不能补全, 仅仅是 python-mode, 而 (C-c ')里 c, cpp, js 都可以补全 而在普通的 .py 文件里也可以补全 在org-edit-special(C-c ')里面 company-mode 没开启, 即使我手动开启, company-diag 中 company-backends 显示也是 nil, 也要手动输入函数 company-anaconda 来补全

刚刚试了一下,确实不行,感觉 spacemacs 哪里又有 bug 了,可以报个 issue

我安装了 emacs-jupyter, 跑了几个 demo, 感觉还行.

不过他的官方 readme 中没有说明具体怎么补全, 我是要怎么操作呢

用补丁的方法解决了

在配置中加上这句即可

(spacemacs|add-company-backends :backends company-anaconda :modes python-mode)

其他 company-XXX 类似

估计是 company 载入顺序出了问题