emacs-helm / helm

Emacs incremental completion and selection narrowing framework
https://emacs-helm.github.io/helm/
GNU General Public License v3.0
3.37k stars 390 forks source link

Extend helm-tags.el to support gtags #2592

Open BooAA opened 1 year ago

BooAA commented 1 year ago

Suggestion

Currently helm-tags.el only support etags. But in practice, gtags is more popular as it support not only finding definition as etags already do, but also cross reference (e.g. find the usage of a function/variable, etc). And gtags is the only tags-based solution I know that support cross reference. Also gtags use database for incremental update, which makes it the defacto solution for browsing code in gigantic project like linux kernel.

Description

Extend helm-tags.el to have defcustom for which tags program to use. Or have another stand-alone helm-gtags-select just like the helm-etags-select we already have to use helm interface for selecting tags/references.

Solutions

There is already helm-gtags on melpa, unfortunately the package is out of maintenance and is now being deprecated.

thierryvolpiatto commented 1 year ago

Liangjie Lee @.***> writes:

  1. ( ) text/plain (*) text/html

Suggestion

Currently helm-tags.el only support etags. But in practice, gtags is more popular as it support not only finding definition as etags already do, but also cross reference (e.g. find the usage of a function/variable, etc). And gtags is the only tags-based solution I know that support cross reference. Also gtags use database for incremental update, which makes it the defacto solution for browsing code in gigantic project like linux kernel.

Description

Extend helm-tags.el to have defcustom for which tags program to use. Or have another stand-alone helm-gtags-select just like the helm-etags-select we already have to use helm interface for selecting tags/references.

Solutions

There is already helm-gtags on melpa, unfortunately the package is out of maintenance and is now being deprecated.

IIRC this package is working properly (the author Syohei wrote mostly very good packages) even if it is now on emacsorphanage, if there is a bug I think you can report there and it should be fixed by somebody, I see the last commit in 2022 which is not old. At least if it is not working properly and you have no answer there, maybe you can report here and I can try to fix it.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.*Message ID: @.***>

-- Thierry

BooAA commented 1 year ago

Thanks, I will report but to emacsorphanage and see if someone will fix it. In terms of functionality, helm-gtags still work properly, but the user experience is really poor. For project with about 600MB GTAGS file, everytime I type a word for incremental searching, I need to wait like 5~10s to see the results being updated on the helm buffer. I don't think it's emacs being freezed for processing data since I can still type more characters in the minibuffer, but looks like it's because the gtags query is totally asynchronous and the interval is too long that makes the UX sluggish.

Update: I have file an issue to helm-gtags, here's the bug https://github.com/emacsorphanage/helm-gtags/issues/197

ooglyhLL commented 1 year ago

Did you try ggtags? It already integrates with helm. Maintaining a huge completion candidates list will inevitably take its time, but I haven't experienced it being unusable.