LINUX.ORG.RU

Хочется автокамплита в emacs

 , ,


1

3

Мечтаю об автокамплите в emacs. Да и об intellisense тоже.
Установлены CEDET, ECB. Имею «недо-автокамплит» который показывает как правило все что угодно, но только не то что нужно.
Что добавить в .emacs конфиг, чтобы все заработало нормально?



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

Если ты о C++, то auto-complete + clang.

staseg ★★★★★
()

Для С++ качество автокомплита сильно улучшает EDE из cedet. Посмотри что можно добавить в `ede-cpp-root-project'. Все интересующие инклюды надо закинуть в 'semantic-lex-c-preprocessor-symbol-file. И т.д. и т.п.
Смотри хороший конфиг: https://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el
Ну и у меня ещё Qt прикручен: https://github.com/proofit404/my_emacs_config/blob/master/emacs/main.el#75

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

о ней ещё и не знать можно, каждый раз по докам грепать?

Ты можешь использовать функцию просто так, увидев название, которые показалось похожим на то, что тебе нужно? Поздравляю, ты — быдлокодер.

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

быдлокодер

простите, а что это?

просто так, увидев название

Прочитав всплывшую доку по ней. Тапнуть М-TAB - оно выведет кантидатов прошедших фильтр у котекстного лексера. Если там её нет, тогда пользуется тамошний вариант apropos. 70% находится на первом этапе, это тупо быстрее.

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

EDE прикручен. Но все равно нифига не работает.
Пробовал химичить с конфигами от alexott - не помогло.
Кто нить видел попап окошко а-ля intellisence в Emacs?
Хотя на «M-/» реагирует адекватно в коде c++, но почему то не показывает попап.
Для консольного режима тоже самое.

nerdogeek
() автор топика
Ответ на: комментарий от proofit404

Ага, включены у меня.
А как добавить автокамплит для std и boost типов/имен?
Может ли он парсить с++-ные темплейты и неймспейсы?

nerdogeek
() автор топика
Ответ на: комментарий от nerdogeek
;; helper for boost setup...
(defun recur-list-files (dir re)
  "Returns list of files in directory matching to given regex"
  (when (file-accessible-directory-p dir)
    (let ((files (directory-files dir t))
          matched)
      (dolist (file files matched)
        (let ((fname (file-name-nondirectory file)))
          (cond
           ((or (string= fname ".")
                (string= fname "..")) nil)
           ((and (file-regular-p file)
                 (string-match re fname))
            (setq matched (cons file matched)))
           ((file-directory-p file)
            (let ((tfiles (recur-list-files file re)))
              (when tfiles (setq matched (append matched tfiles)))))))))))

(defun c++-setup-boost (boost-root)
  (when (file-accessible-directory-p boost-root)
    (let ((cfiles (recur-list-files boost-root "\\(config\\|user\\)\\.hpp")))
      (dolist (file cfiles)
        (add-to-list 'semantic-lex-c-preprocessor-symbol-file file)))))

У Алексея в таком варианте сделано. Только указать корень, в котором буст лежит. Как видно там тот же самый semantic-lex-c-preprocessor-symbol-file, только приколоченный несовсем руками.

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

std же лежит в системных инклюдах, должен нормально их подхватывать. Если нет, то подправь с++-boost-setup, только с другим регэкспом.

Самый верный признак, по которому можно судить подцепилась ли библиотека - это наличие её в global-semantic-database. А при первом её использовании она вообще в соседнем буфере открывается.

По поводу темплейтов и нэймспэйсов я сам не проверял. Но на сайте cedet написано, что работы над парсерами С и С++ завершены на 100%. Думаю должно.

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