LINUX.ORG.RU

Несколько вопросов по Emacs

 ,


0

2

1) Настраиваю сейчас систему автодополнения auto-complete
Выглядит вот так:пока

(require 'auto-complete)
(global-auto-complete-mode t)
Как его научить брать данные из буфера *Completions*, но отдавать предпочтение уже ранее набранным словам(т.е. выводить их вначале)? Или есть варианты лучше?

2) Как организовать «супер таб»?
Хочется научить его одновременно дополнять слова и сниппеты(сниппеты вроде можно встроить в popup auto-complet'а) и при этом расставлять отступы.

Спасибо.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

По второму, смотри ac-trigger-key. Для совмещения комплита и сниппетов вроде есть ac-sources-yasnippet. Хавать ТАБ оно будет только пока пишеш слово, после пробела например ТАБ снова работает как отступ.

Вообще, как обычно, кури вики: http://www.emacswiki.org/emacs/AutoComplete

unlog1c ★★★
()

2) Как организовать «супер таб»?
Хочется научить его одновременно дополнять слова и сниппеты(сниппеты вроде можно встроить в popup auto-complet'а) и при этом расставлять отступы.

Можно сделать так, чтобы отступ ставился после каждого вызова ac-complete и ac-expand. Advising Functions

(defadvice ac-complete (after indent-after-complete)
  (funcall indent-line-function))
(ad-activate 'ac-complete)

(defadvice ac-expand (after indent-after-expand)
  (funcall indent-line-function))
(ad-activate 'ac-expand)
NeXTSTEP ★★
()

Где-то высмотрел простое решение - использовать S-<tab> вместо tab, собственно tab только для дополнений:

(defun open-line-or-yas ()
  (interactive)
  (cond ((and (looking-back " ") (looking-at "[\s\n}]+"))
     (insert "\n\n")
     (indent-according-to-mode)
     (previous-line)
     (indent-according-to-mode))
    ((expand-abbrev))
    (t 
     (setq *yas-invokation-point* (point))
     (yas/next-field-or-maybe-expand-1))))

(global-set-key (kbd "S-<tab>") 'open-line-or-yas)
.

Kostafey
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.