Meandering not definitive answer; I don't regularly use tags (if I'm looking for something I'll use ripgrep) but . . .
When I've created tags files in the past I usually used exuberant; worked pretty well with the large codebase at $work. I'd also toyed very briefly with GNU global and the emacs interface for same. I had the following perl additions for constant things and Moose-y attributes.
--regex-perl=/Readonly::[a-zA-Z0-9_]+ my [\$@%]([a-zA-Z0-9_]+)/\1/C,Re
+adonly:: constant/
--regex-perl=/use constant ([A-Z][a-zA-Z0-9_]+)/\1/c,use constant/
--regex-perl=/has[[:space:]]+([[:alnum:]_]+)[[:space:]]*=>/\1/M,moose
+attribute/e
Most "modern" IDEs have moved to using a "language server" to implement the language-specific parsing and symbol lookup and what not; there's Perl::LanguageServer which I've run once or twice with the emacs module (you mention the inferior editor so this article comes up on a search but I can't vouch for it) so you might see if that maybe scratches the need for which you've been using tags.
The cake is a lie.
The cake is a lie.
The cake is a lie.
| [reply] [d/l] [select] |
Thanks for your response Monk Emacs. I am also investigate the Language Server. Like you, I also use ripgrep and the silver searcher as well.
I hope that you recover soon from your addiction :)
lbe
| [reply] |
Sorry for the impudent answer, I use Emacs instead of vim. It uses an etags file which is different to ctags, but I guess the information contained in it is the same, just formatted differently. Here's how I generate the file: perl-etags.pl - it supports some Moo* and similar sugar (e.g. "has", "alias", "method", but support for "handles" is still missing). Feel free to modify it to your liking.
I run it in the root directory of any larger project I work with. To get documentation on CPAN modules, I use perldoc (integrated into Emacs, of course, so I can just press a key combination on a module name and get the documentation). I rarely need to read the source of the CPAN modules, but if I need it, I use perldoc -l or perldoc -m. It hasn't happened enough times to bother me to find out whether Emacs supports it (and implement it if not).
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
| [reply] [d/l] [select] |
| [reply] |
qwurx [shmem] ~/some_repo > mdkdir INC
qwurx [shmem] ~/some_repo > cd INC
qwurx [shmem] ~/some_repo/INC > perl -E 'for (@INC) { ($n=$_)=~s{/}{·}
+g; symlink $_, $n}'
qwurx [shmem] ~/some_repo/INC > cd ..
qwurx [shmem] ~/some_repo > ctags -R
Then I add INC and tags to .gitignore and done.
Yes, I am using 00B7 MIDDLE DOT as path separator, because expanding a dot to oblique is just a matter of perspective reading the vim file info.
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
| [reply] [d/l] [select] |
| [reply] |
| [reply] [d/l] |
Thanks for linking to Damian's presentation. I have watched this several times and as much as I respect him for all that he has done for perl, he and I have different editing styles. This is probably because my brain is but a fraction of the size of his :) Nonetheless, I do have some of his recommendations in my .vimrc today.
Thanks, lbe
| [reply] |