Community
    • Login

    Autocompletion across all opened files

    Scheduled Pinned Locked Moved General Discussion
    5 Posts 3 Posters 1.6k Views 1 Watching
    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.
    • Michael VincentM Offline
      Michael Vincent
      last edited by

      N++ has autocomplete but it seems to be based on the content of the current file and the contents of the autoCompletion\LANG_TYPE.xml file for the given language of the current file. Writing in C++, I can think of times that autocompletion from all open files would be good - like a .cpp and .h file where I’m defining the function prototypes in the .h file and I’d like the names to autocomplete from the opened .cpp file.

      I haven’t looked at the N++ code base, but I’m assuming this is done with the Scintilla Autocompletion calls? I wonder if there is a way to augment the dynamic list via plugin? Has anyone thought of this too? Has anyone tried it?

      Cheers.

      Mike WunderlichM 1 Reply Last reply Reply Quote 1
      • EkopalypseE Offline
        Ekopalypse
        last edited by Ekopalypse

        Afaik, you cannot modify the list npp uses on the fly but create your own list.
        I use this technique together with jedi for python.
        For C++ I ASSUME nppgtags might do what you want.

        Michael VincentM 1 Reply Last reply Reply Quote 1
        • Michael VincentM Offline
          Michael Vincent @Ekopalypse
          last edited by Michael Vincent

          @Ekopalypse said in Autocompletion across all opened files:

          I use this technique together with jedi for python.

          Can you describe how you have Jedi integrated with N++ for autocompletion? I’m not familiar with Jedi so just did a quick search. Found npp_pyjedi, do you use that? Or is it custom with PythonScript?

          I already use TagLEET (modified) and TagsView (modified), but neither help autocomplete while typing, they just lookup tags already typed in the document.

          I see nppgtags has an autocomplete feature, but found the interface to TagLEET better to work with.

          Cheers.

          EkopalypseE 1 Reply Last reply Reply Quote 1
          • EkopalypseE Offline
            Ekopalypse @Michael Vincent
            last edited by

            @Michael-Vincent

            do you use that?

            No, the one I linked :-)

            Or is it custom with PythonScript?

            Yes, Jedi is a bunch of python modules which will be accessed
            by a python script plugin but for other languages it is the same I guess.
            There is a need to have an “external” process running which constantly parses
            your code and offers you the auto completion functionality.
            What I did is this

            def on_charadded(self, args):
                if self.is_python:
                    c = args['ch']
            
                    if c in ['.', ' ', '(']:
                        pos = editor.getCurrentPos()
                        if (editor.getCurLine().find('#') > -1 or
                            editor.getStyleAt(pos) in [3, 4, 6, 7]):
                            return
            
                        source = editor.getText() + c
                        line = editor.lineFromPosition(pos) + 1
                        column = editor.getColumn(pos)
                        script = jedi.Script(source, line, column, '')
            
                        if c == '(':
                            self.show_calltip(script, pos)
                        else:
                            if c == '.' and editor.callTipActive():
                                editor.callTipCancel()
                            self.autocomplete(script, pos)
            

            Whenever a charadded notification is sent I check if this is a python document and if it is
            act according to the added char. If it is a ( I call a calltip and in case it is a . I ask for completion.
            I could have done it for every single char but I don’t like to get a offer to autocomplete always.
            I mostly been interested in methods and attributes from classes etc…

            1 Reply Last reply Reply Quote 2
            • Mike WunderlichM Offline
              Mike Wunderlich @Michael Vincent
              last edited by

              @Michael-Vincent I came looking for the same info. I started to use Atom because it picks up on the function names in any open files and offers it in autocomplete. I’m doing PHP. So I start a session by opening my database and helper function files. Then any file I open gets full access to the autocomplete.

              I prefer N++ but have been using Atom more lately because I’m doing a HUGE site update and the new function names are not in the old code. It’s saving me a TON of typing.

              1 Reply Last reply Reply Quote 0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              • First post
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors