LINUX.ORG.RU

Как настроить автодополнение с предпросмотром в emacs?


0

0

Осваиваю emacs. Стандартное автозавершение C-/ C-M-/ это я знаю, но я где то абсолютно точно видел скрин emacs с выпадающим списком вариантов завершения рядом с курсором (как в других редакторах например msvs, scite) Я тогда это как то пропустил а сейчас не могу найти. Подскажите пожалуйста как это сделать.

anonymous

Ответ на: комментарий от Kpoxman

Я встречал cedet но скрин видел по моему не cedet. Там вроде было что то было про icicles. Cedet очень могучий, я хотел бы простое автозавершение из того что набрано в открытых файлах.

anonymous
()
Ответ на: комментарий от anonymous

>Я встречал cedet но скрин видел по моему не cedet. Там вроде было что
 то было про icicles. Cedet очень могучий, я хотел бы простое 
автозавершение из того что набрано в открытых файлах.

Ну вот есть CompletionUI. Хотя он какой-то недоделанный. Его надо 
дописывать. Но идея именно такая, что он определяет визуальные способы
 отображения списка, а наполнение списка определяется дополнительно. 
Там из dabbrev может быть информация, из etags. То,ч то в список 
автодополнения надо вставлять, ты выбираешь сам. предупреждаю сразу, 
мне он кажется сильно недоделанным (например, нет скроллинга -- выбор 
по цифрам), но как-то работает. Возможно, есть аналогичное. Ну я так
понимаю, что тебе нечто аналогичное нужно, но только со скроллируемым списком.

Вот попробуй. http://www.dr-qubit.org/predictive/completion-ui.el

В ~/.emacs

(require 'completion-ui)
(require 'dabbrev)

;; А потом поставщик дополнений прописыватеся и переменной 
;; completion-function присваивается.

(defun dabbrev--wrapper (prefix maxnum)
   "Wrapper around `dabbrev--find-all-completions'
   to pass to `completion-define-minor-mode'."
   (dabbrev--reset-global-variables)
   (let ((completions (dabbrev--find-all-expansions prefix nil)))
     (when maxnum
       (setq completions
          (butlast completions (- (length completions) maxnum))))
     (mapcar (lambda (word) (substring word (length prefix)))
          completions)))

(setq completion-function 'dabbrev--wrapper)

Там по M-Tab дополнение по умолчанию, а эта комбинация может быть
захапана WM. Больше ничего не нашел пока. Кустомизация кое-какая 
доступлна по customize-group RET completion-ui. 

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

у меня completion-ui что то вообще не работает на обеих
winxp
emacs 22 для win
emacs 21 для cygwin

пишет
Symbol's function definition is void: completion-cancel-tooltip

однако если эту функцию сначала отдельно eval то уже другой Symbol's function definition is void

может флаг какой-то включить чтобы elisp смотрел функции вперед? или это из-за windows такая ерунда

anonymous
()
Ответ на: комментарий от Burbaka

cedet работает но как я понял он работает только на тех языках которые знает. У меня проект perl + shell и в файле perl semantic-ia-complete-symbol-menu меню не показывает а пишет Wrong type argument: syntax-table-p, nil

anonymous
()
Ответ на: комментарий от anonymous

Угу. С перлом вообще трудно в этом плане. Динамический язык :)

Если тебе нужно чтоб выскакивала менюха как в semantic-ia-complete-symbol-menu, то наверное целесообразно покопать в сторону интеграции imenu (судя по всему в semantic используется именно она) и, например, dabbrev или ctags

Burbaka ★★
()

да я уже думаю можно и без меню, но чтобы хотябы удобно было - вводишь часть - нажимаешь что нибудь - выскакивает буфер *Completions* _со_словами_из_всех_открытых_файлов_и_фокус_должен_перемещеться_в_него_ - стрелками выбрал - нажал ввод _и_*Completions*_должен_закрыться_и_фокус_перейти_назад_в_текст_

можно так настроить без написания собственных функций?

anonymous
()

поздравьте меня:) я наконец то вместо гугла прочел документацию M-x describe-function RET dabbrev-completion и обнаружил что если вызвать dabbrev-completion с аргументом 16 то будут показаны кандидаты из всех буферов. Дальше назад в гугл и вот можно сказать один щаг в нужном направлении

если (global-set-key [(meta right)] 'dabbrev-completion)

то по C-u C-u alt-вправо выскочит буфер *Completions* c вариантами из всех буферов а не только из текущего

вывод - читать документацию тоже полезно!

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