【问题标题】:How do I get spacemacs web-mode autocomplete to relax a little?如何让 spacemacs 网络模式自动完成功能放松一点?
【发布时间】:2020-05-30 06:16:09
【问题描述】:

我是 Spacemacs 和 Emacs 的新手。当我在 web 模式下编辑时,比如 html 文档,当我还没有输入任何相关内容时,我经常会触发自动完成提示。我记得我在 html 块中没有这个问题,但是在脚本(js)或 css 块中,必须不断地拍掉菜单会变得非常麻烦。

您可以从上面的示例中看到,我正在编辑 css,并且在使用分号完成属性定义后会弹出自动完成功能,这意味着点击分号并回车开始下一行将改为在后面的行中添加无用的文本分号。我怎样才能改变这种行为?

你可以在这里再次看到我在脚本标签内编辑时几乎有同样的问题。使用大括号打开函数定义并按 Enter 键转到下一行,而是在大括号后插入无用的文本。

我正在编辑的文件是 .svelte,但我已经告诉 emacs 使用 web 模式

我的 dotspacemacs/user-config 有以下内容:

(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
(add-to-list 'auto-mode-alist '("\\.svelte?\\'" . web-mode))
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2)

(setq configuration-layer--elpa-archives
      '(("melpa-cn" . "http://elpa.emacs-china.org/melpa/")
        ("org-cn"   . "http://elpa.emacs-china.org/org/")
        ("gnu-cn"   . "http://elpa.emacs-china.org/gnu/")))

【问题讨论】:

    标签: emacs autocomplete config spacemacs company-mode


    【解决方案1】:

    尝试将此添加到您的 spacemacs 文件 spc + feddotspacemacs-configuration-layers 部分

         (auto-completion :variables
                          auto-completion-enable-snippets-in-popup t
                          auto-completion-return-key-behavior nil
                          auto-completion-tab-key-behavior 'complete)
    

    【讨论】:

      【解决方案2】:

      我也是 emacs 的新手。我认为这和

      是同一个问题

      https://emacs.stackexchange.com/questions/53110/for-spacemacs-how-do-i-override-a-layers-setting-company-minimum-prefix-leng

      基本上是因为.emacs.d/layers/+lang/html/func.el中的这个功能

       (defun spacemacs//company-web-minimum-prefix-length ()
          "Set company minimum prefix length to 0 for the current buffer only."
          (set (make-local-variable 'company-minimum-prefix-length) 0))
      

      https://github.com/osv/company-web/issues/4相关

      您可以将最小长度更改为 0 以外的某个值

      【讨论】:

        【解决方案3】:

        我自己不是 spacemacs 用户,但您似乎已将 company-minimum-prefix-length 设置为 0,而您可能希望它至少为 2。您也可以考虑增加 company-idle-delay,这会导致候选人的呈现速度变慢。

        【讨论】:

        • 也许 spacemacs 以某种不同的方式加载和配置公司,在任何一种情况下,我都无法使上述配置产生任何效果,也许不是在正确的位置。所以试图找到 spacemacs 的具体信息并来到这里 [develop.spacemacs.org/layers/+completion/auto-completion/… 。除了禁用返回键完成之外,这些都没有满足我的需求。
        • 您可以从您的 html 缓冲区评估 M-: (setq company-minimum-prefix-length 2) 进行测试。我假设您使用company-mode 进行自动完成,即。如果你评估M-: company-mode 的值是t,在这种情况下你应该在你的html缓冲区中发布活动company-backends 的值(注意:如果spacemacs 覆盖M-:,那是等价的到M-x eval-expression)
        • 这很有帮助。我显然需要在不同的地方设置变量。我在 user-config 函数中将(setq company-minimum-prefix-length 1) 添加到 .spacemacs 中,但这什么也没做。我不知道我应该把它放在哪里。按照您的建议直接从 html 缓冲区评估表达式可以正常工作。现在我更好地理解了这个问题,我发现This question 基本上是一样的
        • 好吧,通常情况下,我们会在全局范围内设置这些公司变量——但如果您想要为 html-mode(或 web-mode)设置一个特殊值,您可以在您的 @ 中设置一个 (setq-local company-minimum-prefix-length ...) 987654338@。 Spacemacs 可能有一个用户可配置的机制来设置模式钩子,否则你应该能够像往常一样设置一个钩子
        猜你喜欢
        • 2018-12-11
        • 2020-09-27
        • 2021-06-24
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        相关资源
        最近更新 更多