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

Emacs, Auto Complete Mode, CSS, pain. (illustrated!)

我已经为Emacs安装了"自动完成模式"。

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

Hosted

所以我按Tab完成了-没问题。但是后来我打了;

Hosted

它立即尝试完成某些任务!而且我打不了Enter,因为那会接受错误的完成!

Hosted

所以我必须打C-j。真痛苦。

第二:完成声明后,我键入}

Hosted

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

有什么作用?

更新,设置:

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

1
2
3
4
5
6
(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)


以下是一些建议:

  • (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"\
    " nil)
    通过回车键来防止自动完成。我不确定这将如何与DWIM交互(默认情况下启用)。

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

  • 我的.emacs知识的范围是0到10,就像1.5一样,但这也许会激发出一些更好的主意。


    我知道的旧东西,但是请尝试以下操作:

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

    从手册