#perl #emacs #autocomplete
#perl #emacs #автозаполнение
Вопрос:
Лучшее, что может сделать автозаполнение, — это сопоставить символы word. Например: автозаполнение будет соответствовать только $longvariablename в ранее используемой переменной, $ longvariablename[$i]{‘key’}. Я хотел бы настроить автозаполнение или любой другой файл emacs el для соответствия всей переменной.
В качестве последнего средства мне придется выучить lisp #shudder #.
Заранее спасибо.
Комментарии:
1. Не на 100% ясно, что вы хотите… вы хотите, чтобы это завершилось полностью, вплоть до закрытия} ?
Ответ №1:
Вы можете настроить расширение hippie.
Например, следующая настройка расширяет все строки до пробела или точки с запятой.
(defun try-expand-perl-extended-var (old)
(let ((old-fun (symbol-function 'he-dabbrev-search)))
(fset 'he-dabbrev-search (symbol-function 'perl-extended-var-search))
(unwind-protect
(try-expand-dabbrev old)
(fset 'he-dabbrev-search old-fun))))
(defun perl-extended-var-search (pattern amp;optional reverse limit)
(let ((result ())
(regpat (concat (regexp-quote pattern) "[^ ;] ")))
(while (and (not result)
(if reverse
(re-search-backward regpat limit t)
(re-search-forward regpat limit t)))
(setq result (buffer-substring-no-properties (save-excursion
(goto-char (match-beginning 0))
(skip-syntax-backward "w_")
(point))
(match-end 0)))
(if (he-string-member result he-tried-table t)
(setq result nil))) ; ignore if bad prefix or already in table
result))
Не забудьте включить свою пользовательскую функцию в make-hippie-expand-function
список
(global-set-key [(meta f5)] (make-hippie-expand-function
'(try-expand-perl-extended-var
try-expand-dabbrev-visible
try-expand-dabbrev
try-expand-dabbrev-all-buffers) t))