Grey
全部学习内容汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used.
1855_emacs_compnay的使用探索
company其实是一个老伙伴了,之前我emacs中体验提升的主力插件之一。主要是用来做各种场景下的补全,但是使用上其实应该注意细节上的细腻性。
主题由来介绍
company自从使用emacs以来基本上就一直在使用,不过使用的方式也是简单粗暴。基本上就是下面一行配置:
(global-company-mode 1)
在我以往的工作中,C语言编程是主要的emacs使用场景,这样使用也就没有什么大的问题。不过随着最近我在自己的工作流中扩大emacs的用途,拿来作为编写笔记文件的主要工具之后,这个补全的功能可能会给我带来一点点干扰。
我在编写笔记材料的时候有时候会进行搜索,而搜索的方式就是直接调用eshell。因为,很多时候便捷要比速度给我带来的体验好得多。但是,我觉得我的配置下,eshell带给我的最大问题不在于本身执行的效率快慢,而是在于我的命令输入过于卡顿。主要的原因我发现其实是 company-mode 导致的。而每次尝试手动关闭 company-mode 有时候也会卡顿。因此,我想找到一个能够针对某一个major-mode进行关闭的方式。
资料整理过程说明
我的确是找到了在某一个major-mode中禁用某一个mode的方法,但是尝试之后,似乎对于compnay-mode是无效的。为此,继续寻找网络上的解决方案,这次直接针对compnay-mode做了查询,找到了一个issue的链接。
how to disable company-mode in eshell? · Issue #2390 · syl20bnr/spacemacs · GitHub
- 这里有很多人遇到了这样的问题没能够解决,甚至包括网络上emacs的高手。
- 从这里的描述看,其实很大的原因可能在于company-mode使能的滞后。不过,这个似乎也不是我现在遇到的情况。因为我的配置并不是这样的,spacemacs是我的抄袭参考对象,但是现在却不是我用的最多的配置。
- 不过这个问题上面的这个描述倒是给了我更多的启发。既然如此,我不妨直接单独启动每一种 major-mode 的配置,毕竟我自己的用到的场景并不多。
- It would be difficult to disable in a certain major mode if use global-company-mode
(global-company-mode 1)
(add-hook 'c-mode-hook 'company-mode)
(add-hook 'emacs-lisp-mode-hook 'company-mode)
configurations for org-mode
(add-hook 'org-mode-hook 'company-mode) - major-mode,而且暂时也排除掉了我遇到的使用问题。
要点细节分析
类似的插件实现是复杂的,使用自然也是复杂的。如果从满足我们一时的需求来说,可能一切都是简单的。但是如果考虑让它尽善尽美,可能我们的确得投入无穷无尽的时间。
实际探索体验以及效果
针对org-mode的生效测试:
从上面的效果看,org-mode下company生效。
针对C语言的测试:
针对C语言也是自动生效的。
接下来看看一个没配置的txt文件:
从上面的效果看,没有配置的major-mode没有自动开启。我想修改成为不开启的eshell-mode应该也是如此。
测试下来,配置成功了,而且操作交互的时候的确是没有了之前的卡顿。
小结
单纯的一个小功能看起来或许的确是简单的,但是如果从一整个配置上来说,用不上几个插件就会觉得emacs配置的复杂性。使用别人成熟的配置自然是一个很好的选择,但是这种庞大的配置有时候让我遇到使用障碍的时候觉得绝望。或许,维持自己的配置还是一个很好的选择。这样,不仅可以掌握可控度,自己对于整个体系的理解也会在潜移默化中不断积累成长。
Happy hacking!