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.
    • thompsopT
      thompsop
      last edited by thompsop

      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.

      EkopalypseE 1 Reply Last reply Reply Quote 0
      • EkopalypseE
        Ekopalypse @thompsop
        last edited by Ekopalypse

        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.

        Alan KilbornA 2 Replies Last reply Reply Quote 3
        • Alan KilbornA
          Alan Kilborn @Ekopalypse
          last edited by Alan Kilborn

          @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?

          EkopalypseE 1 Reply Last reply Reply Quote 2
          • EkopalypseE
            Ekopalypse @Alan Kilborn
            last edited by

            @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
            • Michael VincentM
              Michael Vincent
              last edited by

              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
              • gstaviG
                gstavi
                last edited by

                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.

                Michael VincentM 1 Reply Last reply Reply Quote 2
                • Michael VincentM
                  Michael Vincent @gstavi
                  last edited by

                  @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
                  • Alan KilbornA
                    Alan Kilborn @Ekopalypse
                    last edited by

                    @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.

                    EkopalypseE 1 Reply Last reply Reply Quote 1
                    • EkopalypseE
                      Ekopalypse @Alan Kilborn
                      last edited by

                      @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