Gtags очень медленно в Emacs
Я использую gnu global в emacs, все в порядке, но поиск команды "gtags-find-tag" слишком медленный, который не выдерживает. только эта команда очень медленная, остальные вроде "gtags-find-rtag" нормальны я думаю. Я удаляю другой конфиг, такой как cedet, чтобы исключить этот эффект, но эта проблема все еще существует. Я пропускаю некоторые шаги конфигурации глобальных или emacs? или кто-нибудь на другой платформе (linux) имеет эту проблему?
===
мой Emacs - это emacs для Mac OSX, версия 24.3, GNU global - 6.2.8, а мой файл конфигурации -
(add-to-list 'load-path (expand-file-name "~/.emacs.d"))
(setq load-path (cons "/Users/xxx/.emacs.d/gtags.el" load-path))
(autoload 'gtags-mode "gtags" "" t)
(add-hook 'c-mode-hook
(lambda ()
(gtags-mode t)
))
1 ответ
Я не использую Global (у меня есть смысл попробовать), но, глядя на код, gtags-find-tag
а также gtags-find-rtag
очень похожие функции.
Я полагаю, что разница должна быть либо в фазе завершения чтения, либо в фазе поиска, которые оба вызывают Global.
В завершающем чтении gtags передает опцию -c
пока проходит "гртагс" -cr
На этапе поиска проходит gtags. -x
пока проходит "гртагс" -xr
,
Сначала я попытался бы установить, является ли он быстрее вне Emacs, чем внутри него. Вышесказанного может быть достаточно для проверки этого, но вы должны быть в состоянии выяснить точные команды, используя M-x debug-on-entry RET call-process RET
(который вы можете впоследствии отменить с M-x cancel-debug-on-entry
), а затем запустив функции gtags и увидев, какие аргументы появляются в трассировке стека для этого вызова функции.
Если вы не можете сделать начальную или хвостовую часть трассировки стека, попробуйте скопировать и вставить ее в свой вопрос.
Редактировать:
Основываясь на информации из комментариев, кажется, что это аргумент нечувствительности к регистру, который, по какой-то причине, замедляет вещи до неоправданной степени.
Вы должны иметь возможность отключить это поведение здесь:
Mx customize-variable
RET gtags-ignore-case
RET