Emacs,自动完成模式,CSS,痛苦。 (插图!)

Posted

技术标签:

【中文标题】Emacs,自动完成模式,CSS,痛苦。 (插图!)【英文标题】:Emacs, Auto Complete Mode, CSS, pain. (illustrated!) 【发布时间】:2011-06-03 14:37:21 【问题描述】:

我已经为 Emacs 安装了 Auto Complete Mode。

首先:当我输入声明时,我会得到正常的自动完成行为:

所以我点击 Tab 来完成 - 没问题。但后来我点击了 ;:

它会立即尝试完成某事!我不能按 Enter 因为那会接受错误的完成!

所以我必须按 C-j。好痛啊。

第二: 完成声明后,我输入

...但是除非我键入 Tab,否则它不会正确缩进。

什么给了?

更新,设置:

我正在使用 Emacs 23。我的 css-electric-keys;。我的自动完成配置如下:

(ac-config-default)
(setq ac-auto-start t)
(setq ac-delay 0.1)
(setq ac-auto-show-menu nil)
(setq ac-show-menu-immediately-on-auto-complete t)
(setq ac-trigger-key nil)

【问题讨论】:

真的吗?投票结束?我不能再问关于 SO 的 Emacs 问题了吗? :( 关闭投票抵消了我的 +1,因为我向我展示了这个东西存在。 问题是“什么给了?”尽管有所有的图形和漂亮的格式,“什么给出了?”似乎问题不大。如果我尝试解释您的问题,您似乎在询问自动完成和缩进。请每个帖子一个问题。 @abelenky,如果我可以否决您的闷闷不乐的评论,我会的。你为什么坚持让他用完整、正确的英语重新表达他的问题?也许你是一台图灵机……他想知道如何让它更好地工作。如果您没有答案,请退后一步。 【参考方案1】:

这里有一些建议:

    (setq ac-auto-start t) 自动启动自动完成功能。如果您将其更改为 (setq ac-auto-start 1)(或 2 或 3),那么它只会在输入了那么多字符后才开始。这可能无法解决您的问题,但如果在您键入 ; 后,它会将前面的整个单词视为当前自动完成搜索的一部分。

    也许问题在于它没有将分号识别为分隔符(如空格),因此它认为您仍在添加最后一个单词。也许将分号字符串添加到 ac-ignores 可以解决问题? (不确定它的语法是什么)

    也许您可以通过添加 (define-key ac-complete-mode-map "\t" 'ac-complete)(define-key ac-complete-mode-map "\r" nil) 来防止通过回车键自动完成。我不确定这将如何与 DWIM 交互(默认启用)。

    尝试添加分号作为自动完成键?

我的 .emacs 知识在 0 到 10 的范围内就像 1.5,但也许这会激发一些更好的想法。

【讨论】:

我认为从键盘映射中删除回车键是最好的解决方案。当您真的确实想要更长的缩短版本时,它通常会妨碍您。即使没有第一个 sn-p,TAB 实际上已经可以正常工作了。 甜蜜! (define-key ac-complete-mode-map "\r" nil) 完美运行。谢谢!【参考方案2】:

我知道的旧东西,但请尝试以下方法:

(add-hook 'css-mode-hook       
  (lambda ()
     (make-local-variable 'ac-ignores)
     (add-to-list 'ac-ignores ";")))

来自the manual

【讨论】:

谢谢,这很有帮助,解决了一个让我非常恼火的问题! :)

以上是关于Emacs,自动完成模式,CSS,痛苦。 (插图!)的主要内容,如果未能解决你的问题,请参考以下文章

理解 Emacs 完成模式选择

使自动完成和 yasnippet 模式协同工作以在 GNU/Emacs 中编辑特定文件

Emacs shell 模式中的 Bash 自动完成

Emacs 补全:自动补全还是公司? [关闭]

如何在 Emacs 启动时显示 Org 模式议程?

使用 emacs -q -l 时将钩子添加到默认模式