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,痛苦。 (插图!)的主要内容,如果未能解决你的问题,请参考以下文章