Community
    • Login

    New (incomplete) LSP client plugin

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    59 Posts 8 Posters 8.6k 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.
    • EkopalypseE
      Ekopalypse @Ekopalypse
      last edited by

      May I ask that one of the moderators change the title of this post to

      New (incomplete) LSP client plugin

      Since version v.0.0.30 a 32bit plugin is also available.

      Thank you very much.

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

        Thank you for renaming the title.

        EkopalypseE 1 Reply Last reply Reply Quote 0
        • PeterJonesP PeterJones forked this topic on
        • PeterJonesP PeterJones referenced this topic on
        • EkopalypseE
          Ekopalypse @Ekopalypse
          last edited by

          I am looking for the reason for a phenomenon where I am slowly running out of ideas and would be grateful for any ideas.
          Background: It can happen that Notepad++ does not start when the NppLspClient plugin is used and Notepad++ is run in dark mode. In light mode I, and also the user who reported this, can never see this. Even my normal Npp installation, which I use daily and has always run in dark mode, does not show this behavior. I can currently only reproduce this with a separate Npp installation and even then not always. It also only seems to occur when an Npp release version is used, I have also not been able to reproduce the problem via the Visual Studio debugger. I have implemented a stack tracer in the plugin but unfortunately I cannot recognize any pattern. The error that is reported is 0xc0000374 (heap corruption) which doesn’t make it any easier to find the reason as the heap was probably already corrupted long before the exception. And with two traces I have several DllMain calls in different frames (???).
          If my plugin corrupts the heap, why only when dark mode is active? And why can’t I see this at least sometimes with my normal npp installation?
          I’m confused. :(

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

            @Ekopalypse

            Issue solved in version v.0.0.33

            1 Reply Last reply Reply Quote 6
            • xomxX
              xomx @Ekopalypse
              last edited by PeterJones

              @Ekopalypse

              (in reply to this post)

              I do not experience such a problem.

              Beware that while the WINAPIs in your callstack screenshot seem to be decoded properly (is it the PH SW?), the N++ calls are not. So the immediate calls visible are response for calling the GetProp, but the N++ source origin (callstack frame No. 4) is most probably wrong. You need to build your own N++ (Debug or Release, it does not matter, but with the PDB-symbols generated!) and then repeat your callstack revealing steps.

              EkopalypseE 1 Reply Last reply Reply Quote 3
              • EkopalypseE
                Ekopalypse @xomx
                last edited by

                Hello @xomx,
                Thank you for the response.

                The screenshot shows the sysinternals Process Explorer with symbol files loaded from a recent Notepad++ release build.

                The tldr is that I need to figure out why my plugin is suddenly receiving a bunch of
                5001 (SC_WIN_IDLE) messages in 2 of 4 dialogs that have the Scintilla control embedded.

                The more detailed version.
                The LspPlugin has 4 dock-able dialogs that all use the Scintilla control.
                None of them currently have a lexer active, but are colored via the SCI_ADDSTYLEDTEXT message.
                2 Dialogs, Diagnostics and References show the unusual behavior that they

                a) receive SC_WIN_IDLE messages and
                b) relatively much in a short time

                In a 20 second test, starting from the start of Npp,
                I received approx. 3800 dialog messages for all 4 dialogs, of which approx. 3000 were SC_WIN_IDLE messages.
                Only received from the two dialogs mentioned. But only if something was added in the two dialogs.
                A single letter was sufficient for this. If the letter was deleted again, the messages also stopped and the CPU load decreased again.

                The two dialog groups, Diagnostics/References on one side and Symbols/Console on the other, differ in one detail.
                Symbols/Console use the initial document create by Scintilla and that is always overwritten,
                Diagnostics/References use a separate document (SCI_SETDOCPOINTER, SCI_CREATEDOCUMENT, SCI_RELEASEDOCUMENT …) for each LSP server.

                I can’t say at the moment whether this is the actual trigger but I am confident that I will find out in the next few days.

                xomxX 1 Reply Last reply Reply Quote 1
                • xomxX
                  xomx @Ekopalypse
                  last edited by PeterJones

                  @Ekopalypse said in Notepad++ v8.7.6 Release Candidate:

                  with symbol files loaded from a recent Notepad++ release build.

                  These are 100% wrong (missing).
                  Let’s stop here and continue in more appropriate place.

                  –
                  moderator: moved the tangential posts from the v8.7.6-RC topic to here

                  1 Reply Last reply Reply Quote 2
                  • xomxX xomx referenced this topic on
                  • xomxX
                    xomx
                    last edited by xomx

                    Continue from: https://community.notepad-plus-plus.org/post/99308

                    Below I will show you what you will see with the correct PDBs loaded for the just launched N++ (none of its func invoked), the two N++ base threads will be its main thread and the backup-snapshots worker one:
                    npp-PDB.png

                    @Ekopalypse said in New (incomplete) LSP client plugin:

                    Diagnostics and References show the unusual behavior that they

                    a) receive SC_WIN_IDLE messages and
                    b) relatively much in a short time

                    I can confirm with Debug N++ v8.7.6rc2 & your plugin binary. I simply launched the N++, invoke your Toggle diagnostic window and then any action in it (even a mouse click inside that Diagnostics wnd) invokes the SC_WIN_IDLE:
                    npp-NppLspClient-Diagnostic-SC_WIN_IDLE.png
                    So I suppose that if you use this wnd a lot in a real plugin work, there will be one such message for every, even a small, change.
                    Edit: This behavior is not dependent on your plugin, it is there even without it.

                    EkopalypseE 1 Reply Last reply Reply Quote 3
                    • EkopalypseE
                      Ekopalypse @xomx
                      last edited by Ekopalypse

                      @xomx

                      Thank you very much for having a look and trying to help me solving this. I managed to confirm that the issue is because of using multiple views.
                      See here for more details.

                      @PeterJones - thanks for moving the topic to the right place.

                      I will follow up on this tomorrow.

                      EDIT: I forgot to mention that you are right, I copied the npp.pdb to the wrong directory :-(, but when I saw notepad++!SetLibraryProperty … it was enough confirmation for me to believe that the symbol file was found and loaded.

                      mpheathM 1 Reply Last reply Reply Quote 1
                      • mpheathM
                        mpheath @Ekopalypse
                        last edited by

                        @Ekopalypse

                        There is a change in IdleStyling

                        execute(SCI_SETIDLESTYLING, SC_IDLESTYLING_ALL, 0);
                        

                        https://github.com/notepad-plus-plus/notepad-plus-plus/blob/8042e50b1979cf958c8a2fbd46e06f819ab30fb2/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp#L234

                        now the whole document is styled at startup instead of what is visible. So more CPU usage.

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

                          @mpheath

                          Thank you very much - and disabling it again in my init routine seems to solve the current problem, but I’m not sure if there isn’t an underlying issue here. I mean, why does this only happen when multiple documents are used in a single window? I will do some tests in the next few days.

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