Emacs, режим автозаполнения, CSS, боль.(Показано!) - PullRequest
31 голосов
/ 04 января 2011

У меня Режим автозаполнения установлен для Emacs.

Первый: Когда я печатаю объявления, я получаю обычное поведение автозаполнения:

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

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

Так что я должен нажать Cj .Какая боль.

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

... но он не получает отступ, если я не наберу 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)

Ответы [ 2 ]

11 голосов
/ 05 января 2011

Вот несколько предложений:

  1. (setq ac-auto-start t) запускает автозаполнение автоматически.Если вы измените это значение на (setq ac-auto-start 1) (или 2 или 3), оно начнется только после того, как будет набрано столько символов.Это может не решить вашу проблему, хотя, если после ввода ; он рассматривает все предшествующее слово как часть текущего автоматического завершения поиска.

  2. Возможно, проблема в том, что ононе распознает точку с запятой как символ-разделитель (например, пробел), поэтому думает, что вы все еще добавляете к последнему слову.Возможно, добавление строки с запятой в ac-ignores поможет?(Не уверен, какой будет синтаксис для этого)

  3. Возможно, вы можете предотвратить автозаполнение с помощью клавиши ввода, добавив: (define-key ac-complete-mode-map "\t" 'ac-complete) и (define-key ac-complete-mode-map "\r" nil).Я не уверен, как это будет взаимодействовать с DWIM (включен по умолчанию).

  4. Попробуйте добавить точку с запятой в качестве ключа автозаполнения?

Мои знания .emacs по шкале от 0 до 10 похожи на 1,5, но, возможно, это поможет найти лучшие идеи.

4 голосов
/ 09 марта 2013

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

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

С инструкция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...