Подтвердить что ты не робот

Emacs, автоматический полный режим, CSS, боль. (Показано!)

У меня есть Auto Complete Mode, установленный для Emacs.

Во-первых: Когда я печатаю объявления, я получаю нормальное поведение автозаполнения:

Hosted by imgur.com

Итак, я нажал Tab для завершения - никаких проблем. Но затем я нажал ;:

Hosted by imgur.com

Он мгновенно пытается что-то сделать! И я не могу нажать Enter, потому что это примет ошибочное завершение!

Hosted by imgur.com

Поэтому мне нужно нажать C-j. Какая боль.

Второе: Как только я закончил с объявлением, я набираю }:

Hosted by imgur.com

... но он не имеет отступов должным образом, если я не наберу Tab.

Что дает?

Обновление, настройки:

Я использую Emacs 23. Мои css-electric-keys являются } и ;. Моя конфигурация Auto Complete следующая:

(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)
4b9b3361

Ответ 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, но, возможно, это затмит несколько лучших идей.

Ответ 2

Старый материал, который я знаю, но попробуйте следующее:

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

Из руководство