Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^5: Making it clearer to say that a sub is defined within current package

by LanX (Sage)
on Apr 13, 2019 at 12:06 UTC ( #1232537=note: print w/replies, xml ) Need Help??


in reply to Re^4: Making it clearer to say that a sub is defined within current package
in thread Making it clearer to say that a sub is defined within current package

> Probably this is emacs.

what else? ;-)

> May be i miss a command like M-x goto-definition in some mode?

well these are several questions ... point for point.

  • you said the mouse is needed

    nope

    every x-action is bound to a function and can be bound to a key too, and the function word-at-point gives you the word under the cursor. So you can freely combine any mouse-action with the word-at-point .

    Tip: C-h k doesn't only show you the keybinding of the next keystrokes, but also of the following mouse actions. Hence you can see what is triggered and use it in your own scripts.

  • getting all "local" subs

    cperl-mode supports imenu , which scans the current buffer for every sub declaration.

    Just go to the menu bar and click <menu-bar> <Perl> <Tools> <Imenu> and you'll see a list of all subs in the buffer.

  • jumping to the sub at point

    When called interactively with M-x imenu or a key-binding like C-c i or M-Ret (personal binding) offers all alternatives in the mini-buffer (the bottom line) but defaulting to the word at point.

    For instance in my bindings M-RET RET lets me jump to that definition.

  • automatically showing that a sub is local

    Cperl mode has a setting to automatically show a mini-description for any Perl construct under the cursor In the message area. See <menu-bar> <Perl> <Toggle...> <Auto-help on Perl constructs>

    One could also hack this interface to show information for the sub at point using the data from imenu

  • Choroba mentioned etags/ctags

    These is necessary for bigger projects where the definition is in another file. I was only replying to the "local" requirement. ( Tags are tricky in a language which can only be parse by its own runtime engine ;)

HTH! :)

TL DR

M-x imenu

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1232537]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2022-05-23 11:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (81 votes). Check out past polls.

    Notices?