• Login
Community
  • Login

I would like to have a "Notepad++ shortcut" that will jump to a line in a file

Scheduled Pinned Locked Moved General Discussion
enhancement reqfeature request
9 Posts 5 Posters 8.8k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T
    thompsop
    last edited by thompsop Mar 2, 2020, 8:31 PM Mar 2, 2020, 8:30 PM

    Title:
    I would like to have the ability to create a string that Notepad++ recognizes as a clickable link. Clicking on it would take me to the specified line in the specified file.

    Description:
    Basically, I want the ability to create a specially formatted text string that Notepad++ recognizes as a clickable shortcut. I would imbed this string into a comment. Clicking on it in Notepad++ will take me to the targeted line in the targeted file. If the file isn’t loaded, Notepad++ would load the file, go to the specified line and highlight that line. If the file is already loaded, Notepad++ would switch to that tab and change to the specified line and highlight that line.

    Why do I want this?
    I would like to insert references in my source code to code in other files. In a JavaScript file for example, I would like to put in comments like:

    // Function "editManItem()" is called when a user clicks an "Edit" button from 
    //   inside the HTML table of line items.
    // Works in combination with:
    //    function removeManItem(id)       npp://./s/^function removeManItem/+1
    //    function onEditSet(id)           npp://UserInterface.js/s//+45
    

    npp://./s/function removeManItem/+1
    Would take me to the current file (“.”), do a regex text search for the string “function removeManItem” at the beginning of a line (“s/^function removeManItem/”) then go to next line (“+1”).

    npp://UserInterface.js/s//+45
    Would take me to file “UserInterface.js”, not do any text search search (“s//”) which would place the cursor at the first line of the file, the go 45 lines down (“+45”), essentially going to line #45 of that file.

    Essentially this is a cross-reference capability to source code in another file. It’s dynamic in that it searches based on regular expressions instead of going to a specific line in the file, but (as shown in the 2nd example), it also allows going to specific line numbers.

    E 1 Reply Last reply Mar 2, 2020, 10:57 PM Reply Quote 0
    • E
      Ekopalypse @thompsop
      last edited by Ekopalypse Mar 2, 2020, 10:57 PM Mar 2, 2020, 10:57 PM

      It could be achieved by using a scripting plugin like pythonscript.
      Some simple demo code to show how to get the click notification.

      from Npp import editor, SCINTILLANOTIFICATION
      
      def goto(args):
          start = editor.wordStartPosition(args['position'], False)
          end = editor.getLineEndPosition(editor.lineFromPosition(args['position']))
          print(editor.getTextRange(start, end))
      
          
      editor.callback(goto, [SCINTILLANOTIFICATION.HOTSPOTCLICK])
      

      but if you want to have this builtin, then you might consider open
      a feature request.

      A 2 Replies Last reply Mar 3, 2020, 12:34 PM Reply Quote 3
      • A
        Alan Kilborn @Ekopalypse
        last edited by Alan Kilborn Mar 3, 2020, 12:36 PM Mar 3, 2020, 12:34 PM

        @Ekopalypse

        Just a comment. It sure would be idea if the notification itself provided the hotspot text, but sadly, no…

        Your method of getting the text isn’t perfect as I’m sure you know. Maybe a better way would be to find the “bracketing” whitespace around the position, as whitespace definitely seems to break up a url when embedded in a Notepad++ document?

        Also, won’t this script intercept the existing behavior of clicking on http urls?

        E 1 Reply Last reply Mar 3, 2020, 1:36 PM Reply Quote 2
        • E
          Ekopalypse @Alan Kilborn
          last edited by Mar 3, 2020, 1:36 PM

          @Alan-Kilborn

          You are right, it is far from solving OPs issue, its purpose was just to demonstrate that it is possible.
          If OP wants to go that way, then I would do more like

          • get line of link
          • parse line to identify which kind of link it is
          • do needed action
            but that would mean, OP needs to define exactly what is required.

          Also, won’t this script intercept the existing behavior of clicking on http urls?

          I don’t think so, it is a notification received by npp and PS independently.

          1 Reply Last reply Reply Quote 2
          • M
            Michael Vincent
            last edited by Mar 3, 2020, 2:51 PM

            Why not just use a cTags plugin? What you’re describing is exactly what cTags does, with out needing to put special formatted strings. You just run cTags on your code to generate a tags file which has all the function definitions and then use the cTags plugin to navigate to them with a shortcut key.

            There is cTagsView, TagLEET, NppGTags.

            I prefer TagLEET and use a modified version of it. cTagsView is “automatic” but only works on the currently viewed file so maybe not what you want. I have not used NppGTags, but others have mentioned it on this site.

            Cheers.

            1 Reply Last reply Reply Quote 3
            • G
              gstavi
              last edited by Mar 9, 2020, 11:17 AM

              You can instruct ctags to generate a tag for every file name with –extra=f.
              For TagLEET, with the following text:

              UserInterface.js:45  // any comment you want
              

              If your caret is in UserInterface.js, Tag Lookup will jump to line 45.
              This feature was intended to copy paste compilation results from terminal and jump to errors and warnings.

              @Michael-Vincent looking at your TagLEET modifications.

              M 1 Reply Last reply Mar 12, 2020, 8:57 PM Reply Quote 2
              • M
                Michael Vincent @gstavi
                last edited by Mar 12, 2020, 8:57 PM

                @gstavi said in I would like to have a "Notepad++ shortcut" that will jump to a line in a file:

                @Michael-Vincent looking at your TagLEET modifications.

                https://github.com/vinsworldcom/nppTagLEET

                We talked about these a while back over email. I went ahead and tried and got the added column I wanted. Since then I added a few more columns and added autocomplete ability using either the TagLEET pop-up or Notepad++ Scintilla native autocomplete - based on the info in the tag file. I like this feature since it allows me to autocomplete across a bunch of opened files in the same project (they have the same tags file), whereas the plain vanilla Notepad++ autocomplete is only within a single document.

                Cheers.

                1 Reply Last reply Reply Quote 1
                • A
                  Alan Kilborn @Ekopalypse
                  last edited by Feb 13, 2021, 12:31 PM

                  @Ekopalypse said in I would like to have a "Notepad++ shortcut" that will jump to a line in a file:

                  It could be achieved by using a scripting plugin like pythonscript.
                  Some simple demo code to show how to get the click notification.

                  While revisiting this old thread, I see the PythonScript, but what I don’t see is how it would work in the OP’s case, as there isn’t any “hotspotted” text. @Ekopalypse can you comment? I feel like I am missing something that perhaps I once understood, but now that time has gone by, things are murky.

                  E 1 Reply Last reply Feb 14, 2021, 1:21 PM Reply Quote 1
                  • E
                    Ekopalypse @Alan Kilborn
                    last edited by Feb 14, 2021, 1:21 PM

                    @Alan-Kilborn

                    I barely know what I ate yesterday, how am I supposed to know what I thought about something a year ago? :-D

                    Links can be created as we see with url - based on that, I suppose I came up with this idea, but it looks like I never dug deeper since it wasn’t requested.

                    1 Reply Last reply Reply Quote 2
                    • First post
                      Last post
                    The Community of users of the Notepad++ text editor.
                    Powered by NodeBB | Contributors