基于 Company 编写了一个带中文注释的英文补全助手

不光是曾经,现在也是😭

今天早上推送了一个补丁, 去掉连续翻译的功能了: Remove the function of continuous translation, it is not easy to use. · manateelazycat/insert-translated-name@ebf7671 · GitHub

激活打中文, 按空格翻译, 需要继续翻译手动再次激活.

发现连续翻译好烦, 还是手动激活好用.

好东西哪~ 顶一个,忙过这阵整整试试。感谢楼主!

今天写了个补丁 Adjust the case of the completion word according to the string entere… · manateelazycat/company-english-helper@142fabb · GitHub

会根据用户输入的单词自动调整大小写, 就像这样: new

1 个赞

作为刚接触emacs没多久的人,容我弱弱的问一下,如何在spacemacs中安装这个包呢?具体的说这里面要写入.emacs及.emacs startup file中的语句究竟是在spacemacs的什么文件,什么位置,我尝试过从.emacs.d中的init文件及.spacemacs文件的user-init中写入,但总是报错,无法运行,不知道错在哪里了

在 .spacemacs 的 user-init 中写入

(add-to-list 'load-path (expand-file-name "~/Your/Path/company-english-helper"))
(require 'company-english-helper)

谢谢指导,不过我这样做以后运行spacemacs不报错,但无法通过M-x调出company-english-helper,不知道问题出在哪里?按理说company-english-helper.el 最后写入了provide 语句,如果有调用的话应该是可以出现这个命令的,但现在不知道出了什么问题

我使用的调用函数是 toggle-company-english-helper

provide语句是让你能require……不是说入口函数名就是包名……

问题是无论我输入M-x toggle-company-english-helper 还是M-x company-english-helper 都不行,显示根本就没有这个函数,请问你们在spacemacs底下是可以调用此功能吗?

spacemacs 中,M-x 之后,就有 toggle-company-english-helper 这个函数了,我绑定快捷键也是用的这个名字。

历经多次试验任未解决,现在想提出如下问题,该包是基于company,这是不是意味着必须打开或者安装了company-mode才能调用company-english-helper,即使是这样,我已经可以使用commpany-mode 仍然无法调用哪个M-x toggle-company-english-helper,实在不知道问题出在哪里?现在愈来愈觉得emacs是神器,不过每定制一个功能都要耗费好多脑细胞啊,另外,各位高人可不可以直接把你们的配置的代码以图片形式贴出来,因为我发现上次直接用网页上的代码总是有问题,但粘贴简书里的代码却没有问题,不知道是不是因为网页导致部分符号丢失,尤其是涉及到文件夹目录时,似乎是emacs里的正则表达式对地址有影响

学一下 markdown 语法。用三个反引号包裹的就是代码段,直接在输入区中写就好。 比如

```
print(“hello”)
```

效果就是

print("hello") 

图片不适合做代码分享毕竟不能复制。 更大规模的代码,可以使用 github 来分享。


company-english-helper 依赖 company 所以必须装 company。但是同时也要装 company-english-helper 啊。至于怎么安装,目前只能手动安装。手动安装指的是把源代码搞下来放在你的配置文件中。(当然你也可以使用 elget 等工具帮你进行管理,这就是后话了。)你要好好了解一下 emacs 是如何管理和执行配置文件的。详情可以看看本论坛出品的 Emacs Rock,点最上面的 Book 就行。

新手不适合sapcemacs的吧 因为他太庞大了

有一定经验再用才好

如果你想一上来就能用 那为什么不是vim呢?

经过分析,我发现在我的spacemacs中,存在如下疑问:load-path 变量中 包含company-english-helper所在文件夹路径,在features变量中包含cl,cl-lib,company,缺少company-english-helper,也就是说没有生成company-english-helper的feature,那么现在的问题就成了如何生成company-english-helper的feature,既然文件夹已经包含在load-path中,那么在启动时是否已经load了呢,既然已经load了,又有了provide语句,按照道理来说是就存在feature了,就可以require了。不知道以上份额分析中有什么错误?

请问现在有解决方案了吗?我也有相同的疑问

有人写了一个 grammarly 的包:

不过不是直接走 http 请求,而是把文本推给客户端,修改完了再拉回来。

没有办法,company-mode 在一个 backend 有结果后就不会再尝试下一个了。

我现在是专门定了一个快捷键,调用 my/company-english-helper,来在当前 buffer 启用/ 禁用英文补全功能。

;; company-english-helper
(use-package company-english-helper
  :after company
  :defer nil
  :quelpa (company-english-helper :fetcher github :repo "manateelazycat/company-english-helper")
  :commands (my/company-english-helper)
  :config
  ;;; Makesure add company-english-helper backend to end.
  (require 'company-english-helper)
  (if company-english-helper-active-p
      (toggle-company-english-helper))
  (add-to-list 'company-backends 'company-english-helper-search t)
  (setq company-english-helper-active-p t)
  (defun my/company-english-helper()
    (interactive)
    (company-mode t)
    (defvar-local my/company-english-helper-backends nil)
    (let ((backends (buffer-local-value 'my/company-english-helper-backends (current-buffer))))
      (if backends
          (progn
            (message "company english helper off")
            (setq-local company-backends backends)
            (setq-local my/company-english-helper-backends nil))
        (message "company english helper on")
        (setq-local my/company-english-helper-backends company-backends)
        (setq-local company-backends
                    (append
                     '(company-english-helper-search)
                     (delete 'company-english-helper-search company-backends)))))))

谢谢,看来目前只能这样了,感谢!

好像 company 有一个 group 概念,可以将多个 backend 的输出都显示

1 个赞